Интеграция с Weblate

Основы Weblate

Структура проектов и компонентов

Переводы в Weblate организованы по проектам и компонентам. Каждый проект может содержать несколько компонентов, а те — переводы на отдельные языки. Компоненту соответствует один переводимый файл (например, GNU gettext или Строковые ресурсы Android). Проекты служат для организации компонентов в логические наборы (например, для группировки всех переводов, используемых в одном приложении).

Внутри каждого проекта переводы общих строк по умолчанию распространяются на другие его компоненты. Это облегчает бремя повторного и много-версионного перевода. Если в вашем проекте перевод в разных компонентов должен отличаться, то такое «распространение» можно отключить в настройках компонента с помощью параметра «Разрешить распространение перевода».

Импорт проекта локализации в Weblate

Weblate разрабатывался с прицелом на интеграцию с системами контроля версий, как его основной функциональной особенности. Так что, самый простой способ выполнить такую интеграцию — дать Weblate право доступа к вашему репозиторию. Этот процесс импорта проведёт вас через процедуру настройки вашего перевода в виде отдельных компонентов.

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

Извлечение обновлённых переводов из Weblate

Для получения обновлённых строк из Weblate вы можете просто извлечь изменения из встроенного репозитория (либо напрямую из файловой системы, либо его можно сделать доступным через Экспортер Git). До этого вы можете захотеть закоммитить любые отложенные изменения (смотрите раздел Отложенные коммиты). Вы можете сделать это либо через пользовательский интерфейс (в разделе Обслуживание репозитория), либо из командной строки при помощи клиента Weblate.

Эти действия можно автоматизировать, если вы предоставите Weblate доступ на отправку изменений в ваш репозиторий и настроите URL для отправки в настройках компонента; см. Отправка изменений из Weblate’а.

В качестве альтернативы, вы можете обновлять свои переводы до их последней версии через REST API Weblate’а.

Загрузка удалённых изменений в Weblate

Для загрузки строк, которые недавно были обновлены в вашем репозитории в Weblate, просто позвольте ему извлечь их из вышестоящего репозитория. Это можно сделать либо через пользовательский интерфейс (на странице Обслуживание репозитория), либо из командной строки при помощи клиента Weblate.

Это действие можно автоматизировать, настроив в вашем репозитории веб-обработчика, которые уведомит Weblate о появлении нового коммита; подробнее смотрите в разделе Обновление репозиториев.

Если вы не используете интеграцию с системой контроля версий, то вы можете обновлять свои переводы в соответствии с вашей кодовой базой через пользовательский интерфейс или REST API Weblate’а.

Добавление новых строк

Если ваши файлы перевода хранятся в системе контроля версий вместе с исходным кодом, то скорей всего у вас уже есть свой устоявшийся метод добавления новых строк разработчиками. Хотя вы и можете использовать любой метод на свой вкус, но рассмотрите возможность делать это с помощью метода, описанного в разделе «Контроль качества исходных строк», дабы избегать ошибок.

Если файлы перевода отделены от исходого кода, то существуют следующие способы добавления новых строк в Weblate:

  • Вручную с помощью пункта Добавить новую строку перевода из меню Инструменты того языка, который является исходным для данного перевода.

  • Програмно через API: POST /api/translations/(string:project)/(string:component)/(string:language)/units/.

  • Загрузив исходный файл через Заменить существующий файл перевода (это перезапишет существующие строки, так что удостоверьтесь сначала, что в файле есть и старые и новые строки) или Добавить новые строки; см. Способы импорта.

Примечание

Будет ли доступно добавление строк через Weblate зависит от параметра «Управление строками».

Обновление файлов целевых языков

Для одноязычных файлов (см. Поддерживаемые форматы файлов) Weblate может добавлять новые строки перевода, отсутствующие как в ref:базовом файле <component-template>, так и в реальных переводах. Однако он не выполняет какую-либо автоматическую очистку устаревших строк, так как это может привести к неожиданным результатам. Если же вы хотите, чтобы она выполнялась, то установите соответствующую надстройку, которая и будет производить такую очистку в соответствии с вашими требованиями.

Weblate также не будет пытаться каким-либо образом обновлять двуязычные файлы, так что, если вам нужно, чтобы po-файлы обновлялись из pot-файлов, то вам нужно будет делать это самостоятельно через Обновить исходные строки (см. Способы импорта) или использовать для этого надстройку «Обновлять PO-файлы до соответствия POT (msgmerge)».