1

ユーザの役割によっては、私のZendプロジェクトに異なるテキストを表示する必要があります。Zendカスタム言語を翻訳する

  • 通常のユーザーの場合、私は "en"言語を使用しています。
  • 新しいユーザーには、「en_new」のようなものが欲しいです。

ただし、言語「en_new」は常に「en」に戻ります。

私はlocale_directoryスキャンシステムを使用して言語を自動的に検出しています。

+0

別のabbrでen_newを変更しようとしましたか? –

答えて

1

翻訳アダプタはZend_Locale::findLocale()addTranslation()(少なくともZF 1.1x以上)で内部的に呼び出します。次に、ロケールがホワイトリストにあるかどうかがチェックされます。あなたは、明らかにそうではありません。私はコードを深く掘り下げませんでしたが、次のステップはen_xxxからちょうどenに戻ってしまう可能性があります。これはあなたのケースで起こることです。

はソースを参照してください:

  • library/Zend/Translate/Adapter.phpからaddTranslation方法
  • library/Zend/Locale.phpからfindLocale方法
0

私は現在、私はいくつかのテキストが異なって翻訳したい一部のユーザーのために、似たような評価をしています。また、カスタムロケール値を作成できないようにするために問題が発生しました。 私のテストで知ったことは、この問題を解決/回避することが難しいようです。

はこちらを参照:私は何をやっているCombining multiple translation sources

はちょうど私のデフォルトのものにカスタム翻訳を追加することです。

$translateDef = new Zend_Translate(
    array(
     'adapter' => 'gettext', 
     'content' => 'locale/default/', 
     'locale' => 'auto', 
     'scan'  => Zend_Translate::LOCALE_DIRECTORY 
    ) 
); 

$translateCust = new Zend_Translate(
    array(
     'adapter' => 'gettext', 
     'content' => 'locale/custom/', 
     'locale' => 'auto', 
     'scan'  => Zend_Translate::LOCALE_DIRECTORY 
    ) 
); 

$translateDef->addTranslation(array(
     'content' => $translateCust 
    ) 
); 

そして、フォルダ構造は次のようになります。

locale/ 
     default/ 
       de 
       en 
     custom/ 
       de 
       en 

だから、あなたの新しいユーザーのために、あなたは適切な翻訳にカスタムフォルダを追加することができますので、既存のものをovervwritesようだaddTranslationを行う場合。 私のテストではこれまでのところ動作しましたが、まだ深く評価していません。

関連する問題