Перевірки і виправлення

Перевірки якості допомагають знайти типові помилки перекладачів, що забезпечує якість перекладу. Підсумками перевірок можна нехтувати, якщо ви впевнені у їхній хибності.

Одразу після надсилання перекладу, який не проходить перевірки, Weblate покаже користувачеві повідомлення про помилку:

../_images/checks.png

Автоматичні виправлення

Окрім перевірок, Weblate може автоматично виправляти деякі типові помилки у рядках перекладу. Користуйтеся цим обережно, щоб не наробити помилок.

Дивись також

AUTOFIX_LIST

Перевірки якості

Weblate застосовує до рядків широкий діапазон перевірок якості. У наступному розділі докладно описано усі ці перевірки. Також передбачено специфічні для мов перевірки. Якщо у звітах вади ви знайшли помилку, повідомте нам про неї.

Перевірки перекладів

Виконуються після кожної зміни у перекладі, допомагаючи перекладачам підтримувати високу якість перекладів.

Розмітка BBcode

BB-код у перекладі не збігається з BB-кодом у джерелі

BBCode використовує просту розмітку, наприклад, надає змогу позначити важливі частини повідомлення напівжирним або курсивним шрифтом.

Ця перевірка забезпечує наявність розмітки у перекладі.

Примітка

Спосіб виявлення BBcode у поточній версії є доволі простим, тому ця перевірка може помилково повідомляти про хиби у перекладі.

Послідовне повторення слів

Текст містить те саме слово двічі поспіль:

Нове в версії 4.1.

Перевіряє переклад на відсутність послідовного дублювання слів. Дублювання, зазвичай, вказує на помилку у перекладі.

Підказка

До цієї перевірки включено специфічні для мови правила для уникнення хибного спрацьовування. Якщо у вашому випадку рядок без помилок не проходить перевірки, повідомте про це нас. Див. розділ Надсилання звітів щодо вад у Weblate.

Не слідує глосарію

Нове в версії 4.5.

Цей переклад не збігається за термінологією глосарія.

Цю перевірку має бути увімкнено за допомогою прапорця check-glossary (див. Налаштовування поведінки за допомогою прапорців). Будь ласка, зважте на таке, перш ніж її вмикати:

  • Виконує точну перевірку збігу рядків. У глосарії мають міститися терміни в усіх варіантах.

  • Зіставлення всіх рядків з глосарієм ресурсовитратна операція. Вона сповільнює будь-які дії у Weblate, які стосуються виконання перевірок, подібних до імпортування рядків або перекладу.

Подвійний пробіл

Переклад містить подвійну прогалину

Перевіряє, чи немає у перекладі подвійних пробілів, щоб уникнути хибних спрацювань інших пов’язаних із пробілами перевірок.

Перевірка вважається пройденою, якщо буде виявлено подвійний пробіл у початковому рядку, що означатиме, що подвійний пробіл було використано навмисно.

Форматовані рядки

Перевіряє, чи є однаковим форматування у початковому рядку і перекладі. Пропускання рядків форматування у перекладі, зазвичай, спричиняє серйозні проблеми, тому форматування у рядках перекладів має, зазвичай, збігатися із форматуванням у початковому рядку.

У Weblate передбачено підтримку рядків форматування декількох мов програмування. Перевірка не вмикається автоматично, а лише якщо рядок позначено відповідним прапорцем (наприклад c-format для форматування C). Gettext додає такі прапорці автоматично, але вам, ймовірно, доведеться додавати прапорці вручну для файлів в інших форматах, або якщо ваші файли PO не створено за допомогою xgettext.

Це можна зробити на рівні модуля перекладу (див. Додаткові відомості щодо початкових рядків) або у складнику. Визначити перевірку на рівні складника простіше, але це може призвести до помилкових спрацювань, якщо рядок не позначено як форматований, але у ньому все ж використано синтаксис рядків форматування.

Підказка

Якщо специфічна перевірка форматування є недоступною у Weblate, ви можете скористатися загальною перевіркою на символи-замінники.

Окрім перевірки, Weblate підсвітить рядки форматування для спрощення вставлення їх до рядків перекладу:

../_images/format-highlight.png

Рядок інтерполяції AngularJS

Рядки інтерполяції AngularJS не відповідають джерелу

Іменований рядок форматування

Your balance is {{amount}} {{ currency }}

Прапорець для вмикання

angularjs-format

Формат C

Рядок формату C# не відповідає джерелу

Простий рядок форматування

There are %d apples

Позиційний рядок форматування

Your balance is %1$d %2$s

Прапорець для вмикання

c-format

Формат C#

Рядок формату C# не відповідає джерелу

Позиційний рядок форматування

There are {0} apples

Прапорець для вмикання

c-sharp-format

Літерали шаблонів ECMAScript

Літерали шаблонів ECMAScript не відповідають джерелу

Інтерполяція

There are ${number} apples

Прапорець для вмикання

es-format

Дивись також

Літерали шаблонів

i18next інтерполяція

Інтерполяція i18next не відповідає джерелу

Нове в версії 4.0.

Інтерполяція

There are {{number}} apples

Вкладення

There are $t(number) apples

Прапорець для вмикання

i18next-interpolation

Дивись також

Інтерполяція i18next

Формат Java

Рядок формату Java не відповідає джерелу

Простий рядок форматування

There are %d apples

Позиційний рядок форматування

Your balance is %1$d %2$s

Прапорець для вмикання

java-format

Формат Java Message

Рядок формату Java Message не відповідає джерелу

Позиційний рядок форматування

There are {0} apples

Прапорець для вмикання

java-messageformat вмикає перевірку безумовно

auto-java-messageformat вмикає перевірку, лише якщо у початковому рядку є рядок форматування

Дивись також

MessageFormat Java

Формат JavaScript

Рядок, формату JavaScript, не відповідає джерелу

Простий рядок форматування

There are %d apples

Прапорець для вмикання

javascript-format

Формат Lua

Рядок, формату Lua, не відповідає джерелу

Простий рядок форматування

There are %d apples

Прапорець для вмикання

lua-format

Дивись також

Рядки форматування Lua

Відсоток заповнювачів

Відсоток заповнювачів не відповідає джерелам

Нове в версії 4.0.

Простий рядок форматування

There are %number% apples

Прапорець для вмикання

percent-placeholders

Формат Perl

Рядок формату Perl не відповідає джерелу

Простий рядок форматування

There are %d apples

Позиційний рядок форматування

Your balance is %1$d %2$s

Прапорець для вмикання

perl-format

Формат PHP

Рядок, формату PHP, не відповідає джерелу

Простий рядок форматування

There are %d apples

Позиційний рядок форматування

Your balance is %1$d %2$s

Прапорець для вмикання

php-format

Формат дужок Python

Рядок, формату Python brace, не відповідає джерелу

Простий рядок форматування

There are {} apples

Іменований рядок форматування

Your balance is {amount} {currency}

Прапорець для вмикання

python-brace-format

Формат Python

Рядок форматування Python не відповідає джерелу

Простий рядок форматування

There are %d apples

Іменований рядок форматування

Your balance is %(amount) %(currency)

Прапорець для вмикання

python-format

Формат Qt

Рядок формату Qt не відповідає джерелу

Позиційний рядок форматування

There are %1 apples

Прапорець для вмикання

qt-format

Дивись також

Qt QString::arg()

Формат Qt у множині

Рядок формату Qt у множині не відповідає джерелу

Рядок форматування форм множини

There are %Ln apple(s)

Прапорець для вмикання

qt-plural-format

Дивись також

Підручник з i18n Qt

Формат Ruby

Рядок формату Ruby не збігається з джерелом

Простий рядок форматування

There are %d apples

Позиційний рядок форматування

Your balance is %1$f %2$s

Іменований рядок форматування

Your balance is %+.2<amount>f %<currency>s

Рядок із іменованим шаблоном

Your balance is %{amount} %{currency}

Прапорець для вмикання

ruby-format

Дивись також

Ruby Kernel#sprintf

Форматування I18n Vue

Форматування i18n Vue не збігається із початковим рядком

Іменоване форматування

There are {count} apples

Форматування i18n Rails

There are %{count} apples

Пов’язані повідомлення локалі

@:message.dio @:message.the_world!

Прапорець для вмикання

vue-format

Вже перекладено

Цей рядок перекладено раніше

Означає, що рядок вже було перекладено. Таке може трапитися, якщо переклади було скасовано у системі керування версіями або втрачено у інший спосіб.

Неузгодженість

Цей рядок має більше одного перекладу в цьому проєкті або не перекладається в деяких складниках.

Weblate шукає різні переклади однакових рядків в усьому проєкті, щоб забезпечити однорідність перекладів.

Ця перевірка вважається не пройденою, якщо у межах проєкту буде знайдено різні переклади одного рядка. Неоднорідність буде показано серед інших даних щодо перекладу. Знайти інші переклади рядка можна на вкладці Інші входження.

Примітка

Перевірка також вважається не пройденою, якщо рядок перекладено в одному складнику проєкту і не перекладено в іншому. Нею можна скористатися як швидким способом обробки рядків, які не перекладено у деяких складниках: достатньо просто натиснути кнопку Використати цей переклад, яку показано для кожного з рядків на вкладці Інші входження.

Ви можете скористатися додатком Автоматичний переклад для автоматизації нових доданих рядків, які вже було перекладено в іншому складнику.

Використано літеру кашида

Декоративні букви кашиди не повинні використовуватися

Нове в версії 3.5.

Декоративні букви кашиди не повинні використовуватися. Такі букви також називають татвілами.

Дивись також

Кашида у Вікіпедії

Markdown посилання

Посилання Markdown не збігаються з джерелом

Нове в версії 3.5.

Посилання Markdown не збігаються з джерелом.

Дивись також

Посилання Markdown

Синтаксис Markdown

Синтаксис Markdown не відповідає джерелу

Нове в версії 3.5.

Синтаксис Markdown не відповідає джерелу

Дивись також

Елементи розмітки span

Максимальна довжина перекладу

Переклад не перевищує заданої довжини

Перевіряє, чи прийнятною є довжина перекладів і чи вкладаються вони у доступне місце. У цій перевірці враховується лише довжина перекладу у символах.

На відміну від інших перевірок, прапорець слід встановити як пару ключ:значення, наприклад max-length:100.

Підказка

Ця перевірка використовує кількість символів — це значення може бути не найкращим варіантом, якщо для показу тексту використовується пропорційний шрифт. Справжню довжину тексту можна оцінити за допомогою перевірки Найбільший розмір перекладу.

Крім того, може стати у пригоді прапорець replacements: для розгортання замінників перед перевіркою рядка.

Найбільший розмір перекладу

Перекладений текст не повинен перевищувати заданий розмір

Нове в версії 3.7.

Перекладений текст не повинен перевищувати заданий розмір. Програма обробляє текст із перенесенням рядків і перевіряє, чи вкладається він у вказані обмеження.

Для перевірки потрібні два параметри — максимальна ширина і максимальна кількість рядків. Якщо кількість рядків не вказано, буде перевірено однорядковий текст.

Ви також можете налаштувати використаний шрифт за допомогою інструкції font-* (див. Налаштовування поведінки за допомогою прапорців). Наприклад, вказані нижче прапорці перекладу встановлюють, що запис тексту шрифтом ubuntu розміру 22 має вкладатися у два рядки і ширину у 500 пікселів:

max-size:500:2, font-family:ubuntu, font-size:22

Підказка

Вам варто встановити інструкції font-* на рівні складника, щоб той самий шрифт було використано для усіх рядків у складнику. Ви можете перевизначити значення на рівні рядка, якщо вам потрібно якимось чином виконати специфічну перевірку для окремого рядка.

Крім того, може стати у пригоді прапорець replacements: для розгортання замінників перед перевіркою рядка.

Не збіглися \n

Число \n у перекладі не відповідає джерелу

Зазвичай, екрановані символи розриву рядка є важливими для форматування виведених програмою даних. Перевірка вважається не пройденою, якщо кількість записів \n у перекладі не збігається із кількістю у початковому рядку.

Невідповідність двокрапки

Джерело та переклад не закінчуються двокрапкою

Перевіряє, чи правильно відтворено двокрапки з початкового рядка у перекладі. Також виконується перевірка двокрапок у мовах, де вони не використовуються (китайській і японській).

Невідповідність багатокрапок

Джерело і переклад не завершуються трикрапкою

Перевіряє, чи відтворено кінцеві три крапки з початкового рядка у перекладі. Виконується перевірка лише для справжнього символу трьох крапок (), а не трьох послідовних крапок (...).

Символ багатокрапки, зазвичай, краще виглядає у друкованому варіанті і краще обробляється системами озвучення тексту.

Невідповідність знаків оклику

Джерело та переклад не закінчуються знаком оклику

Перевіряє, чи правильно відтворено знаки оклику з початкового рядка у перекладі. Також виконується перевірка знаків оклику у мовах, де вони не використовуються (китайській, японській, корейській, вірменській, лімбу, м’янмській та нко).

Невідповідність кінцевої крапки

Джерело і переклад не завершуються кінцевою крапкою

Перевіряє, чи правильно відтворено крапки з початкового рядка у перекладі. Також виконується перевірка крапок у мовах, де вони не використовуються (китайській, японській, деванагарі та урду).

Дивись також

Крапка у Вікіпедії

Невідповідність знаків питання

Джерело та переклад не закінчуються знаком питання

Перевіряє, чи правильно відтворено знаки питання з початкового рядка у перекладі. Також виконується перевірка знаків питання у мовах, де вони не використовуються (вірменській, арабській, китайській, корейській, японській, ефіопській, ваї або коптській).

Невідповідність крапки з комою

Джерело і переклад не завершуються крапкою з комою

Перевіряє, чи відтворено крапки з комами наприкінці рядків з початкового рядка у перекладі. Це може бути корисним для збереження форматування записів, зокрема у файлах .desktop.

Розбіжність розривів рядків

Кількість знаків нових рядків у перекладі не збігається з джерелом

Зазвичай, символи розриву рядка є важливими для форматування виведених програмою даних. Перевірка вважається не пройденою, якщо кількість записів \n у перекладі не збігається із кількістю у початковому рядку.

Бракує множини

Деякі форми множини не перекладено

Перевіряє, чи було перекладено усіх форми множини початкового рядка. Специфіку використання кожної з форм множини, яку використано, можна знайти у визначенні рядка.

Якщо деякі з форм множини пропущено, у деяких випадках користувачу буде показано порожній рядок замість форми множини.

Заповнювачі

У перекладі відсутні деякі замінники:

Нове в версії 3.9.

Змінено в версії 4.3: Ви можете використовувати формальний вираз як замінник.

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

placeholders:$URL$:$TARGET$:"some long text"

Якщо ви знаєте синтаксичну конструкцію для замінників, ви можете скористатися регулярним виразом:

placeholders:r"%[^% ]%"

Щільність знаків

Пропущений нерозривний пробіл перед подвійним знаком пунктуації

Нове в версії 3.9.

Перевіряє, чи є нерозривний пробіл перед символом пунктуації, що складається з двох частин (знаком оклику, знаком питання, крапкою з комою та двокрапкою). Правило щодо додавання пробілу використовується лише у деяких мовах, зокрема французькій та бретонській, де це правило є частиною типографії.

Регулярний вираз

Переклад не відповідає регулярному виразу:

Нове в версії 3.9.

Переклад не відповідає формальному виразу. Вираз або видобувається з файла перекладу, або визначається вручну за допомогою прапорця regex:

regex:^foo|bar$

Однакова множина

Деякі форми множини перекладені однаково

Перевірка вважається не пройденою, якщо у перекладі усі форми множини є однаковими. У більшості мов форми множини мають бути різними.

Перехід у новий рядок

Джерело і переклад не починаються з переходу у новий рядок

Символи розриву рядка, зазвичай, з’являються у початкових рядках з певних причин. Пропускання або додавання цих символів може призвести до проблем із форматуванням при використанні перекладеного тексту.

Початкові пропуски

Джерело і переклад не починаються з однакового числа пропусків

Пробіл на початку рядка зазвичай використовується для відступів у інтерфейсі, тому його важливо зберігати.

Кінцевий знак нового рядка

Джерело і переклад не завершуються переходом у новий рядок

Символи розриву рядка, зазвичай, з’являються у початкових рядках з певних причин. Пропускання або додавання цих символів може призвести до проблем із форматуванням при використанні перекладеного тексту.

Дивись також

Перехід у новий рядок

Кінцеві пропуски

Джерело і переклад не завершуються пропуском

Перевіряє, чи відтворено кінцеві крапки з початкового рядка у перекладі.

Кінцевий пробіл зазвичай використовується для відокремлення сусідніх елементів, тому його вилучення може призвести до помилок при показі тексту.

Переклад не змінено

Джерело і переклад збігаються

Вважається не пройденою, якщо початковий рядок збігається із перекладом, аж до принаймні одної з форм множини. Деякі рядки, які є типовими для усіх мов буде проігноровано, а розмітку при перевірці вилучено. Таким чином Weblate уникає помилок при перевірці.

Ця перевірка може допомогти рядки, які помилково не було перекладено.

Типовою поведінкою для цієї перевірки є виключення слів з вбудованого «чорного» списку з перевірок. Слова зі списку часто не перекладають. Перевірка є важливою для усування помилкових спрацювань на коротких рядках, які складаються з одного слова, яке є однаковим у декількох мовах. Цей «чорний» список можна вимкнути за допомогою додавання прапорця strict-same до рядка або складника.

Небезпечний HTML-код

Переклад використовує небезпечну HTML-розмітку

Нове в версії 3.9.

Переклад використовує небезпечну розмітку HTML. Цю перевірку слід увімкнути за допомогою прапорця safe-html (див. Налаштовування поведінки за допомогою прапорців). Також передбачено автоматичний засіб виправлення розмітки.

Дивись також

Перевірка HTML виконується бібліотекою Bleach, яку розроблено Mozilla.

URL

Цей переклад не містить URL

Нове в версії 3.5.

У перекладі не міститься адреси. Ця перевірка виконується, лише якщо модуль перекладу позначено як такий, що містить адресу. У цьому випадку у перекладі також має бути коректна адреса.

Розмітка XML

Теґи XML у перекладі не збігаються з тегами XML у джерелі

Це, зазвичай, означає, що остаточний результат виглядатиме інакше. У більшості цей результат є небажаним у перекладі, але іноді без зміни не обійтися.

Перевіряє, чи відтворено теґи XML з початкового рядка у перекладі.

Синтаксис XML

Цей переклад не є правильним XML

Нове в версії 2.8.

Розмітка XML є некоректною.

Простір нульової ширини

Переклад містить зайві символи пропуску нульової ширини

Символи пробілів нульової ширини (<U+200B>) використовуються для розриву рядків посередині слова (перенесення рядків).

Оскільки ці символи часто включають до перекладів помилково, ця перевірка вмикається, якщо відповідні символи буде знайдено у перекладі. У роботі деяких програм можуть виникати проблеми, якщо буде використано такі символи.

Перевірки джерела

Перевірки початкових рядків можуть допомогти розробникам удосконалити початкові рядки.

Трикрапка

Рядок використовує три крапки (…) замість символу трикрапки (…)

Ця перевірка вважається не пройденою, якщо у рядку використано три крапки (...) замість символу багатокрапки ().

Використання символу Unicode у більшості випадків є кращим варіантом — символ виглядає краще у друкованому варіанті і краще озвучуються системами озвучення тексту.

Тривалий час не перекладено

Цей рядок вже тривалий час не перекладено

Нове в версії 4.1.

Якщо рядок не було перекладено доволі давно, це може вказувати на проблему у рядку, яка робить його переклад утрудненим.

Кратні невдалі перевірки

Переклади на декількох мовах мають непройдені перевірки

Багато перекладів цього рядка не проходять перевірок якості. Це, зазвичай, означає, що початковий рядок слід якимось чином удосконалити.

Поширеною причиною того, що рядок не пройшов перевірки, є нестача крапки наприкінці речення або подібні незначні проблеми, які перекладачі намагаються виправити у перекладі, хоча найкращим способом є виправлення початкового рядка.

Декілька змінних без назв

У рядку є декілька змінних без назв — перекладачі не зможуть змінити порядок цих змінних

Нове в версії 4.1.

У рядку є декілька змінних без назв — перекладачі не зможуть змінити порядок цих змінних.

Вам варто використовувати іменовані змінні, щоб перекладачі могли переставляти їх у перекладі.

Немає форм множини

Рядок використовується як множина, але не використовує форми множини

Рядок використано як рядок із формами множини, але у ньому не використовуються форми множини. Якщо у вашій системі перекладу передбачено підтримку форм множини, вам слід використовувати варіант рядка, який уможливлює переклад за усіма правилами форм множини різних мов.

Наприклад, із Gettext у Python це може бути:

from gettext import ngettext

print ngettext("Selected %d file", "Selected %d files", files) % files