2

gettextに問題があり、ユーザーがスペイン語で私のWebサイトにアクセスし、この言語の翻訳が利用できない場合、英語の翻訳の代わりに識別子が表示されますか?

これを回避する方法はありますか?

これが私のコードのいくつかの興味深い部分です:

$lc = 'es_ES.utf8';
putenv('LC_ALL='.$lc);
setlocale(LC_ALL, $lc);


$languageFileName = 'default';
bindtextdomain($languageFileName, ROOT_PATH.'/locale');
bind_textdomain_codeset($languageFileName, 'UTF-8');
textdomain($languageFileName);

そして、これが私の有向木です:

-en_US
--LC_MESSAGES
---default.mo
---default.po
-es_ES
--LC_MESSAGES
---default.mo
---default.po
-fr_FR
--LC_MESSAGES
---default.mo
---default.po

私はPHP5.4を使用しており、システムはフランス語であることに注意してください。

4

1 に答える 1

1

希望する翻訳が利用できるかどうかを確認し、利用できない場合は、代わりに特定のデフォルト ロケール (おそらく en_US) を設定します。

別のアプローチは、デフォルトの言語メッセージ (つまり、英語) を識別子自体として使用することです。システムが「識別子」を表示するたびに、ユーザーには自動的に英語のテキストが表示されます。

(2013-01-31 追加:)

ロケールを設定するには:

$locale = "en_US";

putenv("LANG=$locale");
putenv("LC_MESSAGES=$locale");
putenv("LC_NUMERIC=$locale");
putenv("LC_ALL=$locale");

$setlocale = setlocale(LC_MESSAGES, $locale);
$setlocale = setlocale(LC_TIME, $locale);
$setlocale = setlocale(LC_NUMERIC, $locale);
$setlocale = setlocale(LC_ALL, $locale);
于 2013-01-30T11:44:39.150 に答える