.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "PO4A-RUNTIME 7" .TH PO4A-RUNTIME 7 "2018-06-07" "Інструменти Po4a" "Інструменти Po4a" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "НАЗВА" .IX Header "НАЗВА" po4a\-runtime — переклад за допомогою po4a і динамічних засобів gettext без Autotools .SH "Вступ" .IX Header "Вступ" За допомогою \fIpo4a\-build\fR у \fIpo4a\fR реалізовано підтримку додавання перекладу повідомлень, які виводяться скриптом командної оболонки, з використанням gettext, але без потреби у реалізації Autotools і типового процесу \fI./configure\fR у пакунку. .PP За допомогою прикладів фрагментів \fIMakefile\fR пакунки можуть скористатися \&\fIintltool\fR із мінімальними зусиллями. .SH "Компонування" .IX Header "Компонування" Для перекладів документації НЕ слід використовувати той самий каталог \&\fIpo/\fR, що і для перекладів інтерфейсу. Оскільки для перекладів інтерфейсу можна використовувати каталоги, відмінні від \fIpo/\fR, слідувати цьому правилу доволі просто. .SH "Використання декількох мов програмування" .IX Header "Використання декількох мов програмування" Декілька слів про пакунки, де використовуються скрипти декількома мовами програмування. Типовою є суміш Perl та мови командної оболонки. Зауваження: gettext НЕ працюватиме як слід і пропускатиме рядки з коду однією або іншою мовою, якщо не буде використано належні суфікси назв файлів для найменш проблематичної мови. .PP Якщо використовуєте декілька мов програмування, слід поекспериментувати із різноманітними параметрами у \fIpo/Makevars\fR, аж доки усі потрібні вам рядки не опиняться у файлі \s-1POT.\s0 .PP Зокрема, вказування двох мов у \fIpo/Makevars\fR може призвести до проблем. Замість такого: .PP .Vb 2 \& # Не робіть так: \& XGETTEXT_OPTIONS = \-L Perl \-L Shell \-\-from\-code=iso\-8859\-1 .Ve .PP Спробуйте перейменувати (або перетворити на символічні посилання) усі файли однією з мов програмування, які ви використовуєте, і уникайте використання параметрів \-L явним чином. Суфікси назв файлів мають використовуватися лише під час обробки \fIpo/POTFILES.in\fR. .PP Також може стати у пригоді параметр \-\-keywords — див. документацію до \&\fBxgettext\fR(1). .SH "Заповнення po/" .IX Header "Заповнення po/" Отже, створіть у каталозі верхнього рівня підкаталог \fIpo/\fR і скористайтеся прикладами файлів з \fI/usr/share/doc/po4a/examples/\fR, щоб наповнити його потрібними даними. .IP "\s-1LINGUAS\s0" 4 .IX Item "LINGUAS" Обов'язково має існувати, навіть якщо цей файл порожній. У файлі міститься список перекладів — усі рядки, які не починаються з символу «#» мають відповідати наявному файлу \s-1PO.\s0 Наприклад, якщо у \fI\s-1LINGUAS\s0\fR міститься єдиний рядок, «uk», поряд з файлом \fI\s-1LINGUAS\s0\fR має зберігатися файл \fIuk.po\fR. .Sp .Vb 5 \& $ cat po/LINGUAS \& cs \& de \& uk \& $ .Ve .Sp За домовленістю, записи у файлі \fI\s-1LINGUAS\s0\fR упорядковуються за абеткою, але робити це доводиться вручну. .IP "\s-1POTFILES\s0.in" 4 .IX Item "POTFILES.in" Список файлів, у яких містяться повідомлення, які слід перекласти, — тобто список скриптів. Якщо ви маєте справу з каталогом \fIpo/\fR верхнього рівня, шляхи слід вказувати відносно його батьківського каталогу, а не самого каталогу \fIpo/\fR. .Sp .Vb 11 \& $ ls \-l \& мійскрипт.pl \& ще_скрипт.pl \& якийсь_каталог/support.pl \& po/ \& po/POTFILES.in \& $ cat po/POTFILES.in \& мійскрипт.pl \& ще_скрипт.pl \& якийсь_каталог/support.pl \& $ .Ve .Sp Зауважте, що явним чином передбачено підтримку зберігання у скриптах рядків для перекладу інтерфейсу та документації одночасно. Наприклад, можна використовувати функції gettext для перекладу інтерфейсу і вбудовані дані \&\s-1POD\s0 для документації. Немає ніяких проблем у тому, щоб певний файл одночасно перебував у списку \fIpo/POTFILES.in\fR і у списку \fIdoc/po4a\-build.conf\fR. .IP "Makevars\-perl.example" 4 .IX Item "Makevars-perl.example" Якщо ваші скрипти написано мовою програмування Perl, скопіюйте цей файл прикладу як \fIpo/Makevars\fR і відредагуйте відповідно до ваших вимог. .IP "Makevars\-shell.example" 4 .IX Item "Makevars-shell.example" Якщо ваші скрипти написано мовою скриптів командної оболонки, скопіюйте цей файл прикладу як \fIpo/Makevars\fR і відредагуйте відповідно до ваших вимог. .IP "po4a\-build.make" 4 .IX Item "po4a-build.make" Збережіть цей файл\-приклад із назвою \fIpo/Makefile\fR — вносити до нього зміни не потрібно, але варто синхронізувати його вміст із \&\fI/usr/share/doc/po4a/examples/po4a\-build.make\fR, оскільки вміст файла може оновитися у нових випусках po4a, відповідно до змін у підлеглому пакунку intltool (сам файл було створено на основі іншого проекту, де використовується Autotools і intltool). .SH "Будинок" .IX Header "Будинок" Ці фрагменти коду слід додати до вашого файла Makefile верхнього рівня або до іншого файла, за допомогою якого ви обробляєте початкові файли вашого дистрибутива програми. .PP .Vb 2 \& clean: \& $(MAKE) \-C po/ clean \& \& install: \& $(MAKE) \-C po/ install DESTDIR=$(DESTDIR) \& \& dist: \& $(MAKE) \-C po/ pot .Ve .PP (У проекті Autotools це має відбутися автоматично після додавання \fIpo\fR до значення \f(CW\*(C`SUBDIRS\*(C'\fR у файлі \fIMakefile.am\fR.) .SH "Супровід" .IX Header "Супровід" Переклад інтерфейсу реалізувати трохи складніше за \fIpo4a\-build\fR, оскільки додавання нового перекладу потребує редагування файла \fIpo/LINGUAS\fR. Втім, окрім цього, для оновлення перекладу достатньо просто замінити відповідний файл \s-1PO\s0 новою версією. .PP Залежно від способу збирання вашого архіву tar із початковим кодом, можливо, слід також додати список нових файлів \s-1PO\s0 до файла \fI\s-1MANIFEST\s0\fR або додати цей список до скриптів, за допомогою яких створюється цей аріхв tar (це стосується і \fIpo4a\-build\fR). .PP Усі файли \fI*.mo\fR або \fI*.gmo\fR у \fIpo/\fR можна вилучити. .SH "Авторські права" .IX Header "Авторські права" Хоча файли прикладів є частиною проекту po4a, ви можете вільно використовувати їх, вносити до них зміни і розповсюджувати їх із власними проектами без посилань на проект po4a або зазначення команди po4a у вашому записі щодо авторських прав, так само, як і для інших засобів збирання, зокрема самого Automake. Якщо ж ви хочете згадати po4a, це теж можна зробити. .SH "АВТОРИ" .IX Header "АВТОРИ" .Vb 1 \& Neil Williams .Ve