[ English | English (United Kingdom) | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | Indonesia | 日本語 | русский ]
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.