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 комментария 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
в
нашел
For converting MO to PO (PO a simple textual file) I used dxgettext-1.2.1 —
For converting PO to MO — Poedit —

Проще говоря чаще жмите 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

You must be logged in to post a comment.