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

Alat (tool)

Halaman ini mencakup berbagai operasi seputar aktivitas i18n.

Zanata CLI

OpenStack menggunakan Zanata sebagai platform terjemahan. Sementara sebagian besar operasi di sekitar platform terjemahan otomatis, jika Anda ingin berkomunikasi dengan platform terjemahan secara manual, Anda dapat menggunakan Zanata CLI <http://docs.zanata.org/en/release/client/> __.

Konfigurasi pengguna

Anda perlu membuat file konfigurasi di $HOME/.config/zanata.ini yang berisi konfigurasi khusus pengguna. Untuk informasi tentang cara membuat file konfigurasi, lihat konfigurasi Zanata CLI <http://docs.zanata.org/en/release/client/configuration/#user-configuration> __.

Konfigurasi proyek

Untuk berkomunikasi dengan platform terjemahan, Anda perlu menyiapkan file konfigurasi proyek yang bernama zanata.xml di direktori atas proyek yang Anda minati. Proyek OpenStack tidak mengandung zanata.xml di git repositori mereka, jadi anda perlu membuatnya secara manual.

Berikut ini adalah contoh zanata.xml. Dalam kebanyakan kasus, yang perlu Anda edit adalah project dan project-version.

<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>

Tarik terjemahan dari Zanata

Untuk mendownload terjemahan dari Zanata, jalankan perintah berikut setelah masuk ke direktori proyek. Anda biasanya hanya tertarik pada beberapa bahasa saja, jadi opsi --locales akan berguna. Untuk pilihan lebih, lihat output dari zanata pull --help.

$ zanata-cli pull --locales ja,ko-KR,zh-CN

Menangani proyek dokumentasi

Catatan

Ini ditulis tentang proyek manual openstack. Sampai akhir siklus pengembangan Pike, the document migration community-wide effort <https://specs.openstack.org/openstack/docs-specs/specs/pike/os-manuals-migration.html> __ dalam penyelesaian. Proses yang didokumentasikan di sini mungkin akan berubah dalam waktu dekat.

Dokumen OpenStack menggunakan format RST. Langkah-langkah untuk menerjemahkan dokumen RST meliputi:

  • Slicing: buat template PO dari dokumen RST

  • Uploading: Upload sumber terjemahan ke Zanata

  • Translating: mengelola terjemahan di Zanata, termasuk memori terjemahan dan glosarium manajemen

  • Downloading: download hasil terjemahan dengan skrip otomasi.

  • Building: build HTML dari dokumen RST dan hasil terjemahannya.

Sphinx adalah alat untuk menerjemahkan file sumber RST ke berbagai format output, termasuk POT dan HTML. Anda perlu menginstal Sphinx sebelum melangkah ke langkah-langkah di bawah ini. Hampir semua proyek memiliki ` test-requirements.txt`` di repositori mereka dan Anda dapat memeriksa versi Sphinx yang diperlukan dengan memeriksa file ini.

$ pip install Sphinx

Atau, cara yang lebih mudah adalah:

$ pip install -r test-requirements.txt

Slicing

Kami menggunakan sphinx-build untuk menerjemahkan file RST ke file POT. Karena kami ingin memiliki file POT tunggal per dokumen, kami menggunakan msgcat untuk menggabungkan POT tersebut setelah sphinx-build.

$ sphinx-build -b gettext doc/[docname]/source/ doc/[docname]/source/locale/
$ msgcat doc/[docname]/source/locale/*.pot > doc/[docname]/source/locale/[docname].pot

Uploading

Kami menggunakan :ref: Zanata CLI <zanata-cli> untuk mengupload file POT ke platform translate.

Downloading

Kami menggunakan :ref: Zanata CLI <zanata-cli> untuk mendownload file PO yang diterjemahkan dari platform terjemahan.

Building

Sebelum menggunakan sphinx-build untuk membangun file HTML, kita perlu memberi makan terjemahan dari file PO tunggal ke dalam file PO kecil tersebut. Sebagai contoh:

$ 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

Kemudian, untuk setiap file PO, kita harus menjalankan perintah berikut untuk membangun file MO:

$ msgfmt doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.po \
   -o doc/[docname]/source/locale/zh_CN/LC_MESSAGES/A.mo

Akhirnya, kita bisa menghasilkan file HTML

$ sphinx-build -D "language='zh_CN' doc/[docname]/source/ \
    doc/[docname]/build/html

Penanganan proyek python

Untuk sebagian besar proyek Python, alat yang disukai untuk I18N adalah gettext dan babel. Modul gettext menyediakan layanan internasionalisasi (I18N) dan lokalisasi (L10N) untuk modul dan aplikasi Python Anda. Babel adalah kumpulan alat untuk menginternasionalisasi aplikasi Python.

Extracting

Anda dapat mengekstrak pesan dalam kode ke template PO (POT) dengan pybabel, di mana **PROJECT ** adalah nama proyek seperti nova dan ** VERSION ** adalah nomor versi. Perhatikan bahwa Anda dapat menghilangkan opsi --project dan --version jika Anda menggunakannya secara lokal karena hanya digunakan di header file POT.

$ pybabel extract \
    --add-comments Translators: \
    -k "_C:1c,2" -k "_P:1,2" \
    --project=${PROJECT} --version=${VERSION} \
    -o ${modulename}/locale/${modulename}.pot \
    ${modulename}

Misalnya, dalam kasus 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

Untuk setiap proyek Python di OpenStack, ada pekerjaan otomasi untuk mengekstrak pesan, menghasilkan template PO dan mengunggah ke Zanata, yang dipicu oleh "commit" event. Lihat here.

Downloading

Untuk setiap proyek Python di OpenStack, ada pekerjaan otomasi setiap hari untuk mendownload terjemahan file PO ke folder "locale" di bawah folder sumber setiap proyek. Lihat here. Ini akan menghasilkan permintaan review di Gerrit. Setelah :doc: review <reviewing-translation-import>, terjemahan dalam file PO akan digabungkan.

Menggunakan terjemahan

Untuk menampilkan pesan yang diterjemahkan dalam proyek server python, Anda perlu mengkompilasi katalog pesan dan juga perlu mengkonfigurasi layanan server Anda mengikuti petunjuk yang dijelaskan di oslo.i18n documentation.

Menangani proyek horizon

For horizon related projects, Django, a framework which horizon is built on, provides integrated translation support.

Catatan

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.

Catatan

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.

Menggunakan terjemahan

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

Pemeliharaan proyek

Catatan

Skrip di bawah ini bergantung pada beberapa modul python. Untuk menginstal dependensi ini, jalankan pip install -e requirements.txt.

Cara yang lebih mudah adalah dengan menggunakan tox like tox -e venv -- python <script-name>.

tox tersedia di PyPI dan juga tersedia dalam berbagai distribusi Linux. pip install tox atau apt-get install python-tox (dalam kasus Ubuntu) menginstal tox.

Sinkronkan daftar penerjemah dengan Zanata

Proyek I18n mempertahankan daftar tim bahasa dan anggotanya. Daftar ini digunakan oleh Stackalytics untuk mengumpulkan statistik terjemahan (lihat :ref: stats-stackalytics untuk detail). Hal ini juga digunakan oleh script di bawah ini.

Nama file dari daftar adalah tools/translation_team.yaml.

Daftar ini adalah cache informasi tentang Zanata, dan kita perlu merahasiakannya dengan Zanata.

Untuk menyinkronkan daftar penerjemah, jalankan perintah berikut:

tox -e zanata-users-sync

Jalankan perintah di atas berikut ini secara internal:

python tools/zanata/zanata_users.py --output-file tools/zanata/translation_team.yaml

Ambil statistik penerjemahan

AC status in I18n project is determined based on translation statistics in a specific period.

Script tools/zanata/zanata_stats.py membantu mengambil statistik terjemahan dari Zanata.

Untuk menjalankan skrip:

tox -e venv -- python ./tools/zanata/zanata_stats.py <options>

Opsi --help menunjukkan penggunaan detail.

Ekstrak informasi pengguna Zanata

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.

Script tools/zanata/zanata_userinfo.py membantu ini. Ini menghasilkan file CSV dengan membaca file YAML yang berisi daftar penerjemah (misal, translation_team.yaml) dengan nama pengguna dan alamat e-mail dengan berinteraksi dengan Zanata API.

Catatan

Script ini membutuhkan privilege admin Zanata.