Проекты перевода

Организация переводов

Weblate организует переводимое содержимое проектов/компонентов из системы контроля версий в древовидную структуру.

  • Объектом нижнего уровня является проект, который должен содержать все связанные переводы (например, перевод приложения различных версий и/или сопроводительную документацию).

  • На уровне выше располагается компонент, который фактически и является компонентом для перевода, для которого вы определяете используемый репозиторий системы контроля версий и маску файлов для перевода.

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

Weblate поддерживает широкий набор форматов перевода (как двуязычных, так и одноязычных), поддерживаемых набором инструментов Translate Toolkit, смотрите раздел Поддерживаемые форматы файлов.

Примечание

Вы можете совместно использовать склонированные репозитории системы контроля версий, используя внутренние URL-адреса Weblate. Использование этой возможности настоятельно рекомендуется при наличии множества компонентов, совместно использующих один и тот же репозиторий. Она повышает производительность и уменьшает необходимое дисковое пространство.

Добавление проектов и компонентов перевода

Изменено в версии 3.2: В Weblate’е появился интерфейс для добавления проектов и компонентов, так что вам больше не нужно использовать для этого административный интерфейс Django.

Изменено в версии 3.4: Теперь процесс добавления компонентов состоит из нескольких шагов, с автоматическим обнаружением большинства параметров.

В зависимости от ваших разрешений вы можете создавать новые проекты и компоненты перевода. Для пользователей с разрешением Добавление новых проектов их создание всегда разрешено, а если ваш экземпляр использует тарифные планы (как, например, https://hosted.weblate.org/, смотрите раздел Тарифный план), вы также можете создавать их на основе разрешений из вашего плана, установленных учётной записью пользователя, управляющего тарификацией.

Вы можете просмотреть свой текущий тарифный план на отдельной странице:

../_images/user-billing.png

Создание проекта можно инициировать оттуда или из меню на панели навигации. Чтобы завершить добавление проекта перевода, заполните основную информацию о нём:

../_images/user-add-project.png

После создания проекта вы попадаете непосредственно на страницу проекта:

../_images/user-add-project-done.png

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

Из системы контроля версий

Создать компонент из удалённого репозитория системы контроля версий.

Из уже существующего компонента

Создать дополнительный компонент на основе уже существующего, только с другими файлами.

Дополнительная ветка

Создать дополнительный компонент на основе уже существующего, только для другой ветки.

Загрузить файлы перевода

Загрузить файлы перевода в Weblate в случае, если у вас нет системы контроля версий или вы не хотите интегрировать её с Weblate. Позже вы сможете обновить содержимое через веб-интерфейс или REST API Weblate’а.

Перевести документ

Загрузить одиночный документ и перевести его.

Начать с нуля

Создать пустой проект перевода и добавить строки вручную.

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

Сначала вам нужно указать наименование и расположение репозитория:

../_images/user-add-component-init.png

На следующей странице вам будет представлен список обнаруженных переводимых ресурсов:

../_images/user-add-component-discovery.png

На последнем этапе просмотрите информацию о компоненте перевода и укажите дополнительные сведения:

../_images/user-add-component.png

Настройки проекта

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

Это основные атрибуты для настройки, они предоставляют переводчикам информацию о проекте:

Название проекта

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

URL-плашка

Название проекта, подходящее для указания его в URL-адресе.

Веб-сайт проекта

URL-адрес, по которому переводчики могут найти дополнительную информацию о проекте.

This is a required parameter unless turned off by WEBSITE_REQUIRED.

Инструкции для переводчиков

URL-адрес на сайт, содержащий более подробные инструкции для переводчиков.

Задать заголовок «Language-Team»

Должен ли Weblate управлять заголовком Language-Team (сейчас это единственная особая возможность для GNU gettext).

Использовать совместную память переводов

Использовать ли совместно используемую память переводов, подробнее смотрите в разделе Совместная память переводов.

Default value is determined by DEFAULT_SHARED_TM.

Вносить вклад в совместную память переводов

Помещать ли переводы в совместно используемую память переводов, подробнее смотрите в разделе Совместная память переводов.

Default value is determined by DEFAULT_SHARED_TM.

Управление доступом

Настройка контроля доступа для каждого проекта, подробнее смотрите в разделе Управление доступом к проекту.

Значение по умолчанию можно изменить установкой параметра DEFAULT_ACCESS_CONTROL.

Включить рецензии

Включение процесса рецензирования переводов, смотрите раздел Выделенные рецензенты.

Включить рецензии исходных строк

Включение процесса рецензирования исходных строк, смотрите раздел Рецензирование исходных строк.

Включить обработчики

Должны ли для этого репозитория использоваться неаутентифицированные обработчики уведомлений.

Псевдонимы языка

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

Типовым случаем использования псевдонимов, например, является отображение американского английского языка на английский: en_US:en

Несколько отображений должны разделяться запятой: en_GB:en,en_US:en

Использование нестандартного кода: ru_FOO:ru

Подсказка

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

Настройки компонента

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

Некоторые примеры типовых конфигураций можно найти в разделе Поддерживаемые форматы файлов.

Примечание

Рекомендуется держать размер компонентов перевода в разумных пределах — разбивайте перевод по любому критерию, который в вашем случае имеет смысл (по отдельным приложениям или дополнениям, по главам книг или по веб-сайтам).

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

Если определение языка для перевода отсутствует, создаётся пустое определение с именем вида «ru_RU (generated)». Вы должны скорректировать определение и сообщить об этом авторам Weblate, чтобы недостающие языки могли быть включены в следующий выпуск.

Компонент содержит все важные параметры для работы с системой контроля версий, а также для получения из неё переводов:

Название компонента

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

Плашка компонента

Название компонента, подходящее для указания его в URL-адресе.

Проект компонента

Настройки проекта, которому принадлежит компонент.

Система контроля версий

Используемая система контроля версий, подробнее смотрите в разделе Интеграция с системой контроля версий.

Репозиторий исходного кода

Репозиторий системы контроля версий, из которого извлекаются изменения.

См.также

Для получения более подробной информации о том, как указывать URL-адреса, смотрите раздел Доступ к репозиториям.

Подсказка

Это может быть либо реальный URL-адрес системы контроля версий, либо адрес вида weblate://проект/компонент, указывающий на то, что репозиторий должен совместно использоваться с другим компонентом. Для получения более подробной информации обратитесь к разделу Внутренние URL-адреса Weblate.

URL для отправки в репозиторий

URL-адрес репозитория, используемый для отправки изменений. Этот параметр используется только для систем контроля версий Git и Mercurial и если он пуст, поддержка отправки в них отключается.

См.также

Для получения более подробной информации о том, как указывать URL-адрес репозитория, смотрите раздел Доступ к репозиториям, а для получения более подробной информации об отправке изменений из Weblate’а обратитесь к разделу Отправка изменений из Weblate’а.

Просмотрщик репозитория

URL-адрес браузера репозитория, используемый для отображения исходных файлов (местоположения используемых сообщений). Если пустой, такие ссылки генерироваться не будут. Вы можете использовать шаблонную разметку.

Например, для ссылок на GitHub, используйте что-то наподобие: https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}

В случае, если ваши пути указываются относительно другого каталога, вы можете удалить ведущий каталог фильтром parentdir (смотрите раздел Шаблонная разметка): https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename|parentdir}}#L{{line}}

URL экспортированного репозитория

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

Ветка репозитория

Какую ветку извлекать из системы контроля версий и где искать переводы.

Ветка для отправки

Ветка, в которую отправлять изменения, оставьте пустой для использования параметра Ветка репозитория.

Примечание

В настоящее время параметр поддерживается только для Git’а, GitLab’а и GitHub’а, для интеграций с другими системами контроля версий он игнорируется.

Маска файла

Маска файлов для перевода, включая путь. Она должна включать в себя один символ *, который заменяется на код языка (для получения информации о том, как он обрабатывается, смотрите раздел Определение языков). В случае, если в вашем репозитории содержится более одного файла перевода (например, несколько доменов gettext), вам необходимо создать компонент для каждого из них.

Например, po/*.po или locale/*/LC_MESSAGES/django.po.

В случае, если имя вашего файла содержит такие специальные символы, как [ или ], они должны быть экранированы как [[] и []].

Одноязычный базовый файл

Базовый файл, содержащий определения строк для одноязычных компонентов.

Правка базового файла

Разрешать ли редактирование базового файла для одноязычных компонентов.

Файл промежуточного языка

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

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

Шаблон для новых переводов

Базовый файл, используемый для генерирования новых переводов, например, .pot файл для gettext.

Подсказка

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

Формат файла

Формат файла перевода, смотрите также поддерживаемые форматы файлов.

Адрес для сообщения об ошибке в исходной строке

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

Разрешить распространение перевода

Вы можете отключить распространение переводов на этот компонент из других компонентов этого же проекта. Это сильно зависит от того, что вы переводите, иногда желательно использовать разные переводы для одинаковых строк.

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

Значение по умолчанию может быть изменено параметром DEFAULT_TRANSLATION_PROPAGATION.

Включить предложения

Принимать ли предложения по переводу этого компонента.

Голосование по предложению

Включает голосование за предложения, смотрите раздел Голосование по предложению.

Автоматическое принятие предложений

Автоматически принимать предложения, за которые проголосовали, смотрите раздел Голосование по предложению.

Флаги перевода

Настройка проверок качества и другого поведения Weblate’а, смотрите раздел Настройка поведения с помощью флагов.

Принудительные проверки

Список проверок, которые нельзя проигнорировать, смотрите раздел Принудительные проверки.

Примечание

Добавление проверки в качестве принудительной не включает её автоматически; вам всё равно придётся включить её с помощью настроек поведения во флагах перевода или дополнительной информации об исходных строках.

Лицензия перевода

Лицензия на перевод (не обязательно должна совпадать с лицензией на исходный код).

Соглашение участника

Пользовательское соглашение, которое должно быть одобрено, прежде чем пользователь сможет переводить этот компонент.

Добавление нового перевода

Как обрабатывать запросы на создание новых языков. Доступные варианты:

Связаться с сопровождающими

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

Указать URL на инструкции по переводу

Пользователю предоставляется ссылка на страницу, которая описывает процесс начала новых переводов. Используйте этот вариант в случае, если вам требуется более формальный процесс (например, формирование команды людей перед началом фактического перевода).

Создать новый язык

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

Запретить добавление новых переводов

У пользователя не будет возможности начать новый перевод.

Подсказка

The project admins can add new translations even if it is disabled here when it is possible (either Шаблон для новых переводов or the file format supports starting from an empty file).

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

Добавлено в версии 4.5.

Настраивает, смогут ли пользователи добавлять новые строки и удалять существующие из Weblate. В зависимости от вашего рабочего процесса (как именно должны добавляться новые строки) вы можете включить этот параметр или оставить отключённым.

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

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

Стиль кода языка

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

Стиль слияния

Вы можете настроить обработку обновлений из вышестоящего репозитория. Для некоторых систем контроля версий этот параметр может не поддерживаться. За более подробной информацией обратитесь к разделу Слияние или перебазирование.

Значение по умолчанию можно изменить установкой параметра DEFAULT_MERGE_STYLE.

Сообщения коммита, добавления, удаления, слияния и сообщения надстроек

Сообщение, используемое при коммите перевода, смотрите раздел Шаблонная разметка.

Значения по умолчанию можно изменить установкой параметров DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE и DEFAULT_MERGE_MESSAGE.

Отправлять при коммите

Whether committed changes should be automatically pushed to the upstream repository. When enabled, the push is initiated once Weblate commits changes to its underlying repository (see Отложенные коммиты). To actually enable pushing Repository push URL has to be configured as well.

Возраст изменений для коммита

Sets how old (in hours) changes have to be before they are committed by background task or the commit_pending management command. All changes in a component are committed once there is at least one change older than this period.

Значение по умолчанию можно изменить установкой параметра COMMIT_PENDING_HOURS.

Подсказка

There are other situations where pending changes might be committed, see Отложенные коммиты.

Блокировать при ошибке

Locks the component (and linked components, see Внутренние URL-адреса Weblate) upon the first failed push or merge into its upstream repository, or pull from it. This avoids adding another conflicts, which would have to be resolved manually.

Компонент будет автоматически разблокирован, как только в репозитории не останется ошибок.

Исходный язык

Язык, используемый для исходных строк. Изменяйте этот параметр, если вы переводите не с английского.

Подсказка

In case you are translating bilingual files from English, but want to be able to do fixes in the English translation as well, choose English (Developer) as a source language to avoid conflict between the name of the source language and the existing translation.

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

Языковой фильтр

Regular expression used to filter the translation when scanning for filemask. It can be used to limit the list of languages managed by Weblate.

Примечание

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

Несколько примеров фильтров:

Описание фильтра

Регулярное выражение

Только выбранные языки

^(cs|de|es)$

Исключить языки

^(?!(it|fr)$).+$

Выбрать только двубуквенные языковые коды

^..$

Исключить неязыковые файлы

^(?!(blank)$).+$

Включить все файлы (по умолчанию)

^[^.]+$

Регулярное выражение вариантов

Регулярное выражение, используемое для определения вариантов строки, смотрите раздел Варианты строк.

Примечание

Большинство полей могут быть отредактированы владельцами или управляющими проекта через интерфейс Weblate’а.

Приоритет

Переводчикам вначале предлагаются компоненты с большим приоритетом.

Ограниченный доступ

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

Restricting access at a component, or component-list level takes over access permission to a component, regardless of project-level permissions. You will have to grant access to it explicitly. This can be done through granting access to a new user group and putting users in it, or using the default custom or private access control groups.

The default value can be changed in DEFAULT_RESTRICTED_COMPONENT.

Подсказка

This applies to project admins as well — please make sure you will not loose access to the component after toggling the status.

Разделяемые компоненты

You can choose additional projects where the component will be visible. Useful for shared libraries which you use in several projects.

Примечание

Sharing a component doesn’t change its access control. It only makes it visible when browsing other projects. Users still need access to the actual component to browse or translate it.

Использовать в качестве глоссария

Добавлено в версии 4.5.

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

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

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

См.также

Глоссарий

Цвет глоссария

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

Шаблонная разметка

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

В настоящее время он используется:

В шаблонах компонентов доступны следующие переменные:

{{ language_code }}

Код языка

{{ language_name }}

Название языка

{{ component_name }}

Название компонента

{{ component_slug }}

Плашка компонента

{{ project_name }}

Название проекта

{{ project_slug }}

Плашка проекта

{{ url }}

URL-адрес перевода

{{ filename }}

Имя файла перевода

{{ stats }}

Статистика перевода, у неё есть дополнительные атрибуты, примеры ниже.

{{ stats.all }}

Общее количество строк

{{ stats.fuzzy }}

Количество строк, требующих рецензирования

{{ stats.fuzzy_percent }}

Процент строк, требующих рецензирования

{{ stats.translated }}

Количество переведённых строк

{{ stats.translated_percent }}

Процент переведённых строк

{{ stats.allchecks }}

Количество строк с неудачными проверками

{{ stats.allchecks_percent }}

Процент строк с неудачными проверками

{{ author }}

Автор текущего коммита, доступна только в области действия коммита.

{{ addon_name }}

Имя исполняемой в данный момент надстройки, доступна только в сообщении о коммите надстройки.

Следующие переменные доступны в шаблонах браузера репозитория или редактора:

{{branch}}

текущая ветка

{{line}}

строка в файле

{{filename}}

имя файла, также с помощью фильтра parentdir вы можете удалить ведущие части, например {{filename|parentdir}}

Вы можете объединять их с фильтрами:

{{ component|title }}

Можете использовать условия:

{% if stats.translated_percent > 80 %}Well translated!{% endif %}

Для замены символов доступен дополнительный тег:

{% replace component "-" " " %}

Вы можете объединить его с фильтрами:

{% replace component|capfirst "-" " " %}

Также есть дополнительный фильтр для работы с именами файлов:

Directory of a file: {{ filename|dirname }}
File without extension: {{ filename|stripext }}
File in parent dir: {{ filename|parentdir }}
It can be used multiple times:  {{ filename|parentdir|parentdir }}

…и другие возможности шаблонов Django.

Скорость импорта

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

Оптимизация настроек

Конфигурация по умолчанию полезна для тестирования и отладки Weblate, в то же время для установки в рабочую среду в неё необходимо внести некоторые коррективы. Многие из параметров довольно сильно влияют на производительность. Для получения более подробной информации обратитесь к разделу Рабочая среда, особенно обратите внимание на следующие темы:

Проверка ограничения по ресурсам

Если вы импортируете огромные переводы или репозитории, вы можете столкнуться с ограничениями по ресурсам вашего сервера.

  • Проверьте объём свободной памяти, наличие кэшированных операционной системой файлов перевода значительно повысит производительность.

  • Если нужно обработать множество строк, дисковые операции могут стать узким местом — диск насилуется как Weblate’ом, так и базой данных.

  • Улучшить производительность фоновых задач могут помочь дополнительные ядра процессора (смотрите раздел Фоновые задачи с использованием Celery).

Отключение ненужных проверок

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

Автоматическое создание компонентов

Если в вашем проекте есть куча файлов перевода (например, различные домены gettext или части разных Android приложений), вы можете захотеть импортировать их автоматически. Этого можно сделать либо из командной строки с помощью команд import_project или import_json, либо с помощью установки надстройки Обнаружение компонентов.

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

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