Перевірки і виправлення¶
Нетипові автоматичні виправлення¶
Ви можете також реалізувати ваші власні виправлення на додачу до стандартних і включити їх до AUTOFIX_LIST
.
Автоматичні виправлення є потужним засобом, але вони можуть пошкодити дані. Будьте обережні із написанням автоматичних виправлень.
Наприклад, наведене нижче автоматичне виправлення має замінити усі випадки використання рядка foo
у перекладі на bar
:
#
# 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/>.
#
from django.utils.translation import gettext_lazy as _
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
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 (здебільшого, перевірок) для кожного початкового рядка (під час рецензування початкових рядків, див. Додаткові відомості щодо початкових рядків) або на рівні Налаштовування складників (Прапорці перекладу). Для деяких форматів файлів можна вказати прапорці безпосередньо у записі формату (див. Підтримувані формати файлів).
Прапорці слід відокремлювати комами, а параметри — двокрапками. Ви можете скористатися лапками для включення до рядка пробілів або спеціальних символів. Приклад:
placeholders:"special:value":"other value", regex:.*
Ось список прапорців, які приймаються у поточній версії:
rst-text
Вважати текст документом reStructuredText, впливає на Переклад не змінено.
md-text
Вважати текст документом Markdown.
dos-eol
Використовує позначки кінців рядків DOS замість позначок кінців рядків Unix (
\r\n
замість\n
).url
Рядок має складатися лише з адреси URL.
safe-html
Рядок має бути безпечним кодом HTML, див. Небезпечний HTML-код.
read-only
Рядок призначено лише для читання, його не слід редагувати на Weblate, див. Рядки лише для читання.
priority:N
Пріоритетність рядка. Рядки із високою пріоритетністю надаються для перекладу першими. Типовим значенням пріоритетності є 100. Чим вищою є пріоритетність, тим раніше рядок буде запропоновано до перекладу.
max-length:N
Обмежити максимальну довжину рядка N символами, див. Максимальна довжина перекладу.
xml-text
Вважати текст документом XML, впливає на Синтаксис XML і Розмітка XML.
font-family:НАЗВА
Визначає сімейство шрифтів для перевірок обробки, див. Керування шрифтами.
font-weight:ВАГА
Визначити вагу шрифту для перевірок обробки, див. Керування шрифтами.
font-size:РОЗМІР
Визначити розмір шрифту для перевірок обробки, див. Керування шрифтами.
font-spacing:ІНТЕРВАЛ
Визначити інтервал між літерами для перевірок обробки, див. Керування шрифтами.
placeholders:НАЗВА:НАЗВА2:...
Рядки-замінники, які слід очікувати у перекладі, див. Заповнювачі.
replacements:ВІД:ДО:ВІД2:ДО2...
Заміни, які слід виконати при перевірці параметрів тексту у результаті (наприклад, у Найбільший розмір перекладу або Максимальна довжина перекладу). Типовим випадком використання є розгортання замінників для забезпечення відповідності тексту, навіть за використання довгих значень. Приклад:
replacements:%s:"John Doe"
.variants:ДЖЕРЕЛО
Позначити цей рядок варіантом рядка з тим самим джерелом. Див. Варіанти рядків.
regex:ФОРМАЛЬНИЙ_ВИРАЗ
Формальний вираз для зіставлення файлів перекладу, див. Регулярний вираз.
forbidden
Позначає заборонений переклад у глосарії, див. Заборонені переклади.
python-format
,c-format
,object-pascal-format
,php-format
,python-brace-format
,javascript-format
,c-sharp-format
,java-format
,java-messageformat
,lua-format
,auto-java-messageformat
,qt-format
,qt-plural-format
,ruby-format
,scheme-format
,vue-format
Обробляти усі рядки як рядки форматування, впливає на Формат Python, Формат C, Форматування Object Pascal, Формат PHP, Формат Qt, Формат Qt у множині, Формат Ruby, Форматування I18n Vue, Формат дужок Python, Формат JavaScript, Формат C#, Формат Java, Формат Java Message, Формат Lua, Формат Scheme, Переклад не змінено.
strict-same
Наказати перевірці «Незмінений переклад» уникати використання «чорного» списку вбудованих слів, див. Переклад не змінено.
check-glossary
Увімкнути перевірку якості «Не слідувати глосарію».
ignore-bbcode
Пропустити перевірку «Розмітка BBcode».
ignore-duplicate
Пропустити перевірку якості «Послідовне дублювання слів».
ignore-check-glossary
Пропустити перевірку якості «Не слідувати глосарію».
ignore-double-space
Пропустити перевірку якості «Подвійний пробіл».
ignore-angularjs-format
Пропускати перевірку якості «Рядок інтерполяції AngularJS».
ignore-c-format
Пропустити перевірку якості «Форматування C».
ignore-c-sharp-format
Пропустити перевірку якості «Форматування C#».
ignore-es-format
Пропустити перевірку якості «Літерали шаблонів ECMAScript».
ignore-i18next-interpolation
Пропускати перевірку якості «Інтерполяція i18next».
ignore-java-format
Пропустити перевірку якості «Форматування Java».
ignore-java-messageformat
Пропустити перевірку якості «Форматування повідомлень Java».
ignore-javascript-format
Пропустити перевірку якості «Форматування JavaScript».
ignore-lua-format
Пропустити перевірку якості «Формат Lua».
ignore-object-pascal-format
Пропустити перевірку якості «Форматування Object Pascal».
ignore-percent-placeholders
Пропустити перевірку якості «Замінники із символом відсотків».
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-vue-format
Пропустити перевірку якості «Форматування I18n Vue».
ignore-translated
Пропустити перевірку якості «Було перекладено».
ignore-inconsistent
Пропустити перевірку якості «Несумісність».
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-question
Пропустити перевірку якості «Невідповідність знаків питання».
ignore-end-semicolon
Пропустити перевірку якості «Невідповідність крапки з комою».
ignore-newline-count
Пропустити перевірку якості «Невідповідність розривів рядків».
ignore-plurals
Пропустити перевірку якості «Пропущено форми множини».
ignore-placeholders
Пропустити перевірку якості «Замінники».
ignore-punctuation-spacing
Пропустити перевірку якості «Інтервали при пунктуації».
ignore-regex
Пропустити перевірку якості «Формальний вираз».
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-long-untranslated
Пропустити перевірку якості «Довге неперекладене».
ignore-multiple-failures
Пропустити перевірку якості «Кратні невдалі перевірки».
ignore-unnamed-format
Пропустити перевірку якості «Кратні змінні без назв».
ignore-optional-plural
Пропустити перевірку якості «Немає форм множини».
Примітка
Загалом, правило для будь-якої перевірки має назву ignore-*
і використовує ідентифікатор перевірки, отже ви можете скористатися цим навіть для ваших власних перевірок.
Ці прапорці можна використовувати у параметрах Налаштовування складників, параметрах окремих початкових рядків та у самому файлі перекладу (наприклад, у GNU gettext).
Примусові перевірки¶
Нове в версії 3.11.
Ви можете налаштувати список перевірок, які не можна ігнорувати, встановленням значення Примусові перевірки у Налаштовування складників. Усі перевірки зі списку не може бути проігноровано у інтерфейсі користувача, а будь-який рядок, який не пройде перевірку, буде позначено міткою Потребує редагування (див. Стани перекладу).
Керування шрифтами¶
Нове в версії 3.7.
Підказка
Шрифти, які вивантажено на Weblate, використовуються лише для реалізації перевірки Найбільший розмір перекладу, вони не впливають на інтерфейс користувача Weblate.
Перевірка Найбільший розмір перекладу, яка використовується для обчислення розмірностей обробленого тексту, потребує вибору шрифту, який має бути завантажено до Weblate і вибрано за допомогою прапорця перекладу (див. Налаштовування поведінки за допомогою прапорців).
Засіб керування шрифтами Weblate у розділі Шрифти меню Управління вашого проєкту з перекладу надає інтерфейс для вивантаження шрифтів та керування ними. Можна вивантажувати шрифти TrueType або OpenType, налаштовувати групи шрифтів і використовувати їх у перевірці.
Групи шрифтів надають вам змогу визначити різні шрифти для різних мов, що типово знадобиться для мов, які записують нелатинськими символами:

Групи шрифтів визначаються назвою, яка не може містити пробілів або спеціальних символів. Так зроблено, щоб групи можна було без проблем використовувати у визначеннях перевірок:

Гарнітура шрифту та стиль автоматично визначаються після вивантаження шрифтів:

Ви можете завантажувати до Weblate декілька шрифтів:

Щоб скористатися шрифтами для перевірки довжини рядка, передайте відповідні прапорці (див. Налаштовування поведінки за допомогою прапорців). Вам, ймовірно, потрібні такі:
max-size:500
Визначає максимальну ширину.
font-family:ubuntu
Визначає групу шрифтів для використання її визначенням ідентифікатора.
font-size:22
Визначає розмір шрифту.
Написання власних перевірок¶
Широкий діапазон перевірок якості вбудовано до програми (див. Перевірки якості), хоча вони можуть не покривати усі випадки того, що ви хочете перевірити. Список виконуваних перевірок можна скоригувати за допомогою параметра CHECK_LIST
. Також ви можете додавати нетипові перевірки.
Підклас weblate.checks.Check
Встановити декілька атрибутів.
Реалізуйте метод
check
(якщо ви хочете мати справу із формами множини у вашому коді) або методcheck_single
(який виконує це завдання за вас).
Приклади:
Щоб встановити нетипові перевірки, вкажіть повний шлях до класу Python у CHECK_LIST
, див. Нетипові перевірки якості, додатки та автоматичні виправлення.
Перевірка того, чи не містить текст перекладу «foo»¶
Це доволі проста перевірка, яка просто перевіряє, чи не пропущено у перекладі рядок «foo».
#
# 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/>.
#
"""Simple quality check example."""
from django.utils.translation import gettext_lazy as _
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
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Перевірка того, чи є форми множини у перекладі чеською різними¶
Перевіримо з використанням даних щодо мови, чи дві форми множини у чеському перекладі є різними.
#
# 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/>.
#
"""Quality check example for Czech plurals."""
from django.utils.translation import gettext_lazy as _
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
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if self.is_language(unit, ("cs",)):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit):
"""We don't check target strings here."""
return False