gettextを使用してロケールの手間をかけないi18n?
-
06-07-2019 - |
質問
Webアプリケーションの多言語コンテンツを保存する標準準拠の方法を探しています。これまでは、独自の「translate()」を使用してきました。ファイルまたはデータベース内の辞書テーブルからデータを読み取る関数。ただし、Webアプリの異なるコピーを使用する場合、データベーステーブルで辞書を最新の状態に保つことは非常に面倒です。
多数のツールが利用できるため、gettextが好きです。ただし、さまざまなプラットフォーム用のアプリケーションを開発しています。私はsetlocale()とconsortsの安っぽい方法、つまり、それを機能させるために提供する必要のあるシステムごとに異なる数十の異なるロケール文字列のバリエーションを扱うことを絶対に望んでいません。決して。言語のセット(de、en、esなど)があり、適切な辞書をロードして、setlocale()またはbindtexdomain()に一度も触れずに_()を操作したい。
これはgettextを使用して何らかの形で可能ですか?または、できればPHP拡張機能を必要とせずに、.po / .moファイルを操作できるPHP用の別のシンプルで小さく高速な(!)i18nソリューションを誰かが知っていますか?
解決
他のヒント
このメソッドは、非標準ロケールでも機能するはずです:
$locale = 'someWeirdLocale';
putenv('LC_MESSAGES=' . $locale);
bindtextdomain('domain', './locale');
textdomain('domain');
お楽しみください
所属していません StackOverflow