Перевод текста в файлах .po

Специалисты по локализации используют профессиональные инструменты для перевода реальных проектов: CAT, TMS системы и т.д. Чтобы лучше понять структуру файлов .po, мы начнем с ручного перевода. После этого мы познакомимся с Transifex, одной из популярных систем управления переводами.

Прежде чем начать, загрузите списки переводов, чтобы получить переводы всех текстов на русский и португальский языки.

Примечание

Вы можете собрать переведенную документацию в любое время, даже если перевод еще не закончен. Это поможет вам увидеть промежуточный результат и понять, как работает gettext.

Ручной перевод

Сначала переведем наши тексты на русский язык:

  1. Откройте index.po в locale/ru/LC_MESSAGES и найдите такие строки:

    #: ../../index.rst:2
    
    msgid "The Zen of Python"
    
    msgstr ""
    
    • Первая строка указывает на исходный файл и точную строку в нем.

    • Второй, msgid, предназначен для самого исходного текста; он также служит идентификатором строки.

    • Третий, msgstr, должен содержать перевод строки из msgid.

  2. Поместите перевод в msgstr следующим образом:

    msgstr "Дзен Питона"
    
  3. Сделайте то же самое для других строк в 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 намеренно оставлен непереведенным.

Use this template -> Create a new repository

Создание нового репозитория из шаблона

Теперь вы готовы интегрировать 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).

настройки проекта в Transifex

Добавление нового проекта

Нажмите Create project, чтобы завершить добавление проекта.

Интеграция Transifex и GitHub

Интегрируйте свои учетные записи Transifex и GitHub, как описано в документации Transifex:

  1. Перейдите в раздел интеграций вашей организации (Organization settings -> Integrations).

  2. В блоке интеграции с GitHub нажмите Authorize, а затем Install the Transifex app.

    Страница управления интеграциями

    Авторизация GitHub

  3. В раскрывающемся меню Select repositories выберите свой демонстрационный репозиторий, а затем нажмите Install.

  4. Подтвердите свой пароль на GitHub. Интеграция Transifex теперь установлена в вашей учетной записи GitHub.

  5. Вернитесь в Transifex и перейдите в раздел интеграций вашей организации (Organization settings -> Integrations).

  6. В окне интеграции с Github нажмите Authorize, а затем authorize Transifex.

  7. Если Transifex требует некоторых разрешений, нажмите Authorize Transifex Integration.

  8. Завершите интеграцию, щелкнув имя вашей учетной записи GitHub в списке доступных установок.

    Авторизация на GitHub

    Заключительный этап интеграции

Теперь ваш демонстрационный репозиторий должен быть авторизован на Transifex.

Перевод файлов в редакторе Transifex

Чтобы перевести easter-egg.po на португальский:

  1. Перейдите в редактор Transifex, нажав Editor в верхней части страницы.

  2. В раскрывающемся меню целевого языка выберите Portuguese (Brazil).

    выбор целевого языка

    Выбор целевого языка

  3. В списке Resource Overview нажмите zen…easter-egg.pot(main). Откроется редактор Transifex.

  4. В списке строк слева нажмите Easter Egg. Поместите перевод для этой строки (Ovo de Páscoa) в область перевода справа.

    Строки для перевода, область перевода

    Редактор Transifex

    Нажмите Save Translation.

  5. Сделайте тоже самое с двумя другими строками.

  6. Выберите все переведенные строки, установив флажок группировки слева. На панели Bulk actions справа выберите Reviewed из выпадающего меню Mark as, а затем нажмите Apply.

    Bulk actions

    Применение статуса Reviewed ко всем строкам

Все строки в easter-egg теперь переведены и проверены.

Узнайте больше о редакторе Transifex в документации.

Слияние запроса на вытягивание на GitHub

Как только один из наших ресурсов полностью переведен и проверен, Transifex автоматически отправляет его на GitHub, создавая запрос на вытягивание. Вы можете найти информацию об этом на странице Project Integrations.

Чтобы объединить запрос на вытягивание:

  1. На GitHub перейдите в раздел Pull requests своего демо-репозитория.

    Страница запросов на вытягивание на GitHub

    Запрос на вытягивание от Transifex

  2. Щелкните имя запроса на вытягивание. Формат имен запросов на вытягивание от Transifex следующий: Transifex '<путь к источнику>' in '<код языка>'.

  3. На вкладке Files changed проверьте правильность всех переведенных строк.

  4. На вкладке Conversation нажмите Merge pull request, затем Confirm merge.

  5. После того, как запрос на вытягивание будет объединен, вы можете удалить ветку.

    Запрос на вытягивание успешно объединен и закрыт

    Удаление ветки

Теперь все тексты в файлах .po переведены.

Вы можете извлечь переведенный файл .po из GitHub (используя git pull), чтобы собрать свою документацию локально.