同じエラーが発生しています。私の場合は少し異なり、コードを変更してから発生したにもかかわらず、スレッド化と関係があると思い始めています。
私は言語バーを持っています:
<?php
include_once (dirname(__FILE__) . "/resources/config.php");
?>
<div id='language_bar'>
<a style="margin-left:50px" href="./index.php?locale=es_ES">
<img src='<?php echo $config['paths']['images']['lang']?>/es_ES.gif'/>
</a>
<a href="./index.php?locale=en_UK">
<img src='<?php echo $config['paths']['images']['lang']?>/en_UK.gif'/>
</a>
<a href="./index.php?locale=de_DE">
<img src='<?php echo $config['paths']['images']['lang']?>/de_DE.gif'/>
</a>
</div>
そして、次の設定ファイル:
if (isset($_GET['locale'])) {
$locale = $_GET['locale'];
setcookie('locale', $locale, time() + 60 * 60 * 24 * 30);
} else {
if(isset($_COOKIE['locale'])) {
error_log('En _COOKIE');
$locale = $_COOKIE['locale'];
}
else {
$locale = $config['localization']['default_locale'];
setcookie('locale', $locale, time() + 60 * 60 * 24 * 30);
}
}
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
error_log('setlocale->'.setlocale(LC_ALL, "0")." Env ->". getenv("LC_ALL"));
error_log(_("Submit"));
私のメイン ページには、jQuery を介して対話し、カスケードでリロードする div がいくつかあります。場合によっては、(ランダムに) デフォルトの文字列値を与えるものもあります。
デフォルトではスペイン語 (es_ES) であり、数回クリックして div の更新を強制すると、一部の文字列が英語 (en_UK の元の文字列) で出力されます。そしてさらに。ドイツ語 (de_DE) に切り替えると、すべての文字列をドイツ語で取得する最初の更新の後、gettext はスペイン語で文字列を返し始め、しばらくすると英語で文字列を返します。
デバッグ行を php ログに追加したことに注意してください。彼らは本当に興味深いです:
物事がうまくいくと:
[Thu May 31 00:28:51 2012] [error] [client ::1] setlocale->es_ES Env ->es_ES
[Thu May 31 00:28:51 2012] [error] [client ::1] Aplicar, referer: xxxxxxxx/index.php
しない場合:
[Thu May 31 00:29:45 2012] [error] [client ::1] setlocale->es_ES Env ->es_ES, referer: xxxxxxxxx/index.php
[Thu May 31 00:29:45 2012] [error] [client ::1] Submit, referer: xxxxxxxx/index.php
したがって、_() 関数が失敗していると思います (私は常にエイリアスを使用しています)。念のため、関数を 10.000 回ループしたところ、翻訳中に 10.000 回のヒットまたは 10.000 回の間違いが発生したため、http 要求全体で失敗したり、失敗したりしません。
たくさん書いて申し訳ありませんが、正しい方向に向けて助けていただければ幸いです。(このエラーは、@ my localhost だけでなく、オンライン テスト サーバーでも発生します)
¿私がすべての接続にロケールを設定しているという事実と何か関係があるのでしょうか?
私のオンラインの「遊び場」は次のとおりです。
Linux server8.nixiweb.com 2.6.32-71.29.1.el6.x86_64 #1 SMP 月 6 月 27 日 19:49:27 BST 2011 x86_64
私のサーバー:
Linux filete 3.2.0-24-generic #39-Ubuntu SMP 月 5 月 21 日 16:52:17 UTC 2012 x86_64 PHP バージョン 5.3.10-1ubuntu3.1
両方とも64ビットであることに注意してください