0

私の ZF2 アプリケーションでは、ページの翻訳に使用された言語を取得したいと考えています。ZendSkeletonApplicationをベースとして使用します。Module.phpで、Localeを次のように設定します。

public function onBootstrap($e){
  $translator = $e->getApplication()->getServiceManager()->get('translator');
  $translator->setLocale(
      Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE'])
    )
    ->setFallbackLocale('en_US');
}

Zend\I18n\Translator\TranslatorからロケールfallbackLocaleを取得できますが、翻訳にどちらが使用されたかはまだわかりません。また、どの言語が実際にトランスレータにロードされているかを調べる方法もありません (私が見つけた限りではありません)。localeの翻訳が存在するかどうかをテストすることさえできません。

多分私はここで何かを逃しています。誰かがそれを指摘してくれることを願っています。

4

2 に答える 2

2

オプションの 1 つは、キャッシュ オブジェクトを取得し、キャッシュ キーを再作成してプライマリ ロケールの存在を確認することです。メソッドを見るloadMessages()と、キャッシュ結果には使用可能なメッセージのリストが含まれているようです。

それ以外の場合、翻訳関数は単に最初のロケールを試してからフォールバックを試みるようです。

于 2012-09-24T16:41:01.323 に答える
0

I decided to take the most simple approach. I translate the text of the language too.

于 2012-09-25T08:08:01.813 に答える