Ukrainian (po4a) - en to uk translation catalogue (1104 entries)

note: type: Attribute 'xml:lang' of: <refentry>
en: en
uk: uk

note: type: Content of: <refentry><refentryinfo>
en: <date>2006-04-08</date>
uk: <date>8 квітня 2006 року</date>

note: type: Content of: <refentry><refmeta><refmiscinfo>
en: 2020-04-19
uk: 19 квітня 2020 року

note: type: Content of: <refentry><refmeta><refmiscinfo>
en: Po4a Tools
uk: Інструменти Po4a

note: type: Content of: <refentry><refnamediv><refpurpose>
en: display a translated man page according to a PO
uk: показ перекладеної сторінки підручника (man), яка відповідає файлу PO

note: type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
en: <command>po4a-display-man</command> <arg choice='plain'><option>-p</option> </arg> <arg choice='plain'><replaceable>PO_FILE</replaceable></arg> <arg choice='opt'><arg choice='plain'><option>-m</option> </arg><arg choice='plain'><replaceable>MASTER_FILE</replaceable></arg></arg> <arg choice='opt'><arg choice='plain'><option>-o</option> </arg><arg choice='plain'><replaceable>PO4A_OPT</replaceable></arg></arg>
uk: <command>po4a-display-man</command> <arg choice='plain'><option>-p</option> </arg> <arg choice='plain'><replaceable>ФАЙЛ_PO</replaceable></arg> <arg choice='opt'><arg choice='plain'><option>-m</option> </arg><arg choice='plain'><replaceable>ОСНОВНИЙ_ФАЙЛ</replaceable></arg></arg> <arg choice='opt'><arg choice='plain'><option>-o</option> </arg><arg choice='plain'><replaceable>ПАРАМЕТР_PO4A</replaceable></arg></arg>

note: type: =head1
en: DESCRIPTION
uk: ОПИС

note: type: Content of: <refentry><refsect1><para>
en: Translators can use <command>po4a-display-man</command> to see how their translation of a man page will be rendered to the end users, without recompiling and reinstalling the whole project.
uk: Перекладач може скористатися <command>po4a-display-pod</command>, якщо хоче перевірити, як буде виглядати сторінка підручника (man), без перекомпіляції і перевстановлення усього проєкту.

note: type: Content of: <refentry><refsect1><para>
en: This script only works with man pages written directly in <emphasis remap='I'>nroff</emphasis> and handled by the po4a's <emphasis remap='I'>man</emphasis> module.  Manual pages generated from other formats, like DocBook or POD, are not supported.  See <citerefentry><refentrytitle>po4a-display-pod</refentrytitle><manvolnum>1</manvolnum></citerefentry> for an equivalent supporting <emphasis remap='I'>POD</emphasis> documents.
uk: Цей скрипт працює лише для сторінок підручника, які було безпосередньо створено у <emphasis remap='I'>nroff</emphasis> і оброблено модулем <emphasis remap='I'>man</emphasis> po4a. Підтримки сторінок підручника, створених на основі інших форматів, зокрема DocBook або POD, не передбачено. Див. <citerefentry><refentrytitle>po4a-display-pod</refentrytitle><manvolnum>1</manvolnum></citerefentry>, якщо потрібна відповідна підтримка для документів <emphasis remap='I'>POD</emphasis>.

note: type: =head1
en: OPTIONS
uk: ПАРАМЕТРИ

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
en: <option>-p </option><replaceable>PO_FILE</replaceable>
uk: <option>-p </option><replaceable>ФАЙЛ_PO</replaceable>

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
en: The PO file containing the translations.
uk: Файл PO, у якому містяться переклади.

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
en: <option>-m </option><replaceable>MASTER_FILE</replaceable>
uk: <option>-m </option><replaceable>ОСНОВНИЙ_ФАЙЛ</replaceable>

note: .br type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
en: The original man page.  It can be the absolute or relative path to the original man page (gzipped or not), the name of the man page or the name and section of the man page (using the man.section format).  When the master document is not provided with the <option>-m</option> option, <command>po4a-display-man</command> tries to find the original man page based on the line reference of the first string in the PO.
uk: Початкова сторінка підручника. Можна вказати її за допомогою абсолютного або відносного шляху до сторінки man (стисненої gzip або нестисненої), назви сторінки підручника або назви розділу сторінки підручника (у форматі «підручник.розділ»). Якщо основний документ не вказано за допомогою параметра <option>-m</option>, програма <command>po4a-display-man</command> намагається знайти початкову сторінку підручника на основі рядка-посилання на сторінку у першому рядку у файлі PO.

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
en: <option>-o </option><replaceable>PO4A_OPT</replaceable>
uk: <option>-o </option><replaceable>ПАРАМЕТР_PO4A</replaceable>

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
en: Some options to pass to <citerefentry><refentrytitle>po4a-translate</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
uk: Деякі з параметрів, які слід передати <citerefentry><refentrytitle>po4a-translate</refentrytitle><manvolnum>1</manvolnum></citerefentry>.

note: type: =head1
en: SEE ALSO
uk: ТАКОЖ ПЕРЕГЛЯНЬТЕ

note: type: Content of: <refentry><refsect1><title>
en: AUTHOR
uk: АВТОР

note: type: Content of: <refentry><refentryinfo>
en: <date>2009-03-16</date>
uk: <date>16 березня 2009 року</date>

note: type: Content of: <refentry><refmeta><refmiscinfo>
en: 2009-03-16
uk: 16 березня 2009 року

note: type: Content of: <refentry><refnamediv><refpurpose>
en: display of a translated POD file according to a PO
uk: показ сторінки підручника (man) для перекладеного файла POD, що відповідає певному PO

note: type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
en: <command>po4a-display-pod</command> <arg choice='plain'><option>-p </option></arg> <arg choice='plain'><replaceable>PO_FILE</replaceable></arg> <arg choice='plain'><option>-m </option></arg> <arg choice='plain'><replaceable>POD_FILE</replaceable></arg> <arg choice='opt'><arg choice='plain'><option>-o </option></arg><arg choice='plain'><replaceable>PO4A_OPT</replaceable></arg></arg>
uk: <command>po4a-display-pod</command> <arg choice='plain'><option>-p </option></arg> <arg choice='plain'><replaceable>ФАЙЛ_PO</replaceable></arg> <arg choice='plain'><option>-m </option></arg> <arg choice='plain'><replaceable>ФАЙЛ_POD</replaceable></arg> <arg choice='opt'><arg choice='plain'><option>-o </option></arg><arg choice='plain'><replaceable>ПАРАМЕТРИ_PO4A</replaceable></arg></arg>

note: type: Content of: <refentry><refsect1><para>
en: Translators can use <command>po4a-display-pod</command> to see how their translation of a man page will be rendered to the end users, without recompiling and reinstalling the whole project.  Most of the time, the POD file is only available in source package or embedded in Perl script.
uk: Перекладач може скористатися <command>po4a-display-pod</command>, якщо хоче перевірити, як буде виглядати сторінка підручника (man), без перекомпіляції і перевстановлення усього проєкту. Загалом, файл POD зберігається лише у пакунку з початковим кодом або вбудованим у скрипт Perl.

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
en: <option>-m </option><replaceable>POD_FILE</replaceable>
uk: <option>-m </option><replaceable>ФАЙЛ_POD</replaceable>

note: type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
en: The original POD file used by po4a to generate PO file.
uk: Початковий файл POD, який використовується po4a для створення файла PO.

note: type: =head1
en: NAME
uk: НАЗВА

note: type: textblock
en: po4a - update both the PO files and translated documents in one shot
uk: po4a — оновлення файлів PO і перекладених документів у один прохід

note: type: =head1
en: SYNOPSIS
uk: КОРОТКИЙ ОПИС

note: type: textblock
en: B<po4a> [I<options>] I<config_file>
uk: B<po4a> [I<параметри>] I<файл_налаштувань>

note: type: textblock
en: po4a (PO for anything) eases the maintenance of documentation translation using the classical gettext tools. The main feature of po4a is that it decouples the translation of content from its document structure.  Please refer to the page L<po4a(7)> for a gentle introduction to this project.
uk: po4a («PO for anything» або «PO для усього») спрощує супровід перекладу документації з використанням класичних інструментів gettext. Основною перевагою po4a є відокремлення придатного до перекладу вмісту документа від його структури. Будь ласка, зверніться до сторінки L<po4a(7)>, щоб ознайомитися зі вступними зауваженнями щодо цього проєкту.

note: type: textblock
en: Upon execution, B<po4a> parses all documentation files specified in its configuration file. It updates the PO files (containing the translation) to reflect any change to the documentation, and produce a translated documentation by injecting the content's translation (found in the PO files) into the structure of the original master document.
uk: Під час виконання B<po4a> обробляє усі файли документації, вказані у файлі налаштувань програми. Програма оновлює файли PO (файли, які містять переклад) відповідно до усіх змін у документації і створює перекладені документи, вставивши вміст перекладу (який зберігається у файлах PO) до структури початкових основних документів.

note: type: textblock
en: At first, the PO files only contain the strings to translate from the original documentation. This file format allows the translators to manually provide a translation for each paragraph extracted by B<po4a>. If the documentation is modified after translation, B<po4a> marks the corresponding translations as "fuzzy" in the PO file to request a manual review by the translators. The translators can also provide so-called "addendum", that are extra content stating for example who did the translation and how to report bugs.
uk: Спочатку, у файлах PO містяться лише рядки з початкової документації, які слід перекласти. Файли у цьому форматі надають змогу перекладачам вручну перекласти кожен із абзаців документації, які видобуто B<po4a>. Якщо до документації після того, як її буде перекладено, буде внесено зміни, B<po4a> позначить відповідні переклади у файлі PO як «неточні» з метою наступного рецензування цих перекладів перекладачами. Крім того, перекладачі можуть надавати так звані «додатки», додаткові дані, у яких, наприклад, вказано, ким виконано переклад і як надсилати повідомлення про вади.

note: type: verbatim
en:  master documents ---+---->-------->---------+
      (doc authoring)    |                       |
                         V   (po4a executions)   >-----+--> translated
                         |                       |     |     documents
     existing PO files -->--> updated PO files >-+     |
          ^                            |               |
          |                            V               |
          +----------<---------<-------+               ^
           (manual translation process)                |
                                                       |
     addendum -->--------------------------------------+
uk:  основні документи---+---->-------->---------+
     (документування)    |                       |
                         V   (виконання po4a)    >-----+--> переклади
                         |                       |     |
     наявні файли PO   -->-> оновлені файли PO >-+     |
          ^                            |               |
          |                            V               |
          +----------<---------<-------+               ^
           (процес перекладу підручника)               |
                                                       |
     додаток --->--------------------------------------+

note: type: textblock
en: The workflow of B<po4a> is asynchronous, as suited to open-source projects. The documentation writers author the master documents at their own pace. The translators review and update the translations in the PO files. The maintainers rerun B<po4a> on need, to reflect any change to the original documentation to the PO files, and to produce updated documentation translations, by injecting the latest translation into the latest document structure.
uk: Робочий процес у B<po4a> є асинхронним, таким, що пасує проєктам із відкритим кодом. Автори документації створюють основні документи за власним графіком. Перекладачі рецензують і оновлюють переклади у файлах PO. Супровідники перезапускають B<po4a>, якщо це потрібно, для відтворення будь-яких змін у початковій документації у файлах PO і створення оновлених перекладів документації шляхом вставлення найсвіжіших перекладів до найсвіжішої структури документації.

note: type: textblock
en: By default, a given translated document is produced when at least 80% of its content is translated. The untranslated text is kept in the original language.  The produced documentation thus mixes languages if the translation is not complete. You can change the 80% threshold with the I<--keep> option described below. Note however that discarding translations as soon as they are not 100% may be discouraging for the translators whose work will almost never be shown to the users, while showing "translations" that are too incomplete may be troubling for the end users.
uk: Типово, програма створюватиме заданий перекладений документ, якщо перекладено принаймні 80% вмісту. Неперекладений текст зберігається початковою мовою. Таким чином, у створеній документації поєднуються мови, якщо переклад не завершено. ви можете змінити порогове значення у 80%, за допомогою параметра I<--keep>, який описано нижче. Відкидання перекладів, які виконано не на 100% може знизити мотивацію перекладачів, роботу яких ніколи не буде показано користувачам, але надання «перекладів», які є фрагментарними, може призвести до проблем у кінцевих користувачів.

note: type: textblock
en: Storing the translated documentation files in the version control system is probably a bad idea, since they are automatically generated. The precious files are the PO files, that contain the hard work of your fellow translators. Also, some people find it easier to interact with the translators through an online platform such as S<weblate>, but this is naturally fully optional.
uk: Ймовірно, не варто зберігати файли перекладеної документації у системі керування версіями, оскільки їхнє створення відбувається автоматично. Вартими уваги є лише файли PO, які містять результати важкої праці ваших колег-перекладачів. Крім того, багато кому простіше взаємодіяти з перекладачами за допомогою інтернет-платформи, подібної до S<weblate>, але це, звичайно ж, справа уподобань.

note: type: =head2
en: Quick start tutorial
uk: Настанови початкового рівня

note: type: textblock
en: Let's assume you maintain a program named B<foo> which has a man page F<man/foo.1> written in English (the bridge language in most open-source projects, but B<po4a> can be used from or to any language). Some times ago, someone provided a German translation named F<man/foo.de.1> and disappeared.  This is a problem because you just got a bug report saying that your documentation contains a gravely misleading information that must be fixed in all languages, but you don't speak German so you can only modify the original, not the translation. Now, another contributor wants to contribute a translation to Japanese, a language that you don't master either.
uk: Припустімо, що ви є супровідником програми із назвою B<foo>, яка має сторінку підручника F<man/foo.1>, написану англійською мовою (базова мова у більшості проєктів із відкритим кодом, але B<po4a> можна скористатися для перекладу з будь-якої мови будь-якою мовою). Колись хтось вже виконав переклад німецькою, який має назву F<man/foo.de.1>, а потім припинив участь у перекладі. Це стало проблемою, коли ви отримали звіт про ваду, яка полягає у тому, що у документації містяться помилкові дані, які слід виправити в усіх перекладах, але ви не дуже добре знаєте німецьку, тому можете виправити оригінал, але не переклад. Крім того, інший учасник хоче взяти участь у перекладі японською, мовою, якої ви також не знаєте.

note: type: textblock
en: It is time to convert your documentation to B<po4a> to solve your documentation maintenance nightmares. You want to update the doc when needed, you want to ease the work of your fellow translators, and you want to ensure that your users never see any outdated and thus misleading documentation.
uk: Час перетворити документацію до формату B<po4a>, щоб усунути ці жахи супроводу документації. Ви хочете оновити документацію потрібним чином, хочете спростити роботу колегам-перекладачам і хочете бути певні, що користувачі не бачитимуть застарілої, а отже, помилкової документації.

note: type: textblock
en: The conversion includes two steps: setup the po4a infrastructure, and convert the previous German translation to salvage the previous work. This latter part is done using S<po4a-gettextize>, as follows. As detailed in the documentation of L<po4a-gettextize(1)>, this process rarely fully automatic, but once it's done, the B<de.po> file containing the German translation can be integrated in your po4a workflow.
uk: Перетворення відбувається у два кроки: налаштовування інфраструктури po4a і перетворення попереднього перекладу німецькою з метою збереження результатів раніше виконаної роботи. Другу частину роботи виконає S<po4a-gettextize>, як це описано нижче. Як зазначено у документації до L<po4a-gettextize(1)>, процес перетворення нечасто буває повністю автоматичним, але після його завершення, файл B<de.po>, що містить переклад німецькою, може бути інтегровано до вашого робочого процесу po4a.

note: type: textblock
en: Let's now configure po4a. With the appropriate file layout, your configuration file could be as simple as this:
uk: Налаштуймо po4a. Якщо використати відповідну структуру каталогів і файлів, ваш файл налаштувань може бути доволі простим:

note: type: textblock
en: It specifies that all PO files (containing the work of the translators) are the F<man/po4a/> directory, and that you have only one master file, F<man/foo.1>. If you had several master files, you would have several lines similar to the second one. Each such line also specify where to write the corresponding translation files. Here, the German translation of F<man/foo.1> is in F<man/translated/foo.de.1>.
uk: Тут вказано, що усі файли PO (файли, що містять роботу перекладачів) зберігаються у каталозі F<man/po4a/>, і у проєкт є лише один основний файл, F<man/foo.1>. Якщо б у вас було декілька основних файлів, вам слід було б дописати декілька рядків, які були б подібні до другого рядка. Кожен такий рядок визначає, куди записувати відповідні файли перекладу. Тут, перекладом F<man/foo.1> є F<man/translated/foo.de.1>.

note: type: textblock
en: The last thing we need to complete the configuration of B<po4a> is a POT file containing the template material that should be used to start a new translation.  Simply create an empty file with the S<.pot> extension in the specified S<po_directory> (e.g. F<man/po4a/foo.pot>), and B<po4a> will fill it with the expected content.
uk: Останнім для завершення налаштовування B<po4a> ми маємо вказати файл POT, який міститиме шаблонний матеріал, яким слід користуватися для того, щоб розпочати новий переклад. Просто створіть порожній файл із суфіксом назви S<.pot> у вказаному S<po_directory> (наприклад F<man/po4a/foo.pot>), і B<po4a> заповнить його відповідними даними.

note: type: textblock
en: Here is a recap of the files in this setup:
uk: Ось короткий перелік файлів для цієї схеми роботи:

note: type: verbatim
en:   ├── man/
      │   ├── foo.1        <- The original man page, in English.
      │   ├── po4a/
      │   │   ├── de.po    <- The German PO translation, from gettextization.
      │   │   └── foo.pot  <- The POT template of future translations (empty at first)
      │   └── translated/  <- Directory where the translations will be created
      └── po4a.cfg         <- The configuration file.
uk:   ├── man/
      │   ├── foo.1        <- Початкова сторінка підручника англійською.
      │   ├── po4a/
      │   │   ├── de.po    <- Переклад німецькою у форматі PO після перетворення.
      │   │   └── foo.pot  <- Шаблон POT для майбутніх перекладів (спочатку порожній)
      │   └── translated/  <- Каталог, у якому буде створено переклади
      └── po4a.cfg         <- Файл налаштувань.

note: type: textblock
en: Once setup, executing B<po4a> will parse your documentation, update the POT template file, use it to update the PO translation files, and use them to update the documentation translation files. All in one command:
uk: Після завершення налаштовування виконання B<po4a> призведе до обробки документації, оновлення файла шаблонів POT, використання його для оновлення файлів перекладу PO і використання перекладів для оновлення файлів перекладу документації. Усе однією командою:

note: type: textblock
en: This it. B<po4a> is now fully configured. Once you've fixed your error in F<man/foo.1>, the offending paragraph in the German translation will be replaced by the fixed text in English. Mixing languages is not optimal, but it's the only way to remove errors in translations that you don't even understand, and ensure that the content presented to the users is never misleading. Updating the German translation is also much easier in the corresponding PO file, so the language mix-up may not last long. Finally, when the Japanese translator gives you a S<jp.po> translated file, just drop it in F<man/po4a/po/>. A translated page will appear as F<man/translated/foo.jp.1> (provided that enough content is translated) when you run B<po4a> again.
uk: Ось і все. Тепер B<po4a> повністю налаштовано. Після виправлення вашої помилки у F<man/foo.1> помилковий абзац у перекладі німецькою буде замінено виправленим текстом англійською. Суміш мов не є оптимальною, але це єдиний спосіб усувати помилки у перекладах мовами, які ви навіть не розумієте, та надання користувачам даних, які не є помилковими. Крім того, за допомогою відповідного файла PO також набагато простіше оновлювати переклад німецькою, тому суміш мов у перекладі не триматиметься аж надто довго. Нарешті, коли перекладач японською надасть вам перекладений файл S<jp.po>, просто запишіть його як F<man/po4a/po/>. Перекладена сторінка з'явиться як F<man/translated/foo.jp.1> (якщо переклад є достатньо повним), коли ви знову запустите B<po4a>.

note: type: textblock
en: Minimal threshold for translation percentage to keep (i.e. write) the resulting file (default: 80). I.e. by default, files have to be translated at least at 80% to be written on disk.
uk: Мінімальне порогове значення частки перекладених рядків у відсотках, щоб файл результат було збережено, тобто записано (типове значення: 80). Інакше кажучи, типово, щоб файл було записано на диск, його має бути перекладено принаймні на 80%.

note: type: textblock
en: Show a short help message.
uk: Показати коротке довідкове повідомлення.

note: type: textblock
en: Charset of the files containing the documents to translate. Note that all master documents must use the same charset.
uk: Кодування файлів, які містять документи для перекладу. Зауважте, що усі основні документи мають зберігатися у одному кодуванні.

note: type: textblock
en: Charset of the files containing the localized documents. Note that all translated documents will use the same charset.
uk: Кодування файлів, які містять перекладені документи. Зауважте, що усі перекладені документи мають зберігатися у одному кодуванні.

note: type: textblock
en: Charset of the addenda. Note that all the addenda should be in the same charset.
uk: Кодування для додатків. Зауважте, що дані усіх додатків мають зберігатися у одному кодуванні.

note: type: textblock
en: Display the version of the script and exit.
uk: Вивести дані щодо версії скрипту і завершити роботу.

note: type: textblock
en: Increase the verbosity of the program.
uk: Збільшити докладність повідомлень програми.

note: type: textblock
en: Decrease the verbosity of the program.
uk: Зменшити докладність повідомлень програми.

note: type: textblock
en: Output some debugging information.
uk: Вивести деякі діагностичні відомості.

note: type: textblock
en: Extra option(s) to pass to the format plugin. See the documentation of each plugin for more information about the valid options and their meanings. For example, you could pass '-o tablecells' to the AsciiDoc parser, while the text parser would accept '-o tabs=split'.
uk: Додаткові параметри, які слід передати додатку форматування. Докладніші відомості щодо параметрів кожного з додатків можна знайти у документації до відповідного додатка. Наприклад, ви можете передати «-o tablecells» до обробника AsciiDoc, а обробнику звичайного тексту можна передати «-o tabs=split».

note: type: textblock
en: Always generate the POT and PO files, even if B<po4a> considers it is not necessary.
uk: Завжди створювати файли POT і PO, навіть якщо B<po4a> це видається непотрібним.

note: type: textblock
en: The default behavior (when B<--force> is not specified) is the following:
uk: Типова поведінка (якщо не вказано B<--force>) така:

note: type: textblock
en: If the POT file already exists, it is regenerated if a master document or the configuration file is more recent (unless B<--no-update> is provided).  The POT file is also written in a temporary document and B<po4a> verifies that the changes are really needed.
uk: Якщо файл POT вже існує, його буде повторно створено, якщо момент часу внесення змін до основного документа або файла налаштувань є новішим за момент часу внесення змін до файла POT (якщо не вказано B<--no-update>). Крім того, файл POT буде записано до тимчасового документа, за яким B<po4a> визначить, чи справді слід вносити якісь зміни до файла.

note: type: textblock
en: Also, a translation is regenerated only if its master document, the PO file, one of its addenda or the configuration file is more recent.  To avoid trying to regenerate translations which do not pass the threshold test (see B<--keep>), a file with the F<.po4a-stamp> extension can be created (see B<--stamp>).
uk: Крім того, перекладений документ буде повторно створено, лише якщо його основний документ, файл PO, один із додатків або файл налаштувань виявиться актуальнішим. Щоб запобігти спробам повторного створення перекладених документів, які не проходять перевірки на порогове значення перекладів (див. B<--keep>), буде створено файл із суфіксом назви F<.po4a-stamp> (див. B<--stamp>).

note: type: textblock
en: If a master document includes files, you should use the B<--force> flag because the modification time of these included files are not taken into account.
uk: Якщо до основного документа включаються додаткові файли, вам слід скористатися прапорцем B<--force>, інакше час внесення змін до цих включених файлів не буде враховано.

note: type: textblock
en: The PO files are always re-generated based on the POT with B<msgmerge -U>.
uk: Файли PO завжди повторно створюються на основі файла POT за допомогою B<msgmerge -U>.

note: type: textblock
en: Tells B<po4a> to create stamp files when a translation is not generated because it does not reach the threshold. These stamp files are named according to the expected translated document, with the F<.po4a-stamp> extension.
uk: Наказати B<po4a> створити файли штампів, якщо перекладений документ не створено через те, що його переклад не досяг порогового значення. Назви цих файлів штампів будуть відповідати назвам очікуваних перекладених документів із додаванням суфікса F<.po4a-stamp>.

note: type: textblock
en: Note: This only activates the creation of the F<.po4a-stamp> files. The stamp files are always used if they exist, and they are removed with B<--rm-translations> or when the file is finally translated.
uk: Зауваження: цей параметр вмикає лише створення файлів F<.po4a-stamp>. Програма завжди використовуватиме файли штампів, якщо вони існують, їх буде вилучено, лише якщо вказано параметр B<--rm-translations> або переклад файла буде завершено.

note: type: textblock
en: Do not generate the translated documents, only update the POT and PO files.
uk: Не створювати перекладених документів, лише оновити файли POT і PO.

note: type: textblock
en: Do not change the POT and PO files, only the translation may be updated.
uk: Не змінювати файли POT і PO, лише оновити, якщо можливо, перекладені документи.

note: type: textblock
en: Keeps the existing translation files even if the translation doesn't meet the threshold specified by B<--keep>.  This option does not create new translation files with few content, but it will save existing translations which decay because of changes to the master files.
uk: Зберегти файли наявного перекладу, якщо не досягнуто порогового значення, вказаного за допомогою B<--keep>. При цьому не буде створено нових файлів із недостатнім рівнем перекладу, натомість буде збережено застарілі файли, рівень достовірності перекладу у яких впаде через зміни у основних файлах.

note: type: textblock
en: WARNING: This flag changes the po4a behavior in a rather drastic way: your translated files will not get updated at all until the translation improves. Only use this flag if you prefer shipping an outdated translated documentation rather than only shipping an accurate untranslated documentation.
uk: УВАГА: цей прапорець змінює поведінку po4a у доволі критичний спосіб: файли перекладу не оновлюватимуться, аж доки не буде поліпшено переклад. Використовуйте цей прапорець, лише якщо ви надаєте перевагу розповсюдженню застарілої перекладеної документації перед розповсюдженням точної, але не перекладеної документації.

note: type: textblock
en: Remove the translated files (implies B<--no-translations>).
uk: Вилучити перекладені файли (із неявним додаванням B<--no-translations>).

note: type: textblock
en: This flag does nothing since 0.41, and may be removed in later releases.
uk: Цей прапорець не діє з версії 0.41, його може бути вилучено у наступних випусках.

note: type: =item
en: B<--translate-only> I<translated-file>
uk: B<--translate-only> I<перекладений-файл>

note: type: textblock
en: Translate only the specified file.  It may be useful to speed up processing if a configuration file contains a lot of files.  Note that this option does not update PO and POT files.  This option can be used multiple times.
uk: Перекласти лише вказаний файл. Може бути корисним для пришвидшення обробки файла налаштувань, якщо у файлі налаштувань міститься багато файлів. Зауважте, що використання цього параметра не призведе до оновлення файлів PO і POT. Цей параметр можна використовувати декілька разів у одній команді.

note: type: =item
en: B<--variable> I<var>B<=>I<value>
uk: B<--variable> I<змінна>B<=>I<значення>

note: type: textblock
en: Define a variable that will be expanded in the B<po4a> configuration file.  Every occurrence of I<$(var)> will be replaced by I<value>.  This option can be used multiple times.
uk: Визначити змінну, яку буде розгорнуто у файлі налаштувань B<po4a>. Усі випадки використання змінної I<$(змінна)> буде замінено на I<значення>. Цей параметр можна використовувати декілька разів у одній команді.

note: type: =item
en: B<--srcdir> I<SRCDIR>
uk: B<--srcdir> I<КАТАЛОГ_ПОЧАТКОВИХ_ДАНИХ>

note: type: textblock
en: Set the base directory for all input documents specified in the B<po4a> configuration file.
uk: Встановити базовий каталог для усіх вхідних документів, які вказано у файлі налаштувань B<po4a>.

note: type: textblock
en: If both I<destdir> and I<srcdir> are specified, input files are searched in the following directories, in order: I<destdir>, the current directory and I<srcdir>. Output files are written to I<destdir> if specified, or to the current directory.
uk: Якщо вказано одразу I<destdir> і I<srcdir>, пошук вхідних файлів відбуватиметься у таких категоріях, у вказаному порядку: I<destdir>, поточний каталог і I<srcdir>. Файли результатів записуються до I<destdir>, якщо вказано, або до поточного каталогу.

note: type: =item
en: B<--destdir> I<DESTDIR>
uk: B<--destdir> I<КАТАЛОГ_ПРИЗНАЧЕННЯ>

note: type: textblock
en: Set the base directory for all the output documents specified in the B<po4a> configuration file (see B<--srcdir> above).
uk: Встановити базовий каталог для усіх вихідних документів, які вказано у файлі налаштувань B<po4a> (див. B<--srcdir> вище).

note: type: =head2
en: Options modifying the POT header
uk: Параметри для внесення змін до заголовка POT

note: type: =item
en: B<--porefs> I<type>
uk: B<--porefs> I<тип>

note: type: textblock
en: Specify the reference format. Argument I<type> can be one of B<never> to not produce any reference, B<file> to only specify the file without the line number, B<counter> to replace line number by an increasing counter, and B<full> to include complete references (default: full).
uk: Вказує формат посилань. Аргумент I<тип> може мати значення B<never>, якщо не слід взагалі створювати посилань; B<file>, якщо слід вказати файл без номерів рядків; B<counter>, якщо слід замінити номер рядка значенням лічильника; і B<full>, якщо посилання слід включити повністю (типове значення: full).

note: type: =item
en: B<--wrap-po> B<no>|B<newlines>|I<number> (default: 76)
uk: B<--wrap-po> B<no>|B<newlines>|I<число> (типове значення: 76)

note: type: textblock
en: Specify how the po file should be wrapped. This gives the choice between either files that are nicely wrapped but could lead to git conflicts, or files that are easier to handle automatically, but harder to read for humans.
uk: Визначає спосіб перенесення рядків у файлі po. Так можна вибрати між файлами із добре перенесеними рядками, які можуть спричиняти конфлікти у git, та файлами, які простіше обробляються автоматично, але є важчими для читання.

note: type: textblock
en: Historically, the gettext suite has reformatted the po files at the 77th column for cosmetics. This option specifies the behavior of po4a. If set to a numerical value, po4a will wrap the po file after this column and after newlines in the content. If set to B<newlines>, po4a will only split the msgid and msgstr after newlines in the content. If set to B<no>, po4a will not wrap the po file at all.  The reference comments are always wrapped by the gettext tools that we use internally.
uk: Так історично склалося, що комплект програм gettext виконує переформатування файлів po так, щоб рядки було перенесено на 77-й позиції, з косметичних міркувань. За допомогою цього параметра можна встановити відповідну поведінку po4a. Якщо встановлено числове значення, po4a переноситиме рядки у файлі po після вказаної позиції і після символів розриву рядка у самих рядках. Якщо встановити значення B<newlines>, po4a розриватиме рядки у msgid і msgstr лише після символів нового рядка у вмісті. Якщо встановити значення B<no>, po4a не переноситиме рядки у файлі po взагалі. Перенесення рядків у коментарях виконується завжди інструментами gettext, які програма використовує на внутрішньому рівні.

note: type: textblock
en: Note that this option has no impact on how the msgid and msgstr are wrapped, i.e.  on how newlines are added to the content of these strings.
uk: Зауважте, що цей параметр не стосується того, яким чином переноситимуться рядки у msgid і msgstr, тобто того, у який спосіб до цих рядків додаватимуться символи розриву рядків.

note: type: textblock
en: Language of the source files containing the documents to translate. Note that all master documents must use the same language.
uk: Мова файлів, які містять документ для перекладу. Зауважте, що усі основні документи мають належати до однієї мови.

note: type: =item
en: B<--msgid-bugs-address> I<email@address>
uk: B<--msgid-bugs-address> I<адреса@електронної.пошти>

note: type: textblock
en: Set the report address for msgid bugs. By default, the created POT files have no Report-Msgid-Bugs-To fields.
uk: Встановити адресу для звітування щодо помилок у msgid (початкових неперекладених рядках). Типово, у створених файлах POT не буде полів Report-Msgid-Bugs-To.

note: type: =item
en: B<--copyright-holder> I<string>
uk: B<--copyright-holder> I<рядок>

note: type: textblock
en: Set the copyright holder in the POT header. The default value is "Free Software Foundation, Inc."
uk: Встановити запис авторських прав у заголовку POTr. Типовим значенням є «Free Software Foundation, Inc.»

note: type: =item
en: B<--package-name> I<string>
uk: B<--package-name> I<рядок>

note: type: textblock
en: Set the package name for the POT header. The default is "PACKAGE".
uk: Встановити назву пакунка для заголовка POT. Типовою є назва пакунка «PACKAGE».

note: type: =item
en: B<--package-version> I<string>
uk: B<--package-version> I<рядок>

note: type: textblock
en: Set the package version for the POT header. The default is "VERSION".
uk: Встановити версію пакунка для заголовка POT. Типовим є запис «VERSION».

note: type: =head2
en: Options to modify the PO files
uk: Параметри для внесення змін до файлів PO

note: type: =item
en: B<--msgmerge-opt> I<options>
uk: B<--msgmerge-opt> I<параметри>

note: type: textblock
en: Extra options for B<msgmerge>(1).
uk: Додаткові параметри для B<msgmerge>(1).

note: type: textblock
en: Note: B<$lang> will be extended to the current language.
uk: Зауваження: B<$lang> буде розгорнуто до запису поточної мови.

note: type: textblock
en: This option removes B<--previous> from the options passed to B<msgmerge>.  This is necessary to support versions of B<gettext> earlier than 0.16.
uk: Цей параметр вилучає B<--previous> з параметрів, які передаються B<msgmerge>. За його допомогою реалізовано підтримку версій B<gettext> до 0.16.

note: type: textblock
en: This option adds B<--previous> to the options passed to B<msgmerge>.  It requires B<gettext> 0.16 or later, and is activated by default.
uk: Цей параметр додає B<--previous> до параметрів, які передаються B<msgmerge>. Щоб ним можна було скористатися, у системі має бути встановлено B<gettext> 0.16 або новішу версію. Цей параметр типово задіяно.

note: type: =head1
en: CONFIGURATION FILE
uk: ФАЙЛ НАЛАШТУВАНЬ

note: type: textblock
en: po4a expects a configuration file as argument. This file must contain the following elements:
uk: po4a потрібен аргумент із назвою файла налаштувань. Цей файл має містити такі елементи:

note: type: textblock
en: The path to the PO files and the list of languages existing in the project;
uk: Шлях до файлів PO і список наявних мов проєкту;

note: type: textblock
en: Optionally, some global options and so-called configuration aliases that are used as templates to configure individual master files;
uk: Необов'язково, деякі загальні параметри і так звані альтернативи налаштувань, які використовуються як шаблони для налаштовування обробки окремих основних файлів;

note: type: textblock
en: The list of each master file to translate, along with specific parameters.
uk: Список усіх основних документів, які слід перекладати, разом із специфічними для них параметрами.

note: type: textblock
en: All lines contain a command between square braces, followed by its parameters.  Comments begin with the char '#' and run until the end of the line. You can escape the end of line to spread a command over several lines.
uk: В усіх рядках міститься запис команди у квадратних дужках, за яким вказано параметри. Коментарі починаються з символу «#» і завершуються кінцем рядка. Ви можете екранувати кінець рядка і поділити команду на декілька рядків.

note: type: textblock
en: Some full examples are presented on this page, while other examples can be found in the C<t/cfg> directory of the source distribution.
uk: На цій сторінці представлено декілька повних прикладів. Інші приклади можна знайти у каталозі C<t/cfg> пакунка із початковим кодом програми.

note: type: =head2
en: Finding the PO and POT files
uk: Пошук файлів PO і POT

note: type: textblock
en: The simplest solution is to explicitly give the path to POT and PO files, as follows:
uk: Найпростішим рішенням є явне визначення шляху до файлів POT та PO, ось так:

note: type: textblock
en: This specifies the path to the POT file first, and then the paths to the German and French PO files.
uk: Тут ми спочатку вказуємо шлях до файла POT, а потім шляхи до файлів PO перекладів німецькою та французькою мовами.

note: type: textblock
en: The same information can be written as follows to reduce the risk of copy/paste errors:
uk: Те саме можна записати для зменшення ризику помилок при копіюванні ось так:

note: type: textblock
en: The C<$lang> component is automatically expanded using the provided languages list, reducing the risk of copy/paste error when a new language is added.
uk: Компонент C<$lang> буде автоматично розгорнути на основі наданого списку мов. Це зменшить ризик помилки під час вставляння при додаванні нової мови перекладу.

note: type: textblock
en: You can further compact the same information by only providing the path to the directory containing your translation project, as follows.
uk: Зробити той самий запис компактнішим можна надавши шлях до каталогу, у якому міститься проєкт з перекладу. Приклад наведено нижче.

note: type: textblock
en: The provided directory must contain a set of PO files, each named F<XX.po> with C<XX> the ISO 639-1 of the language used in this file. The directory must also contain a single POT file, with the C<.pot> file extension. For the first run, this file can be empty but it must exist (po4a cannot guess the name to use before the extension).
uk: У вказаному каталозі має міститися набір файлів PO, назви яких слід записувати у форматі F<XX.po>, де C<XX> — код мови перекладу за ISO 639-1. У каталозі також має зберігатися один файл POT із суфіксом назви C<.pot>. Для першого запуску цей файл може бути порожнім, але має існувати (po4a не може визначити назву, якою слід скористатися перед суфіксом).

note: type: textblock
en: Note that you must choose only one between C<po_directory> and C<po4a_paths>. The first one (C<po_directory>) is more compact, further reduces the risk of copy/paste error, but forces you to use the expected project structure and file names. The second one (C<po4a_paths>), is more explicit, probably more readable, and advised when you setup your first project with po4a.
uk: Зауважте, що слід вибрати лише один з варіантів, C<po_directory> або C<po4a_paths>. Перший (C<po_directory>) є компактнішим, зменшує ризик помилки під час копіювання, але примушує вас до використання очікуваної структури проєкту та назв файлів. Другий (C<po4a_paths>) є більш явним, ймовірно, зручнішим для читання, радимо користуватися ним, якщо ви налаштовуєте ваш перший проєкт у po4a.

note: type: =head3
en: Centralized or split PO files?
uk: Централізовані чи поділені файли PO?

note: type: textblock
en: By default, po4a produces one single PO file per target language, containing the whole content of your translation project. As your project grows, the size of these files may become problematic. When using weblate, it is possible to specify priorities for each translation segment (i.e., msgid) so that the important ones get translated first. Still, some translation teams prefer to split the content in several files.
uk: Типово, po4a створює по одному файлу PO для кожної мови перекладу. У цих файлах міститиметься увесь ваш проєкт перекладу. Зі зростанням вашого проєкту розмір цих файлів може стати проблемою. При використанні weblate можна встановити для кожного з повідомлень перекладу (тобто msgid) пріоритетність, тому варто встановити її так, щоб важливі рядки було перекладено першими, але деякі команди перекладачів, попри це, можуть просити про поділ даних на декілька файлів.

note: type: textblock
en: To have one PO file per master file, you simply have to use the string C<$master> in the name of your PO files on the C<[po4a_paths]> line, as follows.
uk: Щоб створити один файл PO для кожного основного файла, вам слід просто скористатися рядком C<$master> у назві ваших файлів PO у рядку C<[po4a_paths]>, як це показано нижче.

note: type: textblock
en: With this line, po4a will produce separate POT and PO files for each document to translate.  For example, if you have 3 documents and 5 languages, this will result in 3 POT files and 15 PO files. These files are named as specified on the C<po4a_paths> template, with C<$master> substituted to the basename of each document to translate. In case of name conflict, you can specify the POT file to use as follows, with the C<pot=> parameter.
uk: Якщо використати цей рядок, po4a створюватиме окремі файли POT і PO для кожного документа, який слід перекласти. Наприклад, якщо у вас є 3 документи та 5 мов, буде створено 3 файли POT та 15 файлів PO. Назви для цих файлів буде вибрано за шаблоном C<po4a_paths>, а C<$master> буде замінено на базову назву кожного документа, який слід перекласти. Якщо виникне конфлікт назв, ви можете вказати файл POT, який слід використати, так, як це показано нижче, за допомогою параметра C<pot = >.

note: type: textblock
en: This feature can also be used to group several translated files into the same POT file. The following example only produces 2 POT files: F<l10n/po/foo.pot> (containing the material from F<foo/gui.xml>) and F<l10n/po/bar.pot> (containing the material from both F<bar/gui.xml> and F<bar/cli.xml>).
uk: Цією можливістю також можна скористатися для групування декількох перекладених файлів до одного файла POT. У наведеному нижче прикладі буде створено лише 2 файли POT: F<l10n/po/foo.pot> (що містить матеріал з F<foo/gui.xml>) і F<l10n/po/bar.pot> (що містить матеріал з F<bar/gui.xml> і F<bar/cli.xml>).

note: type: textblock
en: In split mode, B<po4a> builds a temporary compendium during the PO update, to share the translations between all the PO files. If two PO files have different translations for the same string, B<po4a> will mark this string as fuzzy and will submit both translations in all the PO files containing this string. When unfuzzied by the translator, the translation is automatically used in every PO files.
uk: У режимі поділу B<po4a> будує тимчасову збірку під час оновлення файлів PO, щоб розподілити переклади між усіма файлами PO. Якщо буде виявлено два файли PO із різними перекладами одного і того самого рядка, B<po4a> позначить переклад рядка як неточний і надішле обидва переклади до усіх файлів PO, які містять цей рядок. Коли перекладач оновлюватиме переклад і вилучить позначку неточного перекладу у одному з файлів PO, переклад цього рядка буде оновлено у всіх інших файлах PO автоматично.

note: type: =head2
en: Specifying the documents to translate
uk: Визначення документів для перекладу

note: type: textblock
en: You must also list the documents that should be translated. For each master file, you must specify the format parser to use, the location of the translated document to produce, and optionally some configuration. Here is an example:
uk: Вам слід також вказати список документів, які має бути перекладено. Для кожного основного файла вам слід вказати обробник формату, розташування перекладеного документа, який слід створити, та, необов'язково, додаткові налаштування. Ось приклад:

note: type: textblock
en: But again, these complex lines are difficult to read and modify, e.g. when adding a new language. It is much simpler to reorganize things using the C<$lang> template as follows:
uk: Втім, знову, ці складні рядки важко читати і редагувати, наприклад, додавати нову мову. Набагато простіше перевпорядкувати речі за допомогою шаблона C<$lang> ось так:

note: type: =head2
en: Specifying options
uk: Визначення параметрів

note: type: textblock
en: There is two types of options: I<po4a options> are default values to the po4a command line options while I<format options> are used to change the behavior of the format parsers. As a I<po4a options>, you could for example specify in your configuration file that the default value of the B<--keep> command line parameter is 50% instead of 80%. I<Format options> are documented on the specific page of each parsing module, e.g. L<Locale::Po4a::Xml(3pm)>. You could for example pass B<nostrip> to the XML parser to not strip the spaces around the extracted strings.
uk: Ви можете вказати два типи параметрів: I<параметри po4a> є типовими значенням параметрів командного рядка po4a, а I<параметри форматування> використовуються для зміни поведінки засобів обробки форматування. За допомогою I<параметрів po4a>, наприклад, ви можете вказати у вашому файлі налаштувань типове значення параметра командного рядка B<--keep> 50% замість 80%. I<Параметри форматування> документовано на окремих сторінках кожного з модулів обробки форматування, наприклад, L<Locale::Po4a::Xml(3pm)>. Ви можете, наприклад, передати B<nostrip> до засобу обробки XML наказ не обрізати пробіли навколо видобутих рядків.

note: type: textblock
en: You can pass these options for a specific master file, or even for a specific translation of that file, using C<opt:> and C<opt_XX:> for the C<XX> language.  In the following example, the B<nostrip> option is passed to the XML parser (for all languages), while the threshold will be reduced to 0% for the French translation (that is thus always kept).
uk: Ви можете передати ці параметри для певного основного файла або навіть для певного перекладу цього файла за допомогою C<opt:> і C<opt_XX:> для мови C<XX>. У наступному прикладі параметр B<nostrip> передається обробнику XML (для усіх мов), а пороговий відсоток перекладу зменшено до 0% для перекладу французькою (тобто визначено, що цей переклад зберігатиметься завжди).

note: type: textblock
en: In any case, these configuration chunks must be located at the end of the line.  The declaration of files must come first, then the addendum if any (see below), and then only the options. The grouping of configuration chunks is not very important, since elements are internally concatenated as strings. The following examples are all equivalent:
uk: За будь-яких умов, ці фрагменти налаштувань має бути розташовано наприкінці рядка. Оголошення файлів мають бути першими, далі мають бути додатки, якщо такі є (див. нижче), а лише потім має бути вказано параметри. Групування фрагментів налаштувань не є дуже важливим, оскільки на внутрішньому рівні елементи буде поєднано як рядки. Наступні приклади є еквівалентними:

note: type: textblock
en: Note that language specific options are not used when building the POT file. It is for example impossible to pass B<nostrip> to the parser only when building the French translation, because the same POT file is used to update every languages. So the only options that can be language-specific are the ones that are used when producing the translation, as the C<--keep> option.
uk: Зауважте, що специфічні для мов параметри не використовуватимуться при збиранні файла POT. Наприклад, не можна передати B<nostrip> обробнику лише для збирання французького перекладу, оскільки той самий файл POT використовується для оновлення у кожній з мов. Тому єдині параметри, які можуть бути специфічними для мови, є параметри, які буде використано для створення перекладених документів, наприклад параметр C<--keep>.

note: type: =head3
en: Configuration aliases
uk: Альтернативи налаштувань

note: type: textblock
en: To pass the same options to several files, the best is to define a type alias as follows. In the next example, C<--keep 0> is passed to every Italian translation using this C<test> type, that is an extension of the C<man> type.
uk: Щоб передати ті самі параметри для декількох файлів, варто створити альтернативний тип у наведений нижче спосіб. У наступному прикладі, C<--keep 0> передається для усіх перекладів італійською за допомогою типу C<test>, який є розширенням типу C<man>.

note: type: textblock
en: You can also extend an existing type reusing the same name for the alias as follows. This is not interpreted as as an erroneous recursive definition.
uk: Ви також можете розширити наявний тип повторним використанням тієї самої назви як альтернативної у наведений нижче спосіб. Такі оголошення не вважаються помилковими рекурсивними оголошеннями.

note: type: =head3
en: Global default options
uk: Загальні типові параметри

note: type: textblock
en: You can also use C<[options]> lines to define options that must be used for all files, regardless of their type.
uk: Ви також можете скористатися рядками C<[options]> для визначення параметрів, які має бути використано для усіх файлів, незалежно від типу.

note: type: textblock
en: As with the command line options, you can abbreviate the parameters passed in the configuration file:
uk: Як і з параметрами командного рядка, ви можете скорочувати записи параметрів, які передаються через файл налаштувань:

note: type: =head3
en: Option priorities
uk: Пріоритетність параметрів

note: type: textblock
en: The options of every sources are concatenated, ensuring that the default values can easily be overridden by more specific options. The order is as follows:
uk: Параметри для усіх джерел буде поєднано. Це забезпечить просте перевизначення типових значень специфічними параметрами. Порядок визначення є таким:

note: type: textblock
en: C<[options]> lines provide default values that can be overridden by any other source.
uk: Рядки C<[options]> задають типові значення, які може бути перевизначено у будь-якому іншому джерелі.

note: type: textblock
en: Type aliases are then used. Language specific settings override the ones applicable to all languages.
uk: Альтернативні типи, які використано. Специфічні для мов параметри перевизначають параметри, які застосовуються для усіх мов.

note: type: textblock
en: Settings that are specific to a given master file override both the default ones and the ones coming from the type alias. In this case also, language specific settings override the global ones.
uk: Параметри, які є специфічними для вказаного основного файла, перевизначають як типові параметри, так і параметри, які походять із визначень альтернативних типів. У цьому випадку, так само, специфічні для мови параметри перевизначають загальні.

note: type: textblock
en: Finally, parameters provided on the B<po4a> command line override any settings from the configuration file.
uk: Нарешті, параметри, які задаються командним рядком B<po4a> мають вищий пріоритет за будь-які параметри з файла налаштувань.

note: type: =head3
en: Example
uk: Приклад

note: type: textblock
en: Here is an example showing how to quote the spaces and quotes:
uk: Ось приклад, який демонструє те, як екранувати пробіли і лапки:

note: type: =head2
en: Addendum: Adding extra content in the translation
uk: Додаток: додавання даних до перекладу

note: type: textblock
en: If you want to add an extra section to the translation, for example to give credit to the translator, then you need to define an addendum to the line defining your master file. Please refer to the page L<po4a(7)> for more details on the syntax of addendum files.
uk: Якщо вам потрібно додати додатковий розділ до вашого перекладу, наприклад, вказати у ньому подяки перекладачу, вам слід визначити додаток у рядку, який визначає ваш основний файл. Будь ласка, зверніться до сторінки підручника (man) L<po4a(7)>, щоб дізнатися більше про синтаксис файлів додатків.

note: type: textblock
en: You can also use language templates as follow:
uk: Використовувати шаблони мов можна так:

note: type: textblock
en: If an addendum fails to apply, the translation is discarded.
uk: Якщо додаток не вдасться застосувати, переклад буде відкинуто.

note: type: =head3
en: Modifiers for the addendum declaration
uk: Модифікатори для оголошення додатка

note: type: textblock
en: Addendum modifiers can simplify the configuration file in the case where not all languages provide an addendum, or when the list of addenda changes from one language to the other. The modifier is a single char located before the file name.
uk: Модифікатори додатків можуть спростити файл налаштувань, якщо додатки надаються не для усіх мов або якщо список додатків для різних мов є різним. Модифікатор — одинарний символ, який вказують перед назвою файла.

note: type: textblock
en: Include I<addendum_path> if this file does exist, otherwise do nothing.
uk: Включити I<шлях_до_додатка>, якщо цей файл існує, інакше, не робити нічого.

note: type: textblock
en: I<addendum_path> is not a regular addendum but a file containing a list of addenda, one by line.  Each addendum may be preceded by modifiers.
uk: I<шлях_до_додатків> не є звичайним файлом додатка, а є файлом, що містить список додатків, по одному на рядок. Перед записом кожного з додатків може бути вказано модифікатори.

note: type: textblock
en: I<addendum_path> is discarded, it is not loaded and will not be loaded by any further addendum specification.
uk: I<шлях_до_додатків> відкидається, він не завантажується, його не буде завантажено будь-якою подальшою специфікацією додатків.

note: type: textblock
en: The following includes an addendum in any language, but if only it exists. No error is reported if the addendum does not exist.
uk: Вказана нижче інструкція призводить до включення додатка для усіх мов, але лише якщо такий додаток існує. Якщо додатка не існує, програма не повідомлятиме про це додатково.

note: type: textblock
en: The following includes a list of addendum for every language:
uk: Наведений нижче код включає список додатків для будь-якої мови:

note: type: =head2
en: Filtering the translated strings
uk: Фільтрування перекладених рядків

note: type: textblock
en: Sometimes, you want to hide some strings from the translation process. To that extend, you can give a C<pot_in> parameter to your master file to specify the name of the file to use instead of the real master when building the POT file. Here is an example:
uk: Іноді, може виникнути потреба в усуванні частини рядків з перекладу. Для цього ви можете передати параметр C<pot_in> для вашого основного файла з метою визначення назви файла, який буде використано замість основного при побудові файла POT. Ось приклад:

note: type: textblock
en: With this setting, the strings to translate will be extracted from the F<book-filtered.xml> (that must be produced before calling B<po4a>) while the translated files will be built from F<book.xml>. As a result, any string that is part of F<book.xml> but not in F<book-filtered.xml> will not be included in the PO files, preventing the translators from providing a translation for them. So these strings will be left unmodified when producing the translated documents.  This naturally decreases the level of translation, so you may need the C<--keep> option to ensure that the document is produced anyway.
uk: У прикладі, рядки для перекладу буде видобуто з файла F<book-filtered.xml> (який має бути створено до виклику B<po4a>), а перекладені файли буде створено з файла F<book.xml>. У результаті, усі рядки, які є частиною файла F<book.xml>, але не є частиною F<book-filtered.xml> не буде включено до файлів PO, а отже, перекладачі не витрачатимуть час на переклад цих рядків. Тому ці рядки лишатимуться незмінними і у перекладених документах. Це, звичайно ж, знизить рівень перекладеності документа, тому вам слід скористатися параметром C<--keep> для забезпечення створення перекладених документів навіть для неповних перекладів.

note: type: =head1
en: AUTHORS
uk: АВТОРИ

note: type: =head1
en: COPYRIGHT AND LICENSE
uk: АВТОРСЬКІ ПРАВА ТА ЛІЦЕНЗУВАННЯ

note: type: textblock
en: Copyright 2002-2022 by SPI, inc.
uk: © SPI, inc., 2002–2022.

note: type: textblock
en: This program is free software; you may redistribute it and/or modify it under the terms of GPL (see the COPYING file).
uk: Ця програма є вільним програмним забезпеченням; ви можете поширювати її і/або вносити до неї зміни за умов дотримання GPL (див. файл COPYING).

note: type: textblock
en: po4a-gettextize - convert an original file (and its translation) to a PO file
uk: po4a-gettextize — програма для перетворення початкового файла (і його перекладу) на файл PO

note: type: textblock
en: B<po4a-gettextize> B<-f> I<fmt> B<-m> I<master.doc> B<-l> I<XX.doc> B<-p> I<XX.po>
uk: B<po4a-gettextize> B<-f> I<формат> B<-m> I<основний.документ> B<-l> I<XX.документ> B<-p> I<XX.po>

note: type: textblock
en: (I<XX.po> is the output, all others are inputs)
uk: (I<XX.po> вказує на результат, усі інші вказують на вхідні дані)

note: type: textblock
en: The B<po4a-gettextize> script helps you converting your previously existing translations into a po4a-based workflow. This is only to be done once to salvage an existing translation while converting to po4a, not on a regular basis after the conversion of your project. This tedious process is explained in details in Section 'Converting a manual translation to po4a' below.
uk: Скрипт B<po4a-gettextize> допоможе вам перетворити ваші наявні переклади до формату, придатного до робочої процедури на основі po4a. Таке перетворення до формату po4a для збереження наявного перекладу достатньо зробити один раз. Його не доведеться робити регулярно після перетворення вашого проєкту. Цю марудну процедуру докладно описано у розділі «Перетворення виконаного вручну перекладу до формату po4a» нижче.

note: type: textblock
en: You must provide both a master file (e.g., the source in English) and an existing translated file (e.g., a previous translation attempt without po4a). If you provide more than one master or translation files, they will be used in sequence, but it may be easier to gettextize each page or chapter separately and then use B<msgmerge> to merge all produced PO files. As you wish.
uk: Вам слід вказати і основний файл (наприклад файл початкового коду англійською), і файл наявного перекладу (наприклад спробу попереднього перекладу без po4a). Якщо вами буде вказано декілька основних файлів або декілька файлів перекладу, їх буде використано послідовно, але, ймовірно, простіше перетворити до формату gettext кожну сторінку або главу окремо, а потім скористатися B<msgmerge> для об'єднання усіх створених файлів PO. Як вже захочете.

note: type: textblock
en: If the master document has non-ASCII characters, the new generated PO file will be in UTF-8. If the master document is completely in ASCII, the generated PO will use the encoding of the translated input document.
uk: Якщо у основному документі є символи, як не є символами ASCII, новостворений файл PO буде записано у кодуванні UTF-8. У інших випадках (якщо основний документ містить лише символи ASCII), створений файл PO використовуватиме кодування перекладеного вхідного документа.

note: type: textblock
en: Format of the documentation you want to handle. Use the B<--help-format> option to see the list of available formats.
uk: Формат документації, з якою ви працюватимете. Скористайтеся параметром B<--help-format>, щоб ознайомитися зі списком доступних форматів.

note: type: textblock
en: File containing the master document to translate. You can use this option multiple times if you want to gettextize multiple documents.
uk: Файл, який містить основний документ для перекладу. Ви можете скористатися цим параметром декілька разів, якщо ви хочете перетворити на формат gettext декілька документів одночасно.

note: type: textblock
en: Charset of the file containing the document to translate.
uk: Кодування символів файла, який містить дані документа, який слід перекласти.

note: type: textblock
en: File containing the localized (translated) document. If you provided multiple master files, you may wish to provide multiple localized file by using this option more than once.
uk: Файл, який містить дані перекладеного документа. Якщо було вказано декілька основних файлів, вам варто вказати декілька перекладених файлів, додавши їх до списку декількома використаннями цього параметра у одній команді.

note: type: textblock
en: Charset of the file containing the localized document.
uk: Кодування символів файла, який містить дані перекладеного документа.

note: type: textblock
en: File where the message catalog should be written. If not given, the message catalog will be written to the standard output.
uk: Файл, до якого слід записати каталог повідомлень. Якщо файл не вказано, каталог повідомлень буде записано до стандартного виведення (stdout).

note: type: textblock
en: List the documentation formats understood by po4a.
uk: Список форматів документації, відомих po4a.

note: type: textblock
en: Keep the temporary master and localized POT files built before merging.  This can be useful to understand why these files get desynchronized, leading to gettextization problems
uk: Зберегти тимчасові основний файл POT і локалізований файл, які зібрано до об'єднання. Може бути корисним для визначення причини розсинхронізації, яка призвела до проблем із перетворенням у формат gettext

note: type: =head2
en: Converting a manual translation to po4a
uk: Перетворення виконаного вручну перекладу до формату po4a

note: type: textblock
en: B<po4a-gettextize> synchronizes the master and localized files to extract their content into a PO file. The content of the master file gives the B<msgid> while the content of the localized file gives the B<msgstr>. This process is somewhat fragile: the Nth string of the translated file is supposed to be the translation of the Nth string in the original.
uk: B<po4a-gettextize> намагається виконати видобування перекладів з перекладених документів і зберегти як записи msgstr їх до записаного файла PO. Майте на увазі, що можливості із розбору тексту у цьому процесі доволі обмежено: програма просто вважатиме N-ий рядок із перекладеного файла перекладом N-го рядка із початкового файла. Звичайно ж, нічого не вийде, якщо структура двох файлів є різною.

note: type: textblock
en: Gettextization works best if you manage to retrieve the exact version of the original document that was used for translation. Even so, you may need to fiddle with both master and localized files to align their structure if it was changed by the original translator, so working on files' copies is advised.
uk: Перетворення до формату gettext найкраще працює, якщо ви плануєте отримати точну версію початкового документа, який було використано для перекладу. Навіть у таких випадках у вас може виникнути потреба у коригуванні основного файла та перекладених файлів для вирівнювання структури, якщо її було змінено початковим перекладачем. Тому радимо працювати із копіями файлів.

note: type: textblock
en: Internally, each po4a parser reports the syntactical type of each extracted strings. This is how desynchronization are detected during the gettextization.  In the example depicted below, it is very unlikely that the 4th string in translation (of type 'chapter') is the translation of the 4th string in original (of type 'paragraph'). It is more likely that a new paragraph was added to the original, or that two original paragraphs were merged together in the translation.
uk: На внутрішньому рівні обробник po4a повідомляє про синтаксичний тип кожної з видобутих рядків. У цей спосіб можна виявити розсинхронізацію під час перетворення до формату gettext. У наведеному нижче прикладі, дуже малоймовірним є те, що 4-й рядок у перекладі (типу «глава») є перекладом 4-го рядка оригіналу (типу «абзац»). Найімовірніше, до оригіналу було додано новий абзац або два абзаци в оригіналі було об'єднано у перекладі.

note: type: verbatim
en:     Original         Translation
uk:     Оригінал         Переклад

note: type: verbatim
en:   chapter            chapter
        paragraph          paragraph
        paragraph          paragraph
        paragraph        chapter
      chapter              paragraph
        paragraph          paragraph
uk:   глава                глава
        абзац                абзац
        абзац                абзац
        абзац              глава
      глава                абзац
        абзац                абзац

note: type: textblock
en: B<po4a-gettextize> will verbosely diagnose any structure desynchronization. When this happens, you should manually edit the files to add fake paragraphs or remove some content here and there until the structure of both files actually match. Some tricks are given below to salvage the most of the existing translation while doing so.
uk: B<po4a-gettextize> докладно повідомлятиме про усі виявлені розсинхронізації структури. Коли трапляється така розсинхронізація, вам слід виконати редагування файлів вручну для додавання фіктивних абзаців або вилучення частини вмісту у різних місцях, аж доки структура обох документів не стане однаковою. Нижче наведено деякі підказки, якщо допоможуть зберегти більшу частину наявного перекладу під час перетворення.

note: type: textblock
en: If you are lucky enough to have a perfect match in the file structures out of the box, building a correct PO file is a matter of seconds. Otherwise, you will soon understand why this process has such an ugly name :) Even so, gettextization often remains faster than translating everything again. I gettextized the French translation of the whole Perl documentation in one day despite the I<many> synchronization issues. Given the amount of text (2Mb of original text), restarting the translation without first salvaging the old translations would have required several months of work. In addition, this grunt work is the price to pay to get the comfort of po4a. Once converted, the synchronization between master documents and translations will always be fully automatic.
uk: За сприятливих умов (тобто якщо обидва документи повністю збігаються за структурою), перетворення буде виконано без проблем, і воно триватиме декілька секунд. Якщо ж це не так, будьте готові до певної марудної роботи. Щоб там не було, пам'ятайте, що уся ця робота є платою за наступне комфортне використання po4a. Після перетворення синхронізація вмісту між основними документами і перекладами завжди буде повністю автоматичною.

note: type: textblock
en: After a successful gettextization, the produced documents should be manually checked for undetected disparities and silent errors, as explained below.
uk: Після успішного перетворення до формату gettext створені документи слід перевірити вручну для виявлення невідповідностей та помилок, які було пропущено програмою без повідомлень, як це описано нижче.

note: type: =head3
en: Hints and tricks for the gettextization process
uk: Підказки і настанови щодо процедури перетворення до формату gettext

note: type: textblock
en: The gettextization stops as soon as a desynchronization is detected. When this happens, you need to edit the files as much as needed to re-align the files' structures. B<po4a-gettextize> is rather verbose when things go wrong. It reports the strings that don't match, their positions in the text, and the type of each of them. Moreover, the PO file generated so far is dumped as F<gettextization.failed.po> for further inspection.
uk: Коли таке трапляється, усе зводиться до повторного вирівнювання структури файлів вручну. B<po4a-gettextize> доволі докладно повідомляє про те, що не так. Програма повідомить вам про рядки, які не збігаються, їхнє розташування у тексті та тип кожного з них. Більше того, дані PO, які буде отримано на момент помилки, буде записано до файла F<gettextization.failed.po> для подальшого вивчення.

note: type: textblock
en: Here are some tricks to help you in this tedious process and ensure that you salvage the most of the previous translation:
uk: Ось декілька підказок, які допоможуть вам у цій марудній справі і збережуть більшу частину попереднього перекладу:

note: type: textblock
en: Remove all extra content of the translations, such as the section giving credits to the translators. They should be added separately to B<po4a> as addendas (see L<po4a(7)>).
uk: Вилучіть усі зайві елементи перекладу, зокрема розділ із подяками перекладачам. Їх слід додати окремо до B<po4a> за допомогою додатків (див. L<po4a(7)>).

note: type: textblock
en: When editing the files to align their structures, prefer editing the translation if possible. Indeed, if the changes to the original are too intrusive, the old and new versions will not be matched during the first po4a run after gettextization (see below). Any unmatched translation will be dumped anyway.  That being said, you still want to edit the original document if it's too hard to get the gettextization to proceed otherwise, even if it means that one paragraph of the translation is dumped. The important thing is to get a first PO file to start with.
uk: Якщо потрібно редагувати файли для вирівнювання структури, варто надавати перевагу редагуванню файла перекладу. Справді, якщо зміни у початковому файлі є надто разючими, відповідність старої і нової версії все одно не буде встановлено під час оновлення PO, отже відповідний переклад все одно буде відкинуто. Але не варто відкидати і редагування початкового документа: важливо отримати початкову версію файла PO, яку можна буде виправити пізніше.

note: type: textblock
en: Do not hesitate to kill any original content that would not exist in the translated version. This content will be automatically reintroduced afterward, when synchronizing the PO file with the document.
uk: Не вагайтеся і прибирайте з початкового файла усе, чого немає у перекладеній версії. Ці дані буде автоматично відтворено пізніше, під час синхронізації файла PO з документом.

note: type: textblock
en: You should probably inform the original author of any structural change in the translation that seems justified. Issues in the original document should reported to the author. Fixing them in your translation only fixes them for a part of the community. Plus, it is impossible to do so when using po4a ;) But you probably want to wait until the end of the conversion to B<po4a> before changing the original files.
uk: Вам, ймовірно, слід повідомити автора початкового документа про будь-які зміни у структурі перекладу, які варто зробити. Якщо у оригіналі документа були вади, вам слід повідомити про них авторові. Виправлення цих вад у вашому перекладі буде корисним лише частині спільноти. Більше того, таке виправлення неможливе, якщо використовується система po4a ;) Втім, вам, ймовірно, слід зачекати до завершення перетворення до формату B<po4a>, перш ніж вносити зміни до початкових файлів.

note: type: textblock
en: Sometimes, the paragraph content does match, but not their types. Fixing it is rather format-dependent. In POD and man, it often comes from the fact that one of them contains a line beginning with a white space while the other does not.  In those formats, such paragraph cannot be wrapped and thus become a different type. Just remove the space and you are fine. It may also be a typo in the tag name in XML.
uk: Іноді вміст абзаців збігається, але їхні типи є різними. Шлях виправлення цієї помилки залежить від формату документа. У POD і man поширеною причиною подібних проблем є те, що один з рядків починається із пробілу, а інший — ні. У таких форматах абзац із пробілом не можна переносити за рядками, отже він стає абзацом іншого типу. Достатньо вилучити пробіл, і усе запрацює. Також причиною може бути друкарська помилку у назві теґу у XML.

note: type: textblock
en: Likewise, two paragraphs may get merged together in POD when the separating line contains some spaces, or when there is no empty line between the B<=item> line and the content of the item.
uk: Далі, у POD два абзаци може бути об'єднано, якщо рядок, який їх відокремлює містить пробіли, або якщо між рядком B<=item> і вмістом запису немає порожнього рядка.

note: type: textblock
en: Sometimes, the desynchronization message seems odd because the translation is attached to the wrong original paragraph. It is the sign of an undetected issue earlier in the process. Search for the actual desynchronization point by inspecting the file F<gettextization.failed.po> that was produced, and fix the problem where it really is.
uk: Іноді між файлами виникає розсинхронізація, і переклад поєднується із помилковим початковим рядком. Це означає, що під час перетворення виникли якісь проблеми ще до розсинхронізованого рядка. Знайдіть у створеному F<gettextization.failed.po> місце, де починається розсинхронізація, і виправте її.

note: type: textblock
en: Other issues may come from duplicated strings in either the original or translation. Duplicated strings are merged in PO files, with two references.  This constitutes a difficulty for the gettextization algorithm, that is a simple one to one pairing between the B<msgid>s of both the master and the localized files. It is however believed that recent versions of po4a deal properly with duplicated strings, so you should report any remaining issue that you may encounter.
uk: Інші проблеми може бути пов'язано із дублюванням рядків у початкових даних або у даних перекладу. Дубльовані рядки об'єднують у файлах PO із додавання двох або декількох посилань. Це спричиняє проблеми для алгоритму перетворення до формату gettext, якому потрібна однозначна відповідність між B<msgid> у основному і локалізованому файлах. Втім, маємо надію, що нещодавні версії po4a добре працюють із дублікатами рядків. Тому варто повідомляти розробникам про усі залишкові проблеми, з якими ви можете зіткнутися.

note: type: =head2
en: Reviewing files produced by B<po4a-gettextize>
uk: Рецензування файлів, які створено B<po4a-gettextize>

note: type: textblock
en: Any file produced by B<po4a-gettextize> should be manually reviewed, even when the script terminates successfully. You should skim over the PO file, ensuring that the B<msgid> and B<msgstr> actually match. It is not necessary to ensure that the translation is perfectly correct yet, as all entries are marked as fuzzy translations anyway. You only need to check for obvious matching issues because badly matched translations will be dumped in subsequent steps while you want to salvage them.
uk: Усі файли, які створено B<po4a-gettextize> має бути переглянуто вручну, навіть якщо роботу скрипту буде завершено без помилок. Вам слід передивитися увесь файл PO, переконавшись, що B<msgid> і B<msgstr> є насправді відповідними. Необхідності у ідеальній правильності перекладу поки немає, оскільки усі записи буде все одно позначено як неточні. Вам слід лише виявити явні невідповідності, оскільки погана відповідність перекладів зашкодить на наступних кроках спроби зберегти їх.

note: type: textblock
en: Fortunately, this step does not require to master the target languages as you only want to recognize similar elements in each B<msgid> and its corresponding B<msgstr>. As a speaker of French, English, and some German myself, I can do this for all European languages at least, even if I cannot say one word of most of these languages. I sometimes manage to detect matching issues in non-Latin languages by looking at string length, phrase structures (does the amount of interrogation marks match?) and other clues, but I prefer when someone else can review those languages.
uk: На щастя, цей крок не потребує знання мови перекладу — вам слід лише виявити подібні елементи у кожному B<msgid> і його відповідному B<msgstr>. Якщо ви маєте певні знання з французької, англійської або німецької, ви можете робити це принаймні для європейських мов, навіть якщо не знаєте жодного слова з цих мов. Іноді невідповідність рядків для мов, які не записано латинкою, можна за довжиною рядка, структурами речень (кількістю знаків пунктуації) та іншими ознаками. Втім, варто залучити знавця мови для рецензування.

note: type: textblock
en: If you detect a mismatch, edit the original and translation files as if B<po4a-gettextize> reported an error, and try again. Once you have a decent PO file for your previous translation, backup it until you get po4a working correctly.
uk: Якщо вами буде виявлено невідповідність, внесіть зміни до початкового файла або файлів перекладу, як і у випадку повідомлення B<po4a-gettextize> про помилку, і повторіть спробу. Щойно ви досягнете добрих результатів для файла PO вашого попереднього перекладу, створіть його резервну копію, аж доки належним чином не запрацює po4a.

note: type: =head2
en: Running B<po4a> for the first time
uk: Перший запуск B<po4a>

note: type: textblock
en: The easiest way to setup po4a is to write a B<po4a.conf> configuration file, and use the integrated po4a program (B<po4a-updatepo> and B<po4a-translate> are deprecated). Please check the "CONFIGURATION FILE" Section in L<po4a(1)> documentation for more details.
uk: Найпростішим способом налаштовування po4a є створення файла налаштувань B<po4a.conf> і використання інтегрованої програми po4a (B<po4a-updatepo> і B<po4a-translate> вважаються застарілими). Будь ласка, ознайомтеся із розділом «ФАЙЛ НАЛАШТУВАНЬ» документації до L<po4a(1)>, щоб дізнатися більше.

note: type: textblock
en: When B<po4a> runs for the first time, the current version of the master documents will be used to update the PO files containing the old translations that you salvaged through gettextization. This can take quite a long time, because many of the B<msgid>s of from the gettextization do not exactly match the elements of the POT file built from the recent master files. This forces gettext to search for the closest one using a costly string proximity algorithm.  For example, the first run over the Perl documentation's French translation (5.5 MB PO file) took about 48 hours (yes, two days) while the subsequent ones only take seconds.
uk: Під час першого запуску B<po4a> поточну версію основних документів буде використано для оновлення файлів PO, що містять застарілі переклади, які було збережено шляхом перетворення до формату gettext. На це можна знадобитися доволі багато часу, оскільки багато B<msgid> з перетворених до формату gettext даних не точно відповідатимуть елементам файла POT, який побудовано на основі поточних основних файлів. Це примушує gettext до пошуку найближчого відповідника з використанням складного алгоритму пошуку близьких за вмістом рядків. Наприклад, перший запуск програми для перекладу документації Perl французькою мовою (файл PO розміром 5,5 МБ) тривав 48 годин (так, два дні), а наступні запускати триватимуть лише секунди.

note: type: =head2
en: Moving your translations to production
uk: Пересування ваших перекладів у робочий процес

note: type: textblock
en: After this first run, the PO files are ready to be reviewed by translators. All entries were marked as fuzzy in the PO file by B<po4a-gettextization>, forcing their careful review before use. Translators should take each entry to verify that the salvaged translation actually match the current original text, update the translation on need, and remove the fuzzy markers.
uk: Після першого запуску файли PO готові до рецензування перекладачами. Усі записи буде позначено як неточні у файлі PO програмою B<po4a-gettextization>, примушуючи до ретельного рецензування до їхнього використання. Перекладачам слід переглянути кожен запис, щоб переконатися, що збережений переклад справді є перекладом поточного початкового тексту, оновити переклад, якщо це потрібно, і вилучити позначки неточного перекладу.

note: type: textblock
en: Once enough fuzzy markers are removed, B<po4a> will start generating the translation files on disk, and you're ready to move your translation workflow to production. Some projects find it useful to rely on weblate to coordinate between translators and maintainers, but that's beyond B<po4a>' scope.
uk: Щойно буде вилучено достатньо позначок неточного перекладу, B<po4a> почне створювати файли перекладу на диску, і ви зможете перенести результати робочої процедури до робочого пакунка. Деякі проєкти вважають за потрібне покладатися на weblate для координації роботи між перекладачами і супровідниками, але це вже не стосується використання B<po4a>.

note: type: textblock
en: po4a-normalize - normalize a documentation file by parsing it in po4a, and writing it back
uk: po4a-normalize — програма для нормалізації файла документації шляхом його обробки за допомогою po4a і наступного запису оброблених даних назад до документа

note: type: textblock
en: B<po4a-normalize> B<-f> I<fmt> I<master.doc>
uk: B<po4a-normalize> B<-f> I<формат> I<основний.документ>

note: type: textblock
en: The po4a (PO for anything) project goal is to ease translations (and more interestingly, the maintenance of translations) using gettext tools on areas where they were not expected like documentation.
uk: Метою проєкту po4a (PO для усього) є спрощення перекладу (та, що ще цікавіше, супровід перекладів) за допомогою інструментів gettext у областях, де такий переклад спочатку не передбачався, зокрема у документації.

note: type: textblock
en: The B<po4a-normalize> script is a debugging tool used to make sure that po4a don't change the document when it's not supposed to. Only use it if you're developing a new module, or if you doubt the sanity of the tools.
uk: Скрипт B<po4a-normalize> є діагностичним інструментом, призначеним для того, щоб переконатися, що po4a не змінює документ, якщо у цьому немає потреби. Користуйтеся ним лише для розробки нових модулів або тоді, коли маєте сумніви у коректній роботі інструментів комплекту.

note: type: textblock
en: The generated document will be written to F<po4a-normalize.output> while the generated POT file will be written to F<po4a-normalize.po> by default, but you can use the B<--localized> and B<--pot> options to change that.
uk: Створений документ буде записано до F<po4a-normalize.output>, а створений файл POT типово матиме назву F<po4a-normalize.po>. Втім, ви можете скористатися параметрами B<--localized> та B<--pot>, щоб змінити цю назву.

note: type: textblock
en: Create an blank translated document.  The generated translated document will be generated assuming all messages are translated by a space or new line.
uk: Створити порожній перекладений документ. Перекладений документ буде створено у припущенні, що усі повідомлення було перекладено пробілом або символом нового рядка.

note: type: textblock
en: This is useful to check what parts of the document cannot be translated.
uk: Корисно для виявлення частин документа, які неможливо перекласти.

note: type: textblock
en: Name of the normalized file to produce (I<po4a-normalize.output> by default).
uk: Назва нормалізованого файла, який слід створити (типово, I<po4a-normalize.output>).

note: type: textblock
en: Pot file to produce (I<po4a-normalize.po> by default).
uk: Файл pot, який слід створити (типово, I<po4a-normalize.po>).

note: type: textblock
en: Copyright 2002-2020 by SPI, inc.
uk: © SPI, inc., 2002–2020.

note: type: textblock
en: po4a-translate - convert a PO file back to documentation format
uk: po4a-translate —програма для перетворення даних файла PO у формат документації

note: type: textblock
en: B<po4a-translate> B<-f> I<fmt> B<-m> I<master.doc> B<-p> I<XX.po> B<-l> I<XX.doc>
uk: B<po4a-translate> B<-f> I<формат> B<-m> I<основний.документ> B<-p> I<XX.po> B<-l> I<XX.doc>

note: type: textblock
en: (I<XX.doc> is the output, all others are inputs)
uk: (I<XX.документ> є результатом перетворення, усі інші аргументи є файлами вхідних даних)

note: type: textblock
en: The B<po4a-translate> script is in charge of converting the translation (which was done in a PO file) back into the documentation format. The provided PO file should be the translation of the POT file which was produced by L<po4a-gettextize(1)>.
uk: Скрипт B<po4a-translate> призначено для перетворення перекладу (який було виконано у форматі файла PO) назад у формат документації. Заданий файл PO має бути перекладом файла POT, створеного за допомогою L<po4a-gettextize(1)>.

note: type: textblock
en: Add a file to the resulting file (to put translator's name or a section "About this translation", for example). The first line of the file to insert should be a PO4A header indicating where it should be added (see section B<HOWTO add extra text to translations> in L<po4a(7)>).
uk: Додати файл до файла результатів (для того, щоб, наприклад, вказати ім'я перекладача або додати розділ «Про цей переклад»). Першим рядком файла, який слід вставити, має бути заголовок PO4A, який вказує, куди слід додати дані (див. розділ B<Як додавати текст до перекладів> у L<po4a(7)>).

note: type: textblock
en: File containing the master document to translate.
uk: Файл, який містить основний документ для перекладу.

note: type: textblock
en: File where the localized (translated) document should be written.
uk: Файл, до якого слід записати перекладений документ.

note: type: textblock
en: File from which the message catalog should be read.
uk: Файл, з якого слід прочитати каталог повідомлень.

note: type: textblock
en: Minimal threshold for translation percentage to keep (i.e. write) the resulting file (default: 80). I.e. by default, files have to be translated at least at 80% to get written.
uk: Мінімальне порогове значення частки перекладених рядків у відсотках, щоб файл результат було збережено, тобто записано (типове значення: 80). Інакше кажучи, типово, щоб файл було записано, його має бути перекладено принаймні на 80%.

note: type: textblock
en: Column at which we should wrap the resulting file.
uk: Позиція, на якій слід переносити рядки у файлі-результаті.

note: type: =item
en: B<--porefs> I<type>[,B<wrap>|B<nowrap>]
uk: B<--porefs> I<тип>[,B<wrap>|B<nowrap>]

note: type: textblock
en: Argument can be followed by a comma and either B<wrap> or B<nowrap> keyword.  References are written by default on a single line.  The B<wrap> option wraps references on several lines, to mimic B<gettext> tools (B<xgettext> and B<msgmerge>).  This option will become the default in a future release, because it is more sensible.  The B<nowrap> option is available so that users who want to keep the old behavior can do so.
uk: За аргументом можна вказати кому і ключове слово B<wrap> або B<nowrap>. Посилання типово записуються в один рядок. Використання ключового слова B<wrap> призведе до перенесення рядків у посиланнях з метою імітувати поведінку інструментів B<gettext> (B<xgettext> і B<msgmerge>). Цей варіант стане типовим у майбутньому випуску, оскільки його використання має більше сенсу. Варіант B<nowrap> лишиться доступним для користувачів, які хочуть зберегти поведінку попередніх версій програми.

note: type: textblock
en: Historically, the gettext suite has reformatted the po files at the 77th column for cosmetics. This option specifies the behavior of po4a. If set to a numerical value, po4a will wrap the po file after this column and after newlines in the content. If set to B<newlines>, po4a will only split the msgid and msgstr after newlines in the content. If set to B<no>, po4a will not wrap the po file at all.  The wrapping of the reference comments is controlled by the B<--porefs> option.
uk: Так історично склалося, що комплект програм gettext виконує переформатування файлів po так, щоб рядки було перенесено на 77-й позиції, з косметичних міркувань. За допомогою цього параметра можна встановити відповідну поведінку po4a. Якщо встановлено числове значення, po4a переноситиме рядки у файлі po після вказаної позиції і після символів розриву рядка у самих рядках. Якщо встановити значення B<newlines>, po4a розриватиме рядки у msgid і msgstr лише після символів нового рядка у вмісті. Якщо встановити значення B<no>, po4a не переноситиме рядки у файлі po взагалі. Перенесення рядків у коментарях контролюється за допомогою параметра B<--porefs>.

note: type: textblock
en: Note that this option has no impact on how the msgid and msgstr are wrapped, ie on how newlines are added to the content of these strings.
uk: Зауважте, що цей параметр не стосується того, яким чином переноситимуться рядки у msgid і msgstr, тобто того, у який спосіб до цих рядків додаватимуться символи розриву рядків.

note: type: =head1
en: Adding content (beside translations) to generated files
uk: Додавання даних (окрім перекладів) до створених файлів

note: type: textblock
en: To add some extra content to the generated document beside what you translated (like the name of the translator, or an "About this translation" section), you should use the B<--addendum> option.
uk: Щоб додати якісь дані до створеного документа, окрім перекладів (наприклад, ім'я перекладача або розділ «Про цей переклад»), вам слід скористатися параметром B<--addendum>.

note: type: textblock
en: The first line of the addendum must be a header indicating where to put it in the document (it can be before or after a given part of the document).  The rest of the file will be added verbatim to the resulting file without further processing.
uk: Першим рядком додатка має бути заголовок, який вказує, куди слід дописати додаток у документі (можна вказати позицію до чи після вказаної частини документа). Решту файла буде додано без змін до документа-результату без подальшої обробки.

note: type: textblock
en: Note that if po4a-translate fails to add one of the given files, it discards the whole translation (because the missing file could be the one indicating the author, what would prevent the users to contact him to report bugs in the translation).
uk: Зауважте, що якщо po4a-translate не вдасться додати один із вказаних файлів, увесь переклад буде відкинуто (оскільки у пропущеному файлі можуть бути дані щодо перекладача, і його нестача може призвести до неможливостя для користувачів зв'язатися із автором перекладу і повідомити йому чи їй про вади у перекладі).

note: type: textblock
en: The header has a pretty rigid syntax. For more information on how to use this feature and how it works, please refer to the L<po4a(7)> man page.
uk: Заголовок має доволі строгий синтаксис. Щоб дізнатися більше про те, як скористатися цією можливістю, і як вона працює, будь ласка, зверніться до сторінки підручника щодо <po4a(7)>.

note: type: textblock
en: po4a-updatepo - update the translation (in PO format) of documentation
uk: po4a-updatepo — програма для оновлення перекладів (у форматі PO) документації

note: type: textblock
en: B<po4a-updatepo> B<-f> I<fmt> (B<-m> I<master.doc>)+ (B<-p> I<XX.po>)+
uk: B<po4a-updatepo> B<-f> I<формат> (B<-m> I<основний.документ>)+ (B<-p> I<XX.po>)+

note: type: textblock
en: (I<XX.po> are the outputs, all others are inputs)
uk: (I<XX.po> — назви файлів результатів обробки, усі інші аргументи вказують на вхідні дані)

note: type: textblock
en: The B<po4a-updatepo> script is in charge of updating PO files to make them reflect the changes made to the original documentation file. For that, it converts the documentation file to a POT file, and call L<msgmerge(1)> on this new POT and on the provided PO files.
uk: Скрипт B<po4a-updatepo> призначено для оновлення вмісту файлів PO з метою відтворення у них змін, які було внесено у початковий файл документації. Для цього програма перетворює дані файла документації у файл POT і викликає L<msgmerge(1)> для цього нового файла POT і вказаних файлів PO.

note: type: textblock
en: It is possible to give more than one PO file (if you want to update several languages at once), and several documentation files (if you want to store the translations of several documents in the same PO file).
uk: Можна вказувати декілька файлів PO (якщо вам потрібно оновити декілька перекладів одночасно) та декілька файлів документації (якщо ви хочете зберігати переклади декількох документів у одному файлі PO).

note: type: textblock
en: If the master document has non-ASCII characters, this script will convert the PO files to UTF-8 (if they weren't already), for a transparent handling of non-standard characters.
uk: Якщо у основному документів містяться символи, які не належать до ASCII, перетворені файли PO буде записано у кодуванні UTF-8 (якщо це кодування там ще не використовувалося) для того, щоб уможливити прозору обробку нестандартних символів.

note: type: textblock
en: File(s) containing the master document to translate.
uk: Файли, які містить основний документ для перекладу.

note: type: textblock
en: Charset of the files containing the document to translate. Note that all files must have the same charset.
uk: Кодування файлів, які містять документ для перекладу. Зауважте, що у поточній версії усі основні документи мають зберігатися у одному кодуванні.

note: type: textblock
en: PO file(s) to update. If these files do not exist, they are created by B<po4a-updatepo>.
uk: Файли, які слід оновити. Якщо цих файлів не існує, їх буде створено за допомогою B<po4a-updatepo>.

note: type: textblock
en: This option removes B<--previous> from the options passed to B<msgmerge>.  This helps supporting old versions of B<gettext> (before v0.16).
uk: Цей параметр вилучає B<--previous> з параметрів, які передаються B<msgmerge>. Це допомагає у реалізації підтримки версій B<gettext> до 0.16.

note: type: textblock
en: msguntypot - update PO files when a typo is fixed in POT file
uk: msguntypot — програма для оновлення файлів PO, якщо у файлі POT було виправлено друкарську помилку

note: type: textblock
en: B<msguntypot> B<-o> I<old_pot> B<-n> I<new_pot> I<pofiles> ...
uk: B<msguntypot> B<-o> I<старий_pot> B<-n> I<новий_pot> I<файли_po> ...

note: type: textblock
en: When you fix a trivial error which surely doesn't affect translations (e.g.  a typo) in a POT file, you should unfuzzy the corresponding msgstr in the translated PO files to avoid so extra work to the translators.
uk: Якщо вами було виправлено тривіальну помилку, яка напевне не вплине на переклади (наприклад, друкарську помилку) у файлі POT, вам слід зняти позначку неточних перекладів із msgstr у перекладених файлах PO, щоб не завдавати перекладачам зайвих клопотів.

note: type: textblock
en: This task is difficult and error prone when done manually, and this tool is there to help doing so correctly. You just need to provide the two versions of the POT file: before the edition and after as marked in the above synopsis, and it all becomes automatic.
uk: Це завдання є доволі складним та помилконебезпечним, якщо його виконувати вручну, а ця програма допоможе вам зробити усе правильно. Вам лише потрібно надати дві версії файла POT: до редагування і після редагування, яке це вказано у наведеному вище короткому описі команди, решту буде зроблено автоматично.

note: type: =head1
en: HOW TO USE IT
uk: ЯК КОРИСТУВАТИСЯ

note: type: textblock
en: In short, when you discover a typo in one of your [english] message, do the following:
uk: Якщо коротко, коли ви виявите друкарську помилку у одному з ваших початкових повідомлень (англійською), виконайте такі дії:

note: type: =item
en: - Regenerate your POT and PO files.
uk: - Повторно створіть ваші файли POT і PO.

note: type: verbatim
en:   make -C po/ update-po # for message program translations
      debconf-updatepo      # for debconf translations
      po4a po4a.conf        # for po4a based documentation translations
uk:   make -C po/ update-po # для повідомлень перекладу інтерфейсу програми
      debconf-updatepo      # для перекладів debconf
      po4a po4a.conf        # для перекладів заснованої на po4a документації

note: type: textblock
en: or something else, depending on your project's building settings. You know how to make sure your POT and PO files are uptodate, don't you??
uk: або щось подібне, залежно від параметрів збирання вашого проекту. Ви ж маєте знати спосіб автоматичного оновлення ваших файлів POT і PO?

note: type: =item
en: - Make a copy of your POT file.
uk: - Зробіть копію вашого файла POT.

note: type: verbatim
en:   cp myfile.pot myfile.pot.orig
uk:   cp ваш_файл.pot ваш_файл.pot.orig

note: type: =item
en: - Make a copy of all your PO files.
uk: - Зробіть копію усіх ваших файлів PO.

note: type: verbatim
en:   mkdir po_fridge; cp *.po po_fridge
uk:   mkdir po_копія; cp *.po po_копія

note: type: =item
en: - Fix your typo.
uk: - Виправте друкарську помилку.

note: type: textblock
en: $EDITOR the_file_in_which_there_is_a_typo
uk: $EDITOR файл_у_якому_помічено_друкарську_помилку

note: type: textblock
en: See above.
uk: Див. вище.

note: type: textblock
en: At this point, the typo fix fuzzied all the translations, and this unfortunate change is the only one between the PO files of your main directory and the one from the fridge. Here is how to solve this.
uk: На цьому етапі виправлення друкарської помилки призведе до позначення неточними усіх перекладів відповідного повідомлення, і ця незручна зміна є єдиною відмінністю між файлами PO у вашому основному каталозі і файлами з резервної копії. Далі, ми вирішимо цю проблему.

note: type: =item
en: - Discard fuzzy translation, restore the ones from the fridge.
uk: - Відкиньте неточний переклад, відновіть переклади з резервної копії.

note: type: verbatim
en:   cp po_fridge/*.po .
uk:   cp po_копія/*.po .

note: type: =item
en: - Manually merge the PO files with the new POT file, but taking the useless fuzzy into account.
uk: - Вручну об'єднайте файли PO з новим файлом POT, враховуючи непотрібне позначення перекладу як такого, що є неточним.

note: type: verbatim
en:   msguntypot -o myfile.pot.orig -n myfile.pot *.po
uk:   msguntypot -o ваш_файл.pot.orig -n ваш_файл.pot *.po

note: type: =item
en: - Cleanups.
uk: - Почистіть теку від зайвих файлів.

note: type: verbatim
en:   rm -rf myfile.pot.orig po_fridge
uk:   rm -rf ваш_файл.pot.orig po_копія

note: type: textblock
en: You're done. The typo was eradicated from msgstr of both your POT and PO files, and the PO files were not fuzzyied in the process. Your translators love you already.
uk: Ось і все. Друкарську помилку усунено з msgstr файлів POT і PO, і переклад повідомлення у файлах PO не позначено як неточний. Ваші перекладачі вдячні вам за це.

note: type: textblock
en: Despite its name, this tool is not part of the gettext tool suite. It is instead part of po4a. More precisely, it's a random Perl script using the fine po4a modules. For more information about po4a, please see:
uk: Незважаючи на назву, ця програма не є частиною комплексу програм gettext. Вона є частиною комплексу po4a. Якщо точніше, це скрипт мовою Perl, який використовує чудові модулі po4a. Щоб дізнатися більше про po4a, будь ласка, ознайомтеся із такими сторінками підручника:

note: type: textblock
en: Copyright 2005 by SPI, inc.
uk: © SPI, inc., 2005.

note: type: textblock
en: po4a - framework to translate documentation and other materials
uk: po4a — набір інструментів для перекладу документації та інших матеріалів

note: type: =head1
en: Introduction
uk: Вступ

note: type: textblock
en: po4a (PO for anything) eases the maintenance of documentation translation using the classical gettext tools. The main feature of po4a is that it decouples the translation of content from its document structure.
uk: po4a («PO for anything» або «PO для усього») спрощує супровід перекладу документації з використанням класичних інструментів gettext Основною перевагою po4a є відокремлення придатного до перекладу вмісту документа від його структури.

note: type: textblock
en: This document serves as an introduction to the po4a project with a focus on potential users considering whether to use this tool and on the curious wanting to understand why things are the way they are.
uk: Це документ є вступом до документації з проєкту po4a. Акцент у ньому зроблено на відомостях для потенційних користувачів, які розглядають можливість використання цього інструмента і цікавляться тим, чому усе реалізовано саме таким чином.

note: type: =head1
en: Why po4a?
uk: Чому po4a?

note: type: textblock
en: The philosophy of Free Software is to make the technology truly available to everyone. But licensing is not the only consideration: untranslated free software is useless for non-English speakers. Therefore, we still have some work to do to make software available to everybody.
uk: Філософія вільного програмного забезпечення полягає у наданні доступу до технологій усім. Втім, ліцензування не є єдиною причиною: неперекладене вільне програмне забезпечення є недоступним для тих, хто не знає англійської. Для того, щоб зробити його цінним для усіх, слід докласти додаткових зусиль з перекладу.

note: type: textblock
en: This situation is well understood by most projects and everybody is now convinced of the necessity to translate everything. Yet, the actual translations represent a huge effort of many individuals, crippled by small technical difficulties.
uk: Усе це добре розуміють у більшості проєктів — зараз усі вже переконані у тому, що перекладати слід усе. Втім, сам переклад є результатом величезних зусиль багатьох осіб, які ускладнюють невеличкі технічні труднощі.

note: type: textblock
en: Thankfully, Open Source software is actually very well translated using the gettext tool suite. These tools are used to extract the strings to translate from a program and present the strings to translate in a standardized format (called PO files, or translation catalogs). A whole ecosystem of tools has emerged to help the translators actually translate these PO files. The result is then used by gettext at run time to display translated messages to the end users.
uk: На щастя, саме вільне програмне забезпечення має досить якісний інструментарій для перекладу, дякуючи чудовому набору інструментів gettext. У нас є інструменти для видобування рядків для перекладу з програми і представлення їх у стандартизованому форматі (який називають файлами PO або каталогами перекладу). З'явилася ціла екосистема інструментів, які допомагають перекладачам перекладати ці файли PO. Результат перекладу використовується gettext під час роботи програми для показу кінцевим користувачам перекладених повідомлень.

note: type: textblock
en: Regarding documentation, however, the situation still somewhat disappointing.  At first translating documentation may seem to be easier than translating a program as it would seem that you just have to copy the documentation source file and start translating the content. However, when the original documentation is modified, keeping track of the modifications quickly turns into a nightmare for the translators. If done manually, this task is unpleasant and error prone.
uk: Якщо ж говорити про документацію, маємо дещо прикру картину. Спершу може здатися, що перекладати документацію простіше за саму програму, оскільки достатньо скопіювати файл документації і почати перекладати його вміст. Втім, якщо до початкового документа буде внесено зміни, стеження за ними може перетворитися на суцільний жах для перекладачів. Виконання цього завдання вручну є неприємною справою, у якій можна дуже просто помилитися.

note: type: textblock
en: Outdated translations are often worse than no translation at all. End-users can be tricked by documentation describing an old behavior of the program.  Furthermore, they cannot interact directly with the maintainers since they don't speak English. Additionally, the maintainer cannot fix the problem as they don't know every language in which their documentation is translated.  These difficulties, often caused by poor tooling, can undermine the motivation of volunteer translators, further aggravating the problem.
uk: Застарілі ж переклади часто є більшою проблемою, ніж неперекладена документація. Кінцевого користувача можна ввести в оману документацією, у якій описано поведінку застарілої версії програми. Крім того, користувачі перекладеної версії не можуть безпосередньо взаємодіяти із супровідниками, оскільки мають проблеми у спілкування англійською. До цього додається і те, що супровідник не може виправити проблему, оскільки не знає усі мови, якими перекладено документацію. Ці складнощі, часто викликані неналежним інструментарієм перекладу, можуть відлякати потенційних перекладачів, що робить ситуацію ще проблематичнішою.

note: type: textblock
en: B<The goal of the po4a project is to ease the work of documentation translators>.  In particular, it makes documentation translations I<maintainable>.
uk: B<Метою проєкту po4a є спрощення роботи для перекладачів документації>. Зокрема, цей проєкт робить переклади документації I<придатними до супроводу>.

note: type: textblock
en: The idea is to reuse and adapt the gettext approach to this field. As with gettext, texts are extracted from their original locations and presented to translators as PO translation catalogs. The translators can leverage the classical gettext tools to monitor the work to do, collaborate and organize as teams. po4a then injects the translations directly into the documentation structure to produce translated source files that can be processed and distributed just like the English files. Any paragraph that is not translated is left in English in the resulting document, ensuring that the end users never see an outdated translation in the documentation.
uk: Ідея полягає у повторному використанні і адаптації підходу gettext. Так само, як і з gettext для програм, текстові фрагменти видобуваються з початкових файлів і надаються перекладачам як каталоги перекладу PO. Перекладачі можуть скористатися класичними засобами gettext для стеження за виконанням завдань, співпраці та організації команд. Далі, po4a вставляє переклади безпосередньо до структури документації з метою створення перекладених початкових файлів, які можна обробляти і поширювати у той самий спосіб, у який обробляються і поширюються файли англійською. У документі-результаті усі неперекладені абзаци лишатимуться написаними англійською, отже кінцеві користувачі ніколи не побачать застарілих перекладів у документації.

note: type: textblock
en: This automates most of the grunt work of the translation maintenance.  Discovering the paragraphs needing an update becomes very easy, and the process is completely automated when elements are reordered without further modification. Specific verification can also be used to reduce the chance of formatting errors that would result in a broken document.
uk: Це автоматизує більшу частину нудної роботи із супроводу перекладу. Виявлення абзаців, які потребують оновлення стає дуже простим, а процес повністю автоматизується, якщо елементи просто перевпорядковуються без подальшого внесення змін. Також можна скористатися специфічними перевірками для зменшення ймовірності помилок у форматуванні, які можуть призвести до неможливості обробки документа.

note: type: textblock
en: Please also see the B<FAQ> below in this document for a more complete list of the advantages and disadvantages of this approach.
uk: Будь ласка, також ознайомтеся із розділом B<Поширені питання> у цьому документі, щоб дізнатися більше про переваги і недоліки цього підходу.

note: type: =head2
en: Supported formats
uk: Підтримувані формати

note: type: textblock
en: Currently, this approach has been successfully implemented to several kinds of text formatting formats:
uk: У поточній версії цей підхід успішно реалізовано для декількох типів документів із текстовим форматуванням:

note: type: =item
en: man (mature parser)
uk: man (надійний обробник)

note: type: textblock
en: The good old manual pages' format, used by so many programs out there. po4a support is very welcome here since this format is somewhat difficult to use and not really friendly to newbies.
uk: Старий добрий формат сторінок підручника, який використовується у багатьох програмах. Підтримка у po4a тут дуже доречна, оскільки цей формат доволі складний у використанні і не дуже зручний для недосвідчених користувачів.

note: type: textblock
en: The L<Locale::Po4a::Man(3pm)|Man> module also supports the mdoc format, used by the BSD man pages (they are also quite common on Linux).
uk: У модулі L<Locale::Po4a::Man(3pm)|Man> також передбачена підтримка формату mdoc, який використовується у сторінках підручника BSD (їх також доволі часто використовують у Linux).

note: type: =item
en: AsciiDoc (mature parser)
uk: AsciiDoc (надійний обробник)

note: type: textblock
en: This format is a lightweight markup format intended to ease the authoring of documentation. It is for example used to document the git system. Those manpages are translated using po4a.
uk: Цей формат є спрощеним форматом розмітки, призначенням якого є спростити написання документації. Його, наприклад, використано для документування системи git. Такі сторінки підручників перекладено за допомогою po4a.

note: type: textblock
en: See L<Locale::Po4a::AsciiDoc> for details.
uk: Див. L<Locale::Po4a::AsciiDoc>, щоб дізнатися більше.

note: type: =item
en: pod (mature parser)
uk: pod (надійний обробник)

note: type: textblock
en: This is the Perl Online Documentation format. The language and extensions themselves are documented using this format in addition to most existing Perl scripts. It makes easy to keep the documentation close to the actual code by embedding them both in the same file. It makes programmer's life easier, but unfortunately, not the translator's, until you use po4a.
uk: Це формат інтернет-документації до Perl (Perl Online Documentation). За його допомогою документовано саму мову і її розширення, а також більшість із наявних скриптів Perl. Він спрощує синхронізацію документації із кодом, оскільки і документація, і код є частиною одного файла. Це спрощує завдання програміста, але, на жаль, не перекладача, доки ви не скористаєтеся po4a.

note: type: textblock
en: See L<Locale::Po4a::Pod> for details.
uk: Див. L<Locale::Po4a::Pod>, щоб дізнатися більше.

note: type: =item
en: sgml (mature parser)
uk: sgml (надійний обробник)

note: type: textblock
en: Even if superseded by XML nowadays, this format is still used for documents which are more than a few screens long. It can even be used for complete books.  Documents of this length can be very challenging to update. B<diff> often reveals useless when the original text was re-indented after update.  Fortunately, po4a can help you after that process.
uk: Хоча цей формат на сьогодні дещо поступився місцем XML, його ще досить часто використовуються для досить довгих документів. За його допомогою можна створювати цілі книги. Оновлення перекладів таких довгих документів може стати справжнім жахом. B<diff> часто виявляється безпорадним, якщо відступи у початковому тексті після оновлення буде змінено. На щастя, тут у пригоді вам стане po4a.

note: type: textblock
en: Currently, only DebianDoc and DocBook DTD are supported, but adding support for a new one is really easy. It is even possible to use po4a on an unknown SGML DTD without changing the code by providing the needed information on the command line. See L<Locale::Po4a::Sgml(3pm)> for details.
uk: У поточній версії передбачено підтримку лише DebianDoc і DocBook DTD, але додавання підтримки нових форматі є дуже простим. po4a можна навіть використовувати для невідомих DTD SGML без зміни коду, якщо надати потрібну інформацію за допомогою командного рядка. Див. L<Locale::Po4a::Sgml(3pm)>, щоб дізнатися більше.

note: type: =item
en: TeX / LaTeX (mature parser)
uk: TeX / LaTeX (надійний обробник)

note: type: textblock
en: The LaTeX format is a major documentation format used in the Free Software world and for publications.
uk: Формат LaTeX є основним форматом документації, який використовується у світі вільного програмного забезпечення та для публікацій.

note: type: textblock
en: The L<Locale::Po4a::LaTeX(3pm)|LaTeX> module was tested with the Python documentation, a book and some presentations.
uk: Модуль L<Locale::Po4a::LaTeX(3pm)|LaTeX> було перевірено на документації до Python, книзі і декількох презентаціях.

note: type: =item
en: text (mature parser)
uk: text (надійний обробник)

note: type: textblock
en: The Text format is the base format for many formats that include long blocks of text, including Markdown, fortunes, YAML front matter section, debian/changelog, and debian/control.
uk: Текстовий формат є базовим форматом для багатьох інших форматів, у яких ви маєте справу зі довгими блоками тексту, зокрема Markdown, fortune-и, розділ титульних елементів YAML, debian/changelog та debian/control.

note: type: textblock
en: This supports the common format used in Static Site Generators, READMEs, and other documentation systems. See L<Locale::Po4a::Text(3pm)|Text> for details.
uk: Цей формат є типовим для генераторів статичних сайтів, файлів README та інших систем документації. Див. L<Locale::Po4a::Text(3pm)|Text>, щоб дізнатися більше.

note: type: =item
en: xml and XHMTL (probably mature parser)
uk: xml і XHMTL (ймовірно, надійний обробник)

note: type: textblock
en: The XML format is a base format for many documentation formats.
uk: Формат XML є базовим для багатьох форматів документації.

note: type: textblock
en: Currently, the DocBook DTD (see L<Locale::Po4a::Docbook(3pm)> for details) and XHTML are supported by po4a.
uk: У поточній версії po4a передбачено підтримку DocBook DTD (докладніше про це див. L<Locale::Po4a::Docbook(3pm)>) та XHTML.

note: type: =item
en: BibTex (probably mature parser)
uk: BibTex (ймовірно, надійний обробник)

note: type: textblock
en: The BibTex format is used alongside LaTex for formatting lists of references (bibliographies).
uk: Формат BibTex використовують разом із LaTex для форматування списку посилань (бібліографій).

note: type: textblock
en: See L<Locale::Po4a::BibTex> for details.
uk: Див. L<Locale::Po4a::BibTex>, щоб дізнатися більше.

note: type: =item
en: Docbook (probably mature parser)
uk: Docbook (ймовірно, надійний обробник)

note: type: textblock
en: A XML-based markup language that uses semantic tags to describe documents.
uk: Заснована на XML мова розмітки, у якій використовують семантичні теґи для опису документів.

note: type: textblock
en: See L<Locale::Po4a:Docbook> for greater details.
uk: Див. L<Locale::Po4a:Docbook>, щоб дізнатися більше.

note: type: =item
en: Guide XML (probably mature parser)
uk: Guide XML (ймовірно, надійний обробник)

note: type: textblock
en: A XML documentation format. This module was developed specifically to help with supporting and maintaining translations of Gentoo Linux documentation up until at least March 2016 (Based on the Wayback Machine). Gentoo have since moved to the DevBook XML format.
uk: Формат документації XML. Цей модуль розроблявся спеціально для того, щоб допомогти із підтримкою та супроводом перекладів документації Gentoo Linux, принаймні до березня 2016 року (дані засновано на даних Wayback Machine). З того часу Gentoo перейшла на формат XML DevBook.

note: type: textblock
en: See L<Locale::Po4a:Guide> for greater details.
uk: Див. L<Locale::Po4a:Guide>, щоб дізнатися більше.

note: type: =item
en: Wml (probably mature parser)
uk: Wml (ймовірно, надійний обробник)

note: type: textblock
en: The Web Markup Language, do not mixup WML with the WAP stuff used on cell phones.  This module relies on the Xhtml module, which itself relies on the XmL module.
uk: Мова розмітки інтернету (Web Markup Language), не плутати з WML із WAP, яку використовують для стільникового зв'язку. Роботу цього модуля засновано на роботі модуля Xhtml, який сам є надбудовою над модулем XML.

note: type: textblock
en: See L<Locale::Po4a::Wml> for greater details.
uk: Див. L<Locale::Po4a::Wml>, щоб дізнатися більше.

note: type: =item
en: Yaml (probably mature parser)
uk: Yaml (ймовірно, надійний обробник)

note: type: textblock
en: A strict superset of JSON. YAML is often used as systems or configuration projects.  YAML is at the core of Red Hat's Ansible.
uk: Строго обмежена надбудова над JSON. YAML часто використовують для проєктів систем або налаштувань. YAML є частиною ядра Ansible від Red Hat.

note: type: textblock
en: See L<Locale::Po4a::Yaml> for greater details.
uk: Див. L<Locale::Po4a::Yaml>, щоб дізнатися більше.

note: type: =item
en: RubyDoc (probably mature parser)
uk: RubyDoc (ймовірно, надійний обробник)

note: type: textblock
en: The Ruby Document (RD) format, originally the default documentation format for Ruby and Ruby projects before converted to RDoc in 2002. Though apparently the Japanese version of the Ruby Reference Manual still use RD.
uk: Формат документів Ruby (RD), розроблено як типовий формат документації до Ruby і проєктів на Ruby до переходу на RDoc у 2002 році. Втім, принаймні японська версія підручника-довідника з Ruby усе ще використовує RD.

note: type: textblock
en: See L<Locale::Po4a::RubyDoc> for greater details.
uk: Див. L<Locale::Po4a::RubyDoc>, щоб дізнатися більше.

note: type: =item
en: Halibut (probably experimental parser)
uk: Halibut (ймовірно, експериментальний обробник)

note: type: textblock
en: A documentation production system, with elements similar to TeX, debiandoc-sgml, TeXinfo, and others, developed by Simon Tatham, the developer of PuTTY.
uk: Система створення документації із елементами, подібними до TeX, debiandoc-sgml, TeXinfo та інших систем. Розроблено Саймоном Тетгемом (Simon Tatham), розробником PuTTY.

note: type: textblock
en: See L<Locale::Po4a:Halibut> for greater details.
uk: Див. L<Locale::Po4a:Halibut>, щоб дізнатися більше.

note: type: =item
en: Ini (probably experimental parser)
uk: Ini (ймовірно, експериментальний обробник)

note: type: textblock
en: Configuration file format popularized by MS-DOS.
uk: Формат файлів налаштувань, який став популярним завдяки MS-DOS.

note: type: textblock
en: See L<Locale::Po4a::Ini> for greater details.
uk: Див. L<Locale::Po4a::Ini>, щоб дізнатися більше.

note: type: =item
en: texinfo (very highly experimental parser)
uk: texinfo (дуже експериментальний обробник)

note: type: textblock
en: All of the GNU documentation is written in this format (it's even one of the requirements to become an official GNU project). The support for L<Locale::Po4a::Texinfo(3pm)|Texinfo> in po4a is still at the beginning.  Please report bugs and feature requests.
uk: У цьому форматі записано усю документацію GNU (наявність такої документації є навіть однією із вимог для отримання статусу офіційного проєкту GNU). Підтримка модуля L<Locale::Po4a::Texinfo(3pm)|Texinfo> у po4a усе ще перебуває на початковому етапі. Будь ласка, повідомляйте про вади та ваші запити щодо реалізації функціональних можливостей.

note: type: =item
en: Others supported formats
uk: Інші підтримувані формати

note: type: textblock
en: Po4a can also handle some more rare or specialized formats, such as the documentation of compilation options for the 2.4+ Linux kernels (L<Locale::Po4a::KernelHelp>) or the diagrams produced by the dia tool (L<Locale::Po4a:Dia>). Adding a new format is often very easy and the main task is to come up with a parser for your target format. See L<Locale::Po4a::TransTractor(3pm)> for more information about this.
uk: Крім того, po4a також може працювати із іншими рідкісними і спеціалізованими форматами, зокрема документацією до параметрів компіляції ядер Linux 2.4+ (L<Locale::Po4a::KernelHelp>) та діаграмами, які створено за допомогою програми Dia (L<Locale::Po4a:Dia>). Додати новий формат часто доволі просто. Основним у цьому є є створення обробника початкового формату. Докладніший опис цього можна знайти у розділі L<Locale::Po4a::TransTractor(3pm)>.

note: type: =item
en: Unsupported formats
uk: Непідтримувані формати

note: type: textblock
en: Unfortunately, po4a still lacks support for several documentation formats. Many of them would be easy to support in po4a. This includes formats not just used for documentation, such as, package descriptions (deb and rpm), package installation scripts questions, package changelogs, and all the specialized file formats used by programs such as game scenarios or wine resource files.
uk: На жаль, у po4a досі не реалізовано підтримку декількох форматів документації. Підтримку багатьох з них могло б бути доволі просто реалізовано у po4a. Це стосується і форматів, які не є форматами документації, зокрема описів пакунків (deb і rpm), питань у скриптах встановлення пакунків, журналів змін пакунків та усіх спеціалізованих форматів файлів, які використовуються програмами, зокрема сценаріїв ігор та файлів ресурсів wine.

note: type: =head1
en: Using po4a
uk: Користування po4a

note: type: textblock
en: Historically, po4a was built around four scripts, each fulfilling a specific task. L<po4a-gettextize(1)> helps bootstrapping translations and optionally converting existing translation projects to po4a. L<po4a-updatepo(1)> reflects the changes to the original documentation into the corresponding po files.  L<po4a-translate(1)> builds translated source file from the original file and the corresponding PO file. In addition, L<po4a-normalize(1)> is mostly useful to debug the po4a parsers, as it produces an untranslated document from the original one. It makes it easier to spot the glitches introduced by the parsing process.
uk: Історично, po4a побудовано на основі чотирьох скриптів, кожен з яких виконує певне власне завдання. L<po4a-gettextize(1)> допомагає ініціювати переклади та, якщо потрібно, перетворити наявні проєкти перекладу до схеми po4a. L<po4a-updatepo(1)> відображає зміни у початковій документації до відповідних файлів PO. L<po4a-translate(1)> збирає файл перекладу на основі початкового файла та відповідного файла PO. Крім того, є ще L<po4a-normalize(1)> — програма, яка здебільшого корисна для діагностики обробників po4a, оскільки вона створює неперекладендий документ з початкового файла. За результатами простіше знайти помилки, які є наслідком процедури обробки.

note: type: textblock
en: Most projects only require the features of L<po4a-updatepo(1)> and L<po4a-translate(1)>, but these scripts proved to be cumbersome and error prone to use. If the documentation to translate is split over several source files, it is difficult to keep the PO files up to date and build the documentation files correctly. As an answer, a all-in-one tool was provided: L<po4a(1)>. This tool takes a configuration file describing the structure of the translation project: the location of the PO files, the list of files to translate, and the options to use, and it fully automates the process. When you invoke L<po4a(1)>, it both updates the PO files and regenerate the translation files that need to. If everything is already up to date, L<po4a(1)> does not change any file.
uk: Для більшості проєктів достатньо можливостей L<po4a-updatepo(1)> і L<po4a-translate(1)>, але керувати цими скриптами складно, неправильні параметри можуть призвести до помилок. Якщо документацію, яку слід перекласти, поділено на декілька початкових файлів, підтримання актуальності файлів PO і правильне збирання документації стає складним завданням. Щоб усунути проблеми, було створено універсальний інструмент — L<po4a(1)>. Ця програма працює із файлом налаштувань, який описує структуру проєкту перекладу: розташування файлів PO, список файлів, які слід перекласти та параметри, якими слід скористатися, а також повністю автоматизує процес. Коли ви викликаєте L<po4a(1)>, програма одразу оновлює файли PO і повторно створює файли перекладу, які цього потребують. Якщо файл є актуальним, L<po4a(1)> не вносить до нього змін.

note: type: textblock
en: The rest of this section gives an overview of how use the scripts' interface of po4a. Most users will probably prefer to use the all-in-one tool, that is described in the documentation of L<po4a(1)>.
uk: У решті цього розділу подано огляд користування інтерфейсом до скриптів po4a. Більшість користувачів, напевне, віддасть перевагу використанню універсального інструмента, який описано у документації до L<po4a(1)>.

note: type: =head2
en: Graphical overview of the po4a scripts
uk: Графічний огляд скриптів po4a

note: type: textblock
en: The following schema gives an overview of how each po4a script can be used.  Here, F<master.doc> is an example name for the documentation to be translated; F<XX.doc> is the same document translated in the language XX while F<doc.XX.po> is the translation catalog for that document in the XX language. Documentation authors will mostly be concerned with F<master.doc> (which can be a manpage, an XML document, an asciidoc file or similar); the translators will be mostly concerned with the PO file, while the end users will only see the F<XX.doc> file.
uk: На наведеній нижче схемі подано огляд того, як може бути використано кожен зі скриптів.  На схемі F<основний.документ> — приклад назви документації, яку слід перекласти; F<XX.документ> — відповідний перекладений документ мовою XX, а F<doc.XX.po> — каталог перекладу для цього документа мовою XX. Автори документації, здебільшого мають перейматися файлом F<основний.документ> (це може бути сторінка підручника (man), документ XML, файл asciidoc або подібний документ); перекладачі, здебільшого, працюють із файлом PO, а кінцеві користувачі бачать лише файл F<XX.документ>.

note: type: verbatim
en:                                    master.doc
                                           |
                                           V
         +<-----<----+<-----<-----<--------+------->-------->-------+
         :           |                     |                        :
    {translation}    |         { update of master.doc }             :
         :           |                     |                        :
       XX.doc        |                     V                        V
     (optional)      |                 master.doc ->-------->------>+
         :           |                   (new)                      |
         V           V                     |                        |
      [po4a-gettextize]   doc.XX.po -->+   |                        |
              |            (old)       |   |                        |
              |              ^         V   V                        |
              |              |     [po4a-updatepo]                  |
              V              |           |                          V
       translation.pot       ^           V                          |
              |              |        doc.XX.po                     |
              |              |         (fuzzy)                      |
       { translation }       |           |                          |
              |              ^           V                          V
              |              |     {manual editing}                 |
              |              |           |                          |
              V              |           V                          V
          doc.XX.po --->---->+<---<-- doc.XX.po    addendum     master.doc
          (initial)                 (up-to-date)  (optional)   (up-to-date)
              :                          |            |             |
              :                          V            |             |
              +----->----->----->------> +            |             |
                                         |            |             |
                                         V            V             V
                                         +------>-----+------<------+
                                                      |
                                                      V
                                               [po4a-translate]
                                                      |
                                                      V
                                                    XX.doc
                                                 (up-to-date)
uk:                                    основний.документ
                                           |
                                           V
         +<-----<----+<-----<-----<--------+------->-------->-------+
         :           |                     |                        :
    {переклад}       |     { оновлення основний.документ }          :
         :           |                     |                        :
     XX.документ     |                     V                        V
    (необов'язковий) |              основний.документ ->------>---->+
         :           |                 (новий)                      |
         V           V                     |                        |
      [po4a-gettextize] документ.XX.po>+   |                        |
              |          (старий)      |   |                        |
              |              ^         V   V                        |
              |              |     [po4a-updatepo]                  |
              V              |           |                          V
         переклад.pot        ^           V                          |
              |              |      документ.XX.po                  |
              |              |       (неточний)                     |
         { переклад }        |           |                          |
              |              ^           V                          V
              |              |    {редагування вручну}              |
              |              |           |                          |
              V              |           V                          V
     документ.XX.po --->---->+<---<-документ.XX.po додаток  основний.документ
        (початковий)               (актуальний) (необов'язковий)(актуальний)
              :                          |            |             |
              :                          V            |             |
              +----->----->----->------> +            |             |
                                         |            |             |
                                         V            V             V
                                         +------>-----+------<------+
                                                      |
                                                      V
                                               [po4a-translate]
                                                      |
                                                      V
                                                 XX.документ
                                                 (актуальний)

note: type: textblock
en: This schema is complicated, but in practice only the right part (involving L<po4a-updatepo(1)> and L<po4a-translate(1)>) is used once the project is setup and configured.
uk: Ця схема є складною, але на практиці після створення і налаштовування проєкту використовується лише її права частина (там, де ви працюєте з L<po4a-updatepo(1)> і L<po4a-translate(1)>).

note: type: textblock
en: The left part depicts how L<po4a-gettextize(1)> can be used to convert an existing translation project to the po4a infrastructure. This script takes an original document and its translated counterpart, and tries to build the corresponding PO file. Such manual conversion is rather cumbersome (see the L<po4a-gettextize(1)> documentation for more details), but it is only needed once to convert your existing translations. If you don't have any translation to convert, you can forget about this and focus on the right part of the schema.
uk: У лівій частині показано як можна скористатися L<po4a-gettextize(1)> для перетворення наявного проєкту перекладу до інфраструктури po4a. Цей скрипт працює із початковим документом та його перекладеним аналогом і намагається зібрати відповідний файл PO. Таке перетворення вручну є доволі марудним (подробиці наведено у документації до L<po4a-gettextize(1)>), але таке перетворення потрібне лише один раз — для перетворення наявних перекладів. Якщо у вас немає ніяких перекладів для перетворення, ви можете забути про це і зосередитися на правій частині схеми.

note: type: textblock
en: On the top right part, the action of the original author is depicted, updating the documentation. The middle right part depicts the automatic actions of L<po4a-updatepo(1)>. The new material is extracted and compared against the exiting translation. The previous translation is used for the parts that didn't change, while partially modified parts are connected to the previous translation with a "fuzzy" marker indicating that the translation must be updated. New or heavily modified material is left untranslated.
uk: У верхній частині праворуч зображено роботу автора початкового тексту (оновлення документації). У середній частині праворуч зображено послідовність автоматичних дій L<po4a-updatepo(1)>. Новий тестовий матеріал видобувається з документа і порівнюється із наявним перекладом. Виявляються частини, які не змінилися, — для них використовується наявний переклад. Частини, які зазнали часткових змін також пов'язуються із попереднім перекладом, але із особливою позначкою, яка вказує на те, що переклад має бути оновлено. Новий або значно змінений матеріал лишається неперекладеним.

note: type: textblock
en: Then, the I<manual editing> reported depicts the action of the translators, that modify the PO files to provide translations to every original string and paragraph. This can be done using either a specific editor such as the B<GNOME Translation Editor>, KDE's B<Lokalize> or B<poedit>, or using an online localization platform such as B<weblate> or B<pootle>. The translation result is a set of PO files, one per language. Please refer to the gettext documentation for more details.
uk: Далі, пункт I<редагування вручну> показує роботу перекладачів, які вносять зміни до файлів PO, перекладаючи усі початкові рядки або абзаци. Переклад можна здійснювати або за допомогою спеціалізованого редактора, зокрема B<Редактора перекладів GNOME> або B<Lokalize> з KDE або B<poedit>, чи інтегрувати до платформи інтернет-перекладу, зокрема B<weblate> або B<pootle>. Результатом перекладу є набір файлів PO, по одному на кожну мову перекладу. Докладніший опис можна знайти у документації до gettext.

note: type: textblock
en: The bottom part of the figure shows how L<po4a-translate(1)> creates a translated source document from the F<master.doc> original document and the F<doc.XX.po> translation catalog that was updated by the translators. The structure of the document is reused, while the original content is replaced by its translated counterpart. Optionally, an addendum can be used to add some extra text to the translation. This is often used to add the name of the translator to the final document. See below for details.
uk: У нижній частині схеми показано, як L<po4a-translate(1)> створює перекладений початкових документ на основі документа F<основний.документ> та каталогу перекладу F<документ.XX.po>, який було оновлено перекладачами. Програма використовує структуру початкового документа, але замінює початковий вміст на перекладені блоки. Якщо потрібно, може бути використано додаток для вставляння певного додаткового тексту до перекладу. Такі додатки часто використовуються для додавання імені перекладача до остаточного документа. Подробиці наведено нижче.

note: type: textblock
en: As noted before, the L<po4a(1)> program combines the effects of the separated scripts, updating the PO files and the translated document in one invocation.  The underlying logic remains the same.
uk: Як ми вже зауважували раніше, програма L<po4a(1)> поєднує можливості окремих скриптів, оновлюючи файли PO і перекладений документ за один прохід. Базова логіка обробки лишається незмінною.

note: type: =head2
en: Starting a new translation
uk: Перші кроки у новому перекладі

note: type: textblock
en: If you use L<po4a(1)>, there is no specific step to start a translation. You just have to list the languages in the configuration file, and the missing PO files are automatically created. Naturally, the translator then have to provide translations for every content used in your documents. L<po4a(1)> also creates a POT file, that is a PO template file. Potential translators can translate your project into a new language by renaming this file and providing the translations in their language.
uk: Якщо ви використовуєте L<po4a(1)>, ніякого специфічного кроку для того, щоб розпочати переклад, не буде. Вам просто слід вказати список мов у файлі налаштувань, і файли PO, яких не вистачає, буде створено автоматично. Природно, перекладач має надати переклади для усіх фрагментів тексту, які використано у документі. L<po4a(1)> також створює файл POT, який є файлом шаблона перекладів. Потенційні перекладачі можуть перекладати ваш проєкт новою мовою, перейменувавши цей файл і надавши його переклад рідною мовою.

note: type: textblock
en: If you prefer to use the individual scripts separately, you should use L<po4a-gettextize(1)> as follows to create the POT file. This file can then be copied into F<XX.po> to initiate a new translation.
uk: Якщо ви надаєте перевагу використанню окремих скриптів, для створення файла POT вам слід скористатися L<po4a-gettextize(1)>, як це вказано. Отриманий файл можна потім скопіювати як F<XX.po> для започаткування нового перекладу.

note: type: verbatim
en:   $ po4a-gettextize --format <format> --master <master.doc> --po <translation.pot>
uk:   $ po4a-gettextize --format <формат> --master <основний.документ> --po <переклад.pot>

note: type: textblock
en: The master document is used in input, while the POT file is the output of this process.
uk: На вході використовується основний документ, а файл POT є результатом цього процесу.

note: type: =head2
en: Integrating changes to the original document
uk: Інтеграція змін до початкового документа

note: type: textblock
en: The script to use for that is L<po4a-updatepo(1)> (please refer to its documentation for details):
uk: Скриптом, яким слід для цього скористатися є L<po4a-updatepo(1)> (будь ласка, зверніться до відповідної сторінки документації, щоб дізнатися більше):

note: type: verbatim
en:   $ po4a-updatepo --format <format> --master <new_master.doc> --po <old_doc.XX.po>
uk:   $ po4a-updatepo --format <формат> --master <новий_основний.документ> --p0 <старий_документ.XX.po>

note: type: textblock
en: The master document is used in input, while the PO file is updated: it is used both in input and output.
uk: На вході використовується основний документ, а файл PO оновлюється: його вміст використовується як вхідні дані і, одночасно, є результатом обробки.

note: type: =head2
en: Generating a translated document
uk: Створення перекладеного документа

note: type: textblock
en: Once you're done with the translation, you want to get the translated documentation and distribute it to users along with the original one.  For that, use the L<po4a-translate(1)> program as follows:
uk: Після завершення перекладу вам потрібна буде перекладена документація для надання її користувачам разом із оригінальною. Для отримання такої документації скористайтеся програмою L<po4a-translate(1)> ось так:

note: type: verbatim
en:   $ po4a-translate --format <format> --master <master.doc> --po <doc.XX.po> --localized <XX.doc>
uk:   $ po4a-translate --format <формат> --master <основний_документ> --po <документ.XX.po> --localized <документ_XX>

note: type: textblock
en: Both the master and PO files are used in input, while the localized file is the output of this process.
uk: На вході використовується основний документ і файли PO, результатом процесу є перекладений документ.

note: type: =head2
en: Using addenda to add extra text to translations
uk: Використання додатків для вставляння додаткового тексту до перекладів

note: type: textblock
en: Adding new text to the translation is probably the only thing that is easier in the long run when you translate files manually :). This happens when you want to add an extra section to the translated document, not corresponding to any content in the original document. The classical use case is to give credits to the translation team, and to indicate how to report translation-specific issues.
uk: Додавання нового тексту до перекладу є, ймовірно, єдиною дією, яку простіше виконувати, якщо ви перекладаєте файли вручну :). Додавання може знадобитися, якщо вам потрібно додати до перекладеного документа додатковий розділ, який не відповідає жодного з розділів у початковому документі. Класичним випадком є додавання подяк команді перекладачів та вставляння нотатки щодо того, як повідомляти про вади, які пов'язано із перекладом.

note: type: textblock
en: With po4a, you have to specify B<addendum> files, that can be conceptually viewed as patches applied to the localized document after processing. Each addendum must be provided as a separate file, which format is however very different from the classical patches. The first line is a I<header line>, defining the insertion point of the addendum (with an unfortunately cryptic syntax -- see below) while the rest of the file is added verbatim at the determined position.
uk: У інфраструктурі po4a вам слід вказати файли B<додатків>, які концептуально можна розглядати як латки, які застосовуються до локалізованого документа після обробки. Кожен додаток має бути надано як окремий файл, формат якого, втім, значно відрізняється від формату класичних латок. Перший його рядок є I<рядком заголовка>, який визначає позицію вставлення додатка (із, на жаль, доволі складним синтаксисом — див. нижче), а решту файла буде буквально вставлено у визначеній позиції.

note: type: textblock
en: The header line must begin with the string B<PO4A-HEADER:>, followed by a semi-colon separated list of I<key>B<=>I<value> fields.
uk: Рядок заголовка має розпочинатися з рядка B<PO4A-HEADER:>, за яким має бути вказано список відокремлених крапкою з комою полів I<ключ>B<=>I<значення>.

note: type: textblock
en: For example, the following header declares an addendum that must be placed at the very end of the translation.
uk: Наприклад, у наведеному нижче заголовку оголошується додаток, який має бути вставлено наприкінці перекладу.

note: type: textblock
en: Things are more complex when you want to add your extra content in the middle of the document. The following header declares an addendum that must be placed after the XML section containing the string C<About this document> in translation.
uk: Все стає складнішим, якщо ви хочете додати додаткові дані всередину документа. У наведеному нижче заголовку оголошується додаток, який має бути вставлено після розділу XML, який у перекладі містить рядок C<Про цей документ>.

note: type: verbatim
en:  PO4A-HEADER: position=About this document; mode=after; endboundary=</section>
uk:  PO4A-HEADER: position=Про цей документ; mode=after; endboundary=</section>

note: type: textblock
en: In practice, when trying to apply an addendum, po4a searches for the first line matching the C<position> argument (this can be a regexp). Do not forget that po4a considers the B<translated> document here. This documentation is in English, but your line should probably read as follows if you intend your addendum to apply to the French translation of the document.
uk: На практиці, при спробі застосувати додаток po4a шукає перший рядок, який відповідає аргументу ключа C<position> (аргументом може бути формальний вираз). Не забудьте, що po4a обробляє B<перекладений документ>. Документацію перекладено українською, але ваш рядок може виглядати так, як вказано нижче, якщо додаток застосовується до французького перекладу документа.

note: type: textblock
en: Once the C<position> is found in the target document, po4a searches for the next line after the C<position> that matches the provided C<endboundary>. The addendum is added right B<after> that line (because we provided an I<endboundary>, i.e. a boundary ending the current section).
uk: Щойно аргумент ключа C<position> буде знайдено у документі призначення, po4a виконає пошук наступного рядка після C<position>, який відповідає аргументу, заданому C<endboundary>. Додаток буде додано одразу B<після> цього рядка (оскільки нами надано I<endboundary> — межу поточного розділу).

note: type: textblock
en: The exact same effect could be obtained with the following header, that is equivalent:
uk: Точно такого самого ефекту можна досягти із наведеним нижче заголовком, який є еквівалентним до вже використаного:

note: type: verbatim
en:  PO4A-HEADER: position=About this document; mode=after; beginboundary=<section>
uk:  PO4A-HEADER: position=Про цей документ; mode=after; beginboundary=<section>

note: type: textblock
en: Here, po4a searches for the first line matching C<<section>> after the line matching C<About this document> in the translation, and add the addendum B<before> that line since we provided a I<beginboundary>, i.e. a boundary marking the beginning of the next section. So this header line requires to place the addendum after the section containing C<About this document>, and instruct po4a that a section starts with a line containing the C<<section>> tag. This is equivalent to the previous example because what you really want is to add this addendum either after C</section>> or before C<<section>>.
uk: Тут po4a шукає перший рядок, який відповідає C<<section>> після рядка C<Про цей документ> у перекладі, і вставляє додаток B<до> цього рядка, оскільки вказано I<beginboundary>, тобто початкову межу наступного розділу. Отже, цей рядок заголовка вимагає від програми вставити додаток після розділу, що містить рядок C<Про цей документ>, і вказує po4a, що розділ починається з рядка, що містить теґ C<<section>>. Це еквівалентно до попереднього прикладу, оскільки насправді нам потрібно вставити цей додаток або після C</section>>, або перед C<<section>>.

note: type: textblock
en: You can also set the insertion I<mode> to the value C<before>, with a similar semantic: combining C<mode=before> with an C<endboundary> will put the addendum just B<after> the matched boundary, that the last potential boundary line before the C<position>. Combining C<mode=before> with an C<beginboundary> will put the addendum just B<before> the matched boundary, that the last potential boundary line before the C<position>.
uk: Ви також можете встановити I<режим> вставляння у значення C<before>, використовуючи подібну семантику C<mode=before> з C<endboundary> призведе до вставляння додатка одразу B<після> відповідної межі, який є останнім потенційним обмежувальним рядком перед C<position>. Поєднання C<mode=before> із C<beginboundary> призведе до вставляння додатка одразу B<перед> відповідною межею, яка є останнім потенційним обмежувальним рядком перед C<position>.

note: type: verbatim
en:   Mode   | Boundary kind |     Used boundary      | Insertion point compared to the boundary
     ========|===============|========================|=========================================
     'before'| 'endboundary' | last before 'position' | Right after the selected boundary
     'before'|'beginboundary'| last before 'position' | Right before the selected boundary
     'after' | 'endboundary' | first after 'position' | Right after the selected boundary
     'after' |'beginboundary'| first after 'position' | Right before the selected boundary
     'eof'   |   (none)      |  n/a                   | End of file
uk:   Режим  |    Тип межі   |     Використана межа     | Точка вставляння відносно межі
     ========|===============|==========================|=======================================
     'before'| 'endboundary' | остання перед 'position' | Одразу після вибраної межі
     'before'|'beginboundary'| остання перед 'position' | Одразу перед вибраною межею
     'after' | 'endboundary' | перша після 'position'   | Одразу після вибраної межі
     'after' |'beginboundary'| перша після 'position'   | Одразу перед вибраною межею
     'eof'   |   (немає)     |  н/д                   | Кінець файла

note: type: =head3
en: Hint and tricks about addenda
uk: Підказки і настанови щодо додатків

note: type: textblock
en: Remember that these are regexp. For example, if you want to match the end of a nroff section ending with the line C<.fi>, do not use C<.fi> as B<endboundary>, because it will match with C<the[ fi]le>, which is obviously not what you expect. The correct B<endboundary> in that case is: C<^\.fi$>.
uk: Пам'ятайте, що ці рядки є формальними виразами. Наприклад, якщо ви хочете знайти кінець розділу nroff, що завершується рядком C<.fi>, не використовуйте C<.fi> у полі B<endboundary>, оскільки вказаний рядок є формальним виразом, за яким може бути знайдено, наприклад, рядок C<the[ fi]le>, що, звичайно ж, є небажаним. Правильним значенням для B<endboundary> у цьому випадку буде таке: C<^\.fi$>.

note: type: textblock
en: White spaces ARE important in the content of the C<position> and boundaries. So the two following lines B<are different>. The second one will only be found if there is enough trailing spaces in the translated document.
uk: Пробіли є важливими у сенсі C<position> і меж. Отже, два наступних рядки B<є різними>. Другий рядок буде знайдено, лише якщо у перекладеному документі достатньо кінцевих пробілів.

note: type: verbatim
en:  PO4A-HEADER: position=About this document; mode=after; beginboundary=<section>
     PO4A-HEADER: position=About this document ; mode=after; beginboundary=<section>
uk:  PO4A-HEADER: position=Про цей документ; mode=after; beginboundary=<section>
     PO4A-HEADER: position=Про цей документ ; mode=after; beginboundary=<section>

note: type: textblock
en: Although this context search may be considered to operate roughly on each line of the B<translated> document, it actually operates on the internal data string of the translated document. This internal data string may be a text spanning a paragraph containing multiple lines or may be a XML tag itself alone. The exact I<insertion point> of the addendum must be before or after the internal data string and can not be within the internal data string.
uk: Хоча цей контекстний пошук можна розглядати як такий, що працює має із усіма рядками B<перекладеного> документа, насправді, він працює з внутрішніми даними рядка перекладеного документа. Цей внутрішній рядок даних може бути фрагментом тексту абзацу із декількох рядків або може бути лише теґом XML. Точна I<точка вставлення> додатка має знаходитися до або після внутрішнього рядка даних і не може перебувати всередині внутрішнього рядка даних.

note: type: textblock
en: Pass the B<-vv> argument to po4a to understand how the addenda are added to the translation. It may also help to run po4a in debug mode to see the actual internal data string when your addendum does not apply.
uk: Щоб зрозуміти, як програма вставляє додаток у переклад, передайте po4a аргумент B<-vv>. Також може бути корисним запуск po4a у режимі діагностики, щоб переглянути справжні внутрішні дані, якщо програма відмовляється вставляти ваш додаток.

note: type: =head3
en: Addenda examples
uk: Приклади додатків

note: type: textblock
en: If you want to add something after the following nroff section:
uk: Якщо ви хочете додати щось після такого розділу nroff:

note: type: textblock
en: You should select a two step approach by setting B<mode=after>. Then you should narrow down search to the line after B<AUTHORS> with the B<position> argument regex. Then, you should match the beginning of the next section (i.e., B<^\.SH>) with the B<beginboundary> argument regex. That is to say:
uk: Вам слід вибрати двокроковий підхід встановленням значення B<mode=after>. Далі, вам слід звузити пошук до рядка після B<AUTHORS> за допомогою параметра формального виразу B<position>. Далі, вам потрібно встановити відповідність початку нового розділу (тобто, B<^\.SH>) за допомогою параметра формального виразу B<beginboundary>. Тобто, слід зробити так:

note: type: textblock
en: If you want to add something right after a given line (e.g. after the line "Copyright Big Dude"), use a B<position> matching this line, B<mode=after> and give a B<beginboundary> matching any line.
uk: Якщо ви хочете додати щось одразу після заданого рядка (наприклад, після «Copyright Big Dude»), вкажіть для B<position> критерій пошуку відповідного рядка, B<mode=after>, а для B<beginboundary> вкажіть відповідник будь-якого рядка.

note: type: textblock
en: If you want to add something at the end of the document, give a B<position> matching any line of your document (but only one line. Po4a won't proceed if it's not unique), and give an B<endboundary> matching nothing. Don't use simple strings here like B<"EOF">, but prefer those which have less chance to be in your document.
uk: Якщо ви хочете щось додати наприкінці документа, вкажіть для B<position> відповідник будь-якого рядка вашого документа (але лише одного, бо po4a відмовиться виконувати дію, якщо буде знайдено декілька таких рядків), а для B<endboundary> вкажіть рядок, якого немає у документі. Не використовуйте для цього рядка надто прості варіанти, наприклад B<"EOF">, — вкажіть щось, що має набагато менші шанси бути знайденим у документі.

note: type: verbatim
en:  PO4A-HEADER:mode=after;position=About this document;beginboundary=FakePo4aBoundary
uk:  PO4A-HEADER:mode=after;position=Про цей документ;beginboundary=FakePo4aBoundary

note: type: =head3
en: More detailed example
uk: Докладніший приклад

note: type: textblock
en: Original document (POD formatted):
uk: Початковий документ (у форматуванні POD):

note: type: textblock
en: Then, the following addendum will ensure that a section (in French) about the translator is added at the end of the file (in French, "TRADUCTEUR" means "TRANSLATOR", and "moi" means "me").
uk: Далі, наведений нижче додаток забезпечить додавання розділу (українською) щодо перекладачів наприкінці файла.

note: type: verbatim
en:  |PO4A-HEADER:mode=after;position=AUTEUR;beginboundary=^=head
     |
     |=head1 TRADUCTEUR
     |
     |moi
     |
uk:  |PO4A-HEADER:mode=after;position=АВТОР;beginboundary=^=head
     |
     |=head1 ПЕРЕКЛАДАЧ
     |
     |я
     |

note: type: textblock
en: To put your addendum before the AUTHOR, use the following header:
uk: Щоб розташувати ваш додаток перед записом АВТОР, скористайтеся таким заголовком:

note: type: verbatim
en:  PO4A-HEADER:mode=after;position=NOM;beginboundary=^=head1
uk:  PO4A-HEADER:mode=after;position=ІМ'Я;beginboundary=^=head1

note: type: textblock
en: This works because the next line matching the B<beginboundary> /^=head1/ after the section "NAME" (translated to "NOM" in French), is the one declaring the authors. So, the addendum will be put between both sections. Note that if another section is added between NAME and AUTHOR sections later, po4a will wrongfully put the addenda before the new section.
uk: Це працює, оскільки наступний рядок відповідника B<beginboundary> /^=head1/ після розділу «NAME» (перекладеного як «ІМ'Я» українською) є розділ зі списком авторів. Отже, додаток буде розташовано між вказаними розділами. Зауважте, що якщо між розділами NAME і AUTHOR згодом буде додано ще якийсь розділ, po4a помилково додасть додаток перед новим розділом.

note: type: textblock
en: To avoid this you may accomplish the same using B<mode>=I<before>:
uk: Щоб уникнути цього, ви можете досягти результату у інший спосіб за допомогою B<mode>=I<before>:

note: type: verbatim
en:  PO4A-HEADER:mode=before;position=^=head1 AUTEUR
uk:  PO4A-HEADER:mode=before;position=^=head1 АВТОР

note: type: =head1
en: How does it work?
uk: Як усе це працює?

note: type: textblock
en: This chapter gives you a brief overview of the po4a internals, so that you may feel more confident to help us maintaining and improving it. It may also help you understanding why it does not do what you expected, and how to solve your problems.
uk: У цій главі наведено короткий огляд нутрощів po4a, який надасть вам впевненості, якщо ви захочете допомогти нам із супроводом та розвитком комплекту програм. Цей огляд також може допомогти вам зрозуміти, чому програма працює не так, як ви того сподівалися, та як усунути вашу проблему.

note: type: textblock
en: The po4a architecture is object oriented. The L<Locale::Po4a::TransTractor(3pm)|TransTractor> class is the common ancestor to all po4a parsers. This strange name comes from the fact that it is at the same time in charge of translating document and extracting strings.
uk: Архітектура po4a є об'єктно-орієнтованою. Клас L<Locale::Po4a::TransTractor(3pm)|TransTractor> є спільним предком для усіх обробників po4a. Ця дивна назва походить від того факту, що він водночас відповідає за переклад документа (translator) та видобування рядків (extractor).

note: type: textblock
en: More formally, it takes a document to translate plus a PO file containing the translations to use as input while producing two separate outputs: Another PO file (resulting of the extraction of translatable strings from the input document), and a translated document (with the same structure than the input one, but with all translatable strings replaced with content of the input PO). Here is a graphical representation of this:
uk: Формально, він отримує документ для перекладу і файл PO з перекладами на вході і створює два потоки виведених даних: ще один файл PO (який є результатом видобування придатних до перекладу рядків із вхідного документа) та перекладений документ (тієї самої структури, що і вхідний, але із заміною усіх придатних до перекладу рядків на вміст вхідного файла PO). Ось графічне представлення обробки:

note: type: verbatim
en:    Input document --\                             /---> Output document
                         \      TransTractor::       /       (translated)
                          +-->--   parse()  --------+
                         /                           \
       Input PO --------/                             \---> Output PO
                                                             (extracted)
uk:    Вхідний документ --\                             /---> Вихідний документ
                         \      TransTractor::       /       (перекладений)
                          +-->--   parse()  --------+
                         /                           \
     Вхідний PO --------/                             \---> Вихідний PO
                                                             (видобутий)

note: type: textblock
en: This little bone is the core of all the po4a architecture. If you omit the input PO and the output document, you get B<po4a-gettextize>. If you provide both input and disregard the output PO, you get B<po4a-translate>. The B<po4a> calls TransTractor twice and calls B<msgmerge -U> between these TransTractor invocations to provide one-stop solution with a single configuration file.  Please see L<Locale::Po4a::TransTractor(3pm)> for more details.
uk: Ця маленька часточка коду є ядром усієї архітектури po4a. Якщо викинути вхідний файл PO і вихідний документ, ми отримуємо B<po4a-gettextize>. Якщо надати вхідний PO і відкинути вихідний PO, отримуємо B<po4a-translate>. B<po4a> двічі викликає TransTractor і між цими викликами викликає B<msgmerge -U> для забезпечення обробки даних у один прохід за допомогою одного файла налаштувань. Докладніший опис можна знайти на сторінці L<Locale::Po4a::TransTractor(3pm)>.

note: type: =head1
en: Open-source projects using po4a
uk: Проєкти із відкритим кодом, у яких використовується po4a

note: type: textblock
en: Here is a very partial list of projects that use po4a in production for their documentation. If you want to add your project to the list, just drop us an email (or a Merge Request).
uk: Це лише частина списку проєктів, у яких використовується po4a для роботи з документацією. Якщо хочете додати ваш проєкт до списку, просто надішліть ваше прохання електронною поштою (або створіть запит щодо об'єднання у сховищі з кодом).

note: type: textblock
en: adduser (man): users and groups management tool.
uk: adduser (man): інструмент для керування записами користувачів і груп.

note: type: textblock
en: apt (man, docbook): Debian package manager.
uk: apt (man, docbook): програма для керування пакунками Debian.

note: type: textblock
en: aptitude (docbook, svg): terminal-based package manager for Debian
uk: aptitude (docbook, svg): програма для керування пакунками у терміналі Debian

note: type: textblock
en: L<F-Droid website|https://gitlab.com/fdroid/fdroid-website> (markdown): installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform.
uk: L<Сайт F-Droid|https://gitlab.com/fdroid/fdroid-website> (markdown): каталог вільних програм з відкритим кодом для платформи Android.

note: type: textblock
en: L<git|https://github.com/jnavila/git-manpages-l10n> (asciidoc): distributed version-control system for tracking changes in source code.
uk: L<git|https://github.com/jnavila/git-manpages-l10n> (asciidoc): розподілена система керування версіями для стеження за змінами у початковому коді програм і документації.

note: type: textblock
en: L<Linux manpages|https://salsa.debian.org/manpages-l10n-team/manpages-l10n> (man)
uk: L<Сторінки підручника Linux|https://salsa.debian.org/manpages-l10n-team/manpages-l10n> (man)

note: type: textblock
en: This project provides an infrastructure for translating many manpages to different languages, ready for integration into several major distributions (Arch Linux, Debian and derivatives, Fedora).
uk: Цей проєкт надає інфраструктуру для перекладу багатьох сторінок підручника різними мовами. Результати інтегруються до декількох основних дистрибутивів (Arch Linux, Debian і похідні, Fedora).

note: type: textblock
en: L<Stellarium|https://github.com/Stellarium/stellarium> (HTML): a free open source planetarium for your computer. po4a is used to translate the sky culture descriptions.
uk: L<Stellarium|https://github.com/Stellarium/stellarium> (HTML): вільний планетарій з відкритим кодом для вашого комп'ютера. po4a використовується для перекладу описів картин зоряного неба.

note: type: textblock
en: Other item to sort out: L<https://gitlab.com/fdroid/fdroid-website/> L<https://github.com/fsfe/reuse-docs/pull/61>
uk: Інші пункти для упорядковування: L<https://gitlab.com/fdroid/fdroid-website/> L<https://github.com/fsfe/reuse-docs/pull/61>

note: type: =head1
en: FAQ
uk: Поширені питання

note: type: =head2
en: How do you pronounce po4a?
uk: Як вимовляти po4a?

note: type: textblock
en: I personally vocalize it as L<pouah|https://en.wiktionary.org/wiki/pouah>, which is a French onomatopoetic that we use in place of yuck :) I may have a strange sense of humor :)
uk: Особисто автор вимовляє це як L<pouah|https://en.wiktionary.org/wiki/pouah>, — французький аналог нашого «пхе!» :) Можливо, в автора дивне почуття гумору :)

note: type: =head2
en: What about the other translation tools for documentation using gettext?
uk: Як щодо інших засобів перекладу документації, де використовується gettext?

note: type: textblock
en: There are a few of them. Here is a possibly incomplete list, and more tools are coming at the horizon.
uk: Їх декілька. Нижче наведено неповний список. Існують плани щодо впровадження у декількох інших програмах.

note: type: textblock
en: This is the tool developed by KDE people to handle DocBook XML. AFAIK, it was the first program to extract strings to translate from documentation to PO files, and inject them back after translation.
uk: Це програма, яку розроблено KDE для роботи із XML DocBook. Наскільки мені відомо, це була перша програма, яка видобувала рядки для перекладу з документації до файлів PO і вставляла ці рядки назад після перекладу.

note: type: textblock
en: It can only handle XML, and only a particular DTD. I'm quite unhappy with the handling of lists, which end in one big msgid. When the list become big, the chunk becomes harder to swallow.
uk: Ця програма може працювати лише із форматом XML і лише з певним DTD. Мені не дуже подобається робота зі списками у ній, оскільки використання списків за певних умов призводить до створення величезних msgid. Якщо список дуже великий, перекладати його стає дуже складно.

note: type: textblock
en: This program done by Denis Barbier is a sort of precursor of the po4a SGML module, which more or less deprecates it. As the name says, it handles only the DebianDoc DTD, which is more or less a deprecated DTD.
uk: Цю програму створено Денісом Барбьє (Denis Barbier) як певним чином попередницю модуля SGML po4a, який більшою чи меншою мірою зробив цю програму застарілою. Як можна зрозуміти з назви, програма здатна працювати лише з DTD DebianDoc, який є більшою чи меншою мірою застарілим DTD.

note: type: textblock
en: Used by the GIMP Documentation Team since 2004, works quite well even if, as the name suggests, only with XML files and needs specially configured makefiles.
uk: Використовують у команді з документування GIMP з 2004 року. Працює доволі добре, незважаючи на те, що, як зрозуміло з назви, працює лише з файлами XML і потребує спеціально налаштованиих файлів make.

note: type: textblock
en: The Sphinx Documentation Project also uses gettext extensively to manage its translations. Unfortunately, it works only for a few text formats, rest and markdown, although it is perhaps the only tool that does this managing the whole translation process.
uk: У проєкті з документування Sphinx також широко використовують gettext для керування перекладами. На жаль, це працює лише для декількох текстових форматів, rest та markdown, хоча, можливо, це єдиний інструмент, який може керувати усім процесом перекладу.

note: type: textblock
en: The main advantages of po4a over them are the ease of extra content addition (which is even worse there) and the ability to achieve gettextization.
uk: Основною перевагою po4a над цими програмами є простора додавання додаткових даних (що важко або неможливо зробити у цих програмах) та можливість перетворення даних до стандартного формату gettext.

note: type: =head2
en: SUMMARY of the advantages of the gettext based approach
uk: РЕЗЮМЕ щодо переваг заснованого на gettext підходу

note: type: textblock
en: The translations are not stored along with the original, which makes it possible to detect if translations become out of date.
uk: Переклади не зберігаються разом із оригіналами, що робить можливим виявлення перекладів, які застаріли.

note: type: textblock
en: The translations are stored in separate files from each other, which prevents translators of different languages from interfering, both when submitting their patch and at the file encoding level.
uk: Переклади різними мовами зберігаються у різних файлах, тому перекладачі різними мовами не конфліктують між собою під час подання латок до файлів та на рівні кодування даних у файлах.

note: type: textblock
en: It is based internally on B<gettext> (but B<po4a> offers a very simple interface so that you don't need to understand the internals to use it).  That way, we don't have to re-implement the wheel, and because of their wide use, we can think that these tools are more or less bug free.
uk: На внутрішньому рівні переклад засновано на B<gettext> (але B<po4a> пропонує дуже простий інтерфейс, отже вам не потрібно знати усі тонкощі внутрішньої обробки даних, щоб скористатися ним). Таким чином, ми не винаходили нічого нового, а через широке використання інструментів перекладу gettext можна вважати, що ці інструменти більшою чи меншою мірою вільні від вад.

note: type: textblock
en: Nothing changed for the end-user (beside the fact translations will hopefully be better maintained). The resulting documentation file distributed is exactly the same.
uk: Для кінцевого користувача нічого не міняється (окрім факту кращого супроводу перекладів). Остаточний файл документації розповсюджується у звичний спосіб.

note: type: textblock
en: No need for translators to learn a new file syntax and their favorite PO file editor (like Emacs' PO mode, Lokalize or Gtranslator) will work just fine.
uk: Перекладачам не потрібно вивчати новий синтаксис файлів, а їхня улюблена програма для перекладу (наприклад, режим PO у Emacs, Lokalize чи Gtranslator) легко може бути використана для перекладу.

note: type: textblock
en: gettext offers a simple way to get statistics about what is done, what should be reviewed and updated, and what is still to do. Some example can be found at those addresses:
uk: У gettext передбачено прості способи отримання статистичних даних щодо виконаної роботи, потрібного рецензування та оновлення, а також обсягу роботи, яку ще треба виконати. Приклади можна знайти за цими адресами:

note: type: verbatim
en:  - https://docs.kde.org/stable5/en/kdesdk/lokalize/project-view.html
     - http://www.debian.org/intl/l10n/
uk:  - https://docs.kde.org/stable5/uk/kdesdk/lokalize/project-view.html
     - http://www.debian.org/intl/l10n/

note: type: textblock
en: But everything isn't green, and this approach also has some disadvantages we have to deal with.
uk: Втім, не усе так безхмарно. У цього підходу також є недоліки, з якими доводиться мати справу.

note: type: textblock
en: Addenda are… strange at the first glance.
uk: Додатки… вони на перший погляд доволі дивні.

note: type: textblock
en: You can't adapt the translated text to your preferences, like splitting a paragraph here, and joining two other ones there. But in some sense, if there is an issue with the original, it should be reported as a bug anyway.
uk: Ви не можете адаптувати перекладений текст згідно до власних уподобань, зокрема поділити абзац на два або з'єднати два абзаци. Втім, у певному сенсі, потреба у таких змінах означає ваду у початковому тексті, — про неї усе одно довелося б повідомити авторові тексту.

note: type: textblock
en: Even with an easy interface, it remains a new tool people have to learn.
uk: Навіть із простим інтерфейсом, цей інструмент залишатиметься новим, таким, роботі з яким слід навчатися.

note: type: textblock
en: One of my dreams would be to integrate somehow po4a to Gtranslator or Lokalize. When a documentation file is opened, the strings are automatically extracted, and a translated file + po file can be written to disk. If we manage to do an MS Word (TM) module (or at least RTF) professional translators may even use it.
uk: Однією з моїх мрій є інтеграція po4a до Gtranslator або Lokalize. При відкритті файла документації програма автоматично б видобувала рядки для перекладу, а перекладений файл і файл po записувала б на диск. Якщо б нам вдалося створити модуль MS Word™ (принаймні модуль для RTF), такою комбінацією модуля з програмами для перекладу могли б користуватися навіть професійні перекладачі.

note: type: textblock
en: The documentation of the all-in-one tool that you should use: L<po4a(1)>.
uk: Документація до універсального інструмента, яким вам слід користуватися: L<po4a(1)>.

note: type: textblock
en: The documentation of the individual po4a scripts: L<po4a-gettextize(1)>, L<po4a-updatepo(1)>, L<po4a-translate(1)>, L<po4a-normalize(1)>.
uk: Документація до окремих скриптів po4a: L<po4a-gettextize(1)>, L<po4a-updatepo(1)>, L<po4a-translate(1)>, L<po4a-normalize(1)>.

note: type: textblock
en: The additional helping scripts: L<msguntypot(1)>, L<po4a-display-man(1)>, L<po4a-display-pod(1)>.
uk: Додаткові допоміжні скрипти: L<msguntypot(1)>, L<po4a-display-man(1)>, L<po4a-display-pod(1)>.

note: type: textblock
en: The parsers of each formats, in particular to see the options accepted by each of them: L<Locale::Po4a::AsciiDoc(3pm)> L<Locale::Po4a::Dia(3pm)>, L<Locale::Po4a::Guide(3pm)>, L<Locale::Po4a::Ini(3pm)>, L<Locale::Po4a::KernelHelp(3pm)>, L<Locale::Po4a::Man(3pm)>, L<Locale::Po4a::RubyDoc(3pm)>, L<Locale::Po4a::Texinfo(3pm)>, L<Locale::Po4a::Text(3pm)>, L<Locale::Po4a::Xhtml(3pm)>, L<Locale::Po4a::Yaml(3pm)>, L<Locale::Po4a::BibTeX(3pm)>, L<Locale::Po4a::Docbook(3pm)>, L<Locale::Po4a::Halibut(3pm)>, L<Locale::Po4a::LaTeX(3pm)>, L<Locale::Po4a::Pod(3pm)>, L<Locale::Po4a::Sgml(3pm)>, L<Locale::Po4a::TeX(3pm)>, L<Locale::Po4a::Wml(3pm)>, L<Locale::Po4a::Xml(3pm)>.
uk: Обробники для усіх форматів, зокрема для перегляду параметрів, які приймає кожен з них: L<Locale::Po4a::AsciiDoc(3pm)> L<Locale::Po4a::Dia(3pm)>, L<Locale::Po4a::Guide(3pm)>, L<Locale::Po4a::Ini(3pm)>, L<Locale::Po4a::KernelHelp(3pm)>, L<Locale::Po4a::Man(3pm)>, L<Locale::Po4a::RubyDoc(3pm)>, L<Locale::Po4a::Texinfo(3pm)>, L<Locale::Po4a::Text(3pm)>, L<Locale::Po4a::Xhtml(3pm)>, L<Locale::Po4a::Yaml(3pm)>, L<Locale::Po4a::BibTeX(3pm)>, L<Locale::Po4a::Docbook(3pm)>, L<Locale::Po4a::Halibut(3pm)>, L<Locale::Po4a::LaTeX(3pm)>, L<Locale::Po4a::Pod(3pm)>, L<Locale::Po4a::Sgml(3pm)>, L<Locale::Po4a::TeX(3pm)>, L<Locale::Po4a::Wml(3pm)>, L<Locale::Po4a::Xml(3pm)>.

note: type: textblock
en: The implementation of the core infrastructure: L<Locale::Po4a::TransTractor(3pm)> (particularly important to understand the code organization), L<Locale::Po4a::Chooser(3pm)>, L<Locale::Po4a::Po(3pm)>, L<Locale::Po4a::Common(3pm)>. Please also check the F<CONTRIBUTING.md> file in the source tree.
uk: Реалізація базової інфраструктури: L<Locale::Po4a::TransTractor(3pm)> (частково важливо розуміти організацію коду), L<Locale::Po4a::Chooser(3pm)>, L<Locale::Po4a::Po(3pm)>, L<Locale::Po4a::Common(3pm)>. Будь ласка, ознайомтеся також із файлом F<CONTRIBUTING.md> у дереві початкового коду.

note: type: textblock
en: Locale::Po4a::AsciiDoc - convert AsciiDoc documents from/to PO files
uk: Locale::Po4a::AsciiDoc — перетворення документів AsciiDoc на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::AsciiDoc is a module to help the translation of documentation in the AsciiDoc format.
uk: Locale::Po4a::AsciiDoc — модуль, який допомагає у перекладі документації у форматі AsciiDoc.

note: type: =head1
en: OPTIONS ACCEPTED BY THIS MODULE
uk: ПАРАМЕТРИ, ЯКІ МОЖНА ПЕРЕДАВАТИ ЦЬОМУ МОДУЛЮ

note: type: textblock
en: These are this module's particular options:
uk: Ось параметри, які можна передавати цьому модулю:

note: type: textblock
en: The name of a file containing definitions for po4a, as defined in the B<INLINE CUSTOMIZATION> section.  You can use this option if it is not possible to put the definitions in the document being translated.
uk: Назва файла, що містить визначення для po4a, як це визначено у розділі B<НАЛАШТОВУВАННЯ НА МІСЦІ>. Ви можете скористатися цим параметром, якщо вставляння визначень до документа, який ви перекладаєте, є неможливим.

note: type: textblock
en: In a definitions file, lines must not start by two slashes, but directly by B<po4a:>.
uk: У файлі визначень рядки мають починатися не з двох символів похилої риски, а безпосередньо із B<po4a:>.

note: type: textblock
en: Space-separated list of attribute entries you want to translate.  By default, no attribute entries are translatable.
uk: Список відокремлених пробілами записів атрибутів, вміст яких ви хочете перекладати. Типово, атрибути не перекладаються.

note: type: textblock
en: Space-separated list of macro definitions.
uk: Список відокремлених пробілами визначень макросів.

note: type: textblock
en: Space-separated list of style definitions.
uk: Список відокремлених пробілами визначень стилів.

note: type: textblock
en: Enable automatic line wrapping in non-verbatim blocks, even if the result could be misinterpreted by AsciiDoc formatters.
uk: Увімкнути автоматичне перенесення рядків у блоках, які не є блоками з наперед визначеним форматуванням, навіть якщо результат може бути оброблено з помилками засобами форматування AsciiDoc.

note: type: textblock
en: By default, po4a will not wrap the produced AsciiDoc files because a manual inspection is mandated to ensure that the wrapping does not change the formatting. Consider for instance the following list item:
uk: Типово, po4a не переноситиме рядки у створених файлах AsciiDoc, оскільки уникнути впливу перенесення рядків на форматування тексту у таких файлах можна лише вручну. Розгляньмо, наприклад, такий пункт списку:

note: type: verbatim
en:  * a long sentence that is ending with a number 1. A second sentence.
uk:  * довге речення, яке завершується цифрою 1. Друге речення.

note: type: textblock
en: If the wrapping leads to the following presentation, the item is split into a numbered sub-list. To make things worse, only the speakers of the language used in the translation can inspect the situation.
uk: Якщо перенесення рядків призводить до наведеного нижче варіанта, пункт буде поділено — з'явиться упорядкований підлеглий список. Погіршує ситуацію і те, що помилку зможуть помітити лише ті, хто користуватиметься перекладом.

note: type: verbatim
en:  * a long sentence that is ending with a number
       1. A second sentence.
uk:  * довге речення, яке завершується цифрою
       1. Друге речення.

note: type: textblock
en: Note that not wrapping the files produced by po4a should not be a problem since those files are meant to be processed automatically.  They should not be regarded as source files anyway.
uk: Зауважте, що якщо рядки у файлі, який буде створено po4a, не буде перенесено, ніяких проблем виникнути не повинно — ці файли все одно буде оброблено автоматично. Їх не слід розглядати з точки зору подальшого редагування людиною.

note: type: textblock
en: With this option, po4a will produce better-looking source files, that may lead to possibly erroneous formatted outputs.
uk: Використання цього параметра надає змогу po4a створювати файли із зручнішим для редагування форматуванням, але може призвести до помилок під час обробки природними для формату файлів засобами форматування.

note: type: textblock
en: By default, the targets of block images are translatable to give opportunity to make the content point to translated images. This can be stopped by setting this option.
uk: Типово, записи блоків зображень можна перекладати, щоб надати можливість перекладачеві вказати зображення із перекладеними повідомленнями. Вимкнути переклад цих блоків можна за допомогою цього параметра.

note: type: textblock
en: This option is a flag that enables sub-table segmentation into cell content.  The segmentation is limited to cell content, without any parsing inside of it.
uk: Цей параметр є прапорцем, який вмикає поділ за підтаблицями у вмісті комірки. Поділ обмежено вмістом комірки, без обробки даних всередині.

note: type: textblock
en: Switch parsing rules to compatibility with different tools. Available options are "asciidoc" or "asciidoctor". Asciidoctor has stricter parsing rules, such as equality of length of opening and closing block fences.
uk: Перемикає правила обробки для сумісності із різними інструментами. Доступними значеннями є «asciidoc» і «asciidoctor». Asciidoctor має строгіші правила обробки, зокрема вимагає збереження довжини початкових і завершальних обв'язок блоків.

note: type: textblock
en: Disable linting messages. When the source code cannot be fixed for clearer document structure, these messages are useless.
uk: Вимкнути повідомлення щодо правильності коду. Якщо початковий код не можна виправити з метою поліпшення структурування документа, ці повідомлення не мають сенсу.

note: type: textblock
en: Comma-separated list of keys to process for translation in the YAML Front Matter section. All other keys are skipped. Keys are matched with a case-sensitive match. If B<yfm_paths> and B<yfm_keys> are used together, values are included if they are matched by at least one of the options. Array values are always translated, unless the B<yfm_skip_array> option is provided.
uk: Список відокремлених комами ключів, які слід обробляти для перекладу у вступній частині YAML. Усі інші ключі буде пропущено. Відповідність ключів встановлюватиметься з врахуванням регістру. Якщо B<yfm_paths> і B<yfm_keys> використано разом, значення буде включено, якщо буде встановлено відповідність хоч за одним параметром. Значення масивів завжди перекладатимуться, якщо не вказано параметр B<yfm_skip_array>.

note: type: textblock
en: Do not translate array values in the YAML Front Matter section.
uk: Не перекладати значення масивів у вступному розділі YAML.

note: type: textblock
en: Comma-separated list of hash paths to process for extraction in the YAML Front Matter section, all other paths are skipped. Paths are matched with a case-sensitive match. If B<yfm_paths> and B<yfm_keys> are used together, values are included if they are matched by at least one of the options.  Arrays values are always returned unless the B<yfm_skip_array> option is provided.
uk: Список відокремлених комами шляхів хешів, які слід обробляти для видобування у вступному розділі YAML. Усі інші шляхи буде пропущено. Відповідність шляхів встановлюватиметься з врахуванням регістру. Якщо B<yfm_paths> і B<yfm_keys> використано разом, значення буде включено, якщо буде встановлено відповідність хоч за одним параметром. Значення масивів завжди перекладатимуться, якщо не вказано параметр B<yfm_skip_array>.

note: type: =head1
en: INLINE CUSTOMIZATION
uk: НАЛАШТОВУВАННЯ НА МІСЦІ

note: type: textblock
en: The AsciiDoc module can be customized with lines starting by B<//po4a:>.  These lines are interpreted as commands to the parser.  The following commands are recognized:
uk: Налаштувати модуль AsciiDoc можна рядками, які починаються з B<//po4a:>. Такі рядки вважатимуться командами, які віддаються засобу обробки. Передбачено такі команди:

note: type: =item
en: B<//po4a: macro >I<name>B<[>I<attribute list>B<]>
uk: B<//po4a: macro >I<назва>B<[>I<список атрибутів>B<]>

note: type: textblock
en: This describes in detail the parameters of a B<macro>; I<name> must be a valid macro name, and it ends with an underscore if the target must be translated.
uk: Цей рядок докладно описує параметри B<макроса>; I<назва> має бути коректною назвою макроса і має завершуватися символом підкреслювання, якщо ціль має бути перекладено.

note: type: textblock
en: The I<attribute list> argument is a comma separated list which contains information about translatable arguments.  This list contains either numbers, to define positional parameters, or named attributes.
uk: Аргумент I<список атрибутів> є списком відокремлених комами значень, які містять дані щодо придатних до перекладу аргументів. У цьому списку містяться або номери, для визначення позиційних параметрів, або іменовані атрибути.

note: type: textblock
en: If a plus sign (B<+>) is prepended to I<name>, then the macro and its arguments are translated as a whole.  There is no need to define attribute list in this case, but brackets must be present.
uk: Якщо перед назвою стоятиме символ «плюс» (B<+>), макрос і його аргументи перекладатимуться як ціле. У цьому випадку немає потреби у визначенні списку атрибутів, але квадратні дужки все ж доведеться дописати.

note: type: =item
en: B<//po4a: style >B<[>I<attribute list>B<]>
uk: B<//po4a: style >B<[>I<список атрибутів>B<]>

note: type: textblock
en: This describes in detail which attributes of a style must be translated.
uk: Цей рядок надає змогу докладно описати атрибути стилю, які слід перекласти.

note: type: textblock
en: The I<attribute list> argument is a comma separated list which contains information about translatable arguments.  This list contains either numbers, to define positional parameters, or named attributes.  The first attribute is the style name, it will not be translated.
uk: Аргумент I<список атрибутів> є списком відокремлених комами значень, які містять дані щодо придатних до перекладу аргументів. У цьому списку містяться або номери, для визначення позиційних параметрів, або іменовані атрибути. Перший атрибут є назвою стилю, його не буде перекладено.

note: type: textblock
en: If a plus sign (B<+>) is prepended to the style name, then the attribute list is translated as a whole.  There is no need to define translatable attributes.
uk: Якщо перед назвою стилю вказано символ «плюс» (B<+>), список атрибутів перекладається як ціле. У такому випадку немає потреби у визначенні атрибутів, які слід перекладати.

note: type: textblock
en: If a minus sign (B<->) is prepended to the style name, then this attribute is not translated.
uk: Якщо перед назвою стилю вказано символ «мінус» (B<->), список атрибутів не перекладається.

note: type: =item
en: B<//po4a: entry >I<name>
uk: B<//po4a: entry >I<назва>

note: type: textblock
en: This declares an attribute entry as being translatable.  By default, they are not translated.
uk: Ця команда оголошує запис атрибута як придатний до перекладу. Типово, записи атрибутів не перекладаються.

note: type: =head1
en: STATUS OF THIS MODULE
uk: СТАН ЦЬОГО МОДУЛЯ

note: type: textblock
en: Tested successfully on simple AsciiDoc files.
uk: Успішно перевірено на простих файлах AsciiDoc.

note: type: verbatim
en:  Copyright © 2005-2008 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.
     Copyright © 2012 Denis BARBIER <barbier@linuxfr.org>.
     Copyright © 2017 Martin Quinson <mquinson#debian.org>.
uk:  © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2005–2008.
     © Denis BARBIER <barbier@linuxfr.org>, 2012.
     © Martin Quinson <mquinson#debian.org>, 2017.

note: type: textblock
en: Locale::Po4a::BibTeX - convert BibTeX documents from/to PO files
uk: Locale::Po4a::BibTeX — перетворення документів BibTeX на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::BibTeX is a module to help the translation of bibliographies in the BibTeX format into other [human] languages.
uk: Locale::Po4a::BibTeX — модуль, який допомагає у перекладі бібліографій у форматі BibTeX іншими мовами (якими розмовляють люди).

note: type: textblock
en: Fields values are extracted and proposed for translation.
uk: Значення полів видобуваються і пропонуються для перекладу.

note: type: textblock
en: NONE.
uk: НЕМАЄ.

note: type: textblock
en: It is a very simple module, but still young.
uk: Це дуже простий модуль, але ще доволі молодий.

note: type: verbatim
en:  Copyright © 2006 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.
uk:  © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2006.

note: type: textblock
en: Locale::Po4a::Chooser - manage po4a modules
uk: Locale::Po4a::Chooser — керування модулями po4a

note: type: textblock
en: Locale::Po4a::Chooser is a module to manage po4a modules. Previously, all po4a binaries used to know all po4a modules (pod, man, sgml, etc). This made the addition of a new module boring, because you had to make sure that the documentation is synchronized in all modules, and that each of them can access the new module.
uk: Locale::Po4a::Chooser — модуль для керування модулями po4a. Раніше, усі виконувані файли po4a мали знати про усі модулі po4a (pod, man, sgml тощо). Це робило додавання нового модуля марудною справою, оскільки слід було переконатися, що документацію синхронізовано для усіх модулів, і кожне з модулів може отримувати доступ до нового модуля.

note: type: textblock
en: Now, you just have to call the Locale::Po4a::Chooser::new() function, passing the name of module as argument.
uk: Тепер вам достатньо викликати функцію Locale::Po4a::Chooser::new(), передавши їй назву модуля як аргумент.

note: type: textblock
en: The function Locale::Po4a::Chooser::list() lists the available formats, and exits with the value passed as argument. So, we call Locale::Po4a::Chooser::list(0) when requested for the list of formats, and Locale::Po4a::Chooser::list(1) when passed an invalid format name.
uk: Функція Locale::Po4a::Chooser::list() виводить список усіх доступних форматів і завершує роботу зі значенням, яке передано їй як аргумент. Отже, можна викликати Locale::Po4a::Chooser::list(0), якщо потрібен список форматів, і Locale::Po4a::Chooser::list(1), якщо передано некоректну назву формату.

note: type: =item
en: About po4a:
uk: Про po4a:

note: type: =item
en: About modules:
uk: Про модулі:

note: type: textblock
en: Copyright © 2002-2005, 2014, 2017 SPI, Inc.
uk: © SPI, Inc., 2002, 2003, 2004, 2005, 2014, 2017.

note: type: textblock
en: Locale::Po4a::Common - common parts of the po4a scripts and utils
uk: Locale::Po4a::Common — спільні частини скриптів та інструментів po4a

note: type: textblock
en: Locale::Po4a::Common contains common parts of the po4a scripts and some useful functions used along the other modules.
uk: Locale::Po4a::Common містить спільні частини скриптів та інструментів po4a та деякі корисні функції, які використовуються також і в інших модулях.

note: type: textblock
en: If needed, you can disable the use of Text::WrapI18N as such:
uk: Якщо потрібно, ви можете вимкнути використання Text::WrapI18N взагалі:

note: type: textblock
en: instead of:
uk: замість:

note: type: textblock
en: The ordering is important here: as most Locale::Po4a modules load themselves Locale::Po4a::Common, the first time this module is loaded determines whether Text::WrapI18N is used.
uk: Тут важливий порядок інструкцій: більшість модулів Locale::Po4a самі завантажують Locale::Po4a::Common, отже місце першого завантаження модуля визначає, чи буде використано Text::WrapI18N.

note: type: =head1
en: FUNCTIONS
uk: ФУНКЦІЇ

note: type: =head2
en: Showing output messages
uk: Виведення повідомлень

note: type: textblock
en: Shows the current version of the script, and a short copyright message. It takes the name of the script as an argument.
uk: Виводить поточну версію скрипту та коротке повідомлення щодо авторських прав. Приймає як аргумент назву скрипту.

note: type: textblock
en: This function displays a message the same way as sprintf() does, but wraps the result so that they look nice on the terminal.
uk: Ця функція виводить повідомлення у той самий спосіб, у який це робить sprintf(), але розбиває результат на рядки, щоб він краще виглядав у терміналі.

note: type: textblock
en: This function works like wrap_msg(), but it takes a module name as the first argument, and leaves a space at the left of the message.
uk: Ця функція працює так само, як wrap_msg(), але отримує як перший аргумент назву модуля і лишає місце ліворуч від повідомлення.

note: type: textblock
en: This function works like wrap_msg(), but it takes a file:line reference as the first argument, a module name as the second one, and leaves a space at the left of the message.
uk: Ця функція працює так само, як wrap_msg(), але отримує як перший аргумент позицію файл:рядок, назву модуля як другий аргумент і лишає місце ліворуч від повідомлення.

note: type: =head2
en: Wrappers for other modules
uk: Обгортки для інших модулів

note: type: textblock
en: When the Locale::Gettext module cannot be loaded, this module provide dummy (empty) implementation of the following functions. In that case, po4a messages won't get translated but the program will continue to work.
uk: Якщо не вдається завантажити модуль Locale::Gettext, цей модуль надає фіктивну (порожню) реалізацію зазначених нижче функцій. Повідомлення po4a при цьому перекладено не буде, але програма зможе працювати.

note: type: textblock
en: If Locale::gettext is present, this wrapper also calls setlocale(LC_MESSAGES, "") so callers don't depend on the POSIX module either.
uk: Якщо немає доступу до Locale::gettext, ця обгортка викликає setlocale(LC_MESSAGES, ""), щоб функції, які її викликають, також не залежали від модуля POSIX.

note: type: textblock
en: Copyright © 2005 SPI, Inc.
uk: © SPI, Inc., 2005.

note: type: textblock
en: Locale::Po4a::Dia - convert uncompressed Dia diagrams from/to PO files
uk: Locale::Po4a::Dia — перетворення нестиснених діаграм Dia на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Dia is a module to help the translation of diagrams in the uncompressed Dia format into other [human] languages.
uk: Locale::Po4a::Dia — модуль, який допомагає у перекладі діаграм у нестисненому форматі Dia іншими мовами (якими розмовляють люди).

note: type: verbatim
en: You can get Dia (the graphical editor for these diagrams) from:
      http://www.gnome.org/projects/dia/
uk: Отримати початковий код Dia (графічного редактора для цих діаграм) можна тут:
      http://www.gnome.org/projects/dia/

note: type: =head1
en: TRANSLATING WITH PO4A::DIA
uk: ПЕРЕКЛАД ЗА ДОПОМОГОЮ PO4A::DIA

note: type: textblock
en: This module only translates uncompressed Dia diagrams.  You can save your uncompressed diagrams with Dia itself, unchecking the "Compress diagram files" at the "Save Diagram" dialog.
uk: Цей модуль призначено для перекладу лише нестиснених діаграм Dia. Зберегти нестиснені діаграми можна за допомогою самої Dia, якщо зняти позначку з пункту «Стиснути файл діаграми» у вікні «Збереження діаграми».

note: type: verbatim
en: Another way is to uncompress the dia files from command line with:
      gunzip < original.dia > uncompressed.dia
uk: Ще одним способом розпаковування файлів dia з командного рядка є така команда:
      gunzip < початковий.dia > нестиснений.dia

note: type: textblock
en: This module is fully functional, as it relies in the L<Locale::Po4a::Xml> module. This only defines the translatable tags (E<lt>dia:stringE<gt>), and filters the internal strings (the content of the E<lt>dia:diagramdataE<gt> tag), not interesting for translation.
uk: Цей модуль є повнофункціональним, оскільки він використовує модуль L<Locale::Po4a::Xml>. Сам модуль лише визначає придатні до перекладу теґи (E<lt>dia:stringE<gt>) і фільтрує вбудовані рядки (вміст теґу E<lt>dia:diagramdataE<gt>), які не варті перекладу.

note: type: textblock
en: Copyright © 2004 Jordi Vilalta <jvprat@gmail.com>
uk: © Jordi Vilalta <jvprat@gmail.com>, 2004

note: type: textblock
en: Locale::Po4a::Docbook - convert DocBook XML documents from/to PO files
uk: Locale::Po4a::Docbook — перетворення документів XML DocBook на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Docbook is a module to help the translation of DocBook XML documents into other [human] languages.
uk: Locale::Po4a::Docbook — модуль, який допомагає у перекладі документів XML DocBook іншими мовами (якими розмовляють люди).

note: type: textblock
en: This module is fully functional, as it relies in the L<Locale::Po4a::Xml> module. This only defines the translatable tags and attributes.
uk: Цей модуль є повнофункціональним, оскільки він використовує модуль L<Locale::Po4a::Xml>. Сам модуль лише визначає придатні до перекладу теґи і атрибути.

note: type: textblock
en: The only known issue is that it doesn't handle entities yet, and this includes the file inclusion entities, but you can translate most of those files alone (except the typical entities files), and it's usually better to maintain them separated.
uk: Єдиною відомою вадою є те, що модуль ще не може працювати із замінниками (entities), зокрема із замінниками включення файлів. Втім, ви можете перекладати більшу частину включених файлів окремо (окрім файлів типових замінників), і, зазвичай, такі файли все одно краще супроводжувати окремо.

note: type: =head2
en: OVERRIDE THE DEFAULT BEHAVIOR WITH COMMAND LINE OPTIONS
uk: ПЕРЕВИЗНАЧЕННЯ ТИПОВОЇ ПОВЕДІНКИ ЗА ДОПОМОГОЮ ПАРАМЕТРІВ КОМАНДНОГО РЯДКА

note: type: textblock
en: The default behavior of system provided modules is set to be on the safe side.
uk: Типовою поведінкою наданих системою модулів є безпечна поведінка.

note: type: textblock
en: For example, the default of B<< <author> >> tag is aiming it to appear under B<< <para> >>.  But you may be using it only under B<< <bookinfo> >>.  For this case, you may want to translate it independently for each author.
uk: Наприклад, типовий теґ B<< <author> >> розташовано у тезі B<< <para> >>. Але використовувати його можна лише у тезі B<< <bookinfo> >>. У цьому випадку раціонально було б перекладати його окремо для кожного з авторів.

note: type: textblock
en: If you don't like the default behavior of the xml module and its derivative modules, you can provide command line options to change their behavior.  For example, you can add the following to the po4a configuration file:
uk: Якщо вам не до вподоби типова поведінка модуля xml та похідних від нього модулів, ви можете змінити її за допомогою параметрів командного рядка. Наприклад, ви можете додати таке до файла налаштувань po4a:

note: type: textblock
en: This overrides the default behavior for B<< <bookinfo> >> and B<< <author> >>, set B<< <bookinfo> >> and B<< <author> >> to break input data stream on these tags, set B<< <bookinfo> >> not to translate its tagged content, and set B<< <author> >> to translate its tagged content.
uk: Ці параметри перевизначать типову поведінку для B<< <bookinfo> >> і B<< <author> >>, встановивши, що вхідний потік даних слід розривати на теґах B<< <bookinfo> >> і B<< <author> >>, не слід перекладати дані з теґами у B<< <bookinfo> >> і слід переклади дані з теґами B<< <author> >>.

note: type: verbatim
en:  Copyright © 2004 Jordi Vilalta  <jvprat@gmail.com>
     Copyright © 2007-2009 Nicolas François <nicolas.francois@centraliens.net>
uk:  © Jordi Vilalta  <jvprat@gmail.com>, 2004
     © Nicolas François <nicolas.francois@centraliens.net>, 2007—2009

note: type: textblock
en: Locale::Po4a::Guide - convert Guide XML documents from/to PO files
uk: Locale::Po4a::Guide — перетворення документів XML Guide на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Guide is a module to help in the translation of the Gentoo Linux documentation in the Guide XML format into other [human] languages.
uk: Locale::Po4a::Guide — модуль, який допомагає у перекладі документації до Gentoo Linux у форматі Guide XML іншими мовами (якими розмовляють люди).

note: type: textblock
en: This format is documented here: http://www.gentoo.org/doc/en/xml-guide.xml
uk: Цей формат документовано тут: http://www.gentoo.org/doc/en/xml-guide.xml

note: type: textblock
en: The only known issue is that it doesn't include files with the <include href="..."> tag, but you can translate all those files alone, and it's usually better to have them separated.
uk: Єдиною відомою вадою є те, що не передбачено включення файлів за допомогою теґу <include href="...">. Втім, такі файли можна перекладати окремо. Зазвичай, навіть краще тримати переклад включених файлів у власних файлах.

note: type: textblock
en: Locale::Po4a::Halibut - convert Halibut documents and derivates from/to PO files
uk: Locale::Po4a::Halibut — перетворення документів Halibut та похідних документів на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Halibut is a module to help the translation of Halibut documents into other [human] languages.
uk: Locale::Po4a::Halibut — модуль, який допомагає у перекладі документів Halibut іншими мовами (якими розмовляють люди).

note: type: textblock
en: This module contains the definitions of common Halibut commands and environments.
uk: У цьому модулі містяться визначення загальних команд та середовищ Halibut.

note: type: textblock
en: This module is still beta.  Please send feedback and feature requests.
uk: Цей модуль усе ще є тестовим. Будь ласка, повідомляйте про свої враження та надсилайте запити щодо реалізації можливостей.

note: type: =head1
en: CAVEAT
uk: ЗАСТЕРЕЖЕННЯ

note: type: textblock
en: Some constructs are badly supported. The known ones are documented below.
uk: Підтримка деяких конструкцій усе ще недостатньо реалізована. Нижче документовано відомі такі конструкції.

note: type: =head2
en: Verbatim blocks
uk: Блоки форматованого тексту

note: type: verbatim
en:   \c foo
      \c bar
uk:   \c щось
      \c ще щось

note: type: textblock
en: The verbatim block is not considered as a whole. Each line will be translated separately.
uk: Блоки форматованого тексту не вважаються цілими. Кожен рядок такого блоку перекладається окремо.

note: type: textblock
en: Copyright © 2004-2008 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.
uk: © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2004–2008.

note: type: textblock
en: This program is free software; you may redistribute it and/or modify it under the terms of GPL (see COPYING file).
uk: Ця програма є вільним програмним забезпеченням; ви можете поширювати її і/або вносити до неї зміни за умов дотримання GPL (див. файл COPYING).

note: type: textblock
en: Locale::Po4a::Ini - convert INI files from/to PO files
uk: Locale::Po4a::Ini — перетворення файлів INI на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Ini is a module to help the translation of INI files into other [human] languages.
uk: Locale::Po4a::Ini — модуль, який допомагає у перекладі файлів INI іншими мовами (якими розмовляють люди).

note: type: textblock
en: The module searches for lines of the following format and extracts the quoted text:
uk: Модуль шукає рядки у наведеному нижче форматі і видобуває рядки у лапках:

note: type: textblock
en: identificator="text than can be translated"
uk: identificator="текст, який можна перекласти"

note: type: textblock
en: NOTE: If the text is not quoted, it will be ignored.
uk: Зауваження: якщо рядок не перебуває у лапках, його буде проігноровано.

note: type: textblock
en: Copyright © 2006 BitDefender
uk: © BitDefender, 2006

note: type: textblock
en: Locale::Po4a::KernelHelp - convert kernel configuration help from/to PO files
uk: Locale::Po4a::KernelHelp — перетворення довідки до налаштувань ядра на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::KernelHelp is a module to help the translation of documentation for the Linux kernel configuration options into other [human] languages.
uk: Locale::Po4a::KernelHelp — модуль, який допомагає у перекладі документації до параметрів налаштовування ядра Linux іншими мовами (якими розмовляють люди).

note: type: textblock
en: This module is just written, and needs more tests. Most of the needed work will concern the tools used to parse this file (and configure the kernel), so that they accept to read the documentation from another (translated)  file.
uk: Цей модуль є новим і потребує тестування. Більша частина роботи стосуватиметься інструментів, які використовуються для обробки цього файла (і налаштовування ядра), щоб вони могли читати документацію із іншого (перекладеного) файла.

note: type: textblock
en: Copyright © 2002 SPI, Inc.
uk: © SPI, inc., 2002.

note: type: textblock
en: Locale::Po4a::LaTeX - convert LaTeX documents and derivates from/to PO files
uk: Locale::Po4a::LaTeX — перетворення документів LaTeX та похідних документів на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::LaTeX is a module to help the translation of LaTeX documents into other [human] languages. It can also be used as a base to build modules for LaTeX-based documents.
uk: Locale::Po4a::LaTeX — модуль, який допомагає у перекладі документів LaTeX іншими мовами (якими розмовляють люди). Модулем можна також скористатися як основою для побудови модулів для заснованих на LaTeX документів.

note: type: textblock
en: This module contains the definitions of common LaTeX commands and environments.
uk: У цьому модулі містяться визначення загальних команд та середовищ LaTeX.

note: type: textblock
en: See the L<Locale::Po4a::TeX(3pm)|Locale::Po4a::TeX> manpage for the list of recognized options.
uk: Див. сторінку підручника щодо L<Locale::Po4a::TeX(3pm)|Locale::Po4a::TeX>, щоб ознайомитися зі списком розпізнаваних параметрів.

note: type: textblock
en: Copyright © 2004, 2005 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.
uk: © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2004, 2005.

note: type: textblock
en: Locale::Po4a::Man - convert manual pages from/to PO files
uk: Locale::Po4a::Man — перетворення сторінок підручника на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Man is a module to help the translation of documentation in the nroff format (the language of manual pages) into other [human] languages.
uk: Locale::Po4a::Man — модуль, який допомагає у перекладі документації у форматі nroff (мовою сторінок підручника) іншими мовами (якими розмовляють люди).

note: type: =head1
en: TRANSLATING WITH PO4A::MAN
uk: ПЕРЕКЛАД ЗА ДОПОМОГОЮ PO4A::MAN

note: type: textblock
en: This module tries pretty hard to make translator's life easier. For that, the text presented to translators isn't a verbatim copy of the text found in the man page. Indeed, the cruder parts of the nroff format are hidden, so that translators can't mess up with them.
uk: Цей модуль намагається зробити завдання перекладача якомога простішим. Для цього текст, який отримає перекладач, не є буквальною копією тексту із сторінки підручника. Найнеоковирніші частини коду nroff приховано так, щоб перекладачі не мали з ними справи.

note: type: =head2
en: Text wrapping
uk: Перенесення рядків

note: type: textblock
en: Unindented paragraphs are automatically rewrapped for the translator.  This can lead to some minor difference in the generated output, since the rewrapping rules used by groff aren't very clear. For example, two spaces after a parenthesis are sometimes preserved.
uk: Абзаци без відступів автоматично розбиваються для перекладачів на рядки. Це може призвести до незначних відмінностей у результатах, оскільки правила розбиття на рядки, які використовує groff, не є доволі чіткими. Наприклад, два пробіли після дужки іноді зберігаються.

note: type: textblock
en: Anyway, the difference will only be about the position of the extra spaces in wrapped paragraph, and I think it's worth.
uk: Щоб там не було, а відмінності стосуються лише розташування додаткових пробілів у розбитому на рядки абзаці. Мені здається, що можливість перекладати текст у зручний спосіб варта таких відмінностей.

note: type: =head2
en: Font specification
uk: Специфікація шрифту

note: type: textblock
en: The first change is about font change specifications.  In nroff, there are several ways to specify if a given word should be written in small, bold or italics. In the text to translate, there is only one way, borrowed from the POD (Perl online documentation) format:
uk: Перша зміна стосується специфікації зміни шрифту. У nroff передбачено декілька способів вказати, як має бути написано певне слово, — малим шрифтом, напівжирним шрифтом або курсивом. У тексті для перекладу передбачено лише один з цих способів, для якого використано формат POD (інтернет-документації Perl):

note: type: =item
en: IE<lt>textE<gt> -- italic text
uk: IE<lt>текстE<gt> — курсивний текст

note: type: textblock
en: equivalent to \fItext\fP or ".I text"
uk: еквівалент \fIтекст\fP або ".I текст"

note: type: =item
en: BE<lt>textE<gt> -- bold text
uk: BE<lt>текстE<gt> — напівжирний текст

note: type: textblock
en: equivalent to \fBtext\fP or ".B text"
uk: еквівалент \fBтекст\fP або ".B текст"

note: type: =item
en: RE<lt>textE<gt> -- roman text
uk: RE<lt>текстE<gt> — текст прямим шрифтом

note: type: textblock
en: equivalent to \fRtext\fP
uk: еквівалент \fRtext\fP

note: type: =item
en: CWE<lt>textE<gt> -- constant width text
uk: CWE<lt>текстE<gt> — текст моноширинним шрифтом

note: type: textblock
en: equivalent to \f(CWtext\fP or ".CW text"
uk: еквівалент \f(CWтекст\fP або ".CW текст"

note: type: textblock
en: Remark: The CW face is not available for all groff devices. It is not recommended to use it. It is provided for your convenience.
uk: Зауваження: гарнітурою CW можна скористатися на на всіх пристроях groff. Не рекомендуємо користуватися нею. Її реалізовано лише для зручності.

note: type: =head2
en: Automatic characters transliteration
uk: Автоматична транслітерація символів

note: type: textblock
en: Po4a automatically transliterate some characters to ease the translation or the review of the translation.  Here is the list of the transliterations:
uk: Po4a автоматично транслітерує деякі символи з метою спрощення перекладу або рецензування перекладу. Ось список цих транслітерацій:

note: type: =item
en: hyphens
uk: дефіси

note: type: textblock
en: Hyphens (-) and minus signs (\-) in man pages are all transliterated as simple dashes (-) in the PO file.  Then all dash are transliterated into roff minus signs (\-) when the translation is inserted into the output document.
uk: Дефіси (-) і символи «мінус» (\-) на сторінках підручника усі транслітеруються у прості риски (-) у файлі PO. Далі, усі риски знову транслітеруються у символ «мінус» roff (\-) під час вставляння перекладу до документа-результату.

note: type: textblock
en: Translators can force an hyphen by using the roff glyph '\[hy]' in their translations.
uk: Перекладачі можуть примусово наказати вставити дефіс за допомогою гліфу roff «\[hy]», який вписано у переклад.

note: type: =item
en: non-breaking spaces
uk: нерозривні пробіли

note: type: textblock
en: Translators can use non-breaking spaces in their translations.  These non-breaking spaces (0xA0 in latin1) will be transliterated into a roff non-breaking space ('\ ').
uk: Перекладачі можуть використовувати у перекладах нерозривні пробіли. Нерозривний пробіл (0xA0 у latin1) буде транслітеровано у нерозривний пробіл roff («\ »).

note: type: =item
en: quotes transliterations
uk: транслітерація лапок

note: type: textblock
en: `` and '' are respectively tranliterated into \*(lq and \*(rq.
uk: `` і '' буде, відповідно, транслітеровано у \*(lq та \*(rq.

note: type: textblock
en: To avoid these transliterations, translators can insert a zero width roff character (i.e., using `\&` or '\&' respectively).
uk: Щоб уникнути таких транслітерацій, перекладачі можуть вставляти символ нульової ширини roff (тобто користуватися `\&` або '\&', відповідно).

note: type: =head2
en: Putting 'E<lt>' and 'E<gt>' in translations
uk: Вставляння «E<lt>» і «E<gt>» у переклади

note: type: textblock
en: Since these chars are used to delimit parts under font modification, you can't use them verbatim. Use EE<lt>ltE<gt> and EE<lt>gtE<gt> instead (as in POD, one more time).
uk: Оскільки ці символи використовуються для позначення частин у записах модифікації шрифтів, ви не можете використовувати їх буквально. Скористайтеся замість буквальних записами EE<lt>ltE<gt> та EE<lt>gtE<gt> (знову ж таки, як у POD).

note: type: textblock
en: Activate debugging for some internal mechanisms of this module.  Use the source to see which parts can be debugged.
uk: Задіяти діагностику деяких внутрішніх механізмів цього модуля. Скористайтеся початковим кодом, щоб ознайомитися із частинами, діагностику яких можна виконувати.

note: type: textblock
en: Increase verbosity.
uk: Збільшити рівень докладності повідомлень.

note: type: textblock
en: This option controls the behavior of the module when it encounter a .de, .ie or .if section. It can take the following values:
uk: Цей параметр керує поведінкою модуля, якщо у даних трапиться розділ .de, .ie або .if. Може приймати такі значення:

note: type: textblock
en: This is the default value.  The module will fail when a .de, .ie or .if section is encountered.
uk: Це типове значення. Модуль завершує роботу і повідомляє про помилку, якщо трапиться розділ .de, .ie або .if.

note: type: textblock
en: Indicates that the .de, .ie or .if sections must be copied as is from the original to the translated document.
uk: Вказує на те, що розділи .de, .ie і .if має бути скопійовано без змін з оригіналу до перекладеного документа.

note: type: textblock
en: Indicates that the .de, .ie or .if sections will be proposed for the translation.  You should only use this option if a translatable string is contained in one of these section. Otherwise, I<verbatim> should be preferred.
uk: Вказує на те, що розділи .de, .ie і .if буде запропоновано для перекладу. Користуйтеся цим варіантом, лише якщо у цих розділах містяться придатні до перекладу рядки. Якщо таких рядків там немає, варто скористатися варіантом I<verbatim>.

note: type: textblock
en: 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.
uk: Цей параметр вказує на те, що файл було створено автоматично, і po4a не слід намагатися визначити, чи не було сторінки підручника створено на основі іншого формату. Цей параметр є обов'язковим для використання po4a для автоматично створених сторінок підручника. Зауважте, що переклад створених сторінок, замість початкових даних, часто є помилковим рішенням.

note: type: textblock
en: This option is only useful for mdoc pages.
uk: Цей параметр корисний лише для сторінок mdoc.

note: type: textblock
en: It selects a stricter support of the mdoc format by telling po4a not to translate the 'NAME' section.  mdoc pages whose 'NAME' section is translated won't generate any header or footer.
uk: Вибирає строгіший варіант підтримки формату mdoc, вказуючи po4a, що не слід перекладати розділ «NAME». Для сторінок mdoc, де перекладається розділ «NAME», не створюються верхні і нижні колонтитули.

note: type: verbatim
en: According to the groff_mdoc page, the NAME, SYNOPSIS and DESCRIPTION
    sections are mandatory.
    There are no known issues with translated SYNOPSIS or DESCRIPTION section,
    but you can also specify these sections this way:
     -o mdoc=NAME,SYNOPSIS,DESCRIPTION
uk: Відповідно до сторінки groff_mdoc, розділи NAME, SYNOPSIS та DESCRIPTION
    є обов'язковими.
    Переклад розділів SYNOPSIS і DESCRIPTION не пов'язано із жодними відомими вадами,
    але і ці розділи можна вказати у подібний же спосіб:
     -o mdoc=NAME,SYNOPSIS,DESCRIPTION

note: type: verbatim
en: This mdoc issue can also be solved with an addendum like this one:
     PO4A-HEADER:mode=before;position=^.Dd
     .TH DOCUMENT_TITLE 1 "Month day, year" OS "Section Name"
uk: Цю ваду mdoc також можна усунути за допомогою додатка такого вмісту:
     PO4A-HEADER:mode=before;position=^.Dd
     .TH DOCUMENT_TITLE 1 "День місяця, рік" OS "Назва розділу"

note: type: textblock
en: 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:
uk: Вказані нижче параметр надають змогу вказати визначену поведінку для нового макросу (за допомогою запиту .de) або класичного макросу, підтримку якого не передбачено у po4a. Аргументом цих параметрів є список назв макросів, відокремлених комами. Приклад:

note: type: textblock
en: Note: if a macro is not supported by po4a and if you consider that it is a standard roff macro, you should submit it to the po4a development team.
uk: Зауваження: якщо підтримку макросу не передбачено у po4a, а ви вважаєте, що це стандартний макрос roff, вам слід повідомити про це команду розробників po4a.

note: type: textblock
en: B<untranslated> indicates that this macro (at its arguments) don't have to be translated.
uk: B<untranslated> вказує на так, що цей макрос (і його аргументи) не слід перекладати.

note: type: textblock
en: B<noarg> is like B<untranslated>, except that po4a will verify that no argument is added to this macro.
uk: B<noarg> подібний до B<untranslated>, але вказує на те, що po4a слід перевіряти, чи не було додано аргумент до цього макросу.

note: type: textblock
en: B<translate_joined> indicates that po4a must propose to translate the arguments of the macro.
uk: B<translate_joined> вказує на те, що po4a має запропонувати перекласти аргументи макросу.

note: type: textblock
en: With B<translate_each>, the arguments will also be proposed for the translation, except that each one will be translated separately.
uk: Якщо вказано B<translate_each>, аргументи також буде запропоновано для перекладу, але кожен із них перекладатиметься окремо.

note: type: textblock
en: This option takes as argument a list of comma-separated couples I<begin>:I<end>, where I<begin> and I<end> are commands that delimit the begin and end of a section that should not be rewrapped.
uk: Цьому параметру передається список відокремлених комами пар I<початок>:I<кінець>, де I<початок> і I<кінець> є командами, які відповідають початку і кінцю розділу, у якому не слід переносити рядки.

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

note: type: textblock
en: This option specifies a list of comma-separated macros that must not split the current paragraph. The string to translate will then contain I<foo E<lt>.bar baz quxE<gt> quux>, where I<bar> is the command that should be inlined, and I<baz qux> its arguments.
uk: За допомогою цього параметра можна задати список відокремлених комами макросів, за якими не слід ділити на частини поточний абзац. Після цього у рядку для перекладу буде щось подібне до I<щось E<lt>.команда аргументи_командиE<gt> далі>, де I<команда> — команда, яку слід залишити у ряду, а I<аргументи_комнади> — її аргументи.

note: type: textblock
en: This option indicates how po4a should behave when an unknown macro is found.  By default, po4a fails with a warning.  It can take the following values: B<failed> (the default value), B<untranslated>, B<noarg>, B<translate_joined>, or B<translate_each> (see above for an explanation of these values).
uk: За допомогою цього параметра можна вказати, як po4a має поводитися зі знайденими невідомими макросами. Типово, po4a завершує роботу із попередженням. Параметр може приймати такі значення: B<failed> (типове значення), B<untranslated>, B<noarg>, B<translate_joined> і B<translate_each> (пояснення щодо цих значень наведено вище).

note: type: =head1
en: AUTHORING MAN PAGES COMPLIANT WITH PO4A::MAN
uk: НАПИСАННЯ СУМІСНИХ ІЗ PO4A::MAN СТОРІНОК ПІДРУЧНИКА

note: type: textblock
en: This module is still very limited, and will always be, because it's not a real nroff interpreter. It would be possible to do a real nroff interpreter, to allow authors to use all the existing macros, or even to define new ones in their pages, but we didn't want to. It would be too difficult, and we thought it wasn't necessary. We do think that if manpages' authors want to see their productions translated, they may have to adapt to ease the work of translators.
uk: Можливості цього модуля дуже обмежено, і так буде завжди, оскільки він не є повноцінним інтерпретатором nroff. Можна було б створити справжній інтерпретатор nroff, щоб надати авторам змогу використовувати усі наявні макроси або навіть визначати нові макроси на власних сторінках, але нам не хотілося цього робити. Це надто ускладнило б справу, і нам здається, що у цьому немає потреби. Нам здається, що якщо автори сторінок підручника хочуть, щоб їхню роботу було перекладено, їм буде неважко зробити синтаксис сторінки простішим, щоб спростити роботу перекладачам.

note: type: textblock
en: So, the man parser implemented in po4a have some known limitations we are not really inclined to correct, and which will constitute some pitfalls you'll have to avoid if you want to see translators taking care of your documentation.
uk: Отже, у обробника сторінок підручника, реалізованого у po4a є декілька відомих обмежень, які ми не хочемо усувати, і які визначають межі певних пасток, до яких ви не повинні потрапити, якщо хочете, щоб над вашою документацією попрацювали перекладачі.

note: type: =head2
en: Don't program in nroff
uk: Не програмуйте на nroff

note: type: textblock
en: nroff is a complete programming language, with macro definition, conditionals and so on. Since this parser isn't a fully featured nroff interpreter, it will fail on pages using these facilities (There are about 200 such pages on my box).
uk: nroff є повноцінною мовою програмування із визначенням макросів, умов тощо. Оскільки цей обробник не є повноцінним інтерпретатором nroff, він не зможе працювати зі сторінками, де використовуються можливості nroff з програмування (у моїй системі таких сторінок близько 200).

note: type: =head2
en: Use the plain macro set
uk: Використовуйте простий набір макросів

note: type: textblock
en: There are still some macros which are not supported by po4a::man. This is only because I failed to find any documentation about them. Here is the list of unsupported macros used on my box. Note that this list isn't exhaustive since the program fails on the first encountered unsupported macro. If you have any information about some of these macros, I'll happily add support for them. Because of these macros, about 250 pages on my box are inaccessible to po4a::man.
uk: Підтримку деяких макросів у po4a::man ще не передбачено. Причиною є те, що авторові не вдалося знайти жодної документації щодо них. Нижче наведено список непідтримуваних макросів, які вдалося знайти у системі. Зауважте, що список є неповним, оскільки програма зупиняла роботу на першому ж непідтримуваному макросі. Якщо у вас є відомості щодо якогось з наведених макросів, автор із задоволенням додасть його підтримку. Через ці макроси близько 250 сторінок із операційної системи автора не може бути оброблено за допомогою po4a::man.

note: type: =head2
en: Hiding text from po4a
uk: Приховування тексту від po4a

note: type: textblock
en: Sometimes, the author knows that some parts are not translatable, and should not be extracted by po4a. For example, an option may accept an I<other> argument, and I<other> may also appear as the last item of a list. In the first case, I<other> should be not be translatable. And in the second case, I<other> should be translated.
uk: Іноді, авторові сторінки відомо, що певні частини непридатні до перекладу, отже, їх не слід видобувати за допомогою po4a. Наприклад, параметр може приймати аргумент I<other>, а I<other> може бути також останнім записом у списку. У першому випадку I<other> не слід перекладати, а у другому — слід.

note: type: textblock
en: In such case, the author can avoid po4a to extract some strings, using some special groff constructs:
uk: У такому разі, автор може заборонити po4a видобувати певні рядки за допомогою спеціальних конструкцій у groff:

note: type: textblock
en: (this will require the B<-o groff_code=verbatim> option)
uk: (це потребуватиме параметра B<-o groff_code=verbatim>)

note: type: verbatim
en: A new macro can also be defined to automate this:
     .de IR_untranslated
     .    IR \\$@
     ..
uk: Також мона визначити новий макрос для автоматизації цього:
     .de IR_untranslated
     .    IR \\$@
     ..

note: type: textblock
en: (this will require the options B<-o groff_code=verbatim> and B<-o untranslated=IR_untranslated>; with this construct, the B<.if !'po4a'hide'> conditional is not strictly needed since po4a will not parse the internal of the macro definition)
uk: (Це потребує параметрів B<-o groff_code=verbatim> та B<-o untranslated=IR_untranslated>. Якщо використано цю конструкцію, умова B<.if !'po4a'hide'> не є обов'язковою, оскільки po4a не оброблятиме внутрішньої частини визначення макросу.)

note: type: verbatim
en: or using an alias:
     .als IR_untranslated IR
uk: або за допомогою альтернативи:
     .als IR_untranslated IR

note: type: textblock
en: This will require the B<-o untranslated=als,IR_untranslated> option.
uk: Це потребуватиме параметра B<-o untranslated=als,IR_untranslated>.

note: type: =head2
en: Conclusion
uk: Висновки

note: type: textblock
en: To summarise this section, keep simple, and don't try to be clever while authoring your man pages. A lot of things are possible in nroff, and not supported by this parser. For example, don't try to mess with \c to interrupt the text processing (like 40 pages on my box do). Or, be sure to put the macro arguments on the same line that the macro itself. I know that it's valid in nroff, but would complicate too much the parser to be handled.
uk: Підсумовуючи написане у цьому розділі, намагайтеся бути простішими, не ускладнюйте речі при написанні ваших сторінок підручника. У nroff багато можливостей, але підтримки деяких з них не передбачено у цьому засобі обробки. Наприклад, не намагайтеся використовувати \c для переривання обробки тексту (як це зроблено на 40 сторінках у моїй системі). Також розміщуйте аргументи макросу у тому самому рядку, що і макрос. Я знаю, що так можна робити у nroff, але це надто ускладнює роботу засобу обробки даних.

note: type: textblock
en: Of course, another possibility is to use another format, more translator friendly (like POD using po4a::pod, or one of the XML family like SGML), but thanks to po4a::man it isn't needed anymore. That being said, if the source format of your documentation is POD, or XML, it may be clever to translate the source format and not this generated one. In most cases, po4a::man will detect generated pages and issue a warning. It will even refuse to process POD generated pages, because those pages are perfectly handled by po4a::pod, and because their nroff counterpart defines a lot of new macros I didn't want to write support for. On my box, 1432 of the 4323 pages are generated from POD and will be ignored by po4a::man.
uk: Звичайно ж, можна скористатися іншим форматом, який є зручнішим для перекладу (зокрема POD із використанням po4a::pod або один із форматів сімейства XML, зокрема SGML), але завдяки po4a::man у цьому більше немає потреби. Втім, якщо початковим форматом вашої документації є POD або XML, ймовірно, варто перекладати її у початковому форматі, а не у автоматично обробленому. У більшості випадків po4a::man виявить автоматично створені сторінки і попередить про це. Модуль навіть відмовиться обробляти створені за допомогою POD сторінки, оскільки ці сторінки чудово обробляються модулем po4a::pod і оскільки відповідник nroff визначає багато нових макросів, підтримку яких у модулі man автор не хотів би реалізовувати. У системі автора модуля 1432 із 4323 сторінок створено на основі POD. Такі сторінки ігноруватимуться модулем po4a::man.

note: type: textblock
en: In most cases, po4a::man will detect the problem and refuse to process the page, issuing an adapted message. In some rare cases, the program will complete without warning, but the output will be wrong. Such cases are called "bugs" ;) If you encounter such case, be sure to report this, along with a fix when possible…
uk: Здебільшого, po4a::man виявлятиме проблеми і відмовлятимуться обробляти сторінку, видаючи відповідне повідомлення. У деяких рідкісних випадках програма завершить роботу без повідомлення про помилку, але виведені дані будуть помилковими. Такі випадки ми називаємо «вади» ;) Якщо вам трапиться такий випадок, звичайно ж, повідомте про нього розробникам, бажано, із виправленням…

note: type: textblock
en: This module can be used for most of the existing man pages.
uk: Цим модулем можна скористатися для більшості наявних сторінок підручника.

note: type: textblock
en: Some tests are regularly run on Linux boxes:
uk: Ось результати регулярного тестування у системах Linux:

note: type: textblock
en: one third of the pages are refused because they were generated from another format supported by po4a (e.g. POD or SGML).
uk: причиною помилок під час перетворення однієї третини зі сторінок є те, що їх було автоматично створено на основі іншого формату, підтримку якого передбачено у po4a (наприклад POD або SGML).

note: type: textblock
en: 10% of the remaining pages are rejected with an error (e.g. a groff macro is not supported).
uk: перетворення 10% решти сторінок завершується помилкою (наприклад, через те, що не передбачено підтримки макросу groff).

note: type: textblock
en: Then, less than 1% of the pages are accepted silently by po4a, but with significant issues (i.e. missing words, or new words inserted)
uk: Крім того, менше за 1% сторінок вдається обробити за допомогою po4a без помилок, але результати мають суттєві вади (пропущені слова або вставлені нові слова)

note: type: textblock
en: The other pages are usually handled without differences more important than spacing differences or line rewrapped (font issues in less than 10% of the processed pages).
uk: Решту сторінок зазвичай вдається обробити без відмінностей, окрім відмінностей у пробілах або перенесенні рядків (проблеми зі шрифтами виникають на менш ніж 10% оброблених сторінок).

note: type: textblock
en: Copyright © 2002-2008 SPI, Inc.
uk: © SPI, Inc., 2002–2008.

note: type: textblock
en: Locale::Po4a::Po - PO file manipulation module
uk: Locale::Po4a::Po — модуль для керування файлами PO

note: type: verbatim
en:     # Read PO file
        $pofile->read('file.po');
uk:     # Прочитати файл PO
        $pofile->read('file.po');

note: type: verbatim
en:     # Add an entry
        $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour',
                      'flags' => "wrap", 'reference'=>'file.c:46');
uk:     # Додати запис
        $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour',
                      'flags' => "wrap", 'reference'=>'file.c:46');

note: type: verbatim
en:     # Extract a translation
        $pofile->gettext("Hello"); # returns 'bonjour'
uk:     # Видобути переклад
        $pofile->gettext("Hello"); # повертає 'bonjour'

note: type: verbatim
en:     # Write back to a file
        $pofile->write('otherfile.po');
uk:     # Записати результат до файла
        $pofile->write('otherfile.po');

note: type: textblock
en: Locale::Po4a::Po is a module that allows you to manipulate message catalogs. You can load and write from/to a file (which extension is often I<po>), you can build new entries on the fly or request for the translation of a string.
uk: За допомогою модуля Locale::Po4a::Po ви зможете керувати каталогами повідомлень. Ви можете завантажити дані з файла і записати їх до файла (суфіксом назви якого є, зазвичай, I<po>), ви можете динамічно створювати нові записи або надсилати запити щодо перекладу певного рядка.

note: type: textblock
en: For a more complete description of message catalogs in the PO format and their use, please refer to the info documentation of the gettext program (node "`PO Files"').
uk: Повний опис каталогів повідомлень у форматі PO та принципів їхнього використання наведено у документації info до комплекту програм gettext (вузол «PO Files»).

note: type: textblock
en: This module is part of the po4a project, which objective is to use PO files (designed at origin to ease the translation of program messages) to translate everything, including documentation (man page, info manual), package description, debconf templates, and everything which may benefit from this.
uk: Цей модуль є частиною проєкту po4a. Метою його створення було використання файлів PO (від початку створених для полегшення перекладу інтерфейсу програм) для перекладу будь-чого, зокрема документації (сторінок підручника, документації info), описів пакунків, шаблонів debconf та будь-чого, що корисно перекладати.

note: type: =head1
en: Functions concerning entire message catalogs
uk: Функції, які стосуються усіх каталогів повідомлень

note: type: textblock
en: Creates a new message catalog. If an argument is provided, it's the name of a PO file we should load.
uk: Створює каталог повідомлень. Якщо вказано аргумент, він вважатиметься назвою файла PO, який слід завантажити.

note: type: textblock
en: Reads a PO file (which name is given as argument).  Previously existing entries in self are not removed, the new ones are added to the end of the catalog.
uk: Читає файл PO (назва передається як аргумент). Наявні у self записи не вилучаються, нові додаються наприкінці каталогу.

note: type: textblock
en: Writes the current catalog to the given file.
uk: Записує поточний каталог до вказаного файла.

note: type: textblock
en: Like write, but if the PO or POT file already exists, the object will be written in a temporary file which will be compared with the existing file to check if the update is needed (this avoids to change a POT just to update a line reference or the POT-Creation-Date field).
uk: Подібна до write, але якщо файл PO або POT вже існує, об'єкт буде записано до тимчасового файла, який буде порівняно із наявним файлом з метою визначити, чи потрібне оновлення (таким чином, ми уникаємо внесення змін до POT лише для оновлення посилань на рядки або поля дати створення POT).

note: type: textblock
en: This function extracts a catalog from an existing one. Only the entries having a reference in the given file will be placed in the resulting catalog.
uk: Ця функція видобуває каталог з наявного файла перекладу. До каталогу-результату буде включено лише ті записи, які містять посилання на вказаний файл.

note: type: textblock
en: This function parses its argument, converts it to a Perl function definition, evals this definition and filters the fields for which this function returns true.
uk: Ця функція обробляє свій аргумент, перетворює його на визначення функції Perl, обробляє це визначення і фільтрує поля, для яких створена функція повертає true.

note: type: textblock
en: I love Perl sometimes ;)
uk: Іноді я люблю Perl ;)

note: type: textblock
en: Recodes to UTF-8 the PO's msgstrs. Does nothing if the charset is not specified in the PO file ("CHARSET" value), or if it's already UTF-8 or ASCII.
uk: Розкодовує UTF-8 у рядках перекладів (msgstr) PO. Не виконує ніяких дій, якщо кодування у файлі PO не вказано кодування (немає значення «CHARSET»), або якщо дані вже записано у кодуванні UTF-8, або дані є символами ASCII.

note: type: =head1
en: Functions to use a message catalog for translations
uk: Функції для використання каталогу повідомлень для перекладів

note: type: textblock
en: Request the translation of the string given as argument in the current catalog.  The function returns the original (untranslated) string if the string was not found.
uk: Надсилає запит щодо перекладу рядка, переданого як аргумент, до поточного каталогу перекладів. Функція повертає початковий (неперекладений) рядок, якщо рядок не буде знайдено у каталозі.

note: type: textblock
en: After the string to translate, you can pass a hash of extra arguments. Here are the valid entries:
uk: Після рядка, який слід перекласти, ви можете передати хеш додаткових аргументів. Ось коректні записи цих аргументів:

note: type: textblock
en: boolean indicating whether we can consider that whitespaces in string are not important. If yes, the function canonizes the string before looking for a translation, and wraps the result.
uk: булеве значення, яке вказує на те, чи розглядаєте ви пробіли як неважливу частину рядка. Якщо має значення «yes» («так»), функція переводить рядок у канонічну форму, перш ніж шукати переклад, а потім виконує перенесення рядків у результаті пошуку.

note: type: textblock
en: the column at which we should wrap (default: 76).
uk: позиція, на якій слід переносити рядки (типове значення: 76).

note: type: textblock
en: Returns statistics about the hit ratio of gettext since the last time that stats_clear() was called. Please note that it's not the same statistics than the one printed by msgfmt --statistic. Here, it's statistics about recent usage of the PO file, while msgfmt reports the status of the file.  Example of use:
uk: Повертає статистичні дані щодо пошуку відповідників з часу останнього виклику stats_clear(). Будь ласка, зауважте, що ці статистичні дані — це не ті дані, які виводить команда msgfmt --statistic. Це статистичні дані щодо використання файла PO, тоді як дані msgfmt — це звіт щодо стану файла. Приклад використання:

note: type: verbatim
en:     [some use of the PO file to translate stuff]
uk:     [якесь використання файла PO для перекладу даних]

note: type: verbatim
en:     ($percent,$hit,$queries) = $pofile->stats_get();
        print "So far, we found translations for $percent\%  ($hit of $queries) of strings.\n";
uk:     ($percent,$hit,$queries) = $pofile->stats_get();
        print "Знайдено переклади для $percent\%  ($hit з $queries) рядків.\n";

note: type: textblock
en: Clears the statistics about gettext hits.
uk: Вилучає статистику щодо відповідників gettext.

note: type: =head1
en: Functions to build a message catalog
uk: Функції для збирання каталогу повідомлень

note: type: textblock
en: Push a new entry at the end of the current catalog. The arguments should form a hash table. The valid keys are:
uk: Дописати запис наприкінці поточного каталогу. Аргументи слід вказувати у форматі таблиці хешів. Коректні ключі:

note: type: textblock
en: the string in original language.
uk: рядок початковою мовою.

note: type: textblock
en: the translation.
uk: переклад.

note: type: textblock
en: an indication of where this string was found. Example: file.c:46 (meaning in 'file.c' at line 46). It can be a space-separated list in case of multiple occurrences.
uk: позначка того, де було знайдено цей рядок. Приклад: file.c:46 (означає «file.c», у рядку 46). Може бути списком відокремлених пробілами значень, якщо рядок трапляється у декількох місцях.

note: type: textblock
en: a comment added here manually (by the translators). The format here is free.
uk: коментар, доданий сюди вручну (перекладачами). Формат є довільним.

note: type: textblock
en: a comment which was automatically added by the string extraction program. See the B<--add-comments> option of the B<xgettext> program for more information.
uk: коментар, який буде автоматично додано програмою для видобування рядків. Докладніший опис можна знайти у розділі щодо параметра B<--add-comments> підручника до програми B<xgettext>.

note: type: textblock
en: space-separated list of all defined flags for this entry.
uk: список усіх прапорців для цього запису, відокремлених пробілами.

note: type: textblock
en: Valid flags are: B<c-text>, B<python-text>, B<lisp-text>, B<elisp-text>, B<librep-text>, B<smalltalk-text>, B<java-text>, B<awk-text>, B<object-pascal-text>, B<ycp-text>, B<tcl-text>, B<wrap>, B<no-wrap> and B<fuzzy>.
uk: Коректними прапорцями є такі: B<c-text>, B<python-text>, B<lisp-text>, B<elisp-text>, B<librep-text>, B<smalltalk-text>, B<java-text>, B<awk-text>, B<object-pascal-text>, B<ycp-text>, B<tcl-text>, B<wrap>, B<no-wrap> and B<fuzzy>.

note: type: textblock
en: See the gettext documentation for their meaning.
uk: Із призначенням прапорців можна ознайомитися у документації з gettext.

note: type: textblock
en: this is mostly an internal argument: it is used while gettextizing documents. The idea here is to parse both the original and the translation into a PO object, and merge them, using one's msgid as msgid and the other's msgid as msgstr. To make sure that things get ok, each msgid in PO objects are given a type, based on their structure (like "chapt", "sect1", "p" and so on in DocBook). If the types of strings are not the same, that means that both files do not share the same structure, and the process reports an error.
uk: здебільшого внутрішній аргумент: використовується під час перетворення на формат gettext даних документів. Ідея полягає у поєднанні оригіналу і перекладу у одному об'єкті PO, який використовує один із елементів msgid як msgid, а інший — як msgstr. Щоб переконатися, що усе гаразд, кожному msgid в об'єктах PO надається тип, який визначається на основі структури документа (наприклад «chapt», «sect1», «p» тощо у DocBook). Якщо типи рядків не однакові, це означає, що структура документів є різною, тому процес обробки повідомляє про помилку.

note: type: textblock
en: This information is written as automatic comment in the PO file since this gives to translators some context about the strings to translate.
uk: Ці відомості автоматично записуються як коментар до файла PO, оскільки надають перекладачам контекст щодо рядка, який вони перекладають.

note: type: textblock
en: boolean indicating whether whitespaces can be mangled in cosmetic reformattings. If true, the string is canonized before use.
uk: булеве значення, яке вказує на те, чи можна нехтувати пробілами при косметичному переформатуванні. Якщо має значення true, рядок переводиться до канонічної форми перед його використанням.

note: type: textblock
en: This information is written to the PO file using the B<wrap> or B<no-wrap> flag.
uk: Ця інформація записується до файла PO за допомогою прапорця B<wrap> або B<no-wrap>.

note: type: textblock
en: This information is not written to the PO file.
uk: Ця інформація не записується до файла PO.

note: type: =head1
en: Miscellaneous functions
uk: Різноманітні функції

note: type: textblock
en: Returns the number of entries in the catalog (without the header).
uk: Повертає кількість записів у каталозі (без заголовка).

note: type: textblock
en: Returns the number of entries in document. If a string appears multiple times in the document, it will be counted multiple times.
uk: Повертає кількість записів у документі. Якщо у документі певний рядок зустрічається декілька разів, його буде пораховано декілька разів.

note: type: textblock
en: Returns the msgid of the given number.
uk: Повертає msgid із вказаним номером.

note: type: textblock
en: Returns the msgid with the given position in the document.
uk: Повертає msgid із вказаною позицією у документі.

note: type: textblock
en: Returns the type of the msgid with the given position in the document. This is probably only useful to gettextization, and it's stored separately from {$msgid}{'type'} because the later location may be overwritten by another type when the $msgid is duplicated in the master document.
uk: Повертає тип msgid із заданою позицією у документі. Це, ймовірно, корисно лише для перетворення до формату gettext, і позиція зберігається окремо від {$msgid}{'type'}, оскільки останній запис може бути перезаписано іншим типом, коли $msgid дубльовано в основному документі.

note: type: textblock
en: Returns the character set specified in the PO header. If it hasn't been set, it will return "UTF-8".
uk: Повертає кодування символів, яке вказано у заголовку файла PO. Якщо таке кодування не вказано, поверне рядок «UTF-8».

note: type: textblock
en: This sets the character set of the PO header to the value specified in its first argument. If you never call this function (and no file with a specified character set is read), the default value is left to "UTF-8". This value doesn't change the behavior of this module, it's just used to fill that field in the header, and to return it in get_charset().
uk: Встановлює для кодування символів у заголовку PO значення, вказане як перший аргумент функції. Якщо ви не викликатимете цю функцію (і не читатимете файл із визначеним кодуванням символів), типовим значенням залишиться «UTF-8». Це значення не змінює поведінки модуля, просто використовується для заповнення поля у заголовку і повернення значення у функції get_charset().

note: type: textblock
en: Locale::Po4a::Pod - convert POD data from/to PO files
uk: Locale::Po4a::Pod — перетворення даних POD на файли PO, і навпаки

note: type: verbatim
en:     # Read POD from STDIN and write to STDOUT.
        $parser->parse_from_filehandle;
uk:     # Прочитати POD з STDIN і записати до STDOUT.
        $parser->parse_from_filehandle;

note: type: verbatim
en:     # Read POD from file.pod and write to file.txt.
        $parser->parse_from_file ('file.pod', 'file.txt');
uk:     # Прочитати POD з file.pod і записати до file.txt.
        $parser->parse_from_file ('file.pod', 'file.txt');

note: type: textblock
en: Locale::Po4a::Pod is a module to help the translation of documentation in the POD format (the preferred language for documenting Perl) into other [human] languages.
uk: Locale::Po4a::Pod — модуль, який допомагає у перекладі документації у форматі POD (основною мовою документації до Perl) іншими мовами (якими розмовляють люди).

note: type: textblock
en: I think that this module is rock stable, and there is only one known bug with F</usr/lib/perl5/Tk/MainWindow.pod> (and some other pages, see below) which contains:
uk: Я вважаю цей модуль дуже стабільним. У нього лише одна відома вада, пов'язана із F</usr/lib/perl5/Tk/MainWindow.pod> (та деякими іншими сторінками, див. нижче), де міститься такий рядок:

note: type: textblock
en: Lack of luck, in the po4a version, this was split on the space by the wrapping. As result, in the original version, the man page contains
uk: На жаль, у версії po4a цей рядок ділиться за пробілом на два рядки. У результаті, якщо у початковій версії сторінка підручника містить таке:

note: type: textblock
en: and mine contains
uk: то після обробки вона містить таке:

note: type: textblock
en: which is logic since CE<lt>foobarE<gt> is rewritten "foobar".
uk: Це логічно, оскільки CE<lt>щось тамE<gt> переписується як "щось там".

note: type: textblock
en: Complete list of pages having this problem on my box (from 564 pages; note that it depends on the chosen wrapping column): /usr/lib/perl5/Tk/MainWindow.pod /usr/share/perl/5.8.0/overload.pod /usr/share/perl/5.8.0/pod/perlapi.pod /usr/share/perl/5.8.0/pod/perldelta.pod /usr/share/perl/5.8.0/pod/perlfaq5.pod /usr/share/perl/5.8.0/pod/perlpod.pod /usr/share/perl/5.8.0/pod/perlre.pod /usr/share/perl/5.8.0/pod/perlretut.pod
uk: Повний список сторінок, які є проблемними у цьому сенсі, з моєї системи (у мене 564 сторінок; зауважте, що перелік залежить від вибраної позиції перенесення рядків): /usr/lib/perl5/Tk/MainWindow.pod /usr/share/perl/5.8.0/overload.pod /usr/share/perl/5.8.0/pod/perlapi.pod /usr/share/perl/5.8.0/pod/perldelta.pod /usr/share/perl/5.8.0/pod/perlfaq5.pod /usr/share/perl/5.8.0/pod/perlpod.pod /usr/share/perl/5.8.0/pod/perlre.pod /usr/share/perl/5.8.0/pod/perlretut.pod

note: type: =head1
en: INTERNALS
uk: ВНУТРІШНІ ПРИНЦИПИ РОБОТИ

note: type: textblock
en: As a derived class from Pod::Parser, Locale::Po4a::Pod supports the same methods and interfaces.  See L<Pod::Parser> for all the details; briefly, one creates a new parser with C<< Locale::Po4a::Pod->new() >> and then calls either parse_from_filehandle() or parse_from_file().
uk: Будучи класом, який походить від класу Pod::Parser, Locale::Po4a::Pod підтримує ті самі методи та інтерфейси. Докладний опис можна знайти на сторінці підручника щодо L<Pod::Parser>. Якщо коротко, клас створює обробки за допомогою C<< Locale::Po4a::Pod->new() >>, а потім викликає parse_from_filehandle() або parse_from_file().

note: type: textblock
en: new() can take options, in the form of key/value pairs, that control the behavior of the parser.  The recognized options common to all Pod::Parser children are:
uk: new() може примати параметри у форматі пар ключ/значення. Ці параметри керують поведінкою обробника. Коректні параметри є спільними для усіх дочірніх класів Pod::Parser:

note: type: textblock
en: If set to a true value, selects an alternate output format that, among other things, uses a different heading style and marks B<=item> entries with a colon in the left margin.  Defaults to false.
uk: Якщо встановлено значення true, вибирає альтернативний формат виведення, який, окрім інших речей, використовує інший стиль заголовків і позначає запис B<=item> двокрапкою на лівому полі. Типовим значенням є false.

note: type: textblock
en: If set to a true value, the non-POD parts of the input file will be included in the output.  Useful for viewing code documented with POD blocks with the POD rendered and the code left intact.
uk: Якщо встановлено значення true, до виведених результатів буде включено не пов'язані із POD частини файла вхідних даних. Корисно для файлів із кодом, документованим за допомогою блоків POD, де слід перекласти POD, а код лишити незмінним.

note: type: textblock
en: The number of spaces to indent regular text, and the default indentation for B<=over> blocks.  Defaults to 4.
uk: Кількість пробілів у відступах для звичайного тексту і типові відступи для блоків B<=over>. Типове значення — 4.

note: type: textblock
en: If set to a true value, a blank line is printed after a B<=head1> heading.  If set to false (the default), no blank line is printed after B<=head1>, although one is still printed after B<=head2>.  This is the default because it's the expected formatting for manual pages; if you're formatting arbitrary text documents, setting this to true may result in more pleasing output.
uk: Якщо встановлено значення true, після заголовка B<=head1> буде виведено порожній рядок. Якщо встановлено значення false (типовий варіант), після B<=head1> не буде додано порожній рядок, хоча такий рядок виводитиметься після B<=head2>. Це типова поведінка, оскільки таке форматування є очікуваним для сторінок підручника. Якщо ви форматуєте довільні текстові документи, встановлення значення true може покращити зовнішній вигляд результатів.

note: type: textblock
en: Sets the quote marks used to surround CE<lt>> text.  If the value is a single character, it is used as both the left and right quote; if it is two characters, the first character is used as the left quote and the second as the right quote; and if it is four characters, the first two are used as the left quote and the second two as the right quote.
uk: Визначає лапки, які буде використано для тексту CE<lt>>. Якщо значенням є одинарний символ, він використовується для лівих і правих лапок; якщо значенням є два символи, перший символ використовується для лівих лапок, а другий — для правих; якщо ж символів чотири, перші два використовуються як ліві лапки, а останні два — як праві.

note: type: textblock
en: This may also be set to the special value B<none>, in which case no quote marks are added around CE<lt>> text.
uk: Може приймати особливе значення B<none>, яке означає, що навколо тексту CE<lt>> не додаватимуться лапки.

note: type: textblock
en: If set to a true value, Locale::Po4a::Pod will assume that each sentence ends in two spaces, and will try to preserve that spacing.  If set to false, all consecutive whitespace in non-verbatim paragraphs is compressed into a single space.  Defaults to true.
uk: Якщо встановлено значення true, Locale::Po4a::Pod вважатиме, що кожне речення завершується двома пробілами і намагатиметься зберігати такі інтервали між реченнями. Якщо встановлено значення false, усі послідовні пробіли у звичайних абзацах будуть стискатися до одинарного пробілу. Типовим значенням є true.

note: type: textblock
en: The column at which to wrap text on the right-hand side.  Defaults to 76.
uk: Позиція, на якій слід переносити рядки тексту праворуч. Типове значення — 76.

note: type: textblock
en: Locale::Po4a::RubyDoc -- Convert Ruby Document data from/to PO files
uk: Locale::Po4a::RubyDoc — перетворення даних документа Ruby на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::RubyDoc is a module to help the translation of documentation in the Ruby Document (RD) format (a language used to document Ruby) into other [human] languages.
uk: Locale::Po4a::RubyDoc — модуль, який допомагає у перекладі документації у форматі Ruby Document (RD) (мовою, яку використовували для документування Ruby) іншими мовами (якими розмовляють люди).

note: type: textblock
en: This module has been successfully tested on simple Ruby Document files covering a good part of the format syntax.
uk: Цей модуль було успішно перевірено на простих файлах Ruby Document, у яких використано значну частину синтаксичних конструкцій форматування.

note: type: textblock
en: A known limitation is that it fails to properly recognize the stacked structure of input Ruby Document: this implies that when, for instance, an EnumListItem consists of more than one Block, only the first Block is actually recognized as EnumListItem, while the subsequent ones are considered just as TextBlocks...
uk: Відомим обмеженням є те, що обробник не може належним чином розпізнати вкладену структуру вхідного коду Ruby Document. Це, наприклад, означає, що якщо у EnumListItem міститься декілька записів Block, лише перший Block буде розпізнано як EnumListItem. Усі інші вважатимуться належними до типу TextBlocks...

note: type: textblock
en: This module supports the following option:
uk: У цьому модулі передбачено підтримку такого параметра:

note: type: textblock
en: Handle files entirely made of Ruby Document formatted text (without any "=begin" line).
uk: Обробка файлів, які повністю складаються з форматованого у Ruby Document тексту (без рядка «=begin»).

note: type: textblock
en: By default, this module only handles Ruby Document formatted text between "=begin" and "=end" lines (hence ignoring, among other things, everything that precedes the first "=begin" line).
uk: Типово, цей модуль обробляє лише форматований у Ruby Document текст між рядками «=begin» і «=end» (отже, ігноруючи, серед іншого, усе, що передує першому рядку «=begin»).

note: type: verbatim
en:  Copyright © 2016-2017 Francesco Poli <invernomuto@paranoici.org>
uk:  © Francesco Poli <invernomuto@paranoici.org>, 2016–2017

note: type: textblock
en: This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
uk: Ця робота є вільним програмним забезпеченням. Ви можете поширювати і/або вносити зміни до її тексту за умов дотримання загальної громадської ліцензії GNU (GNU General Public License) відповідно до оприлюдненого Free Software Foundation тексту цієї ліцензії версії 2 або (якщо вам того хочеться) будь-якої пізнішої версії.

note: type: textblock
en: This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
uk: Ця робота поширюється з надією, що буде корисною, але БЕЗ БУДЬ_ЯКИХ ГАРАНТІЙ; навіть без неявної гарантії ПРИДАТНОСТІ ДО ПРОДАЖУ або ВІДПОВІДНОСТІ ПЕВНІЙ МЕТІ. Докладніше про це дивіться у GNU General Public License.

note: type: textblock
en: You should have received a copy of the GNU General Public License along with this work; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
uk: Ви маєте отримати копію GNU General Public License разом з цією роботою; якщо це не так, повідомте про факт за адресою Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

note: type: textblock
en: Parts of the code (such as many regular expressions) were adapted from the source of rdtool, under the terms of the GNU General Public License, version 2 or later.  These parts are originally:
uk: Частини коду (зокрема, багато формальних виразів) було запозичено з коду rdtool, за умов дотримання GNU General Public License, версії 2 або новішої. Авторські права на початковий код належать:

note: type: verbatim
en:  Copyright © 2004      MoonWolf <moonwolf@moonwolf.com>
     Copyright © 2011-2012 Youhei SASAKI <uwabami@gfd-dennou.org>
uk:  © MoonWolf <moonwolf@moonwolf.com>, 2004
     © Youhei SASAKI <uwabami@gfd-dennou.org>, 2011–2012

note: type: textblock
en: The initialize code was adapted from the source of Locale::Po4a::Text, under the terms of the GNU General Public License, version 2 or later.  This code was originally:
uk: Код ініціалізації було запозичено з коду Locale::Po4a::Text, за умов дотримання GNU General Public License, версії 2 або новішої. Авторські права на початковий код належать:

note: type: verbatim
en:  Copyright © 2005-2008 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>
uk:  © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2005–2008

note: type: textblock
en: Locale::Po4a::Sgml - convert SGML documents from/to PO files
uk: Locale::Po4a::Sgml — перетворення документів SGML на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Sgml is a module to help the translation of documentation in the SGML format into other [human] languages.
uk: Locale::Po4a::Sgml — модуль, який допомагає у перекладі документації у форматі SGML іншими мовами (якими розмовляють люди).

note: type: textblock
en: This module uses B<onsgmls>(1) to parse the SGML files. Make sure it is installed.  Also make sure that the DTD of the SGML files are installed in the system.
uk: Цей модуль використовує для обробки файлів SGML B<onsgmls>(1). Переконайтеся, що цю програму встановлено. Також переконайтеся, що у системі встановлено DTD усіх файлів SGML.

note: type: textblock
en: Space separated list of keywords indicating which part you want to debug. Possible values are: tag, generic, entities and refs.
uk: Список відокремлених пробілами ключових слів, які вказують, діагностику якої частини ви хочете виконати. Можливі значення: tag, generic, entities і refs.

note: type: textblock
en: Give more information about what's going on.
uk: Надавати більше інформації щодо того, що відбувається.

note: type: textblock
en: Space separated list of extra tags (beside the DTD provided ones) whose content should form an extra msgid.
uk: Список відокремлених пробілами додаткових теґів (окрім визначених у DTD), чий вміст має формувати додаткові msgid.

note: type: textblock
en: Space separated list of extra tags (beside the DTD provided ones)  containing other tags, some of them being of category B<translate>.
uk: Список відокремлених пробілами додаткових теґів (окрім визначених у DTD), які містять інші теґи, деякі з яких належать до категорії B<translate>.

note: type: textblock
en: Space separated list of tags which increase the indentation level.
uk: Список відокремлених пробілами теґів, які збільшують рівень відступу.

note: type: textblock
en: The layout within those tags should not be changed. The paragraph won't get wrapped, and no extra indentation space or new line will be added for cosmetic purpose.
uk: Компонування, у якому не слід змінювати теґи. Рядки у абзаці не переноситимуться, не буде додаватися додатковий відступ або розрив рядка з косметичною метою.

note: type: textblock
en: Tags not needing to be closed.
uk: Теґи не обов'язково слід закривати.

note: type: textblock
en: Tags ignored and considered as plain char data by po4a. That is to say that they can be part of an msgid. For example, E<lt>bE<gt> is a good candidate for this category since putting it in the translate section would create msgids not being whole sentences, which is bad.
uk: Теґи, які po4a має ігнорувати і вважати звичайними символьними даними. Тобто теґи, які можуть бути частиною msgid. Наприклад, E<lt>bE<gt> є непоганим кандидатом до цієї категорії, оскільки, якщо цей теґ перебуває у розділі translate, програма створюватиме повідомлення для перекладу, які не є цілими реченнями, що є помилкою.

note: type: textblock
en: A space separated list of attributes that need to be translated. You can specify the attributes by their name (for example, "lang"), but you can also prefix it with a tag hierarchy, to specify that this attribute will only be translated when it is into the specified tag. For example: E<lt>bbbE<gt>E<lt>aaaE<gt>lang specifies that the lang attribute will only be translated if it is in an E<lt>aaaE<gt> tag, which is in a E<lt>bbbE<gt> tag.  The tag names are actually regular expressions so you can also write things like E<lt>aaa|bbbbE<gt>lang to only translate lang attributes that are in an E<lt>aaaE<gt> or a E<lt>bbbE<gt> tag.
uk: Список відокремлених пробілами атрибутів, які слід перекладати. Ви можете вказати атрибути за назвою (наприклад, «lang»), але можна також дописувати префікси у ієрархії теґів, щоб вказати, що атрибут буде перекладатися, лише якщо він перебуває усередині вказаного теґу. Приклад: E<lt>bbbE<gt>E<lt>aaaE<gt>lang вказує, що атрибут lang перекладатиметься, лише якщо він перебуває у тезі E<lt>aaaE<gt>, який перебуває у тезі E<lt>bbbE<gt>. Назви теґів є формальними виразами, отже ви можете написати щось подібне до E<lt>aaa|bbbbE<gt>lang, щоб перекладати атрибути lang, які перебувають усередині теґу E<lt>aaaE<gt> або E<lt>bbbE<gt>.

note: type: textblock
en: A space separated list of attributes for which the translation must be qualified by the attribute name. Note that this setting automatically adds the given attribute into the 'attributes' list too.
uk: Список відокремлених пробілами атрибутів, для яких переклад має бути кваліфіковано назвою атрибуту. Зауважте, що цей параметр автоматично додає вказаний атрибут до списку «attributes».

note: type: textblock
en: Proceed even if the DTD is unknown or if onsgmls finds errors in the input file.
uk: Продовжувати обробку, навіть якщо DTD є невідомим, а onsgmls виявляє помилки у файлі вхідних даних.

note: type: textblock
en: By default, msgids containing only one entity (like '&version;') are skipped for the translator comfort. Activating this option prevents this optimisation. It can be useful if the document contains a construction like "<title>&Aacute;</title>", even if I doubt such things to ever happen...
uk: Типово, msgid, у яких міститься лише замінник (наприклад, &version;), пропускаються заради полегшення роботи перекладачів. Використання цього параметра запобігає такій оптимізації. Корисно для документів, у яких містяться конструкції, подібні до «<title>&Aacute;</title>», хоча я і сумніваюся, що таке десь трапляється...

note: type: textblock
en: Space separated list of entities that won't be inlined.  Use this option with caution: it may cause onsgmls (used internally) to add tags and render the output document invalid.
uk: Список відокремлених пробілами замінників, які не вставлятимуться у текст. Будьте обережними із цим параметром: його використання може спричинити додавання onsgmls (програмою, яку використовує модуль) теґів і неправильне формування документа-результату.

note: type: textblock
en: The result is perfect. I.e., the generated documents are exactly the same. But there are still some problems:
uk: Відмінний результат, тобто створені документи є ідентичними з оригіналом. Але усе ще є деякі проблеми:

note: type: textblock
en: The error output of onsgmls is redirected to /dev/null by default, which is clearly bad. I don't know how to avoid that.
uk: Повідомлення про помилки від onsgmls типово переспрямовуються до /dev/null, а це погано. Не знаю, як цього уникнути.

note: type: textblock
en: The problem is that I have to "protect" the conditional inclusions (i.e. the C<E<lt>! [ %foo [> and C<]]E<gt>> stuff) from onsgmls. Otherwise onsgmls eats them, and I don't know how to restore them in the final document. To prevent that, I rewrite them to C<{PO4A-beg-foo}> and C<{PO4A-end}>.
uk: Проблема полягає у тому, що мені довелося «захистити» умовні включення (тобто конструкції C<E<lt>! [ %щось [> і C<]]E<gt>>) від onsgmls. Якщо цього не зробити, onsgmls «з'їсть» їх, і я не знаю, як їх відновити у остаточному документі. Щоб запобігти цьому, я перезаписую їх виразами C<{PO4A-beg-щось}> та C<{PO4A-end}>.

note: type: textblock
en: The problem with this is that the C<{PO4A-end}> and such I add are invalid in the document (not in a E<lt>pE<gt> tag or so).
uk: Проблемним у цьому лишається те, що додані мною C<{PO4A-end}> і інші подібні речі є некоректними у документі (не перебувають у тезі E<lt>pE<gt> або подібному).

note: type: textblock
en: If you want to view the onsgmls output, just add the following to your command line (or po4a configuration line):
uk: Якщо хочете ознайомитися із даними, виведеними onsgmls, просто додайте наведений нижче рядок до рядка команди (або рядка налаштовування po4a):

note: type: textblock
en: It does work only with the DebianDoc and DocBook DTD. Adding support for a new DTD should be very easy. The mechanism is the same for every DTD, you just have to give a list of the existing tags and some of their characteristics.
uk: Модуль працює лише для DTD DebianDoc та DocBook. Додавання підтримки нових DTD є доволі простим. Механізм є однаковим для усіх DTD, вам слід вказати лише список наявних теґів та деякі їхні характеристики.

note: type: textblock
en: I agree, this needs some more documentation, but it is still considered as beta, and I hate to document stuff which may/will change.
uk: Згоден, потрібно більше документації, але модуль вважається тестовим, а мені не дуже хочеться документувати, те що буде змінено або може бути змінено.

note: type: textblock
en: Warning, support for DTDs is quite experimental. I did not read any reference manual to find the definition of every tag. I did add tag definition to the module 'till it works for some documents I found on the net. If your document use more tags than mine, it won't work. But as I said above, fixing that should be quite easy.
uk: Попередження: підтримка DTD є доволі експериментальною. Я не читав довідники, щоб знайти визначення для кожного теґу. Я додавав теґи до модуля, аж доки усе не почало працювати для певних документів, які я знайшов у мережі. Якщо у вашому документі більше теґів, модуль не спрацює. Але, як уже було написано вище, виправити цей недолік дуже просто.

note: type: textblock
en: I did test DocBook against the SAG (System Administrator Guide) only, but this document is quite big, and should use most of the DocBook specificities.
uk: Підтримку DocBook було перевірено лише на SAG (Підручнику системного адміністратора), але цей документ є доволі об'ємним, у ньому має бути використано більшу частину специфікаторів DocBook.

note: type: textblock
en: For DebianDoc, I tested some of the manuals from the DDP, but not all yet.
uk: Підтримку DebianDoc було перевірено на підручниках з DDP, але не на всіх.

note: type: textblock
en: In case of file inclusion, string reference of messages in PO files (i.e. lines like C<#: en/titletoc.sgml:9460>) will be wrong.
uk: Якщо до документа включаються додаткові файли, посилання на рядки у повідомленнях файлів PO (тобто записи, подібні до C<#: en/titletoc.sgml:9460>) будуть помилковими.

note: type: textblock
en: This is because I preprocess the file to protect the conditional inclusion (i.e. the C<E<lt>! [ %foo [> and C<]]E<gt>> stuff) and some entities (like &version;) from onsgmls because I want them verbatim to the generated document. For that, I make a temp copy of the input file and do all the changes I want to this before passing it to onsgmls for parsing.
uk: Причиною є те, що попередньо файл обробляється для захисту умовних включень (тобто конструкцій типу C<E<lt>! [ %щось [> і C<]]E<gt>>) та деяких замінників (наприклад, &version;) від onsgmls, оскільки нам вони у створеному документі потрібні без змін. Для цього створюється тимчасова копію файла вхідних даних, до якої вносяться усі потрібні зміни до передавання даних до onsgmls для обробки.

note: type: textblock
en: So that it works, I replace the entities asking for a file inclusion by the content of the given file (so that I can protect what needs to be in a subfile also). But nothing is done so far to correct the references (i.e., filename and line number) afterward. I'm not sure what the best thing to do is.
uk: Отже, у процесі обробки усі замінники, які є включеннями файлів замінюються вмістом відповідних файлів (щоб можна було захистити виразу і у підлеглих файлах). Втім, ніякого коду для виправлення посилань (тобто визначення назв файлів та номерів рядків у них) після обробки ще не написано. У мене немає певності щодо того, як зробити це у найкращий спосіб.

note: type: textblock
en: This module is an adapted version of sgmlspl (SGML postprocessor for the ONSGMLS parser) which was:
uk: Цей модуль є адаптованою версією sgmlspl (обробника SGML для ONSGMLS), автором якої є:

note: type: verbatim
en:  Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>
uk:  © David Megginson <dmeggins@aix1.uottawa.ca>, 1995

note: type: textblock
en: The adaptation for po4a was done by:
uk: Авторами адаптації до po4a є:

note: type: verbatim
en:  Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>.
     Copyright © 2002-2005 SPI, Inc.
uk:  © David Megginson <dmeggins@aix1.uottawa.ca>, 1995
     © SPI, Inc., 2002—2005

note: type: textblock
en: Locale::Po4a::TeX - convert TeX documents and derivatives from/to PO files
uk: Locale::Po4a::TeX — перетворення документів TeX та похідних документів на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::TeX is a module to help the translation of TeX documents into other [human] languages. It can also be used as a base to build modules for TeX-based documents.
uk: Locale::Po4a::TeX — модуль, який допомагає у перекладі документів TeX іншими мовами (якими розмовляють люди). Модулем можна також скористатися як основою для побудови модулів для заснованих на TeX документів.

note: type: textblock
en: Users should probably use the LaTeX module, which inherits from the TeX module and contains the definitions of common LaTeX commands.
uk: Ймовірно, користувачам варто скористатися модулем LaTeX, який є спадкоємцем модулі TeX і містити визначення загальних команд LaTeX.

note: type: =head1
en: TRANSLATING WITH PO4A::TEX
uk: ПЕРЕКЛАД ЗА ДОПОМОГОЮ PO4A::TEX

note: type: textblock
en: This module can be used directly to handle generic TeX documents.  This will split your document in smaller blocks (paragraphs, verbatim blocks, or even smaller like titles or indexes).
uk: Цим модулем можна скористатися безпосередньо для обробки типових документів TeX. Він поділить ваш документ на менші блоки (абзаци, середовища verbatim, заголовки і пункти списків).

note: type: textblock
en: There are some options (described in the next section) that can customize this behavior.  If this doesn't fit to your document format you're encouraged to write your own derivative module from this, to describe your format's details.  See the section B<WRITING DERIVATIVE MODULES> below, for the process description.
uk: Передбачено декілька параметрів (які описано у наступному розділі), за допомогою яких можна налаштувати поведінку модуля. Якщо модуль не відповідає формату вашого документа, вам варто написати власний модуль, який походитиме від цього, і у якому ви опишете параметри формату. Опис процедури написання наведено у розділі B<НАПИСАННЯ ПОХІДНИХ МОДУЛІВ> нижче.

note: type: textblock
en: This module can also be customized by lines starting with "% po4a:" in the TeX file. This process is described in the B<INLINE CUSTOMIZATION> section.
uk: Цей модуль також можна налаштувати рядками, які починаються з «% po4a:» у файлі TeX. Процедуру описано у розділі B<НАЛАШТОВУВАННЯ НА МІСЦІ> section.

note: type: textblock
en: Comma-separated list of environments which should not be re-wrapped.
uk: Список відокремлених комами середовищ, у яких не слід змінювати перенесення рядків.

note: type: textblock
en: Note that there is a difference between verbatim and no_wrap environments.  There is no command and comments analysis in verbatim blocks.
uk: Зауважте, що між середовищами verbatim і no_wrap є різниця.  У блоках verbatim не виконується аналіз команд та коментарів.

note: type: textblock
en: If this environment was not already registered, po4a will consider that this environment does not take any parameters.
uk: Якщо це середовища ще не було зареєстровано, po4a вважатиме, що у нього немає жодних параметрів.

note: type: textblock
en: Colon-separated list of files that should not be included by \input and \include.
uk: Список відокремлених двокрапками назв файлів, які не слід включати за допомогою команд \input і \include.

note: type: textblock
en: Comma-separated list of environments which should be taken as verbatim.
uk: Список відокремлених комами назв середовищ, вміст яких слід відтворювати буквально.

note: type: textblock
en: Use these options to override the default behavior of the defined commands.
uk: Скористайтеся цими параметрами для перевизначення типової поведінки визначених команд.

note: type: textblock
en: The TeX module can be customized with lines starting by B<% po4a:>.  These lines are interpreted as commands to the parser.  The following commands are recognized:
uk: Налаштувати модуль TeX можна рядками, які починаються з B<% po4a:>. Такі рядки вважатимуться командами, які віддаються засобу обробки. Передбачено такі команди:

note: type: =item
en: B<% po4a: command> I<command1> B<alias> I<command2>
uk: B<% po4a: command> I<команда1> B<alias> I<команда2>

note: type: textblock
en: Indicates that the arguments of the I<command1> command should be treated as the arguments of the I<command2> command.
uk: Вказує на те, що аргументи команди I<команда1> слід вважати аргументами команди I<команда2>.

note: type: =item
en: B<% po4a: command> I<command1> I<parameters>
uk: B<% po4a: command> I<команда1> I<параметри>

note: type: textblock
en: This describes in detail the parameters of the I<command1> command.  This information will be used to check the number of arguments and their types.
uk: Надає змогу докладно описати параметри команди I<команда1>. Ці дані буде використано для перевірки кількості аргументів та їхніх типів.

note: type: textblock
en: You can precede the I<command1> command by
uk: Ви можете вказати перед командою I<команда1>

note: type: =item
en: an asterisk (B<*>)
uk: зірочку (B<*>)

note: type: textblock
en: po4a will extract this command from paragraphs (if it is located at the beginning or the end of a paragraph).  The translators will then have to translate the parameters that are marked as translatable.
uk: po4a видобуде цю команду з абзаців (якщо її розташовано на початку або наприкінці абзацу). Перекладачам слід буде перекласти параметри, які позначено як придатні до перекладу.

note: type: =item
en: a plus (B<+>)
uk: плюс (B<+>)

note: type: textblock
en: As for an asterisk, the command will be extracted if it appear at an extremity of a block, but the parameters won't be translated separately.  The translator will have to translate the command concatenated to all its parameters.  This keeps more context, and is useful for commands with small words in parameter, which can have multiple meanings (and translations).
uk: Як і для зірочки, команду буде видобуто, якщо вона стоятиме на початку або наприкінці блоку, але параметри не перекладатимуться окремо. Перекладачеві слід буде перекласти команду, об'єднану із усіма її параметрами. Це надає змогу зберегти більше контексту і корисно для команд із параметрами, які є короткими словами із багатьма значеннями (і перекладами).

note: type: textblock
en: Note: In this case you don't have to specify which parameters are translatable, but po4a must know the type and number of parameters.
uk: Зауваження: у цьому випадку вам не потрібно вказувати, які параметри можна перекладати, але po4a має знати тип і кількість параметрів.

note: type: =item
en: a minus (B<->)
uk: мінус (B<->)

note: type: textblock
en: In this case, the command won't be extracted from any block.  But if it appears alone on a block, then only the parameters marked as translatable will be presented to the translator.  This is useful for font commands.  These commands should generally not be separated from their paragraph (to keep the context), but there is no reason to annoy the translator with them if a whole string is enclosed in such a command.
uk: У цьому випадку команда не видобуватиметься з будь-якого блоку. Але якщо вона цілком формуватиме блок, перекладачеві буде надано можливість перекласти лише параметри, які позначено як придатні до перекладу. Корисно для команд зміни шрифту. Такі команди, зазвичай, не слід відокремлювати від абзацу (щоб зберегти контекст), але немає ніякого сенсу показувати їх перекладачеві, якщо усередині такої команди залишається цілий рядок.

note: type: verbatim
en: The I<parameters> argument is a set of [] (to indicate an optional
    argument) or {} (to indicate a mandatory argument).
    You can place an underscore (_) between these brackets to indicate that
    the parameter must be translated. For example:
     % po4a: command *chapter [_]{_}
uk: Аргумент I<параметри> є набором [] (щоб вказати необов'язковий
    аргумент) або {} (щоб вказати обов'язковий аргумент).
    Ви можете вказати символи підкреслювання (_) між дужками, щоб
    позначити, що параметр слід перекладати. Приклад:
     % po4a: command *chapter [_]{_}

note: type: verbatim
en: This indicates that the chapter command has two parameters: an optional
    (short title) and a mandatory one, which must both be translated.
    If you want to specify that the href command has two mandatory parameters,
    that you don't want to translate the URL (first parameter), and that you
    don't want this command to be separated from its paragraph (which allow
    the translator to move the link in the sentence), you can use:
     % po4a: command -href {}{_}
uk: Це вказує на те, що у команди chapter є два параметри: необов'язковий
    (скорочений заголовок) і обов'язковий, обидва має бути перекладено.
    Якщо ви хочете вказати, що команда href має два обов'язкові параметри,
    які ви не хочете перекладати, адресу (перший параметр), і що ви не
    хочете, щоб цю команду було відокремлено від її абзацу (щоб
    перекладач міг пересунути посилання у реченні), ви можете зробити так:
     % po4a: command -href {}{_}

note: type: textblock
en: In this case, the information indicating which arguments must be translated is only used if a paragraph is only composed of this href command.
uk: У цьому випадку відомості, що позначають, які аргументи має бути перекладено, використовуються, лише якщо абзац складається лише з цієї команди href.

note: type: =item
en: B<% po4a: environment> I<env> I<parameters>
uk: B<% po4a: environment> I<середовище> I<параметри>

note: type: verbatim
en: This defines the parameters accepted by the I<env> environment and specifies the ones to be translated.
    This information is later used to check the number of arguments of the
    \begin command.
    The syntax of the I<parameters> argument is the same as described for the
    others commands.
    The first parameter of the \begin command is the name of the environment.
    This parameter must not be specified in the list of parameters. Here are
    some examples:
     % po4a: environment multicols {}
     % po4a: environment equation
uk: За допомогою цього рядка можна визначити параметри, які прийматимуться середовищем I<середовище>.
    Ці дані пізніше буде використано для перевірки кількості аргументів команди
    \begin і визначення тих параметрів, які слід перекласти.
    Синтаксис аргументу I<параметри> є тим самим, який описано для
    інших команд.
    Першим параметром команди \begin є назва середовища.
    Цей параметр має бути вказано у списку параметрів. Ось декілька
    прикладів:
     % po4a: environment multicols {}
     % po4a: environment equation

note: type: textblock
en: As for the commands, I<env> can be preceded by a plus (+) to indicate that the \begin command must be translated with all its arguments.
uk: Щодо команд, перед записом I<середовище> можна додавати «плюс» (+), щоб вказати, що команду \begin слід перекладати із усіма її аргументами.

note: type: =item
en: B<% po4a: separator> I<env> B<">I<regex>B<">
uk: B<% po4a: separator> I<середовище> B<">I<формальний_вираз>B<">

note: type: textblock
en: Indicates that an environment should be split according to the given regular expression.
uk: Вказує, що середовище слід розділити за вказаним формальним виразом.

note: type: textblock
en: The regular expression is delimited by quotes.  It should not create any back-reference.  You should use (?:) if you need a group.  It may also need some escapes.
uk: Формальний вираз у лапках. Не повинен містити зворотних посилань. Якщо потрібна група, слід використовувати (?:). Також може знадобитися екранування деяких символів.

note: type: textblock
en: For example, the LaTeX module uses the "(?:&|\\\\)" regular expression to translate separately each cell of a table (lines are separated by '\\' and cells by '&').
uk: Наприклад, у модулі LaTeX використовується формальний вираз "(?:&|\\\\)" для окремого перекладу усіх комірок таблиці (рядки відокремлюються «\\», а комірки — «&»).

note: type: textblock
en: The notion of environment is expanded to the type displayed in the PO file.  This can be used to split on "\\\\" in the first mandatory argument of the title command.  In this case, the environment is title{#1}.
uk: Позначення середовища буде розширено до типу, показаного у файлі PO. Цим можна скористатися для поділу за «\\\\» у першому обов'язковому аргументі команди title. У нашому випадку, середовищем буде title{#1}.

note: type: =item
en: B<% po4a: verbatim environment> I<env>
uk: B<% po4a: verbatim environment> I<середовище>

note: type: textblock
en: Indicate that I<env> is a verbatim environment.  Comments and commands will be ignored in this environment.
uk: Вказує, що I<середовище> є середовищем буквального цитування типу verbatim. Коментарі і команди у такому середовищі ігноруватимуться.

note: type: =head1
en: WRITING DERIVATE MODULES
uk: НАПИСАННЯ ПОХІДНИХ МОДУЛІВ

note: type: textblock
en: Add a string as a comment to be added around the next translated element.  This is mostly useful to the texinfo module, as comments are automatically handled in TeX.
uk: Додати рядок як коментар до наступного перекладеного елемента. Здебільшого, корисно для модуля texinfo, оскільки коментарі автоматично обробляються у TeX.

note: type: textblock
en: Wrapper around Transtractor's translate, with pre- and post-processing filters.
uk: Обгортка навколо translate з Transtractor, з фільтрами попередньої і остаточної обробки.

note: type: textblock
en: Comments of a paragraph are inserted as a PO comment for the first translated string of this paragraph.
uk: Коментарі до абзацу буде встановлено як коментар у PO для першого рядка цього абзацу, який можна перекладати.

note: type: textblock
en: This function returns:
uk: Ця функція повертає:

note: type: =item
en: A command name
uk: Назву команди

note: type: textblock
en: If no command is found at the beginning of the given buffer, this string will be empty.  Only commands that can be separated are considered.  The %separated_command hash contains the list of these commands.
uk: Якщо на початку вказаного буфера не буде знайдено команди, цей рядок буде порожнім. Беруться до уваги лише команди, які можна відокремити. Список таких команд міститься у хеші %separated_command.

note: type: =item
en: A variant
uk: Варіант

note: type: textblock
en: This indicates if a variant is used.  For example, an asterisk (*) can be added at the end of sections command to specify that they should not be numbered.  In this case, this field will contain "*".  If there is no variant, the field is an empty string.
uk: Вказує, чи використано варіант. Наприклад, наприкінці команди section може бути додано зірочку (*) з метою вказати, що відповідний розділ не слід нумерувати. У цьому випадку у цьому полі буде міститися «*». Якщо варіантів немає, у полі міститиметься порожній рядок.

note: type: =item
en: An array of tuples (type of argument, argument)
uk: Масив кортежів (тип аргументу, аргумент)

note: type: textblock
en: The type of argument can be either '{' (for mandatory arguments) or '[' (for optional arguments).
uk: Типом аргументу може бути або «{» (для обов'язкових аргументів), або «[» (для необов'язкових аргументів).

note: type: =item
en: The remaining buffer
uk: Решту буфера

note: type: textblock
en: The rest of the buffer after the removal of this leading command and its arguments.  If no command is found, the original buffer is not touched and returned in this field.
uk: Решта буфера після вилучення цієї початкової команди і її аргументів. Якщо команди не буде знайдено, модуль не змінюватиме вмісту початкового буфера і поверне його у це поле.

note: type: textblock
en: The same as B<get_leading_command>, but for commands at the end of a buffer.
uk: Те саме, що і B<get_leading_command>, але для команд наприкінці буфера.

note: type: textblock
en: Recursively translate a buffer by separating leading and trailing commands (those which should be translated separately) from the buffer.
uk: Рекурсивно перекласти буфер, відокремивши початкову і кінцеву команди (ті, які має бути перекладено окремо) з буфера.

note: type: textblock
en: If a function is defined in %translate_buffer_env for the current environment, this function will be used to translate the buffer instead of translate_buffer().
uk: Якщо у %translate_buffer_env визначено функцію для поточного середовища, цю функцію буде використано для перекладу буфера замість translate_buffer().

note: type: textblock
en: Overloads Transtractor's read().
uk: Перевантажує read() Transtractor.

note: type: textblock
en: Recursively read a file, appending included files which are not listed in the @exclude_include array.  Included files are searched using the B<kpsewhich> command from the Kpathsea library.
uk: Рекурсивно прочитати файл, дописавши включені файли, яких немає у списку масиву @exclude_include. Пошук включених файлів відбувається за допомогою команди B<kpsewhich> з бібліотеки Kpathsea.

note: type: textblock
en: Except from the file inclusion part, it is a cut and paste from Transtractor's read.
uk: Окрім частини, пов'язаної із включенням файлів, це буквальна копія read з Transtractor.

note: type: textblock
en: Subroutine for parsing a file with po4a directives (definitions for new commands).
uk: Підпрограма для обробки файла за допомогою інструкцій po4a (визначень нових команд).

note: type: textblock
en: Parse a definition line of the form "% po4a: ".
uk: Обробляє рядок визначення у формі «% po4a: ».

note: type: textblock
en: See the B<INLINE CUSTOMIZATION> section for more details.
uk: Докладніший опис наведено у розділі B<НАЛАШТОВУВАННЯ НА МІСЦІ>.

note: type: =head1
en: INTERNAL FUNCTIONS used to write derivative parsers
uk: ВНУТРІШНІ ФУНКЦІЇ, які використовуються для написання похідних обробників

note: type: textblock
en: Command and environment functions take the following arguments (in addition to the $self object):
uk: Функції команд і середовищ приймають такі аргументи (на додачу до об'єкта $self):

note: type: =item
en: An array of (type, argument) tuples
uk: Масив кортежів (тип, аргумент)

note: type: =item
en: The current environment
uk: Поточне середовище

note: type: textblock
en: The first 3 arguments are extracted by get_leading_command or get_trailing_command.
uk: Перші 3 аргументи видобуваються get_leading_command або get_trailing_command.

note: type: textblock
en: Command and environment functions return the translation of the command with its arguments and a new environment.
uk: Функції команд і середовищ повертають переклад команди із аргументами і нове середовище.

note: type: textblock
en: Environment functions are called when a \begin command is found. They are called with the \begin command and its arguments.
uk: Функції середовищ викликаються, якщо виявлено команду \begin. Вони викликаються з командою \begin та її аргументами.

note: type: textblock
en: The TeX module only proposes one command function and one environment function: generic_command and generic_environment.
uk: Модуль TeX пропонує лише одну функцію команд і одну функцію середовищ: generic_command і generic_environment.

note: type: verbatim
en: generic_command uses the information specified by
    register_generic_command or by adding definition to the TeX file:
     % po4a: command I<command1> I<parameters>
uk: generic_command використовує інформацію, задану
    register_generic_command або додаванням визначення до файла TeX:
     % po4a: command I<команда1> I<параметри>

note: type: verbatim
en: generic_environment uses the information specified by
    register_generic_environment or by adding definition to the TeX file:
     % po4a: environment I<env> I<parameters>
uk: generic_environment використовує інформацію, задану
    register_generic_environment або додаванням визначення до файла TeX:
     % po4a: environment I<середовище> I<параметри>

note: type: textblock
en: Both functions will only translate the parameters that were specified as translatable (with a '_').  generic_environment will append the name of the environment to the environment stack and generic_command will append the name of the command followed by an identifier of the parameter (like {#7} or [#2]).
uk: Обидві функції перекладають лише параметри, які було вказано як придатні до перекладу (за допомогою «_»). generic_environment дописує назву середовища до стосу середовищ, а generic_command дописує назву команди і ідентифікатором параметра (наприклад, {#7} або [#2]).

note: type: textblock
en: This module needs more tests.
uk: Цей модуль потребує тестування.

note: type: textblock
en: It was tested on a book and with the Python documentation.
uk: Його було перевірено на одній книзі та документації до Python.

note: type: =head1
en: TODO LIST
uk: СПИСОК ЗАВДАНЬ

note: type: =item
en: Automatic detection of new commands
uk: Автоматичне виявлення нових команд

note: type: textblock
en: The TeX module could parse the newcommand arguments and try to guess the number of arguments, their type and whether or not they should be translated.
uk: Модуль TeX міг би обробляти аргументи newcommand і намагатися вгадати кількість аргументів, їхній тип та те, чи слід їх перекладати.

note: type: =item
en: Translation of the environment separator
uk: Переклад роздільника середовищ

note: type: textblock
en: When \item is used as an environment separator, the item argument is attached to the following string.
uk: Якщо \item використано як роздільник середовищ, аргумент item має долучатися до наступного рядка.

note: type: =item
en: Some commands should be added to the environment stack
uk: Деякі команди має бути додано до стека середовища

note: type: textblock
en: These commands should be specified by couples.  This can be used to specify commands beginning or ending a verbatim environment.
uk: Ці команди має бути вказано парами. Цим можна скористатися для визначення команд, які розпочинають та завершують середовище verbatim.

note: type: =item
en: Others
uk: Інше

note: type: textblock
en: Various other points are tagged TODO in the source.
uk: Інші корисні нововведення вказано у файлі TODO архіву із початковим кодом.

note: type: =head1
en: KNOWN BUGS
uk: ВІДОМІ ВАДИ

note: type: textblock
en: Various points are tagged FIXME in the source.
uk: Вади вказано у файлі FIXME архіву із початковим кодом.

note: type: textblock
en: Locale::Po4a::Texinfo - convert Texinfo documents and derivates from/to PO files
uk: Locale::Po4a::Texinfo — перетворення документів Texinfo та похідних документів на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Texinfo is a module to help the translation of Texinfo documents into other [human] languages.
uk: Locale::Po4a::Texinfo — модуль, який допомагає у перекладі документів Texinfo іншими мовами (якими розмовляють люди).

note: type: textblock
en: This module contains the definitions of common Texinfo commands and environments.
uk: У цьому модулі містяться визначення загальних команд та середовищ Texinfo.

note: type: textblock
en: Only the comments starting with 'TRANSLATORS' are added to the PO files to guide the translators.
uk: До файлів PO буде додано лише коментарі, які починаються з «TRANSLATORS».

note: type: textblock
en: Copyright © 2004-2007 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.
uk: © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2004–2007.

note: type: textblock
en: Locale::Po4a::Text - convert text documents from/to PO files
uk: Locale::Po4a::Text — перетворення текстових документів на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Text is a module to help the translation of text documents into other [human] languages.
uk: Locale::Po4a::Text — модуль, який допомагає у перекладі текстових документів іншими мовами (якими розмовляють люди).

note: type: textblock
en: Paragraphs are split on empty lines (or lines containing only spaces or tabulations).
uk: Абзаци розділяються за порожніми рядками (або рядками, у яких містяться лише пробіли і символи табуляції).

note: type: textblock
en: If a paragraph contains a line starting by a space (or tabulation), this paragraph won't be rewrapped.
uk: Якщо абзац містить рядок, що починається з пробілу (або символу табуляції), програма не мінятиме формат перенесення рядків у ньому.

note: type: textblock
en: Treat paragraphs that look like a key value pair as verbatim (with the no-wrap flag in the PO file).  Key value pairs are defined as a line containing one or more non-colon and non-space characters followed by a colon followed by at least one non-space character before the end of the line.
uk: Вважати абзаци, які виглядають як пари ключ-значення частинами буквального цитування (із прапорцем no-wrap у файлі PO). Парою ключ-значення вважається рядок, що містить один або декілька відмінних від двокрапки і пробілів символи, за якими вказано двокрапку і принаймні один непробільний символ до кінця рядка.

note: type: textblock
en: Deactivate the detection of bullets.
uk: Вимкнути виявлення пунктів списку.

note: type: textblock
en: By default, when a bullet is detected, the bullet paragraph is not considered as a verbatim paragraph (with the no-wrap flag in the PO file). Instead, the corresponding paragraph is rewrapped in the translation.
uk: Типово, модуль виявляє позначки пунктів. Абзац пункту не вважається абзацом буквального цитування (із прапорцем no-wrap у файлі PO). Замість цього, відповідний абзац буде повторно розбито на рядки у перекладі.

note: type: =item
en: B<tabs=>I<mode>
uk: B<tabs=>I<режим>

note: type: textblock
en: Specify how tabulations shall be handled. The I<mode> can be any of:
uk: Визначає, як слід обробляти символи табуляції. Значенням параметра I<режим> може бути будь-який з таких рядків:

note: type: textblock
en: Lines with tabulations introduce breaks in the current paragraph.
uk: Рядки із символами табуляції розривають поточний абзац.

note: type: textblock
en: Paragraph containing tabulations will not be re-wrapped.
uk: Перенесення рядків у абзацах, де містяться табуляції, не змінюватиметься.

note: type: textblock
en: By default, tabulations are considered as spaces.
uk: Типово, символи табуляції вважаються пробілами.

note: type: =item
en: B<breaks=>I<regex>
uk: B<breaks=>I<формальний_вираз>

note: type: textblock
en: A regular expression matching lines which introduce breaks.  The regular expression will be anchored so that the whole line must match.
uk: Формальний вираз для рядків, які додають розриви. Формальний вираз буде прив'язано до тексту так, щоб йому відповідав цілий рядок.

note: type: textblock
en: Handle the header and footer of released versions, which only contain non translatable information.
uk: Обробляти заголовки і нижні колонтитули випущених версій, де міститься лише непридатна до перекладу інформація.

note: type: textblock
en: Handle the fortunes format, which separate fortunes with a line which consists in '%' or '%%', and use '%%' as the beginning of a comment.
uk: Обробляти формат fortunes, де жарт відокремлюється рядком, який міститься між «%» або «%%», і де використовується «%%» на початку коментаря.

note: type: textblock
en: Handle some special markup in Markdown-formatted texts.
uk: Обробляти спеціальну розмітку у текстах із розміткою Markdown.

note: type: =item
en: B<yfm_keys> (markdown-only)
uk: B<yfm_keys> (лише розмітка)

note: type: =item
en: B<yfm_lenient> (markdown only)
uk: B<yfm_lenient> (лише розмітка)

note: type: textblock
en: Allow the YAML Front Matter parser to fail on malformated headers. This is particularly helpful when your file starts with a horizontal ruler instead of a YAML Front Matter, but you insist on using three dashes only for your ruler.
uk: Дозволити засобу обробки вступної частини YAML завершувати роботу з повідомленням про помилку, якщо форматування заголовків є помилковим. Це, зокрема, є корисним, якщо ваш файл починається з горизонтальної риски замість вступної частини YAML, але вам варто користуватися для вашої горизонтальної риски лише трьома дефісами.

note: type: =item
en: B<yfm_paths> (markdown only)
uk: B<yfm_paths> (лише розмітка)

note: type: =item
en: B<yfm_skip_array> (markdown-only)
uk: B<yfm_skip_array> (лише розмітка)

note: type: =item
en: B<control>[B<=>I<taglist>]
uk: B<control>[B<=>I<список_теґів>]

note: type: textblock
en: Handle control files.  A comma-separated list of tags to be translated can be provided.
uk: Обробляти керівні файли. Можна вказати список відокремлених комами теґів, які слід перекласти.

note: type: textblock
en: Prevent po4a from wrapping any lines. This means that every content is handled verbatim, even simple paragraphs.
uk: Заборонити po4a переносити рядки. Це означає, що усі дані будуть оброблятися буквально, навіть прості абзаци.

note: type: textblock
en: Tested successfully on simple text files and NEWS.Debian files.
uk: Успішно перевірено на простих текстових файлах та файлах NEWS.Debian.

note: type: verbatim
en:  Copyright © 2005-2008 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.
uk:  © Nicolas FRANÇOIS <nicolas.francois@centraliens.net>, 2005–2008.

note: type: verbatim
en:  Copyright © 2008-2009, 2018 Jonas Smedegaard <dr@jones.dk>.
     Copyright © 2020 Martin Quinson <mquinson#debian.org>.
uk:  © Jonas Smedegaard <dr@jones.dk>, 2008-2009, 2018.
     © Martin Quinson <mquinson#debian.org>, 2020.

note: type: textblock
en: Locale::Po4a::TransTractor - generic trans(lator ex)tractor.
uk: Locale::Po4a::TransTractor — загальний засіб перекладу-видобування.

note: type: textblock
en: This class is the ancestor of every po4a parser used to parse a document, to search translatable strings, to extract them to a PO file and to replace them by their translation in the output document.
uk: Цей клас є предком будь-якого обробника po4a, що використовується для обробки документа, пошуку придатних до перекладу рядків, видобування цих рядків до файла PO і для заміни рядків перекладами у документі-результаті.

note: type: textblock
en: More formally, it takes the following arguments as input:
uk: Формально, вхідними є такі аргументи:

note: type: textblock
en: a document to translate;
uk: документ для перекладу;

note: type: textblock
en: a PO file containing the translations to use.
uk: файл PO, який містить переклади, які слід використати.

note: type: textblock
en: As output, it produces:
uk: На виході матимемо ось що:

note: type: textblock
en: another PO file, resulting of the extraction of translatable strings from the input document;
uk: інший файл PO, який є результатом видобування придатних до перекладу рядків із вхідного документа;

note: type: textblock
en: a translated document, with the same structure than the one in input, but with all translatable strings replaced with the translations found in the PO file provided in input.
uk: перекладений документ, який має ту саму структуру, що і вхідних, але усі придатні до перекладу рядки у ньому замінено перекладами, знайденими у файлі PO, який було передано як вхідні дані.

note: type: textblock
en: Here is a graphical representation of this:
uk: Ось графічна схема роботи:

note: type: verbatim
en:    Input document --\                             /---> Output document
                         \                           /       (translated)
                          +-> parse() function -----+
                         /                           \
       Input PO --------/                             \---> Output PO
                                                             (extracted)
uk:    Вхідний документ --\                             /---> Вихідний документ
                         \                           /       (перекладений)
                          +-> функція parse() ------+
                         /                           \
     Вхідний PO --------/                             \---> Вихідний PO
                                                             (видобутий)

note: type: =head1
en: FUNCTIONS YOUR PARSER SHOULD OVERRIDE
uk: ФУНКЦІЇ, ЯКІ ВАШ ОБРОБНИК МАЄ ПЕРЕВИЗНАЧИТИ

note: type: textblock
en: This is where all the work takes place: the parsing of input documents, the generation of output, and the extraction of the translatable strings. This is pretty simple using the provided functions presented in the section B<INTERNAL FUNCTIONS> below. See also the B<SYNOPSIS>, which presents an example.
uk: Тут відбувається уся справа: обробка вхідних документів, створення виведених даних та видобування придатних до перекладу рядків. Усе це доволі просто зробити за допомогою функцій, які представлено у розділі B<ВНУТРІШНІ ФУНКЦІЇ> нижче. Див. також розділ B<КОРОТКИЙ ОПИС>, де наведено приклад.

note: type: textblock
en: This function is called by the process() function below, but if you choose to use the new() function, and to add content manually to your document, you will have to call this function yourself.
uk: Ця функція викликається нижче функцією process(), але якщо ви захочете використати функцію new() і додати дані до вашого документа вручну, вам слід викликати цю функцію власноруч.

note: type: textblock
en: This function returns the header we should add to the produced document, quoted properly to be a comment in the target language.  See the section B<Educating developers about translations>, from L<po4a(7)|po4a.7>, for what it is good for.
uk: Ця функція повертає заголовок, який слід додати до створеного документа із належним обрамленням, щоб бути коментарем мовою перекладу. Див. розділ B<Навчання розробників основам створення придатного для перекладу коду> з підручника з L<po4a(7)|po4a.7>, щоб дізнатися більше про те, де її використовують.

note: type: textblock
en: The following example parses a list of paragraphs beginning with "<p>". For the sake of simplicity, we assume that the document is well formatted, i.e. that '<p>' tags are the only tags present, and that this tag is at the very beginning of each paragraph.
uk: Нижче наведено приклад коду обробки списку абзаців, кожен з яких починається з «<p>». З міркувань простоти, будемо вважати, що документ має коректне форматування, тобто у ньому є лише теґи «<p>», і ці теґи розташовано на самому початку кожного абзацу.

note: type: verbatim
en:    PARAGRAPH: while (1) {
           my ($paragraph,$pararef)=("","");
           my $first=1;
           my ($line,$lref)=$self->shiftline();
           while (defined($line)) {
               if ($line =~ m/<p>/ && !$first--; ) {
                   # Not the first time we see <p>.
                   # Reput the current line in input,
                   #  and put the built paragraph to output
                   $self->unshiftline($line,$lref);
uk:    PARAGRAPH: while (1) {
           my ($paragraph,$pararef)=("","");
           my $first=1;
           my ($line,$lref)=$self->shiftline();
           while (defined($line)) {
               if ($line =~ m/<p>/ && !$first--; ) {
                   # Бачимо <p> не вперше.
                   # Повторно передаємо поточний рядок на вхід,
                   #  і передаємо зібраний абзац на вихід
                   $self->unshiftline($line,$lref);

note: type: verbatim
en:                # Now that the document is formed, translate it:
                   #   - Remove the leading tag
                   $paragraph =~ s/^<p>//s;
uk:                # Тепер, коли документ сформовано, перекладаємо його:
                   #   - Вилучаємо початковий теґ
                   $paragraph =~ s/^<p>//s;

note: type: verbatim
en:                #   - push to output the leading tag (untranslated) and the
                   #     rest of the paragraph (translated)
                   $self->pushline(  "<p>"
                                   . $self->translate($paragraph,$pararef)
                                   );
uk:                #   - виштовхуємо на вихід початковий теґ (неперекладений) і
                   #     решту абзацу (перекладену)
                   $self->pushline(  "<p>"
                                   . $self->translate($paragraph,$pararef)
                                   );

note: type: verbatim
en:                next PARAGRAPH;
               } else {
                   # Append to the paragraph
                   $paragraph .= $line;
                   $pararef = $lref unless(length($pararef));
               }
uk:                next PARAGRAPH;
               } else {
                   # Дописати до абзацу
                   $paragraph .= $line;
                   $pararef = $lref unless(length($pararef));
               }

note: type: verbatim
en:            # Reinit the loop
               ($line,$lref)=$self->shiftline();
           }
           # Did not get a defined line? End of input file.
           return;
       }
     }
uk:            # Повторно започатковуємо цикл
               ($line,$lref)=$self->shiftline();
           }
           # Не отримати визначеного рядка? Кінець файла вхідних даних.
           return;
       }
     }

note: type: textblock
en: Once you've implemented the parse function, you can use your document class, using the public interface presented in the next section.
uk: Після реалізації функції parse ви можете використовувати ваш клас document за допомогою відкритого (public) інтерфейсу, який представлено у наступному розділі.

note: type: =head1
en: PUBLIC INTERFACE for scripts using your parser
uk: ВІДКРИТИЙ ІНТЕРФЕЙС для скриптів, які використовують ваш обробник

note: type: =head2
en: Constructor
uk: Конструктор

note: type: textblock
en: This function can do all you need to do with a po4a document in one invocation. Its arguments must be packed as a hash. ACTIONS:
uk: Ця функція може виконувати усі дії, які слід виконати з документом po4a за один виклик. Її аргументи слід запакувати як хеш. ДІЇ:

note: type: =item
en: a.
uk: а)

note: type: textblock
en: Reads all the PO files specified in po_in_name
uk: Читає усі файли PO, вказані у po_in_name

note: type: =item
en: b.
uk: б)

note: type: textblock
en: Reads all original documents specified in file_in_name
uk: Читає усі початкові документи, вказані у file_in_name

note: type: =item
en: c.
uk: в)

note: type: textblock
en: Parses the document
uk: Обробляє документ

note: type: =item
en: d.
uk: г)

note: type: textblock
en: Reads and applies all the addenda specified
uk: Читає і дописує вказані додатки

note: type: =item
en: e.
uk: д)

note: type: textblock
en: Writes the translated document to file_out_name (if given)
uk: Записує перекладений документ до file_out_name (якщо вказано)

note: type: =item
en: f.
uk: е)

note: type: textblock
en: Writes the extracted PO file to po_out_name (if given)
uk: Записує видобутий файл PO до po_out_name (якщо вказано)

note: type: textblock
en: ARGUMENTS, beside the ones accepted by new() (with expected type):
uk: АРГУМЕНТИ, окрім тих, які приймаються new() (із очікуваним типом):

note: type: textblock
en: List of filenames where we should read the input document.
uk: Список назв файлів, з яких слід прочитати вхідні дані документа.

note: type: textblock
en: Charset used in the input document (if it isn't specified, it will try to detect it from the input document).
uk: Кодування символів, яке використано у вхідному документі (якщо його не вказано, функція спробує визначити його за вхідним документом).

note: type: textblock
en: Filename where we should write the output document.
uk: Назва файла, до якого слід записати вихідний документ.

note: type: textblock
en: Charset used in the output document (if it isn't specified, it will use the PO file charset).
uk: Таблиця кодування, яку використано у вихідному документі (якщо не вказано, буде використано таблицю кодування з файла PO).

note: type: textblock
en: List of filenames where we should read the input PO files from, containing the translation which will be used to translate the document.
uk: Список назв файлів, з яких слід прочитати вхідні дані PO, які містять переклади, які буде використано для перекладу документа.

note: type: textblock
en: Filename where we should write the output PO file, containing the strings extracted from the input document.
uk: Назва файла, до якого слід записати дані PO, що містять рядки, видобуті з вхідного документа.

note: type: textblock
en: List of filenames where we should read the addenda from.
uk: Список назв файлів, з яких слід прочитати додатки.

note: type: textblock
en: Charset for the addenda.
uk: Кодування символів додатків.

note: type: textblock
en: Create a new po4a document. Accepted options (in the hash passed as a parameter):
uk: Створити документ po4a. Прийнятні параметри (у хеші, який передано як параметр):

note: type: textblock
en: Sets the verbosity.
uk: Встановлює рівень докладності.

note: type: textblock
en: Sets the debugging.
uk: Встановлює рівень діагностики.

note: type: =head2
en: Manipulating document files
uk: Робота з файлами документів

note: type: textblock
en: Add another input document data at the end of the existing array C<< @{$self->{TT}{doc_in}} >>. The argument is the filename to read. If a second argument is provided, it is the filename to use in the references.
uk: Додати іще один вхідний документ наприкінці наявного масиву C<< @{$self->{TT}{doc_in}} >>. Аргументом є назва файла, з якого слід прочитати дані. Якщо вказано другий аргумент, він вважається назвою файла, який слід використовувати у посиланнях.

note: type: verbatim
en: This array C<< @{$self->{TT}{doc_in}} >> holds this input document data as an
    array of strings with alternating meanings.
     * The string C<$textline> holding each line of the input text data.
     * The string C<< $filename:$linenum >> holding its location and called as
       "reference" (C<linenum> starts with 1).
uk: Цей масив C<< @{$self->{TT}{doc_in}} >> містить дані вхідного документа у форматі
    масиву рядків із різним призначенням.
     * Рядок C<$textline> містить кожен з рядків вхідних текстових даних.
     * Рядок C<< $filename:$linenum >> містить його розташування у тексті і
       називається «прив'язка» (C<linenum> починається з 1).

note: type: textblock
en: Please note that it does not parse anything. You should use the parse()  function when you're done with packing input files into the document.
uk: Будь ласка, зауважте, що функція не обробляє будь-що. Функцію parse() слід використовувати після завершення пакування вхідних файлів до документа.

note: type: textblock
en: Write the translated document to the given filename.
uk: Записати перекладений документ до файла із вказаною назвою.

note: type: verbatim
en: This translated document data are provided by:
     * C<< $self->docheader() >> holding the header text for the plugin, and
     * C<< @{$self->{TT}{doc_out}} >> holding each line of the main translated text in the array.
uk: Ці дані перекладеного документа можна отримати так:
     * C<< $self->docheader() >> містить текст заголовка для додатка, а
     * C<< @{$self->{TT}{doc_out}} >> містить кожен з рядків основного перекладеного тексту у форматі масиву.

note: type: =head2
en: Manipulating PO files
uk: Робота з файлами PO

note: type: textblock
en: Add the content of a file (which name is passed as argument) to the existing input PO. The old content is not discarded.
uk: Додати вміст файла (назва якого передається як аргументи) до наявного файла вхідних даних PO. Старий вміст файла не відкидається.

note: type: textblock
en: Write the extracted PO file to the given filename.
uk: Записати видобуті дані PO до файла із вказаною назвою.

note: type: textblock
en: Returns some statistics about the translation done so far. Please note that it's not the same statistics than the one printed by msgfmt --statistic. Here, it's stats about recent usage of the PO file, while msgfmt reports the status of the file. It is a wrapper to the Locale::Po4a::Po::stats_get function applied to the input PO file. Example of use:
uk: Повертає деякі статистичні дані щодо поточного стану перекладу. Будь ласка, зауважте, що ці статистичні дані — це не ті дані, які виводить команда msgfmt --statistic. Це статистичні дані щодо використання файла PO, тоді як дані msgfmt — це звіт щодо стану файла. Є обгорткою до функції Locale::Po4a::Po::stats_get, застосованою до файла PO вхідних даних. Приклад використання:

note: type: verbatim
en:     [normal use of the po4a document...]
uk:     [звичайне використання документа po4a...]

note: type: verbatim
en:     ($percent,$hit,$queries) = $document->stats();
        print "We found translations for $percent\%  ($hit from $queries) of strings.\n";
uk:     ($percent,$hit,$queries) = $document->stats();
        print "Знайдено переклади $percent\%  ($hit з $queries) рядків.\n";

note: type: =head2
en: Manipulating addenda
uk: Робота із додатками

note: type: textblock
en: Please refer to L<po4a(7)|po4a.7> for more information on what addenda are, and how translators should write them. To apply an addendum to the translated document, simply pass its filename to this function and you are done ;)
uk: Будь ласка, зверніться до розділу L<po4a(7)|po4a.7>, щоб дізнатися більше про додатки та те, як перекладачі мають їх писати. Щоб застосувати додаток до перекладеного документа, просто передайте його назву цій функції, ось і усе. ;)

note: type: textblock
en: This function returns a non-null integer on error.
uk: Ця функція повертає ненульове ціле число, якщо станеться помилка.

note: type: =head2
en: Getting input, providing output
uk: Отримуємо вхідні дані, надаємо результати

note: type: textblock
en: Four functions are provided to get input and return output. They are very similar to shift/unshift and push/pop of Perl.
uk: Передбачено чотири функції для отримання вхідних даних і повернення вихідних даних. Вони дуже подібні до функцій shift/unshift та push/pop у Perl.

note: type: verbatim
en:  * Perl shift returns the first array item and drop it from the array.
     * Perl unshift prepends an item to the array as the first array item.
     * Perl pop returns the last array item and drop it from the array.
     * Perl push appends an item to the array as the last array item.
uk:  * shift у Perl повертає перший запис масиву і викидає його з масиву.
     * unshift у Perl дописує запис на початку масиву як його перший запис.
     * pop у Perl повертає останній запис масиву і викидає його з масиву.
     * push у Perl дописує запис до масиву наприкінці.

note: type: textblock
en: The first pair is about input, while the second is about output. Mnemonic: in input, you are interested in the first line, what shift gives, and in output you want to add your result at the end, like push does.
uk: Перша пара працює із вхідними даними, а друга — з вихідними. Мнемоніка: у вхідних даних вас цікавитиме перший рядок, який дає shift, у вихідних ви додаєте результат наприкінці, як це робить push.

note: type: textblock
en: This function returns the first line to be parsed and its corresponding reference (packed as an array) from the array C<< @{$self->{TT}{doc_in}} >> and drop these first 2 array items.  Here, the reference is provided by a string C<< $filename:$linenum >>.
uk: Ця функція повертає перший рядок для обробки і відповідне посилання (запаковане до масиву) з масиву C<< @{$self->{TT}{doc_in}} >> і викидає з цього масиву два перших записи. Тут дані посилання надаються рядком C<< $filename:$linenum >>.

note: type: textblock
en: Unshifts the last shifted line of the input document and its corresponding reference back to the head of C<< {$self->{TT}{doc_in}} >>.
uk: Скасовує зсування останнього зсунутого рядка вхідного документа і його прив'язки на початку C<< {$self->{TT}{doc_in}} >>.

note: type: textblock
en: Push a new line to the end of C<< {$self->{TT}{doc_out}} >>.
uk: Вставити новий рядок наприкінці C<< {$self->{TT}{doc_out}} >>.

note: type: textblock
en: Pop the last pushed line from the end of C<< {$self->{TT}{doc_out}} >>.
uk: Виштовхнути останній вставлений рядок з кінця C<< {$self->{TT}{doc_out}} >>.

note: type: =head2
en: Marking strings as translatable
uk: Позначення придатних до перекладу рядків

note: type: textblock
en: One function is provided to handle the text which should be translated.
uk: Одну функцію передбачено для обробки тексту, який має бути перекладено.

note: type: textblock
en: Mandatory arguments:
uk: Обов'язкові аргументи:

note: type: textblock
en: A string to translate
uk: Рядок для перекладу

note: type: textblock
en: The reference of this string (i.e. position in inputfile)
uk: Посилання цього рядка (тобто розташування рядка у файлі вхідних даних)

note: type: textblock
en: The type of this string (i.e. the textual description of its structural role; used in Locale::Po4a::Po::gettextization(); see also L<po4a(7)|po4a.7>, section B<Gettextization: how does it work?>)
uk: Тип цього рядка (тобто текстовий опис його структурної ролі; використовується у Locale::Po4a::Po::gettextization(); див. також L<po4a(7)|po4a.7>, розділ B<Перетворення на формат gettextization: як це працює?>)

note: type: textblock
en: This function can also take some extra arguments. They must be organized as a hash. For example:
uk: Ця функція також може приймати додаткові аргументи. Їх має бути упорядковано як хеш. Приклад:

note: type: textblock
en: boolean indicating whether we can consider that whitespaces in string are not important. If yes, the function canonizes the string before looking for a translation or extracting it, and wraps the translation.
uk: булеве значення, яке вказує на те, чи розглядаєте ви пробіли як неважливу частину рядка. Якщо має значення «yes» («так»), функція переводить рядок у канонічну форму, перш ніж шукати переклад або видобувати його, а потім виконує перенесення рядків у перекладі.

note: type: textblock
en: an extra comment to add to the entry.
uk: додатковий коментар, який буде дописано до запису.

note: type: textblock
en: Actions:
uk: Дії:

note: type: textblock
en: Pushes the string, reference and type to po_out.
uk: Вставляє рядок, посилання і тип до po_out.

note: type: textblock
en: Returns the translation of the string (as found in po_in) so that the parser can build the doc_out.
uk: Повертає переклад рядка (знайдений у po_in), щоб обробник міг зібрати doc_out.

note: type: textblock
en: Handles the charsets to recode the strings before sending them to po_out and before returning the translations.
uk: Обробляє кодування для перекодовування рядків до надсилання їх до po_out і перед повертанням перекладів.

note: type: =head2
en: Misc functions
uk: Інші функції

note: type: textblock
en: Returns if the verbose option was passed during the creation of the TransTractor.
uk: Повертає значення, яке вказує, чи було передано під час створення TransTractor параметр докладного режиму повідомлень.

note: type: textblock
en: Returns if the debug option was passed during the creation of the TransTractor.
uk: Повертає значення, яке вказує, чи було передано під час створення TransTractor параметр режиму діагностики.

note: type: textblock
en: This tells TransTractor that a new charset (the first argument) has been detected from the input document. It can usually be read from the document header. Only the first charset will remain, coming either from the process() arguments or detected from the document.
uk: Ця функція повідомляє TransTractor, що у вхідному документі було виявлено нове кодування (перший аргумент). Кодування, зазвичай, можна прочитати із заголовка документа. Використовуватиметься лише перше кодування, яке буде отримано з аргументів process() або визначено з документа.

note: type: textblock
en: This function will return the charset that should be used in the output document (usually useful to substitute the input document's detected charset where it has been found).
uk: Ця функція повертає кодування, яке слід використовувати у виведеному документі (зазвичай, корисно для заміни виявленого кодування вхідного документа, де його було визначено).

note: type: textblock
en: It will use the output charset specified in the command line. If it wasn't specified, it will use the input PO's charset, and if the input PO has the default "CHARSET", it will return the input document's charset, so that no encoding is performed.
uk: Функція використовуватиме для виведення кодування, вказане у рядку команди. Якщо кодування не вказано, буде використано кодування з вхідного файла PO. Якщо ж у цьому файлі лишатиметься типове значення кодування, «CHARSET», функція поверне значення кодування вхідного документа, отже ніякого перекодування не виконуватиметься.

note: type: textblock
en: This function returns the recoded text passed as argument, from the input document's charset to the output document's one. This isn't needed when translating a string (translate() recodes everything itself), but it is when you skip a string from the input document and you want the output document to be consistent with the global encoding.
uk: Ця функція повертає перекодований текст, переданий їй як аргумент, з кодування вхідного документа у кодування вихідного документа. У такому перекодуванні немає потреби, якщо рядок перекладається (translate() сама усе перекодовує), але воно потрібне, якщо ви пропускаєте рядок із вхідного документа і хочете, щоб вихідний документ був однорідним у сенсі загального кодування.

note: type: =head1
en: FUTURE DIRECTIONS
uk: МАЙБУТНІ НАПРЯМКИ

note: type: textblock
en: One shortcoming of the current TransTractor is that it can't handle translated document containing all languages, like debconf templates, or .desktop files.
uk: Недоліком поточної реалізації TransTractor є те, що модуль не здатен обробляти перекладені документи, у яких містяться переклади усіма мовами, наприклад, шаблони debconf або файли .desktop.

note: type: textblock
en: To address this problem, the only interface changes needed are:
uk: Для усування цієї проблеми достатньо змінити у інтерфейсі таке:

note: type: textblock
en: take a hash as po_in_name (a list per language)
uk: отримати хеш як po_in_name (один список на мову)

note: type: textblock
en: add an argument to translate to indicate the target language
uk: додати аргумент для перекладу, щоб вказати мову перекладу

note: type: textblock
en: make a pushline_all function, which would make pushline of its content for all languages, using a map-like syntax:
uk: створити функцію pushline_all, яка виконуватиме pushline своїх даних для усіх мов з використанням map-подібного синтаксису:

note: type: textblock
en: Will see if it's enough ;)
uk: Побачимо, чи цього досить ;)

note: type: textblock
en: Locale::Po4a::Wml - convert WML (web markup language) documents from/to PO files
uk: Locale::Po4a::Wml — перетворення документів WML (web markup language) на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Wml is a module to help the translation of WML documents into other [human] languages. Do not mixup the WML we are speaking about here (web markup language) and the WAP crap used on cell phones.
uk: Locale::Po4a::Wml — модуль, який допомагає у перекладі документів WML іншими мовами (якими розмовляють люди). Не слід плутати WML, про який ми тут говоримо (абревіатура від «web markup language» або «мова розмітки для інтернету»), і WAP-мотлох, який використовується у мобільних телефонах.

note: type: textblock
en: Please note that this module relies upon the Locale::Po4a::Xhtml module, which also relies upon the Locale::Po4a::Xml module.  This means that all tags for web page expressions are assumed to be written in the XHTML syntax.
uk: Будь ласка, зауважте, що цей модуль використовує для обробки модуль Locale::Po4a::Xhtml, який сам використовує модуль Locale::Po4a::Xml. Це означає, що усі теґи для виразів на вебсторінці вважаються написаними з використанням синтаксису XHTML.

note: type: textblock
en: This module works for some simple documents, but is still young.  Currently, the biggest issue of the module is probably that it cannot handle documents that contain non-XML inline tags such as <email "foo@example.org">, which are often defined in the WML.  Improvements will be added in the future releases.
uk: Цей модуль працює для деяких простих документів, але усе ще є неповним. У поточній версії найбільшою вадою модуля, ймовірно, є те, що він не здатен обробляти документи, у яких містяться вбудовані теґи, відмінні від теґів XML, наприклад, <email "foo@example.org">. Такі теґи часто визначаються у WML. Поліпшення очікуються у майбутніх версіях.

note: type: verbatim
en:  Copyright © 2005 SPI, Inc.
uk:  © SPI, Inc., 2005

note: type: textblock
en: Locale::Po4a::Xhtml - convert XHTML documents from/to PO files
uk: Locale::Po4a::Xhtml — перетворення документів XHTML на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Xhtml is a module to help the translation of XHTML documents into other [human] languages.
uk: Locale::Po4a::Xhtml — модуль, який допомагає у перекладі документів XHTML іншими мовами (якими розмовляють люди).

note: type: =item
en: B<includessi>[B<=>I<rootpath>]
uk: B<includessi>[B<=>I<коренева_тека>]

note: type: textblock
en: Include files specified by an include SSI (Server Side Includes) element (e.g. <!--#include virtual="/foo/bar.html" -->).
uk: Включити файли, вказані за допомогою елемента включення SSI (Server Side Includes або включення на боці сервера). Приклад: <!--#include virtual="/foo/bar.html" -->.

note: type: textblock
en: B<Note:> You should use it only for static files.
uk: B<Зауваження:> цей модуль слід застосовувати лише для статичних файлів.

note: type: textblock
en: An additional I<rootpath> parameter can be specified. It specifies the root path to find files included by a B<virtual> attribute.
uk: Можна вказати один додатковий параметр I<rootpath>. Він визначає кореневий шлях для пошуку файлів, включених за допомогою атрибута B<virtual>.

note: type: textblock
en: "It works for me", which means I use it successfully on my personal Web site.  However, YMMV: please let me know if something doesn't work for you.
uk: «Це працює у мене», тобто автор успішно використав модуль для перекладу особистого сайта. Втім, у вас усе може бути інакше: будь ласка, повідомте авторові, якщо у вас щось не працюватиме.

note: type: verbatim
en:  Copyright © 2004 Yves Rütschlé <po4a@rutschle.net>
     Copyright © 2007-2008 Nicolas François <nicolas.francois@centraliens.net>
uk:  © Yves Rütschlé <po4a@rutschle.net>, 2004
     © Nicolas François <nicolas.francois@centraliens.net>, 2007—2008

note: type: textblock
en: Locale::Po4a::Xml - convert XML documents and derivates from/to PO files
uk: Locale::Po4a::Xml — перетворення документів XML та похідних документів на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Xml is a module to help the translation of XML documents into other [human] languages. It can also be used as a base to build modules for XML-based documents.
uk: Locale::Po4a::Xml — модуль, який допомагає у перекладі документів XML іншими мовами (якими розмовляють люди). Модулем можна також скористатися як основою для побудови модулів для заснованих на XML документів.

note: type: =head1
en: TRANSLATING WITH PO4A::XML
uk: ПЕРЕКЛАД ЗА ДОПОМОГОЮ PO4A::XML

note: type: textblock
en: This module can be used directly to handle generic XML documents.  This will extract all tag's content, and no attributes, since it's where the text is written in most XML based documents.
uk: Цим модулем можна скористатися для роботи із типовими документами XML. Він видобуває увесь вміст теґів, не видобуває атрибути, оскільки текст у більшості документів на основі XML міститься саме у теґах.

note: type: textblock
en: There are some options (described in the next section) that can customize this behavior.  If this doesn't fit to your document format you're encouraged to write your own module derived from this, to describe your format's details.  See the section B<WRITING DERIVATE MODULES> below, for the process description.
uk: Передбачено декілька параметрів (які описано у наступному розділі), за допомогою яких можна налаштувати поведінку модуля. Якщо модуль не відповідає формату вашого документа, вам варто написати власний модуль, який походитиме від цього, і у якому ви опишете параметри формату. Опис процедури написання наведено у розділі B<НАПИСАННЯ ПОХІДНИХ МОДУЛІВ> нижче.

note: type: textblock
en: The global debug option causes this module to show the excluded strings, in order to see if it skips something important.
uk: Загальний параметр діагностики призводить до того, що цей модуль виводить виключені рядки, щоб ви могли бачити, чи не пропускає він чогось важливого.

note: type: textblock
en: Prevents it to strip the spaces around the extracted strings.
uk: Запобігає вилученню пробілів на початку і наприкінці видобутих рядків.

note: type: textblock
en: Canonicalizes the string to translate, considering that whitespaces are not important, and wraps the translated document. This option can be overridden by custom tag options. See the B<translated> option below.
uk: Переводить рядок для перекладу у канонічну форму, де пробіли вважаються неважливими, а рядки у перекладеному документі переносяться. Цей параметр можна перевизначити параметрами нетипових теґів. Див. параметр B<translated> нижче.

note: type: textblock
en: Attributes are wrapped by default. This option disables wrapping.
uk: Типово, рядки з атрибутами переносяться. За допомогою цього параметра можна заборонити таке перенесення.

note: type: textblock
en: It makes the tags and attributes searching to work in a case insensitive way.  If it's defined, it will treat E<lt>BooKE<gt>laNG and E<lt>BOOKE<gt>Lang as E<lt>bookE<gt>lang.
uk: Наказує модулю виконувати пошук теґів і атрибутів без враховування регістру символів. Якщо визначено, модуль оброблятиме E<lt>BooKE<gt>laNG і E<lt>BOOKE<gt>Lang як E<lt>bookE<gt>lang.

note: type: textblock
en: Escape quotes in output strings.  Necessary, for example, for creating string resources for use by Android build tools.
uk: Екранувати лапки у виведених рядках. Таке екранування є обов'язковим, наприклад, для створення рядкових ресурсів, які використовуватимуться у засобах збирання Android.

note: type: textblock
en: See also: https://developer.android.com/guide/topics/resources/string-resource.html
uk: Див. також https://developer.android.com/guide/topics/resources/string-resource.html

note: type: textblock
en: When defined, external entities are included in the generated (translated)  document, and for the extraction of strings.  If it's not defined, you will have to translate external entities separately as independent documents.
uk: Якщо визначено, замінники для включення зовнішніх файлів включатимуться за вмістом до створеного (перекладеного) документа та видобуватимуться до рядків. Якщо не визначено, вам доведеться перекладати зовнішні файли, вказані за допомогою замінників, окремо як незалежні документи.

note: type: textblock
en: This option defines the behavior of the module when it encounters invalid XML syntax (a closing tag which does not match the last opening tag).  It can take the following values:
uk: Цей параметр визначає поведінку модуля, якщо буде виявлено некоректний синтаксис XML (кінцевий теґ, який не відповідає останньому початковому теґу). Може приймати такі значення:

note: type: textblock
en: This is the default value.  The module will exit with an error.
uk: Це типове значення. Модуль завершує роботу з повідомленням про помилку.

note: type: textblock
en: The module will continue, and will issue a warning.
uk: Модуль продовжуватиме роботу, але виведе попередження.

note: type: textblock
en: The module will continue without any warnings.
uk: Модуль продовжить роботу без жодних попереджень.

note: type: textblock
en: Be careful when using this option.  It is generally recommended to fix the input file.
uk: Будьте обережні із цим параметром. Загалом, рекомендуємо просто виправити файл вхідних даних.

note: type: textblock
en: Note: This option is deprecated.
uk: Зауваження: цей параметр вважається застарілим.

note: type: textblock
en: Extracts only the specified tags in the B<tags> option.  Otherwise, it will extract all the tags except the ones specified.
uk: Видобувати лише з теґів, вказаних за допомогою параметра B<tags>. Якщо не вказано, видобуватиметься вміст усіх теґів, окрім вказаних як такі, які є непридатними для видобування.

note: type: textblock
en: String that will try to match with the first line of the document's doctype (if defined). If it doesn't, a warning will indicate that the document might be of a bad type.
uk: Рядок, який слід шукати у першому рядку doctype документа (якщо визначено). Якщо такий рядок не буде знайдено, модуль покаже повідомлення про те, що документ може належати до не того типу.

note: type: textblock
en: String indicating the path (e.g. E<lt>bbbE<gt>E<lt>aaaE<gt>) of a tag where a lang="..." attribute shall be added. The language will be defined as the basename of the PO file without any .po extension.
uk: Рядок, який вказує шлях (наприклад, E<lt>bbbE<gt>E<lt>aaaE<gt>) до теґу, до якого слід додати атрибут lang="...". Мову буде визначено на основі базової назви файла PO без суфікса .po.

note: type: textblock
en: Boolean indicating whether closing tags are optional (as in HTML). By default, missing closing tags raise an error handled according to B<ontagerror>.
uk: Булеве значення, яке вказує на те, чи є завершальні теґи необов'язковими (як у HTML). Типово, пропущені завершальні теґи призводять до сповіщення про помилку, обробка якого виконується відповідно до B<ontagerror>.

note: type: textblock
en: Note: This option is deprecated.  You should use the B<translated> and B<untranslated> options instead.
uk: Зауваження: цей параметр вважається застарілим. Замість нього, вам слід користуватися параметрами B<translated> і B<untranslated>.

note: type: textblock
en: Space-separated list of tags you want to translate or skip.  By default, the specified tags will be excluded, but if you use the "tagsonly" option, the specified tags will be the only ones included.  The tags must be in the form E<lt>aaaE<gt>, but you can join some (E<lt>bbbE<gt>E<lt>aaaE<gt>) to say that the content of the tag E<lt>aaaE<gt> will only be translated when it's into a E<lt>bbbE<gt> tag.
uk: Список відокремлених пробілами теґів, вміст яких ви хочете перекласти або пропустити. Типово, вміст вказаних теґів буде виключено, але якщо вказано параметр «tagsonly», буде включено лише вміст вказаних теґів. Теґи слід вказувати у форматі E<lt>aaaE<gt>, але ви можете поєднати деякі теґи (E<lt>bbbE<gt>E<lt>aaaE<gt>), щоб вказати, наприклад, що вміст теґу E<lt>aaaE<gt> перекладатиметься, лише якщо його включено до теґу E<lt>bbbE<gt>.

note: type: textblock
en: You can also specify some tag options by putting some characters in front of the tag hierarchy. For example, you can put I<w> (wrap) or I<W> (don't wrap)  to override the default behavior specified by the global B<wrap> option.
uk: Ви також можете вказати деякі параметри теґів, додаючи символи перед ієрархією теґів. Наприклад, ви можете додати I<w> (переносити) або I<W> (не переносити), щоб перевизначити типову поведінку, вказано за допомогою загального параметра B<wrap>.

note: type: textblock
en: Example: WE<lt>chapterE<gt>E<lt>titleE<gt>
uk: Приклад: WE<lt>chapterE<gt>E<lt>titleE<gt>

note: type: textblock
en: Space-separated list of tag's attributes you want to translate.  You can specify the attributes by their name (for example, "lang"), but you can prefix it with a tag hierarchy, to specify that this attribute will only be translated when it's in the specified tag. For example: E<lt>bbbE<gt>E<lt>aaaE<gt>lang specifies that the lang attribute will only be translated if it's in an E<lt>aaaE<gt> tag, and it's in a E<lt>bbbE<gt> tag.
uk: Список відокремлених пробілами атрибутів теґів, які ви хочете перекласти. Ви можете вказати атрибути за назвою (наприклад, «lang»), а можете додати префікс із ієрархії теґів, щоб вказати, що певний атрибути перекладатиметься, лише якщо він перебуває у вказаному тезі. Приклад: запис E<lt>bbbE<gt>E<lt>aaaE<gt>lang означає, що атрибут lang перекладатиметься, лише якщо він перебуває у тезі E<lt>aaaE<gt>, який перебуває у тезі E<lt>bbbE<gt>.

note: type: textblock
en: Do not translate attributes in inline tags.  Instead, replace all attributes of a tag by po4a-id=<id>.
uk: Не перекладати атрибути у вбудованих в абзац теґах. Замість цього, замінити усі атрибути теґу записом po4a-id=<id>.

note: type: textblock
en: This is useful when attributes shall not be translated, as this simplifies the strings for translators, and avoids typos.
uk: Корисно, якщо атрибути не слід перекладати, оскільки спрощує роботу перекладача і надає змогу уникнути друкарських помилок.

note: type: textblock
en: Space-separated list of tags which should not be treated as tags.  These tags are treated as inline, and do not need to be closed.
uk: Список відокремлених пробілами теґів, які не слід вважати теґами. Ці теґи вважатимуться вбудованими у текст теґами, які не потребують закриття.

note: type: textblock
en: Space-separated list of tags which should break the sequence.  By default, all tags break the sequence.
uk: Список відокремлених пробілами теґів, які розривають послідовність обробки. Типово, усі теґи розривають послідовність обробки.

note: type: textblock
en: The tags must be in the form <aaa>, but you can join some (<bbb><aaa>), if a tag (<aaa>) should only be considered when it's within another tag (<bbb>).
uk: Теґи слід вказувати у форматі <aaa>, але ви можете об'єднати декілька (<bbb><aaa>), якщо один теґ (<aaa>) слід брати до уваги, лише якщо він перебуває усередині іншого теґу (<bbb>).

note: type: textblock
en: Please note a tag should be listed in only one of the B<break>, B<inline> B<placeholder>, or B<customtag> setting string.
uk: Будь ласка, зауважте, що теґ має бути вказано лише у одному зі списків параметрів B<break>, B<inline> B<placeholder> або B<customtag>.

note: type: textblock
en: Space-separated list of tags which should be treated as inline.  By default, all tags break the sequence.
uk: Список відокремлених пробілами теґів, які слід вважати вбудованими до абзацу. Типово, усі теґи розривають послідовність обробки тексту.

note: type: textblock
en: Space-separated list of tags which should be treated as placeholders.  Placeholders do not break the sequence, but the content of placeholders is translated separately.
uk: Список відокремлених пробілами теґів, які слід вважати замінниками. до абзацу Замінники не розривають послідовність обробки тексту, але вміст замінників перекладається окремо.

note: type: textblock
en: The location of the placeholder in its block will be marked with a string similar to:
uk: Розташування замінника у його блоці буде позначено рядком, подібним до такого:

note: type: textblock
en: By default, Processing Instructions (i.e., C<E<lt>? ... ?E<gt>> tags) are handled as inline tags.  Pass this option if you want the PI to be handled as breaking tag.  Note that unprocessed PHP tags are handled as Processing Instructions by the parser.
uk: Типово, команди обробки (тобто теґи C<E<lt>? ... ?E<gt>>) обробляються як вбудовані теґи. Передайте цей параметр, якщо ви хочете, щоб ці команди обробки оброблялися як теґи, які розривають повідомлення. Зауважте, що обробник використовує категорію команд обробки для необроблених теґів PHP.

note: type: textblock
en: Space separated list of tags that the module should not try to set by default in any category.
uk: Список відокремлених пробілами теґів, які модуль не повинен типово встановлювати у будь-якій категорії.

note: type: textblock
en: If you have a tag which has its default setting by the subclass of this module but you want to set alternative setting, you need to list that tag as a part of the B<nodefault> setting string.
uk: Якщо у вашому тексті є теґ, для якого передбачено типові параметри обробки у підкласі цього модуля, ви можете змінити параметри. Для цього вам слід вказати теґ як частину рядка параметра B<nodefault>.

note: type: textblock
en: Support C preprocessor directives.  When this option is set, po4a will consider preprocessor directives as paragraph separators.  This is important if the XML file must be preprocessed because otherwise the directives may be inserted in the middle of lines if po4a consider it belong to the current paragraph, and they won't be recognized by the preprocessor.  Note: the preprocessor directives must only appear between tags (they must not break a tag).
uk: Підтримка директив попередньої обробки C. Якщо встановлено цей параметр, po4a вважатиме директиви попередньої обробки роздільниками абзаців. Це важливо, якщо файл XML має бути попередньо оброблено, оскільки, якщо цього не зробити, директиви може бути вставлено у рядки, якщо po4a вважатиме їх належними до поточного абзацу, а отже, вставлені директиви може бути не розпізнано засобом попередньої обробки. Зауваження: директиви попередньої обробки мають з'являтися лише між теґами (вони не повинні порушувати послідовність теґів).

note: type: textblock
en: Space-separated list of tags you want to translate.
uk: Список відокремлених пробілами теґів, вміст яких ви хочете перекладати.

note: type: textblock
en: You can also specify some tag options by putting some characters in front of the tag hierarchy.  This overrides the default behavior specified by the global B<wrap> and B<defaulttranslateoption> option.
uk: Ви також можете вказати деякі параметри теґів, додаючи символи перед ієрархією теґів. Ці параметри перевизначають типову поведінку, вказану за допомогою загальних параметрів B<wrap> і B<defaulttranslateoption>.

note: type: textblock
en: Tags should be translated and content can be re-wrapped.
uk: Теґи слід перекладати, а дані може бути переформатовано.

note: type: textblock
en: Tags should be translated and content should not be re-wrapped.
uk: Теґи має бути перекладено, а дані не слід переформатовувати.

note: type: textblock
en: Tags should be translated inline.
uk: Теґи має бути перекладено у тексті.

note: type: textblock
en: Tags should be translated as placeholders.
uk: Теґи має бути перекладено як замінники.

note: type: textblock
en: Internally, the XML parser only cares about these four options: I<w> I<W> I<i> I<p>.
uk: На внутрішньому рівні обробник XML працює з цими 4 параметрами: I<w> I<W> I<i> I<p>.

note: type: textblock
en: * Tags listed in B<break> are set to I<w> or I<W> depending on the B<wrap> option.
uk: * Для теґів зі списку B<break> буде встановлено I<w> або I<W>, залежно від параметра B<wrap>.

note: type: textblock
en: * Tags listed in B<inline> are set to I<i>.
uk: * Для теґів зі списку B<inline> буде встановлено I<i>.

note: type: textblock
en: * Tags listed in B<placeholder> are set to I<p>.
uk: * Для теґів зі списку B<placeholder> буде встановлено I<p>.

note: type: textblock
en: * Tags listed in B<untranslated> are without any of these options set.
uk: * Для теґів зі списку B<untranslated> не буде встановлено жодного з цих параметрів.

note: type: textblock
en: You can verify actual internal parameter behavior by invoking B<po4a> with B<--debug> option.
uk: Ви можете перевірити, як працює обробка параметрів на внутрішньому рівні, за допомогою виклику B<po4a> з параметром B<--debug>.

note: type: textblock
en: Please note a tag should be listed in either B<translated> or B<untranslated> setting string.
uk: Зауважте, що теґ має бути або у списку параметра B<translated>, або у списку параметра B<untranslated>.

note: type: textblock
en: Space-separated list of tags you do not want to translate.
uk: Список відокремлених пробілами теґів, вміст яких ви не хочете перекладати.

note: type: textblock
en: Please note a translatable inline tag in an untranslated tag is treated as a translatable breaking tag, I<i> setting is dropped and I<w> or I<W> is set depending on the B<wrap> option.
uk: Будь ласка, зауважте, що придатний до перекладу вбудований теґ у даних теґу, який не перекладається, вважається теґом зміни режиму перекладу, параметр I<i> скидається, і використовується параметр I<w> або I<W>, залежно від значення параметра B<wrap>.

note: type: textblock
en: The default categories for tags that are not in any of the translated, untranslated, break, inline, or placeholder.
uk: Типові категорії для теґів, які не належать до категорій translated, untranslated, break, inline або placeholder.

note: type: textblock
en: This is a set of letters as defined in B<translated> and this setting is only valid for translatable tags.
uk: Це набір літер, які визначено у B<translated>. Цей параметр є чинним лише для теґів, які можна перекладати.

note: type: =head1
en: WRITING DERIVATIVE MODULES
uk: НАПИСАННЯ ПОХІДНИХ МОДУЛІВ

note: type: =head2
en: DEFINE WHAT TAGS AND ATTRIBUTES TO TRANSLATE
uk: ВИЗНАЧЕННЯ ТЕҐІВ І АТРИБУТІВ ДЛЯ ПЕРЕКЛАДУ

note: type: textblock
en: The simplest customization is to define which tags and attributes you want the parser to translate.  This should be done in the initialize function.  First you should call the main initialize, to get the command-line options, and then, append your custom definitions to the options hash.  If you want to treat some new options from command line, you should define them before calling the main initialize:
uk: Найпростішим налаштовування є визначення, які теґи і атрибути засіб обробки має вважати придатними до перекладу. Зробити це можна у функції ініціалізації. Спочатку вам слід викликати ініціалізацію основної функції, щоб отримати параметри рядка команди, а потім слід дописати ваші нетипові визначення до хешу параметрів. Якщо ви хочете взяти до уваги якісь нові параметри з рядка команди, вам слід визначити їх до виклику ініціалізації основної функції:

note: type: textblock
en: You should use the B<_default_inline>, B<_default_break>, B<_default_placeholder>, B<_default_translated>, B<_default_untranslated>, and B<_default_attributes> options in derivative modules. This allow users to override the default behavior defined in your module with command line options.
uk: Вам слід використовувати параметри B<_default_inline>, B<_default_break>, B<_default_placeholder>, B<_default_translated>, B<_default_untranslated>, і B<_default_attributes> у похідних модулях. Це надасть змогу користувачам перевизначати типову поведінку, визначену у вашому модулі, за допомогою параметрів рядка команди.

note: type: textblock
en: If you don't like the default behavior of this xml module and its derivative modules, you can provide command line options to change their behavior.
uk: Якщо вам не до вподоби типова поведінка модуля xml та похідних від нього модулів, ви можете змінити її за допомогою параметрів командного рядка.

note: type: textblock
en: See L<Locale::Po4a::Docbook(3pm)|Locale::Po4a::Docbook>,
uk: Див. L<Locale::Po4a::Docbook(3pm)|Locale::Po4a::Docbook>,

note: type: =head2
en: OVERRIDING THE found_string FUNCTION
uk: ПЕРЕВИЗНАЧЕННЯ ФУНКЦІЇ found_string

note: type: textblock
en: Another simple step is to override the function "found_string", which receives the extracted strings from the parser, in order to translate them.  There you can control which strings you want to translate, and perform transformations to them before or after the translation itself.
uk: Іншим простим кроком є перевизначення функції «found_string», яка отримує видобуті рядки від засобу обробки з метою їх перекладу. Ви можете керувати тим, які рядки слід перекладати, і виконувати їхнє перетворення до чи після самого перекладу.

note: type: textblock
en: It receives the extracted text, the reference on where it was, and a hash that contains extra information to control what strings to translate, how to translate them and to generate the comment.
uk: Функція отримує видобутий текст, посилання на місце у документі, звідки видобуто текст, та хеш, у якому містяться додаткові дані щодо того, які рядки слід перекладати, як їх слід перекладати і як створювати коментар.

note: type: textblock
en: The content of these options depends on the kind of string it is (specified in an entry of this hash):
uk: Вміст цих параметрів залежить від типу рядка (вказаного у записі цього хешу):

note: type: textblock
en: The found string is the content of a translatable tag. The entry "tag_options" contains the option characters in front of the tag hierarchy in the module "tags" option.
uk: Знайдений рядок є вмістом придатного для перекладу теґу. Запис «tag_options» містить додаткові символи перед записом теґу у ієрархії тегів параметра «tags» модуля.

note: type: textblock
en: Means that the found string is the value of a translatable attribute. The entry "attribute" has the name of the attribute.
uk: Означає, що знайдений рядок є значенням придатного до перекладу атрибута. Запис «attribute» містить назву атрибута.

note: type: textblock
en: It must return the text that will replace the original in the translated document. Here's a basic example of this function:
uk: Має повертати текст, який замінить оригінал у перекладеному документі. Ось базовий приклад цієї функції:

note: type: textblock
en: There's another simple example in the new Dia module, which only filters some strings.
uk: Ще один простий приклад можна знайти у модулі Dia. Там фільтруються лише деякі рядки.

note: type: =head2
en: MODIFYING TAG TYPES (TODO)
uk: ВНЕСЕННЯ ЗМІН ДО ТИПІВ ТЕҐІВ (ЩЕ НЕ НАПИСАНО)

note: type: textblock
en: This is a more complex one, but it enables a (almost) total customization.  It's based on a list of hashes, each one defining a tag type's behavior. The list should be sorted so that the most general tags are after the most concrete ones (sorted first by the beginning and then by the end keys). To define a tag type you'll have to make a hash with the following keys:
uk: Це доволі складно, але надасть змогу налаштовувати (майже) усе. Засновано на списку хешів, кожен з яких визначає поведінку для певного типу теґів. Список має бути упорядковано так, щоб найзагальніші теґи стояли у ньому після найконкретніших (упорядковані спочатку за початковими, а потім за кінцевими ключами). Щоб визначити тип теґів, вам доведеться створити хеш із такими ключами:

note: type: textblock
en: Specifies the beginning of the tag, after the "E<lt>".
uk: Задає початок теґу, після «E<lt>».

note: type: textblock
en: Specifies the end of the tag, before the "E<gt>".
uk: Задає кінець теґу, до «E<gt>».

note: type: textblock
en: It says if this is a breaking tag class.  A non-breaking (inline) tag is one that can be taken as part of the content of another tag.  It can take the values false (0), true (1) or undefined.  If you leave this undefined, you'll have to define the f_breaking function that will say whether a concrete tag of this class is a breaking tag or not.
uk: Повідомляє, чи є клас теґів роздільним. Нероздільним (вбудованим) теґом буде теґ, який можна вважати вмістом іншого теґу. Може приймати значення false (0), true (1) або undefined (не визначено). Якщо ви лишите його невизначеним, вам слід визначити функцію f_breaking, яка повідомлятиме, належить певний теґ цього класу до роздільних чи ні.

note: type: textblock
en: It's a function that will tell if the next tag is a breaking one or not.  It should be defined if the B<breaking> option is not.
uk: Це функція, яка повідомлятиме, є наступний теґ роздільним чи ні. Її слід визначити, якщо параметр B<breaking> не визначено.

note: type: textblock
en: If you leave this key undefined, the generic extraction function will have to extract the tag itself.  It's useful for tags that can have other tags or special structures in them, so that the main parser doesn't get mad.  This function receives a boolean that says if the tag should be removed from the input stream or not.
uk: Якщо ви не визначатимете цей ключ, загальна функція видобування видобуватиме і сам теґ. Це корисно для теґів, які можуть містити інші теґи або спеціальні структури, щоб забезпечити притомну поведінку основного засобу обробки. Ця функція отримує булеве значення, яке повідомляє, слід вилучати теґ із вхідного потоку даних чи ні.

note: type: textblock
en: This function receives the tag (in the get_string_until() format) and returns the translated tag (translated attributes or all needed transformations) as a single string.
uk: Ця функція отримує теґ (у форматі get_string_until()) і повертає перекладений теґ (перекладені атрибути або усі потрібні перетворення) як один рядок.

note: type: =head2
en: WORKING WITH TAGS
uk: РОБОТА З ТЕҐАМИ

note: type: textblock
en: This function returns the path to the current tag from the document's root, in the form E<lt>htmlE<gt>E<lt>bodyE<gt>E<lt>pE<gt>.
uk: Ця функція повертає шлях до поточного теґу від кореневого теґу документа у формі E<lt>htmlE<gt>E<lt>bodyE<gt>E<lt>pE<gt>.

note: type: textblock
en: An additional array of tags (without brackets) can be passed as argument.  These path elements are added to the end of the current path.
uk: Можна передати як аргумент додатковий масив теґів (без дужок). Ці елементи шляху буде додано наприкінці поточного шляху.

note: type: textblock
en: This function returns the index from the tag_types list that fits to the next tag in the input stream, or -1 if it's at the end of the input file.
uk: Ця функція повертає індекс у списку tag_types, який відповідає наступному теґу у потоці вхідних даних, або -1, якщо це кінець файла вхідних даних.

note: type: textblock
en: Here, the tag has structure started by E<lt> and end by E<gt> and it can contain multiple lines.
uk: Тут теґ має конструкцію, яка починається з E<lt> і завершується E<gt>, а також може складатися з декількох рядків.

note: type: textblock
en: This works on the array C<< @{$self->{TT}{doc_in}} >> holding input document data and reference indirectly via C<< $self->shiftline() >> and C<< $self->unshiftline($$) >>.
uk: Функція працює з масивом C<< @{$self->{TT}{doc_in}} >>, який містить дані вхідного документа, і здійснює прив'язку опосередковано, на основі C<< $self->shiftline() >> і C<< $self->unshiftline($$) >>.

note: type: textblock
en: This function returns the next tag from the input stream without the beginning and end, in an array form, to maintain the references from the input file.  It has two parameters: the type of the tag (as returned by tag_type) and a boolean, that indicates if it should be removed from the input stream.
uk: Ця функція повертає наступний теґ із потоку вхідних даних без початку і кінця у формі масиву, щоб зберегти посилання на файл вхідних даних. Функція має два параметри: тип теґу (у формі, яку повертає tag_type) та булеве значення, яке вказує на те, чи слід вилучати теґ із потоку вхідних даних.

note: type: textblock
en: This function returns the name of the tag passed as an argument, in the array form returned by extract_tag.
uk: Ця функція повертає назву теґу, переданого як аргумент, у формі масиву, повернутого extract_tag.

note: type: textblock
en: This function returns a boolean that says if the next tag in the input stream is a breaking tag or not (inline tag).  It leaves the input stream intact.
uk: Ця функція повертає булеве значення, яке повідомляє, є наступний теґ у потоці вхідних даних роздільним чи ні (вбудованим теґом). Не змінює вхідний потік даних.

note: type: textblock
en: This function translates the next tag from the input stream.  Using each tag type's custom translation functions.
uk: Ця функція перекладає наступний теґ з потоку вхідних даних. Використовує нетипові функції перекладу для кожного типу теґів.

note: type: textblock
en: This function returns a string value that says if the first argument (a tag hierarchy) matches any of the tags from the second argument (a list of tags or tag hierarchies). If it doesn't match, it returns 0. Else, it returns the matched tag's options (the characters in front of the tag) or 1 (if that tag doesn't have options).
uk: Ця функція повертає рядкове значення, яке повідомляє, чи відповідає перший аргумент (ієрархія теґів) будь-якому теґу з другого аргументу (списку теґів або ієрархій теґів). Якщо не відповідає, функція повертає 0. Якщо відповідає, повертає параметри відповідного теґу (символи перед теґом) або 1 (якщо у теґу немає параметрів).

note: type: =head2
en: WORKING WITH ATTRIBUTES
uk: РОБОТА З АТРИБУТАМИ

note: type: textblock
en: This function handles the translation of the tags' attributes. It receives the tag without the beginning / end marks, and then it finds the attributes, and it translates the translatable ones (specified by the module option B<attributes>).  This returns a plain string with the translated tag.
uk: Ця функція обробляє переклад атрибутів теґу. Вона отримує теґ без позначок початку і кінця, а потім визначає атрибути і перекладає ті з них, які слід перекласти (вказані за допомогою параметра модуля B<attributes>). Функція повертає простий рядок із перекладеним теґом.

note: type: =head2
en: WORKING WITH TAGGED CONTENTS
uk: РОБОТА З ДАНИМИ У ТЕҐАХ

note: type: textblock
en: This function gets the text until the next breaking tag (not inline) from the input stream.  Translate it using each tag type's custom translation functions.
uk: Ця функція отримує фрагмент тексту до наступного теґу (не вбудованого) з потоку вхідних даних. Використовує нетипові функції перекладу для кожного типу теґів.

note: type: =head2
en: WORKING WITH THE MODULE OPTIONS
uk: РОБОТА З ПАРАМЕТРАМИ МОДУЛІВ

note: type: textblock
en: This function fills the internal structures that contain the tags, attributes and inline data with the options of the module (specified in the command-line or in the initialize function).
uk: Ця функція заповнює внутрішні структури, які містять теґи, атрибути і вбудовані дані із використанням параметрів модуля (вказаний у рядку команди або у функції ініціалізації).

note: type: =head2
en: GETTING TEXT FROM THE INPUT DOCUMENT
uk: ОТРИМАННЯ ТЕКСТУ ІЗ ВХІДНОГО ДОКУМЕНТА

note: type: textblock
en: This function returns an array with the lines (and references) from the input document until it finds the first argument.  The second argument is an options hash. Value 0 means disabled (the default) and 1, enabled.
uk: Ця функція повертає масив рядків (і посилань) з вхідного документа, розташованих до першого аргументу функції. Другим аргументом є хеш параметрів. Значення 0 означає «вимкнено» (типове значення), а значення 1 — увімкнено.

note: type: textblock
en: The valid options are:
uk: Коректні значення параметрів:

note: type: textblock
en: This makes the returned array to contain the searched text
uk: Робить так, що повернути масив міститиме текст, який шукали

note: type: textblock
en: This removes the returned stream from the input
uk: Вилучає повернутий потік даних з вхідних даних.

note: type: textblock
en: This ensures that the searched text is outside any quotes
uk: Забезпечує, щоб шуканий текст був поза лапками.

note: type: textblock
en: This denotes that the first argument is a regular expression rather than an plain string
uk: Вказує, що першим аргументом є формальний вираз, а не звичайний текстовий рядок

note: type: textblock
en: This function receives as argument the reference to a paragraph (in the format returned by get_string_until), skips his heading spaces and returns them as a simple string.
uk: Ця функція отримує як аргумент посилання на абзац (у форматі, який повертає get_string_until), пропускає початкові пробіли і повертає абзац як простий рядок.

note: type: textblock
en: This function returns a simple string with the text from the argument array (discarding the references).
uk: Ця функція повертає простий рядок із текстом з масиву аргументів (з відкиданням посилань).

note: type: textblock
en: This module can translate tags and attributes.
uk: Цей модуль може перекладати теґи і атрибути.

note: type: textblock
en: DOCTYPE (ENTITIES)
uk: DOCTYPE (ЗАПИСИ)

note: type: textblock
en: There is a minimal support for the translation of entities. They are translated as a whole, and tags are not taken into account. Multilines entities are not supported and entities are always rewrapped during the translation.
uk: Передбачено мінімальну підтримку перекладу замінників. Вони перекладаються як ціле, теґи не беруться до уваги. Підтримки багаторядкових замінників не передбачено, замінники завжди переносяться під час перекладу.

note: type: textblock
en: MODIFY TAG TYPES FROM INHERITED MODULES (move the tag_types structure inside the $self hash?)
uk: ВНЕСЕННЯ ЗМІН ДО ТИПІВ ТЕҐІВ З УСПАДКОВАНИХ МОДУЛІВ (пересунути структуру tag_types до $self hash?)

note: type: verbatim
en:  Jordi Vilalta <jvprat@gmail.com>
     Nicolas François <nicolas.francois@centraliens.net>
uk:  © Jordi Vilalta <jvprat@gmail.com>
     © Nicolas François <nicolas.francois@centraliens.net>

note: type: verbatim
en:  Copyright © 2004 Jordi Vilalta  <jvprat@gmail.com>
     Copyright © 2008-2009 Nicolas François <nicolas.francois@centraliens.net>
uk:  © Jordi Vilalta  <jvprat@gmail.com>, 2004
     © Nicolas François <nicolas.francois@centraliens.net>, 2008—2009

note: type: textblock
en: Locale::Po4a::Yaml - convert YAML files from/to PO files
uk: Locale::Po4a::Yaml — перетворення файлів YAML на файли PO, і навпаки

note: type: textblock
en: Locale::Po4a::Yaml is a module to help the translation of Yaml files into other [human] languages.
uk: Locale::Po4a::Yaml — модуль, який допомагає у перекладі файлів Yaml іншими мовами (якими розмовляють люди).

note: type: textblock
en: The module extracts the value of YAML hashes and arrays. Hash keys are not extracted.
uk: Модуль видобуває значення хешів та масивів YAML. Видобування ключів хешів виконано не буде.

note: type: textblock
en: NOTE: This module parses the YAML file with YAML::Tiny.
uk: Зауваження: цей модуль обробляє файл YAML за допомогою YAML::Tiny.

note: type: textblock
en: Space-separated list of hash keys to process for extraction, all other keys are skipped.  Keys are matched with a case-sensitive match.  If B<paths> and B<keys> are used together, values are included if they are matched by at least one of the options.  Arrays values are always returned unless the B<skip_array> option is provided.
uk: Список відокремлених пробілами ключів хешів, які слід обробляти для видобування. Усі інші ключі буде пропущено. Відповідність ключів встановлюватиметься з врахуванням регістру. Якщо B<paths> і B<keys> використано разом, значення буде включено, якщо буде встановлено відповідність хоч за одним параметром. Значення масивів завжди перекладатимуться, якщо не вказано параметр B<skip_array>.

note: type: textblock
en: Comma-separated list of hash paths to process for extraction, all other paths are skipped. Paths are matched with a case-sensitive match.  If B<paths> and B<keys> are used together, values are included if they are matched by at least one of the options.  Arrays values are always returned unless the B<skip_array> option is provided.
uk: Список відокремлених комами шляхів хешів, які слід обробляти для видобування. Усі інші шляхи буде пропущено. Відповідність шляхів встановлюватиметься з врахуванням регістру. Якщо B<paths> і B<keys> використано разом, значення буде включено, якщо буде встановлено відповідність хоч за одним параметром. Значення масивів завжди перекладатимуться, якщо не вказано параметр B<skip_array>.

note: type: textblock
en: Do not translate array values.
uk: Не перекладати значення масивів.

note: type: textblock
en: Copyright © 2017 Brian Exelbierd.  Copyright © 2022 Martin Quinson <mquinson#debian.org>.
uk: © Brian Exelbierd, 2017. © Martin Quinson <mquinson#debian.org>, 2022.
