私はZend Framework 3アプリケーションを使用しています。zf3ユーザーの選択に応じてロケールが変更されます
私は私の\のconfig \のglobal.phpファイルでこのようにそれを設定している:
'translator' => [
'locale' => 'en_US',
'translation_file_patterns' => [
[
'type' => 'gettext',
'base_dir' => getcwd() . '/data/language/',
'pattern' => '/%s/general.mo',
],
],
],
私は「ロケール」それがうまく動作し、適切に.poファイルを見つけるの値を変更する場合。 データベースに保存されているユーザープロファイルの値に応じてロケールを設定できる必要があります。
ここではhttp://zendframework.github.io/zend-i18n/translation/のドキュメントとhttps://docs.zendframework.com/tutorials/i18n/のチュートリアルをチェックしましたが、説明や例をつけずにsetLocale()メソッドを記述するだけです。ここには同様のスレッドZend framework 2 : How to set locale globaly?がありますが、それはZF2のためであり、実際の解決策を提示するものではありません。
私の質問を要約すると、アプリケーション全体で有効になるように、どのようにしてsetLocale()メソッドを使うべきですか?$this->translate($message)
はすべてのビューファイルで、設定ファイルで使用されるデフォルトのロケールではなく新しいロケールを使用しますか?
ありがとうトーマス、これは本当に動作します、私も工場で試してみますが、私はそれにいくつかの助けを感謝します。私はフレームワークのツールがあれば、それを使うのがより一貫していると思います。私は他の誰かが何かを提案するチャンスを与え、誰もホップしない場合、あなたの答えを「受け入れられる」とマークします。もう一度ありがとうございました – Ivomasterche
私はちょっと答えを更新しました...それはちょっと長いIMOですが、多少混乱するかもしれません。 –
もう一度ありがとうございます。私は考えていると思います - 私たちは '$ this-> translate($ msg)'が呼び出されるたびに、この委譲者と呼ばれる(そしてロケールを設定する)翻訳者サービスを "ラッピング"していますか?残念ながら、私はそれを動作させることはできません、私はアプリケーションモジュールのmodule.config.phpに設定を追加して、私は/Application/src/Factory/TranslatorFactory.phpファイルでTranslatorFactoryクラスを作成しましたこれはすべてですか? – Ivomasterche