.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "PO4A-GETTEXTIZE 1p" .TH PO4A-GETTEXTIZE 1p "2023-01-03" "Інструменти Po4a" "Інструменти Po4a" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "НАЗВА" .IX Header "НАЗВА" po4a\-gettextize — програма для перетворення початкового файла (і його перекладу) на файл \s-1PO\s0 .SH "КОРОТКИЙ ОПИС" .IX Header "КОРОТКИЙ ОПИС" \&\fBpo4a\-gettextize\fR \fB\-f\fR \fIформат\fR \fB\-m\fR \fIосновний.документ\fR \fB\-l\fR \fI\s-1XX\s0.документ\fR \fB\-p\fR \fI\s-1XX\s0.po\fR .PP (\fI\s-1XX\s0.po\fR вказує на результат, усі інші вказують на вхідні дані) .SH "ОПИС" .IX Header "ОПИС" po4a («PO for anything» або «PO для усього») спрощує супровід перекладу документації з використанням класичних інструментів gettext. Основною перевагою po4a є відокремлення придатного до перекладу вмісту документа від його структури. Будь ласка, зверніться до сторінки \fBpo4a\fR\|(7), щоб ознайомитися зі вступними зауваженнями щодо цього проєкту. .PP Скрипт \fBpo4a\-gettextize\fR допоможе вам перетворити ваші наявні переклади до формату, придатного до робочої процедури на основі po4a. Таке перетворення до формату po4a для збереження наявного перекладу достатньо зробити один раз. Його не доведеться робити регулярно після перетворення вашого проєкту. Цю марудну процедуру докладно описано у розділі «Перетворення виконаного вручну перекладу до формату po4a» нижче. .PP Вам слід вказати і основний файл (наприклад файл початкового коду англійською), і файл наявного перекладу (наприклад спробу попереднього перекладу без po4a). Якщо вами буде вказано декілька основних файлів або декілька файлів перекладу, їх буде використано послідовно, але, ймовірно, простіше перетворити до формату gettext кожну сторінку або главу окремо, а потім скористатися \fBmsgmerge\fR для об'єднання усіх створених файлів \s-1PO.\s0 Як вже захочете. .PP Якщо у основному документі є символи, як не є символами \s-1ASCII,\s0 новостворений файл \s-1PO\s0 буде записано у кодуванні \s-1UTF\-8.\s0 У інших випадках (якщо основний документ містить лише символи \s-1ASCII\s0), створений файл \s-1PO\s0 використовуватиме кодування перекладеного вхідного документа. .SH "ПАРАМЕТРИ" .IX Header "ПАРАМЕТРИ" .IP "\fB\-f\fR, \fB\-\-format\fR" 4 .IX Item "-f, --format" Формат документації, з якою ви працюватимете. Скористайтеся параметром \fB\-\-help\-format\fR, щоб ознайомитися зі списком доступних форматів. .IP "\fB\-m\fR, \fB\-\-master\fR" 4 .IX Item "-m, --master" Файл, який містить основний документ для перекладу. Ви можете скористатися цим параметром декілька разів, якщо ви хочете перетворити на формат gettext декілька документів одночасно. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Кодування символів файла, який містить дані документа, який слід перекласти. .IP "\fB\-l\fR, \fB\-\-localized\fR" 4 .IX Item "-l, --localized" Файл, який містить дані перекладеного документа. Якщо було вказано декілька основних файлів, вам варто вказати декілька перекладених файлів, додавши їх до списку декількома використаннями цього параметра у одній команді. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Кодування символів файла, який містить дані перекладеного документа. .IP "\fB\-p\fR, \fB\-\-po\fR" 4 .IX Item "-p, --po" Файл, до якого слід записати каталог повідомлень. Якщо файл не вказано, каталог повідомлень буде записано до стандартного виведення (stdout). .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-o, --option" Додаткові параметри, які слід передати додатку форматування. Докладніші відомості щодо параметрів кожного з додатків можна знайти у документації до відповідного додатка. Наприклад, ви можете передати «\-o tablecells» до обробника AsciiDoc, а обробнику звичайного тексту можна передати «\-o tabs=split». .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Показати коротке довідкове повідомлення. .IP "\fB\-\-help\-format\fR" 4 .IX Item "--help-format" Список форматів документації, відомих po4a. .IP "\fB\-k\fR \fB\-\-keep\-temps\fR" 4 .IX Item "-k --keep-temps" Зберегти тимчасові основний файл \s-1POT\s0 і локалізований файл, які зібрано до об'єднання. Може бути корисним для визначення причини розсинхронізації, яка призвела до проблем із перетворенням у формат gettext .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" Вивести дані щодо версії скрипту і завершити роботу. .IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 .IX Item "-v, --verbose" Збільшити докладність повідомлень програми. .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Вивести деякі діагностичні відомості. .IP "\fB\-\-msgid\-bugs\-address\fR \fIадреса@електронної.пошти\fR" 4 .IX Item "--msgid-bugs-address адреса@електронної.пошти" Встановити адресу для звітування щодо помилок у msgid (початкових неперекладених рядках). Типово, у створених файлах \s-1POT\s0 не буде полів Report-Msgid-Bugs-To. .IP "\fB\-\-copyright\-holder\fR \fIрядок\fR" 4 .IX Item "--copyright-holder рядок" Встановити запис авторських прав у заголовку POTr. Типовим значенням є «Free Software Foundation, Inc.» .IP "\fB\-\-package\-name\fR \fIрядок\fR" 4 .IX Item "--package-name рядок" Встановити назву пакунка для заголовка \s-1POT.\s0 Типовою є назва пакунка «PACKAGE». .IP "\fB\-\-package\-version\fR \fIрядок\fR" 4 .IX Item "--package-version рядок" Встановити версію пакунка для заголовка \s-1POT.\s0 Типовим є запис «VERSION». .SS "Перетворення виконаного вручну перекладу до формату po4a" .IX Subsection "Перетворення виконаного вручну перекладу до формату po4a" \&\fBpo4a\-gettextize\fR намагається виконати видобування перекладів з перекладених документів і зберегти як записи msgstr їх до записаного файла \s-1PO.\s0 Майте на увазі, що можливості із розбору тексту у цьому процесі доволі обмежено: програма просто вважатиме N\-ий рядок із перекладеного файла перекладом N\-го рядка із початкового файла. Звичайно ж, нічого не вийде, якщо структура двох файлів є різною. .PP Перетворення до формату gettext найкраще працює, якщо ви плануєте отримати точну версію початкового документа, який було використано для перекладу. Навіть у таких випадках у вас може виникнути потреба у коригуванні основного файла та перекладених файлів для вирівнювання структури, якщо її було змінено початковим перекладачем. Тому радимо працювати із копіями файлів. .PP На внутрішньому рівні обробник po4a повідомляє про синтаксичний тип кожної з видобутих рядків. У цей спосіб можна виявити розсинхронізацію під час перетворення до формату gettext. У наведеному нижче прикладі, дуже малоймовірним є те, що 4\-й рядок у перекладі (типу «глава») є перекладом 4\-го рядка оригіналу (типу «абзац»). Найімовірніше, до оригіналу було додано новий абзац або два абзаци в оригіналі було об'єднано у перекладі. .PP .Vb 1 \& Оригінал Переклад \& \& глава глава \& абзац абзац \& абзац абзац \& абзац глава \& глава абзац \& абзац абзац .Ve .PP \&\fBpo4a\-gettextize\fR докладно повідомлятиме про усі виявлені розсинхронізації структури. Коли трапляється така розсинхронізація, вам слід виконати редагування файлів вручну для додавання фіктивних абзаців або вилучення частини вмісту у різних місцях, аж доки структура обох документів не стане однаковою. Нижче наведено деякі підказки, якщо допоможуть зберегти більшу частину наявного перекладу під час перетворення. .PP За сприятливих умов (тобто якщо обидва документи повністю збігаються за структурою), перетворення буде виконано без проблем, і воно триватиме декілька секунд. Якщо ж це не так, будьте готові до певної марудної роботи. Щоб там не було, пам'ятайте, що уся ця робота є платою за наступне комфортне використання po4a. Після перетворення синхронізація вмісту між основними документами і перекладами завжди буде повністю автоматичною. .PP Після успішного перетворення до формату gettext створені документи слід перевірити вручну для виявлення невідповідностей та помилок, які було пропущено програмою без повідомлень, як це описано нижче. .PP \fIПідказки і настанови щодо процедури перетворення до формату gettext\fR .IX Subsection "Підказки і настанови щодо процедури перетворення до формату gettext" .PP Коли таке трапляється, усе зводиться до повторного вирівнювання структури файлів вручну. \fBpo4a\-gettextize\fR доволі докладно повідомляє про те, що не так. Програма повідомить вам про рядки, які не збігаються, їхнє розташування у тексті та тип кожного з них. Більше того, дані \s-1PO,\s0 які буде отримано на момент помилки, буде записано до файла \fIgettextization.failed.po\fR для подальшого вивчення. .PP Ось декілька підказок, які допоможуть вам у цій марудній справі і збережуть більшу частину попереднього перекладу: .IP "\(bu" 4 Вилучіть усі зайві елементи перекладу, зокрема розділ із подяками перекладачам. Їх слід додати окремо до \fBpo4a\fR за допомогою додатків (див. \fBpo4a\fR\|(7)). .IP "\(bu" 4 Якщо потрібно редагувати файли для вирівнювання структури, варто надавати перевагу редагуванню файла перекладу. Справді, якщо зміни у початковому файлі є надто разючими, відповідність старої і нової версії все одно не буде встановлено під час оновлення \s-1PO,\s0 отже відповідний переклад все одно буде відкинуто. Але не варто відкидати і редагування початкового документа: важливо отримати початкову версію файла \s-1PO,\s0 яку можна буде виправити пізніше. .IP "\(bu" 4 Не вагайтеся і прибирайте з початкового файла усе, чого немає у перекладеній версії. Ці дані буде автоматично відтворено пізніше, під час синхронізації файла \s-1PO\s0 з документом. .IP "\(bu" 4 Вам, ймовірно, слід повідомити автора початкового документа про будь\-які зміни у структурі перекладу, які варто зробити. Якщо у оригіналі документа були вади, вам слід повідомити про них авторові. Виправлення цих вад у вашому перекладі буде корисним лише частині спільноти. Більше того, таке виправлення неможливе, якщо використовується система po4a ;) Втім, вам, ймовірно, слід зачекати до завершення перетворення до формату \fBpo4a\fR, перш ніж вносити зміни до початкових файлів. .IP "\(bu" 4 Іноді вміст абзаців збігається, але їхні типи є різними. Шлях виправлення цієї помилки залежить від формату документа. У \s-1POD\s0 і man поширеною причиною подібних проблем є те, що один з рядків починається із пробілу, а інший — ні. У таких форматах абзац із пробілом не можна переносити за рядками, отже він стає абзацом іншого типу. Достатньо вилучити пробіл, і усе запрацює. Також причиною може бути друкарська помилку у назві теґу у \s-1XML.\s0 .Sp Далі, у \s-1POD\s0 два абзаци може бути об'єднано, якщо рядок, який їх відокремлює містить пробіли, або якщо між рядком \fB=item\fR і вмістом запису немає порожнього рядка. .IP "\(bu" 4 Іноді між файлами виникає розсинхронізація, і переклад поєднується із помилковим початковим рядком. Це означає, що під час перетворення виникли якісь проблеми ще до розсинхронізованого рядка. Знайдіть у створеному \fIgettextization.failed.po\fR місце, де починається розсинхронізація, і виправте її. .IP "\(bu" 4 Інші проблеми може бути пов'язано із дублюванням рядків у початкових даних або у даних перекладу. Дубльовані рядки об'єднують у файлах \s-1PO\s0 із додавання двох або декількох посилань. Це спричиняє проблеми для алгоритму перетворення до формату gettext, якому потрібна однозначна відповідність між \fBmsgid\fR у основному і локалізованому файлах. Втім, маємо надію, що нещодавні версії po4a добре працюють із дублікатами рядків. Тому варто повідомляти розробникам про усі залишкові проблеми, з якими ви можете зіткнутися. .SS "Рецензування файлів, які створено \fBpo4a\-gettextize\fP" .IX Subsection "Рецензування файлів, які створено po4a-gettextize" Усі файли, які створено \fBpo4a\-gettextize\fR має бути переглянуто вручну, навіть якщо роботу скрипту буде завершено без помилок. Вам слід передивитися увесь файл \s-1PO,\s0 переконавшись, що \fBmsgid\fR і \fBmsgstr\fR є насправді відповідними. Необхідності у ідеальній правильності перекладу поки немає, оскільки усі записи буде все одно позначено як неточні. Вам слід лише виявити явні невідповідності, оскільки погана відповідність перекладів зашкодить на наступних кроках спроби зберегти їх. .PP На щастя, цей крок не потребує знання мови перекладу — вам слід лише виявити подібні елементи у кожному \fBmsgid\fR і його відповідному \fBmsgstr\fR. Якщо ви маєте певні знання з французької, англійської або німецької, ви можете робити це принаймні для європейських мов, навіть якщо не знаєте жодного слова з цих мов. Іноді невідповідність рядків для мов, які не записано латинкою, можна за довжиною рядка, структурами речень (кількістю знаків пунктуації) та іншими ознаками. Втім, варто залучити знавця мови для рецензування. .PP Якщо вами буде виявлено невідповідність, внесіть зміни до початкового файла або файлів перекладу, як і у випадку повідомлення \fBpo4a\-gettextize\fR про помилку, і повторіть спробу. Щойно ви досягнете добрих результатів для файла \s-1PO\s0 вашого попереднього перекладу, створіть його резервну копію, аж доки належним чином не запрацює po4a. .SS "Перший запуск \fBpo4a\fP" .IX Subsection "Перший запуск po4a" Найпростішим способом налаштовування po4a є створення файла налаштувань \fBpo4a.conf\fR і використання інтегрованої програми po4a (\fBpo4a\-updatepo\fR і \fBpo4a\-translate\fR вважаються застарілими). Будь ласка, ознайомтеся із розділом «ФАЙЛ НАЛАШТУВАНЬ» документації до \fBpo4a\fR\|(1), щоб дізнатися більше. .PP Під час першого запуску \fBpo4a\fR поточну версію основних документів буде використано для оновлення файлів \s-1PO,\s0 що містять застарілі переклади, які було збережено шляхом перетворення до формату gettext. На це можна знадобитися доволі багато часу, оскільки багато \fBmsgid\fR з перетворених до формату gettext даних не точно відповідатимуть елементам файла \s-1POT,\s0 який побудовано на основі поточних основних файлів. Це примушує gettext до пошуку найближчого відповідника з використанням складного алгоритму пошуку близьких за вмістом рядків. Наприклад, перший запуск програми для перекладу документації Perl французькою мовою (файл \s-1PO\s0 розміром 5,5 МБ) тривав 48 годин (так, два дні), а наступні запускати триватимуть лише секунди. .SS "Пересування ваших перекладів у робочий процес" .IX Subsection "Пересування ваших перекладів у робочий процес" Після першого запуску файли \s-1PO\s0 готові до рецензування перекладачами. Усі записи буде позначено як неточні у файлі \s-1PO\s0 програмою \fBpo4a\-gettextization\fR, примушуючи до ретельного рецензування до їхнього використання. Перекладачам слід переглянути кожен запис, щоб переконатися, що збережений переклад справді є перекладом поточного початкового тексту, оновити переклад, якщо це потрібно, і вилучити позначки неточного перекладу. .PP Щойно буде вилучено достатньо позначок неточного перекладу, \fBpo4a\fR почне створювати файли перекладу на диску, і ви зможете перенести результати робочої процедури до робочого пакунка. Деякі проєкти вважають за потрібне покладатися на weblate для координації роботи між перекладачами і супровідниками, але це вже не стосується використання \fBpo4a\fR. .SH "ТАКОЖ ПЕРЕГЛЯНЬТЕ" .IX Header "ТАКОЖ ПЕРЕГЛЯНЬТЕ" \&\fBpo4a\fR\|(1), \fBpo4a\-normalize\fR\|(1), \fBpo4a\-translate\fR\|(1), \fBpo4a\-updatepo\fR\|(1), \fBpo4a\fR\|(7). .SH "АВТОРИ" .IX Header "АВТОРИ" .Vb 3 \& Denis Barbier \& Nicolas François \& Martin Quinson (mquinson#debian.org) .Ve .SH "АВТОРСЬКІ ПРАВА ТА ЛІЦЕНЗУВАННЯ" .IX Header "АВТОРСЬКІ ПРАВА ТА ЛІЦЕНЗУВАННЯ" © \s-1SPI,\s0 inc., 2002–2022. .PP Ця програма є вільним програмним забезпеченням; ви можете поширювати її і/або вносити до неї зміни за умов дотримання \s-1GPL\s0 (див. файл \s-1COPYING\s0).