[ English | English (United Kingdom) | 한국어 (대한민국) | 中文 (简体, 中国) | Deutsch | Indonesia | 日本語 | русский ]
Project Repository Setup to Enable Translation Infrastructure¶
Примечание
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.
Обратите внимание, что это только подключает систему переводов. Непосредственно сами переводы выполняются командой i18n, и они занимаются приоретизацией проектов, подлежащих переводу.
Сначала включите систему переводов в вашем проекте. Действия для этого отличаются, и зависят от того, какой у вас проект: Django, Python, или ReactJS.
Примечание
Инфраструктурные скрипты определят ваш проект, как сделанный на Django, если название вашего репозитория заканчивается на -dashboard
, -ui
, horizon
или django_openstack_auth
. В других случаях ваш проект будет распознан как проект на Python. Для проектов на ReactJS нужен особый подход.
Если структура вашего репозитория более сложная, например, со множеством модулей Python, или одновременно используются и Python и Django, то вам так же следует обратиться к разделу Более сложные случаи.
Проекты на Python¶
Для перевода строк в файлах Python нужно сделать всего несколько изменений в проекте.
Примечание
Ранее setup.cfg
требовал наличия секций compile_catalog
, update_catalog
, и extract_messages`, а так же файла ``babel.cfg
. Теперь они не нужны и могут быть удалены.
Обновите ваш файл setup.cfg
. Он должен содержать запись packages
в секции files
:
[files]
packages = ${MODULENAME}
Замените ${MODULENAME}
именем вашего основного модуля, например nova
или novaclient
.Ваш файл настройки i18n, обычно называющийся _i18n.py
, должен использовать название вашего модуля как имя домена:
_translators = oslo_i18n.TranslatorFactory(domain='${MODULENAME}')
Проекты на Django¶
Обновите ваш файл setup.cfg
. Он должен содержать запись packages
в секции files
:
[files]
packages = ${MODULENAME}
Создайте файл babel-django.cfg
со следующим содержимым:
[python: **.py]
[django: **/templates/**.html]
[django: **/templates/**.csv]
Создайте файл babel-djangojs.cfg
со следующим содержимым:
[javascript: **.js]
[angular: **/static/**.html]
Проекты на ReactJS¶
Понадобятся три новые зависимости: react-intl
, babel-plugin-react-intl
, и react-intl-po
.
Обновите ваш файл package.json
. Он должен содержать ссылки на команды json2pot
и po2json
.
"scripts": {
...
"json2pot": "rip json2pot ./i18n/extracted-messages/**/*.json -o ./i18n/messages.pot",
"po2json": "rip po2json -m ./i18n/extracted-messages/**/*.json"
}
Переведённые PO файлы будут конвертированы в JSON и помещены в каталог ./i18n/locales
.
Для включения системы переводов вам так же понадобится обновить инфраструктурные скрипты, и промаркировать ваш репозиторий как ReactJS проект. Детали смотрите в секции Задания и скрипты инфраструктуры переводов.
Добавление поддержки сервера переводов¶
Создайте запрос на изменение в репозиторий openstack/project-config
, включающий в себя следующие изменения:
Настройка проекта на сервере переводов.
Отредактируйте файл
gerrit/projects.yaml
и добавьте опциюtranslate
:- project: openstack/<projectname> description: Latest and greatest cloud stuff. options: - translate
Добавьте задачи в ваши проверочные задачи.
Отредактируйте файл
zuul.d/projects.yaml
и добавьте шаблон, который который определит задачи переводов для вашего репозитория:- project: name: openstack/<projectname> templates: - translation-jobs-master-stable
Команда переводчиков переводит стабильные ветки только для проектов с GUI, то есть для Horizon и его плагинов.
Если репозиторий – проект с GUI, то используйте шаблон
translation-jobs-master-stable
. В иных случаях используйте шаблонtranslation-jobs-master-only
.
При отправке запроса на изменение в openstack/project-config
на проверку, используйте тему translation_setup
чтобы ваш запрос получил соответствующее внимание:
$ git review -t translation_setup
Когда эти изменения внесены в кодовую базу, строки, отмеченные для перевода, будут отправляться на сервер переводов после каждого внесения изменений в кодовую базу вашего проекта. Так же будет настроена и станет работать периодическая задача, которая ежедневно проверяет наличие переведённых строк, и предлагает их для в ваш проект на рассмотрение, вместе с исходными файлами переводов. Обратите внимание, что ежедневная задача будет предлагать переведённые файлы только в том случае, если переведена большая часть строк.
Проверка импорта переводов¶
В качестве минимальной проверки, что импортированные файлы переводов корректны, вы можете добавить в вашу цель сборки (pep8
или linters
) простой тест msgfmt
:
$ bash -c "find ${MODULENAME} -type f -regex '.*\.pot?' -print0| \
xargs -0 -n 1 --no-run-if-empty msgfmt --check-format -o /dev/null"
Обратите внимание, что инфраструктурные скрипты запускают этот же самый тест, таким образом его добавление в ваш проект опционально.
Более сложные случаи¶
Скрипты для настройки инфраструктуры переводов работают следующим образом:
Инфраструктурные скрипты распознают тип проекта по имени его репозитория. Если имя репозитория заканчивается на
-dashboard
,-ui
,horizon
илиdjango_openstack_auth
, то они распознаются как проекты Django. Иначе они распознаются как проекты на Python.Если ваш репозиторий декларирует несколько модулей Python в параметре
packages
в секции[files]
в файлеsetup.cfg
, то инфраструктурные скрипты будут запускать задачи для переводов для каждого модуля Python.
Мы настоятельно рекомендуем следовать рекомендациям, данным выше, но в некоторых случаях это поведение не удовлетворяет структуре вашего проекта. Например:
Ваш репозиторий содержит код и на и Python, и на Django.
Ваш репозиторий содержит несколько Python модулей, но вы хотите запускать задания по переводам только для некоторых модулей.
В таких случаях вы можете внучную определить в setup.cfg
, как будет обрабатываться каждый модуль. Модули Django определяются в django_modules
, а модули Python – в python_modules
. Если записи django_modules
or python_modules
отсутствуют, то это интерпретируется как отсутствие таковых модулей.
[openstack_translations]
django_modules = module1
python_modules = module2 module3
Вам так же понадобится соответственным образом настроить ваш репозиторий по инструкциям для Python и/или Django проектов, как это описано выше.
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.