Надстройки¶
Добавлено в версии 2.19.
Надстройки предоставляют способы изменения и автоматизации рабочего процесса перевода. Администратор может добавлять и управлять надстройками из меню Управлять ↓ Надстройки соответствующего компонента перевода.
Подсказка
ы также можете настроить надстройки с помощью API, DEFAULT_ADDONS
, или install_addon
.
Встроенные надстройки¶
Автоматический перевод¶
Добавлено в версии 3.9.
- ID надстройки
weblate.autotranslate.autotranslate
- Конфигурация
mode
Режим автоматического перевода
filter_type
Фильтр поиска
auto_source
Источник автоматического перевода
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 файл.
language_regex
Языковой фильтр
Регулярное выражение для фильтрации файлов перевода при сканировании по файловой маске.
copy_addons
Клонировать дополнения из основного компонента в новые
remove
Удалить компоненты для несуществующих файлов
confirm
Я подтверждаю, что сопоставления выше выглядят правильно
- Надстройка для запуска событий
repository post-update
Автоматически добавляет или удаляет компоненты проекта в соответствии с изменениями файлов в системе контроля версий.
Она срабатывает при каждом обновлении репозитория СКВ, а в остальном её работа аналогична команде управления import_project
. Таким образом, внутри одной системы контроля версий вы можете отслеживать несколько компонентов перевода.
Сопоставление осуществляется с помощью регулярных выражений, что даёт возможность задать достаточно сложную конфигурацию, хотя это и требует некоторого количества начальных знаний. Для распространённых случаев в справочном разделе надстройки можно найти ряд примеров.
Когда вы нажмёте Сохранить, надстройка предварительно покажет найденные компоненты, так что вы сможете проверить, действительно ли такая конфигурация соответствует вашим потребностям:
Подсказка
Надстройка «Обнаружение компонентов» использует Внутренние URL-адреса Weblate. Это удобный способ совместного использования системы контроля версий разными компонентами. Привязать дополнительные компоненты к основному так, чтобы они использовали его локальный репозиторий, можно, задав в качестве Репозиторий исходного кода адрес вида weblate://проект/основной-компонент
(в разделе Управление ↓ Параметры ↓ Система контроля версий) для каждого такого компонента. Это сэкономит не только ваше время на настройку, но и системные ресурсы.
См.также
Массовая правка¶
Добавлено в версии 3.11.
- ID надстройки
weblate.flags.bulk
- Конфигурация
q
Запрос
state
Задаваемое состояние
add_flags
Добавляемые флаги перевода
remove_flags
Удаляемые флаги перевода
add_labels
Добавляемые метки
remove_labels
Удаляемые метки
- Надстройка для запуска событий
обновление компонентов
Позволяет массово править флаги, метки или состояния строк.
Для того чтобы начать автоматизацию расстановки меток, можно найти все строки по запросу NOT has:label
и добавлять нужные метки до тех пор, пока не будет достигнут нужный эффект. Аналогично вы можете выполнять любые другие автоматические операции с метаданными Weblate.
Примеры:
Поисковый запрос |
|
---|---|
Добавляемые метки |
recent |
Поисковый запрос |
|
---|---|
Добавляемые флаги перевода |
|
Пометка неизменённых переводов флагом «На правку»¶
Добавлено в версии 3.1.
- ID надстройки
weblate.flags.same_edit
- Конфигурация
Эта надстройка не имеет конфигурации.
- Надстройка для запуска событий
единица после создания
При импорте новой строки для перевода из системы контроля версий и при её совпадении с исходной строкой она помечается в Weblate флагом «На правку». Особенно это полезно для тех форматов файлов, которые для непереведённых строк хранят исходные строки вместо перевода.
Подсказка
Возможно, вы также захотите ужесточить проверку на наличие изменений в переводе, добавив strict-same
во флаги перевода.
См.также
Пометка новых исходных строк флагом «На правку»¶
- ID надстройки
weblate.flags.source_edit
- Конфигурация
Эта надстройка не имеет конфигурации.
- Надстройка для запуска событий
единица после создания
При импорте новой исходной строки из системы контроля версий она помечается в Weblate флагом «На правку». Таким образом, вы можете легко фильтровать и редактировать исходные строки, добавленные разработчиками.
См.также
Пометка новых переводов флагом «На правку»¶
- ID надстройки
weblate.flags.target_edit
- Конфигурация
Эта надстройка не имеет конфигурации.
- Надстройка для запуска событий
единица после создания
При импорте строки для перевода из системы контроля версий она помечается в Weblate флагом «На правку». Таким образом, вы можете легко фильтровать и редактировать переводы, созданные разработчиками.
См.также
Генератор статистики¶
- ID надстройки
weblate.generate.generate
- Конфигурация
filename
Имя сгенерированного файла
template
Содержание сгенерированного файла
- Надстройка для запуска событий
репозиторий до коммита
Генерирует файл, содержащий детальную информацию о состоянии перевода.
И в качестве имени файла и в качестве его содержимого вы можете использовать шаблоны Django; подробное описание разметки шаблона смотрите в разделе «Шаблонная разметка».
К примеру, сгенерировать файл со сводкой по каждому переводу можно со следующими настройками:
- Имя сгенерированного файла
locale/{{ language_code }}.json
- Содержимое
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
См.также
Генератор псевдолокалей¶
- ID надстройки
weblate.generate.pseudolocale
- Конфигурация
source
Исходные строки
target
Целевой перевод
prefix
Префикс строки
suffix
Суффикс строки
- Надстройка для запуска событий
обновление компонентов, ежедневно
Генерирует дополнительный перевод, автоматически добавляя префикс и суффикс к исходным строкам.
Псевдолокали могут быть полезны для поиска строк, которые небыли подготовлены для локализации должным образом. Это происходит с помощью автоматического изменения всех переводимых исходных строк, дабы те строки, которые не были изменены, было бы достаточно просто заметить при запуске приложения.
Также с помощью этого возможно отследить те строки, чьи локализованные версии могут не уместиться в отведённое под них место и ломать вёрстку.
Подсказка
Хотя вы и можете использовать настоящие языки для проверки, но для этой цели в Weblate уже есть специальные псевдолокали: en_XA и ar_XB.
Подсказка
Вы можете использовать эту надстройку для запуска перевода на новую локаль существующего или похожего языка. Как только вы добавите перевод в компонент, перейдите к надстройке. Пример: Если у вас есть fr и вы хотите начать перевод fr_CA, просто задайте fr в качестве источника, fr_CA в качестве цели, а префикс и суффикс оставьте пустыми.
Удалите надстройку после заполнения нового перевода, чтобы Weblate не смог изменить переводы, сделанные после копирования.
Участники в комментарии¶
- ID надстройки
weblate.gettext.authors
- Конфигурация
Эта надстройка не имеет конфигурации.
- Надстройка для запуска событий
репозиторий до коммита
Обновляет комментарий в заголовке PO-файла, включая в него имена участников и годы их участия.
Заголовок PO-файла будет выглядеть примерно так:
# Michal Čihař <michal@cihar.com>, 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, они будут переносится только на символе переноса строки.
- Надстройка для запуска событий
хранение после загрузки
Позволяет настроить поведение вывода 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
Использовать неточное соответствие
- Надстройка для запуска событий
repository post-update
Обновляет все PO-файлы (в соответствии с масками файлов) так, чтобы они соответствовали POT-файлу (заданному шаблоном для новых переводов) с помощью msgmerge.
Это происходит всякий раз, когда новые изменения извлекаются из вышестоящего репозитория. Большинство параметров командной строки msgmerge можно задать в настройках.
Уплотнение Git-коммитов¶
- ID надстройки
weblate.git.squash
- Конфигурация
squash
Уплотнение коммитов
append_trailers
Добавлять завершители в конец сообщения уплотнённого коммита
Строки завершителя — это строки, похожие на заголовки электронной почты RFC 822, добавляемые в конец сообщения коммита после его части в свободной форме. К примеру, «Co-authored-by: …».
commit_message
Сообщение коммита
Это сообщение коммита будет использоваться вместо сообщения, собранного из уплотнённых коммитов.
- Надстройка для запуска событий
репозиторий после коммита
Уплотняет (squash) Git-коммиты перед отправкой изменений.
Git-коммиты могут быть уплотнены перед отправкой изменений в одном из следующих режимов:
Добавлено в версии 3.4.
Все коммиты в один
По языку
По файлу
Добавлено в версии 3.5.
По автору
Исходные сообщения коммита сохраняются, но авторство коммитов теряется, если только не выбран режим По автору, или сообщение коммита не настроено на включение в него его авторов.
Добавлено в версии 4.1.
Исходные сообщения коммитов могут быть переопределены пользовательским сообщением коммита.
Дополнительно из исходных сообщений коммитов могут быть удалены завершители (строки коммита вида Co-authored-by: …
) с последующим их присоединением к концу сообщения уплотнённого коммита. Также в этом режиме для каждого переводчика генерируется соответствующий завершитель Co-authored-by:
.
Настройка вывода в JSON¶
- ID надстройки
weblate.json.customize
- Конфигурация
sort_keys
Сортировка JSON-ключей
indent
Отступы JSON
- Надстройка для запуска событий
хранение после загрузки
Позволяет подправить поведение вывода в JSON, например, отступы или сортировку ключей.
Форматирование файла свойств Java¶
- ID надстройки
weblate.properties.sort
- Конфигурация
Эта надстройка не имеет конфигурации.
- Надстройка для запуска событий
репозиторий до коммита
Сортирует файл свойств Java.
Удаление устаревших комментариев¶
Добавлено в версии 3.7.
- ID надстройки
weblate.removal.comments
- Конфигурация
age
Дни для сохранения
- Надстройка для запуска событий
ежедневно
Устанавливает сроки удаления комментариев.
Может быть полезна для удаления старых комментариев, которые могли потерять актуальность. Используйте её с осторожностью, поскольку то, что комментарий старый, не означает, что он потерял свою значимость.
Удаление устаревших предложений¶
Добавлено в версии 3.7.
- ID надстройки
weblate.removal.suggestions
- Конфигурация
age
Дни для сохранения
votes
Порог голосования
Порог для удаления. Это поле не действует при отключённом голосовании.
- Надстройка для запуска событий
ежедневно
Устанавливает сроки удаления предложений.
В сочетании с голосованием по предложениям (смотрите раздел Коллегиальное рецензирование) может быть очень полезна для удаления предложений, которые не получили достаточного количества положительных голосов в заданный промежуток времени.
Обновление файлов RESX¶
Добавлено в версии 3.9.
- ID надстройки
weblate.resx.update
- Конфигурация
Эта надстройка не имеет конфигурации.
- Надстройка для запуска событий
repository post-update
Обновляет все файлы перевода, приводя их в соответствие с одноязычным исходным базовым файлом. Неиспользуемые строки удаляются, а новые добавляются как копии исходных строк.
Подсказка
Если вы хотите только удалить устаревшие ключи перевода, используйте надстройку Очистка файлов перевода.
Настройка вывода в YAML¶
Добавлено в версии 3.10.2.
- ID надстройки
weblate.yaml.customize
- Конфигурация
indent
Отступы YAML
width
Перенос длинных строк
line_break
Символ перевода строки
- Надстройка для запуска событий
хранение после загрузки
Позволяет подправить поведение вывода в YAML, например, длину строк и символы перевода строк.
Настройка списка надстроек¶
Список надстроек настраивается параметром WEBLATE_ADDONS
. Для добавления ещё одной надстройки просто включите в этот параметр полное имя класса.
Создание надстройки¶
Также вы можете создать свою собственную надстройку: просто создайте подкласс weblate.addons.base.BaseAddon
, чтобы определить метаданные надстройки, а затем реализуйте нужный обратный вызов, который будет выполнять обработку.
См.также
Выполнение скриптов из надстройки¶
Надстройки также могут использоваться для выполнения внешних скриптов. Раньше выполнение было интегрировано в сам Weblate, но теперь вам нужно написать код для заворачивания вашего скрипта в надстройку.
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""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 addon 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
Обработка переводов перед коммитом¶
Используйте скрипт коммита для автоматического внесения изменений в какой-либо перевод перед их коммитом в репозиторий.
Перевод передается в виде единственного параметра, содержащего имя файла текущего перевода.