Как настроить xgettext для перевода phtml файлов

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

Так как я рассказываю на этом сайте о Zend Framework, то перевод я осуществлял естественно при помощи Zend_Translate. Компонент Zend_Translate позволяет использовать несколько адаптеров для

перевода. Я же в основном до этого всегда использовал gettext — встроенный в php механизм для перевода текстов. Есть с ним ряд проблем, но в целом мне очень нравится работать с ним. Огромный плюс  — это, пожалуй,

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

строчки для перевода, а потом в случае изменения лезть в этот же самый файлик и ручками править. Удобно 😉

Но обычно я использовал перевод в .php файлах, поэтому никаких проблем у меня не возникало. Кстати, я использую gui программу для редактирования, называется она Poedit. Это редактор .po файлов (в них собственно и содержится перевод, плюс дополнительная инфа о том, кто перевел и т.д). Poedit использует консольную утилитку xgettext, которая ищет строчки в файлах для перевода.

Вот тут я и столкнулся с проблемой 😉 В Zend Framework по умолчанию используются шаблоны вида .phtml. И я долго удивлялся, почему при сканировании проекта не могу получить список строк для перевода.

Недолго думая, я залез в Установки — Парсеры, выбрал PHP и добавил .phtml в качестве еще одного расширения. Но тут получил следующую ошибку:

xgettext: warning: file `/var/www/soulex/application/modules/admin/views/scripts/error/error.phtml' extension `phtml' is unknown

Неизвестное расширение для xgettext, хотя я только что его прописал. Оказалось, что нужно дополнительно сообщить xgettext, что он имеет дело с php файлами при помощи опции

–language=PHP

Вот скриншот того, что получилось. Надеюсь заметка кому-нибудь пригодится и удачного перевода!

P.S. Завтра опубликую новый пост касательно Zend Framework 😉

4 мысли о “Как настроить xgettext для перевода phtml файлов

  • 14 марта 2012 в 13:23
    Permalink

    Спасибо 🙂

  • 5 февраля 2016 в 18:52
    Permalink

    Добрый день! обязательно ли сперва расставить метки во всех местах, где нужен перевод в phtm файлах?
    Или можно как то научить его выковырить все слова в po файл и расставить метки автоматом?
    Проект уже большой и хочется автоматизировать..

  • 6 февраля 2016 в 21:52
    Permalink

    Автоматом вряд ли получится выдрать произвольные слова. Инструмент можно настроить на определенные функции (по дефолту, _). Так что сначала придется обернуть все переводы в функцию.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *