Файл po. Расширение файла PO.

В этой статье поговорим о том, как создавать и подключать файлы перевода, и как затем переводить текст в плагинах и темах. Также, здесь я коротко рассмотрел некоторые теоретические моменты, частые ошибки, как работать с программой Poedit. Ну и дам некоторые советы касательно переводов.

Что переводить?

Прежде чем переходить к переводу, давайте определимся что нам нужно перевести, потому что это влияет на то, как нужно переводить.

Перевод темы/плагина из каталога WordPress

Для такого перевода нужно использовать сайт translate.wordpress.org . Что нужно сделать:

  1. Авторизоваться.
  2. Выбрать нужный язык перевода
  3. Найти плагин/тему которую нужно перевести.
  4. И прям на сайте переводить.
  5. После того, как ваш перевод будет проверен, в админке вашего сайта на WordPress вы уведите обновления перевода для плагина/темы.

  6. Обновляем. Перевод сделан!

Заметка: Не все плагины из каталога поддерживают перевод через translate.wordpress.org. В таких случаях переводить нужно как обычно (читайте следующий пункт).

Перевод темы/плагина НЕ из каталога WordPress

В этом случае, нужно:

Перевод своей темы/плагина

Как это делается и работает описано ниже в «Этап 1» и «Этап 2».

Если вы планируете размещать ваш плагин/тему в каталоге WordPress. То настоятельно рекомендуется делать перевод через translate.wordpress.org. Подробнее об этом (англ.) (подробности в этой статье не описаны).

Как работает перевод в WordPress (теория)

Начать надо с самого главного: файлов перевода: .mo .po .pot . PHP работает только с.mo файлом, .po и.pot - они для людей и программ перевода.

В WordPress для перевода используется только файл.mo . Во время генерации страницы этот файл подключается - из него создается PHP объект с переводами строк и помещается в память. Далее, при использовании функций перевода в коде, из этого объекта берется перевод запрашиваемой строки. Вот так просто это работает.

Таким образом, чтобы переводить строки в теме/плагине нам нужно:

Важно понимать , что при подключении.mo файла ему задается идентификатор (параметр $domain) и такой идентификатор (домен) указывается для функций перевода строк. Домен связывает файл.mo с функциями перевода. Т.е. при переводе, в функции мы указываем из какого MO файла нужно получить перевод указанной строки. Пример:

// подключаем MO файл перевода и указываем ему ID - mydomain: load_theme_textdomain("mydomain", get_template_directory() . "/languages"); // переводим - опять указываем ID - mydomain: _e("Comment:", "mydomain");

Этап 1: Создадим свой плагин и переведем его

Если у вас уже есть готовая тема/плагин и её простой нужно перевести, переходите сразу к переводу (этап 2).

Чтобы процесс перевода был понятен, давайте создадим очень просто плагин и переведем его на русский язык. Назовем плагин my-translation-demo . У нас должна получиться такая структура плагина:

  1. В папке плагинов WordPress создадим папку my-translation-demo: /plugins/my-translation-demo .
  2. В этой папке создадим папку lang: /my-translation-demo/lang .
  3. Создадим файл my-translation-demo.php: /my-translation-demo/my-translation-demo.php .
  4. Добавим следующий код в созданный php файл:

E() -

Ex() -

X() -

N(1) -

N(3) -

N(10) -

Nx(1) -

Nx(3) -

Nx(10) -

esc_attr__() -

esc_attr_e() -

esc_html__() -

esc_html_e() -

Плагин готов! Зайдем в админку, активируем плагин, перейдем на страницу плагина.

В плагине используются все функции перевода, которые есть в WordPress. А также подключается еще не существующий.mo файл перевода myl10n-ru_RU.mo . После создания.mo файла плагин будет переведен (его мы создадим ниже).

Обратите внимание на параметры при создании плагина. Их нужно указать правильно, чтобы на странице плагинов работал перевод для названия и описания плагина.

* Text Domain: myl10n * Domain Path: /lang

Также для этого мы добавляем Название и описание в функции перевода, чтобы парсер их нашел.

// строки для перевода заголовков плагина, чтобы они попали в.po файл. __("Demo WordPress translation"); __("Test plugin for learning how to create translations in WordPress");

Также WordPress использует параметр Text Domain: чтобы искать файл перевода в . Там файл должен называться ДОМЕН-ПЕРЕВОДА_ЛОКАЛЬ.mo .

Этап 2: Перевод. Создание.mo .po файлов

Чтобы создать MO файл, нам нужно иметь готовый PO файл, поэтому вся задача сводиться к созданию PO файла.

Вариантов создать PO файл несколько, тут мы рассмотрим работу с программой «Poedit». Для начала нужно скачать Poedit и установить его (бесплатная версия позволяет делать все что нам нужно).

Создать PO файл можно через Poedit, но мы создадим его нестандартно - так гораздо проще:


Перевод готов и работает. Если теперь зайти на страницу плагина, то все строки будут переведены:

Почему удобно создавать.po файл вручную, а не через программу Poedit?

Потому что так быстрее: в этом случае не надо указывать никаких настроек, можно просто скопировать код (из пункта 2) в.po файл, закинуть этот файл в Poedit, нажать «Извлечь из исходного кода», затем «ОК» и переводить. (настройки можно изменить в самом po файле, программа для этого не нужна).

А чтобы создать файл через Poedit нужно:

  1. Открыть Poedit.
  2. Выбрать: Файл > Создать... .
  3. В появившемся окне выбрать язык на который переводим.
  4. Окно просто пропадет, а мы сидим тупим "а что дальше то делать?".
  5. А дальше, нужно нажать на кнопку Сохранить , в появившемся проводнике найти папку темы зайти в папку lang , вписать название файла myl10n-ru_RU.po и нажать ОК.
  6. Окно опять пропадает, а мы дальше тупим "что теперь делать?".
  7. А теперь, нужно нажать кнопку: Извлечь из исходного кода . Откроется окно где нужно выставить настройки для PO файла. Все то что написано в коде для PO файла выше: название проекта, команда проекта, кодировки, папки где собирать строки перевода, ключевые слова для поиска строк перевода. В общем, тут надо будет повозиться и не ошибиться.

    После того как настройки выставлены жмем «ОК».

  8. Далее ждем пока, строки перевода собираются из файлов проекта и мы попадаем в окно перевода строк (скрин выше). Переводим строки, жмем Сохранить .
  9. Перевод и MO файл созданы!

Обновление перевода (при изменении кода)

Тут все предельно просто:

  1. Открываем Poedit .
  2. Закидываем в него любой PO файл из проекта и жмем «Обновить из кода» (кнопка на панели).
  3. Переводим новые строки и жмем «Сохранить» (кнопка на панели).
  4. Перевод обновлен! Можно закрыть Poedit.

Создание POT файла

Pot файл - это шаблон перевода. Это прям копия.po файла, только когда не переведена ни одна строка. Т.е. все строки перевода получены из файлов проекта, но еще ничего не переведено.

Из вышесказанного следует, чтобы создать POT файл нужно пройти всю процедуру по созданию.po файла, и под конец ничего не переводить, а зайти в Файл > Сохранить как и сохранить файл с расширением.pot .

Создать POT файл можно еще проще. Взять.po файл и поменять ему расширение на.pot . Это грубый метод, но такой файл с переведенными строками, тоже можно использовать как шаблон для создания перевода на любой язык (по крайней мере так работает Poedit).

Зачем нужен.pot файл?
Для того, чтобы был какой-то один файл, в котором всегда актуальные строки перевода. Чтобы использовать его как основу для создания перевода на очередной язык.

Например, если PO и MO файлы перевода размещаются в глобальную папку переводов, то мы не можем закинуть PO файл в программу и нажать «Обновить из кода», потому в PO файле скорее всего путь до файлов плагина будет неправильный (или его там вообще не будет) и строки перевода обновиться не смогут. В этом случае используется POT файл, который всегда должен лежать в папке плагина и при изменении кода в нем нужно обновлять строки перевода, так мы получим всегда актуальный шаблон строк перевода.

Если PO файл лежит в папке плагина, то POT файл не нужен, перевод можно создать из PO файла.

Подключение.mo файла перевода

Как подключить MO файл в плагине, уже есть в коде плагина выше. А тут я сделаю акцент на функциях WordPress для подключения этого файла. Функции:

load_plugin_textdomain($domain, false, $plugin_rel_path) Подключает MO файл из плагина. Обертка для load_textdomain() . Сначала ищет MO файл в общей папке переводов плагинов: /wp-content/language/plugins . Файл должен называться ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo . load_muplugin_textdomain($domain, $plugin_rel_path) Подключает MO файл из MU плагина . Обертка для load_textdomain() . Сначала ищет MO файл в общей папке переводов плагинов: /wp-content/language/plugins . Файл должен называться ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo . load_theme_textdomain($domain, $path) Подключает MO файл из темы. Обертка для load_textdomain() . Сначала ищет MO файл в общей папке переводов тем: /wp-content/language/themes . Файл должен называться ЛОКАЛЬ.mo (когда файл внутри темы) и ПАПКА_ТЕМЫ-ЛОКАЛ.mo (когда файл в общей папке). load_textdomain($domain, $mofile) Подключает MO файл из любого места (нужно указать полный путь до MO файла, вместе с названием файла).

Рассмотрим примеры подключения MO файлов.

Подразумевается, что код подключения будет расположен в основном файле плагина/темы или в файле, который находится в корневой директории плагина/темы. Если это не так, то __FILE__ нужно заменить на соответствующий путь.

// файл перевода плагина. // файл должен называться: ДОМЕН-ЛОКАЛЬ.mo, например: myl10n-ru_RU.mo add_action("plugins_loaded", function(){ load_plugin_textdomain("my-plugin", false, dirname(plugin_basename(__FILE__)) . "/languages")); }); // файл перевода MU плагина. // файл должен называться: ДОМЕН-ЛОКАЛЬ.mo, например: myl10n-ru_RU.mo load_muplugin_textdomain("my-plugin", dirname(plugin_basename(__FILE__)) . "/languages")); // файл перевода темы. // файл должен иметь название текущей локали, например: ru_RU.mo add_action("after_setup_theme", function(){ load_theme_textdomain("my_theme", get_template_directory() . "/languages"); }); // любой файл перевода // Подключаем файл.mo (название файла: ru_RU.mo или другое, зависит от локали) add_action("plugins_loaded", function(){ $mo_file_path = dirname(__FILE__) . "/lang/". get_locale() . ".mo"; load_textdomain("mytranslate", $mo_file_path); }

Не обязательно подключать функции на хуки, но в примерах я все же сделал как рекомендуется.

Заметка: если файл перевода размещается в , то эти функции можно не использовать. WordPress автоматически подключает файлы переводов из глобальной папки, опираясь на параметр Text Domain: в заголовке плагина.

Функций перевода

Как использовать функции перевода, уже есть в коде плагина выше. А тут я опишу каждую функцию (подробное описание читайте в описании функции).

__($text, $domain) Переводит указанный текст и возвращает его для обработки. _e($text, $domain) Переводит указанный текст и выводит его на экран. _x($text, $context, $domain) Переводит указанный текст с учетом указанного контекста и возвращает его для обработки. _ex($text, $context, $domain) Переводит указанный текст с учетом указанного контекста и выводит его на экран. _n($single, $plural, $number, $domain) Получает строку перевода единственного или множественного числа, ту которая соответствует указанному числу (1 комментарий, 2 комментария). _nx($single, $plural, $number, $context, $domain) Получает строку перевода единственного или множественного числа с учетом указанного контекста. _n_noop($singular, $plural, $domain) Функция пустышка. Аналог _n() . Используется когда нужно определить строки перевода для множественных числе, но использовать их где-то позднее в коде. Результат который возвразает функцию нужно обрабатывать функцией translate_nooped_plural() . Результат этой функции, например, удобно использовать в параметрах, когда мы заранее не знаем какое будет число и нужно сделать перевод позднее. _nx_noop($singular, $plural, $context, $domain) Тоже что _n_noop(), только с контекстом. esc_attr__($text, $domain) Перевод для значений атрибутов HTML тегов. Сокращение для esc_attr(__()) . esc_attr_e($text, $domain) Тоже что esc_attr__() , только сразу выводит результат на экран. esc_html__($text, $domain) Перевод текста в котором могут быть HTML теги. Сокращение для esc_html(__()) . esc_html_e($text, $domain) Тоже что esc_html__() , только сразу выводит результат на экран.

Ошибки при использовании функций перевода

#1 Нельзя использовать переменные/константы в параметрах функций перевода

Потому что программы умеют парсить только строки, но не переменные. Программы не анализируют что там в указанной переменной, а просто сканируют код как текст и вытаскивают строки для перевода...

// Да _e("Hello World!", "mydomain"); // Нет _e($string, "mydomain"); _e("Hello World!", $domain); _e("Hello World!", DOMAIN);

#2 Не используйте HTML в строках перевода (если это возможно)

Например, если указать

в строке перевода и переводчик ошибется, то HTML разметка может «сломаться». Или если указать ссылку , переводчик на её место может поставить свою, или просто неправильно её написать. Или любой HTML тег можно не закрыть и мы поймаем очень неприятный баг верстки.

В 90% случаев HTML теги можно и нужно выносить за пределы строки перевода, рассмотрим несколько примеров:

// Да echo "

". __("Hello World!", "mydomain") ."

"; // Нет _e("

Hello World!

", "mydomain"); // Да echo str_replace("
", "", __("See my portfolio", "mydomain")); // Нет _e("See my portfolio", "mydomain");

#3 Не делите фразу на отдельные слова

При переводе строк в программе по возможности должно быть понятно о чем речь. Но вот если разделить строку на части, отдельные слова могут стать не понятными:

// Да echo sprintf(__("I am %d today", "mydomain"), $years); // Нет echo __("I am ", "mydomain") . $years . __(" today", "mydomain");

#4 Не оставляйте пробелы в конце/начале строки (если это возможно)

При переводе пробелы на концах часто не заметны и их можно пропустить, в итоге после перевода будет «залипуха». Поэтому, лучше выносить пробелы в код.

// Да _e("Book name:", "mydomain") ." ". $book_name; // Да _e("Book name:", "mydomain") ." $book_name"; // Нет _e("Book name: ", "mydomain") . $book_name; В заключении

Термины связанные с переводом

Некоторые термины, которые нужно знать. Это самые основные (сокращением этих терминов в WordPress названы некоторые функции и хуки):

    Интернационализация (internationalization - i18n) - это весь комплекс функций и классов в ядре позволяющий переводить WordPress и его дополнения на разные языки.

    Локализация (localization - l10n) - это сам процесс перевода на разные языки.

  • Локаль (locale) - это связка языка и диалекта в регионе. Обычно под локалью понимается просто язык, допустим, русский. Но английский например может быть English (U.S.) или English (UK) - язык один, локали разные... Локаль определяется как КОД_ЯЗЫКА_КОД_СТРАНЫ (ru_RU) или код языка в стандарте ISO 639-3 (rus).
, только тут иерархия файлов перевода...

Общая папка переводов для:

  • плагинов /wp-content/languages/plugins/ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo .
  • тем /wp-content/languages/plugins/ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo .

В такие общие папки, например, загружается и обновляется перевод плагина, который находится в каталоге плагинов WordPress. Вы наверное видели переведенные плагины, в которых нет файлов перевода (это как раз эта тема). Как я писал в начале статьи плагины из каталога можно переводить через сайт translate.wordpress.org .

Заметка: если файл перевода есть в глобальной папке, то в плагине его подключать через функции load_(plugin/theme)_textdomain() не обязательно! WordPress автоматически его подключит, опираясь на параметр Text Domain: в заголовке плагина.

Плагин для перевода

Loco Translate - отличный плагин для создания перевода (.mo файла). Этот плагин полностью заменяет программу Poedit. Он позволяет создавать переводы для чего угодно тем, плагинов или отдельных MU плагинов. Плагин можно активировать, перевести что нужно и деактивировать чтобы не «мешался».

Если наша система не справляется с расширением.PO и подвели все автоматические и полуавтоматические методы обучения его этому искусству, остается ручное редактирование реестра Windows. Этот реестр хранит всю информацию, касающуюся рабоы нашей операционной системы, в том числе соединения расширений файлов с программами для их обслуживания. Команда REGEDIT вписанная в окне „поиск программ и файлов” или „запустить в случае старших версий операционной системы, предоставляет нам доступ к реестру нашей операционной системы. Все операции, проведенные в реестре (даже не очень сложные, касающееся расширения файла.PO) имеют значительное влияние на работу нашей системы, поэтому прежде чем проводить какие-либо модификации следует убедится, что сделана копия актуального реестра. Интересующий нас раздел - это ключ HKEY_CLASSES_ROOT . Следующая инструкция показывает, шаг за шагом, как модифицировать реестр, а конкретно запись в реестре, содержащую информацию о файле.PO.

Шаг за шагом

  • Нажмите кнопку “start”
  • В окне „найти программы и файлы” (в старших версиях системы Windows это окно „Запустить”) впишите команду „regedit” а затем утвердите операцию клавишей „ENTER”. Эта операция запустит системный редактор реестра. Этот инструмент позволит не только просмотреть существующие записи, но также провести их модификацию, добавление или удаление вручную. В связи с тем, что реестр системы Windows ключевой для ее работы, все операции, проводящиеся на ней, следует выполнять рассудительно и сознательно. Неосторожное устранение или модификация несоответственного ключа может необратимо повредить операционную систему.
  • С помощью комбинации клавишей ctr+F или меню Редактирование и опции „Найти” найдите интересующее вас расширение.PO, вписав его в окне поисковика. Утвердите, нажав OK или с помощью клавиши ENTER.
  • Запасная копия. Чрезвычайно важным является создание запасной копии реестра, прежде чем совершить в нем какие-либо изменения. Каждое изменение имеет влияние на действие нашего компьютера. В крайних случаях ошибочная модификация реестра может привести к невозможности повторного запуска системы.
  • Интересующее Вас значение, касающееся расширения, можно вручную редактировать изменяя ключи, приписанные к найденному расширению.PO. В этом месте Вы можете также самостоятельно создать нужную запись с расширением а.PO если такое отсутствует в реестре. Все доступные варианты находятся в подручном меню (правая кнопка мышки) или в меню "Редактирование" после размещения курсора в соответствующем месте на экране.
  • После окончания редактирования записи, касающейся расширения.PO закройте системный реестр. Введенные изменения войдут в жизнь после повторного запуска операционной системы.

При наличии на компьютере установленной антивирусной программы можносканировать все файлы на компьютере, а также каждый файл в отдельности . Можно выполнить сканирование любого файла, щелкнув правой кнопкой мыши на файл и выбрав соответствующую опцию для выполнения проверки файла на наличие вирусов.

Например, на данном рисунке выделен файл my-file.po , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл PO с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

Иногда простая переустановка Apache OpenOffice может решить вашу проблему, правильно связав PO с Apache OpenOffice. В других случаях проблемы с файловыми ассоциациями могут возникнуть в результате плохого программирования программного обеспечения разработчиком, и вам может потребоваться связаться с разработчиком для получения дополнительной помощи.


Совет: Попробуйте обновить Apache OpenOffice до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


Это может показаться слишком очевидным, но зачастую непосредственно сам файл PO может являться причиной проблемы . Если вы получили файл через вложение электронной почты или загрузили его с веб-сайта, и процесс загрузки был прерван (например, отключение питания или по другой причине), файл может повредиться . Если возможно, попробуйте получить новую копию файла PO и попытайтесь открыть его снова.


Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.


Если ваш файл PO связан с аппаратным обеспечением на вашем компьютере , чтобы открыть файл вам может потребоваться обновить драйверы устройств , связанных с этим оборудованием.

Эта проблема обычно связана с типами мультимедийных файлов , которые зависят от успешного открытия аппаратного обеспечения внутри компьютера, например, звуковой карты или видеокарты . Например, если вы пытаетесь открыть аудиофайл, но не можете его открыть, вам может потребоваться обновить драйверы звуковой карты .


Совет: Если при попытке открыть файл PO вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов PO, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов PO могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла PO . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать Portable Object. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл PO.


Если вы выполнили все описанные выше шаги , а ваш файл PO по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

Что это за файл - PO?

PO - это текстовый файл разработчика, в котором хранятся различные данные в зависимости от используемой среды разработки или операционной системы. PO-файлы используются для удаленных вызовов процедур, их легко поддерживать и адаптировать к потребностям пользователя.

PO-файлы могут содержать полезную информацию при разработке программного обеспечения, например, на Java. PO как ANS объектный файл может рассматриваться как переменная, функция или метод, функция, очень полезная в распределенном программировании. PO-файлы можно редактировать с помощью любого текстового редактора.

Программа(ы), умеющие открыть файл .PO

Windows
Mac OS
Linux

Как открыть PO файлы

Если появилась ситуация, в которой Вы не можете открыть файл PO на своем компьютере - причин может быть несколько. Первой и одновременно самой важной (встречается чаще всего) является отсутствие соответствующей аппликации обслуживающей PO среди установленных на Вашем компьютере.

Самым простым способом решения этой проблемы является нахождение и скачивание соответствующей аппликации. Первая часть задания, уже выполнена, - программы для обслуживания файла PO Вы найдете ниже. Теперь достаточно скачать и установить соответствующую аппликацию.

В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами PO.

Возможные проблемы с файлами в формате PO

Отсутствие возможности открытия и работы с файлом PO, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом Disk Image Format. Ниже находится список возможных проблем.

  • Повреждение открываемого файла PO.
  • Ошибочные связи файла PO в записях реестра.
  • Случайное удаление описания расширения PO из реестра Windows
  • Некомплектная установка аппликации, обслуживающей формат PO
  • Открываемый файл PO инфицирован нежелательным, вредным программным обеспечением.
  • На компьютере слишком мало места, чтобы открыть файл PO.
  • Драйверы оборудования, используемого компьютером для открытия файла PO неактуальные.

Если Вы уверены, что все перечисленные поводы отсутствуют в Вашем случае (или были уже исключены), файл PO должен сотрудничать с Вашими программами без каких либо проблем. Если проблема с файлом PO все-таки не решена, это может значить, что в этом случае появилась другая, редкая проблема с файлом PO. В таком случае остается только помощь специалиста.

Unix Static Object Code Library Format
.a2w Alice Program World Format
.actx DS Game Maker Action Description Format
.ada ADA Language Source Code Format
.addin Microsoft Visual Studio Addin Format
.ads Ada Package Specification
Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.

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

If your created PO file manually in a text editor, you need add information about your language and save the file with suffix .po. If you create the beginning of the PO file incorrectly, the PO file will not pass the syntax check and in the statistics will have violet color and zero translated and fuzzy strings.

Начало файла 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 , 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 \n" "Language-Team: LANGUAGE \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 , 2003. # Marcel Hilzinger , 2003. # Marcel Hilzinger , 2004. # Szabolcs Varga , 2004, 2005. # Kalman Kemenczy , 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: \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"

HOWTO по созданию PO файлов

Все что вам надо чтобы начать локализацию, это текстовый редактор, с помощью которого вы будете заполнять переводом пустые msgstr строки. Возможно, вам покожется более удобным использовать для этого специальные утилиты. Оригинальный английский текст в PO файлах начинающийся с msgid изменять нельзя.

Форматирование строк

Практически в каждом PO файле можно найти строки с форматированием. Большинство из которых содержит HTML -теги, иногда XML-теги, или другой язык форматирования. Все эти строки обязательно должны присутствовать в переводе, если вы их пропустите, то ваш перевод не пройдет проверку синтаксиса.

\n новая строка some_text жирный текст some_text курсивный текст

Употребление форм множественного числа

Строка POT файла, которая содержит слова употребляемые как в единственном, так и во множественном числе(мн.ч.), в зависимости от значения переменной:

Msgid "%1 second" msgid_plural "%1 seconds" msgstr "" msgstr "" Пример, где мн.ч. идентично ед.ч. (локаль zh_CN(китай)): msgid "%1 second" msgid_plural "%1 seconds" msgstr "%1 秒" Пример с одной формой мн.ч. (греческая локаль): msgid "%1 second" msgid_plural "%1 seconds" msgstr "%1 δευτερόλεπτο" msgstr "%1 δευτερόλεπτα" Пример с двумя формами мн.ч. (чешская локаль): msgid "%1 second" msgid_plural "%1 seconds" msgstr "%1 sekunda" msgstr "%1 sekundy" msgstr "%1 sekund"

В KBabel вы должны в первую очередь определить формы мн.ч., в свойствах проекта.

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

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

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