Интеграция с Weblate¶
Основы Weblate¶
Структура проектов и компонентов¶
Переводы в Weblate организованы по проектам и компонентам. Каждый проект может содержать несколько компонентов, а те — переводы на отдельные языки. Компоненту соответствует один переводимый файл (например, GNU gettext PO (переносимый объект) или Строковые ресурсы Android). Проекты служат для организации компонентов в логические наборы (например, для группировки всех переводов, используемых в одном приложении).
Помимо этого, компоненты в проектах могут быть структурированы при помощи категорий. Компоненты могут принадлежать категории, а сами категории могут быть вложены друг в друга.
Внутри каждого проекта переводы общих строк по умолчанию распространяются на другие компоненты внутри него. Это облегчает бремя повторяющегося и многоверсионного перевода. Распространение перевода может быть отключено для каждого Настройки компонента с помощью Разрешить распространение перевода, если переводы должны расходиться.
Интеграция репозиториев¶
Weblate построен для интеграции с репозиторием контроля вышестоящих версий, Непрерывный перевод описывает строительные блоки и то, как изменения перетекают между ними.
См. также
Обзор архитектуры описывает внутреннюю работу Weblate.
Атрибуция пользователя¶
Weblate сохраняет переводы, авторами которых являются переводчики, в репозитории контроля версий, используя имя и электронную почту. Наличие реального электронного адреса, прикреплённого к коммиту, соответствует духу распределённого контроля версий и позволяет таким сервисам, как GitHub, связать ваш вклад, сделанный в Weblate, с вашим профилем GitHub.
Эта возможность также несёт в себе риск неправомерного использования электронной почты, опубликованной в коммитах системы контроля версий. Более того, после публикации такого коммита на публичном хостинге (например, GitHub) его фактически невозможно отредактировать. Weblate позволяет выбрать закрытый электронный адрес коммита в Учётная запись, чтобы избежать этого.
Поэтому администраторам следует учитывать это при настройке Weblate:
Такое использование электронной почты должно быть чётко описано в условиях обслуживания на случай, если такой документ понадобится. В этом может помочь Юридический модуль.
PRIVATE_COMMIT_EMAIL_OPT_INпозволяет сделать электронную почту закрытой по умолчанию.
Импорт проекта локализации в Weblate¶
Weblate был разработан с учётом интеграции с системой контроля версий как его основной функции, поэтому проще всего предоставить Weblate доступ к вашему репозиторию. Процесс импорта проведёт вас через настройку ваших переводов в компоненты Weblate.
В качестве альтернативы вы можете позволить Weblate создать локальный репозиторий, содержащий все переводы, без интеграции.
Извлечение обновлённых переводов из Weblate¶
Weblate хранит обновлённые строки в базе данных и фиксирует их в локальном репозитории контроля версий. Вы можете добавить репозиторий Weblate (когда Экспортер Git включён) в качестве дополнительного удалённого репозитория и получать из него обновления переводов.
Перед этим вы, возможно, захотите зафиксировать все ожидающие локальные изменения, сделанные в Weblate (см. Отложенные коммиты). Это можно сделать из пользовательского интерфейса (в Repository maintenance) или из командной строки с помощью Клиент Weblate.
Отправка изменений может быть автоматизирована, если вы предоставите Weblate доступ на отправку к вашему репозиторию и настроите URL для отправки в репозиторий в Настройки компонента, см. Отправка изменений из Weblate.
В качестве альтернативы используйте API REST для Weblate для обновления переводов, чтобы они соответствовали последней версии из вышестоящего репозитория в вашем удалённом репозитории VCS.
Загрузка удалённых изменений в Weblate¶
Чтобы получить любые недавно обновлённые строки из вашего удалённого репозитория VCS в Weblate, разрешите Weblate выполнить извлечение из вышестоящего репозитория. Это можно сделать в пользовательском интерфейсе (в Repository maintenance) или из командной строки с помощью Клиент Weblate.
Это можно автоматизировать, настроив веб-обработчик в вашем репозитории для запуска Weblate при каждом новом коммите. Подробнее см. в Обновление репозиториев.
Если вы не используете интеграцию с системой контроля версий, вы можете использовать пользовательский интерфейс или API REST для Weblate для обновления переводов, чтобы они соответствовали вашей кодовой базе.
См. также
Добавление новых строк¶
Если ваши файлы переводов хранятся в удалённой системе контроля версий вместе с кодом, у вас, скорее всего, уже существует рабочий процесс для добавления разработчиками новых строк. Любой способ добавления строк будет принят, но рассмотрите возможность использования Контроль качества исходных строк, чтобы избежать появления ошибок.
Когда файлы переводов отделены от кода, следующие способы могут ввести новые строки в Weblate.
Вручную, используя Добавить новую строку перевода из меню Операции на исходном языке. Вы можете выбрать между переключателями Единственное число и Множественное число внутри формы. Выберите соответствующую форму новой строки перевода для добавления.
Программно через API:
POST /api/translations/(string:project)/(string:component)/(string:language)/units/.Загрузив исходный файл через Заменить существующий файл перевода (это перезапишет существующие строки, так что сначала убедитесь, что в файле есть и старые и новые строки) или Добавить новые строки, смотрите раздел Способы импорта.
Примечание
Возможность добавления строк в Weblate требует Управление строками.
Обновление файлов языка перевода¶
Для одноязычных файлов (смотрите раздел Форматы файлов локализации) Weblate может добавлять новые строки перевода, присутствующие в Одноязычный базовый файл, а не в самих переводах. Однако он не выполняет какую-либо автоматическую очистку устаревших строк, так как это может привести к неожиданным результатам. Если же вы хотите, чтобы она выполнялась, то установите надстройку Очистка файлов перевода, которая и будет производить такую очистку в соответствии с вашими требованиями.
Weblate также не будет пытаться обновлять двуязычные файлы при изменении источника, поэтому если вам нужно, чтобы файлы po обновлялись из pot, у вас есть два варианта:
Автоматически с помощью надстройки (рекомендуется для непрерывных обновлений): Установите надстройку Обновлять PO-файлы до соответствия POT (msgmerge), которая автоматически запускает msgmerge для обновления всех PO-файлов при каждом изменении POT-файла.
Вручную через отправку: Используйте Способы импорта Обновить исходные строки для отправки вашего POT-файла, который будет объединён с существующими переводами.
Подсказка
Инструменты извлечения исходных строк, такие как xgettext или lupdate, необходимо запускать вне Weblate.
Представляем новые строки¶
Вы можете добавлять новые строки в Weblate с включённым Управление строками, но обычно лучше вводить новые строки вместе с изменениями кода, которые их ввели.
Одноязычные форматы требуется настроить так, чтобы новые строки добавлялись в Одноязычный базовый файл. Обычно это делается разработчиками во время написания кода. Возможно, вам стоит использовать процесс проверки этих строк с помощью Контроль качества исходных строк.
Двуязычные форматы обычно извлекают строки из исходного кода с помощью какого-либо инструментов (например, xgettext или intltool-update). Обратитесь к документации вашей среды локализации для получения инструкций о том, как это сделать. После получения строк может потребоваться дополнительный шаг для обновления существующих переводов, см. Обновление файлов языка перевода.
Подсказка
Автоматизация извлечения строк в настоящее время не входит в задачи Weblate. Как правило, она связана с выполнением недоверенного кода, что делает её более подходящей для общей платформы непрерывной интеграции, а не для платформы, ориентированной на локализацию.
Возможно, вы захотите интегрировать это в свои конвейеры непрерывной интеграции, чтобы новые строки автоматически появлялись для перевода. Такой конвейер также должен охватывать Предотвращение конфликтов слияния.
Управление локальным хранилищем системы контроля версий (VCS)¶
Weblate хранит все переводы в своём базовом репозитории контроля версий. Рекомендуется подключать его к удалённому репозиторию, но возможна и полностью внутренняя настройка. Repository maintenance позволяет управлять этим репозиторием. Для подробного описания доступных действий см. Обслуживание репозитория.
Подсказка
При использовании Непрерывный перевод любые изменения автоматически подгружается из репозитория, поэтому нет необходимости вручную управлять этим.