2013-02-23 3 views
0

У меня есть какая-то интригующая проблема, я использую gettext для целей интернационализации. Когда пользователь выбирает какой-то язык, предположим, что «ан» (для английского языка), я использую некоторые это:Интернационализация работает локально, а не удаленно

putenv("LC_ALL=en_US"); 
    @setlocale(LC_ALL, 'en_US'); 

    $_SESSION['language'] = 'en_US.UTF8'; 
    $this->mySmarty->clearAllCache();//to clear the html parts that are stored in cache 

Странная вещь, что это работает прекрасно в моем локальном хосте, но терпит неудачу, когда я толкаю его на удаленный сервер. По ошибке, я имею в виду, что никакой перевод не обрабатывается при смене языка. Кто-то может помочь?

ответ

0

Вы пропустили кавычки en_US:

@setlocale(LC_ALL, 'en_US'); 

Кроме того, вы, возможно, придется проверить, имеется ли на принимающей среде (locale -a) локаль, который вы хотите использовать. Вы можете передать setlocale несколько аргументов с разными именами локалей в порядке приоритета:

setlocale(LC_ALL, 'en_US', 'en_US.utf8', 'en', 'english'); 

Чтобы проверить, если локаль правильно настроен использовать var_dump против expected value.

+0

Конечно, я отредактировал мой пост, наверняка пропустил цитаты при написании сообщения. И язык, который я хочу использовать, действительно существует – Newben

+0

Включен ли 'gettext' на сервере? –

+0

Я думаю, что это, как я могу проверить? Btw, я var_dumped язык, который я использую, и это кажется правильным ... – Newben

Смежные вопросы