[ English | English (United Kingdom) | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | Indonesia | 日本語 | русский ]
Project Repository Setup to Enable Translation Infrastructure¶
Catatan
This document was moved from OpenStack Project Creators Guide who want to enable translation infrastructure for their project. Before proceeding, target translation project with corresponding versions (master and stable branches) should be created on Zanata and I18n team will help with this.
Once you have your project repository set up, you might want to enable translations. For this, you first need to mark all strings so that they can be localized, for Python projects use oslo.i18n for this and follow the guidelines.
Perhatikan bahwa ini hanya mengaktifkan terjemahan, terjemahan sebenarnya dilakukan oleh tim i18n, dan mereka harus memprioritaskan proyek mana yang akan diterjemahkan.
Pertama aktifkan terjemahan dalam proyek Anda, tergantung pada apakah itu proyek Django, proyek Python atau proyek ReactJS.
Catatan
Skrip infra menganggap proyek sebagai proyek Django ketika nama repositori Anda diakhiri dengan -dashboard
, -ui
, horizon
atau django_openstack_auth
. Jika tidak, proyek Anda akan dikenali sebagai proyek Python. Proyek yang menggunakan ReactJS membutuhkan perlakuan khusus.
Jika struktur repositori Anda lebih kompleks, misalnya, dengan beberapa modul python, atau dengan proyek Django dan Python, lihat Kasus yang lebih kompleks as well.
Proyek Python¶
Untuk terjemahan string dalam file Python, hanya sedikit perubahan yang diperlukan di dalam sebuah proyek.
Catatan
Sebelumnya setup.cfg
membutuhkan bagian compile_catalog
, update_catalog
, dan extract_messages
serta satu a``babel.cfg`` file. Ini tidak diperlukan lagi dan dapat dihapus.
Perbarui file setup.cfg
Anda. Ini harus berisi entri packages` di bagian ``files
:
[files]
packages = ${MODULENAME}
Ganti``${MODULENAME}`` dengan nama modul utama Anda seperti nova
atau novaclient
. File setup i18n Anda, biasanya bernama "_i18n.py``, harus menggunakan nama modul Anda sebagai nama domain:
_translators = oslo_i18n.TranslatorFactory(domain='${MODULENAME}')
Proyek Django¶
Perbarui file setup.cfg
Anda. Ini harus berisi entri packages` di bagian ``files
:
[files]
packages = ${MODULENAME}
Buat file babel-django.cfg
dengan konten berikut:
[python: **.py]
[django: **/templates/**.html]
[django: **/templates/**.csv]
Buat file babel-djangojs.cfg
dengan konten berikut:
[javascript: **.js]
[angular: **/static/**.html]
Proyek ReactJS¶
Tiga dependensi baru diperlukan: react-intl
, babel-plugin-react-intl
, dan react-intl-po
.
Perbarui file package.json
Anda. Ini harus berisi referensi ke perintah json2pot
dan po2json
.
"scripts": {
...
"json2pot": "rip json2pot ./i18n/extracted-messages/**/*.json -o ./i18n/messages.pot",
"po2json": "rip po2json -m ./i18n/extracted-messages/**/*.json"
}
File PO yang diterjemahkan akan diubah menjadi JSON dan ditempatkan ke direktori ./i18n/locales
.
Anda perlu memperbarui skrip infra juga untuk menandai repositori sebagai proyek ReactJS untuk terjemahan, untuk detailnya lihat :ref: translation_scripts.
Tambahkan Dukungan Server Terjemahan¶
Usulkan perubahan ke repositori openstack/project-config
termasuk perubahan berikut:
Siapkan proyek di server terjemahan.
Edit file
gerrit/projects.yaml
dan tambahkan opsitranslate
:- project: openstack/<projectname> description: Latest and greatest cloud stuff. options: - translate
Tambahkan pekerjaan ke pipelines Anda.
Edit file
zuul.d/projects.yaml
dan tambahkan templat yang mendefinisikan pekerjaan terjemahan ke repositori Anda:- project: name: openstack/<projectname> templates: - translation-jobs-master-stable
Tim terjemahan menerjemahkan stable branches hanya untuk proyek GUI, jadi untuk horizon dan pluginnya.
Jika repositori adalah proyek GUI, gunakan templat
translation-jobs-master-stable
. Jika tidak, gunakan templatetranslation-jobs-master-only
.
Saat mengirimkan perubahan ke openstack/project-config
untuk ditinjau, gunakan topik translation_setup
sehingga menerima perhatian yang sesuai:
$ git review -t translation_setup
Dengan perubahan ini digabungkan, string yang ditandai untuk terjemahan dikirim ke server terjemahan setelah setiap penggabungan ke proyek Anda. Selain itu, tugas berkala disiapkan yang memeriksa setiap hari apakah ada string yang diterjemahkan dan mengusulkannya ke proyek Anda bersama dengan file sumber terjemahan. Perhatikan bahwa pekerjaan harian hanya akan mengusulkan file yang diterjemahkan di mana sebagian besar string diterjemahkan.
Memeriksa Impor Terjemahan¶
Sebagai pemeriksaan minimal bahwa file terjemahan yang diimpor valid, Anda dapat menambahkan ke target lint (pep8
atau linters
) tes msgfmt
sederhana:
$ bash -c "find ${MODULENAME} -type f -regex '.*\.pot?' -print0| \
xargs -0 -n 1 --no-run-if-empty msgfmt --check-format -o /dev/null"
Perhatikan bahwa skrip infra menjalankan pengujian yang sama, jadi menambahkannya ke proyek Anda bersifat opsional.
Kasus yang lebih kompleks¶
Skrip infra untuk pengaturan terjemahan bekerja sebagai berikut:
Skrip infra mengenali jenis proyek berdasarkan nama repositori. Jika nama repositori diakhiri dengan
-dashboard
,-ui
,horizon
ataudjango_openstack_auth
, itu diperlakukan sebagai proyek Django. Jika tidak, ini akan diperlakukan sebagai proyek Python.Jika repositori Anda mendeklarasikan beberapa modul python di entri
packages
di bagian[files] `` di ``setup.cfg
, skrip infra menjalankan tugas terjemahan untuk setiap modul python.
Kami sangat menyarankan untuk mengikuti pedoman di atas, tetapi dalam beberapa kasus, perilaku ini tidak memenuhi struktur proyek Anda. Sebagai contoh,
Repositori Anda berisi kode Django dan Python.
Repositori Anda mendefinisikan beberapa modul python, tetapi Anda hanya ingin menjalankan pekerjaan terjemahan untuk modul tertentu.
Dalam kasus seperti itu, Anda dapat mendeklarasikan bagaimana setiap modul python harus ditangani secara manual di setup.cfg
. Modul Python yang dideklarasikan dalam django_modules
dan python_modules
diperlakukan sebagai proyek Django dan proyek Python masing-masing. Jika entri django_modules
atau python_modules
tidak ada, itu diartikan bahwa tidak ada modul seperti itu.
[openstack_translations]
django_modules = module1
python_modules = module2 module3
Anda juga perlu menyiapkan repositori Anda mengikuti instruksi untuk Python dan/atau proyek Django di atas secara tepat.
Project Documentation Translation¶
Documents on the project following with
OpenStack documentation structure
can be translated into multiple languages.
List of project repositories for documentation translation is maintained
in the DOC_TARGETS
variable within
common_translation_update.sh
translation infrastructure script file.