Интеграция с 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 может добавлять новые строки перевода, отсутствующие как в базовом файле, так и в реальных переводах. Однако он не выполняет какую-либо автоматическую очистку устаревших строк, так как это может привести к неожиданным результатам. Если же вы хотите, чтобы она выполнялась, то установите соответствующую надстройку, которая и будет производить такую очистку в соответствии с вашими требованиями.

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

Управление репозиторием контроля версий

Weblate хранит все переводы в репозитории контроля версий. Оно может быть связано с предыдущим или быть только внутренним. Раздел Обслуживание репозитория позволяет вам работать с репозиторием.

Подсказка

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

../_images/component-repository.png

Доступны следующие операции:

Коммит

Коммитить все незавершённые изменения, находящиеся в базе данных Weblate, но не в репозитории, смотреть раздел Отложенные коммиты.

Отправка

Отправляет изменения в вышестоящий репозиторий, если настроено по URL для отправки в репозиторий.

Обновление, Извлечение, Смена базы

Обновляет репозиторий Weblate с изменениями в восходящем потоке. Он использует Стиль слияния при выборе Обновления или вы можете выбрать другой из выпадающего меню.

Заблокировать

Блокировка не позволяет переводчикам вносить изменения

Сброс из Обслуживания

Сбрасывает все изменения, сделанные в Weblate, в соответствии с вышестоящем репозиторием. При этом отбрасываются все переводы, сделанные в Weblate и не присутствующие в вышестоящем репозитории.

Очистка из Обслуживания

Удаляет неотслеживаемые файлы из репозитория. Они могут быть результатом неправильной работы надстроек или ошибок.

Синхронизировать принудительно из Обслуживания

Принудительная запись всех строк в файлы перевода. Используется, когда файлы репозитория по какой-то причине не синхронизируются с Weblate.