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

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

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

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

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

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

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

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

xgettext: warning: file /var/www/demo/application/modules/admin/views/scripts/error/error.phtml' extensionphtml' is unknown

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

–language=PHP

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

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

Leave a Reply

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *