Перевод текста в файлах .po¶
Специалисты по локализации используют профессиональные инструменты для перевода реальных проектов: CAT, TMS системы и т.д. Чтобы лучше понять структуру файлов .po, мы начнем с ручного перевода. После этого мы познакомимся с Transifex, одной из популярных систем управления переводами.
Прежде чем начать, загрузите списки переводов, чтобы получить переводы всех текстов на русский и португальский языки.
Примечание
Вы можете собрать переведенную документацию в любое время, даже если перевод еще не закончен. Это поможет вам увидеть промежуточный результат и понять, как работает gettext.
Ручной перевод¶
Сначала переведем наши тексты на русский язык:
Откройте index.po в locale/ru/LC_MESSAGES и найдите такие строки:
#: ../../index.rst:2 msgid "The Zen of Python" msgstr ""
Первая строка указывает на исходный файл и точную строку в нем.
Второй,
msgid
, предназначен для самого исходного текста; он также служит идентификатором строки.Третий,
msgstr
, должен содержать перевод строки из msgid.
Поместите перевод в msgstr следующим образом:
msgstr "Дзен Питона"
Сделайте то же самое для других строк в index.po и easter-egg.po.
Обратите внимание на escape-символы в этой строке:
msgid "Although never is often better than \\*right\\* now."
Будьте осторожны, чтобы сохранить все такие символы, а также нотацию reST.
Вот пример приведенной выше строки на русском языке:
msgstr "Хотя никогда обычно лучше, чем \\*прямо\\* сейчас."
Как только вы закончите с русским языком, повторите процесс с index.po в locale/pt_BR/LC_MESSAGES, чтобы перевести его на португальский. Пока не переводите easter-egg.po, мы будем использовать Transifex для перевода этого файла.
Вы можете скачать архив, содержащий .po-файлы, уже переведенные на русский и португальский языки (кроме португальской версии easter-egg.po).
Использование Transifex¶
Документация Sphinx и Readthedocs описывают интеграцию Transifex с использованием Transifex Client. Мы будем использовать другой вариант: интеграцию с GitHub через Transifex UI. Для этого вам понадобится ваша собственная копия демо-репозитория на GitHub. Самый простой способ — использовать репозиторий sphinx-intl-demo в качестве шаблона. Обратите внимание, что easter-egg.po в locale/pt_br/LC_MESSAGES намеренно оставлен непереведенным.
Теперь вы готовы интегрировать Transifex в свой процесс перевода.
Создание учетной записи и организации¶
При создании учетной записи Transifex приглашает вас создать организацию с открытым исходным кодом или присоединиться к существующей организации. Для нашего демонстрационного проекта нам понадобится новая организация.
Примечание
Неважно, работаете ли вы в организации на самом деле или являетесь владельцем таковой. На Transifex организация — это просто способ упорядочить ваши проекты.
Вкратце, пользователь может быть администратором организации, которой принадлежит несколько проектов, и каждый проект включает в себя ресурсы. Узнайте больше об организациях, проектах и ресурсах Transifex.
Создание проекта¶
Когда вы закончите с учетной записью и организацией, Transifex предложит вам создать проект. Для нашего демонстрационного проекта укажите настройки следующим образом:
Название проекта: sphinx-intl-demo (выберите другое название, если хотите).
URL-адрес лицензии с открытым исходным кодом: укажите путь к файлу лицензии в вашем репозитории GitHub. Это должно быть что-то вроде этого:
https://github.com/<your_account>/sphinx-intl-demo/blob/main/LICENSE
Тип проекта: File based.
Язык оригинала: English.
Целевые языки: Russian, Portuguese (Brazil).
Нажмите Create project, чтобы завершить добавление проекта.
Интеграция Transifex и GitHub¶
Интегрируйте свои учетные записи Transifex и GitHub, как описано в документации Transifex:
Перейдите в раздел интеграций вашей организации (Organization settings -> Integrations).
В блоке интеграции с GitHub нажмите Authorize, а затем Install the Transifex app.
В раскрывающемся меню Select repositories выберите свой демонстрационный репозиторий, а затем нажмите Install.
Подтвердите свой пароль на GitHub. Интеграция Transifex теперь установлена в вашей учетной записи GitHub.
Вернитесь в Transifex и перейдите в раздел интеграций вашей организации (Organization settings -> Integrations).
В окне интеграции с Github нажмите Authorize, а затем authorize Transifex.
Если Transifex требует некоторых разрешений, нажмите Authorize Transifex Integration.
Завершите интеграцию, щелкнув имя вашей учетной записи GitHub в списке доступных установок.
Теперь ваш демонстрационный репозиторий должен быть авторизован на Transifex.
Связывание проекта в Transifex с GitHub¶
Свяжите свой проект с демонстрационным репозиторием GitHub, как описано в документации Transifex:
Перейдите в настройки вашего проекта, раздел Integrations.
В блоке GitHub нажмите Link Repository.
На вкладке Select repo укажите ветку main, затем нажмите Validate.
Нажмите Next.
На вкладке Select Files вам необходимо указать имя файла конфигурации YML, который определяет, как работает интеграция. Если вы создали свой репозиторий на основе демо-шаблона, transifex.yml уже есть в вашем репозитории. В противном случае создайте transifex.yml в корне вашего репозитория и поместите в него следующее содержимое:
git: filters: - filter_type: dir file_format: PO source_file_extension: pot source_language: en source_file_dir: zen/_build/gettext translation_files_expression: 'zen/locale/<lang>/LC_MESSAGES'
Здесь мы говорим Transifex взять исходные файлы .pot из zen/_build/gettext и поместить переведенные файлы .po в zen/locale/<lang>/LC_MESSAGES, где <lang> — это код языка (в нашем проекте это либо ru, либо pt_BR).
Когда файл transifex.yml помещен в корень вашего репозитория, на вкладке Select Files нажмите Apply.
Нажмите Next.
На вкладке Sync Content выберите 100% reviewed и Create a Pull Request.
Нажмите Save & Sync.
Ваш проект Transifex теперь связан с вашим репозиторием GitHub.
В разделе Project Integrations вы найдете статус синхронизации исходных файлов.
Перевод файлов в редакторе Transifex¶
Чтобы перевести easter-egg.po на португальский:
Перейдите в редактор Transifex, нажав Editor в верхней части страницы.
В раскрывающемся меню целевого языка выберите Portuguese (Brazil).
В списке Resource Overview нажмите zen…easter-egg.pot(main). Откроется редактор Transifex.
В списке строк слева нажмите Easter Egg. Поместите перевод для этой строки (Ovo de Páscoa) в область перевода справа.
Нажмите Save Translation.
Сделайте тоже самое с двумя другими строками.
Выберите все переведенные строки, установив флажок группировки слева. На панели Bulk actions справа выберите Reviewed из выпадающего меню Mark as, а затем нажмите Apply.
Все строки в easter-egg теперь переведены и проверены.
Слияние запроса на вытягивание на GitHub¶
Как только один из наших ресурсов полностью переведен и проверен, Transifex автоматически отправляет его на GitHub, создавая запрос на вытягивание. Вы можете найти информацию об этом на странице Project Integrations.
Чтобы объединить запрос на вытягивание:
На GitHub перейдите в раздел Pull requests своего демо-репозитория.
Щелкните имя запроса на вытягивание. Формат имен запросов на вытягивание от Transifex следующий:
Transifex '<путь к источнику>' in '<код языка>'
.На вкладке Files changed проверьте правильность всех переведенных строк.
На вкладке Conversation нажмите Merge pull request, затем Confirm merge.
После того, как запрос на вытягивание будет объединен, вы можете удалить ветку.
Теперь все тексты в файлах .po переведены.
Вы можете извлечь переведенный файл .po из GitHub (используя git pull
), чтобы собрать свою документацию локально.