Adapter für Zend_TranslateZend_Translate kann unterschiedliche Adapter für die Übersetzung verwenden. Jeder Adapter hat seine eigenen Vor- und Nachteile. Hier ist eine kurze Liste aller unterstützten Adapter für Übersetzungsquelldateien.
Wie man entscheidet welchen Adapter man benutzen sollZuerst muss man die Entscheidung treffen welchen der Adapter man für Zend_Translate benutzen soll. Oft sind externe Kriterien wie die Vorgaben durch ein Projekt oder durch einen Kunden dafür ausschlaggebend. Aber wenn die Entscheidungsgewalt in den eigenen Händen liegt, werden die folgenden Hinweise die Entscheidung vereinfachen.
Zend_Translate_Adapter_ArrayDer Array-Adapter ist der Adapter, welcher für Programmierer am einfachsten zu verwenden ist. Aber wenn viele Strings oder viele Sprachen zu übersetzen sind, sollte über einen anderen Adapter nachgedacht werden. Wenn z.B. über 5000 Strings zu übersetzen sind wird, ist der Array-Adapter nicht die beste Wahl. Dieser Adapter sollte nur für kleine Seiten mit einer Handvoll Sprachen verwendet werden und wenn man selbst oder das eigene Team die Übersetzungen erstellen kann. Zend_Translate_Adapter_CsvDer CSV-Adapter ist der Adapter, der am einfachsten für Kunden zu benutzen ist. CSV-Dateien sind mit Standardtexteditoren lesbar, allerdings unterstützen diese Editoren oft keine UTF8 Zeichensätze. Man sollte diesen Adapter nur benutzen, wenn der Kunde die Übersetzungen selbst durchführen will.
Zend_Translate_Adapter_GettextDer Gettext-Adapter ist der Adapter, der am meisten verwendet wird. Gettext ist ein Übersetzungsformat, welches durch GNU eingeführt wurde und jetzt weltweit Verwendung findet. Es ist nicht menschenlesbar, allerdings existieren einige kostenlose Freeware Tools (zum Beispiel, » POEdit), welche sehr nützlich sind. Der Zend_Translate Gettext-Adapter ist nicht mit Hilfe von PHPs Gettext-Erweiterung realisiert worden. Der Gettext-Adapter kann also verwendet werden, selbst wenn PHPs Gettext-Erweiterung nicht verfügbar ist. Ausserdem ist der Adapter im Gegensatz zu PHPs Gettext-Erweiterung threadsicher. Die meisten werden diesen Adapter benutzen. Mit den vorhandenen Tools ist eine professionelle Übersetzung sehr einfach. Aber Gettext-Dateien werden in einem machinenlesbaren Format gespeichert und sind nicht ohne Tools lesbar. Zend_Translate_Adapter_IniDer INI Adapter ist ein sehr einfacher Adapter, welcher sogar direkt von Kunden verwendet werden kann. INI Dateien sind von standardmäßigen Texteditoren lesbar, allerdings unterstützen manche Texteditoren keine UTF8 Zeichensätze. Dieser Adapter sollte nur dann verwendet werden, wenn ein Kunde Übersetzungen selbst machen will. Verwenden Sie diesen Adapter nicht als generelle Übersetzungsquelle. Zend_Translate_Adapter_TbxDer TBX Adapter ist ein Adapter, der von Kunden benutzt wird, die bereits das TBX Format für ihre internen Übersetzungssysteme verwenden. TBX ist kein standardmäßiges Übersetzungsformat sondern eher eine Sammlung von bereits übersetzten und vorübersetzten Quell-Strings. Wenn dieser Adapter verwendet wird, muß sichergestellt werden, dass alle benötigten Quell-Strings übersetzt sind. TBX ist ein dateibasiertes und komplett neues XML Format. XML Dateien sind menschenlesbar, aber das Lesen der Dateien ist nicht so schnell wie mit Gettext-Dateien. Dieser Adapter ist perfekt für Firmen, die bereits vorübersetzte Quelldateien verwenden. Die Dateien sind menschenlesbar und unabhängig vom Betriebsystem. Warning
Rückschritt in PHP 5.3Vor PHP 5.3 haben parse_ini_file() und parse_ini_string() nicht ASCII Zeichen in INI Optionsschlüsseln ohne Probleme behandelt. Aber beginnend mit PHP 5.3 werden derartige Schlüssel im zurückgegebenen Array von beiden Funktionen stillschweigend entfernt. Wenn man Schlüssel hatte die UTF-8 oder Latin-1 Zeichen verwenden, werden die eigenen Übersetzungen nicht mehr funktionieren, wenn der INI Adapter verwendet wird. Wenn das der Fall ist, wird empfohlen einen anderen Adapter zu verwenden. Zend_Translate_Adapter_TmxDer TMX-Adapter wird meistens benutzt, wenn Kunden mehrere Systeme haben, welche alle auf die gleichen Übersetzungen zugreifen oder wenn die Übersetzungen systemunabhängig sein müssen. TMX ist ein XML Dateiformat, welches als der kommende Industriestandard gehandelt wird. XML Dateien sind menschenlesbar, aber das Lesen der Dateien ist nicht so schnell wie mit Gettext-Dateien. Die meisten mittleren Firmen und Großfirmen werden diesen Adapter benutzen. Die Dateien sind menschenlesbar und systemunabhängig. Zend_Translate_Adapter_QtDer Qt-Adapter ist der Adapter für alle Kunden, welche TS-Dateien als Übersetzungsquelle haben, die von QtLinguist erstellt wurden. QT ist ein XML basiertes Format. XML Dateien sind menschenlesbar, aber das Lesen der Dateien ist nicht so schnell wie mit Gettext-Dateien. Einige "Big Player" haben Ihre Software auf dem QT Framework ausgebaut. Die Dateien sind menschenlesbar und betriebsystemunabhängig. Zend_Translate_Adapter_XliffDer XLIFF Adapter wird meistens von Kunden benutzt, die zwar XML Dateien haben wollen, aber keine Tools für TMX zur Verfügung haben. XLIFF ist ein XML Dateiformat, welches ähnlich zu TMX ist, aber etwas einfacher im Aufbau. Es unterstützt aber nicht alle Möglichkeiten von TMX. XML Dateien sind menschenlesbar, aber das Lesen der Dateien ist nicht so schnell wie mit Gettext-Dateien. Die meisten Mittelständigen Unternehmen werden diesen Adapter benutzen. Die Dateien sind menschenlesbar und systemunabhängig. Zend_Translate_Adapter_XmlTmDer XmlTm Adapter ist ein Adapter der von Kunden verwendet wird, die das Layout selbst ändern wollen. XmlTm ist ein Format, das es erlaubt den kompletten HTML Code in die Übersetzungsquelle zu inkludieren, so dass die Übersetzung mit dem Layout verknüpft ist. XmlTm ist ein XML Dateibasiertes Format, welches ähnlich wie XLIFF, aber nicht so einfach lesbar ist. Dieser Adapter sollte nur verwendet werden, wenn bereits Quelldateien dieses Formats existieren. Die Dateien sind menschenlesbar und systemunabhängig. Selbst geschriebene Adapter integrierenZend_Translate erlaubt es, selbst geschriebene Adapterklassen zu integrieren und zu verwenden. Diese können wie die Standardadapterklassen verwendet werden, welche bereits in Zend_Translate enthalten sind. Jede Adapter Klasse, die mit Zend_Translate verwendet werden soll, muß eine Subklasse von Zend_Translate_Adapter sein. Zend_Translate_Adapter ist eine abstrakte Klasse, welche bereits alles definiert, was für eine Übersetzung notwendig ist. Nun muß lediglich noch die Definition der Lesemethode für die Übersetzungsdaten geschrieben werden. Die Verwendung des Prefixes "Zend" sollte dem Zend Framework vorbehalten sein. Wenn Zend_Translate mit einem eigenen Adapter erweitert wird, sollte er etwa "Firma_Translate_Adapter_MeinFormat" heißen. Der folgende Code zeigt ein Beispiel, wie eine selbst geschriebene Adapter Klasse implementiert werden sollte:
Alle Adapter beschleunigenZend_Translate erlaubt intern die Verwendung von Zend_Cache, um das Laden von Übersetzungsquellen zu beschleunigen. Das kann sehr nützlich sein, wenn viele Übersetzungsquellen oder aufwändige Quellformate wie XML basierte Dateien verwendet werden. Um das Caching zu verwenden, muß nur ein Cache-Objekt an die Methode Zend_Translate::setCache() übergeben werden. Diese nimmt eine Instanz von Zend_Cache als einzigen Parameter. Auch wenn irgendein Adapter direkt verwendet wird, kann die Methode setCache() verwendet werden. Der Bequemlichkeit halber gibt es die statischen Methoden getCache(), hasCache(), clearCache() und removeCache().
Wenn der zugeordnete Cache Tags unterstützt, kann man einen eigenen Tag-String durch Verwendung der Option tag setzen. Das erlaubt es, nur den Cache von dieser einzelnen Instanz von Zend_Translate zu löschen. Wenn man diese Option nicht verwendet, wird das Standardtag Zend_Translate verwendet. Bei Verwendung der Option tag muss man das verwendete Tag an clearCache() übergeben um anzugeben, welches Tag man löschen will.
|