LINUX.ORG.RU

[po4a] Создание po-файлов для своих xml-файлов


0

0

Я занимаюсь переводом справки для програмы gretl (gretl.sf.net) - она
является частью проекта GNU, хотя и очень специализирована. Хочу
использовать для перевода launchpad.net - я так понял он принимает
только файлы .po Вот и хочу сделать для xml-файлов, из которых
создаётся справка для программы, po-файл.

Есть два xml файла со справкой по встроенным функциям -
gretl_commands.xml и genr_func.xml
(http://gretl.cvs.sourceforge.net/viewvc/gretl/gretl/doc/commands/).
Перевод (на другие языки он уже сделан, так что изменить что-либо в
процедуре вряд ли возможно) должен быть помещён в файлы
gretl_commands_ru.xml и genr_func_ru.xml. При этом в этих файлах
перевести надо только то что содержится внутри тегов <para></para> - и
любые теги внутри <para></para> за теги не считать и отдельно для
перевода не отмечать.

Как я понял самое адекватное решение для данной проблемы это po4a (http://po4a.alioth.debian.org/). Если кто-то может предложить другое решение - остальной тест поста лучше не читать.Я попытался сделать файл с конфигом для такого перевода:

[po4a_paths] doc/i10n/gretl_help.pot ru:doc/i10n/ru.po
[type: xml] doc/genr_funcs.xml ru:doc/ru/genr_func_ru.xml opt:"translated=<para> untranslated=<math>"
[type: xml] doc/gretl_commands.xml ru:doc/ru/gretl_commands_ru.xml opt:"translated=<para> untranslated=<math>"

и запускаю создание файла ru.po

$ po4a po4a.cfg
(4296 записей)
Отброшено doc/ru/genr_func_ru.xml (0 из 2278 строк; переведено только
0%; необходимо 80%).
Отброшено doc/ru/gretl_commands_ru.xml (0 из 5125 строк; переведено
только 0%; необходимо 80%).

Файл ru.po создаётся и если его изменить, то повторный запуск
переведённые строки видит (правда только если я делаю это при помощи
poedit - после изменения файла вручную po4a вылетает с ошибкой, ну да
это неважно).


$ po4a po4a.cfg
Отброшено doc/ru/genr_func_ru.xml (1 из 2278 строк; переведено только
0.04%; необходимо 80%).
Отброшено doc/ru/gretl_commands_ru.xml (0 из 5125 строк; переведено
только 0%; необходимо 80%).

Но проблема в том, что в ru.po есть строки вида

#. type: Content of: <commandlist><command><description><para><math>
#: doc/genr_funcs.xml:47 doc/genr_funcs.xml:54 doc/genr_funcs.xml:382
...
#: doc/gretl_commands.xml:1658 doc/gretl_commands.xml:2083
#, no-wrap
msgid "s"
msgstr ""

То есть для перевода отмечен текст из тега <math></math> вложенного в тег
<para></para> - этот текст переводить не нужно.

Кроме того есть и строки вида:

#. type: Content of: <funcref><funclist><function><description><code>
#: doc/genr_funcs.xml:64
#, no-wrap
msgid ""
...
"\t"
msgstr ""

То есть отмечаются для перевода и строки из тегов <code>, не вложенных в теги <para>

Не подскажите как можно сгенерировать po-файл (может быть как-нибудь по-другому)?


Уже всё понял.
Не хватало ключа -o, то есть вместо
[type: xml] doc/genr_funcs.xml ru:doc/ru/genr_func_ru.xml opt:"translated=<para> untranslated=<math>"

Надо
[type: xml] doc/genr_funcs.xml ru:doc/ru/genr_func_ru.xml opt:"-o 'translated=<para>' -o 'untranslated=<math>'"

еще очень полезно писать аргументы виды translated=i<qoute>
- это означает фактически, что <qoute> будет восприниматься как обычный текст внутри переводимого тега.

moradan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.