0

私はこのリンクの指示にうまく従いました。今では私のウェブは「traslate()」呼び出しに「locale」を置く必要なしに多言語になっています。ただし、呼び出すたびにTextDomainを配置する必要があります。

    $this->traslate("Hello", __NAMESPACE__) //where __NAMESPACE__ is the text domain.

「traslate()」ヘルパーの各呼び出しに配置するのではなく、onBootstrapメソッドにTextDomainを設定したいと思います。setTextDomainメソッドを試しましたが、存在しません。誰かがそれをどのように知っていますか?

onBootStrapコードは次のとおりです。

   .....//Code for define $locale.
   $sm = $e->getApplication()->getServiceManager();
   $translator = $sm->get('translator');
   $translator->setLocale($locale);
   $traslator->SetTextDomain($textdomain);   //This line not work!!!!!
4

2 に答える 2

1

初めてこれを正しく見ませんでした。ZF2 I18N についての DASPRIDS プレゼンテーションでは、呼び出す正しい関数は次のとおりです。

$this->plugin('translate')->setTranslatorTextDomain('module-b');

これが正しく表示されていれば、それはビュー スクリプト内からのものです。ただし、ServiceManager からトランスレータを取得する - 私はこれをテストしていませんが、次のことを試してください。

$translator->getPluginManager()->get('translate')->setTranslatorTextDomain('foo');
于 2012-10-25T08:23:35.600 に答える
0

オーケー。一歩前進しました。

最初の解決策 (ビュー ソリューション) は問題なく動作します。現在、私の Web ページは、構成によって定義された Locale と TextDomain であるこのヘルパー パラメーターのみを使用してテキストを変換します。

$this->translate('HELLO');

しかし、2 番目の解決策は機能しません。名前が同じ場合、同じプラグインがビューで受け入れられ、onBootstrapでは受け入れられないため、わかりません。

onBootstrap コードを次のように書き直します。

    $translator = $e->getApplication()->getServiceManager()->get('translator');
    $pm = $translator->getPluginManager();   //until here works ok.
    $pm->get('translate');   //this throws an error message how if 'translate' not found.
于 2012-10-25T18:57:00.580 に答える