2012-02-14 5 views
3

私はCIバージョン2.1を実行しており、最近CodeIgniter 2.1国際化i18n(オリジナル著者:JérômeJaglale)をインストールしました。コードの説明は次のとおりです:http://codeigniter.com/wiki/URI_Language_Identifier/CodeIgniter 2.1国際化i18n - ユーザデータが存在する場合にデフォルト言語を上書きする

これはうまく動作しますが、ユーザーがウェブサイトへの以前の訪問時に言語設定を変更した場合、デフォルトの言語を上書きしたいと思います(これはデータベースのテーブルに保存されます)。

私の質問は、どうしますか?

(デフォルト言語がロードされている)MY_Lang.phpは実際にCodeIgniter MY_Controllerより先に読み込まれるため、ユーザーが優先言語を持っているかどうかを見つけるためにデータベースを読み込むことができません。

デフォルトの言語は、ここでMY_Lang.phpに設定されている:私は事前に私の$this->session->userdata('language')

おかげにはアクセスできませんここにいるので

function default_lang() 
{ 
    $browser_lang = !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtok(strip_tags($_SERVER['HTTP_ACCEPT_LANGUAGE']), ',') : ''; 
    $browser_lang = substr($browser_lang, 0,2); 
    $default_lang = array_splice(array_keys($this->languages), 0,1); 
    return (array_key_exists($browser_lang, $this->languages)) ? $browser_lang : $default_lang[0]; 
} 

しかし、私はそれを上書きすることができません! HERE


ANSWER:あなたはMY_Lang.phpファイル内のCookieを読み取るためにネイティブPHPのクッキーを使用することができることが判明


。 Cookieヘルパーを使用しようとするとうまくいかないので、代わりに$ _COOKIEを使用し、コンテンツを取得する前に適切なフィルタを実行してください。その後

MY_Lang.phpにちょうどこの変更:それは私だった場合、私が代わりにデータベースでこれを保管のためにクッキーを使用したい

if($_COOKIE['int_lang']) { 
$preferred_lang = filter_var($_COOKIE['int_lang'], FILTER_SANITIZE_STRING); 
return (array_key_exists($preferred_lang, $this->languages)) ? $preferred_lang : $default_lang[0]; 
} 
else 
{ 
return (array_key_exists($browser_lang, $this->languages)) ? $browser_lang : $default_lang[0]; 
} 
+0

lang()メソッドでは、選択された "lang"の値を含むクッキーを送信するコードを追加する必要があることに注意してください。 – Henry8

答えて

2

:これに

return (array_key_exists($browser_lang, $this->languages)) ? $browser_lang : $default_lang[0]; 

を。それはより迅速かつ容易に管理できます。

ほとんどのユーザーは、少なくともすべてのCookieを消去するわけではありません。それはあなたの問題を解決するでしょう: "私は、データベースを読み込むことができませんユーザーが好きな言語を持っているかどうかを見つける"。ユーザーが設定した言語を取得し、あなたの言語のストレージに使用されるデータベースモデルをロードし、「post_controller_constructor」フックで http://codeigniter.com/user_guide/general/hooks.html

とロード:データベース記憶域が必要な場合は

、あなたはフックを使用して試みることができますあなたが望む言語ファイル。

+0

おかげでcondradk、やります! –

関連する問題