2

で最近いくつかの問題が発生した後gettext、それがどのように機能するか、および今後これらの問題を回避するにはどうすればよいかについていくつか質問があります。
私の問題は、ロケールをdeではなくに設定しようとしてde_DEいたことでした。これはサーバーでは利用できませんでした。私のローカル コピーはphp-gettextパッケージを使用していたので (パッケージは正しい用語ですか?)、システム上にないロケールを使用して満足していました。これにより、2 つの質問が発生しました。

  1. ディレクトリde_DE構造がlocales/de/LC_MESSAGES/file.po
  2. ロケールがインストールされていることを確認するにはどうすればよいですか? たとえば、 を使用したいが、それが利用できないので にde_DE.utf8フォールバックする必要がある場合de_DE、またはzh_HK利用できないので にフォールバックしたい場合zh_CN。これらは特殊なケースであることはわかっていますが、コードをできるだけ堅牢にしたいと考えています。明確にするために、これはlocale -aファイルがシステムで使用可能である場合ではなく、システムでロケールが使用可能である場合 (コマンドを使用して表示) です。

また、複数のプラットフォームでこれを機能させるためのベストプラクティスは何ですか? 私の現在のコードは次のとおりです。

$localeCode = 'de_DE'; // Example, would be generated
putenv('LANG=' . $localeCode);
putenv('LANGUAGE=' . $localeCode);
setlocale(LC_ALL, $localeCode);

$domain = 'mydomain'; // Again, example
// Don't load the locale from the cache
bindtextdomain($domain, '../locales/nocache');
bindtextdomain($domain, '../locales');
bind_textdomain_codeset($domain, 'UTF-8');

textdomain($domain);
4

1 に答える 1