2011-08-17 5 views
6

Yii's I18n topicは私には不十分です。YiiフレームワークのためのI18nの基礎

私のソースlangはトルコで、ターゲットLANGは英語(例えば)

私のテストコントローラのindexアクション:

public function actionIndex() 
    { 
     Yii::app()->language='en'; 
     $this->render("index"); 
    } 

これは私のビューファイルの内容です:

echo Yii::t('test', 'Deneme'); 

そして、最後に、これは私の/messages/ja/test.phpファイルの内容です:

return array(
    'Deneme' => 'Example', 
); 

すべてOKです。復帰します。です。しかし、あなたが見ることができるように、私はのインデックスアクションに手動で言語を設定しています。どのように私はそれを自動的に行うことができますか?私はを追加する必要がありますYii :: app() - > language = 'en';すべての操作に?あなたはどのようにあなたのプロジェクトでl18nを使用していますか?

注:私はYiiとl18n noobですので、一歩一歩説明してください。

ありがとうございます。

答えて

5

あなたが追加、protected/config/main.phpCWebApplication:beginRequest()

でターゲット言語を設定する必要があります、保護/コンポーネントで

'onBeginRequest' => array('MyApp', 'beginRequest') 

をファイルMyApp.phpを作成し、このクラスを追加します。

class MyApp { 
    public static function beginRequest(CEvent $event) { 
    //set your language, theme, etc here 
    } 
} 

beginRequest()staticと宣言することを忘れないでください。そうしないと、次のようなエラーが発生します。
https://github.com/yiisoft/yii/issues/794

3

かなり簡単です。あなたはあなたが言ったようにすべての言語翻訳を行います。次に、親コントローラでは、initメソッドで、希望の言語をチェックして現在の言語を設定できます。そうすれば、あなたは一度だけあらゆる行動でそれを行う必要はありません。

関連する問題