Интеграция с Weblate¶
Основы Weblate¶
Структура проектов и компонентов¶
Переводы в Weblate организованы по проектам и компонентам. Каждый проект может содержать несколько компонентов, а те — переводы на отдельные языки. Компоненту соответствует один переводимый файл (например, GNU gettext PO (Portable Object) или ресурсы строк Android). Проекты служат для организации компонентов в логические наборы (например, для группировки всех переводов, используемых в одном приложении).
Помимо этого, компоненты в проектах могут быть структурированы при помощи категорий. Компоненты могут принадлежать категории, а сами категории могут быть вложены друг в друга.
Internally, each project has translations to common strings propagated across other components within it by default. This lightens the burden of repetitive and multi version translation. The translation propagation can be disabled per Настройки компонента using Разрешить распространение перевода in case the translations should diverge.
Интеграция репозиториев¶
Weblate построен для интеграции с репозиторием контроля вышестоящих версий, Непрерывный перевод описывает строительные блоки и то, как изменения перетекают между ними.
См. также
Обзор архитектуры описывает внутреннюю работу Weblate.
Атрибуция пользователя¶
Weblate сохраняет переводы, авторами которых являются переводчики, в репозитории контроля версий, используя имя и электронную почту. Наличие реального электронного адреса, прикреплённого к коммиту, соответствует духу распределённого контроля версий и позволяет таким сервисам, как GitHub, связать ваш вклад, сделанный в Weblate, с вашим профилем GitHub.
Эта возможность также несёт в себе риск неправомерного использования электронной почты, опубликованной в коммитах системы контроля версий. Более того, после публикации такого коммита на публичном хостинге (например, GitHub) его фактически невозможно отредактировать. Weblate позволяет выбрать закрытый электронный адрес коммита в Учётная запись, чтобы избежать этого.
Поэтому администраторам следует учитывать это при настройке Weblate:
Такое использование электронной почты должно быть чётко описано в условиях обслуживания на случай, если такой документ понадобится. В этом может помочь Legal module.
PRIVATE_COMMIT_EMAIL_OPT_INпозволяет сделать электронную почту закрытой по умолчанию.
Импорт проекта локализации в Weblate¶
Weblate has been developed with VCS integration in mind as it’s core feature, so the easiest way is to grant Weblate the access to your repository. The import process will guide you through configuring your translations into Weblate components.
Alternatively, you can let Weblate set up a local-only repository containing all the translations without integration.
Извлечение обновлённых переводов из Weblate¶
Weblate stores updated strings in a database and commits them to a local version-control repository. You can add a Weblate repository (when Экспортер Git is turned on) as an additional remote repository and fetch translation updates from it.
Prior to this, you might want to commit any pending local changes made in Weblate (see Отложенные коммиты). This can be done from the user interface (in the Repository maintenance), or from the command-line using Клиент Weblate.
Отправка изменений может быть автоматизирована, если вы предоставите Weblate доступ отправки изменений к вашему репозиторию и настроите URL для отправки в репозиторий в Настройки компонента, см. Отправка изменений из Weblate.
Alternatively, use API REST для Weblate to update translations so that they match the latest version from the upstream in your remote VCS repository.
Загрузка удалённых изменений в Weblate¶
To fetch any strings recently updated in your remote VCS repository into Weblate, allow Weblate to pull from the upstream repository. This can be achieved in the user interface (in the Repository maintenance), or from the command-line using Клиент Weblate.
This can be automated by setting a webhook in your repository to trigger Weblate whenever there is a new commit. See Обновление репозиториев for more details.
If not using VCS integration, you can use the UI or API REST для Weblate to update the translations so that they match your codebase.
См. также
Добавление новых строк¶
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.
Manually, using Add new translation string from Operations menu in the source language. You can choose between the radio buttons Singular and Plural inside the form. Select the appropriate form of the new translation string to be added.
Программно через API:
POST /api/translations/(string:project)/(string:component)/(string:language)/units/.Загрузив исходный файл через Заменить существующий файл перевода (это перезапишет существующие строки, так что сначала убедитесь, что в файле есть и старые и новые строки) или Добавить новые строки, смотрите раздел Способы импорта.
Примечание
The ability to add strings in Weblate requires Управление строками.
Обновление файлов языка перевода¶
Для одноязычных файлов (смотрите раздел Форматы файлов локализации) Weblate может добавлять новые строки перевода, присутствующие в Одноязычный базовый файл, а не в самих переводах. Однако он не выполняет какую-либо автоматическую очистку устаревших строк, так как это может привести к неожиданным результатам. Если же вы хотите, чтобы она выполнялась, то установите надстройку Очистка файлов перевода, которая и будет производить такую очистку в соответствии с вашими требованиями.
Weblate will also not try to update bilingual files when the source changes,
so if you need po files to be updated from pot, you have two options:
Automatically with an add-on (recommended for continuous updates): Install the Обновлять PO-файлы до соответствия POT (msgmerge) add-on, which automatically runs msgmerge to update all PO files whenever the POT file changes.
Manually via upload: Use the Update source strings Способы импорта to upload your POT file, which will merge it with existing translations.
Подсказка
Инструменты извлечения исходных строк, такие как xgettext или lupdate, необходимо запускать вне Weblate.
Представляем новые строки¶
Вы можете добавлять новые строки в Weblate с включённым Управление строками, но обычно лучше вводить новые строки вместе с изменениями кода, которые их ввели.
Одноязычные форматы требуется настроить так, чтобы новые строки добавлялись в Одноязычный базовый файл. Обычно это делается разработчиками во время написания кода. Возможно, вам стоит использовать процесс проверки этих строк с помощью Контроль качества исходных строк.
Двуязычные форматы обычно извлекают строки из исходного кода с помощью какого-либо инструментов (например, xgettext или intltool-update). Обратитесь к документации вашей среды локализации для получения инструкций о том, как это сделать. После получения строк может потребоваться дополнительный шаг для обновления существующих переводов, см. Обновление файлов языка перевода.
Подсказка
Автоматизация извлечения строк в настоящее время не входит в задачи Weblate. Как правило, она связана с выполнением недоверенного кода, что делает её более подходящей для общей платформы непрерывной интеграции, а не для платформы, ориентированной на локализацию.
Возможно, вы захотите интегрировать это в свои конвейеры непрерывной интеграции, чтобы новые строки автоматически появлялись для перевода. Такой конвейер также должен охватывать Предотвращение конфликтов слияния.
Управление локальным хранилищем системы контроля версий (VCS)¶
Weblate хранит все переводы в своём базовом репозитории контроля версий. Рекомендуется подключиться к удалённому репозиторию, но возможна и внутренняя настройка. Раздел Обслуживание репозитория позволяет вам управлять этим репозиторием.
Подсказка
При использовании Непрерывный перевод любые изменения автоматически подгружается из репозитория, поэтому нет необходимости вручную управлять этим.