Перевірки і виправлення¶
Нетипові автоматичні виправлення¶
Ви можете також реалізувати ваші власні виправлення на додачу до стандартних і включити їх до AUTOFIX_LIST.
Автоматичні виправлення є потужним засобом, але вони можуть пошкодити дані. Будьте обережні із написанням автоматичних виправлень.
Наприклад, наведене нижче автоматичне виправлення має замінити усі випадки використання рядка foo у перекладі на bar:
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
# Might be localized using gettext_lazy
name = "Foobar"
def fix_single_target(self, target, source, unit):
if "foo" in target:
return target.replace("foo", "bar"), True
return target, False
Щоб встановити нетипові перевірки, вкажіть повний шлях до класу Python у AUTOFIX_LIST, див. Спеціальні перевірки якості, доповнення, автоматичні пропозиції та автоматичні виправлення.
Налаштовування поведінки за допомогою прапорців¶
Ви можете скоригувати поведінку Weblate за допомогою прапорців. Прапорці надають візуальні настанови перекладачам і допомагають їм удосконалити переклад. Прапорці об’єднані з таких джерел:
Додаткові позначки рядка джерела:
Додаткові відомості щодо початкових рядків описує ручне редагування.
Масове редагування можна використовувати для пакетного застосування прапорів.
Доповнення Масове редагування може застосовувати позначки автоматично.
Прапорці окремих рядків буде видобуто з формату файла, див. Формати файлів локалізації.
Прапорці перекладу (наразі доступний лише прапорець
read-onlyдля двомовних вихідних рядків або у разі, якщо редагування одномовних шаблонів вимкнено).Специфічні для формату файлів прапорці.
Прапорці слід відокремлювати комами, а параметри — двокрапками. Ви можете скористатися лапками для включення до рядка пробілів або спеціальних символів. Приклад:
placeholders:"special:value":"other value", regex:.*
Можна використовувати одинарні і подвійні лапки. Спеціальні символи слід екранувати символом зворотної похилої риски:
placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"
Щоб переконатися, що перекладачі не змінюють заголовок документа Markdown. Невдала перевірка буде запущена, якщо рядок ### Index буде перекладено як # Indice.
placeholders:r"\]\([^h].*?\)"
Забезпечення незмінності внутрішніх посилань після перекладу (тобто [test](../checks) не повинно перетворитися на [test](../chequeos).
Прапорці, визначені на вищому рівні, можна відкинути за допомогою синтаксису discard:NAME. Наприклад, якщо компонент налаштовано на safe-html, ви можете додати discard:safe-html до прапорців рядка, щоб пропустити його для цього рядка.
Ось список прапорців, які приймаються у поточній версії:
read-onlyРядок призначено лише для читання, його не слід редагувати на Weblate, див. Рядки лише для читання.
terminologyВикористовується в Глосарій. Копіює рядок на всі мови глосарію, щоб його можна було використовувати послідовно в усіх перекладах. Також корисно в поєднанні з
read-only, наприклад, у назвах продуктів.priority:NПріоритетність рядка. Рядки із високою пріоритетністю надаються для перекладу першими. Типовим значенням пріоритетності є 100. Чим вищою є пріоритетність, тим раніше рядок буде запропоновано до перекладу.
max-length:NОбмежити максимальну довжину рядка N символами, див. Максимальна довжина перекладу.
xml-textВважати текст документом XML, впливає на Синтаксис XML і Розмітка XML.
font-family:NAMEВизначає сімейство шрифтів для перевірок обробки, див. Керування шрифтами.
font-weight:WEIGHTВизначити вагу шрифту для перевірок обробки, див. Керування шрифтами.
font-size:SIZEВизначити розмір шрифту для перевірок обробки, див. Керування шрифтами.
font-spacing:SPACINGВизначити інтервал між літерами для перевірок обробки, див. Керування шрифтами.
icu-flags:FLAGSВизначити прапорці для налаштовування поведінки перевірки якості MessageFormat ICU.
icu-tag-prefix:PREFIXВстановити обов’язковий префікс для теґів XML для перевірки якості MessageFormat ICU.
placeholders:NAME:NAME2:...Рядки-замінники, які слід очікувати у перекладі, див. Заповнювачі.
replacements:FROM:TO:FROM2:TO2...Заміни, які слід виконати при перевірці параметрів тексту у результаті (наприклад, у Найбільший розмір перекладу або Максимальна довжина перекладу). Типовим випадком використання є розгортання замінників для забезпечення відповідності тексту, навіть за використання довгих значень. Приклад:
replacements:%s:"John Doe".variants:SOURCEПозначити цей рядок варіантом рядка з тим самим джерелом. Див. Варіанти рядків.
regex:REGEXФормальний вираз для зіставлення файлів перекладу, див. Регулярний вираз.
discard:NAMEВідкидає прапор, визначений на вищому рівні.
forbiddenПозначає заборонений переклад у глосарії, див. Заборонені переклади.
strict-sameЗробіть так, щоб Переклад не змінено не використовував вбудовані винятки слів.
strict-formatПримусово використати форматування для форм множити із єдиним значенням, див. Форматовані рядки.
case-insensitiveКоригує поведінку перевірок так, щоб при їхньому виконанні не було враховано регістр літер. У поточній версії стосується лише перевірки якості Заповнювачі.
bbcode-textРозглядати текст як документ у форматі BBCode, впливає на Переклад не змінено. Увімкнути перевірку якості Розмітка BBCode.
check-glossaryУвімкнути перевірку якості Не відповідає вимогам глосарію.
fluent-partsУвімкнути перевірку якості Частини Fluent.
fluent-referencesУвімкнути перевірку якості Посилання Fluent.
fluent-target-inner-htmlУвімкнути перевірку якості Внутрішній HTML у перекладі Fluent.
fluent-target-syntaxУвімкнути перевірку якості Синтаксис перекладу Fluent.
angularjs-formatУвімкнути перевірку якості Рядок інтерполяції AngularJS.
automattic-components-formatУвімкнути перевірку якості Автоматичне форматування компонентів.
c-formatУвімкнути перевірку якості Формат C.
c-sharp-formatУвімкнути перевірку якості Формат C#.
csharp-formatУвімкнути перевірку якості Формат C#.
es-formatУвімкнути перевірку якості Літерали шаблонів ECMAScript.
i18next-interpolationУвімкнути перевірку якості i18next інтерполяція.
icu-message-formatУвімкнути перевірки якості MessageFormat ICU та Синтаксис ICU MessageFormat.
java-printf-formatУвімкнути перевірку якості Формат Java.
java-formatУвімкнути перевірку якості Формат Java Message.
auto-java-messageformatРозглядати текст як умовний формат Java MessageFormat, увімкнувши Формат Java Message лише в тому випадку, якщо джерело містить заповнювачі Java MessageFormat. Увімкнути перевірку якості Формат Java Message.
javascript-formatУвімкнути перевірку якості Формат JavaScript.
laravel-formatУвімкнути перевірку якості Формат Laravel.
lua-formatУвімкнути перевірку якості Формат Lua.
object-pascal-formatУвімкнути перевірку якості Форматування Object Pascal.
objc-formatУвімкнути перевірку якості Форматування Objective-C.
percent-placeholdersУвімкнути перевірку якості Відсоток заповнювачів.
perl-brace-formatУвімкнути перевірку якості Формат дужок Perl.
perl-formatУвімкнути перевірку якості Формат Perl.
php-formatУвімкнути перевірку якості Формат PHP.
python-brace-formatУвімкнути перевірку якості Формат дужок Python.
python-formatУвімкнути перевірку якості Формат Python.
qt-formatУвімкнути перевірку якості Формат Qt.
qt-plural-formatУвімкнути перевірку якості Формат Qt у множині.
ruby-formatУвімкнути перевірку якості Формат Ruby.
scheme-formatУвімкнути перевірку якості Формат Scheme.
vue-formatУвімкнути перевірку якості Форматування I18n Vue.
rst-textРозглядати текст як документ у форматі reStructuredText; впливає на Переклад не змінено. Увімкнути перевірки якості Непослідовний reStructuredText та Синтаксична помилка reStructuredText.
md-textРозглядайте текст як документ у форматі Markdown і забезпечуйте підсвічування синтаксису Markdown у полі для перекладу. Увімкніть перевірки якості Посилання Markdown, Markdown посилання та Синтаксис Markdown.
max-lengthУвімкнути перевірку якості Максимальна довжина перекладу.
max-sizeУвімкнути перевірку якості Найбільший розмір перекладу.
placeholdersУвімкнути перевірку якості Заповнювачі.
regexУвімкнути перевірку якості Регулярний вираз.
safe-htmlУвімкнути перевірку якості Небезпечний HTML-код.
auto-safe-htmlРозглядайте текст як умовний HTML, увімкнувши Небезпечний HTML-код лише для простого тексту або рядків-джерел, що містять стандартну HTML-розмітку або допустимі власні елементи. Це корисно для розширених варіантів Markdown, таких як MDX, де синтаксис у кутових дужках може не відповідати HTML. Увімкнення перевірки якості Небезпечний HTML-код.
urlРядок повинен містити лише URL-адресу. Увімкнути перевірку якості URL.
fluent-source-inner-htmlУвімкнути перевірку якості Внутрішній HTML коду Fluent.
fluent-source-syntaxУвімкнути перевірку якості Синтаксис початкового коду Fluent.
ignore-all-checksІгнорувати усі перевірки якості.
ignore-bbcodeПропустити перевірку якості Розмітка BBCode.
ignore-xml-chars-around-tagsПропустити перевірку якості Символи навколо тегів XML.
ignore-duplicateПропустити перевірку якості Послідовне повторення слів.
ignore-check-glossaryПропустити перевірку якості Не відповідає вимогам глосарію.
ignore-double-spaceПропустити перевірку якості Подвійний пробіл.
ignore-fluent-partsПропустіть перевірку якості Частини Fluent.
ignore-fluent-referencesПропустіть перевірку якості Посилання Fluent.
ignore-fluent-target-inner-htmlПропустіть перевірку якості Внутрішній HTML у перекладі Fluent.
ignore-fluent-target-syntaxПропустіть перевірку якості Синтаксис перекладу Fluent.
ignore-angularjs-formatПропустити перевірку якості Рядок інтерполяції AngularJS.
ignore-automattic-components-formatПропустити перевірку якості Автоматичне форматування компонентів.
ignore-c-formatПропустити перевірку якості Формат C.
ignore-c-sharp-formatПропустити перевірку якості Формат C#.
ignore-es-formatПропустити перевірку якості Літерали шаблонів ECMAScript.
ignore-i18next-interpolationПропускати перевірку якості i18next інтерполяція.
ignore-icu-message-formatПропустити перевірку якості MessageFormat ICU.
ignore-java-printf-formatПропустити перевірку якості Формат Java.
ignore-java-formatПропустити перевірку якості Формат Java Message.
ignore-javascript-formatПропустити перевірку якості Формат JavaScript.
ignore-laravel-formatПропустити перевірку якості Формат Laravel.
ignore-lua-formatПропустити перевірку якості Формат Lua.
ignore-object-pascal-formatПропустити перевірку якості Форматування Object Pascal.
ignore-objc-formatПропустити перевірку якості Форматування Objective-C.
ignore-percent-placeholdersПропустити перевірку якості Відсоток заповнювачів.
ignore-perl-brace-formatПропустити перевірку якості Формат дужок Perl.
ignore-perl-formatПропустити перевірку якості Формат Perl.
ignore-php-formatПропустити перевірку якості Формат PHP.
ignore-python-brace-formatПропустити перевірку якості Формат дужок Python.
ignore-python-formatПропустити перевірку якості Формат Python.
ignore-qt-formatПропустити перевірку якості Формат Qt.
ignore-qt-plural-formatПропустити перевірку якості Формат Qt у множині.
ignore-ruby-formatПропустити перевірку якості Формат Ruby.
ignore-scheme-formatПропустити перевірку якості Формат Scheme.
ignore-vue-formatПропустити перевірку якості Форматування I18n Vue.
ignore-translatedПропустити перевірку якості Вже перекладено.
ignore-inconsistentПропустити перевірку якості Неузгодженість.
ignore-rst-referencesПропустіть перевірку якості Непослідовний reStructuredText.
ignore-kashidaПропустити перевірку якості Використано літеру кашида.
ignore-md-linkПропустити перевірку якості Посилання Markdown.
ignore-md-reflinkПропустити перевірку якості Markdown посилання.
ignore-md-syntaxПропустити перевірку якості Синтаксис Markdown.
ignore-max-lengthПропустити перевірку якості Максимальна довжина перекладу.
ignore-max-sizeПропустити перевірку якості Найбільший розмір перекладу.
ignore-escaped-newlineПропустити перевірку якості Не збіглися \n.
ignore-end-colonПропустити перевірку якості Невідповідність двокрапки.
ignore-end-ellipsisПропустити перевірку якості Невідповідність багатокрапок.
ignore-end-exclamationПропустити перевірку якості Невідповідність знаків оклику.
ignore-end-stopПропустити перевірку якості Невідповідність кінцевої крапки.
ignore-end-interrobangПропустіть перевірку якості Невідповідність інтерробенга.
ignore-end-questionПропустити перевірку якості Невідповідність знаків питання.
ignore-end-semicolonПропустити перевірку якості Невідповідність крапки з комою.
ignore-newline-countПропустити перевірку якості Розбіжність розривів рядків.
ignore-pluralsПропустити перевірку якості Бракує множини.
ignore-multiple-capitalПропустити перевірку якості Декілька великих літер поспіль.
ignore-kabyle-charactersПропустити перевірку якості Нестандартні символи кабільською мовою.
ignore-placeholdersПропустити перевірку якості Заповнювачі.
ignore-prohibited-initial-characterПропустіть перевірку якості Заборонений ініціал.
ignore-punctuation-spacingПропустити перевірку якості Щільність знаків.
ignore-regexПропустити перевірку якості Регулярний вираз.
ignore-rst-syntaxПропустіть перевірку якості Синтаксична помилка reStructuredText.
ignore-reusedПропустити перевірку якості Повторно використаний переклад.
ignore-same-pluralsПропустити перевірку якості Однакова множина.
ignore-begin-newlineПропустити перевірку якості Перехід у новий рядок.
ignore-begin-spaceПропустити перевірку якості Початкові пропуски.
ignore-end-newlineПропустити перевірку якості Кінцевий знак нового рядка.
ignore-end-spaceПропустити перевірку якості Кінцеві пропуски.
ignore-sameПропустити перевірку якості Переклад не змінено.
ignore-safe-htmlПропустити перевірку якості Небезпечний HTML-код.
ignore-urlПропустити перевірку якості URL.
ignore-xml-tagsПропустити перевірку якості Розмітка XML.
ignore-xml-invalidПропустити перевірку якості Синтаксис XML.
ignore-zero-width-spaceПропустити перевірку якості Простір нульової ширини.
ignore-ellipsisПропустити перевірку якості Трикрапка.
ignore-fluent-source-inner-htmlПропустіть перевірку якості Внутрішній HTML коду Fluent.
ignore-fluent-source-syntaxПропустіть перевірку якості Синтаксис початкового коду Fluent.
ignore-icu-message-formatПропустити перевірку якості Синтаксис ICU MessageFormat.
ignore-long-untranslatedПропустити перевірку якості Тривалий час не перекладено.
ignore-multiple-failuresПропустити перевірку якості Кратні невдалі перевірки.
ignore-unnamed-formatПропустити перевірку якості Декілька змінних без назв.
ignore-optional-pluralПропустити перевірку якості Немає форм множини.
Примітка
Загалом, правило для будь-якої перевірки має назву ignore-* і використовує ідентифікатор перевірки, отже ви можете скористатися цим навіть для ваших власних перевірок.
Ці прапорці можна використовувати у параметрах Налаштовування складників, параметрах окремих початкових рядків та у самому файлі перекладу (наприклад, у GNU gettext).
Прапорці на основі розташування¶
Деякі прапорці додаються до рядків за замовчуванням, залежно від їхнього розташування. Це означає, що певні перевірки будуть автоматично ввімкнені залежно від того, де використовується рядок.
rst-text: Цей прапорець автоматично додається до рядків у файлах reStructuredText, якщо розширення адреси має значення.rst.md-text: This flag is automatically added to strings in Markdown and MDX files, if location extension is.md,.markdown, or.mdx.
Примусові перевірки¶
Примусові перевірки не можна відхилити, і рядок позначається як Needs editing (див. Стани перекладу). Це запобігає приховуванню таких перевірок перекладачами.
Підказка
Увімкнення примусового виконання перевірок не активує їх автоматично. Деякі перевірки потрібно ввімкнути, додавши відповідний прапорець до прапорців рядка або компонента.
Найкраще використовувати це з перевірками, які можуть спричинити серйозні проблеми, наприклад, з перевірками для Форматовані рядки. Використання перевірок стилю, таких як Переклад не змінено, не рекомендується, оскільки відхилення іноді є розумним підходом у таких випадках.
Параметр Фільтр якості перекладу можна використовувати для виключення рядків, що потребують редагування, з коміту до системи контролю версій.
Керування шрифтами¶
Підказка
Шрифти, які вивантажено на Weblate, використовуються лише для реалізації перевірки Найбільший розмір перекладу, вони не впливають на інтерфейс користувача Weblate.
Перевірка Найбільший розмір перекладу, яка використовується для обчислення розмірностей обробленого тексту, потребує вибору шрифту, який має бути завантажено до Weblate і вибрано за допомогою прапорця перекладу (див. Налаштовування поведінки за допомогою прапорців).
Інструмент керування шрифтами Weblate у розділі Fonts у меню Operations вашого проєкту перекладу надає інтерфейс для завантаження та керування шрифтами. Шрифти TrueType або OpenType можна завантажувати, налаштовувати групи шрифтів та використовувати їх під час перевірки.
Групи шрифтів надають вам змогу визначити різні шрифти для різних мов, що типово знадобиться для мов, які записують нелатинськими символами:
Групи шрифтів визначаються назвою, яка не може містити пробілів або спеціальних символів. Так зроблено, щоб групи можна було без проблем використовувати у визначеннях перевірок:
Font-family and style are automatically recognized after uploading them:
Ви можете завантажувати до Weblate декілька шрифтів:
Щоб скористатися шрифтами для перевірки довжини рядка, передайте відповідні прапорці (див. Налаштовування поведінки за допомогою прапорців). Вам, ймовірно, потрібні такі:
max-size:500/max-size:300:5Визначає максимальну ширину в пікселях і, за бажанням, максимальну кількість рядків (застосовується обтікання словами).
font-family:ubuntuВизначає групу шрифтів для використання її визначенням ідентифікатора.
font-size:22Визначає розмір шрифту у пікселях.
Написання власних перевірок¶
Широкий діапазон перевірок якості вбудовано до програми (див. Перевірки якості), хоча вони можуть не покривати усі випадки того, що ви хочете перевірити. Список виконуваних перевірок можна скоригувати за допомогою параметра CHECK_LIST. Також ви можете додавати нетипові перевірки.
Підклас weblate.checks.Check
Встановити декілька атрибутів.
Реалізуйте метод
check(якщо ви хочете мати справу із формами множини у вашому коді) або методcheck_single(який виконує це завдання за вас).
Приклади:
Щоб встановити нетипові перевірки, вкажіть повний шлях до класу Python у CHECK_LIST, див. Спеціальні перевірки якості, доповнення, автоматичні пропозиції та автоматичні виправлення.
Перевірка того, чи не містить текст перекладу «foo»¶
Це доволі проста перевірка, яка просто перевіряє, чи не пропущено у перекладі рядок «foo».
"""Simple quality check example."""
from django.utils.translation import gettext_lazy
from weblate.checks.base import TargetCheck
class FooCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
# Might be localized using gettext_lazy
name = "Foo check"
# Description for failing check
description = gettext_lazy("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Перевірка того, чи є форми множини у перекладі чеською різними¶
Перевіримо з використанням даних щодо мови, чи дві форми множини у чеському перекладі є різними.
"""Quality check example for Czech plurals."""
from django.utils.translation import gettext_lazy
from weblate.checks.base import TargetCheck
class PluralCzechCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
# Might be localized using gettext_lazy
name = "Foo check"
# Description for failing check
description = gettext_lazy("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if unit.translation.language.is_base({"cs"}):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit) -> bool:
"""We don't check target strings here."""
return False