Poedit — перевод скриптов с поддержкой gettext

GNU headВ предыдущей записи я обещал, что расскажу, как с помощью Poedit заниматься переводом Zenphoto. С помощью этой же программы можно переводить все скрипты и программы, у которых фразы написаны при использовании технологии gettext, например: Wordpress, Zenphoto, Drupal, Gnome и многие другие.

Для начала разберемся, как действует gettext на примере Zenphoto. В исходном тексте скрипта все фразы написаны на английском языке, но обрамлены в специальную функцию:

echo gettext(”Welcome to Zenphoto! This page will set up Zenphoto on your web server.”);

Или более короткий вариант — символ нижнего подчеркивания:

echo _(”Welcome to Zenphoto! This page will set up Zenphoto on your web server.”);

При выборе локализации в панели администратора из файлов записанных по стандарту gettext берутся фразы на языке локализации и ставятся на место оригинальных. Если какая-то фраза не переведена, то на ее место ставится оригинальная.

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

Что же делает Poedit?
Она рекурсивно обходит каталог скрипта, собирает все фразы, которые обрамлены в теги gettext и записывает в специальный .po-файл. Далее этот файл открывается в удобном виде для перевода. После сохранения перевода Poedit создает .mo-файл.

.po-файл (от portable object) — текстовый, который непосредственно и переводят.
.mo-файл (от machine object) — бинарный файл, который использует скрипт/программа для подстановки перевода.

Почему Poedit?
Во-первых, программа Poedit с открытыми исходниками и кроссплатформенная. Дистрибьютив доступен для Windows, MacOS X и Linux-систем. Во-вторых, в статье по рекомендациям перевода Zenphoto она была показан в виде примера, на котором и строился мой перевод. Пример оказался понятным и удобным, смысла что-то менять не было.

Poedit и работа над Zenphoto

Poedit и работа над Zenphoto

С чего начать?
Скачайте последнюю версию Poedit с официального сайта, если требуется русский интерфейс, то и перевод. Скачайте последний перевод Zenphoto:
[download id="13"]
Далее откройте перевод в Poedit и редактируйте. Не забывайте постоянно сохраняться — иногда Poedit неожиданно закрывается с ошибкой и вся проделанная работа теряется.

Полученный результат присылайте мне на почту nalim [собака] 1nc.ru.

Удачного вам перевода!

Рубрики: Zenphoto

4 Responses to “Poedit — перевод скриптов с поддержкой gettext”


juker
27 Ноябрь 2008 в 12:53

Взялась переводить, но в “фоновом режиме”. Не знаю на сколько меня хватит :)

Еще раз большое спасибо автору!

nalim[1nc]
27 Ноябрь 2008 в 22:53

Если возникнут какие-либо трудности, то непременно обращайтесь.
Спасибо вам за помощь!

v01d.cmd
29 Июнь 2009 в 21:21

Я тут столкнулся с той самой проблемой что указана в конце =). Редиска Poedit убил мои переводы причем большое количество. Востоновив баланс инь и янь в моем организме я, педварительно выдохнув… Пошел в гугл.
И о ура!
Запрос: how to recover .mo from .po poedit
в http://forum.xda-developers.com/archive/index.php/t-327511.html
нашел
For converting MO to PO (PO a simple textual file) I used dxgettext-1.2.1 - http://heanet.dl.sourceforge.net/sourceforge/dxgettext/dxgettext-1.2.1.exe
For converting PO to MO - Poedit - http://garr.dl.sourceforge.net/sourceforge/poedit/poedit-1.3.9-setup.exe

Проще говоря чаще жмите save! и вслучае ситуации - ППЦ мона (когда poedit говорит о компроментации PO файла). Фишка в том что MO в этом состояни неповрежден от последней нормальной компиляции. и так конвертируем из него PO файл вставляем наместо битого. Но это не все. На этом этапе в MO ТОЛЬКО переведенный текс последнего нормального. сохранения. Открываем полученый PO файл при помощи poedit и жмем Update. Синхоризируется база перевода с корнем перевода и PO файл сохроняется.

Таким оброзом я востановил около 400 строк перевода.

Удачи всем!

v01d.cmd
29 Июнь 2009 в 22:45

Косяк найден!

В мем случае косяк т.е. ошибка заключался в попытке перевода строкой “%d result found.” poedit просто недает сохранить результаты… виноват ли в том символ “%d” - не беруст сказать, чтож буду скоро писать в комюнити мож что сделают по этому поводу.



Leave a Reply