Как правильно перевести *.pot файл?
Если вы скачали себе cvs-копию пакетов, как рекомендовано на предыдущей
страничке, и сохранили их в каталоге, скажем,
~/kdecvs/, то у вас образовалась следующая структура каталогов:
~/kdecvs/kde-i18n/
- templates/
- docs/
- kdeaddons/
- kdeadmin/
- kdebase/
- ...
- kdeaddons/
- kdeadmin/
- kdebase/
- ...
- ru/
- docs/
- kdeaddons/
- kdeadmin/
- kdebase/
- ...
- messages/
- docs/
- kdeaddons/
- kdeadmin/
- kdebase/
- ...
- kdeaddons/
- kdeadmin/
- kdebase/
- ...
Всю эту структуру в одном дереве отображает менеджер каталогов KBabel.
Настроив его, вы уже не будете думать о том, куда выкладывать переведенный
файл - он сам поместится на нужное место и под правильным названием.
Допустим, координатор прислал вам на перевод файл appletproxy.pot по почте.
Вот что с ним надо сделать.
Настройки KBabel
В меню KBabel выбираем Settings->Configure KBabel... и попадаем в главный диалог настройки. Заполняем поля:
На вкладке Identity:
- Name - свое имя
- Email - свой мэйл
- Full Language Name - Russian
- Language Code - ru
- Language Mailing List - kde-rus@kde.ru
- Timezone - +0300 (это для Москвы, или укажите свою временную зону. Вообще-то это поле несущественно.)
- Number of singular/plural forms - 3 (Это число форм множественного числа в русском языке). См. об этом ниже.
На вкладке Save:
- Encoding: Default - UTF-8, флажок Keep the encoding of the file лучше снять.
На вкладке Catalog Manager:
- Base directory of PO-files:
~/kdecvs/kde-i18n/ru/messages/
- Base directory of POT-files:
~/kdecvs/kde-i18n/templates/
С остальными полями легко разобраться самому.
Заголовок
В *.pot файле видим:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2001-02-09 01:25+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: ENCODING\n"
Переводим это так (большинство полей правильно проставляет KBabel,
но часть надо поправить вручную):
# KDE3 - appletproxy.pot Russian translation.
# Copyright (C) 2000, KDE Team.
# Vasya Pupkin <pup@pp.ru>, 2000. -- Вася был первым
# Lesha Dubkin <dub@db.ru>, 2001. -- Леша принял эстафету
#
msgid ""
msgstr ""
"Project-Id-Version: appletproxy\n"
"POT-Creation-Date: 2001-01-06 01:26+0100\n"
"PO-Revision-Date: 2002-01-17 22:50+0300\n"
"Last-Translator: Lesha Dubkin <dub@dd.ru>\n"
"Language-Team: Russian <kde-rus@kde.ru>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 0.9.5\n"
Если это *.pot файл документации, то можем для солидности написать
первую строчку в виде:
# KDE3 - docs/appletproxy.pot Russian translation.
Но это уже несущественно.
Основная часть
Тело *.pot файла состоит из комментариев, начинающихся с #, и из сообщений msgid вида:
#: dvi_init.cpp:153
msgid "DVI file doesn't start with preamble."
msgstr ""
#: dvi_init.cpp:155
msgid "Wrong version of DVI output for this program."
msgstr ""
Что это за сообщения и откуда они берутся? Их ежедневно, примерно в 10:30
по московскому времени, создает скрипт, продирая исходники cvs-копии пакетов.
Он находит в исходниках функцию i18n() (или I18N_NOOP), аргументом которой и
служит переводимое сообщение. При запуске программы на другом языке вместо английского
сообщения подставляется его перевод, который и отображается на экране.
Если вы работаете в KBabel, то все ясно - переводите сообщения и следите,
чтобы не было ошибок. Если, например, не проставить акселератор, то KBabel отобразит это
сообщение красным цветом (как содержащее ошибку). При работе в обычном текстовом
редакторе нужно за этим следить самому.
Важно: Работая в KBabel, нужно следить, чтобы в конце переносимых строчек был пробел.
Версии KBabel свежее 0.9.4 сами отслеживают это и при нажатии Enter вставляют пробел перед
переносом строки, но вы можете его и обмануть (чего делать не надо :).
С-формат
Это строки с аргументами, в которые программа, например, подставляет числа.
Переводим, сохраняя аргументы, отмеченные знаком %:
#: font.cpp:157
#, c-format
msgid "Font file disappeared: %1"
msgstr "Файл шрифта %1 испарился"
Особые сообщения
Это сообщения, начинающиеся с поясняющей строки "_:
Нужно просто знать, что с ними делать.
- Сведения о переводчике или переводчиках в файле сообщений:
#: _translatorinfo.cpp:3
msgid ""
"_: NAME OF TRANSLATORS\n"
"Your names"
msgstr "Вася Пупкин,Леша Дубкин" -- через запятую, если не один
#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "pup@pp.ru,dub@db.ru" -- тоже через запятую
- Сведения о переводчике в файле документации:
ROLES_OF_TRANSLATORS переводим так:
<othercredit role=\"translator\"><firstname>Василий</firstname><surname>Пупкин</surname>
<affiliation><address><email>pup@pp.ru</email></address></affiliation>
<contrib>Перевод на русский</contrib></othercredit>
а CREDIT_FOR_TRANSLATORS так:
<para>Перевод на русский: Василий Пупкин
<email>pup@pp.ru</email></para>
Комментарии
#: thumbnails/thumbtoplevel.cpp:397
msgid ""
"_: width x height if preview is on\n" -- комментарий, который начинается с "_: и заканчивается \n". Его не переводим!
" %1x%2,"
msgstr ""
" %1x%2," -- переводим только содержательную часть
Множественное число
Это сообщения, для которых библиотека выбирает правильную форму
множественного числа ("один файл", "два файла", "десять файлов") по
числу, передаваемому в качестве параметра функции i18n (подробности см. в
kdelibs/kdecore/klocale.cpp):
#: kdecore/klocale.cpp:1314
#, c-format
msgid ""
"_n: %n directory\n" -- признак множ.числа, который начинается с "_n: и занимает две строки (в англ. две формы множ. числа).
"%n directories"
msgstr ""
"%n каталог\n" -- наличие \n здесь важно!
"%n каталога\n" -- и здесь тоже!
"%n каталогов" -- порядок "лог" - "лога" - "логов" важен! В русском три формы, поэтому нужно в переводе три строчки.
#: kdecore/klocale.cpp:1315
#, c-format
msgid ""
"_n: %n file\n"
"%n files"
msgstr ""
"%n файл\n"
"%n файла\n"
"%n файлов"
В русском языке три формы множественного числа, поэтому надо писать
три формы перевода.
Присылайте замечания по этому документу
Григорию Мохину.
Последнее изменение: 17 января 2002