Надстройки

Add-ons provide ways to customize and automate the translation workflow. Admins can add and manage add-ons from the ManageAdd-ons menu of each respective translation project or component. Add-ons can be also installed site-wide in Интерфейс управления.

Подсказка

Вы также можете настроить надстройки с помощью API, DEFAULT_ADDONS или install_addon.

../_images/addons.webp

Наладзиć дадатак

Дадатак уžо ŭсталиавани!

Дадатак уžо ŭсталиавани!

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

Происходит, когда вносится изменение в компонент. Например:

  • Ние ŭдалосиа абнавиć репазиторий.

  • Нови радок дададзиени

  • Абнаŭлиаже файл ЛИНГУАС, кали дадажекка нови пиераклад.

Daily

Triggered daily, but add-ons usually split the daily load between components depending on BACKGROUND_TASKS.

Event change

Triggered after a Change event is created.

Падрабиазнаскі репазіторижа

Абнаŭлиаже файл ЛИНГУАС, кали дадажекка нови пиераклад.

Стан репазіторижа

Triggered just after the changes are committed.

Стан репазіторижа

Кі треба адсилаć репазіторий при коžним запісие ревізіі.

Застарели репазиторий.

Абнавиć ŭсие ПО-файли ŭ адпавиеднаски з ПО-файлам з дапамоhай мсгмерге. Hета спракоŭваже коžни раз жак новижа змиени викиаhважукка з виšейšаhа счовиščа.

Падрабиазнаскі репазіторижа

Triggered just before the changes are committed.

Браŭзар репазіторижа

Кі треба адсилаć репазіторий при коžним запісие ревізіі.

Застарели репазиторий.

Triggered just before the repository update is attempted.

Дасвиедčани каристаĺник

Triggered when file is parsed by Weblate.

Unit post-save

Triggered just after the string is saved.

Unit pre-create

Triggered just after the newly created string is saved.

Встроенные надстройки

Автоматический перевод

ID надстройки:

weblate.autotranslate.autotranslate

Конфигурация:

mode

Режим автоматического перевода

Доступные варианты:

suggest – Добавить как предложение

translate – Добавить как перевод

fuzzy – Добавить с пометкой «На правку»

filter_type

Фильтр поиска

Пожалуйста, имейте ввиду, что перевод всех строк отменит все существующие переводы.

Доступные варианты:

all – Все строки

nottranslated – Непереведённые строки

в разработке – Незавершённые строки

fuzzy – Строки, помеченные для правки

check:inconsistent – Неудачная проверка: Противоречия

Дадаć жак інšи пиераклад

auto_source

Источник автоматических переводов

Доступные варианты:

others – Другие компоненты перевода

mt – Машинный перевод

component

Компонент

Введите плашку компонента для использования в качестве источника, для использования всех компонентов в текущем проекте — оставьте пустым.

engines

Механизмы машинного перевода

threshold

Порог оценки

Запуск:

Дадатак уžо ŭсталиавани!, Назва кампаниента, Daily

Автоматически переводит строки при помощи машинного перевода или других компонентов.

CDN локализации JavaScript

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

ID надстройки:

weblate.cdn.cdnjs

Конфигурация:

threshold

Порог перевода

Необходимый процент переведённых строк для включения перевода.

css_selector

Селектор CSS

Селектор CSS для обнаружения локализуемых элементов.

cookie_name

Имя языковой куки

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

files

Извлечение строк из HTML-файлов

Список имён файлов в текущем репозитории или URL-адреса, которые нужно разобрать для извлечения переводимых строк.

Запуск:

Дадатак уžо ŭсталиавани!, Daily, Стан репазіторижа, Застарели репазиторий.

Публикует переводы в сеть доставки контента для использования в локализации JavaScript или HTML.

Его можно использовать для локализации статических HTML-страниц или для загрузки локализации в код JavaScript.

Создаёт для вашего компонента уникальный URL-адрес, который вы можете использовать на своих HTML-страницах для локализации. Подробности смотрите в разделе «Перевод HTML и JavaScript с помощью сети доставки содержимого Weblate».

Примечание

Это дополнение требует дополнительной настройки на сервере Weblate. LOCALIZE_CDN_PATH определяет место записи созданных файлов (в файловой системе), а LOCALIZE_CDN_URL - место их обслуживания (URL). Обслуживание файлов не выполняется Weblate и должна быть настроена извне (обычно с помощью CDN-сервиса).

Это дополнение настраивается на Hosted Weblate и обслуживает файлы через https://weblate-cdn.com/.

Удаление пустых строк

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

ID надстройки:

weblate.cleanup.blank

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Стан репазіторижа, Застарели репазиторий.

Удаляет из файлов перевода строки без перевода.

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

Очистка файлов перевода

ID надстройки:

weblate.cleanup.generic

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Застарели репазиторий., Падрабиазнаскі репазіторижа

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

For formats containing additional content besides translation strings (such as Файлы HTML, Файлы ресурсов Windows, or Формат OpenDocument) this also brings the translation file in sync with the base file.

Добавить отсутствующие языки

ID надстройки:

weblate.consistency.languages

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Daily, Падрабиазнаскі репазіторижа

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

Отсутствующие языки проверяются каждые 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

Я подтверждаю, что сопоставления выше выглядят правильно

Запуск:

Дадатак уžо ŭсталиавани!, Застарели репазиторий.

Автоматически добавляет или удаляет компоненты проекта в соответствии с изменениями файлов в системе контроля версий.

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

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

Вы можете использовать разметку шаблонов Django в имени файла и содержании, например:

{{ component }}

Сопоставление имени файла компонента

{{ component|title }}

Имя файла компонента с заглавной первой буквой

{{ path }}: {{ component }}

Пользовательская группа совпадений из регулярного выражения

Когда вы нажмёте Сохранить, надстройка предварительно покажет найденные компоненты, так что вы сможете проверить, действительно ли такая конфигурация соответствует вашим потребностям:

../_images/addon-discovery.webp

Примеры обнаружения компонентов

По одной папке на каждый язык

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

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

(?P<language>[^/.]*)/(?P<component>[^/]*)\.po

Соответствующие файлы:
  • cs/application.po

  • cs/website.po

  • de/application.po

  • de/website.po

Получение раскладки локалей текста

Обычная структура для хранения gettext PO-файлов.

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

locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po

Соответствующие файлы:
  • locale/cs/LC_MESSAGES/application.po

  • locale/cs/LC_MESSAGES/website.po

  • locale/de/LC_MESSAGES/application.po

  • locale/de/LC_MESSAGES/website.po

Сложные имена файлов

В имени файла используются имена компонента и языка.

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

src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po

Соответствующие файлы:
  • src/locale/application.cs.po

  • src/locale/website.cs.po

  • src/locale/application.de.po

  • src/locale/website.de.po

Повторный языковой код

В пути и имени файла используется язык.

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

locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po

Соответствующие файлы:
  • locale/cs/application/cs.po

  • locale/cs/website/cs.po

  • locale/de/application/de.po

  • locale/de/website/de.po

Разделить строки Android

Строки ресурсов Android, разбитые на несколько файлов.

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

res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml

Соответствующие файлы:
  • res/values-cs/strings-about.xml

  • res/values-cs/strings-help.xml

  • res/values-de/strings-about.xml

  • res/values-de/strings-help.xml

Сопоставление нескольких путей

Многомодульный проект Maven со свойствами переводов на Java.

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

(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties

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

{{ originalHierarchy }}: {{ component }}

Соответствующие файлы:
  • parent/module1/submodule/src/main/resources/ApplicationResources_fr.properties

  • parent/module1/submodule/src/main/resources/ApplicationResource_es.properties

  • parent/module2/src/main/resources/ApplicationResource_de.properties

  • parent/module2/src/main/resources/ApplicationResource_ro.properties

Подсказка

Надстройка «Обнаружение компонентов» использует Внутренние URL-адреса Weblate. Это удобный способ совместного использования системы контроля версий разными компонентами. Привязать дополнительные компоненты к основному так, чтобы они использовали его локальный репозиторий, можно, задав в качестве Репозиторий исходного кода адрес вида weblate://проект/основной-компонент (в разделе УправлениеПараметрыСистема контроля версий) для каждого такого компонента. Это сэкономит не только ваше время на настройку, но и системные ресурсы.

Массовая правка

ID надстройки:

weblate.flags.bulk

Конфигурация:

q

Запрос

state

Задаваемое состояние

Доступные варианты:

-1 – Не изменять

10 – На правку

20 – Переведено

30 – Одобрено

add_flags

Добавляемые флаги перевода

remove_flags

Удаляемые флаги перевода

add_labels

Добавляемые метки

remove_labels

Удаляемые метки

Запуск:

Дадатак уžо ŭсталиавани!, Назва кампаниента

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

Примеры:

Автоматическое присвоение метки новым строкам

Поисковый запрос

NOT has:label

Добавляемые метки

recent

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

Поисковый запрос

language:en AND key:changelogs/

Добавляемые флаги перевода

read-only

Адзнаčиć жак спам

Поисковый запрос

source:r"^\`\`[.a-zA-Z0-9_-]*\`\`$" AND language:en

Добавляемые флаги перевода

read-only

Пометка неизменённых переводов флагом «На правку»

ID надстройки:

weblate.flags.same_edit

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Unit pre-create

При импорте новой строки для перевода из системы контроля версий и при её совпадении с исходной строкой она помечается в Weblate флагом «На правку». Особенно это полезно для тех форматов файлов, которые для непереведённых строк хранят исходные строки вместо перевода.

Подсказка

Возможно, вы также захотите ужесточить проверку на наличие изменений в переводе, добавив strict-same во флаги перевода.

Пометка новых исходных строк флагом «На правку»

ID надстройки:

weblate.flags.source_edit

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Unit pre-create

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

Пометка новых переводов флагом «На правку»

ID надстройки:

weblate.flags.target_edit

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Unit pre-create

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

Заполните строки, доступные только для чтения, исходным кодом

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

ID надстройки:

weblate.generate.fill_read_only

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Назва кампаниента, Daily

Заполняет перевод строк, доступных только для чтения, исходной строкой.

Генератор статистики

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

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Назва кампаниента, Daily

Заполняет перевод используя исходные строки.

Все непереведённые строки в компоненте будут представлены исходной строкой и помечены «На правку». Используйте это, когда в файлах перевода не может быть пустых строк.

Генератор псевдолокалей

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

ID надстройки:

weblate.generate.pseudolocale

Конфигурация:

source

Исходные строки

target

Целевой перевод

Все строки в этом переводе будут перезаписаны

prefix

Предваряющий статический текст

var_prefix

Предваряющий переменный текст

suffix

Добавочный статический текст

var_suffix

Добавочный переменный текст

var_multiplier

Переменный множитель текста

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

include_readonly

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

Запуск:

Дадатак уžо ŭсталиавани!, Назва кампаниента, Daily

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

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

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

Using the variable parts makes it possible to look for strings which might not fit into the user interface after the localization - it extends the text based on the source string length. The variable texts are repeated by length of the text multiplied by the multiplier. For example Hello world with variable text _ and variable multiplier of 1 becomes Hello world___________ - the text is repeated once for each character in the source string.

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

Prepended static text Prepended variable text Source string Appended variable text Appended static text

Подсказка

Хотя вы и можете использовать настоящие языки для проверки, но для этой цели в 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

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Daily, Падрабиазнаскі репазіторижа

Обновляет переменную 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

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Daily, Падрабиазнаскі репазіторижа

Обновляет файл LINGUAS при добавлении нового перевода.

Создание MO-файлов

ID надстройки:

weblate.gettext.mo

Конфигурация:

path

Путь к сгенерированному MO-файлу

Если не указано, будет использовано расположение PO-файла.

fuzzy

Включить строки с флагом «На правку»

Строки с флагом «На правку», обычно не готовы к использованию в качестве переводов.

Запуск:

Падрабиазнаскі репазіторижа

Автоматически генерирует MO-файл для каждого изменённого PO-файла.

В соответствующем поле можно задать местоположение сгенерированного MO-файла. Формат этого поля — Шаблонная разметка.

Примечание

При удалении перевода его PO-файл будет удалён из репозитория, а MO-файл, созданный этим дополнением, - нет. MO-файл должен быть удалён из репозитория вручную.

Обновлять PO-файлы до соответствия POT (msgmerge)

ID надстройки:

weblate.gettext.msgmerge

Конфигурация:

previous

Сохранять предыдущие msgid переведённых строк

no_location

Удалять расположение переведённых строк

fuzzy

Использовать неточное соответствие

Запуск:

Дадатак уžо ŭсталиавани!, Застарели репазиторий.

Обновляет все PO-файлы (в соответствии с масками файлов) так, чтобы они соответствовали POT-файлу (заданному шаблоном для новых переводов) с помощью msgmerge.

Абнавиć ŭсие ПО-файли ŭ адпавиеднаски з ПО-файлам з дапамоhай мсгмерге. Hета спракоŭваже коžни раз жак новижа змиени викиаhважукка з виšейšаhа счовиščа.

Уплотнение Git-коммитов

ID надстройки:

weblate.git.squash

Конфигурация:

squash

Уплотнение коммитов

Доступные варианты:

all – Все коммиты в один

language – По языку

file – По файлу

author – По автору

append_trailers

Добавлять завершители в конец сообщения уплотнённого коммита

Строки трейлера это строки, похожие на заголовки электронной почты RFC 822, расположенные в конце свободной части сообщения фиксации, например, «“Co-authored-by: …“».

commit_message

Сообщение коммита

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

Запуск:

Дадатак уžо ŭсталиавани!, Стан репазіторижа

Уплотнение Git-коммитов перед публикацией изменений.

Git-коммиты могут быть уплотнены перед отправкой изменений в одном из следующих режимов:

  • Все коммиты в один

  • По языку

  • По файлу

  • По автору

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

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

Дополнительно из исходных сообщений коммитов могут быть удалены завершители (строки коммита вида Co-authored-by: ) с последующим их присоединением к концу сообщения уплотнённого коммита. Также в этом режиме для каждого переводчика генерируется соответствующий завершитель Co-authored-by:.

Настройка вывода в JSON

Изменено в версии 5.12: Avoid spaces after separators option added.

ID надстройки:

weblate.json.customize

Конфигурация:

sort_keys

Сортировка JSON-ключей

use_compact_separators

Избегайте пробелов после разделителей

indent

Отступы JSON

style

Стиль отступов JSON

Доступные варианты:

spaces – Пробелы

tabs – Отступы

Запуск:

Дасвиедčани каристаĺник

Allows adjusting JSON output behavior, for example indentation, sorting or compact formatting using minimal whitespace.

Форматирование файла свойств Java

ID надстройки:

weblate.properties.sort

Конфигурация:

case_sensitive

Включить сортировку ключей с учётом регистра

Запуск:

Падрабиазнаскі репазіторижа

Форматирование и сортировка файла свойств Java.

  • Объединяет новые строки с Unix-строками.

  • Форматирование управляющих последовательностей Unicode в верхнем регистре (если присутствуют).

  • Удаляет пустые строки и комментарии.

  • Сортировка строк по ключам.

  • Исключение повторяющихся строк.

Удаление устаревших комментариев

ID надстройки:

weblate.removal.comments

Конфигурация:

age

Дни для сохранения

Запуск:

Дадатак уžо ŭсталиавани!, Daily

Устанавливает сроки удаления комментариев.

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

Удаление устаревших предложений

ID надстройки:

weblate.removal.suggestions

Конфигурация:

age

Дни для сохранения

votes

Порог голосования

Порог для удаления. Это поле не действует при отключённом голосовании.

Запуск:

Дадатак уžо ŭсталиавани!, Daily

Устанавливает сроки удаления предложений.

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

Обновление файлов RESX

ID надстройки:

weblate.resx.update

Конфигурация:

Эта надстройка не имеет конфигурации.

Запуск:

Дадатак уžо ŭсталиавани!, Застарели репазиторий.

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

Подсказка

Если вы хотите только удалить устаревшие ключи перевода, используйте надстройку Очистка файлов перевода.

Slack Webhooks

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

ID надстройки:

weblate.webhook.slack

Конфигурация:

webhook_url

URL вебхука

events

Изменить события

Доступные варианты:

0 – Resource updated

1 – Translation completed

2 – Translation changed

3 – Comment added

4 – Suggestion added

5 – Translation added

6 – Automatically translated

7 – Suggestion accepted

8 – Translation reverted

9 – Translation uploaded

13 – Source string added

14 – Component locked

15 – Component unlocked

17 – Changes committed

18 – Changes pushed

19 – Repository reset

20 – Repository merged

21 – Repository rebased

22 – Repository merge failed

23 – Repository rebase failed

24 – Parsing failed

25 – Translation removed

26 – Suggestion removed

27 – Translation replaced

28 – Repository push failed

29 – Suggestion removed during cleanup

30 – Source string changed

31 – String added

32 – Bulk status changed

33 – Visibility changed

34 – User added

35 – User removed

36 – Translation approved

37 – Marked for edit

38 – Component removed

39 – Project removed

41 – Project renamed

42 – Component renamed

43 – Moved component

45 – Contributor joined

46 – Announcement posted

47 – Alert triggered

48 – Language added

49 – Language requested

50 – Project created

51 – Component created

52 – User invited

53 – Repository notification received

54 – Translation replaced file by upload

55 – License changed

56 – Contributor license agreement changed

57 – Screenshot added

58 – Screenshot uploaded

59 – String updated in the repository

60 – Add-on installed

61 – Add-on configuration changed

62 – Add-on uninstalled

63 – String removed

64 – Comment removed

65 – Comment resolved

66 – Explanation updated

67 – Category removed

68 – Category renamed

69 – Category moved

70 – Saving string failed

71 – String added in the repository

72 – String updated in the upload

73 – String added in the upload

74 – Translation updated by source upload

75 – Component translation completed

76 – Applied enforced check

77 – Propagated change

78 – File uploaded

79 – Extra flags updated

Запуск:

Event change

Sends notification to a Slack channel based on selected events.

Предупреждение

The notification content might show HTML tags. This is a known issue that will be soon addressed; see https://github.com/WeblateOrg/weblate/issues/15056.

Подсказка

To obtain a webhook URL, follow the steps outlined in the Slack Incoming Webhooks documentation

Вебхук

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

ID надстройки:

weblate.webhook.webhook

Конфигурация:

webhook_url

URL вебхука

secret

Секрет

A Base64 encoded string

events

Изменить события

Доступные варианты:

0 – Resource updated

1 – Translation completed

2 – Translation changed

3 – Comment added

4 – Suggestion added

5 – Translation added

6 – Automatically translated

7 – Suggestion accepted

8 – Translation reverted

9 – Translation uploaded

13 – Source string added

14 – Component locked

15 – Component unlocked

17 – Changes committed

18 – Changes pushed

19 – Repository reset

20 – Repository merged

21 – Repository rebased

22 – Repository merge failed

23 – Repository rebase failed

24 – Parsing failed

25 – Translation removed

26 – Suggestion removed

27 – Translation replaced

28 – Repository push failed

29 – Suggestion removed during cleanup

30 – Source string changed

31 – String added

32 – Bulk status changed

33 – Visibility changed

34 – User added

35 – User removed

36 – Translation approved

37 – Marked for edit

38 – Component removed

39 – Project removed

41 – Project renamed

42 – Component renamed

43 – Moved component

45 – Contributor joined

46 – Announcement posted

47 – Alert triggered

48 – Language added

49 – Language requested

50 – Project created

51 – Component created

52 – User invited

53 – Repository notification received

54 – Translation replaced file by upload

55 – License changed

56 – Contributor license agreement changed

57 – Screenshot added

58 – Screenshot uploaded

59 – String updated in the repository

60 – Add-on installed

61 – Add-on configuration changed

62 – Add-on uninstalled

63 – String removed

64 – Comment removed

65 – Comment resolved

66 – Explanation updated

67 – Category removed

68 – Category renamed

69 – Category moved

70 – Saving string failed

71 – String added in the repository

72 – String updated in the upload

73 – String added in the upload

74 – Translation updated by source upload

75 – Component translation completed

76 – Applied enforced check

77 – Propagated change

78 – File uploaded

79 – Extra flags updated

Запуск:

Event change

Sends notifications to external services based on selected events, following the Standard Webhooks specification.

The request payload complies with the Weblate Messaging schema. The OpenAPI description can also be found at /api/docs/. Sample request body:

{
   "change_id": 99,
   "action": "Translation changed",
   "timestamp": "2019-08-24T14:15:22Z",
   "target": "Nazdar svete!",
   "old": "Nazdar!",
   "source": "Hello, world",
   "url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
   "author": "author-username",
   "user": "user-username",
   "project": "project-slug",
   "component": "component-slug",
   "translation": "cs"
}

Sample request body with categories:

{
   "change_id": 8910,
   "action": "Component renamed",
   "timestamp": "2025-06-11T07:15:09Z",
   "target": ["new-name"],
   "old": ["component-slug"],
   "url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
   "user": "testuser",
   "project": "project-slug",
   "component": "component-slug",
   "category": [
      "sub-category",
      "child-category",
      "parent-category"
   ]
}

Sample request headers:

{
   "webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
   "webhook-timestamp": "1748505623.044281",
   "webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}

The webhook-signature is a space separated list of HMAC signatures generated using the secret string, the request payload, the webhook-timestamp, and the webhook-id. This ensures the authenticity and integrity of the webhook request.

To verify a request, you can use the Webhook.verify method from the standardwebhooks library or an implementation of the «Standard Webhooks Specification».

Настройка вывода XML

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

ID надстройки:

weblate.xml.customize

Конфигурация:

closing_tags

Включать закрывающую метку для пустых XML меток

Запуск:

Дасвиедčани каристаĺник

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

Настройка вывода в YAML

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

from weblate.addons.events import AddonEvent
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events: set[AddonEvent] = {
        AddonEvent.EVENT_PRE_COMMIT,
    }
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long description
    verbose = gettext_lazy("Execute script before commit")
    description = gettext_lazy("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

Ветка репозитория, настроенная для текущего компонента.

WL_FILEMASK

Маска файлов для текущего компонента.

WL_TEMPLATE

Имя файла шаблона для одноязычных переводов (может быть пустым).

WL_NEW_BASE

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

WL_FILE_FORMAT

Формат файла, используемый в текущем компоненте.

WL_LANGUAGE

Язык обрабатываемого в данный момент перевода (недоступен для обработчиков уровня компонента).

WL_PREVIOUS_HEAD

Предыдущая HEAD после обновления (доступна только после запуска обработчика «после обновления»).

WL_COMPONENT_SLUG

Плашка компонента, используемая для построения URL-адреса.

WL_PROJECT_SLUG

Плашка проекта, используемая для построения URL-адреса.

WL_COMPONENT_NAME

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

WL_PROJECT_NAME

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

WL_COMPONENT_URL

URL-адрес компонента.

WL_ENGAGE_URL

URL-адрес для присоединения к переводу проекта.

Обработка репозитория после обновления

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

Например, при использовании Gulp это можно сделать следующим кодом:

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

Обработка переводов перед коммитом

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

Перевод передается в виде единственного параметра, содержащего имя файла текущего перевода.

Актиŭнасć конта

Add-on activity log keeps track of the add-on execution and can be used to keep track of add-on activity.

The logs can be pruned after a certain time interval by configuring the ADDON_ACTIVITY_LOG_EXPIRY.