Надстройки

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

Надстройки предоставляют способы изменения и автоматизации рабочего процесса перевода. Администратор может добавлять и управлять надстройками из меню УправлятьНадстройки соответствующего компонента перевода.

Подсказка

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

../_images/addons.png

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

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

Добавлено в версии 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. Таким образом, внутри одной системы контроля версий вы можете отслеживать несколько компонентов перевода.

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

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

../_images/addon-discovery.png

Подсказка

Надстройка «Обнаружение компонентов» использует Внутренние 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.

Примеры:

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

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

NOT has:label

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

recent

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

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

language:en AND key:changelogs/

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

read-only

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

Добавлено в версии 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 descrption
    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

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

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

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