Реєстрація

Графічну оболонку сховища KDE можна знайти за адресою https://l10n.kde.org/stats/gui/trunk-kf5/team/uk/

Координатор перекладу, перекладач: Юрій Чорноіван

Архів списку листування української локалізації KDE
Підписатися на список листування

Переклади документації можна знайти за адресою https://l10n.kde.org/stats/doc/trunk-kf5/team/uk/

Графічна оболонка сховища перекладів інтерфейсів програм KDE

Якщо ви не бажаєте надовго зв’язуватися з перекладом KDE, можете просто надіслати переклад або ваші зауваження за адресою yurchor@ukr.net. Відповідні адреси можна знайти у файлах перекладу та тут. Там же можна знайти інструкції зі звантаження сховищ перекладів (може знадобитися для згодовування у вашу пам’ять перекладів).

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

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

Після підтвердження долучення до команди повідомте координатора про ваші уподобання у перекладі та про те, якими частинами (програмами) KDE ви воліли б опікуватися.

Переклад

Налаштування нового проекту перекладу KDE

Загальні поради

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

Докладний опис процесу перекладу та прийомів роботи з Lokalize можна знайти тут.

Намагайтеся використовувати узгоджений командою глосарій та дотримуватися норм перекладу, описаних тут.

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

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

Важливим у перевірці перекладу є виявлення помилок, пов’язаних з неправильним використанням теґів у повідомленнях інтерфейсу програми. Виявити такі помилки можна за допомогою Pology. Встановіть Pology у спосіб, описаний тут. Після цього запустіть Lokalize, увійдіть до теки /uk/lokalize-files і виконайте скрипт xml.sh. У відповідь система відкриє помилкові повідомлення у Lokalize. Виправте їх, інакше вони призведуть до помилкового показу повідомлень у програмі або навіть до її аварійного завершення.

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

Якщо ви перекладаєте документацію, пам’ятайте, що перекладений вами файл довідки буде зібрано і додано до пакунків KDE, лише якщо цей переклад буде виконано на 100%.

Збирання

Встановіть пакунки kdesdk-po2xml, git (деякі з файлів документації зберігаються у git) та md5deep.

По завершенню перекладу довідки спробуйте зібрати документацію програми командою

scripts/update_xml uk назва модуля назва програми

виконаною з кореневої теки ваших перекладів. Скрипт звантажить документацію (вам знадобиться інтернет-з’єднання) та спробує зібрати локалізовану версію.

Помилки

Якщо під час компіляції буде показано повідомлення про помилки, вам слід уважно з ними ознайомитися. Зазвичай, причин помилок може бути три: помилки у теґах XML під час перекладу, створення нових записів авторів та назв програм (entities), помилки у оригінальному файлі DocBook.

Розберемо всі можливі варіанти послідовно:

  1. Ви припустилися помилки під час перекладу. Уважно прочитайте повідомлення, виведені скриптом update_xml. Знайдіть першу помилку. Якщо легко вдається ідентифікувати помилкове повідомлення, відкрийте його у Lokalize, перейдіть у кінець повідомлення і натисніть комбінацію клавіш Ctrl+T. У відповідь програма покаже список теґів повідомлення. Зверніть увагу на теґ, який підсвічено: можливо, саме його ви пропустили або розташували неправильно. Якщо ідентифікувати помилкове повідомлення не вдалося, ви можете спробувати зібрати чернетку документації і визначити повідомлення за рядком помилки: скопіюйте відповідний файл docbook та файл po до одної теки і виконайте команду

     po2xml назва.docbook назва.po > translated.docbook
    

    За номером рядка з помилкою визначте помилкове повідомлення і виправте його.

  2. Автори документації створили нові записи у файлах типових записів (такі помилки можна виявити за характерними повідомленнями про невизначені записи entities). Для збирання документації вам доведеться звантажити нові файли записів

     git clone git@invent.kde.org:frameworks/kdoctools.git
     cd ./kdoctools/customization/entities
    

    і переписати їх до /usr/share/apps/ksgmltools2/customization/entities

  3. Якщо два описаних способи не дали результатів, спробуйте перевірити DocBook на коректність командою

     checkXML index.docbook
    

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

Тестування

Скопіюйте готові файли довідки (update_xml створить їх у каталозі /uk/docs/назва модуля/назва програми) до окремого каталогу тестування. Для перетворення документації у формат HTML скористайтеся командою

meinproc5 index.docbook

Спробуйте прочитати документацію і виправити помилково перекладені повідомлення.

Знімки вікон та інша графіка

Звичайно ж, перекладена документація найкраще виглядає з повністю локалізованими елементами. Для створення знімків вікон можна скористатися Spectacle (просто відкрийте вікно локалізованої програми і натисніть клавішу PrintScreen). Зразки відповідних знімків можна знайти у теці /documentation з оригінальною документацією. Варто дотримуватися розмірів зображень оригіналів, а також використовувати типову тему KDE (у поточній версії Oxygen).

Стиснути зображення можна за допомогою скрипту, наведеного тут.

Додавання перекладів у сховище

Завершені і перевірені переклади слід надсилати координатору або іншим учасникам команди, які мають доступ до сховища перекладів KDE. За поступом перекладу можна слідкувати на сторінках графічного представлення.

Самостійні внески до KDE

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

Будь ласка, ознайомтеся з цими настановами. Заповніть відповідну вебформу, у якій вкажіть мету свого долучення до команди KDE та псевдонім координатора команди у полі учасника, який має підтримати запит (на час написання цього довідника — yurchor).

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

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

Корисні команди Pology

Створений Чаславом Ілічем набір скриптів мовою Python під загальною назвою Pology є надзвичайно корисним інструментом пошуку та редагування перекладів. Наведемо декілька корисних команд:

  1. Знайти і відкрити у Lokalize всі рядки без врахування акселератора, які містять «(c)» у шаблоні і не містять «©» у перекладі (з каталогу scripts Pology):

     ./posieve.py find-messages ../../uk/messages/ -saccel:'&' -stransl -smsgid:'\(c\)' -snmsgstr:'©' -slokalize
    
  2. Впорядкувати заголовки всіх файлів перекладу:

     ./posieve.py normalize-header ../../uk
    
  3. Отримати статистику перекладу певної теки (kdepim):

     ./posieve.py stats ../../uk/messages/kdepim
    
  4. Зняти позначення неточного перекладу з усіх перекладів, де змінився лише контекст (для kstars):

     ./posieve unfuzzy-context-only -snoreview -seqmsgid ../../uk/messages/kdeedu/kstars.po
    
  5. Замінити всі англійські лапки на українські типографські у перекладах інтерфейсів програм:

     ./posieve.py fancy_quote ../../uk/messages -slongdouble:'«','»'
    

Деякі поточні угоди щодо перекладу

Пункти меню

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

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

Під час перекладу слід уникати рідко вживаних та діалектних висловів. Їх використання може спричинити неадекватну реакцію користувачів. Слід також утримуватися від використання новотворів («застосунок», «переглядало» тощо). Не використовуйте невідповідних контексту або незрозумілих елементів («Відміна», «ОК»). Звертайте, будь ласка, увагу на записи глосарія Lokalize, коли перекладаєте.

Пунктуація

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

Відповідні символи легко вводити за допомогою Unicode-розкладки.

Повідомлення щодо авторських прав

При перекладі повідомлень про авторські права на програму та документацію слід дотримуватися таких правил:

  • Першим має стояти символ © (модифікатор третього рівня + С в українській розкладці), за ним після пробілу ім’я людини або назва компанії, далі кома і рік.
  • Імена пишемо лише у одному варіанті (перекладеному або неперекладеному). Як правило, імена не перекладаються (окрім наших «рідних» імен).
  • Діапазони дат слід записувати через символ короткого тире (модифікатор третього рівня + Shift + - (мінус) в українській розкладці) без пробілів навколо цього символу.

Форми множини у перекладах KDE

З версії 4.4.5 український переклад KDE (стабільної та нестабільної гілок) переведено на нову формулу роботи з формами множини (тотожну тій, яка використовується у сербській мові):

"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"

Навіщо?

Розгляньмо приклад. Нехай треба перекласти українською таку комбінацію (digiKam):

msgid "You have edited the image caption. "
msgid_plural "You have edited the captions of %1 images. "

Попередня формула запису форм множини надавала можливість використати для перекладу три форми:

0: для 1, 21, 31, 41... підпису
1: для 2, 3, 4, 22, 23... підписів
2: для 5, 6, 7... підписів.

Типовою похибкою є такий переклад:

msgstr[0] "Ви змінили підпис до зображення. "
msgstr[1] "Ви змінили підписи до %1 зображень. "
msgstr[2] "Ви змінили підписи до %1 зображень. "

Проста перевірка msgfmt -v -c digikam.po показує, що такий переклад є некоректним з точки зору gettext. Чому?

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

msgstr[0] "Ви змінили підпис до %1 зображення. "
msgstr[1] "Ви змінили підписи до %1 зображень. "
msgstr[2] "Ви змінили підписи до %1 зображень. "

Виглядає незграбно (користувачеві буде показано надмірну інформацію у випадку 1 підпису), але працює.

Трохи видозмінимо приклад:

msgid "You have edited the image caption. "
msgid_plural "You have edited the captions of images. "

Тепер будь-який переклад за попередньою формулою буде мати помилкові варіанти:

msgstr[0] "Ви змінили підпис до зображення. "
msgstr[1] "Ви змінили підписи до зображень. "
msgstr[2] "Ви змінили підписи до зображень. "

Помилка: підписів може бути 21, а це аж ніяк не «підпис».

msgstr[0] "Ви змінили підписи до зображення. "
msgstr[1] "Ви змінили підписи до зображень. "
msgstr[2] "Ви змінили підписи до зображень. "

Помилка: підписів може бути 1, а це аж ніяк не «підписи».

msgstr[0] "Ви змінили підпис до %1 зображення. "
msgstr[1] "Ви змінили підписи до %1 зображень. "
msgstr[2] "Ви змінили підписи до %1 зображень. "

Помилка: формально працює, але не проходить перевірку msgfmt.

Нова формула позбавлена недоліків попередньої. В ній чітко розмежовано однину від всіх інших випадків:

msgstr[0] "Ви змінили підпис до %1 зображення. "
msgstr[1] "Ви змінили підписи до %1 зображень. "
msgstr[2] "Ви змінили підписи до %1 зображень. "
msgstr[3] "Ви змінили підпис до зображення. "

msgstr[0] "Ви змінили підписи до зображень. "
msgstr[1] "Ви змінили підписи до зображень. "
msgstr[2] "Ви змінили підписи до зображень. "
msgstr[3] "Ви змінили підпис до зображення. "

Як перейти на нову формулу?

Часлав Іліч (координатор сербської команди KDE) надав скрипт, який працює на основі оболонки обробки перекладів KDE Pology:

#!/usr/bin/ env python
# -*- coding: UTF-8 -*-

import fallback_import_paths
import os
import sys

from pology.catalog import Catalog
from pology.fsops import collect_catalogs
from pology.report import report, error

cmd = os.path.basename(sys.argv[0])
args = sys.argv[1:]
if len(args) != 3:
    error("Usage: %(cmd)s PATH PLURALFORMS COPYMAP" % dict(cmd=cmd))
path = args.pop(0)
newplhead = args.pop(0)
copyspec = args.pop(0)

# Process form mapping.
srcforms = set()
dstforms = set()
copymap = {}
for spec1 in copyspec.split(","):
    try:
        sform, dform = map(int, spec1.split(">"))
    except:
        error("Malformed copy map '%(map)s'." % dict(map=copyspec))
    copymap[sform] = dform
    srcforms.add(sform)
    dstforms.add(dform)
if max(srcforms) + 1 != len(srcforms):
    error("Gaps in source forms.")
if max(dstforms) + 1 != len(dstforms):
    error("Gaps in destination forms.")
copyord = [0] * len(dstforms)
for sform, dform in copymap.items():
    copyord[dform] = sform

# Convert catalogs.
for popath in collect_catalogs(path):
    cat = Catalog(popath)
    cat.header.replace_field_value(u"Plural-Forms", unicode(newplhead))
    for msg in cat:
        if msg.msgid_plural is not None:
            msg.msgstr[:] = [msg.msgstr[x] for x in copyord]
    if cat.sync():
        report(cat.filename)

Щоб перевести ваші переклади на нову формулу, звантажте Pology, збережіть скрипт до підкаталогу scripts і віддайте команду (звичайно ж, наведений вище код слід записати до файла modplforms.py):

./modplforms.py /шлях/до/каталогу/перекладів  'nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;' '0>0,1>1,2>2,0>3'

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

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

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

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

Transifex і Lokalize розуміють все без проблем.