
        *****************************************************
        *           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: преобразование man-страниц из/в PO-файлы

=head1 ОПИСАНИЕ

Целью проекта po4a (PO for anything, PO везде и для всего) является
облегчение процесса перевода (и что более важно — поддержки перевода),
используя инструменты gettext в тех случаях, когда их применение может
выглядеть неожиданным, например для документации.

Locale::Po4a::Man — это модуль, предназначенным для помощи в переводе
документации в формате nroff (язык разметки man-страниц) на другие
[человеческие] языки.

=head1 ПЕРЕВОД С ПОМОЩЬЮ PO4A::MAN

Этот модуль старается как только может, чтобы облегчить жизнь
переводчика. Чтобы добиться этого, передаваемый переводчику текст не
является дословной копией содержимого man-страницы. Фактически, большинство
сырых элементов формата nroff скрыты от глаз переводчика так, чтобы он не
смог их испортить.

=head2 Перенос текста

Абзацы без отступов будут автоматически переформатированы для
переводчика. Это может привести к некоторым незначительным отличиям в
выходных файлах, т.к. правила форматирования используемые groff не совсем
чёткие. Например, иногда резервируется два пробела после скобок.

В любом случае, отличия будут только в положении дополнительных пробелов в
переформатированном абзаце и, как мне кажется, это мелочь.

=head2 Определение шрифтов

Первое изменение — это изменение способа определения шрифтов. В nroff,
существует несколько способов определить, каким должен быть шрифт,
маленьким, жирным или курсивом. В переводимом тексте, существует только один
способ, позаимствованный из формата POD (Perl online documentation):

=over

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

эквивалентен \fIтекст\fP или ".I текст"

=item BE<lt>текстE<gt> -- жирный

эквивалентен \fBтекст\fP или ".B текст"

=item RE<lt>текстE<gt> -- обычный (man использует термин «roman» )

эквивалентен \fRтекст\fP

=item CWE<lt>текстE<gt> -- моноширинный

эквивалентен \f(CWтекст\fP или ".CW текст"

=back

Замечание: Начертание CW доступно не на всех groff устройствах. Такое
начертание не рекомендуется использовать. Предоставляется только для вашего
удобства.

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

Po4a автоматически производит транслитерацию некоторых символов для
облегчения перевода или последующей проверки оного. Ниже приведён список
таких транслитераций:

=over

=item дефисы

Дефис (-) и знак минуса (\-) в man страницах транслитерируются в простое
тире (-) в 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 для сгенерированных man-страниц. Возьмите
на заметку, что перевод сгенерированных man-страниц, а не тех файлов из
которых они были сгенерированы — ненадёжный процесс, и, следовательно, не
самая лучшая идея.

=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 НАЗВАНИЕ_ДОКУМЕНТА 1 "Месяц, день, год" OS "Имя man-раздела"

=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<begin>:I<end>, где I<begin> и I<end> являются командами, которые
определяют начало и конец секции, которая не должна быть переформатирована
(rewrapped).

Замечание: не производится никаких проверок, что каждая команда I<end>
соответствует своей команде I<begin>; любая завершающая команда отключает
режим no_wrap. Если макрос, который вы хотите использовать в качестве
I<begin> (или I<end>), не имеет соответствующего ему макроса I<end> (или
I<begin> соответственно), то вы можете указать любой существующий макрос для
I<end> (например fi) или для I<begin> (например nf). Данный макрос (и его
аргументы) переводиться не будут.

=item B<inline>

Данный параметр определяет разделённый запятыми список макросов, которые не
должны разбивать текущий абзац. Переводимая строка будет содержать I<foo
E<lt>.bar baz quxE<gt> quux>, где I<bar> — это команда, переданная
B<inline>, а I<baz> и I<qux> — её аргументы.

=item B<unknown_macros>

Этот параметр определяет поведение po4a когда встречается неизвестный
макрос.  По умолчанию po4a завершает работу выводя предупреждение.  Он может
принимать следующие значения: B<failed> (значение по умолчанию),
B<untranslated>, B<noarg>, B<translate_joined>,
B<translate_each>. (См. описание этих значений выше).

=back

=head1 СОЗДАНИЕ MAN-СТРАНИЦ СОВМЕСТИМЫХ С PO4A::MAN

Данный модуль очень ограничен в своих возможностях и будет таким всегда,
т.к. он не является интерпретатором nroff. Конечно, было бы возможно создать
полноценный интерпретатор nroff, чтобы предоставить авторам возможность
использовать все существующие макросы или даже объявлять новые, но мы не
хотим этим заниматься. Это было бы слишком сложной задачей и, как мы
считаем, в этом нет необходимости. Мы считаем, что если авторы man-страниц
хотят видеть свои творения переведёнными, то они смогут их немного
адаптировать, чтобы облегчить работу переводчикам.

Таким образом у парсера, реализованного в po4a, есть несколько известных
ограничений, которые мы не собираемся устранять. Эти ограничения содержат
некоторые ловушки, которые вам придётся избегать, если вы хотите чтобы
переводчики позаботились о вашей документации.

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

nroff это полноценный язык программирования, с возможностью определения
макросов, условными операторами и так далее. Так как этот парсер не является
полнофункциональным интерпретатором nroff, он не сможет обработать страницы,
использующие подобные возможности (у меня есть около 200 таких страниц).

=head2 Используйте простой набор макросов

Есть ещё несколько макросов, которые не поддерживаются po4a::man только
потому, что я не смог отыскать документацию по ним. Ниже приведён список
таковых макросов используемых на моём компьютере. Обратите внимание, что
этот список не является полным, т.к. программа завершает работу при первой
встрече с неподдерживаемым макросом. Если у вас есть информация о каком либо
из них, я с удовольствием добавлю поддержку оного. Из-за таких макросов
po4a::man не может обработать корректно порядка 250 страниц на моём
компьютере.

 ..               ."              .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 Заключение

Подводя итоги выше сказанному, делайте всё просто и не пытайтесь умничать,
когда готовите свои man-страницы. В nroff есть много возможностей, и многие
из них не поддерживаются этим парсером. Например, не пытайтесь связываться с
\c, чтобы остановить исполнение (как делают 40 страниц на моей машине). И
убедитесь, что оставляете аргументы макроса на той же строке, что и он
сам. Я знаю, что обратное допустимо в nroff, но это сильно осложнит работу
парсера.

Конечно, другая возможность — это использовать другой формат, более
дружелюбный к переводчикам (например POD с po4a::pod или один из
XML-семейства, например SGML), но благодаря po4a::man в этом больше нет
необходимости. Как говорится, если исходный формат вашей документации POD
или XML, то будет мудро переводить исходный формат, а не то что из него
сгенерировано. В большинстве случаев, po4a::man определяет сгенерированные
страницы и выводит предупреждение. Он даже откажется обрабатывать
сгенерированные из POD страницы, потому что такие страницы идеально
обрабатываются с помощью po4a::pod и потому что nroff в них определяет уйму
новых макросов, для которых у меня нет ни какого желания писать
поддержку. На моей машине, 1432 из 4323 страниц сгенерированы из POD и будут
проигнорированы po4a::man.

В большинстве случаев po4a::man будет находить проблему и прекратит
обработку страницы, выводя удовлетворительное сообщение. В некоторых редких
случаях программа завершится без предупреждений, но вывод будет
ошибочным. Такие случаи называются «Багами» ;) Если вы столкнётесь с
подобными ситуациями, обязательно сообщайте о них, по возможности с
исправлениями…

=head1 СОСТОЯНИЕ ЭТОГО МОДУЛЯ

Этот модуль можно использовать с большинством существующих man страниц.

Некоторые проверки регулярно проводятся на машинах с 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 АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИИ

Copyright © 2002-2008 SPI, Inc.

Данная программа является свободным программным обеспечением; вы можете
распространять и/или изменять её на условиях Универсальной общественной
лицензии (GPL) GNU v2.0 или новее (см. файл COPYING).
