0

PHPのgettextに問題があります。私は2つのサーバーを持っています。1つはWindows(vs.phpを使用)でローカル(vs.phpを使用)で動作し、もう1つはAmazon EC2(Ubuntu 12.04更新)で、これは本番サーバーであり、このサーバーでは同じコードはありません。 tが見つかりました。

これは私のコードです:

これでgettextを初期化します。

function initialize_i18n($locale) {
    $locales_root = "./librerias/noAuto/locale";
    putenv('LANG='.$locale);
    putenv("LC_ALL=" . $locale);
    setlocale(LC_ALL,$locale);
    $domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/messages*.mo');
    if (count ($domains) > 0)
    {
        $current = basename($domains[0],'.mo');
        $timestamp = preg_replace('{messages-}i','',$current);
        bindtextdomain($current,$locales_root);
        bind_textdomain_codeset( $current, "UTF-8" );
        textdomain($current);
        if ($locale == "en_US")
        {
            if( _("Modificar") === "Modify" ) {
                $system->setDebug( "Translated correctly");
            } else {
                $system->setDebug( "Gettext don't working");
            }
        }
    }
}
initialize_i18n("en_US");

私のプロジェクトのすべてのファイルはUTF-8(スペイン語)でコード化されており、.moと.poはpoeditで生成されています。

apacheサービスをリロードしようとしましたが、機能しませんでした。

何か案が?

4

2 に答える 2

4

新しい日新しいアイデア!私には解決策があります!

私はあなたが同じ問題を抱えています、あなたはこのステップをチェックする必要があります。

1-あなたのLinuxにはこの言語がインストールされていますか?

これで確認できます:

 locale -a

言語がリストされていない場合は、それをインストールします。たとえば、次のようにしてenglshローカリゼーションをインストールできます。

 # aptitude install language-pack-en

そして、終了したらapacheを再起動します。

2-あなたの言語コードはPHPで正しくありますか?

ロケール-aを使用して言語コードのリストをリストした場合、たとえば、英語の場合に使用できる言語コードが表示されます。私のシステムは次のようにリストされています。[...] en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US .utf8 [...]私のエラーの1つは、「en_US.utf8」の代わりに「en_US」を使用したことです。

3-フォルダの言語コードは同じ名前です。(私の2番目のエラー)

PD>私の悪い英語でごめんなさい

于 2012-09-05T07:43:34.263 に答える
2

別の環境で機能しない場合は、主要な機能が正常に処理されているかどうかを確認する必要があります。

最初にbindtextdomain()とbind_textdomain_codeset()の戻り値を確認することをお勧めします。空白が返される場合は、PHPがメッセージリソースファイル(Ubuntuのみ)を見つけられないことを意味します。WebサーバーとPHPを実行しているUnixユーザーからのフォルダーとファイルのアクセス許可を確認できます。

于 2012-09-04T13:44:40.460 に答える