Интеграция с 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:

  • Manually, using Add new translation string from Tools menu in the source language.

  • Programmatically, using API POST /api/translations/(string:project)/(string:component)/(string:language)/units/.

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

Примечание

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

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

For monolingual files (see Поддерживаемые форматы файлов) Weblate might add new translation strings not present in the Одноязычный базовый файл, and not in actual translations. It does not however perform any automatic cleanup of stale strings as that might have unexpected outcomes. If you want to do this, please install Очистка файлов перевода add-on which will handle the cleanup according to your requirements.

Weblate also will not try to update bilingual files in any way, so if you need po files being updated from pot, you need to do it yourself using Update source strings Способы импорта or using Обновлять PO-файлы до соответствия POT (msgmerge) add-on.

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

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

Подсказка

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

../_images/component-repository.png

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

Коммит

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

Отправка

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

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

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

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

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

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

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

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

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

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

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