Для перекладачів¶
Ця сторінка — для людини, яка редагує каталог, а не для тієї, що пише код. Вона коротка навмисно, і її задумано так, щоб на неї можна було послатися чи скопіювати до власних інструкцій проєкту для перекладачів.
Ніщо тут не вимагає від вас читати Python. Усе тут про одне: про частини повідомлення у фігурних дужках.
Що таке заповнювач¶
Повідомлення в каталозі може містити імена у фігурних дужках:
{name} — це заповнювач. Коли програма показує це повідомлення, вона
замінює {name} на значення, яке сама постачає: ім'я людини, назву файлу,
число. Заповнювач — не слово для перекладу; це гніздо.
Ваш переклад іде в msgstr і мусить це гніздо зберегти:
Що можна змінювати, а що ні¶
Ви можете:
- Пересунути заповнювач туди, куди його хоче граматика цільової мови, зокрема й на початок повідомлення.
- Повторити заповнювач, якщо мові потрібне значення двічі.
- Переписати кожне інше слово, включно з пунктуацією, пробілами й порядком речень.
Ви не повинні:
- Перекладати ім'я всередині дужок.
{name}лишається{name}навіть у мові, яка більше нічого не пише латиницею. - Прибирати дужки або писати ім'я без них.
- Заміняти ASCII-дужки
{}на повноширинні{}. Багато методів введення дають повноширинні форми; вони виглядають майже однаково і не працюють. - Додавати форматування, як-от
{name!r}чи{amount:.2f}. Як відображається значення, вирішується в програмі, а не в каталозі. - Вигадувати заповнювач, якого немає в
msgid.
Якщо повідомленню потрібне значення, якого оригінал не пропонує, це повідомлення має змінити розробник. Скажіть про це, замість шукати обхідний шлях.
Форми множини¶
Повідомлення з лічильником приходить з одним гніздом msgstr на кожну форму
множини вашої мови, а скільки їх — вирішує сама мова: одна для японської, дві
для німецької, три для російської, шість для арабської. Заповніть кожне
гніздо, яке дає каталог.
Два правила, на яких люди спотикаються:
- Гнізда — це не «однина, множина, ще більша множина». Кожен індекс означає те, що каже правило множини вашої мови. Третя форма латиської — лише для нуля; друга словенської — рівно для двох; валлійська кладе загальний випадок на індекс 0, а однину — на індекс 1.
- Два гнізда цілком законно можуть містити той самий текст. У турецькій, угорській, перській і бенгальській іменник після числівника лишається в однині, тож обидві форми повідомлення з лічильником — той самий рядок. Це правильно, а не помилка копіювання.
Правила заповнювачів вище стосуються кожної форми окремо.
Записи fuzzy¶
Запис, позначений fuzzy, — це здогад машини: розробник змінив початкове
повідомлення, і інструменти спарували новий текст із вашим старим перекладом,
щоб вам було від чого відштовхнутися.
Запис fuzzy програмою не використовується — вона показує неперекладений
оригінал, — доки хтось не перегляне текст і не зніме позначку fuzzy. У
більшості PO-редакторів для цього є окрема кнопка.
Як читати повідомлення про відмову¶
Інструменти перевіряють заповнювачі під час компіляції каталогу, і
повідомлення написане для вас, а не для програміста. Повідомити лише, що
бракує {name}, — глухий кут, коли ви бачите ці символи просто перед собою;
тож там, де заповнювач виглядає наявним, але таким не є, повідомлення каже
чому. Проти оригіналу Hello {name} кожен із цих випадків повідомляється під
заголовком translation does not match the source placeholders:
| Ваш переклад каже | Причина, яку він отримує |
|---|---|
こんにちは {name} |
{name} is missing (the braces around it are not the ASCII { and }) |
こんにちは {{name}} |
{name} is missing (it is written {{name}}, which is how a literal brace is escaped) |
こんにちは name |
{name} is missing (the name appears, but not inside braces) |
こんにちは {名前} |
{name} is missing; {名前} is not in the source message |
Символи, яких не видно, дістають окреме поводження. Нерозривний пробіл усередині дужок — це те, що продукує метод введення й не показує жоден редактор, тож повідомлення друкує його кодовою точкою, замість називати символ, якого ви ніколи б не знайшли:
Ім'я, чиї літери змішують системи письма — випадок омогліфів, де кирилична
а невідрізненна від латинської, — показується двічі: раз читабельно і раз
екрановано, бо лише екранована форма розрізняє їх:
translation does not match the source placeholders: {name} is missing;
{nаme} (n\u0430me) is not in the source message
Те саме розрізнення застосовується, коли грецьке чи кириличне ім'я, написане
цілком однією системою письма, конфліктує з ASCII-іменем джерела, включно з
однолітерним випадком латинської a та кириличної а.
Якщо ви натрапили на щось із цього і виправлення не очевидне, безпечний хід —
видалити заповнювач, який ви набрали, і скопіювати той, що в msgid.
Чого перевірки не можуть¶
Інструменти переконуються, що ваші заповнювачі цілі. Вони не здатні сказати, чи переклад точний, природний або доречний у цьому контексті, — це лишається цілком за вами.
Дві речі допомагають більше за будь-яку перевірку:
- Читайте коментар для перекладача. Рядок, що починається з
#.над повідомленням, — це розробник каже вам, де воно з'являється і що означає. - Питайте про
msgctxt. Коли те саме слово трапляється двічі з різними контекстами, це тому, що ці два випадки мають перекладатися по-різному: «Open» як кнопка і «Open» як стан, наприклад.