2012-08-15 13 views
6

私は現在、フランス語と英語で利用可能なPHP Webアプリケーションを開発中です。私は周りを見回し、Gettext()機能が最高のパフォーマンスを提供することを発見しました。Gettext()を使用したPHP Webアプリケーションの国際化。

私はコマンドで

xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot 

を私.POTファイルを生成し、successfuly .POTファイルを生成しました。 私はmessages.poファイルを生成するためにPoEditを使用して作成した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サーバです

答えて

7

.moファイルをlinuxでコンパイルするには、サーバとそれをコンパイルするマシンにロケールをインストールする必要があります。ロケールは、お使いのOSでサポートされている言語です。このチュートリアルで述べたように

http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ あなたはロケールがあなたのLinuxにインストールされていることを確認し

ロケールは、あなたのLinuxにインストールされている使用することを、あなたは(.UTF-8を使用していることを確認してくださいあなたは、国際化がそうUTFを使用してくださいしたい):!

# Example for debian 
dpkg-reconfigure locales 

- Linux上で

リストを新しいロケールをインストールするには 言語は、実際にシステムにインストール:

locale -a 

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

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

お使いのシステム上のロケール

sudo dpkg-reconfigure locales 

があなたを再コンパイルロケール(ここではfr_FR.utf8)

locale-gen fr_FR.utf8 

再設定をインストールしますPoEditで.moファイルを作成する必要がありますトリック。 ロケールをサーバーとマシンの両方にインストールして、.moファイルをコンパイルすることを確認してください。ブルーノが言ったことに加えて

+1

実際、私はfr_FR.utf8を自分のコンピュータと私のサーバにインストールしていませんでした... これで動作します!助けてくれてありがとう。 –

0

を助け

希望は、Apacheの設定(例えば、サービスapache2のリロード)をリロードすることを忘れないでください。なぜそれが動作していなかったのかを知るために時間を無駄にしました。新しい言語/ロケールがインストールされたら、Apacheの設定を再ロードする必要があります。

関連する問題