Scroll to navigation

PO4A-RUNTIME(7) Інструменти Po4a PO4A-RUNTIME(7)

НАЗВА

po4a-runtime — переклад за допомогою po4a і динамічних засобів gettext без Autotools

Вступ

За допомогою po4a-build у po4a реалізовано підтримку додавання перекладу повідомлень, які виводяться скриптом командної оболонки, з використанням gettext, але без потреби у реалізації Autotools і типового процесу ./configure у пакунку.

За допомогою прикладів фрагментів Makefile пакунки можуть скористатися intltool із мінімальними зусиллями.

Компонування

Для перекладів документації НЕ слід використовувати той самий каталог po/, що і для перекладів інтерфейсу. Оскільки для перекладів інтерфейсу можна використовувати каталоги, відмінні від po/, слідувати цьому правилу доволі просто.

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

Декілька слів про пакунки, де використовуються скрипти декількома мовами програмування. Типовою є суміш Perl та мови командної оболонки. Зауваження: gettext НЕ працюватиме як слід і пропускатиме рядки з коду однією або іншою мовою, якщо не буде використано належні суфікси назв файлів для найменш проблематичної мови.

Якщо використовуєте декілька мов програмування, слід поекспериментувати із різноманітними параметрами у po/Makevars, аж доки усі потрібні вам рядки не опиняться у файлі POT.

Зокрема, вказування двох мов у po/Makevars може призвести до проблем. Замість такого:

 # Не робіть так:
 XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1

Спробуйте перейменувати (або перетворити на символічні посилання) усі файли однією з мов програмування, які ви використовуєте, і уникайте використання параметрів -L явним чином. Суфікси назв файлів мають використовуватися лише під час обробки po/POTFILES.in.

Також може стати у пригоді параметр --keywords — див. документацію до xgettext(1).

Заповнення po/

Отже, створіть у каталозі верхнього рівня підкаталог po/ і скористайтеся прикладами файлів з /usr/share/doc/po4a/examples/, щоб наповнити його потрібними даними.

Обов'язково має існувати, навіть якщо цей файл порожній. У файлі міститься список перекладів — усі рядки, які не починаються з символу «#» мають відповідати наявному файлу PO. Наприклад, якщо у LINGUAS міститься єдиний рядок, «uk», поряд з файлом LINGUAS має зберігатися файл uk.po.

 $ cat po/LINGUAS
 cs
 de
 uk
 $
    

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

Список файлів, у яких містяться повідомлення, які слід перекласти, — тобто список скриптів. Якщо ви маєте справу з каталогом po/ верхнього рівня, шляхи слід вказувати відносно його батьківського каталогу, а не самого каталогу po/.

 $ ls -l
 мійскрипт.pl
 ще_скрипт.pl
 якийсь_каталог/support.pl
 po/
 po/POTFILES.in
 $ cat po/POTFILES.in
 мійскрипт.pl
 ще_скрипт.pl
 якийсь_каталог/support.pl
 $
    

Зауважте, що явним чином передбачено підтримку зберігання у скриптах рядків для перекладу інтерфейсу та документації одночасно. Наприклад, можна використовувати функції gettext для перекладу інтерфейсу і вбудовані дані POD для документації. Немає ніяких проблем у тому, щоб певний файл одночасно перебував у списку po/POTFILES.in і у списку doc/po4a-build.conf.

Якщо ваші скрипти написано мовою програмування Perl, скопіюйте цей файл прикладу як po/Makevars і відредагуйте відповідно до ваших вимог.
Якщо ваші скрипти написано мовою скриптів командної оболонки, скопіюйте цей файл прикладу як po/Makevars і відредагуйте відповідно до ваших вимог.
Збережіть цей файл-приклад із назвою po/Makefile — вносити до нього зміни не потрібно, але варто синхронізувати його вміст із /usr/share/doc/po4a/examples/po4a-build.make, оскільки вміст файла може оновитися у нових випусках po4a, відповідно до змін у підлеглому пакунку intltool (сам файл було створено на основі іншого проекту, де використовується Autotools і intltool).

Будинок

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

 clean:
        $(MAKE) -C po/ clean
 install:
        $(MAKE) -C po/ install DESTDIR=$(DESTDIR)
 dist:
        $(MAKE) -C po/ pot

(У проекті Autotools це має відбутися автоматично після додавання po до значення "SUBDIRS" у файлі Makefile.am.)

Супровід

Переклад інтерфейсу реалізувати трохи складніше за po4a-build, оскільки додавання нового перекладу потребує редагування файла po/LINGUAS. Втім, окрім цього, для оновлення перекладу достатньо просто замінити відповідний файл PO новою версією.

Залежно від способу збирання вашого архіву tar із початковим кодом, можливо, слід також додати список нових файлів PO до файла MANIFEST або додати цей список до скриптів, за допомогою яких створюється цей аріхв tar (це стосується і po4a-build).

Усі файли *.mo або *.gmo у po/ можна вилучити.

Авторські права

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

АВТОРИ

 Neil Williams <linux@codehelp.co.uk>
2018-05-27 Інструменти Po4a