Справочный центр

Правила разбора файлов
*.po, *.pot

Правила синтаксического разбора файлов *.po, *.pot для проекта локализации приложений
Исходные файлы
Назначение файлов:
.po файл - это файл перевода для приложения, с расширением .po и со специальной структурой содержащей: информацию о языке, переводчике, оригинальные диалоги и их переводы.
.pot файл — это шаблон перевода. Это копия .po файла (когда не переведена ни одна строка). Все строки перевода получены из файлов проекта, но еще ничего не переведено.
Пример исходного .po файла:
msgid ""
msgstr ""
"Project-Id-Version: app-name\n"
"POT-Creation-Date: 2014-07-21 17:20+0000\n"
"PO-Revision-Date: 2018-09-14 12:30\n"
"Last-Translator: employer <employer@company.domain>\n"
"Language-Team: Английский\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: new.com\n"
"Generated-By: Yii EMessage\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X- Poedit-Project: app-name\n"
"X- Poedit-Language: en\n"
"X- Poedit-File: /HelpDesk/app.pot\n"
"Language: en_US\n"

msgid "Сохранить"
msgstr "Save"

msgctxt "app"
msgid "Мы получили сообщение:"
msgstr "We received the message:"

msgid "%s day"
msgid_plural "%s days"
msgstr[0] "%s день"
msgstr[1] "%s дня"
msgstr[2] "%s дней"
msgstr[3] "%s дней"
Анализ
Оригинальные диалоги начинаются с msgid, за ними следуют строки msgstr "текст перевода". Информацию о языке и переводчике находится в начале *.po файла. Если для диалога нет перевода, msgstr остается пустым. Строки начинающиеся с символа # являются комментариями.

Основные параметры:

  • Project-Id-Version — название и версия проекта.

  • Last-Translator — имя и email переводчика.

  • Language-Team — название команды переводчиков.

  • Language — код языка, на котором содержится перевод в файле.

  • Plural-Forms — форма множественного числа.

Вспомогательные параметры:


  • X-Poedit-KeywordsList — названия и параметры функций, строки из которых будут взяты для перевода.
  • X-Poedit-Basepath — основная папка. Файлы в ней и в её подпапках будут просматриваться на наличие строк перевода. Две точки (..) означают, что основная папка находится на уровень выше папки текущего файла.
  • X-Poedit-SearchPath-0 — папки (относительно основной), в которых нужно просматривать файлы. Точка (.) означает, что нужно просматривать все файлы.
  • X-Poedit-SearchPathExcluded-0 —папка (относительно основной), где не нужно просматривать файлы.

Основные ключи с текстом рассмотрим на примерах ниже:
msgctxt "app"
msgid "Мы получили сообщение:"
msgstr "We received the message:"

msgid "%s day"
msgid_plural "%s days"
msgstr[0] "%s день"
msgstr[1] "%s дня"
msgstr[2] "%s дней"
msgstr[3] "%s дней"
Описание ключей:

1.msgctxt
a.Назначение: контекст.
b.Пример: app.
c.Пояснение: контекст указывается в строке msgctxt. Контекст может и не присутствовать.


2.msgid
a.Назначение: исходная строка или ключ.
b.Пример: Мы получили сообщение:.
c.Пояснение: исходная строка указана в строке msgid.

3.msgstr

a.Назначение: перевод.
b.Пример: We received the message:.
c.Пояснение: перевод указывается в строке msgstr.

4.msgid_plural

a.Назначение: исходная строка во множественном числе.
b.Пример: %s days.
c.Пояснение: исходная строка указана в строки msgid_plural.


5.msgstr[X]

a.Назначение: один из вариантов множественной формы.
b.Пример: %s дня.
c.Пояснение: строка перевода указывается в строке msgstr[X].

Процесс перевода:

  1. На основании одного из имеющихся .po файлов необходимо подготовить .pot файл, в котором будут только исходные строки с оригинальными текстами.
  2. Нужно перевести .pot-файлы. Мы предлагаем воспользоваться для перевода нашим онлайн-сервисом alingvo.
  3. Сервис:
    • загружает исходные файлы
    • преобразует их в строки для перевода
    • предоставляет удобный для переводчика интерфейс
    • формирует целевые файлы локализации
  4. Переименовать выгруженные .pot файлы в .po файлы.