5

PHP と Smarty を使用して Web アプリケーションを開発しています。国際化のために gettext を使用していますが、問題があります。putenv+setlocale+bindtextdomain+textdomain でロケール (たとえば「de_DE」) をロードし、ページをリロードすると、「検索」が表示されます。もう一度リロードすると、「Suche」が表示されます。さらに2回リロードして「Suche」を取得しますが、3番目に「Search」を再度表示すると、「Search」が何度も表示され、突然「Suche」が再び表示されます...ランダムに。

Smarty のキャッシュを無効にしましたが、同じ問題です。私は Smarty が異なる言語、templates_c/en_GB、templates_c/de_DE などに対して異なるディレクトリを使用するように設定しました。コンパイルはそのようにうまく機能します。

テンプレートの翻訳には smarty-gettext を使用しています。

gettext と Smarty の使用に関する既知の問題はありますか?

編集していくつかの情報を追加します: Linux マシンでテストを実行しています:

Apache2 2.2.14

gettext 0.17

PHP 5.3.2

smarty 3-SVN$Rev: 3286

4

4 に答える 4

1

Xcache またはその他のオペコード キャッシャーをインストールまたは有効にしていますか? それらを無効にしてみてください。

于 2010-12-02T12:27:38.163 に答える
0

実際にロシア語を使用しているときにロケール「pt_BR」を使用しているときに同様の問題が発生するために使用されます。ロケールを「ru_RU」に設定することでこれを解決しました。これがお役に立てば幸いです。

これは実際に機能した私の構成です:

$directory = './locale';
$domain = 'smartybook';
$locale ="ru_RU";
setlocale(LC_ALL, $locale);
bindtextdomain($domain, $directory);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');

もう1つの重要な注意:msgfmt -c -v -o msgfmt-oを使用した後にのみ作業を開始するだけでは不十分でした。また重要です:フォーマットコマンドを発行するときはrootである必要があります。また、apacheを再起動することを忘れないでください。

于 2011-09-16T06:16:37.223 に答える
0

同様の断続的な問題がPHP gettextとvagrantでubuntuを実行していました

次のいずれかを試してください。ApacheでPHPを実行する方法に依存すると思います

sudo service php5-fpm restart

sudo service apache2 restart
于 2015-08-28T10:38:05.037 に答える
0

同じ問題が発生しています。ページに翻訳が表示される場合と表示されない場合があります。

しかし、私はバニラ PHP (Smarty なし) を使用しており、Mac OS X (Linux ではない) で実行しています。

私のコードは次のようになります:

$locale='fr_FR'; //...for example...
putenv("LC_ALL=$locale");
setlocale(LC_ALL,$locale);
bindtextdomain("messages","./locale");
bind_textdomain_codeset("messages","UTF-8");
textdomain("messages");

現在、問題を突き止めようとしています - 成功したらお知らせします。

于 2011-04-06T09:15:12.230 に答える