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

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

(Ein Beitrag würde geschätzt werden)

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

ATC Status im I18n Projekt wird auf der Grundlage von Übersetzungsstatistiken in einem bestimmten Zeitraum ermittelt.

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

Im Moment muss die I18n PTL die ATC-Liste des I18n-Projekts manuell um das Ende jedes Release-Zyklus pflegen. Dies erfordert Name und E-Mail-Adresse der einzelnen Übersetzer.

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.