【问题标题】:Internationalisation works in local, not in remote国际化在本地工作,而不是在远程工作
【发布时间】:2013-02-23 23:22:05
【问题描述】:

我有一些有趣的问题,我使用 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

奇怪的是,这在我的本地主机上运行良好,但是当我将它推送到远程服务器上时它失败了。失败是指更改语言时不处理任何翻译有人可以帮忙吗?

【问题讨论】:

    标签: php internationalization smarty gettext


    【解决方案1】:

    你错过了en_US周围的引号:

    @setlocale(LC_ALL, 'en_US');
    

    除此之外,您可能需要检查您要使用的语言环境是否在托管环境中可用 (locale -a)。您可以按优先级顺序传递 setlocale 具有不同语言环境名称的多个参数:

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

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

    【讨论】:

    • 当然我编辑了我的帖子,当然我在写帖子时错过了引号。而且我要使用的语言环境确实存在
    • 服务器上是否启用了gettext
    • 我认为是,我该如何检查它?顺便说一句,我 var_dumped 了我使用的语言环境,它似乎是正确的......
    • 我运行了 'which gettext',得到了 /usr/bin/gettext
    • 我的意思是php扩展,使用phpinfo()php -m来查找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2013-01-27
    • 2021-07-14
    相关资源
    最近更新 更多