Надстройки¶
Добавлено в версии 2.19.
Надстройки предоставляют способы настройки рабочего процесса перевода. Они могут быть установлены в виде компонента перевода и работать за кулисами. Управление надстройками доступно для администраторов из меню Управлять ↓ Надстройки соответствующего компонента перевода.
Встроенные надстройки¶
Автоматический перевод¶
Добавлено в версии 3.9.
Автоматически переводит строки при помощи машинного перевода или других компонентов.
Эта надстройка срабатывает автоматически при появлении в компоненте новых строк.
CDN локализации JavaScript’а¶
Добавлено в версии 4.2.
Добавляет CDN локализации для локализации JavaScript’а или HTML’я.
Его можно использовать для локализации статических HTML-страниц или для загрузки локализации в код JavaScript.
После установки надстройка генерирует для вашего компонента уникальный URL-адрес, который вы можете включить в HTML-документы для их локализации. Подробности смотрите в разделе Перевод HTML и JavaScript с помощью сети доставки содержимого Weblate.
Очистка файлов перевода¶
Обновляет все файлы переводов до соответствия одноязычному базовому файлу. Для большинства форматов файлов это означает удаление устаревших ключей переводов, которых больше нет в базовом файле.
Языковая согласованность¶
Гарантирует, что все компоненты в рамках одного проекта имеют переводы на все языки проекта.
Она создаёт пустые переводы на языках, в которые компоненты не добавлены.
Отсутствующие языки проверяются каждые 24 часа и при добавлении нового языка в Weblate.
В отличие от большинства других надстроек, эта влияет на весь проект.
Подсказка
Автоматически переводите новые добавленные строки с помощью надстройки Автоматический перевод.
Обнаружение компонента¶
Автоматически добавляет или удаляет компоненты проекта, основываясь на изменениях файлов в системе контроля версий.
Она срабатывает при каждом обновлении репозитория системы контроля версий, а в остальном её работа аналогична команде управления import_project
. Таким образом, внутри одной системы контроля версий вы можете отслеживать несколько компонентов перевода.
Создайте один основной компонент, который в будущем исчезнет с наименьшей вероятностью; другие компоненты в своей настройке адресов репозитория системы контроля версий будут использовать ведущие на него внутренние адреса Weblate’а; настройте надстройку так, чтобы она нашла все компоненты.
Сопоставление осуществляется с помощью регулярных выражений, сложность конфигурации которых компенсируется их мощью. Для распространённых случаев в справочном разделе надстройки можно найти ряд примеров.
Когда вы нажмёте Сохранить, надстройка предварительно покажет найденные компоненты, так что вы сможете проверить, действительно ли конфигурация соответствует вашим потребностям:
См.также
Массовая правка¶
Добавлено в версии 3.11.
Позволяет массово править флаги, метки или состояния для строк.
Автоматическая пометка новых строк может очень пригодиться (начните с поискового запроса NOT has:label
и добавляйте нужные метки до тех пор, пока все строки не будут правильно помечены). Также вы можете выполнять любые другие автоматические операции с метаданными Weblate.
См.также
Пометка неизменённых переводов флагом «На правку»¶
Добавлено в версии 3.1.
При импорте строки для перевода из системы контроля версий и при её совпадении с исходной строкой она помечается в Weblate флагом «На правку». Особенно это полезно для тех форматов файлов, которые включают в себя все строки, даже если те не переведены.
Пометка новых исходных строк флагом «На правку»¶
При импорте новой исходной строки из системы контроля версий она помечается в Weblate флагом «На правку». Таким образом, вы можете легко фильтровать и редактировать исходные строки, добавленные разработчиками.
Пометка новых переводов флагом «На правку»¶
При импорте строки для перевода из системы контроля версий она помечается в Weblate флагом «На правку». Таким образом, вы можете легко фильтровать и редактировать переводы, созданные разработчиками.
Генератор статистики¶
Генерирует файл, содержащий детальную информацию о переводе.
Для имени файла и его содержимого вы можете использовать шаблоны Django, подробное описание разметки шаблона смотрите в разделе Шаблонная разметка.
К примеру, сгенерировать файл со сводкой по каждому переводу можно со следующими настройками:
- Имя сгенерированного файла
locale/{{ language_code }}.json
- Содержимое
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
См.также
Участники в комментарии¶
Обновляет комментарий в заголовке 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»¶
Обновляет переменную ALL_LINGUAS в файлах configure
, configure.in
и configure.ac
при добавлении нового перевода.
Настройка вывода gettext¶
Позволяет настроить поведение вывода gettext, например, заворот строк.
Она предлагает следующие варианты:
Переносить строки на 77-м символе и у символов перевода строки
Переносить строки только у символов перевода строки
Не переносить строки
Примечание
По умолчанию gettext переносит строки на 77-м символе и у символов перевода строки. С параметром --no-wrap
он переносит их только у символов перевода строки.
Обновление файла LINGUAS¶
Обновляет файл LINGUAS при добавлении нового перевода.
Генерирование MO-файлов¶
Автоматически генерирует MO-файл для каждого изменённого PO-файла.
Обновлять PO-файлы до соответствия POT (msgmerge)¶
Обновляет все PO-файлы, используя msgmerge, приводя их в соответствие с POT-файлом. Это происходит всякий раз, когда новые изменения извлекаются из вышестоящего репозитория.
Склеивание Git-коммитов¶
Склеивает Git-коммиты до отправки изменений.
Вы можете выбрать один из следующих режимов:
Добавлено в версии 3.4.
Все коммиты в один
По языку
По файлу
Добавлено в версии 3.5.
По автору
Исходные сообщения коммита сохраняются, но авторство коммитов теряется, если только не выбран режим По автору, или сообщение коммита не настроено на включение в него его авторов.
Добавлено в версии 4.1.
Исходные сообщения коммитов могут быть переопределены пользовательским сообщением коммита.
Дополнительно из исходных сообщений коммитов могут быть удалены завершители (строки коммита вида Co-authored-by: ...
) с последующим их присоединением к концу сообщения склеенного коммита. Также в этом режиме для каждого переводчика генерируется соответствующий завершитель Co-authored-by:
.
Настройка вывода в JSON¶
Позволяет подправить поведение вывода в JSON, например, отступы или сортировку ключей.
Форматирование файла свойств Java¶
Сортирует файл свойств Java.
Удаление устаревших комментариев¶
Добавлено в версии 3.7.
Устанавливает сроки удаления комментариев.
Может быть полезна для удаления старых комментариев, которые могли потерять актуальность. Используйте её с осторожностью, поскольку то, что комментарий старый, не означает, что он потерял свою значимость.
Удаление устаревших предложений¶
Добавлено в версии 3.7.
Устанавливает сроки удаления предложений.
В сочетании с голосованием по предложениям (смотрите раздел Коллегиальное рецензирование) может быть очень полезна для удаления предложений, которые не получили достаточного количества положительных голосов в заданный промежуток времени.
Обновление файлов RESX¶
Добавлено в версии 3.9.
Обновляет все файлы перевода, приводя их в соответствие с одноязычным исходным базовым файлом. Неиспользуемые строки удаляются, а новые добавляются как копии исходных строк.
Подсказка
Если вы хотите только удалить устаревшие ключи перевода, используйте надстройку Очистка файлов перевода.
Настройка вывода в YAML¶
Добавлено в версии 3.10.2.
Позволяет подправить поведение вывода в YAML, например, длину строк и символы перевода строк.
Настройка списка надстроек¶
Список надстроек настраивается параметром WEBLATE_ADDONS
. Для добавления ещё одной надстройки просто включите в этот параметр полное имя класса.
Написание надстройки¶
Также вы можете написать свою собственную надстройку, всё, что вам для этого нужно — это создать подкласс BaseAddon
, определить метаданные надстройки и реализовать обратный вызов, который будет выполнять обработку.
Вот пример надстройки:
#
# Copyright © 2012 - 2020 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/>.
#
from django.utils.translation import gettext_lazy as _
from weblate.addons.base import BaseAddon
from weblate.addons.events import EVENT_PRE_COMMIT
class ExampleAddon(BaseAddon):
# Filter for compatible components, every key is
# matched against property of component
compat = {"file_format": {"po", "po-mono"}}
# List of events addon should receive
events = (EVENT_PRE_COMMIT,)
# Addon unique identifier
name = "weblate.example.example"
# Verbose name shown in the user interface
verbose = _("Example addon")
# Detailed addon description
description = _("This addon does nothing it is just an example.")
# Callback to implement custom behavior
def pre_commit(self, translation, author):
return
Выполнение скриптов из надстройки¶
Надстройки также могут использоваться для выполнения внешних скриптов. Раньше выполнение было интегрировано в сам Weblate, но теперь вам нужно написать код для заворачивания вашего скрипта в надстройку.
#
# Copyright © 2012 - 2020 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
Обработка переводов до коммита¶
Используйте скрипт коммита для автоматического внесения изменений в перевод до их коммита в репозиторий.
Перевод передается в виде единственного параметра, содержащего имя файла текущего перевода.