
Diese Anleitung beschreibt, wie man Habari Themes für die Mehrsprachigkeit vorbereitet und anschließend übersetzt.
Habari Themes werden ähnlich wie der Kern von Habari selbst lokalisiert.
Verzeichnisse erstellen
Das heisst man muss im Theme-Verzeichnis zuerst wieder folgende Unterordnerstruktur erstellen:
user\mein-theme\locale\xx\LC_MESSAGES
wobei "xx"hier für das Sprachkürzel steht, für deutsche Übersetzungen wäre dies also:
user\mein-theme\locale\de\LC_MESSAGES
Für Englisch wäre es:
user\mein-theme\locale\en\LC_MESSAGES
Nachdem dies getan ist, geht es an das Bearbeiten des Themes, welches im folgenden Beispiel "mein-theme" heisst.
Bearbeiten des Themes
In den einzelnen Theme-Dateien muss jeder Text (String) der übersetzt werden soll mit einer Funktion umschlossen werden, damit das Übersetzungsprogamm diesen Text auch als Text, der übersetzt werden soll, erkennt. Bei manchen Themes ist das bereits der Fall, bei manchen leider auch nicht. Bei neuen Themes muss man logischerweise von selber Hand anlegen...
Diese Funktionsnamen sind für Begriffe im Singular
_e('Wort das übersetzt werden soll', 'Theme_Domäne')und für Begriffe im Plural
_n('Erstes Wort das übersetzt werden soll', 'Zweites Wort', 'Theme_Domäne')Damit dies als Befehl in PHP erkannt wird, muss natürlich noch das PHP Skelett drumherum, also
Beispielsweise sieht so das unübersetzte Original aus:
Wie man sieht, ist das einzige zu übersetzende Wort in dieser Zeile das das Wort "Page". Alles andere sind Befehle bzw. Parameter von Befehlen. Die bearbeitete Zeile sähe demnach wie folgt aus:
Man sieht also, dass wir aus dem einfachen Wort Page den Befehl
gemacht haben. Außerdem haben wir den Parameter 'Theme_Domäne' hinzugefügt, hierzu unter dem Punkt "Erklärung" genaueres.
Bei Begriffen die auch im Plural vorliegen sieht das ganze entsprechend so aus:
Wichtig: Wir haben den Begriff an sich noch nicht übersetzt, wir bereiten ihn erst für das Übersetzen mit POEdit vor. Natürlich könnte man auch direkt aus "Page" das Wort "Seite" machen, doch dann muss man bei jeder Theme-Aktualisierung wieder von vorne anfangen.
Hinweis: Im Regelfall ist es am sinnvollsten die Begriffe, die im Theme selbst stehen im Englischen zu lassen. Somit können Benutzer aus anderen Ländern beim späteren Übersetzen einfacher herausfinden um was es sich handelt. Schließlich sagt jemandem aus Dänemark meistens das Wort "Page" mehr als das deutsche Wort "Seite".
Erklärung:
Der Befehl _e('Wort', 'Theme_Domäne') und _n('Wort 1', 'Word 2', 'Theme_Domäne') ist ein Funktionsname von Gettext, einem Programm das für die Übersetzung von Texten zuständig ist. Das zu übersetzende Wort wird dabei in Apostrophe gesetzt.
Der Begriff Theme_Domäne sollte durch den Namen des Themes ersetzt werden, damit es bei der Übersetzung keine Überschneidungen mit anderen Übersetzungsdateien (beispielsweise von Habari selbst oder von irgendwelchen Plugins) gibt.
In unserem Beispiel müsste also statt "Theme_Domäne" der Wert "mein-theme" als Domäne verwendet werden.
Um den ganzen Brocken kommt dann noch die PHP-Deklaration
Und diese Schritte muss man nun für alle Begriffe in allen Theme PHP-Dateien wiederholen.
Änderung an der theme.php
Bevor wir nun die Arbeit an den Theme-Dateien abschließen können, müssen wir noch eine Zeile in unser Theme selbst einfügen, und zwar in die Theme.php Datei in die Funktion "action_init_theme()":
{
...
// Use localization
$this->load_text_domain('Theme_Domäne');
}
Damit sagen wir Habari, dass es beim Verwenden des Themes, die Textdomäne "Theme_Domain" verwenden soll. "Theme_Domain" ist natürlich wieder ebenfalls durch unseren Theme-Namen zu ersetzen.
Erstellen einer PO-Datei
Nachdem alle Begriffe für die Übersetzung vorbereit sind, starten wir POEdit, mit dessen Hilfe wir die Übersetzungs-Dateien erstellen.
Um in POEdit einen neuen Übersetzungs-Katalog zu erstellen, klicken wir auf "File / New catalog".
Im nun folgenden Dialog geben wir im ersten Register "Project Info" einige Informationen über uns und unser Projekt ein. Beispielsweise:

Wichtig ist hier, dass wir bei "Plural Forms" folgendes eingeben:
nplurals=2; plural=n > 1
Hierzu später mehr...
Anschließend sagen wir POEdit, wo unsere eigentlichen Theme-Dateien liegen, damit POEdit diese durchforsten kann. Im Bild unten heisst das jeweilige Theme "mein-theme".

Zu guter letzt sagen wir POEdit noch, wie die von uns verwendeten Gettext Funktionsnamen für die Übersetzungen sind.

Diese Funktionsnamen sind:
- _e
- _n
- _t
Jetzt speichern wir den Katalog erstmal ab, und zwar in unserem Übersetzungs-Verzeichnis "LC_MESSAGES", also unter
user\mein-theme\locale\de\LC_MESSAGES
unter dem Dateinamen der Theme-Domäne. In unserem Beispiel wäre das also wieder "mein-theme.po".
Damit wäre das Projekt erstellt, und wir können POEdit nach zu übersetzenden Befehlen suchen lassen. Dies geht über die Schaltfläche "Update catalog":

Nachdem das erledigt ist, zeigt POEdit eine Übersicht der neu gefundenen Begriffe an:

Nun geht es ans Übersetzen dieser Begriffe:

Nachdem auch das (irgendwann) erledigt ist, speichert man erst einmal ab (via "File / Save").
POEdit erstellt immer beim Speichern neben der Katalogdatei selbst auch noch immer die kompilierte Übersetzungs-Datei mit der Dateiendung ".mo". Diese beinhaltet die für die Übersetzung notwendigen Begriffe. Bei unserem Beispiel wiederum wäre das "mein-theme.mo".
Zur Veranschaulichung nochmals als Grafik:

Hochladen auf den FTP Server
Die Verzeichnisstruktur mit unseren beiden Übersetzungsdateien wird nun 1 zu 1 so auf den FTP-Server geladen.
Nun kann man das erste Mal die Webseite aufrufen und testen, ob alle Übersetzungen funktionieren.
Wie das meistens so ist, geht natürlich nicht alles von Anfang an. Wenn doch, dann Glückwunsch!
Möglich Gründe für Fehler sind oft:
- man hat einige Begriffe in den Theme-Dateien vergessen zu übersetzen
- die Übersetzungs-Dateien heissen nicht exakt so wie die Theme-Domäne
- Habaris Spracheinstellungen stimmen nicht mit denen der Verzeichnisstruktur überein
Übersetzung von Begriffen im Plural
Bei Begriffen wie "0 Responses", "1 Response", "2 Responses", also "0 Antworten", "1 Antwort", "2 Antworten" wird schnell ersichtlich, wie kompliziert eine Übersetzung eigentlich sein kann.
In POEdit habe ich leider keine andere Möglichkeit gefunden, Plural Begriffe anders zu übersetzen als wie im Folgenden beschrieben. Das Wort "leider" deshalb, da man die Übersetzung nicht direkt im Programm eingeben kann, sondern händisch über einen Texteditor. POEdit scheint den zweiten Begriff leider nicht über die Synchronisierungs-Funktion zu finden...
Zuerst der Original-Text, der übersetzt werden soll:
Nun öffnen wir mit einem beliebigen Texteditor die von uns erstellte Katalog-Datei und fügen manuell folgendes hinzu:
msgid "Comment"
msgid_plural "Comments"
msgstr[0] "Kommentar"
msgstr[1] "Kommentare"
"msgid" ist dabei der Begriff (das Schlüsselwort) im Singular. Gemäß dem Beispiel oben wäre es "Comment".
"msgid_plural" ist der Begriff (das Schlüsslwort) im Plural. Gemäß obigem Beispiel also "Comments".
Darunter folgen mit "msgstr[n]" die Übersetzungen.
Und diesen Schritt muss man leider für jeden Begriff, der auch im Plural vorkommt wiederholen...
Nachdem alle Plural Begriffe eingetragen sind, muss die Datei wieder mit POEdit geöffnet und gespeichert (kompiliert) werden. Anschließend sollte man nicht vergessen, die Datei wieder auf den FTP Server zu laden. Man sollte allerdings nicht mehr synchronisieren, da POEdit sonst die manuell eingetragenen Begriffe wieder herausschmeisst. Hier fragt POEdit aber vorher nach.
Fertig
Und damit wäre auch dies erledigt. Beim ersten übersetzen von Themes mag die Liste der zu durchführenden Punkte zwar relativ lang sein, doch nach einiger Zeit hat man Übung und es geht eigentlich recht schnell von der Hand.
Weiterhin würde ich empfehlen einen Texteditor mit Syntax-Hervorhebung zu verwenden. Beispiels Notepad++ oder Notepad2. Diese sind kostenlos und frei erhältlich (Open-Source).
Bei Fragen bitte die Kommentar-Funktion verwenden. Über Verbesserungsvorschlägen oder generell Tipps würde ich mich sehr freuen, vorallem wie man die Plural-Geschichte etwas besser angehen könnte.
Vielen Dank für die Unterstützung und Hilfe geht an Rick C. und an Matt Read.
0 Antworten zu Howto: Habari Themes lokalisieren