Mehrsprachigkeit_Individualisieren

Guite edited this page Nov 15, 2014 · 2 revisions

Übersetzungen individualisieren

Dieser Artikel erklärt, wie die Zikula Übersetzungen angepasst werden können, so dass die Englischen Standardbegriffe verändert oder eigene, personalisierte Übersetzungen verwendet werden können. Bevor wir hier ins Eingemachte gehen, sollten jedoch die Struktur und die Art des Eingreifens der Gettextelemente in die Übersetzungen bekannt sein.

Zunächst brauchen der Core und die Erweiterungen, die Gettext benutzen, einen Katalog, bzw. Template (.POT Datei), die im Unterordner /locale zu finden ist. Hiervon können dann mit Hilfe eines Tools wie z.B. poEdit, Virtaal, etc. Übersetzungen für jede benötigte Sprache erstellt werden.

Eine Übersetzung besteht aus einem Portable Object (.PO Datei) auf der Basis der POT Datei, in der der jeweilige Originalausdruck in die benötigte Sporache übersetzt wird. Pro Sprache gibt es also eine .PO Datei. Die .PO Dateien sind dafür gedacht, durch Menschen gelesen und bearbeitet zu werden, Zikula braucht jedoch ein MachineObject (.MO Datei), eine binäre Datei, die dafür gedacht ist, von Programmen gelesen zu werden. Standardmäßig generieren die .PO Dateien bei jedem Speichern während der Übersetzung die dazugehörigen .MO Dateien.

Anpassungen

Nehmen wir an, wir wollen einige Anpassungen an einem Modul Katalog, z.B. Profile vornehmen und dies auf einer mehrsprachigen Seite für Englsich und Spanisch. Zu Beginn sollten wir den anzupassenden Katalog (hier: /modules/Profile/locale/module_profile.pot) im /config/locale/ Verzeichnis speichern.

Um dann die englischen Standardausdrücke anzupassen, müssen wir eine englische .PO Datei erstellen, um die Originale mit unseren Übersetzungen zu überschreiben. Stellen wir uns also vor, wir wollen ‚Users’ in ‚Members’ und ‚Profile’ in ‚Account’ ändern.

Das Tool-Programm poEdit hat die nette Option: „Neuer Katalog aus POT-Datei…“, die wir nutzen, um eine englische .PO Datei erzeugen zu lassen; die Katalogoptionen werden ausgefüllt und die Datei abgespeichert unter /config/locale/en/LC_MESSAGES/module_profile.po. Nun können wir beginnen, die benötigten Originalbegriffe, die wir überschreiben wollen, zu übersetzen. Die fertige .PO Datei kann z.B. so aussehen:

''' Es ist nicht nötig, die .PO Datei manuell zu editieren! '''

...
#. ! templates/profile_user_members_view.htm:102
msgid "Profile"
msgstr "Account"

#: templates/profile_user_members_view.htm:104
msgid "Users"
msgstr "Members"

#: templates/profile_user_members_view.htm:106
msgid "Newest User"
msgstr "Newest Member"

#: templates/profile_user_members_view.htm:107
msgid "On-line:"
msgstr ""
...

Nach dem Speichern wird poEdit eine kleinere .MO Datei erzeugen, die lediglich die übersetzten Begriffe enthält, und wir werden sehen, dass unsere Seite die Änderungen anzeigt. :-)

Der Begriff On-line wurde nicht übersetzt, da hierfür kein Bedarf besteht, denn wir wollten ja nur die erwähnten Begriffe übersetzen. Nun können wir genauso für die spanische Übersetzung vorgehen; die .PO Datei unter /config/locale/es/LC_MESSAGES/module_profile.po erzeugen und die in Frage stehenden Begriffe für die Website unserer Wahl übersetzen.

Hacking

Normalerweise macht es keinen Sinn, die .POT Dateien manuell zu editieren. Diese Hackmethode ist momentan höchstens für Module angezeigt, die Mehrsprachigkeit nicht unterstützen oder nicht vorhandene Begriffe brauchen. Unter Zikula 1.3 wird sich dies ändern, denn der Zikula Gettext Leser wird geschrieben un an diese Notwendigkeiten angepasst.

Profile 1.5 und andere Module wie z.B. PageMaster 0.4 brauchen außerhalb der Gettext Konventionen Übersetzungen Ihrer dynamischen Begriffe durch das Hinzüfügen dieser Begriffe in den Katalog (.POT-Datei); z.B. der Profile DUD (Dynamic User Data) Titeln und Konfigurationswerte oder der PageMaster Titel, Beschreibungen usw.

Daher müssen wir diese Begriffe als neue Begriffe in den Katalog aufnehmen. Nehmen wir an, wir haben ein neues DUD Feld im Profile Modul mit Namen _UDEVELOPER als ein Optionsfeld mit den Werten Yes, I am und No, I’m not angelegt, da wir wissen möchten, ob es sich um einen Entwickler handelt oder nicht.

Um diese Begriffe übersetzen zu können, müssen sie manuell am Ende der Katalogs hinzugefügt werden:

...
#: templates/profile_user_members_view.htm:107
msgid "On-line:"
msgstr ""

#. ! Developer field title
msgid "_UDEVELOPER"
msgstr ""

#. ! Developer field value: Yes
msgid "Yes, I am."
msgstr ""

#. ! Developer field value: No
msgid "No, I'm not."
msgstr ""

Nun muss die Übersetzungsdatei (.PO Datei) auf der Basis des geänderten Katalogs aktualisiert werden.

Da wir die spanische Überstezung noch nicht erstellt haben, machen wir dies auf der Basisi der .POT Datei, füllen die Katalogoptionen aus, speichern die Datei als /config/locale/es/LC_MESSAGES/module_profile.po und beginnen die Übersetzung. Die fertige .PO Datei kann z.B. so aussehen:

...
#: templates/profile_user_members_view.htm:107
msgid "On-line:"
msgstr "En línea"

#. ! Developer field title
msgid "_UDEVELOPER"
msgstr "Usted es un desarrollador?"

#. ! Developer field value: Yes
msgid "Yes, I am."
msgstr "Si, lo soy."

#. ! Developer field value: No
msgid "No, I'm not."
msgstr "No, no lo soy."

Die englische .PO Datei muss nun natürlich auch aus der gehackten .POT Datei aktualisiert werden. poEdit sagt uns, nach Aufruf von Katalog  aus POT-Datei aktualisieren… , dass neue Begriffe zur .PO Datei hinzugefügt wurden, so dass diese jetzt übersetzt werden können. Die englische PO Datei könnte z.B. so aussehen:

...
#: templates/profile_user_members_view.htm:107
msgid "On-line:"
msgstr ""

#. ! Developer field title
msgid "_UDEVELOPER"
msgstr "Are you a developer?"

#. ! Developer field value: Yes
msgid "Yes, I am."
msgstr ""

#. ! Developer field value: No
msgid "No, I'm not."
msgstr ""

Nach dem Speichern und der Erzeugung der .MO Datei werden wir feststellen, dass _UDEVELOPER im entsprechenden Text übersetzt wird.

Einen gehackten Katalog aktualisieren

Wenn ein neues Release ansteht, müssen die Kataloge und die Übersetzungen ebenfalls aktualisiert werden. Die eingefügten Begriffe aus den alten .POT Dateien sollten jetzt sorgfältig ans Ende der neuen .POT Dateien eingefügt werden. Jede .PO Datei muss nun mit der Option Aus POT-Datei aktualisieren von poEdit überarbeitet werden.

Wir werden informiert, welche Begriffe überflüssig geworden und welche neu hinzugekommen sind. Achte darauf, dass keine benötigten Begriffe vor der Aktualisierung vergessen werden. Übersetze die Neuen und die neue Version des Moduls kann genutzt werden ;-)

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.