Вот тестовый скрипт:
Код: Выделить всё
<?php
clearstatcache();
$locale=setlocale(LC_ALL, 'ru_RU.UTF8', 'ru_RU.UTF-8', 'ru_RU.utf8', 'ru_RU.utf-8', 'ru-RU.UTF8', 'ru-RU.UTF-8', 'ru-RU.utf8', 'ru-RU.utf-8', 'ru_RU', 'ru-RU', 'ru');
echo "locale: $locale\n";
bindtextdomain('hello', 'locale/');
bind_textdomain_codeset('hello', 'UTF-8');
textdomain('hello');
echo gettext("Hello world!\n");На моей машине (Debian wheezy) вывод такой, какой должен быть:
Код: Выделить всё
locale: ru_RU.UTF8
Привет, мир!На шаред-хостинге с FreeBSD 8.4:
Код: Выделить всё
locale: ru_RU.UTF-8
Hello world!Естественно, hello.mo лежит ровно в том же месте, а именно locale/ru/LC_MESSAGES/. В консоли всё работает:
$
Код: Выделить всё
$ TEXTDOMAINDIR=locale gettext hello 'Hello world!'
Привет, мир!
В логах тишина.
В phpinfo() говорится, что gettext enabled. ТП хостера потыкалась и ответила в том духе, что типа скажите, что у нас не так настроено - поправим.
Вопрос: и что же у них может быть не так настроено? Или это я что-то не так делаю?
Очевидные варианты "смени хостера" и "выкинь gettext" предлагать не обязательно, до них я в состоянии дойти своим умом.