В процессе написания небольшого
скрипта на PHP решил, что будет хорошо, если скрипт будет поддерживать несколько языков.
По первому взгляду вопрос решается обычным ассоциативным массивом. Но в этом мире и без меня достаточно изобретателей велосипедов, поэтому следовало посмотреть
gettext. Инструмент мне понравился, особенно утилита
xgettext, но его настройка пока мне не дается.
Возникли таки проблемы:
- Хороший плагин для eclipse gted по-умолчанию формирует .po/.mo-файлы в папке
./locale/<код_языка>, а скрипт (считай модуль апача) подтягивает файлы из папки ./locale/<код_языка>/LC_MESSAGES. Неудобно то, что файлы приходится перекладывать.
- На моем EasyPHP файлы перевода подтягиваются только после перезагрузки сервера. Понятно, что для продакшн-сервера это будет неудобно.
- Ну, и никто таки не смог мне внятно объяснить смысл установки локали (setlocale) и переменной окружения (putenv, LANG). Этот вопрос явно мной недокурен в достаточной степени.
Если эти вопросы не решатся, то мой велосипед будет функцией, которая парсит .po-файлы. Удобно тем, что можно использовать тот же
xgettext, но не нужен отдельный модуль для Apache. С другой стороны быстродействие... Не знаю, не знаю...
P.S.: Кстати, для модуля
i18n, например для drupal, файлы перевода это только .po-файлы. К чему бы это?
P.P.S.: Я был прав насчет перегрузки сервера. Но есть
интересный хак при помощи которого можно обойти кеширование .mo-файлов. И с локалью все стало понятно.