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

Основы Weblate

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

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

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

Интеграция репозиториев

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

См.также

Обзор архитектуры описывает внутреннюю работу Weblate.

Атрибуция пользователя

Weblate сохраняет переводы, авторами которых являются переводчики, в репозитории контроля версий, используя имя и электронную почту. Наличие реального электронного адреса, прикреплённого к коммиту, соответствует духу распределённого контроля версий и позволяет таким сервисам, как GitHub, связать ваш вклад, сделанный в Weblate, с вашим профилем GitHub.

Эта возможность также несёт в себе риск неправомерного использования электронной почты, опубликованной в коммитах системы контроля версий. Более того, после публикации такого коммита на публичном хостинге (например, GitHub) его фактически невозможно отредактировать. Weblate позволяет выбрать закрытый электронный адрес коммита в Учётная запись, чтобы избежать этого.

Поэтому администраторам следует учитывать это при настройке Weblate:

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

  • PRIVATE_COMMIT_EMAIL_OPT_IN позволяет сделать электронную почту закрытой по умолчанию.

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

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

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

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

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

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

Отправка изменений может быть автоматизирована, если вы предоставите Weblate доступ отправки изменений к вашему репозиторию и настроите URL для отправки в репозиторий в Настройки компонента, см. Отправка изменений из Weblate.

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

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

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

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

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

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

If your translation files are stored in a remote VCS together with the code, you most likely have an existing workflow for developers to introduce new strings. Any way of adding strings will be picked up, but consider using Контроль качества исходных строк to avoid introducing errors.

When translation files are separated from the code, the following ways can introduce new strings into Weblate.

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

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

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

Примечание

The ability to add strings in Weblate requires Управление строками.

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

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

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

Представляем новые строки

Вы можете добавлять новые строки в Weblate с включённым Управление строками, но обычно лучше вводить новые строки вместе с изменениями кода, которые их ввели.

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

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

Подсказка

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

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

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

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

Подсказка

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

../_images/component-repository.webp