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

Инструменты

Эта страница описывает различные операции, связанные с работой I18n.

Командная строка Zanata

OpenStack использует Zanata в качестве платформы для переводов. Если вдруг, не смотря на то, что большинство задач, связанных с платформой переводов, автоматизированы, вам захочется вручную обратиться к платформе переводов, вы можете использовать интерфейс командной строки Zanata.

Конфигурация пользовательской среды

Вам понадобится создать конфигурационный файл $HOME/.config/zanata.ini с пользовательскими настройками. За информацией о том, как создать этолт файл, обратитесь к главе Настройка интерфейса командной строки Zanata CLI.

Конфигурация проекта

Для обращения к платформе переводов, вам понадобится подготовить файл конфигурации проекта zanata.xml и сохранить его в корневой директории нужного вам проекта. Проекты OpenStack не содержат этого файла в своих git репозиториях, так что вам придётся создать его самим.

Ниже приведён пример zanata.xml. В большинстве случаев всё, что вам потребуется поменять - это значения в параметрах project и 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>

Загрузка переводов из Zanata

Чтобы загрузить переводы из Zanata, выполните следующую команду, предварительно перейдя в директорию проекта. Обычно вас будут интересовать только некоторые языки, так что опция --locales должна быть вам полезна. Для информации о других доступных опциях, посмотрите на вывод команды zanata pull --help.

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

Работа с проектами документации

Примечание

Это о проекте openstack-manuals. К концу релизного цикла разработки Pike завершился процесс миграции документов. То, что описано здесь, может быть изменено в ближайшем будущем.

Документация OpenStack использует формат RST. Шаги для превода RST документов включают в себя:

  • Разбиение на части: генерируются шаблоны PO из документов в формате RST

  • Загрузка: Материалы для перевода загружаются в Zanata

  • Перевод: в Zanata выполняется перевод, а так же поддерживается память истории переводов и управление словарём

  • Выгрузка: Результаты перевода автоматически выгружаются скриптами.

  • Сборка: Производится сборка HTML из RST документов и результатов перевода.

Sphinx - это программное обеспечение для преобразования исходных файлов из формата RST в различные конечные форматы, включая POT и HTML. Предле чем вы приступите к шагам ниже, вам понадобится установить Sphinx. Почти у всех проектов в репозиториях есть файл test-requirements.txt`, в котором вы можете посмотреть необходимую версию Sphinx’а.

$ pip install Sphinx

Более удобным способом может быть этот:

$ pip install -r test-requirements.txt

Разбиение на части

Мы используем sphinx-build, чтобы преобразовать RST файлы в POT файлы. Ввиду того, что мы хотели бы иметь один POT файл с полным документом, мы используем msgcat, чтобы сливать вместе эти POT’ы после выполнения 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

Загрузка

Мы используем командную строку Zanata, чтобы загружать POT файлы на платформу переводов.

Выгрузка

Мы используем командную строку Zanata, чтобы выгружать переведённые POT файлы из платформы переводов.

Сборка

До того, как мы запустим sphinx-build для сборки HTML файла, нам нужно разбить переводы из одного PO файла в несколько PO файлов. Например:

$ 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

Затем для каждого PO файла нужно выполнить следующую команду, чтобы сгенерировать MO файл:

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

И, наконец, мы можем собрать HTML файл, запустив

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

Работа с проектами на Python

Большинство проектов на Python предпочитают использовать для I18n gettext и babel. Модуль gettext предоставляет сервисы интернационализации (I18N) и локализации (L10N) для ваших модулей Python и приложений. Babel - это коллекция утилит для интернационализации ваших приложений, написанных на Python.

Экстракция

Вы можете выгрузить сообщения из кода в PO шаблоны (POT) с помощью pylabel, где PROJECT это имя проекта, например, nova, а VERSION - это номер версии. Обратите внимание, что вы можете не указывать опции --project и --version, если вы используете их только локально, так как они нужны только в заголовках файлов POT.

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

Например, в случае с Nova,

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

Загрузка

Для каждого проекта на Python в OpenStack имеется автоматическая, выполняемая на каждое событие слияния кода задача, которая выгружает все сообщения, генерирует PO шаблоны, и загружает их в Zanata. Смотрите документацию тут.

Выгрузка

Для каждого проекта на Python в OpenStack имеется автоматическая, ежедневно запускаемая задача, которая скачивает переводы в PO файлы в поддиректорию locale в директории исходных кодов каждого проекта. Смотрите документацию тут. Она так же создаёт запрос на ревью в Gerrit. После прохождения ревью, переводы в PO файлах будут слиты с основным кодом.

Использование переводов

Для того, чтобы показать перевод в серверных компонентах проектов на Python, вам необходимо собрать каталог сообщений, а так же настроить сервисы ваших серверов следуя инструкциям, описанным в документации oslo.i18n.

Работа с проектами панелей управления Horizon

(С благодарностью примем некоторую помощь.)

Поддержка проекта

Примечание

Скрипты ниже зависят от нескольких модулей Python. Для установки их зависимостей запустите pip install -e requirements.txt.

Более удобным способом будет использование tox, например, так: tox -e venv -- python <script-name>.

Утилита tox**доступна на PyPI, а так же доступна в различных дистрибутивах Linux. Команда ``pip install tox``, или ``apt-get install python-tox`` (в случае с Ubuntu) установит **tox.

Синхронизация списков переводчиков с Zanata

Проект I18n поддерживает список языковых команд и их членов. Этот список используется Stackalytics для сбора статистики переводов (см. детали в Stackalytics). Он же так же используется скриптами ниже.

Название файла со списком - tools/translation_team.yaml.

Этот список - кеш информации из Zanata, и нам нужно поддерживать его синхронизированным с Zanata.

Чтобы синхронизировать список переводчиков. запустите следующую команду:

tox -e zanata-users-sync

Вышенаписанное внутри себя выполняет следующее:

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

Получение статистики по переводам

Статус ATC в проекте I18n даётся на основании статистики переводов за определённый период.

Скрипт tools/zanata/zanata_stats.py помогает собрать статистику переводов из Zanata.

Чтобы запустить скрипт:

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

Опция --help показывает детальную справку.

Выгрузка информации о пользователях Zanata

В настоящий момент PTL’у I18n необходимо самому обновлять список ATC проекта I18n ближе к концу каждого релизного цикла. Для этого нужны имена и e-mail адреса каждого переводчика.

С этим помогает скрипт tools/zanata/zanata_userinfo.py. Обращаясь к Zanata API он генерирует CSV файл с именами пользователей и e-mail адресами, читая YAML файл, содержащий список переводчиков (т.е. translation_team.yaml).

Примечание

Для запуска этого скрипта требуются администраторские привилегии в Zanata.