2012-01-08 16 views
0

を国際化、私はある程度自分のCakePHPアプリケーションを国際化することができました -CakePHPの:下記の記事に基づいてWebアプリケーション

http://puskin.in/blog/2010/08/cakephp-manage-multiple-language-in-application/

私はこの機能を拡張し、ユーザーが保存できる機能を提供したいです彼のユーザープロフィールの優先言語。ユーザーがログインするたびに、私は好みの言語を使い、その言語でサイトのコンテンツを表示したいと思います。例 - Facebookの言語設定。言語を変更すると、Webサイトの静的コンテンツがその言語に変更されます。

また、ドロップダウンのルックアップ情報のような静的なデータがあります。 i18nをサポートするために、私のテーブルデザインはどのようにすべきですか?

コードスニペットやアイデアはありますか?

答えて

1

ユーザー言語設定の設定は簡単です。フィールドlanguageをユーザーテーブルに追加し、ユーザーがどこかに値を設定できるようにするだけです。あなたのアプリでは、あなたはConfigure::write('Config.language', 'eng')を使用してcore.phpのデフォルトの言語を設定し、どこか他にそれを上書きし、最高のAppController::beforeFilter中:

public function beforeFilter() { 
    if ($this->Auth->user('language')) { 
     Configure::write('Config.language', $this->Auth->user('language')); 
    } 
} 

これで、すべてのユーザーの選択した言語でケーキのL10N機能が出力内容の。

Cakeで扱われていない言語ロジックが必要な場合は、それを自分で実装する必要があります。私はあなたが持っている特定の懸念について新しい特定の質問を開くことをお勧めします。一般に、任意のカスタム言語ロジックをConfigure::read('Config.language')の値に基づいて作成します。たとえば、複数の言語で記述された商品がある場合は、Product hasMany Descriptionの関係を持つことができます。ここでは、それぞれDescriptionにフィルタリングするlanguageという属性があります。

+0

これはまさに私が探していたものです。そして、あなたの製品hasMany Descriptionsに来てください...あなたの好みの言語に基づいて言語コンテンツを検索する方法の例を提供できるでしょうか?あるいは私は新しい質問を開くことができました! – jagamot

+0

はい、十分にあなた自身の結論に達することなく問題を考えた後、新しい質問を開いてください。 :) – deceze

+0

ここに私の新しい質問です - http://stackoverflow.com/questions/8775649/cakephp-internationalizing-a-web-application-design-and-examples – jagamot

関連する問題