ispCP übersetzen
Wenn du bereits Unix/Linux Anwendung übersetzt hast, kennst du wahrscheinleich bereits die GNU gettext Programme und Bibliotheken. Falls dies der Fall ist, kannst du sofort mit der Übersetzung basierend auf den .po Dateien in den „language-files“-Ordnern beginnen.
Falls die gettext Programme und Konzepte neu für dich sind, lese weiter und informiere dich über die neuen Methoden.
So komfortabel kann übersetzen sein
ispCP wird zur Zeit mit Hilfe der GNU gettext Programme und Bibliotheken übersetzt. Die einzelnen Zeichenketten werden direkt im Quelltext bearbeitung und anschliessed extrahiert, sodass die Übersetzer diese direkt bearbeiten können.
Füher nutzte IspCP sogenannte Sprachvariabeln. Dieses Vorgehen hatte jedoch einige Nachteile. Jedesmal wenn eine neue Zeichenkette hinzugefügt wurde, mussten die Entwickler eine neue Sprachvariable anlegen welche danach übersetzt werden musste.
So wird übersetzt
Sobald die Entwicklung einer neuen ispCP Version fertiggestellt ist, werden die Entwickler alle Zeichenketten mit Hilfe spezieller Werkzeugen in sogenannte Sprachdateien extrahieren. Diese Dateien findest du im Order ./language-files/. Alle Datien welche mindestens eine übersetzte Zeichenkette enthalten findest unter ihrem 639-1 ISO Länderkürzel. Alle Kürzel findest du unter http://www.loc.gov/standards/iso639-2/php/code_list.php.
Sobal du eine .po Datei öffnest findest du die Standard-Zeichenketten (Englisch) und Ihre Übersetzung:\
# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-07-06 16:02-0500\n" "PO-Revision-Date: 2007-07-06 16:02-0500\n" "Last-Translator: FULL NAME\n" "Language-Team: English \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "X-Generator: x64PoPot 0.2\n" #. Please ignore this entry msgid "encoding" msgstr "UTF-8" msgid "_: Localised language" msgstr "English" msgid "ISPCP - Virtual Hosting Control System" msgstr ""
Die ersten paar Zeilen kannst du ignorieren, da Sie für die eigentliche Übersetzung nicht von Bedeutung sind, natürlich kannst du deine persönlichen Daten hinzufügen um der Community zu zeigen, dass du für die Übersetzung (oder Teile davon) verantwortlich bist.
Die wichtigen Linien sind die, welche mit „msgid“ und „msgstr“ beginnen.
Die Zeile „msgid“ definiert den Standardtext (English) und die Zeile „msgstr“ enthält eine bestehende oder deine neue Übersetzung. Dies erleichtert die Übersetzung ungemein, da immer der Orginaltext und die Übersetzung zu sehen ist. Es gibt auch einige Tools mit graphischer Oberfläche.
Ein gutes Tool ist zum Beispiel poEdit. Es ist für sowohl für Windows und Linux verfügbar. Natürlich kann die Übersetzung auch mit einem normalen Texteditor erfolgen.
Der Aufbau der ersten Zeilen von po-Dateien
Der Kopf einer po-Datei enthält wichtige und nützliche Informationen für gettext und den Sprachkonverter.
Die ersten Linien des Kopfes können übersprungen werden:
# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-07-06 16:02-0500\n" "PO-Revision-Date: 2007-07-06 16:02-0500\n" "Last-Translator: FULL NAME\n"
Die oberen Zeilen werden meistens vom po Editor aktualisiert.
Die Sprache festlegen:
"Language-Team: English\n"
Dieser Eintrag muss den Namen der Sprache in Englisch enthalten.
Ein Beispeil:
"Language-Team: Spanish (Mexico)\n"''
Die E-Mail Adresse ist für die Funtion unwichtig, aber die beiden Einträge zur Sprache und zum Land ist sehr wichtig. Obwohl eine Landbezeichnung nicht unbedingt benötigt wird, ist es sehr empfohlen diese einzutragen. Das ermöglicht anderen Übersetzern regionsbezogene Übersetzungen zu tätigen.
"MIME-Version: 1.0\n" Dieser Eintrag kann ignoriert werden. "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
Die ersten zwei Einträge sind wichtig in dem Fall dass du kein UTF-8 Zeichsatz in deiner Übersetzung verwendest. (Es wird aber empfohlen UTF-8 zu benutzen).
Der letzte Eintrag ist zurzeit nicht benutzt, aber wird möglicherweise erforderlich wenn die Unterstützung für Mehrzahlverarbeitung zum Übersetzungskonverter und zum IspCP-internen Übersetzungsmechanismus eingebaut wird.
Um mehr über diese Mehrzahlverarbeitung zu erfahren schau in das gettext Dokumentation.
Was hat das restliche Zeug in den po Dateien zu bedeuten?
Um die Übersetzung einfacher zu gestalten, nutzt das IspCP Übersetzungsystem spezielle Konversationsspezifikationen. Das sind Platzhalter die meistens aber nicht nur durch Nummern oder einen beliebigen skalaren Wert ersetzt werden.
Schauen wir uns mal ein Beispiel an:
#, php-format msgid "You have %d new support questions" msgstr "Tienes %d nuevas preguntas de soporte"
In diesem Beispiel wir der Platzhalter %d durch die Nummer der tatsächlichen Support Anfragen ersetzt. Dies ermöglicht dem Übersetzer die Zahl der Support Anfrage an einer beliebigen Stelle innerhalb des Satzes zu platzieren.
Ein sehr einfaches Beispiel dafür wäre:
#, php-format msgid "You have %d new support questions" msgstr "The number of new support questions you have is: %d"
Was wäre wenn mehr als ein Platzhalter ersetzt werden müsste und die Reihenfolge sich ändert?
Diesem Umstande wird durch das Übsersetzungshandling von IspCP ebenfalls Rechnung getragen:
#, php-format msgid "%1$.2f %% [%2$d of unlimited]" msgstr "%1$.2f%% [%2$s de ilimitados]"
Wie du siehst hat es in diesem Beispiel drei %-Platzhalter aber nur zwei davon werden wirklich ersetzt. Das doppelte Prozentzeichen wird druch ein einfaches ersetzt. Auch wirst du in diesem Beispiel bemerkt haben, dass jeder %-Platzhalter der auch ersetzt wird, gefolgt wird von einer Nummer einem $-Zeichen und zum Schluss ein Buchstabe.
Die Nummer die auf das %-Zeichen folgt ist eine Indentifikationsnummer für den Platzhalter. Die ermöglicht relativ einfach die Reihenfolge der %-Platzhalter zu ändern.
Mehr Information zu diesen Platzhaltern sind in der gettext Dokumentation zu finden.
Weiter gibt es die Zeilen welche mit einem #-Symbol beginnen. Diese Zeilen sind Kommentare - einige davon sind wichtig und sollten weder geändert noch gelöscht werden.
Zum Teil werden Zeichenketten die übersetzt werden müssen geändert und die alten Zeichenketten werden dann nicht einfach gelöscht sinder als Kommentare an das Ende der po-Datei verschoben.
Ein Beispiel für diese alten Zeichenkette wäre:
#~ msgid "suspended" #~ msgstr "suspendu" #~ msgid "enabled" #~ msgstr "activé"
Diese Zeile können ohne weitere Probleme gelöscht werden, da diese nur behalten werden um den Übersetzern die Möglichkeit zugeben Teile davon für eine neue Übersetzung zu übernehmen.
So kann ich überprüfen ob die Übersetzung syntaktisch korrekt ist
Die Übersetzung kann getestet werden in dem man das Programm msgfmt ausführt (Bestandteil der gettext-Werkzeugsammlung):
msgfmt LANGUAGE.po –o LANGUAGE.mo
Natürlich muss hier LANGUAGE durch den tatsächlichen Dateinamen ersetzt werden.
Dieser Befehl kompiliert die textbasierte .po Datei ein eine .mo Datei genannte binäre Version. Diese Dateie wird von IspCP nicht genutzt, jedoch ist sie sehr hilfreich um Fehler in der Übersetzung aufzuspüren.
So kann ich die Übersetung in IspCP testn
Kurz bevor eine neue Version veröffentlich wird oder sobald eine .po Datei mit neue Übersetzungen aktualisert werden, wird die definitive Sprachdatei generiert.
Falls du in der Zwischenzeit deine Übersetzung testen möchtest, kanns du den Online-Konverter benutzen, welche die Sprachdatei aus der angegebenen .po Dateie generieren wird.
Die Datei welche mit diesem Schritt genieriert wird kann in der IspCP-Administrationsoberfläche hochgeladen und aktiviert werden.
