[ English | English (United Kingdom) | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | Indonesia | 日本語 | русский ]
Werkzeuge¶
Diese Seite betrachtet verschiedene Operationen rund um I18n-Aktivitäten.
Zanata CLI¶
OpenStack benutzt Zanata als Übersetzungsplattform. Während viele Operationen rund um die Übersetzungsplattform automatisiert sind, können Sie mit dieser auch manuell kommunzieren, indem Sie Zanata CLI benutzen.
Benutzerkonfiguration¶
Sie brauchen eine Konfigurationsdatei in $HOME/.config/zanata.ini
, die benutzerspezifische Einstellungen enthält. Für Informationen wie diese Konfigurationsdatei zu erstellen ist, schauen Sie auf Zanata CLI configuration.
Projektkonfiguration¶
Um mit der Übersetzungsplattform zu kommunizieren, brauchen Sie eine Projektkonfigurationsdatei namens zanata.xml
im obersten Verzeichnis eines Projekts, an dem Sie interessiert sind. OpenStack-Projekte haben keine zanata.xml
in ihren Git-Repositories, sie muss manuell erstellt werden.
Hier ist ein Beispiel von zanata.xml
. In den meisten Fällen müssen Sie nur project und project-version ändern.
<config xmlns="http://zanata.org/namespace/config/">
<url>https://translate.openstack.org/</url>
<project>horizon</project>
<project-version>master</project-version>
<project-type>gettext</project-type>
<src-dir>.</src-dir>
<trans-dir>.</trans-dir>
<rules>
<rule pattern="**/*.pot">{path}/{locale_with_underscore}/LC_MESSAGES/{filename}.po</rule>
</rules>
<excludes>.tox/**</excludes>
</config>
Übersetzungen von Zanata abholen¶
Mit dem folgenden Kommando können Sie die Übersetzungsdateien von Zanata in ein Projektverzeichnis herunterladen. Normalerweise ist man nur an einigen wenigen Sprachen interessiert und kann mit der Option``–locales`` den Download einschränken. Für mehr Optionen schauen Sie nach der Ausgabe von zanata pull --help
.
$ zanata-cli pull --locales ja,ko-KR,zh-CN
Behandlung von Dokumentationsprojekten¶
Bemerkung
Dies ist die Beschreibung des openstack-manuals Projekts. Am Ende des Pike-Entwicklungszyklus ist die document migration community-wide effort abgeschlossen. Der hier beschriebene Prozess ändert sich möglichweise in der nächsten Zukunft.
OpenStack Documente benutzen RST Format. Die Schritte zum Übersetzen von RST Dokumenten umfassen:
Slicing: generiert PO Vorlagen von RST Dokumenten
Uploading: Überträgt die Übersetzungen zu Zanata
Translating: verwaltet die Übersetzungen in Zanata, inklusive des Übersetzungsspeichers und der Glossarverwaltung
Downloading: Herunterladen der übersetzten Ergebnisse durch automatisierte Scripts.
Building: HTML erstellen von RST Dolumenten und übersetzten Ergebnissen.
Sphinx ist ein Werkzeug zum Übersetzen von RST Quelldateien in verschiedenen Ausgabeformaten, incl. POT und HTML. Sie müssen Sphinx installieren, bevor Sie das tun können. Alle Projekte haben immer eine test-requirements.txt
in ihrem Repository und Sie können die erforderliche Version von Sphinx durch diese Datei überprüfen.
$ pip install Sphinx
Ein bequemerer Weg wäre:
$ pip install -r test-requirements.txt
Slicing¶
Wir benutzen sphinx-build, RST-Dateien zu POT-Dateien zu übersetzen. Weil wir ein POT-Datei pro Dokument haben möchten, benutzen wir msgcat, um diese POTs nach sphinx-build zu verbinden.
$ sphinx-build -b gettext doc/[docname]/source/ doc/[docname]/source/locale/
$ msgcat doc/[docname]/source/locale/*.pot > doc/[docname]/source/locale/[docname].pot
Uploading¶
Wir benutzen Zanata CLI, um POT-Dateien zur Übersetzungsplattform zu laden.
Downloading¶
Wir benutzen Zanata CLI, um PO-Dateien von der Übersetzungsplattform zu laden.
Building¶
Bevor wir sphinx-build zur Erstellung der HTML-Dateien benutzen, müssen wir die Übersetzungen von der einen PO-Datei in diese schmale PO-Datei füllen. Zum Beispiel:
$ msgmerge -o doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.po \
doc/[docname]/source/locale/zh_CN/LC_MESSAGES/[docname].po \
doc/[docname]/source/locale/A.pot
Dann sollten wir für jede PO-Datei das folgende Kommando ausführen, um die MO-Datei zu erstellen:
$ msgfmt doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.po \
-o doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.mo
Zum Schluss generieren wir die HTML-Dateien mit
$ sphinx-build -D "language='zh_CN' doc/[docname]/source/ \
doc/[docname]/build/html
Behandlung Python-Projekte¶
Für die meisten Python-Projekte sind gettext und babel die bevorzugten Werkzeuge für I18n. Das gettext Modul stellt Dienste für Internationalisierung (I18N) und Lokalisierung (L10N) in Ihren Python Modulen und Applikationen zur Verfügung. Babel ist eine Sammlung von Werkzeugen zur Internationalisierung von Python Applikationen.
Extracting¶
Sie können die Texte im Code zu PO Vorlagen (POT) mit pybabel extrahieren, wo PROJECT der Projektname ist wie nova
und VERSION eine Versionsnummer. Beachten Sie, dass Sie die Option --project
und --version
weglassen können, wenn Sie nur lokal die POT-Kopfdateien verwenden möchten.
$ pybabel extract \
--add-comments Translators: \
-k "_C:1c,2" -k "_P:1,2" \
--project=${PROJECT} --version=${VERSION} \
-o ${modulename}/locale/${modulename}.pot \
${modulename}
Zum Beispiel im Fall von Nova,
$ pybabel extract \
--add-comments Translators: \
-k "_C:1c,2" -k "_P:1,2" \
--project=nova --version=${VERSION} \
-o nova/locale/nova.pot nova/
Uploading¶
Für jedes Python-Projekt in OpenStack gibt es eine Automatisierung zur Extraktion der Texte, Generierung der PO Vorlagen und Upload zu Zanata, was durch „commit“ -Ereignisse ausgelöst wird. Schauen Sie hier.
Downloading¶
Für jedes Python-Projekt in OpenStack gibt es einen Automatismus, der jeden Tag die Übersetzungen in PO-Dateien in die „locale“ Verzeichnisse unter dem Quellverzeichnis eines jeden Projekts herunterlädt. Sehen Sie hier. Es wird ein Review-Request in Gerrit generiert. Danach review, die Übersetzungen in PO-Dateien werden gemerged.
Mit Übersetzungen¶
Um die übersetzen Texte in Python-Serverprojekten zu sehen, müssen Sie den Katalog übersetzen und Ihren Serverdienst entsprechend der folgenden Anleitungen konfiguriert oslo.i18n Dokumentation.
Behandlung Horizon-Projekte¶
For horizon related projects, Django, a framework which horizon is built on, provides integrated translation support.
Bemerkung
Unlike documentations and python projects, horizon and plugins use
zh-hans
and zh-hant
for Chinese locales instead of zh-cn
and
zh-tw
respectively since Wallaby release. This follows the Django
recommendation which happened in Django 1.7.
The details are found in the mailing list post.
Extracting¶
horizon provides a command to extract the messages in code to PO template (POT). Run the following command in your repository.
$ python manage.py extract_messages -m ${MODULE_NAME}
where MODULE_NAME is a python module name of horizon or its plugin.
For example, in case of manila-ui,
$ python manage.py extract_messages -m manila_ui
The above command is a wrapper for pybabel and the translation job uses pybabel directly.
Uploading¶
For each horizon related project in OpenStack, there is an automation job to extract the messages , generate PO template and upload to Zanata, which is triggered by the „commit“ event. See here.
Downloading¶
For each horizon related project in OpenStack, there is an automation job daily to download the translations in PO file to the „locale“ folder under the source folder of each project. See here. It will generate a review request in Gerrit. After review, the translation in PO file will be merged.
Bemerkung
As noted above, in Wallaby or later releases, zh-hans
and zh-hant
are used for Chinese locales. On the other hand, zh-cn
and zh-tw
continues to be used in Zanata. When the job downloads translations from
Zanata, the job stores translations for zh-cn
and zh-tw
to
zh-hans
and zh-hant
directories under locale
.
Mit Übersetzungen¶
To display translated messages in OpenStack dashboard, you need to compile message catalogs. Django picks up translated messages automatically once they are compiled. The following command compiles messages in your project.
$ python manage.py compilemessages
Projektwartung¶
Bemerkung
Das Script unten brauch mehrere Python-Module. Um die Abhängigkeiten zu installieren, starten Sie pip install -e requirements.txt
.
Ein bequemerer Weg ist die Benutzung von tox like tox -e venv -- python <script-name>
.
tox ist verfügbar in PyPI und verschiedenen Linux-Distributionen. pip install tox
oder apt-get install python-tox
(im Falle von Ubuntu) installiert tox.
Übersetzerlisten mit Zanata synchronisieren¶
Das I18n Projekt pflegt eine Liste von Sprachteams und deren Mitgliedern. Die Liste wird von Stackalytics zum Sammeln von Übersetzungstatistiken genutzt (Schauen Sie Stackalytics für Details). Sie wird auch von verschienden Scripten unten benutzt.
Der Dateiname der Liste ist tools/translation_team.yaml
.
Diese Liste ist ein Zwischenspeicher der Information von Zanata und es ist notwendig, diese mit Zanata synchron zu halten.
Um die Übersetzungsliste zu synchronisieren, starten Sie das folgende Kommando:
tox -e zanata-users-sync
Das obige führt intern folgendes aus:
python tools/zanata/zanata_users.py --output-file tools/zanata/translation_team.yaml
Übersetzungsstatistiken empfangen¶
AC status in I18n project is determined based on translation statistics in a specific period.
Das Script tools/zanata/zanata_stats.py
hilft beim Abruf der Übersetzngsstatistiken von Zanata.
Um das Script laufen zu lassen:
tox -e venv -- python ./tools/zanata/zanata_stats.py <options>
--help
Option zeigt die Details der Nutzung.
Zanata-Benutzerinformationen extrahieren¶
At the moment, the I18n SIG Chair needs to maintain the AC list of the I18n project manually around the end of each release cycle. This requires name and e-mail address of individual translators.
Das Script tools/zanata/zanata_userinfo.py
hilft dafür. Es generiert über die Zanata-API eine CSV Datei, indem eine YAML Datei gelesen wird, die die Liste der Übersetzer mit Benutzername und Email-Adresse enthält (e.g., translation_team.yaml
).
Bemerkung
Dieses Skript benötigt Zanata Admin Privileg.