В настоящее время я разрабатываю веб-приложение PHP, которое должно быть доступно на французском и английском языках. Я осмотрелся и обнаружил, что функциональность Gettext() обеспечивает наилучшую производительность.
Я создал свой файл .pot с помощью команды
xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot
и успешно сгенерировал файл .pot. Я использовал PoEdit для создания файла messages.po и создал messages.mo.
Вот файлы моего сервера:
/app
/locale
/en_US
/LC_MESSAGES
messages.po
messages.mo
/fr_FR
/LC_MESSAGES
messages.po
messages.mo
template.pot
И я установил локаль в файле php следующим образом:
$language = $_SESSION['language']; //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8'
setlocale(LC_ALL, $language);
bindtextdomain('messages', './locale');
textdomain('messages');
но я вижу только метку, а не перевод... Я пытался поставить "fr_FR" вместо "fr_FR.UTF-8" и всевозможные строки, но это не работает.
Я что-то упускаю? Мой сервер - Ubuntu 12.04 Server с Apache и php5.