
        *****************************************************
        *           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>

This option controls the behavior of the module when it encounter a .de, .ie or .if section. It can take the following values:

=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>

This option specifies that the file was generated, and that po4a should not try to detect if the man pages was generated from another format.  This option is mandatory to use po4a on generated man pages.  Note that translating generated pages instead of sources ones is often more fragile, and thus a bad idea.

=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

The following options specify the behavior of a user-defined macro (with a .de request), or of a classical macro that is not supported by po4a.  They take as argument a comma-separated list of macros.  For example:

 -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).

Note: no test is done to ensure that an I<end> command matches its I<begin> command; any ending command stop the no_wrap mode.  If you have a I<begin> (respectively I<end>) macro that has no I<end> (respectively I<begin>), you can specify an existing I<end> (like fi) or I<begin> (like nf) as a counterpart.  These macros (and their arguments) won't be translated.

=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 завершает работу выводя предупреждение.  Он может принимать следующие значения: I<failed> (значение по умолчанию), I<untranslated>, I<noarg>, I<translate_joined>, I<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 (см. файл COPYING).

