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 вы должны в первую очередь определить формы мн.ч., в свойствах проекта.

Некоторая информация о том как это работает здесь English flag.png, правила преобразования для русского языка здесь.


Проверка синтаксиса

Перед направлением PO файлов в SVN, проверьте их синтаксис. Для этого используйте msgfmt с опцией -c и/или проверьте функциональность переведеного приложения.


Ссылки