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

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

(Beberapa kontribusi akan dihargai.)

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

ATC status in I18n project ditentukan berdasarkan statistik penerjemahan dalam suatu periode tertentu.

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

Saat ini, PTL I18n perlu mempertahankan daftar ATC dari proyek I18n secara manual di akhir setiap siklus rilis. Ini memerlukan nama dan alamat e-mail masing-masing penerjemah.

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.