Настраиваем gettext в wordpress

Тот самый gettext, при упоминании которого меня уже начинает бросать в дрожь, оказывается, можно встроить в WordPress, и выиграть в производительности вашего блога.

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

Мои комментарии к статье:
1) Локаль не задавайте — умрут теги.
2) Объявите переменную LANG или LANGUAGE (в зависимости от платформы):

putenv("LANGUAGE=ru_RU");

Это нужно, чтобы gettext открыл папку вашего языка, например:
/wp-content/languages/ru_RU/LC_MESSAGES/default.mo

На этом наш сеанс магии заканчивается, до новых встреч!

gettext in smarty

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

Суть случая php+smarty такова:
Приложение содержит строки, требующие локализации, в следующем формате:

  • PHP: _("Текст для локализации") — пропущенные через функцию подчеркивание;
  • Smarty: {"Текст для локализации"|_} — вставленные в модификатор подчеркивание.

Далее под все платформы есть редакторы *.po файлов, позволяющие рекурсивно обходить папки с исходниками. Тип кода определяется по расширению, поэтому иногда требуется донастройка. Так как парсера для smarty я не нашел, то написал свой на php. Результат работы: Создается временный php-файл со строками из шаблонов, скармливается xgettext-у и в итоге все тексты отображаются в редакторе poedit, который уже сохраняет в .po-файл и компилирует его в .mo-файл (платформа windows).
Скрипт протестирован на php 5.2.3.
(далее…)