6

私は現在、フランス語と英語で利用できるようにする必要がある PHP Web アプリを開発しています。調べてみると、Gettext() 機能が最高のパフォーマンスを提供することがわかりました。

コマンドで .pot ファイルを生成しました

 xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot

.pot ファイルの生成に成功しました。PoEdit を使用して messages.po ファイルを生成し、messages.mo を作成しました。

ここに私のサーバーファイルがあります:

/app
    /locale
        /en_US
              /LC_MESSAGES
              messages.po
              messages.mo
        /fr_FR
              /LC_MESSAGES
              messages.po
              messages.mo
        template.pot

そして、私はこのようにphpファイルにロケールを設定します:

$language = $_SESSION['language'];  //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8'
setlocale(LC_ALL, $language);
bindtextdomain('messages', './locale');  
textdomain('messages');

しかし、翻訳ではなくラベルのみが表示されます...「fr_FR.UTF-8」の代わりに「fr_FR」とあらゆる種類の文字列を入れてみましたが、機能しません。

何か不足していますか?私のサーバーは、Apacheとphp5を備えたUbuntu 12.04サーバーです

4

2 に答える 2

7

Linux で .mo ファイルをコンパイルするには、サーバーとそれをコンパイルするマシンにロケールをインストールする必要があります。ロケールは、OS でサポートされている言語です。

このチュートリアルで述べたように : http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ Linux にインストールされているロケール

使用するロケールが Linux にインストールされていること、および .UTF-8 を使用していることを確認してください (i18n が必要なため、UTF を使用してください!)。

# Example for debian
dpkg-reconfigure locales

-- Linux に新しいロケールをインストールするには

システムに実際にインストールされている言語をリストします。

locale -a

fr_FR をインストールする例:

#List the available i18n locales
less /usr/share/i18n/SUPPORTED

ロケールをインストールします (ここでは fr_FR.utf8)

locale-gen fr_FR.utf8

システムのロケールを再構成する

sudo  dpkg-reconfigure locales

.mo ファイルを PoEdit で再コンパイルすると、うまくいくはずです。サーバーと .mo ファイルをコンパイルするマシンの両方にロケールをインストールしてください。

それが役立つことを願っています

于 2012-08-15T17:37:24.763 に答える
0

ブルーノが言ったことに加えて、Apache の設定をリロードすることを忘れないでください (例: service apache2 reload)。新しい言語/ロケールがインストールされたら、Apache 構成を再ロードする必要があることを見つけるためだけに、なぜ機能しないのかを見つけるために時間を無駄にしました。

于 2013-03-20T13:17:14.493 に答える