Kapitel 31. Zend_Translate

Inhaltsverzeichnis

31.1. Einführung
31.1.1. Beginnen wir mit der Mehrsprachigkeit
31.2. Adapter für Zend_Translate
31.2.1. Wie man entscheidet welchen Adapter man benutzen soll
31.3. Benutzen von Übersetzungs Adaptoren
31.3.1. Strukturen für Übersetzungdateien
31.3.2. Erzeugung von Array Quellen
31.3.3. Erstellung von Gettext Quellen
31.3.4. Erstellung von TMX Quellen
31.3.5. Erstellung von CSV Quellen
31.3.6. Optionen für Adapter

31.1. Einführung

Zend_Translate ist die Lösung des Framework's für mehrsprachige Applikationen.

In mehrsprachigen Applikationen muß der Inhalt in verschiedene Sprachen übersetzt, und der Inhalt angezeigt werden, abhängig von der Sprache des Benutzers. PHP bietet bereits mehrere Wege um solche Probleme zu behandeln, trotzdem zeigt die Verwendung von PHP einige Probleme:

  • Unzureichende API: Es gibt keine API die für die verschiedenen Quellen identisch ist. Die Benutzung von Gettext zum Beispiel ist sehr kompliziert.

  • PHP unterstützt nur Gettext und Arrays: PHP selbst bietet nur Unterstützung von Arrays oder Gettext. Alle anderen Quellen müssten händisch programmiert werden, weil es keinen eingebauten Support hierfür gibt.

  • Keine Erkennung der Standard Sprache: Die Standard Sprache eines Benutzers kann nicht ohne tiefere Kenntnisse über die Hintergründe der Web Browser erkannt und benutzt werden.

  • Gettext ist nicht Threadsicher: PHP's Gettext Bibliothek ist nicht Threadsicher und sollte nicht in Multithreaded Umgebungen verwendet werden. Das ist ein Problem der verwendeten Gettext Bibliothek und nicht von PHP selbst. Aber es ist ein bekanntes und noch immer vorhandenes Problem.

Zend_Translate hat keines der oben angesprochene Probleme. Deswegen wird empfohlen Zend_Translate statt der PHP eigenen Funktionen zu verwenden. Die Vorteile von Zend_Translate sind unter anderem:

  • Unterstützt mehrere Quell Formate: Zend_Translate unterstützt verschiedene Quell Formate, natürlich auch die welche von PHP unterstützt werden und andere Formate wie zum Beispiel TMX und CSV Quellen.

  • Threadsicheres Gettext: Der Gettext Reader von Zend_Translate ist Threadsicher. Er kann ohne Probleme in Multithreaded Umgebungen verwendet werden.

  • Einfache und einheitliche API: Die API von Zend_Translate ist sehr einfach und benötigt nur eine handvoll von Funktionen. So ist sie einfach zu lernen und einfach zu warten. Alle Quell Formate werden auf die gleiche Art und Weise gehandhabt, sodas wenn zum Beispiel der Wechsel des Quell Formats von Gettext zu TMX notwendig wird, nur eine einzelne Zeile im Code zu Ändern ist um den anderen Adapter zu spezifizieren.

  • Erkennung der Standard Sprache des Benutzers: Die bevorzugte Sprache des Benutzers der auf die Site zugreift kann durch Zend_Translate erkannt und automatisch verwendet werden.

31.1.1. Beginnen wir mit der Mehrsprachigkeit

Beginnen wir mit dem Mehrsprachigen Business. Was wir also prinzipiell machen ist die Übersetzung unseres Strings, den wir ausgeben wollen, sodas die View die korrekte Übersetzte Ausgabe produziert. Sonst müssten wir für jede Sprache eine eigene View schreiben, und das würde keiner machen wollen. Normalerweise sind mehrsprachige Sites sehr einfach in Ihrem Aufbau. Es sind hierbei nur 4 Schritte zu befolgen:

  1. Den Adapter auswählen der Benutzt werden soll;

  2. Die View erzeugen und Zend_Translate in den Code integrieren;

  3. Die Quell Datei vom Code erzeugen;

  4. Die Quell Datei in die gewünschten Sprachen übersetzen.

Die folgenden Abschnitte leiten durch alle vier Abschnitte. Sie sollten sorgfältig studiert werden um eigene Mehrsprachige Web Applikationen erstellen zu können.