
        *****************************************************
        *           GENERATED FILE, DO NOT EDIT             *
        * THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
        *****************************************************

This file was generated by po4a(7). Do not store it (in VCS, for example),
but store the PO file used as source file by po4a-translate.

In fact, consider this as a binary, and the PO file as a regular .c file:
If the PO get lost, keeping this translation up-to-date will be harder.

=encoding UTF-8

=head1 НАЗВА

Locale::Po4a::Man — перетворення сторінок підручника на файли PO, і навпаки

=head1 ОПИС

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

Locale::Po4a::Man — модуль, який допомагає у перекладі документації у форматі nroff (мовою сторінок підручника) іншими мовами (якими розмовляють люди).

=head1 ПЕРЕКЛАД ЗА ДОПОМОГОЮ PO4A::MAN

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

=head2 Перенесення рядків

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

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

=head2 Специфікація шрифту

Перша зміна стосується специфікації зміни шрифту. У nroff передбачено декілька способів вказати, як має бути написано певне слово, — малим шрифтом, напівжирним шрифтом або курсивом. У тексті для перекладу передбачено лише один з цих способів, для якого використано формат POD (інтернет-документації Perl):

=over 

=item IE<lt>текстE<gt> — курсивний текст

еквівалент \fIтекст\fP або ".I текст"

=item BE<lt>текстE<gt> — напівжирний текст

еквівалент \fBтекст\fP або ".B текст"

=item RE<lt>текстE<gt> — текст прямим шрифтом

еквівалент \fRtext\fP

=item CWE<lt>текстE<gt> — текст моноширинним шрифтом

еквівалент \f(CWтекст\fP або ".CW текст"

=back

Зауваження: гарнітурою CW можна скористатися на на всіх пристроях groff. Не рекомендуємо користуватися нею. Її реалізовано лише для зручності.

=head2 Автоматична транслітерація символів

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

=over 

=item дефіси

Дефіси (-) і символи «мінус» (\-) на сторінках підручника усі транслітеруються у прості риски (-) у файлі PO. Далі, усі риски знову транслітеруються у символ «мінус» roff (\-) під час вставляння перекладу до документа-результату.

Перекладачі можуть примусово наказати вставити дефіс за допомогою гліфу roff «\[hy]», який вписано у переклад.

=item нерозривні пробіли

Перекладачі можуть використовувати у перекладах нерозривні пробіли. Нерозривний пробіл (0xA0 у latin1) буде транслітеровано у нерозривний пробіл roff («\ »).

=item транслітерація лапок

`` і '' буде, відповідно, транслітеровано у \*(lq та \*(rq.

Щоб уникнути таких транслітерацій, перекладачі можуть вставляти символ нульової ширини roff (тобто користуватися `\&` або '\&', відповідно).

=back

=head2 Вставляння «E<lt>» і «E<gt>» у переклади

Оскільки ці символи використовуються для позначення частин у записах модифікації шрифтів, ви не можете використовувати їх буквально. Скористайтеся замість буквальних записами EE<lt>ltE<gt> та EE<lt>gtE<gt> (знову ж таки, як у POD).

=head1 ПАРАМЕТРИ, ЯКІ МОЖНА ПЕРЕДАВАТИ ЦЬОМУ МОДУЛЮ

Ось параметри, які можна передавати цьому модулю:

=over 

=item B<debug>

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

=item B<verbose>

Збільшити рівень докладності повідомлень.

=item B<groff_code>

Цей параметр керує поведінкою модуля, якщо у даних трапиться розділ .de, .ie або .if. Може приймати такі значення:

=over 

=item I<fail>

Це типове значення. Модуль завершує роботу і повідомляє про помилку, якщо трапиться розділ .de, .ie або .if.

=item I<verbatim>

Вказує на те, що розділи .de, .ie і .if має бути скопійовано без змін з оригіналу до перекладеного документа.

=item I<translate>

Вказує на те, що розділи .de, .ie і .if буде запропоновано для перекладу. Користуйтеся цим варіантом, лише якщо у цих розділах містяться придатні до перекладу рядки. Якщо таких рядків там немає, варто скористатися варіантом I<verbatim>.

=back

=item B<generated>

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

=item B<mdoc>

Цей параметр корисний лише для сторінок mdoc.

Вибирає строгіший варіант підтримки формату mdoc, вказуючи po4a, що не слід перекладати розділ «NAME». Для сторінок mdoc, де перекладається розділ «NAME», не створюються верхні і нижні колонтитули.

Відповідно до сторінки groff_mdoc, розділи NAME, SYNOPSIS та DESCRIPTION
є обов'язковими.
Переклад розділів SYNOPSIS і DESCRIPTION не пов'язано із жодними відомими вадами,
але і ці розділи можна вказати у подібний же спосіб:
 -o mdoc=NAME,SYNOPSIS,DESCRIPTION

Цю ваду mdoc також можна усунути за допомогою додатка такого вмісту:
 PO4A-HEADER:mode=before;position=^.Dd
 .TH DOCUMENT_TITLE 1 "День місяця, рік" OS "Назва розділу"



=back

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

 -o noarg=FO,OB,AR -o translate_joined=BA,ZQ,UX

Зауваження: якщо підтримку макросу не передбачено у po4a, а ви вважаєте, що це стандартний макрос roff, вам слід повідомити про це команду розробників po4a.

=over 

=item B<untranslated>

B<untranslated> вказує на так, що цей макрос (і його аргументи) не слід перекладати.

=item B<noarg>

B<noarg> подібний до B<untranslated>, але вказує на те, що po4a слід перевіряти, чи не було додано аргумент до цього макросу.

=item B<translate_joined>

B<translate_joined> вказує на те, що po4a має запропонувати перекласти аргументи макросу.

=item B<translate_each>

Якщо вказано B<translate_each>, аргументи також буде запропоновано для перекладу, але кожен із них перекладатиметься окремо.

=item B<no_wrap>

Цьому параметру передається список відокремлених комами пар I<початок>:I<кінець>, де I<початок> і I<кінець> є командами, які відповідають початку і кінцю розділу, у якому не слід переносити рядки.

Зауваження: програма не виконуватиме ніяких перевірок щодо того, чи є відповідність між командами I<кінець> і I<початок> — будь яка команда завершення розділу зупинятиме дію режиму no_wrap. Якщо у тексті є макрос I<початок> (відповідно, I<кінець>) без відповідника I<кінець> (відповідно, I<початок>), ви можете вказати наявний у тексті I<кінець> (наприклад, fi) або I<початок> (наприклад, nf) як відповідник обмежувача розділу. Ці макроси (та їхні аргументи) не перекладатимуться.

=item B<inline>

За допомогою цього параметра можна задати список відокремлених комами макросів, за якими не слід ділити на частини поточний абзац. Після цього у рядку для перекладу буде щось подібне до I<щось E<lt>.команда аргументи_командиE<gt> далі>, де I<команда> — команда, яку слід залишити у ряду, а I<аргументи_комнади> — її аргументи.

=item B<unknown_macros>

За допомогою цього параметра можна вказати, як po4a має поводитися зі знайденими невідомими макросами. Типово, po4a завершує роботу із попередженням. Параметр може приймати такі значення: B<failed> (типове значення), B<untranslated>, B<noarg>, B<translate_joined> і B<translate_each> (пояснення щодо цих значень наведено вище).

=back

=head1 НАПИСАННЯ СУМІСНИХ ІЗ PO4A::MAN СТОРІНОК ПІДРУЧНИКА

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

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

=head2 Не програмуйте на nroff

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

=head2 Використовуйте простий набір макросів

Підтримку деяких макросів у po4a::man ще не передбачено. Причиною є те, що авторові не вдалося знайти жодної документації щодо них. Нижче наведено список непідтримуваних макросів, які вдалося знайти у системі. Зауважте, що список є неповним, оскільки програма зупиняла роботу на першому ж непідтримуваному макросі. Якщо у вас є відомості щодо якогось з наведених макросів, автор із задоволенням додасть його підтримку. Через ці макроси близько 250 сторінок із операційної системи автора не може бути оброблено за допомогою po4a::man.

 ..               ."              .AT             .b              .bank
 .BE              ..br            .Bu             .BUGS           .BY
 .ce              .dbmmanage      .do                             .En
 .EP              .EX             .Fi             .hw             .i
 .Id              .l              .LO             .mf
 .N               .na             .NF             .nh             .nl
 .Nm              .ns             .NXR            .OPTIONS        .PB
 .pp              .PR             .PRE            .PU             .REq
 .RH              .rn             .S<             .sh             .SI
 .splitfont       .Sx             .T              .TF             .The
 .TT              .UC             .ul             .Vb             .zZ

=head2 Приховування тексту від po4a

Іноді, авторові сторінки відомо, що певні частини непридатні до перекладу, отже, їх не слід видобувати за допомогою po4a. Наприклад, параметр може приймати аргумент I<other>, а I<other> може бути також останнім записом у списку. У першому випадку I<other> не слід перекладати, а у другому — слід.

У такому разі, автор може заборонити po4a видобувати певні рядки за допомогою спеціальних конструкцій у groff:

 .if !'po4a'hide' .B other

(це потребуватиме параметра B<-o groff_code=verbatim>)

Також мона визначити новий макрос для автоматизації цього:
 .de IR_untranslated
 .    IR \\$@
 ..

 .IR_untranslated \-q ", " \-\-quiet

(Це потребує параметрів B<-o groff_code=verbatim> та B<-o untranslated=IR_untranslated>. Якщо використано цю конструкцію, умова B<.if !'po4a'hide'> не є обов'язковою, оскільки po4a не оброблятиме внутрішньої частини визначення макросу.)

або за допомогою альтернативи:
 .als IR_untranslated IR

 .IR_untranslated \-q ", " \-\-quiet

Це потребуватиме параметра B<-o untranslated=als,IR_untranslated>.

=head2 Висновки

Підсумовуючи написане у цьому розділі, намагайтеся бути простішими, не ускладнюйте речі при написанні ваших сторінок підручника. У nroff багато можливостей, але підтримки деяких з них не передбачено у цьому засобі обробки. Наприклад, не намагайтеся використовувати \c для переривання обробки тексту (як це зроблено на 40 сторінках у моїй системі). Також розміщуйте аргументи макросу у тому самому рядку, що і макрос. Я знаю, що так можна робити у nroff, але це надто ускладнює роботу засобу обробки даних.

Звичайно ж, можна скористатися іншим форматом, який є зручнішим для перекладу (зокрема POD із використанням po4a::pod або один із форматів сімейства XML, зокрема SGML), але завдяки po4a::man у цьому більше немає потреби. Втім, якщо початковим форматом вашої документації є POD або XML, ймовірно, варто перекладати її у початковому форматі, а не у автоматично обробленому. У більшості випадків po4a::man виявить автоматично створені сторінки і попередить про це. Модуль навіть відмовиться обробляти створені за допомогою POD сторінки, оскільки ці сторінки чудово обробляються модулем po4a::pod і оскільки відповідник nroff визначає багато нових макросів, підтримку яких у модулі man автор не хотів би реалізовувати. У системі автора модуля 1432 із 4323 сторінок створено на основі POD. Такі сторінки ігноруватимуться модулем po4a::man.

Здебільшого, po4a::man виявлятиме проблеми і відмовлятимуться обробляти сторінку, видаючи відповідне повідомлення. У деяких рідкісних випадках програма завершить роботу без повідомлення про помилку, але виведені дані будуть помилковими. Такі випадки ми називаємо «вади» ;) Якщо вам трапиться такий випадок, звичайно ж, повідомте про нього розробникам, бажано, із виправленням…

=head1 СТАН ЦЬОГО МОДУЛЯ

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

Ось результати регулярного тестування у системах Linux:

=over 4

=item *

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

=item *

перетворення 10% решти сторінок завершується помилкою (наприклад, через те, що не передбачено підтримки макросу groff).

=item *

Крім того, менше за 1% сторінок вдається обробити за допомогою po4a без помилок, але результати мають суттєві вади (пропущені слова або вставлені нові слова)

=item *

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

=back

=head1 ТАКОЖ ПЕРЕГЛЯНЬТЕ

L<Locale::Po4a::Pod(3pm)>, L<Locale::Po4a::TransTractor(3pm)>, L<po4a(7)|po4a.7>

=head1 АВТОРИ

 Denis Barbier <barbier@linuxfr.org>
 Nicolas François <nicolas.francois@centraliens.net>
 Martin Quinson (mquinson#debian.org)

=head1 АВТОРСЬКІ ПРАВА ТА ЛІЦЕНЗУВАННЯ

© SPI, Inc., 2002–2008.

Ця програма є вільним програмним забезпеченням; ви можете поширювати її і/або вносити до неї зміни за умов дотримання GPL версії 2.0 або пізнішої (див. файл COPYING).

