Ubuntu で PHP 5.5.9 を使用すると、すべてが正しくセットアップされているにもかかわらず、gettext が機能しません。
gettext の設定に使用する行は次のとおりです。
putenv('LANG=es_ES.utf8');
setlocale(LC_MESSAGES, 'es_ES');
bindtextdomain('messages', './i18n');
bind_textdomain_codeset('messages', 'UTF-8');
textdomain('messages');
これには、必要なものがすべて含まれている必要があります。しかし、gettext は常にデフォルトのロケールの文字列 (渡された文字列) を返し、正しい翻訳を返すことはありません。
Callinglocale -a
には必要なすべての言語もリストされているため、これも正しく設定されています。
phpinfo()
gettext (およびintl
拡張機能) が正しくインストールされていることを証明します。
GetText Support = enabled
intl version = 1.1.0
ICU version = 52.1
ICU Data version = 52.1
もちろん、Ubuntuは再起動されています。
最後に、指定されたディレクトリには、gettext に必要な翻訳ファイルも含まれています。
要するに、すべてが正しく設定されているように見えますが、うまくいきません。
setlocale(LC_MESSAGES, NULL);
ただし、への呼び出しの前に追加するとsetlocale(LC_MESSAGES, 'es_ES');
、 gettext が突然機能します。
誰かがこれを説明できますか?OS と PHP のバージョンは最新ではありませんが、gettext がこのスタックで動作しなくなるバグについては知りません。
解決策は汚いハックのように感じられ、確かに私が安心して頼りにできるものではありません.