私のphpプロジェクトには次のファイルがあります:
libraries/locale/es_ES/LC_MESSAGES/messages.po
libraries/locale/es_ES/LC_MESSAGES/messages.mo
libraries/locale/es/LC_MESSAGES/messages.po
libraries/locale/es/LC_MESSAGES/messages.mo
どちらも PoEdit で編集された同じファイルで、Catalog->Properties->Language (それぞれ es と es_ES) が異なるだけです。
そして、このコードを localization.php ファイルに
$language = "es_ES.UTF-8";
putenv("LANG=$language");
setlocale(LC_ALL, $language);
bindtextdomain(STRING_DOMAIN, LOCALE_PATH);
textdomain(STRING_DOMAIN);
echo "Test translation: "._('string to translate');
このコードは正常に機能し、「翻訳する文字列」が正しく表示されます。ただし、一般的な「es」コードを使用しようとすると:
$language = "es.UTF-8";
...文字列は翻訳されません。私のubuntuにインストールされているロケールに関連しているようです(es_ES.utf8は存在しますが、es.utf8は存在しません)
gettext に es.UTF-8 ファイルを強制的に使用させることはできますか?