Zend Translate – Automatische Übersetzung

Mai 9th, 2009 | Kategorien: PHP, Zend Framework | Tags:

Da immer wieder die Frage aufkommt wie man ein Translate Objekt vom Zend Framework so hinbekommt, dass es automatisch Formulare usw. übersetzt. Folgend habe ich dafür ein kleines Plugin. Formularfelder werden dann automatisch übersetzt. Meine TMX, die ich dort genannt habe, lege ich gleich bei.

class Zorta_Plugin_Language extends Zend_Controller_Plugin_Abstract {

	private $_translate = null;

	public function __construct()
	{
		# Lpcale setzen, erkennt automatiswch die Sprache des Benutzers
		$locale = new Zend_Locale();

		# Ein neues Translate Objekt initialisieren.
		$translate = new Zend_Translate('tmx', APPLICATION_PATH . '/application/languages/trans.tmx', 'en');

		# Dien Locale aus dem Locale Obnjekt setzen
		$translate->getAdapter()->setLocale($locale->getLanguage());

		# Das Translate Objekt ibn die Registry setzen um es für andere Komponenten aufrufbar zu machen
   		Zend_Registry::set('Zend_Translate',$translate);

    	$this->_translate = $translate;
	}

}
<?xml version="1.0" ?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
 <header creationtoolversion="1.0.0" datatype="winres" segtype="sentence"
         adminlang="en-us" srclang="de-at" o-tmf="abc"
         creationtool="XYZTool" >
 </header>
 <body>
  <tu tuid='test'>
   <tuv xml:lang="de"><seg>Das ist ein Test</seg></tuv>
   <tuv xml:lang="en"><seg>This is a Test</seg></tuv>
  </tu>
  <tu tuid='Username'>
   <tuv xml:lang="de"><seg>Benutzername</seg></tuv>
   <tuv xml:lang="en"><seg>Username</seg></tuv>
  </tu>
  <tu tuid='Password'>
   <tuv xml:lang="de"><seg>Passwort</seg></tuv>
   <tuv xml:lang="en"><seg>Password</seg></tuv>
  </tu>
  <tu tuid='Login'>
   <tuv xml:lang="de"><seg>Einloggen</seg></tuv>
   <tuv xml:lang="en"><seg>Login</seg></tuv>
  </tu>
 </body>
 </tmx>
Keine Kommentare