これは私が使用していますソリューションです:
コードをためPlugin.php
// BEGIN: Translate
$validLang = $this->getRequest()->getParam('lang');
$translate = new Zend_Translate('csv', 'data/lang/en.csv', 'en');
$translate->addTranslation('data/lang/ro.csv', 'ro');
if($validLang)
{
Zend_Registry::set('lang', $validLang);
$translate->setLocale($validLang);
}
else
{
Zend_Registry::set('lang', 'en');
$translate->setLocale('en');
}
Zend_Registry::set('translate', $translate);
// END: Translate
en.csv
front_user_menu-wall;Wall
コードのコードro.csv用
front_user_menu-wall;Perete
任意のZendのビューが
echo Zend_Registry::get('translate')->_('front_user_menu-wall');
そして、いくつかの説明ファイルのコード:フォルダのデータ/ LANGで
を私は2つの.CSV翻訳ファイルを持っています。構造は自明ですが、セミコロン(;)は変数名(front_user_menu-wall)と変数値(Wall)を区切ります。各変数は新しい行に置く必要があり、内部に行コメントを付けることができます(例:#これはコメントです)。 ro.csvファイルはルーマニアの翻訳ファイルですが、構造は同じですが、明らかに変数の値が異なります。
インサイドPlugin.phpあなたは、コードの次の2行に
$validLang = $_GET['lang'];
ため
$validLang = $this->getRequest()->getParam('lang);
のZend相当するものがあり、私たちは2、翻訳の.csvファイルを使用して、新しいZend_Translateのクラスをインスタンス化します。次に、$ validLangが空でないかどうかをチェックし、そうでなければZend_Registry lang変数(Zend_Registryは$ _SESSIONと似ています)を変換ファイルに設定します。 $ validLangが空の場合、デフォルトの翻訳は英語になります。
あなたは上記のすべての手順を行った場合、あなたは今、英語やルーマニア語の翻訳を取得するには
Zend_Registry::get('translate')->_('front_user_menu-wall');
をエコーすることができます。
問題を解決するコードを提供するときには、人の読書がその違いを理解するために行ごとに精神的に解析する必要がないように、動作の仕方について少なくとも簡単な説明を与えることが最善です。 – Fluffeh