0

興味深い問題がいくつかあります。国際化の目的で 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

奇妙なことに、これはローカルホストでは完全に機能しますが、リモート サーバーにプッシュすると失敗します。失敗するとは、言語を変更するときに翻訳が処理されないことを意味します。

4

1 に答える 1

0

あなたは周りの引用符を逃しましたen_US:

@setlocale(LC_ALL, 'en_US');

それに加えて、使用したいロケールがホスト環境で利用可能かどうかを確認する必要がある場合があります ( locale -a)。setlocale異なるロケール名を持つ複数の引数を優先順に渡すことができます:

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

ロケールが適切に設定されているかどうかを確認するには、期待値var_dumpに対して使用します。

于 2013-02-23T23:35:05.937 に答える