国际化在本地而非远程工作

时间:2013-02-23 23:22:06

标签: php internationalization smarty gettext

我有一些有趣的问题,我使用gettext进行国际化。当用户选择某种语言时,假设'en'(对于英语),我使用了一些语言:

    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

奇怪的是,这在我的localhost中运行得非常好,但是当我在远程服务器上推送它时它会失败。如果失败,我的意思是在改变语言时没有处理翻译有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

您错过了en_US周围的引号:

@setlocale(LC_ALL, 'en_US');

除此之外,您可能必须检查托管环境(locale -a)上是否可以使用您要使用的区域设置。您可以按优先级顺序传递具有不同区域设置名称的setlocale个多个参数:

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

要检查区域设置是否已正确设置,请使用var_dumpexpected value