1

誰かがこの問題で私を助けてくれることを願っています。私のウェブサイトは、ドイツ語、フランス語、スペイン語、英語にローカライズされています。すべてが正常に動作しているように見えますが、テスト中および多くの場合散発的に、ローカライズされたテキストは表示されず、文字列コード以外は表示されません。画像は言語固有であり、常に表示されるため、変数 $language が正しく設定されています。

私が使用しているコードは次のとおりです。

// I18N support information here
putenv("LANG=" . $language); 
setlocale(LC_ALL, $language);

// Set the text domain as "messages"
$domain = "messages";
bindtextdomain($domain, "./locale"); 
bind_textdomain_codeset($domain, 'UTF-8');

textdomain($domain);

私が気づいているように見えることの1つは、この問題がフォーマットのページでのみ発生することです: http://example.com/product/product_name.phpフォーマット のページで常に機能しますhttp://example.com/page.php

誰でも助けてくれたり、デバッグ方法の詳細を教えてくれたりできますか

4

2 に答える 2

0

bindtextdomainへのパスが正しいことを確認する必要があります。ブートストラップファイルでこれをお勧めします:

define('ROOT_PATH', dirname(__FILE__));

そして、あなたのスクリプトで

bindtextdomain($domain, ROOT_PATH . '/locale');

この方法では、 などのサブフォルダーに入った場合、フォルダー内のフォルダーproduct/product_name.php bindtextdomainを見つけようとしません。localeproduct

于 2012-11-05T23:50:20.547 に答える
0

ありがとう、ニコラオス!私は同じ問題を抱えていましたが、解決策は bindtextdomain の2番目のパラメーター内で常に絶対パスを使用することです

于 2021-09-30T07:52:33.610 に答える