Надстройки
Добавлено в версии 2.19.
Надстройки предоставляют способы изменения и автоматизации рабочего процесса перевода. Администратор может добавлять и управлять надстройками из меню Управлять ↓ Надстройки соответствующего компонента перевода.
Подсказка
Вы также можете настроить надстройки с помощью API, DEFAULT_ADDONS
, или install_addon
.

Встроенные надстройки
Автоматический перевод
Добавлено в версии 3.9.
- ID надстройки:
weblate.autotranslate.autotranslate
- Конфигурация:
mode
Режим автоматического перевода
Доступные варианты:
suggest
– Добавить как предложениеtranslate
– Добавить как переводfuzzy
– Добавить с пометкой «На правку»filter_type
Фильтр поиска
Пожалуйста, имейте ввиду, что перевод всех строк отменит все существующие переводы.
Доступные варианты:
all
– Все строкиnottranslated
– Непереведённые строкив разработке
– Незавершённые строкиfuzzy
– Строки, помеченные для правкиcheck:inconsistent
– Неудачная проверка: Противоречияauto_source
Источник автоматических переводов
Доступные варианты:
others
– Другие компоненты переводаmt
– Машинный переводcomponent
Компоненты
Введите плашку компонента для использования в качестве источника, для использования всех компонентов в текущем проекте — оставьте пустым.
engines
Механизмы машинного перевода
threshold
Порог оценки
- Запуск:
обновление компонентов, ежедневно
Автоматически переводит строки при помощи машинного перевода или других компонентов.
Сработало:
При появлении в компоненте новых строк.
Раз в месяц для каждого компонента, это может быть настроено с помощью
BACKGROUND_TASKS
.
CDN локализации JavaScript
Добавлено в версии 4.2.
- ID надстройки:
weblate.cdn.cdnjs
- Конфигурация:
threshold
Порог перевода
Порог для включения переводов.
css_selector
Селектор CSS
Селектор CSS для обнаружения локализуемых элементов.
cookie_name
Имя языковой куки
Имя куки, в которой сохраняется предпочитаемый язык.
files
Извлечение строк из HTML-файлов
Список имён файлов в текущем репозитории или URL-адреса, которые нужно разобрать для извлечения переводимых строк.
- Запуск:
ежедневно, репозиторий до коммита, репозиторий после обновления
Публикует переводы в сети доставки содержимого (CDN); используется при локализации JavaScript и HTML.
Его можно использовать для локализации статических HTML-страниц или для загрузки локализации в код JavaScript.
Создаёт для вашего компонента уникальный URL-адрес, который вы можете использовать на своих HTML-страницах для локализации. Подробности смотрите в разделе «Перевод HTML и JavaScript с помощью сети доставки содержимого Weblate».
Удаление пустых строк
Добавлено в версии 4.4.
- ID надстройки:
weblate.cleanup.blank
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий до коммита, репозиторий после обновления
Удаляет из файлов перевода строки без перевода.
Используйте эту надстройку, чтобы пустые строки не попадали в файлы перевода (например, в случае, если ваша библиотека локализации отображает их как отсутствующие вместо того, чтобы подставлять исходные).
Очистка файлов перевода
- ID надстройки:
weblate.cleanup.generic
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий до коммита, репозиторий после обновления
Обновляет все файлы переводов до соответствия одноязычному базовому файлу. Для большинства форматов файлов это означает удаление устаревших ключей переводов, которых больше нет в базовом файле.
Добавить отсутствующие языки
- ID надстройки:
weblate.consistency.languages
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
ежедневно, репозиторий после добавления
Гарантирует использование согласованного набора языков для всех компонентов в проекте.
Отсутствующие языки проверяются каждые 24 часа и при добавлении нового языка через Weblate.
В отличие от большинства других надстроек, эта влияет на весь проект.
Подсказка
Автоматически переводите новые добавленные строки с помощью надстройки Автоматический перевод.
Обнаружение компонентов
- ID надстройки:
weblate.discovery.discovery
- Конфигурация:
match
Регулярное выражение для сопоставления с файлами перевода
file_format
Формат файла
name_template
Настроить название компонента
base_file_template
Задать имя базового одноязычного файла
Оставить пустым для двуязычных файлов перевода.
new_base_template
Задать базовый файл для нового перевода
Имя файла, который используется для создания новых переводов. Для gettext выберите .pot файл.
intermediate_template
Файл промежуточного языка
Имя файла с промежуточным переводом. В большинстве случаев это файл перевода, предоставляемый разработчиками и используемый при создании настоящих исходных строк.
language_regex
Языковой фильтр
Регулярное выражение для фильтрации файлов перевода при сканировании по файловой маске.
copy_addons
Клонировать дополнения из основного компонента в новые
remove
Удалить компоненты для несуществующих файлов
confirm
Я подтверждаю, что сопоставления выше выглядят правильно
- Запуск:
репозиторий после обновления
Автоматически добавляет или удаляет компоненты проекта в соответствии с изменениями файлов в системе контроля версий.
Она срабатывает при каждом обновлении репозитория СКВ, а в остальном её работа аналогична команде управления import_project
. Таким образом, внутри одной системы контроля версий вы можете отслеживать несколько компонентов перевода.
Сопоставление осуществляется с помощью регулярных выражений, что даёт возможность задать достаточно сложную конфигурацию, хотя это и требует некоторого количества начальных знаний. Для распространённых случаев в справочном разделе надстройки можно найти ряд примеров.
Когда вы нажмёте Сохранить, надстройка предварительно покажет найденные компоненты, так что вы сможете проверить, действительно ли такая конфигурация соответствует вашим потребностям:

Подсказка
Надстройка «Обнаружение компонентов» использует Внутренние URL-адреса Weblate. Это удобный способ совместного использования системы контроля версий разными компонентами. Привязать дополнительные компоненты к основному так, чтобы они использовали его локальный репозиторий, можно, задав в качестве Репозиторий исходного кода адрес вида weblate://проект/основной-компонент
(в разделе Управление ↓ Параметры ↓ Система контроля версий) для каждого такого компонента. Это сэкономит не только ваше время на настройку, но и системные ресурсы.
См.также
Массовая правка
Добавлено в версии 3.11.
- ID надстройки:
weblate.flags.bulk
- Конфигурация:
q
Запрос
state
Задаваемое состояние
Доступные варианты:
-1
– Не изменять10
– На правку20
– Переведено30
– Одобреноadd_flags
Добавляемые флаги перевода
remove_flags
Удаляемые флаги перевода
add_labels
Добавляемые метки
remove_labels
Удаляемые метки
- Запуск:
обновление компонентов
Позволяет массово править флаги, метки или состояния строк.
Для того чтобы начать автоматизацию расстановки меток, можно найти все строки по запросу NOT has:label
и добавлять нужные метки до тех пор, пока не будет достигнут нужный эффект. Аналогично вы можете выполнять любые другие автоматические операции с метаданными Weblate.
Примеры:
Поисковый запрос |
|
---|---|
Добавляемые метки |
recent |
Поисковый запрос |
|
---|---|
Добавляемые флаги перевода |
|
Пометка неизменённых переводов флагом «На правку»
Добавлено в версии 3.1.
- ID надстройки:
weblate.flags.same_edit
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
единица после создания
При импорте новой строки для перевода из системы контроля версий и при её совпадении с исходной строкой она помечается в Weblate флагом «На правку». Особенно это полезно для тех форматов файлов, которые для непереведённых строк хранят исходные строки вместо перевода.
Подсказка
Возможно, вы также захотите ужесточить проверку на наличие изменений в переводе, добавив strict-same
во флаги перевода.
См.также
Пометка новых исходных строк флагом «На правку»
- ID надстройки:
weblate.flags.source_edit
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
единица после создания
При импорте новой исходной строки из системы контроля версий она помечается в Weblate флагом «На правку». Таким образом, вы можете легко фильтровать и редактировать исходные строки, добавленные разработчиками.
См.также
Пометка новых переводов флагом «На правку»
- ID надстройки:
weblate.flags.target_edit
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
единица после создания
При импорте строки для перевода из системы контроля версий она помечается в Weblate флагом «На правку». Таким образом, вы можете легко фильтровать и редактировать переводы, созданные разработчиками.
См.также
Генератор статистики
- ID надстройки:
weblate.generate.generate
- Конфигурация:
filename
Имя сгенерированного файла
template
Содержание сгенерированного файла
- Запуск:
репозиторий до коммита
Генерирует файл, содержащий детальную информацию о состоянии перевода.
И в качестве имени файла и в качестве его содержимого вы можете использовать шаблоны Django; подробное описание разметки шаблона смотрите в разделе «Шаблонная разметка».
К примеру, сгенерировать файл со сводкой по каждому переводу можно со следующими настройками:
- Имя сгенерированного файла
locale/{{ language_code }}.json
- Содержимое
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
См.также
Предварительно заполнять перевод источником
Добавлено в версии 4.11.
- ID надстройки:
weblate.generate.prefill
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
обновление компонентов, ежедневно
Заполняет перевод используя исходные строки.
Все непереведенные строки в компоненте будут представлены исходной строкой и помечены как требующие редактирования. Используйте это, когда в файлах перевода не может быть пустых строк.
Генератор псевдолокалей
Добавлено в версии 4.5.
- ID надстройки:
weblate.generate.pseudolocale
- Конфигурация:
source
Исходные строки
target
Целевой перевод
Все строки в этом переводе будут перезаписаны
prefix
Фиксированный префикс строки
var_prefix
Переменный префикс строки
suffix
Фиксированный суффикс строки
var_suffix
Переменный суффикс строки
var_multiplier
Множитель переменной части
Сколько раз повторять переменную часть, в зависимости от длины исходной строки.
include_readonly
Включить строки только для чтения
- Запуск:
обновление компонентов, ежедневно
Генерирует дополнительный перевод, автоматически добавляя префикс и суффикс к исходным строкам.
Псевдолокали могут быть полезны для поиска строк, которые небыли подготовлены для локализации должным образом. Это происходит с помощью автоматического изменения всех переводимых исходных строк, дабы те строки, которые не были изменены, было бы достаточно просто заметить при запуске приложения.
Также с помощью этого возможно отследить те строки, чьи локализованные версии могут не уместиться в отведённое под них место и ломать вёрстку.
Использование частей переменных позволяет искать строки, которые могут не вписаться в пользовательский интерфейс после локализации — расширение текста на основе длины исходной строки. Части переменных повторяются по длине текста, умноженной на множитель. Например, Hello world
с переменным суффиксом _
и переменным множителем 1 становится Hello world___________
— суффикс повторяется один раз для каждого символа в исходной строке.
Строки будут генерироваться по следующему шаблону:
фиксированный префикс строки переменный префикс строки Исходная строка переменный суффикс строки фиксированный суффикс строки
Подсказка
Хотя вы и можете использовать настоящие языки для проверки, но для этой цели в Weblate уже есть специальные псевдолокали: en_XA и ar_XB.
Подсказка
Вы можете использовать эту надстройку для запуска перевода на новую локаль существующего или похожего языка. Как только вы добавите перевод в компонент, перейдите к надстройке. Пример: Если у вас есть fr и вы хотите начать перевод fr_CA, просто задайте fr в качестве источника, fr_CA в качестве цели, а префикс и суффикс оставьте пустыми.
Удалите надстройку после заполнения нового перевода, чтобы Weblate не смог изменить переводы, сделанные после копирования.
Участники в комментарии
- ID надстройки:
weblate.gettext.authors
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий до коммита
Обновляет комментарий в заголовке PO-файла, включая в него имена участников и годы их участия.
Заголовок PO-файла будет выглядеть примерно так:
# Michal Čihař <michal@weblate.org>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.
Обновление переменной ALL_LINGUAS в файле «configure»
- ID надстройки:
weblate.gettext.configure
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий после добавления, ежедневно
Обновляет переменную ALL_LINGUAS в файлах configure
, configure.in
и configure.ac
при добавлении нового перевода.
Настройка вывода gettext
- ID надстройки:
weblate.gettext.customize
- Конфигурация:
width
Перенос длинных строк
По умолчанию gettext переносит строки на 77-м символе и на символе переноса строки; с параметром –no-wrap, они будут переносится только на символе переноса строки.
Доступные варианты:
77
– Переносить строки на 77-м символе и на символе перевода строки (по умолчанию в xgettext)65535
– Переносить строки только на символах перевода строки (подобно «xgettext –no-wrap»)-1
– Не переносить строки- Запуск:
после загрузки в хранилище
Позволяет настроить поведение вывода gettext, например, заворот строк.
Она предлагает следующие варианты:
Переносить строки на 77-м символе и на символе перевода строки
Переносить строки только на символах перевода строки
Не переносить строки
Примечание
По умолчанию gettext переносит строки на 77-м символе и на символе переноса строкию. С параметром --no-wrap
, они будут переносится только на символе переноса строки.
Обновление файла LINGUAS
- ID надстройки:
weblate.gettext.linguas
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий после добавления, ежедневно
Обновляет файл LINGUAS при добавлении нового перевода.
Создание MO-файлов
- ID надстройки:
weblate.gettext.mo
- Конфигурация:
path
Путь к сгенерированному MO-файлу
Если не указано, будет использовано расположение PO-файла.
- Запуск:
репозиторий до коммита
Автоматически генерирует MO-файл для каждого изменённого PO-файла.
В соответствующем поле можно задать местоположение сгенерированного MO-файла. Формат этого поля — Шаблонная разметка.
Обновлять PO-файлы до соответствия POT (msgmerge)
- ID надстройки:
weblate.gettext.msgmerge
- Конфигурация:
previous
Сохранять предыдущие msgid переведённых строк
no_location
Удалять расположение переведённых строк
fuzzy
Использовать неточное соответствие
- Запуск:
репозиторий после обновления
Обновляет все PO-файлы (в соответствии с масками файлов) так, чтобы они соответствовали POT-файлу (заданному шаблоном для новых переводов) с помощью msgmerge.
Это происходит всякий раз, когда новые изменения извлекаются из вышестоящего репозитория. Большинство параметров командной строки msgmerge можно задать в настройках.
Уплотнение Git-коммитов
- ID надстройки:
weblate.git.squash
- Конфигурация:
squash
Уплотнение коммитов
Доступные варианты:
all
– Все коммиты в одинlanguage
– По языкуfile
– По файлуauthor
– По авторуappend_trailers
Добавлять завершители в конец сообщения уплотнённого коммита
Строки завершителя — это строки, похожие на заголовки электронной почты RFC 822, добавляемые в конец сообщения коммита после его части в свободной форме. К примеру, «Co-authored-by: …».
commit_message
Сообщение коммита
Это сообщение коммита будет использоваться вместо сообщения, собранного из уплотнённых коммитов.
- Запуск:
репозиторий после коммита
Уплотняет (squash) Git-коммиты перед отправкой изменений.
Git-коммиты могут быть уплотнены перед отправкой изменений в одном из следующих режимов:
Все коммиты в один
По языку
По файлу
По автору
Исходные сообщения коммита сохраняются, но авторство коммитов теряется, если только не выбран режим По автору, или сообщение коммита не настроено на включение в него его авторов.
Исходные сообщения коммитов могут быть переопределены пользовательским сообщением коммита.
Дополнительно из исходных сообщений коммитов могут быть удалены завершители (строки коммита вида Co-authored-by: …
) с последующим их присоединением к концу сообщения уплотнённого коммита. Также в этом режиме для каждого переводчика генерируется соответствующий завершитель Co-authored-by:
.
Настройка вывода в JSON
- ID надстройки:
weblate.json.customize
- Конфигурация:
sort_keys
Сортировка JSON-ключей
indent
Отступы JSON
style
Стиль отступов JSON
Доступные варианты:
spaces
– Пробелыtabs
– Отступы- Запуск:
после загрузки в хранилище
Позволяет подправить поведение вывода в JSON, например, отступы или сортировку ключей.
Форматирование файла свойств Java
- ID надстройки:
weblate.properties.sort
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий до коммита
Форматирование и сортировка файла свойств Java.
Объединяет новые строки с Unix-строками.
Форматирование управляющих последовательностей Unicode в верхнем регистре (если присутствуют).
Удаляет пустые строки и комментарии.
Сортировка строк по ключам.
Исключение повторяющихся строк.
Удаление устаревших комментариев
Добавлено в версии 3.7.
- ID надстройки:
weblate.removal.comments
- Конфигурация:
age
Дни для сохранения
- Запуск:
ежедневно
Устанавливает сроки удаления комментариев.
Может быть полезна для удаления старых комментариев, которые могли потерять актуальность. Используйте её с осторожностью, поскольку то, что комментарий старый, не означает, что он потерял свою значимость.
Удаление устаревших предложений
Добавлено в версии 3.7.
- ID надстройки:
weblate.removal.suggestions
- Конфигурация:
age
Дни для сохранения
votes
Порог голосования
Порог для удаления. Это поле не действует при отключённом голосовании.
- Запуск:
ежедневно
Устанавливает сроки удаления предложений.
В сочетании с голосованием по предложениям (смотрите раздел Коллегиальное рецензирование) может быть очень полезна для удаления предложений, которые не получили достаточного количества положительных голосов в заданный промежуток времени.
Обновление файлов RESX
Добавлено в версии 3.9.
- ID надстройки:
weblate.resx.update
- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
репозиторий после обновления
Обновляет все файлы перевода, приводя их в соответствие с одноязычным исходным базовым файлом. Неиспользуемые строки удаляются, а новые добавляются как копии исходных строк.
Подсказка
Если вы хотите только удалить устаревшие ключи перевода, используйте надстройку Очистка файлов перевода.
Настройка вывода XML
Добавлено в версии 4.15.
- ID надстройки:
weblate.xml.customize
- Конфигурация:
closing_tags
Включать закрывающую метку для пустых XML меток
- Запуск:
после загрузки в хранилище
Allows adjusting XML output behavior, for example closing tags instead of self- closing tags for empty tags.
Настройка вывода в YAML
Добавлено в версии 3.10.2.
- ID надстройки:
weblate.yaml.customize
- Конфигурация:
indent
Отступы YAML
width
Перенос длинных строк
Доступные варианты:
80
– Переносить строку после 80 символов100
– Переносить строку после 100 символов120
– Переносить строку после 120 символов180
– Переносить строку после 180 символов65535
– Не переносить строкиline_break
Символ перевода строки
Доступные варианты:
dos
– DOS (\r\n)unix
– UNIX (\n)mac
– MAC (\r)- Запуск:
после загрузки в хранилище
Позволяет подправить поведение вывода в YAML, например, длину строк и символы перевода строк.
Настройка списка надстроек
Список надстроек настраивается параметром WEBLATE_ADDONS
. Для добавления ещё одной надстройки просто включите в этот параметр полное имя класса.
Создание надстройки
Также вы можете создать свою собственную надстройку: просто создайте подкласс weblate.addons.base.BaseAddon
, чтобы определить метаданные надстройки, а затем реализуйте нужный обратный вызов, который будет выполнять обработку.
См.также
Выполнение скриптов из надстройки
Надстройки также могут использоваться для выполнения внешних скриптов. Раньше выполнение было интегрировано в сам Weblate, но теперь вам нужно написать код для заворачивания вашего скрипта в надстройку.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Example pre commit script."""
from django.utils.translation import gettext_lazy as _
from weblate.addons.events import EVENT_PRE_COMMIT
from weblate.addons.scripts import BaseScriptAddon
class ExamplePreAddon(BaseScriptAddon):
# Event used to trigger the script
events = (EVENT_PRE_COMMIT,)
# Name of the addon, has to be unique
name = "weblate.example.pre"
# Verbose name and long description
verbose = _("Execute script before commit")
description = _("This add-on executes a script.")
# Script to execute
script = "/bin/true"
# File to add in commit (for pre commit event)
# does not have to be set
add_file = "po/{{ language_code }}.po"
Инструкции по установке смотрите в разделе Пользовательские проверки качества, надстройки и автоматические исправления.
Скрипт выполняется с текущим каталогом, установленном в корневой каталог репозитория системы контроля версий заданного компонента.
Кроме того, в скрипте доступны следующие переменные окружения:
- WL_VCS
Используемая система контроля версий.
- WL_REPO
URL-адрес вышестоящего репозитория.
- WL_PATH
Абсолютный путь к репозиторию системы контроля версий.
- WL_BRANCH
Добавлено в версии 2.11.
Ветка репозитория, настроенная для текущего компонента.
- WL_FILEMASK
Маска файлов для текущего компонента.
- WL_TEMPLATE
Имя файла шаблона для одноязычных переводов (может быть пустым).
- WL_NEW_BASE
Добавлено в версии 2.14.
Имя файла, используемого для создания новых переводов (может быть пустым).
- WL_FILE_FORMAT
Формат файла, используемый в текущем компоненте.
- WL_LANGUAGE
Язык обрабатываемого в данный момент перевода (недоступен для обработчиков уровня компонента).
- WL_PREVIOUS_HEAD
Предыдущая HEAD после обновления (доступна только после запуска обработчика «после обновления»).
- WL_COMPONENT_SLUG
Добавлено в версии 3.9.
Плашка компонента, используемая для построения URL-адреса.
- WL_PROJECT_SLUG
Добавлено в версии 3.9.
Плашка проекта, используемая для построения URL-адреса.
- WL_COMPONENT_NAME
Добавлено в версии 3.9.
Название компонента.
- WL_PROJECT_NAME
Добавлено в версии 3.9.
Название проекта.
- WL_COMPONENT_URL
Добавлено в версии 3.9.
URL-адрес компонента.
- WL_ENGAGE_URL
Добавлено в версии 3.9.
URL-адрес для присоединения к переводу проекта.
См.также
Обработка репозитория после обновления
Может использоваться для обновления файлов перевода при изменении исходных файлов в вышестоящем репозитории. При этом помните, что Weblate видит только те файлы, которые были закоммичены в систему контроля версий, поэтому в скрипте вам необходимо закоммитить все изменения.
Например, при использовании Gulp это можно сделать следующим кодом:
#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json
Обработка переводов перед коммитом
Используйте скрипт коммита для автоматического внесения изменений в какой-либо перевод перед их коммитом в репозиторий.
Перевод передается в виде единственного параметра, содержащего имя файла текущего перевода.