Интеграция с Weblate¶
Основы Weblate¶
Структура проектов и компонентов¶
Переводы в Weblate организованы по проектам и компонентам. Каждый проект может содержать несколько компонентов, а те — переводы на отдельные языки. Компоненту соответствует один переводимый файл (например, GNU gettext PO (Portable Object) или ресурсы строк Android). Проекты служат для организации компонентов в логические наборы (например, для группировки всех переводов, используемых в одном приложении).
Помимо этого, компоненты в проектах могут быть структурированы при помощи категорий. Компоненты могут принадлежать категории, а сами категории могут быть вложены друг в друга.
Внутри каждого проекта переводы общих строк по умолчанию распространяются на другие его компоненты. Это облегчает бремя повторного и много-версионного перевода. Если в вашем проекте перевод в разных компонентов должен отличаться, то такое «распространение» можно отключить в настройках компонента с помощью параметра «Разрешить распространение перевода».
Интеграция репозиториев¶
Weblate построен для интеграции с репозиторием контроля вышестоящих версий, Непрерывный перевод описывает строительные блоки и то, как изменения перетекают между ними.
См. также
Обзор архитектуры описывает внутреннюю работу Weblate.
Атрибуция пользователя¶
Weblate сохраняет переводы, авторами которых являются переводчики, в репозитории контроля версий, используя имя и электронную почту. Наличие реального электронного адреса, прикреплённого к коммиту, соответствует духу распределённого контроля версий и позволяет таким сервисам, как GitHub, связать ваш вклад, сделанный в Weblate, с вашим профилем GitHub.
Эта возможность также несёт в себе риск неправомерного использования электронной почты, опубликованной в коммитах системы контроля версий. Более того, после публикации такого коммита на публичном хостинге (например, GitHub) его фактически невозможно отредактировать. Weblate позволяет выбрать закрытый электронный адрес коммита в Учётная запись, чтобы избежать этого.
Поэтому администраторам следует учитывать это при настройке Weblate:
Такое использование электронной почты должно быть чётко описано в условиях обслуживания на случай, если такой документ понадобится. В этом может помочь Правовые вопросы.
PRIVATE_COMMIT_EMAIL_OPT_IN
позволяет сделать электронную почту закрытой по умолчанию.
Importing a localization project into 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 REST API 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 REST API 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 Tools 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 Управление строками.
Updating target-language files¶
For monolingual files (see Localization file formats), Weblate might add new translation strings present in the Одноязычный базовый файл, and not in actual translations. It does not however perform any automatic cleanup of stale strings, as that might have unexpected results. If you still want to do this, please install the Очистка файлов перевода add-on, which handles cleanup according to your requirements.
Weblate will also not try to update bilingual files when the source changes,
so if you need po
files to be updated from pot
, do it yourself by
using Update source strings Способы импорта, or by using
the Обновлять PO-файлы до соответствия POT (msgmerge) add-on.
Подсказка
Source string extraction tools, such as xgettext or lupdate, need to be executed outside of Weblate.
Представляем новые строки¶
Вы можете добавлять новые строки в Weblate с включённым Управление строками, но обычно лучше вводить новые строки вместе с изменениями кода, которые их ввели.
Monolingual formats need to be configured so that new strings are added to Одноязычный базовый файл. This is typically done by developers, as they write the code. You might want to use a review process of those strings using Контроль качества исходных строк.
Двуязычные форматы обычно извлекают строки из исходного кода с помощью какого-либо инструментов (например, xgettext или intltool-update). Обратитесь к документации вашей среды локализации для получения инструкций о том, как это сделать. После получения строк может потребоваться дополнительный шаг для обновления существующих переводов, см. Updating target-language files.
Подсказка
Автоматизация извлечения строк в настоящее время не входит в задачи Weblate. Как правило, она связана с выполнением недоверенного кода, что делает её более подходящей для общей платформы непрерывной интеграции, а не для платформы, ориентированной на локализацию.
Возможно, вы захотите интегрировать это в свои конвейеры непрерывной интеграции, чтобы новые строки автоматически появлялись для перевода. Такой конвейер также должен охватывать Предотвращение конфликтов слияния.
Managing the local VCS repository¶
Weblate stores all translations in its underlying version control repository. It is suggested to be connected to a remote one, but internal-only setup is also possible. The Repository maintenance allows controlling this repository.
Подсказка
With Непрерывный перевод, any changes are automatically pushed from the repository, so there is usually no need to manage it manually.
