Дополнения¶
Дополнения предоставляют способы изменения и автоматизации рабочего процесса перевода. Администратор может добавлять и управлять дополнениями из меню Операции ↓ Дополнения соответствующего проекта перевода или компонента. Дополнения также можно установить на весь сайт в Интерфейс управления.
Подсказка
Вы также можете настроить надстройки с помощью API, DEFAULT_ADDONS или install_addon.
Дополнения, которые поддерживают ручной запуск, можно запустить из управления надстройками или с помощью API. Результаты записываются в журнал активности дополнений.
События, запускающие надстройки¶
Установка надстройки¶
Срабатывает при установке надстройки.
Обновление компонента¶
Происходит, когда вносится изменение в компонент. Например:
Строки изменяются в репозитории.
Строка добавлена.
Добавлен новый перевод.
Ежедневно¶
Запускается ежедневно, но надстройки обычно распределяют ежедневную нагрузку между компонентами в зависимости от BACKGROUND_TASKS.
Изменение события¶
Срабатывает сразу после создания события изменения.
Ручной запуск¶
Срабатывает, когда надстройка запускается вручную из управления надстройками или API.
Репозиторий после добавления¶
Срабатывает сразу после добавления и фиксации нового перевода.
Репозиторий после коммита¶
Срабатывает сразу после внесения изменений.
Репозиторий после отправки¶
Срабатывает сразу после того, как репозиторий был отправлен в вышестоящий.
Репозиторий после удаления¶
Запускается сразу после удаления перевода.
Репозиторий после обновления¶
Срабатывает всякий раз, когда из вышестоящего репозитория извлекаются новые изменения.
Предварительная коммитация репозитория¶
Срабатывает непосредственно перед фиксацией изменений.
Репозиторий перед отправкой¶
Срабатывает непосредственно перед отправкой репозитория в вышестоящий.
Репозиторий перед обновлением¶
Срабатывает непосредственно перед попыткой обновления репозитория.
Единица перевода после сохранения¶
Срабатывает сразу после сохранения строки.
Последующая синхронизация блока¶
Запускается после синхронизации строки с СКВ.
Единица перевода перед созданием¶
Срабатывает сразу после сохранения вновь созданной строки.
Встроенные надстройки¶
Автоматический перевод¶
- ID надстройки:
weblate.autotranslate.autotranslate- Конфигурация:
modeРежим автоматического перевода
Доступные варианты:¶ suggestДобавить как предложение
translateДобавить как перевод
fuzzyДобавить с пометкой «На правку»
qЗапрос
Пожалуйста, имейте ввиду, что перевод всех строк отменит все существующие переводы.
auto_sourceИсточник автоматических переводов
Доступные варианты:¶ othersДругие компоненты перевода
mtМашинный перевод
componentКомпонент
Введите плашку компонента для использования в качестве источника, для использования всех компонентов в текущем проекте — оставьте пустым.
enginesМеханизмы машинного перевода
thresholdПорог оценки
- Запуск:
Установка надстройки, Обновление компонента, Ежедневно, Изменение события
Автоматически переводит строки при помощи машинного перевода или других компонентов.
CDN локализации JavaScript¶
Добавлено в версии 4.2.
- ID надстройки:
weblate.cdn.cdnjs- Конфигурация:
thresholdПорог перевода
Необходимый процент переведённых строк для включения перевода.
css_selectorСелектор CSS
Селектор CSS для обнаружения локализуемых элементов.
cookie_nameИмя языковой куки
Имя куки, в которой сохраняется предпочитаемый язык.
filesИзвлечение строк из HTML-файлов
Список имён файлов в текущем репозитории или URL-адреса, которые нужно разобрать для извлечения переводимых строк.
- Запуск:
Установка надстройки, Ежедневно, Репозиторий после коммита, Репозиторий после удаления, Репозиторий после обновления
Публикует переводы в сеть доставки контента для использования в локализации 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/.
Translation files CDN¶
Добавлено в версии 2026.5.
- ID надстройки:
weblate.cdn.files- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Установка надстройки, Обновление компонента, Репозиторий после коммита, Репозиторий после удаления, Репозиторий после обновления
Publishes translation files into a content delivery network.
Publishes translation files without converting them to another format. Files
are written below the add-on specific CDN directory and served from
LOCALIZE_CDN_URL/<add-on UUID>/. Single-file translations use the language
code and original file extension, for example cs.json or de.po.
Multi-file translations are served below the language code using paths relative
to the translation directory. Monolingual components include the source
language file, while bilingual components publish only target-language files.
See CDN локализации for secure serving guidance.
Удаление пустых строк¶
Добавлено в версии 4.4.
- ID надстройки:
weblate.cleanup.blank- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Установка надстройки, Репозиторий после коммита, Репозиторий после обновления
Удаляет из файлов перевода строки без перевода.
Используйте эту надстройку, чтобы пустые строки не попадали в файлы перевода (например, в случае, если ваша библиотека локализации отображает их как отсутствующие вместо того, чтобы подставлять исходные).
Очистка файлов перевода¶
- ID надстройки:
weblate.cleanup.generic- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Установка надстройки, Репозиторий после обновления, Предварительная коммитация репозитория
Обновите все файлы перевода, чтобы они соответствовали одноязычному базовому файлу. Для большинства форматов файлов это означает удаление устаревших ключей перевода, которые больше не присутствуют в базовом файле.
Для форматов, содержащих дополнительный контент помимо строк перевода (таких как Файлы HTML, Файлы ресурсов Windows или Формат OpenDocument), это также синхронизирует файл перевода с базовым файлом.
Добавить отсутствующие языки¶
- ID надстройки:
weblate.consistency.languages- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Установка надстройки, Ежедневно, Репозиторий после добавления
Гарантирует использование согласованного набора языков для всех компонентов в проекте.
Примечание
Компоненты, используемые совместно из других проектов, здесь не учитываются.
Отсутствующие языки проверяются каждые 24 часа и при добавлении нового языка через Weblate.
В отличие от большинства других надстроек, эта влияет на весь проект.
Подсказка
Автоматически переводите новые добавленные строки с помощью надстройки Автоматический перевод.
Обнаружение компонентов¶
- ID надстройки:
weblate.discovery.discovery- Конфигурация:
matchРегулярное выражение для сопоставления с файлами перевода
Регулярное выражение должно определять именованные группы для компонента и языка.
file_formatФормат файла
name_templateНастроить название компонента
Использовать синтаксис шаблонов Django. Этот шаблон должен включать {{ component }}.
base_file_templateЗадать имя базового одноязычного файла
Оставьте пустым для двуязычных файлов перевода. При установке этот шаблон должен включать {{ component }}.
new_base_templateЗадать базовый файл для нового перевода
Имя файла, используемого для создания новых переводов. Для gettext выберите файл .pot. Этот шаблон должен включать {{ component }}.
intermediate_templateФайл промежуточного языка
Имя файла промежуточного перевода. В большинстве случаев это файл перевода, предоставляемый разработчиками и используемый при создании исходных строк. Этот шаблон должен включать {{ component }}.
language_regexЯзыковой фильтр
Регулярное выражение для фильтрации файлов перевода при сканировании по файловой маске.
copy_addonsКлонировать дополнения из основного компонента в новые
removeУдалить компоненты для несуществующих файлов
- Запуск:
Автоматически добавляет или удаляет компоненты проекта в соответствии с изменениями файлов в системе контроля версий.
Сопоставление выполняется с помощью регулярных выражений, что позволяет создавать сложные конфигурации, но для этого требуются некоторые знания. Регулярное выражение для сопоставления файлов переводов должно содержать две именованные группы для сопоставления компонента и языка. Все именованные группы в регулярном выражении могут использоваться как переменные в полях шаблона.
Требования к обнаружению¶
Чтобы успешно обнаружить компонент, конфигурация должна выполнить всё следующее:
Регулярное выражение должно определять именованные группы
componentиlanguage.Поля шаблона, используемые для именования или поиска файлов для каждого компонента, должны включать
{{ component }}, чтобы обработанное значение фактически изменялось для каждого обнаруженного компонента.Для одноязычных форматов компонент должен содержать файл, соответствующий
base_file_template, и по крайней мере один файл перевода, соответствующийmatch.
Рабочий пример: news_<lang>.md¶
Это распространённый макет языковых вариантов на основе имени файла:
docs/news_en.mddocs/news_cs.mddocs/guide_en.md
Используйте предустановку Языковые варианты на основе имени файла в качестве отправной точки, затем выберите соответствующий формат файла и проверьте заполненные значения.
- Регулярное выражение:
(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)- Название компонента:
{{ component }}- Обнаруженные маски файлов:
docs/news_*.mddocs/guide_*.md
В этом примере {{ component }} преобразуется в базовое имя перед суффиксом языка, поэтому docs/news_en.md, docs/news_pt_BR.md и docs/news_pt-BR.md становятся компонентом news.
Вы можете использовать разметку шаблонов Django в имени файла и содержании, например:
{{ component }}Имя компонента, извлечённое из группы соответствия
component{{ component|title }}Имя файла компонента с заглавной первой буквой
{{ path }}: {{ component }}Пользовательская группа совпадений из регулярного выражения
Когда вы нажмёте Сохранить, надстройка предварительно покажет найденные компоненты, так что вы сможете проверить, действительно ли такая конфигурация соответствует вашим потребностям:
Примеры обнаружения компонентов¶
Приведённый выше пример охватывает наиболее распространённый макет вариантов на основе имени файла. Следующие примеры показывают другие структуры репозитория, которые вы можете сопоставить.
По одной папке на каждый язык¶
Одна папка на язык, содержащая файл перевода для компонентов.
- Регулярное выражение:
(?P<language>[^/.]*)/(?P<component>[^/]*)\.po- Соответствующие файлы:
cs/application.pocs/website.pode/application.pode/website.po
Получение раскладки локалей текста¶
Обычная структура для хранения gettext PO-файлов.
- Регулярное выражение:
locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po- Соответствующие файлы:
locale/cs/LC_MESSAGES/application.polocale/cs/LC_MESSAGES/website.polocale/de/LC_MESSAGES/application.polocale/de/LC_MESSAGES/website.po
Сложные имена файлов¶
В имени файла используются имена компонента и языка.
- Регулярное выражение:
src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po- Соответствующие файлы:
src/locale/application.cs.posrc/locale/website.cs.posrc/locale/application.de.posrc/locale/website.de.po
Повторный языковой код¶
В пути и имени файла используется язык.
- Регулярное выражение:
locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po- Соответствующие файлы:
locale/cs/application/cs.polocale/cs/website/cs.polocale/de/application/de.polocale/de/website/de.po
Разделить строки Android¶
Строки ресурсов Android, разбитые на несколько файлов.
- Регулярное выражение:
res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml- Соответствующие файлы:
res/values-cs/strings-about.xmlres/values-cs/strings-help.xmlres/values-de/strings-about.xmlres/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.propertiesparent/module1/submodule/src/main/resources/ApplicationResource_es.propertiesparent/module2/src/main/resources/ApplicationResource_de.propertiesparent/module2/src/main/resources/ApplicationResource_ro.properties
Подсказка
Надстройка «Обнаружение компонентов» использует Внутренние URL-адреса Weblate. Это удобный способ совместного использования системы контроля версий разными компонентами. Привязать дополнительные компоненты к основному так, чтобы они использовали его локальный репозиторий, можно, задав в качестве Репозиторий исходного кода адрес вида weblate://проект/основной-компонент (в разделе Опервции ↓ Параметры ↓ Система контроля версий) для каждого такого компонента. Это сэкономит не только ваше время на настройку, но и системные ресурсы.
Подсказка
Убедитесь, что новый компонент содержит полный набор переводимых языков с помощью Добавить отсутствующие языки.
См. также
Обмен сообщениями в Fedora¶
Добавлено в версии 5.15.
- ID надстройки:
weblate.fedora_messaging.publish- Конфигурация:
eventsИзменить события
amqp_hostХост брокера AMQP
Брокер AMQP для подключения.
amqp_sslБрокер AMQP для подключения
ca_certСертификаты ЦС
Набор сертификатов ЦС, закодированных с помощью PEM, используемых для проверки сертификата, представленного сервером.
client_keySSL-ключ клиента
PEM-кодированный частный SSL-ключ клиента.
client_certКлиентские SSL-сертификаты
PEM-шифрованный клиентский SSL-сертификат.
- Запуск:
Отправляет уведомления в AMQP-обменник, совместимый с обменом сообщений Fedora.
Fedora Messaging - это основанный на AMQP издатель всех изменений, происходящих в Weblate. С его помощью вы можете подключать дополнительные сервисы к изменениям, происходящим в Weblate.
Тема сообщения¶
Все сообщения имеют тему weblate.<action>.<project>.<component>.<translation>. Действие — это текстовое представление действия в нижнем регистре с подчёркиваниями вместо пробелов, например resource_update, все остальные части являются необязательными и представляют собой плашку объекта или код языка.
Тело сообщения¶
Тело состоит из следующих полей (при условии, что они доступны для события):
change_idКоĺкасć моŭ
actionПодробное описание изменения.
timestampВременная метка в формате ISO
targetНовое значение изменения (например, новый перевод строки)
oldКоĺкасć пиеракладзиенич радкоŭ
sourceИсходная строка.
urlАбсолютный URL-адрес для просмотра связанного объекта.
authorИмя пользователя автора (может отличаться от пользователя, например, при принятии предложений)
userИмя пользователя, выполняющего действие
projectПлашка проекта
componentПлашка компонента
translationКод языка перевода
Заголовки сообщения¶
Существуют дополнительные заголовки, которые вы также можете использовать для маршрутизации:
actionПодробное описание изменения.
projectПлашка проекта
componentПлашка компонента
Примеры сообщений¶
Событие слияния репозитория:
{
"id": 1,
"action": "Merged repository",
"timestamp": "2017-06-15T11:30:47.325000+00:00",
"url": "http://example.com/projects/test/test/",
"component": "test"
}
Событие новой исходной строки:
{
"id": 2,
"action": "New source string",
"timestamp": "2017-06-15T11:30:47.372000+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Событие обновления ресурса:
{
"id": 6,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.410000+00:00",
"url": "http://example.com/projects/test/test/cs/",
"project": "test",
"component": "test",
"translation": "cs"
}
{
"id": 7,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.510000+00:00",
"url": "http://example.com/projects/test/test/de/",
"project": "test",
"component": "test",
"translation": "de"
}
{
"id": 8,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.595000+00:00",
"url": "http://example.com/projects/test/test/it/",
"project": "test",
"component": "test",
"translation": "it"
}
Событие удаления проекта:
{
"id": 9,
"action": "Removed project",
"timestamp": "2019-10-17T15:57:08.559420+00:00",
"target": "test",
"user": "testuser"
}
Событие нового участника:
{
"id": 11,
"action": "New contributor",
"timestamp": "2019-10-17T15:57:08.759960+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"author": "testuser",
"user": "testuser",
"project": "test",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Событие нового перевода:
{
"id": 12,
"action": "New translation",
"timestamp": "2019-10-17T15:57:08.772591+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"target": ["Ahoj svete!\n"],
"author": "testuser",
"user": "testuser",
"project": "test",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
См. также
Массовая правка¶
- ID надстройки:
weblate.flags.bulk- Конфигурация:
qЗапрос
stateЗадаваемое состояние
Доступные варианты:¶ -1Не изменять
10На правку
11На правку (на перепись)
12На правку (на проверку)
20Переведено
30Одобрено
add_flagsДобавляемые флаги перевода
remove_flagsУдаляемые флаги перевода
add_labelsДобавляемые метки
remove_labelsУдаляемые метки
- Запуск:
Позволяет массово править флаги, метки или состояния строк.
Примеры:
Поисковый запрос |
|
|---|---|
Добавляемые метки |
recent |
Поисковый запрос |
|
|---|---|
Добавляемые флаги перевода |
|
Поисковый запрос |
|
|---|---|
Добавляемые флаги перевода |
|
Пометка неизменённых переводов флагом «На перепись»¶
- ID надстройки:
weblate.flags.same_edit- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
При импорте новой строки для перевода из системы контроля версий и при её совпадении с исходной строкой она помечается в Weblate флагом «На перепись». Особенно это полезно для тех форматов файлов, которые для непереведённых строк хранят исходные строки вместо перевода.
Подсказка
Вы также можете ужесточить проверку Перевод без изменения, добавив флаг strict-same в Флаги перевода.
См. также
Пометка новых исходных строк флагом «На проверку»¶
- ID надстройки:
weblate.flags.source_edit- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
При импорте новой исходной строки из системы контроля версий она помечается в Weblate флагом «На проверку». Таким образом, вы можете легко фильтровать и изменять исходные строки, добавленные разработчиками.
См. также
Пометка новых переводов флагом «На перепись»¶
- ID надстройки:
weblate.flags.target_edit- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
При импорте строки для перевода из системы контроля версий она помечается в Weblate флагом «На перепись». Таким образом, вы можете легко фильтровать и изменять переводы, созданные разработчиками.
См. также
Пометка обновлённых переводов из репозитория «На перепись»¶
- ID надстройки:
weblate.flags.target_repo_update- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Всякий раз, когда перевод строки изменяется в системе контроля версий (VCS), она помечается в Weblate флагом «На перепись». Это особенно полезно, если файлы перевода часто обновляются вручную или с использованием внешнего сервиса.
См. также
Заполните строки, доступные только для чтения, исходным кодом¶
Добавлено в версии 4.18.
- ID надстройки:
weblate.generate.fill_read_only- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Заполняет перевод строк, доступных только для чтения, исходной строкой.
Генератор статистики¶
- 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- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Заполняет перевод используя исходные строки.
Все непереведённые строки в компоненте будут заполнены исходной строкой и помечены как требующие правки. Используйте это, когда в файлах переводов не может быть пустых строк. .. АВТОГЕНЕРИРОВАННОЕ НАЧАЛО: weblate.generate.pseudolocale .. Этот раздел автоматически генерируется с помощью ./manage.py list_addons. Не редактируйте вручную.
Генератор псевдолокалей¶
Добавлено в версии 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» при добавлении или удалении перевода.
Обновляет переменную ALL_LINGUAS в файлах configure, configure.in или любых файлах configure.ac, когда перевод добавляется или удаляется.
Настройка вывода gettext¶
Удалено в версии 5.13: Заменено на Параметры формата файла.
Update gettext template (Django)¶
Добавлено в версии 5.17.
- ID надстройки:
weblate.gettext.django- Конфигурация:
intervalЧастота обновления
Как часто дополнение должно обновлять файл POT при обновлении компонента.
Доступные варианты:¶ dailyЕжедневно
weeklyЕженедельное
monthlyЕжемесячно
normalize_headerНормализация заголовка POT
Обновляет заголовки gettext и заменяет комментарии-заполнители в файлах POT.
- Запуск:
Установка надстройки, Ручной запуск, Репозиторий после обновления
Обновляет шаблон gettext с помощью встроенной в Django команды makemessages.
Обновление файла LINGUAS¶
- ID надстройки:
weblate.gettext.linguas- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Установка надстройки, Ежедневно, Репозиторий после добавления, Репозиторий после удаления
Обновляет файл LINGUAS при добавлении или удалении перевода.
Обновление файла POT (Meson)¶
Добавлено в версии 5.17.
- ID надстройки:
weblate.gettext.meson- Конфигурация:
intervalЧастота обновления
Как часто дополнение должно обновлять файл POT при обновлении компонента.
Доступные варианты:¶ dailyЕжедневно
weeklyЕженедельное
monthlyЕжемесячно
normalize_headerНормализация заголовка POT
Обновляет заголовки gettext и заменяет комментарии-заполнители в файлах POT.
comment_modeКомментарии к коду
Выберите, следует ли xgettext извлекать никаких комментариев, все комментарии или только комментарии, помеченные определённым тегом.
Доступные варианты:¶ offНе извлекать комментарии
allИзвлечь все комментарии
taggedИзвлекает комментарии с тегом
comment_tagТег комментария
Тег, передаваемый в xgettext для извлечения комментариев при использовании режима тегированных комментариев.
checksПроверки xgettext
Дополнительные проверки xgettext, которые необходимо включить для извлеченных сообщений.
Доступные варианты:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
keywordДополнительное ключевое слово
Дополнительное ключевое слово, передаваемое в xgettext с помощью параметра –keyword.
presetПредустановка Meson
Встроенная предустановка аргументов xgettext, соответствующая интеграции gettext в Meson. Предварительный набор GLib добавляет параметры ключевых слов и флага формата, используемые помощником gettext в Meson.
Доступные варианты:¶ glibGLib
- Запуск:
Установка надстройки, Ручной запуск, Репозиторий после обновления
Обновляет шаблон gettext, используя соглашения Meson gettext.
Создание MO-файлов¶
- ID надстройки:
weblate.gettext.mo- Конфигурация:
pathПуть к сгенерированному MO-файлу
Если не указано, будет использовано расположение PO-файла.
fuzzyВключить строки с флагом «На правку»
Строки с флагом «На правку», обычно не готовы к использованию в качестве переводов.
- Запуск:
Автоматически генерирует MO-файл для каждого изменённого PO-файла.
В соответствующем поле можно задать местоположение сгенерированного MO-файла. Формат этого поля — Шаблонная разметка.
Примечание
При удалении перевода его PO-файл будет удалён из репозитория, а MO-файл, созданный этим дополнением, - нет. MO-файл должен быть удалён из репозитория вручную.
Обновлять PO-файлы до соответствия POT (msgmerge)¶
Изменено в версии 5.13: Конфигурация Настройки была перенесена в Параметры формата файла.
- ID надстройки:
weblate.gettext.msgmerge- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Обновляет все PO-файлы (соответствующие «Маске файла»), используя msgmerge и приводя их в соответствие с POT-файлом (указанным в «Шаблоне для новых переводов»).
Эта надстройка необходима при работе с файлами gettext PO, где POT-файл (шаблон) обновляется новыми строками или изменениями существующих строк. Когда POT-файл обновляется в репозитории, эта надстройка автоматически объединяет эти изменения во все языковые PO-файлы, гарантируя, что:
Новые переводимые строки появляются на всех языках
Удалённые строки помечаются как устаревшие
Изменённые строки помечаются как требующие рецензирования (нечёткие)
Большинство параметров командной строки msgmerge можно настроить через параметры формата файла.
Обновление файла POT (Sphinx)¶
Добавлено в версии 5.17.
- ID надстройки:
weblate.gettext.sphinx- Конфигурация:
intervalЧастота обновления
Как часто дополнение должно обновлять файл POT при обновлении компонента.
Доступные варианты:¶ dailyЕжедневно
weeklyЕженедельное
monthlyЕжемесячно
normalize_headerНормализация заголовка POT
Обновляет заголовки gettext и заменяет комментарии-заполнители в файлах POT.
filter_modeФильтрация
При необходимости удаляйте строки, которые не являются полезными для перевода после извлечения Sphinx.
Доступные варианты:¶ noneБез имени
weblate_docsДокументация Weblate
- Запуск:
Установка надстройки, Ручной запуск, Репозиторий после обновления
Обновляет шаблон gettext с помощью конструктора gettext от Sphinx без загрузки конфигурации проекта.
Обновление файла POT (xgettext)¶
Добавлено в версии 5.17.
- ID надстройки:
weblate.gettext.xgettext- Конфигурация:
intervalЧастота обновления
Как часто дополнение должно обновлять файл POT при обновлении компонента.
Доступные варианты:¶ dailyЕжедневно
weeklyЕженедельное
monthlyЕжемесячно
normalize_headerНормализация заголовка POT
Обновляет заголовки gettext и заменяет комментарии-заполнители в файлах POT.
comment_modeКомментарии к коду
Выберите, следует ли xgettext извлекать никаких комментариев, все комментарии или только комментарии, помеченные определённым тегом.
Доступные варианты:¶ offНе извлекать комментарии
allИзвлечь все комментарии
taggedИзвлекает комментарии с тегом
comment_tagТег комментария
Тег, передаваемый в xgettext для извлечения комментариев при использовании режима тегированных комментариев.
checksПроверки xgettext
Дополнительные проверки xgettext, которые необходимо включить для извлеченных сообщений.
Доступные варианты:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
keywordДополнительное ключевое слово
Дополнительное ключевое слово, передаваемое в xgettext с помощью параметра –keyword.
input_modeИсходные данные
Выберите, должен ли xgettext читать файлы исходников из глоб-шаблонов или из манифеста POTFILES/POTFILES.in.
Доступные варианты:¶ patternsШаблоны исходных файлов
potfilesМанифест POTFILES
languageЯзык xgettext
Язык программирования, передаваемый в xgettext, например Python или C.
source_patternsШаблоны исходных файлов
Глоб-шаблоны, разделённые новой строкой, относящиеся к репозиторию, для файлов, извлекаемых с помощью xgettext.
potfiles_pathПуть POTFILES
Относительный путь к POTFILES или POTFILES.in в репозитории. Пути определяются относительно корня репозитория. Если файл POTFILES.skip находится рядом с манифестом, он исключает указанные в нём файлы из извлечения.
- Запуск:
Установка надстройки, Ручной запуск, Репозиторий после обновления
Обновляет шаблон gettext с помощью xgettext в выбранных файлах исходников.
Уплотнение Git-коммитов¶
- ID надстройки:
weblate.git.squash- Конфигурация:
squashУплотнение коммитов
Доступные варианты:¶ allВсе коммиты в один
languageПо языку
fileПо файлу
authorПо автору
append_trailersДобавлять завершители в конец сообщения уплотнённого коммита
Строки трейлера это строки, похожие на заголовки электронной почты RFC 822, расположенные в конце свободной части сообщения фиксации, например, «“Co-authored-by: …“».
commit_messageСообщение коммита
Это сообщение коммита будет использоваться вместо сообщения, собранного из уплотнённых коммитов.
- Запуск:
Уплотнение Git-коммитов перед публикацией изменений.
Подсказка
Чтобы избежать ненужных конфликтов, рекомендуется настроить автоматическое получение вышестоящих изменений с помощью веб-обработчиков или API, см. Обновление репозиториев.
Git-коммиты могут быть уплотнены перед отправкой изменений в одном из следующих режимов:
Все коммиты в один
По языку
По файлу
По автору
Исходные сообщения коммита сохраняются, но авторство коммитов теряется, если только не выбран режим По автору, или сообщение коммита не настроено на включение в него его авторов.
Исходные сообщения коммитов могут быть переопределены пользовательским сообщением коммита.
Дополнительно из исходных сообщений коммитов могут быть удалены завершители (строки коммита вида Co-authored-by: …) с последующим их присоединением к концу сообщения уплотнённого коммита. Также в этом режиме для каждого переводчика генерируется соответствующий завершитель Co-authored-by:.
Настройка вывода в JSON¶
Изменено в версии 5.12: Добавлена опция Avoid spaces after separators.
Удалено в версии 5.13: Заменено на Параметры формата файла.
Вернуть сетевое хранилище в исходное состояние¶
Добавлено в версии 5.17.
- ID надстройки:
weblate.hosted.reset- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Отменять все изменения в сетевом хранилище Weblate каждую ночь.
Форматирование файла свойств Java¶
- ID надстройки:
weblate.properties.sort- Конфигурация:
case_sensitiveВключить сортировку ключей с учётом регистра
- Запуск:
Форматирование и сортировка файла свойств Java.
Объединяет новые строки с Unix-строками.
Форматирование управляющих последовательностей Юникода в верхнем регистре (если присутствуют).
Удаляет пустые строки и комментарии.
Сортировка строк по ключам.
Исключение повторяющихся строк.
Удаление устаревших комментариев¶
- ID надстройки:
weblate.removal.comments- Конфигурация:
ageДни для сохранения
- Запуск:
Устанавливает сроки удаления комментариев.
Может быть полезна для удаления старых комментариев, которые могли потерять актуальность. Используйте её с осторожностью, поскольку то, что комментарий старый, не означает, что он потерял свою значимость.
Удаление устаревших предложений¶
- ID надстройки:
weblate.removal.suggestions- Конфигурация:
ageДни для сохранения
votesПорог голосования
Threshold for removal. Leave empty to remove suggestions regardless of votes. This field has no effect with voting turned off.
- Запуск:
Устанавливает сроки удаления предложений.
В сочетании с голосованием по предложениям (смотрите раздел Коллегиальное рецензирование) может быть очень полезна для удаления предложений, которые не получили достаточного количества положительных голосов в заданный промежуток времени.
Обновление файлов RESX¶
- ID надстройки:
weblate.resx.update- Конфигурация:
Эта надстройка не имеет конфигурации.
- Запуск:
Обновляет все файлы перевода, приводя их в соответствие с одноязычным исходным базовым файлом. Неиспользуемые строки удаляются, а новые добавляются как копии исходных строк.
Подсказка
Если вы хотите только удалить устаревшие ключи перевода, используйте надстройку Очистка файлов перевода.
Веб-обработчики Slack¶
Добавлено в версии 5.12.
- ID надстройки:
weblate.webhook.slack- Конфигурация:
webhook_urlURL веб-обработчика
eventsИзменить события
- Запуск:
Отправка уведомления в канал Slack на основе выбранных событий.
Предупреждение
В содержимом уведомления могут присутствовать HTML-теги. Это известная проблема, которая будет вскоре устранена; см. https://github.com/WeblateOrg/weblate/issues/15056.
Подсказка
Чтобы получить URL-адрес веб-обработчика, следуйте инструкциям, описанным в Документации по входящим веб-обработчикам Slack
Веб-обработчик¶
Добавлено в версии 5.11.
Изменено в версии 5.15: Соответствие длины секрета спецификации теперь проверяется.
- ID надстройки:
weblate.webhook.webhook- Конфигурация:
webhook_urlURL веб-обработчика
secretСекретный токен веб-обработчика
Стандартный секретный токен Webhooks - это строка в кодировке base64.
eventsИзменить события
- Запуск:
Отправка уведомлений внешним службам на основе выбранных событий в соответствии со спецификацией Standard WebHooks.
Полезная нагрузка запроса соответствует схеме Weblate Messaging. Описание OpenAPI также можно найти в /api/docs/. Пример текста запроса:
{
"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"
}
Пример текста запроса с категориями:
{
"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"
]
}
Примеры заголовков запроса:
{
"webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
"webhook-timestamp": "1748505623.044281",
"webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}
webhook-signature — это список HMAC-подписей, разделённых пробелами, сгенерированный с использованием строки secret, полезной нагрузки запроса, webhook-timestamp и webhook-id. Это гарантирует подлинность и целостность запроса webhook.
Предоставленный secret — это строка в кодировке base64 размером от 24 байт (192 бит) до 64 байт (512 бит). Для удобной идентификации к нему можно добавить префикс whsec_.
Для проверки запроса можно использовать метод Webhook.verify из библиотеки standardwebhooks или реализацию «Стандартной спецификации веб-обработчиков».
Устаревшие дополнения¶
Настройка вывода XML¶
Добавлено в версии 4.15.
Удалено в версии 5.13: Заменено на Параметры формата файла.
Настройка вывода в YAML¶
Удалено в версии 5.13: Заменено на Параметры формата файла.
Общие параметры дополнений¶
Механизмы машинного перевода¶
|
Alibaba |
|
Amazon Translate |
|
Anthropic |
|
Apertium APy |
|
Azure AI Translator |
|
Azure OpenAI |
|
Baidu |
|
CyrTranslit |
|
DeepL |
|
Glosbe |
|
Расширенный облачный перевод Google |
|
Google Cloud Translation Basic |
|
LTEngine |
|
LibreTranslate |
|
ModernMT |
|
MyMemory |
|
NetEase Sight |
|
Ollama |
|
OpenAI |
|
Центр переводов SAP |
|
Systran |
|
Weblate |
|
Память переводов Weblate |
|
Яндекс |
|
Яндекс v2 |
|
Youdao Zhiyun |
|
tmserver |
Формат файла¶
|
XLIFF 1.2 с расширениями Apple |
|
Файлы метаданных магазина приложений |
|
Файл ARB |
|
Строковый ресурс Android |
|
Файл AsciiDoc |
|
Файл субтитров Advanced SubStation Alpha |
|
Haiku catkeys |
|
Ресурс Compose Multiplatform |
|
Файл CSV |
|
Многозначный CSV-файл |
|
Простой CSV файл |
|
Текстовый файл DokuWiki |
|
Файл DTD |
|
Плоский XML-файл |
|
Файл Fluent |
|
JSON-файл Format.JS |
|
Файл JSON go-i18n v1 |
|
Файл JSON go-i18n v2 |
|
Файл go-i18n TOML |
|
Файл JSON gotext |
|
Файлы свойств GWT |
|
Файл HTML |
|
i18next JSON-файл v3 |
|
Файл JSON i18next v4 |
|
Файл IDML |
|
Файл INI |
|
INI-файл Inno Setup |
|
Языковой файл Joomla |
|
JSON-файл |
|
JSON-файл с вложенной структурой |
|
Строки Laravel PHP |
|
Файл Markdown |
|
Файл MDX |
|
Текстовый файл MediaWiki |
|
Языковой файл @draggable/i18n |
|
Мобильный ресурс Kotlin |
|
Файл Nextcloud JSON |
|
Файл OpenDocument |
|
Строки PHP |
|
Файл перевода XLIFF 1.2 |
|
PO-файл gettext |
|
PO-файл gettext (одноязычный) |
|
XLIFF 1.2 с расширениями gettext |
|
Свойства Java |
|
Файл RC |
|
RESJSON-файл |
|
Файл ResourceDictionary |
|
Файл ресурсов .NET |
|
Файл YAML Ruby |
|
Файл субтитров SubRip |
|
Файл субтитров SubStation Alpha |
|
Строки iOS |
|
Множественный файл |
|
Файл субтитров MicroDVD |
|
Файл TermBase eXchange |
|
Файл TOML |
|
Файл перевода Qt Linguist |
|
Обычный текстовый файл |
|
JSON-файл WebExtension |
|
Файл WixLocalization |
|
XLIFF 1.2 с поддержкой размещаемых файлов |
|
Файл перевода XLIFF 2.0 |
|
XLIFF 2.0 с поддержкой размещаемых файлов |
|
Excel Open XML |
|
Полная страница XWiki |
|
XWiki Java Properties |
|
XWiki Page Properties |
|
Файл 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 __future__ import annotations
from typing import ClassVar
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: ClassVar[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
Обработка переводов перед коммитом¶
Используйте скрипт коммита для автоматического внесения изменений в какой-либо перевод перед их коммитом в репозиторий.
Перевод передается в виде единственного параметра, содержащего имя файла текущего перевода.
Журналирование активности надстроек¶
Журнал активности надстроек отслеживает выполнение надстроек и может использоваться для отслеживания активности надстроек.
Журналы можно очищать по истечении определенного интервала времени, настроив ADDON_ACTIVITY_LOG_EXPIRY.