openSUSE:Перевод PO файлов
Содержание
Что такое PO файлы
Все тексты что должны быть переведены (диалоги, меню и т.д...), сохраняется в PO файл. PO файл - это файл перевода для приложения, с расширением .po и со специальной структурой содержащей: информацию о языке, переводчике, оригинальные диалоги и их переводы. Оригинальные диалоги начинаются с msgid, за ними следуют строки msgstr "текст перевода". Информацию о языке и переводчике находится в начале PO файла. Если для диалога нет перевода, оставьте msgstr пустым. Строки начинающиеся с символа # являются комментариями.
Пример пустого перевода:
#: src/PackageCommands.cs:57 src/PackageCommands.cs:3181 msgid "Search for a match to any of the search strings" msgstr ""
Пример чешского перевода:
#: src/PackageCommands.cs:57 src/PackageCommands.cs:3181 msgid "Search for a match to any of the search strings" msgstr "Vyhledat výsledek odpovídající alespoň některému z řetězců"
Что такое POT файлы
Файл POT - это шаблон для перевода. Его структура похожа на структуру PO файла, но содержит только оригинальный английский текст, и нет информации о переводчике и языке. Из файлов POT создаются PO-файлы. Если вы создаете PO файлы вручную в текстовом редакторе, вам нужно добавить информацию о языке перевода и сохранить с расширением .po. Если вы создатите заголовок для PO файла неверно, такой PO не пройдет проверку синтаксиса и в статистике будет выделен фиолетовым цветом, обозначающим не переведенные, не распознанные строки.
Начало файла rug.pot:
# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-02 20:04-0400\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=CHARSET\n" "Content-Transfer-Encoding: 8bit\n"
Начало файла rug.hu.po:
# translation of hu.po to # Peter Breuer <comp@suselinux.hu>, 2003. # Marcel Hilzinger <hili@suselinux.hu>, 2003. # Marcel Hilzinger <marcel.hilzinger@suselinux.hu>, 2004. # Szabolcs Varga <shirokuma@shirokuma.hu>, 2004, 2005. # Kalman Kemenczy <kkemenczy@novell.com>, 2006. msgid "" msgstr "" "Project-Id-Version: hu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-06-08 12:58+0200\n" "PO-Revision-Date: 2006-06-08 17:26+0200\n" "Last-Translator: \n" "Language-Team: <hu@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.2\n" "Plural-Forms: nplurals=1; plural=0;\n"
С чего начать перевод PO файлов
Все что вам надо чтобы начать локализацию, это текстовый редактор, с помощью которого вы будете заполнять переводом пустые msgstr строки. Возможно, вам покожется более удобным использовать для этого специальные утилиты.
Оригинальный английский текст в PO файлах начинающийся с msgid изменять нельзя. Вы можете изменять только перевод. Если вы нашли ошибку в оригинальном английском тексте, пожалуйста используйте Bugzilla, что бы сообщить о ней. Весь не правильный текст сначала должен быть исправлен в исходном коде приложения, и затем сгенерирован новый POT файл.
Клавиши быстрого доступа
Есть два разных способа сделать клавиши быстрого доступа.
msgid "&Add..." msgstr "&Hozzáadás"
или
msgid "_Add" msgstr "_Hozzáadás"
Вы можете выбрать любой символ в строке перевода(т.е. можете поменять и расположение горячей клавиши), но если в исходной строке используется символ "&", то и в переводе должен быть использован символ "&"(то же и для символ "_"). Если в строку невозможно добавить клавишу быстрого доступа, используйте следующий способ:
msgid "&Add..." msgstr "新增(&A)"
или
msgid "_Add" msgstr "新增(_A)"
Переменные
Все переменные используемые в строке вставляются на место двухбуквенной последовательности, на первом месте которой символ "%", а на втором буква или число. Пример строки содержащей 1 переменную:
msgid "Automatic configuration via %s?" msgstr ""
Переменные обязательно должны присутствовать в переводе, если они содержатся в исходной строке.
Форматирование строк
Практически в каждом PO файле можно найти строки с форматированием. Большинство из которых содержит HTML-теги, иногда XML-теги, или другой язык форматирования. Все эти строки обязательно должны присутствовать в переводе, если вы их пропустите, то ваш перевод не пройдет проверку синтаксиса.
Примеры:
\n | новая строка | |
<b>some_text</b> | жирный текст | |
<i>some_text</i> | курсивный текст |
Употребление форм множественного числа
Строка POT файла, которая содержит слова употребляемые как в единственном, так и во множественном числе(мн.ч.), в зависимости от значения переменной:
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "" msgstr[1] ""
Пример, где мн.ч. идентично ед.ч. (локаль zh_CN(китай)):
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "%1 秒"
Пример с одной формой мн.ч. (греческая локаль):
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "%1 δευτερόλεπτο" msgstr[1] "%1 δευτερόλεπτα"
Пример с двумя формами мн.ч. (чешская локаль):
msgid "%1 second" msgid_plural "%1 seconds" msgstr[0] "%1 sekunda" msgstr[1] "%1 sekundy" msgstr[2] "%1 sekund"
В KBabel вы должны в первую очередь определить формы мн.ч., в свойствах проекта.
Некоторая информация о том как это работает здесь , правила преобразования для русского языка здесь.
Проверка синтаксиса
Перед направлением PO файлов в SVN, проверьте их синтаксис. Для этого используйте msgfmt с опцией -c и/или проверьте функциональность переведеного приложения.