ユーザの役割によっては、私のZendプロジェクトに異なるテキストを表示する必要があります。Zendカスタム言語を翻訳する
- 通常のユーザーの場合、私は "en"言語を使用しています。
- 新しいユーザーには、「en_new」のようなものが欲しいです。
ただし、言語「en_new」は常に「en」に戻ります。
私はlocale_directoryスキャンシステムを使用して言語を自動的に検出しています。
ユーザの役割によっては、私のZendプロジェクトに異なるテキストを表示する必要があります。Zendカスタム言語を翻訳する
ただし、言語「en_new」は常に「en」に戻ります。
私はlocale_directoryスキャンシステムを使用して言語を自動的に検出しています。
翻訳アダプタはZend_Locale::findLocale()
をaddTranslation()
(少なくともZF 1.1x以上)で内部的に呼び出します。次に、ロケールがホワイトリストにあるかどうかがチェックされます。あなたは、明らかにそうではありません。私はコードを深く掘り下げませんでしたが、次のステップはen_xxx
からちょうどen
に戻ってしまう可能性があります。これはあなたのケースで起こることです。
はソースを参照してください:
library/Zend/Translate/Adapter.php
からaddTranslation
方法library/Zend/Locale.php
からfindLocale
方法私は現在、私はいくつかのテキストが異なって翻訳したい一部のユーザーのために、似たような評価をしています。また、カスタムロケール値を作成できないようにするために問題が発生しました。 私のテストで知ったことは、この問題を解決/回避することが難しいようです。
はこちらを参照:私は何をやっている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
を行う場合。 私のテストではこれまでのところ動作しましたが、まだ深く評価していません。
別のabbrでen_newを変更しようとしましたか? –