私は現在、フランス語と英語で利用できるようにする必要がある 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サーバーです