Проблемы с gettext

programmer_2006

Новичок
Ось kubuntu 10.04, PHP 5.3.2, Апач + Nginx
Модуль gettext включен.

Отображение ошибок(детальное) включено.
В логах пусто.

Права на файлы и папки есть.
Файлы существуют и доступны для чтения.

На маке(тех. директора), серваке, и винде(одного из разработчиков) все работает нормально.

У меня в одном из проектов где юзается gettext в связке с Zend Framework все ок и работает.

Настройка:
//self::$lang = 'fr'

putenv ('LANG='.self::$lang);

/*Эти строчки я для теста добавлял*/
putenv("LANGUAGE=" . self::$lang);
setlocale(LC_MESSAGES, 'fr');
setlocale(LC_ALL, 'fr');
/*End*/

//self::NLS_DOMAIN = 'myApp'
//$GLOBALS['LIB'].'locale' = /home/empl/Projects/PHP/Company/projectName/www/www.projectv2.com-sys/lib/locale
//self::$charset = 'UTF-8'

bindtextdomain (self::NLS_DOMAIN, $GLOBALS['LIB'].'locale');
bind_textdomain_codeset (self::NLS_DOMAIN, self::$charset);
textdomain (self::NLS_DOMAIN);

Методы возвращают нормальные данные.

В чем может быть трабла, не знаю куда копать. Может еще параметр какой должен стоять или может как то Nginx мешает работе или еще что то...

Буду благодарен за любую помощь.
 

programmer_2006

Новичок
Проблему то я не описал :)
Проблема в том, что ключи не обрабатываются. Т.е. gettext не работает, возвращает ключ.
 

programmer_2006

Новичок
Подсказали, что проблема может быть с локалью. В убунте у меня только русский и английский, французского нет. Но если ставлю self::$lang = 'en' тоже особого толку нет.
 

FractalizeR

Новичок
Если я правильно помню, gettext агрессивно кэширует запросы. Если даже вы перезапишете или удалите *.mo файл после того, как его один раз открыли, он все равно будет возвращать то значение, которое было считано в первый раз (или ключ, если его там не было вовсе). Единственный вариант очистки кэша - перезапуск процесса-хозяина php. В случае с mod_php + mpm_worker это может не происходить очень долго.

Не может у вас быть такой проблемы? Может быть, в первый раз *.mo был неполный, а кэш остался.
 

programmer_2006

Новичок
Да в этом тоже была проблема, но основная проблема была в том, что стандартные функции используют настройки локали из оси. В проекте для языков папки назывались en, ru, fr а локали у меня были ru_RU, en_US.utf.8 и т.д. Т.е. он не находил нужные папки. Пришлось в проекте папку en поменять на папку en_US а так же прописать в коде локаль en_US.utf.8 setlocale(LC_ALL, self::$lang.'.utf8'); // без этого не работало.
Конечно - это не большой костыль но как в линуксе добавить локаль en, ru и т.д. я не нашел.
 
Сверху