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

Основы Weblate#

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

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

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

Repository integration#

Weblate is built to integrate with upstream version control repository, Непрерывный перевод describes building blocks and how the changes flow between them.

См.также

Architecture overview describes how Weblate works internally.

User attribution#

Weblate keeps the translations properly authored by translators in the version control repository by using name and e-mail. Having a real e-mail attached to the commit follows the distributed version control spirits and allows services like GitHub to associate your contributions done in Weblate with your GitHub profile.

This feature also brings in risk of misusing e-mail published in the version control commits. Moreover, once such a commit is published on public hosting (such as GitHub), there is effectively no way to redact it. Weblate allows choosing a private commit e-mail in Учётная запись to avoid this.

Therefore, admins should consider this while configuring Weblate:

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

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

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

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

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

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

Отправка изменений может быть автоматизирована, если вы предоставите Weblate push-доступ к вашему репозиторию и настроите comComponent-push в comComponent, см. Отправка изменений из 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 с включенным компонентом-manage_units, но обычно лучше вводить новые строки вместе с изменениями кода, которые их ввели.

Одноязычные форматы требуют добавления новой строки в comComponent-template. Обычно это делается разработчиками во время разработки кода. Возможно, вы захотите ввести проверку этих строк, используя Контроль качества исходных строк.

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

Подсказка

Автоматизация извлечения строк в настоящее время не входит в задачи Weblate. Как правило, она связана с выполнением недоверенного кода, что делает ее более подходящей для общей платформы непрерывной интеграции, а не для платформы, ориентированной на локализацию.

Возможно, вы захотите интегрировать это в свои конвейеры непрерывной интеграции, чтобы новые строки автоматически появлялись для перевода. Такой конвейер также должен охватывать Предотвращение конфликтов слияния.

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

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

Подсказка

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

../_images/component-repository.webp