[ English | русский | English (United Kingdom) | Indonesia | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | 日本語 ]

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.