2011-09-27 17 views
5

現在、私は、CI_Controllerを拡張するMY_Controllerの中にロードされた言語を持っています。しかし、コントローラー(ABCコントローラーと呼ぶ)がMY_Controllerを拡張する特別なページの中で、ロードされた言語を別の言語でオーバーライドする必要があります。このABCコントローラの中に別の言語を読み込もうとしましたが、失敗しました。ロードされた言語をアンロードし、別の言語をロードする方法はありますか?Codeigniterロードされた言語の変更

+0

この投稿の回答を確認するhttp://stackoverflow.com/questions/31895341/codeigniter-dynamic-language-functionality/41661355#41661355 –

答えて

3

必要な言語ファイルを読み込もうとしましたか?

$this->lang->load('filename', 'language'); 

それはちょうどあなたのデフォルトの言語のように、次にアクセスできる必要があります。私はこのthoをテストしていないが、私の理解から、これはそれについて行く方法でなければならない。

参考:http://codeigniter.com/user_guide/libraries/language.html


は、私は(あなたのコントローラのデフォルトとしてそれを定義する)あなたのためにもう少し掘り終わった、とあなたは、デフォルトの言語をロードできないことが判明

を改訂しました後でそれを他のものに変更しようとします。

は、次の手順に従います。

  • あなたが英語(デフォルト)以外の言語が必要な場合は、お使いの設定にすることを設定します。
  • あなたは、コントローラごとに別の言語をロードする場合は、セッションの配列/ユーザ選択のようなものを使用してconstructorで最も一般的に(それを定義する必要があります。
  • その後、2つの言語(コンストラクタで1を、ロードすることはできません別のクラス内の別のは..動作しません)ここにフォーラムの投稿につき

参考:!http://codeigniter.com/forums/viewthread/176223/

+0

はい、私は、拡張されたMY_Controller内にデフォルト言語(英語)を読み込んでいます他のコントローラ。私は、これもMY_Controllerを拡張しているこのABCコントローラ内の英語を上書きすることを望むが、英語のみがアクセス可能であることを希望する二次(中国語)言語の読み込みを試みた。 – coder

+0

私はあなたのコントローラを修正する必要があるように私の答えを更新した、1つのコントローラ(またはあなたが拡張コントローラ)で2つの言語を宣言することはできません。 – Jakub

+0

Cool thx。私は、ロードする言語を決定するために、MY_Controllerコンストラクターに別のオプションのパラメーターを実装する必要があると考えました。それは私の場合にはうまくいくはずです。努力のためのTHX! – coder

4

私はこの問題が発生し、トリッキーな解決策を見つける

$this->lang->load('text', 'english'); 
echo $this->lang->line('__YOUR_LANG_VARIABLE__'); 

//CI will record your lang file is loaded, unset it and then you will able to load another 
//unset the lang file to allow the loading of another file 
if(isset($this->lang->is_loaded)){ 
    for($i=0; $i<=sizeof($this->lang->is_loaded); $i++){ 
     unset($this->lang->is_loaded[$i]); 
    } 
} 

$this->lang->load('text', 'chinese'); 
echo $this->lang->line('__YOUR_LANG_VARIABLE__'); 

希望します。

+0

これは、同じキーを持つ言語ファイルを扱う場合の唯一の実用的な解決策です。 –

+0

チャームのように働きました!ありがとう! – Roomm

17

簡単な方法は、言語データをリセットすることであり、私はそれがこれに答えるために少し遅れて知っているが、私はあなたが設定項目「言語」動的ページの要件に基づいてを変更することができると思い

$this->lang->is_loaded = array(); 
$this->lang->language = array(); 
+1

は完璧に機能します!ちょうど私が探していたもの。 – JoshHighland

+1

偉大な答え、それをもたらすためのおかげで! – Ando

+0

これは私にとって完璧に機能します。ありがとう! – grpaiva

4

is_loaded。

$this->config->set_item('language', 'chinese'); 
$this->config->set_item('language', 'english'); // based on the language folder of course holding language files 

私は、ユーザーベースLANGにニュースレターを送信する必要があったが、これは私はこれが役立つかもしれない願って、その場で言語を変更助けました。..あなたはcodeigniterに建設され、あなたが言語パックを追加したいインストールされたアプリケーションを持っている場合は

+0

私のために働く:D ...これは受け入れられた答えでなければならない、私は信じて、それはすべての答えの中で最も簡単な解決策です。 –

-1

、次の手順に従ってください。

  1. application/language/arabic
  2. フォルダに言語ファイルを追加します(私は、CIに建てSMA2にアラビアLANGを追加しました
<div class="controls"> 

    <?php /* 

    $lang = array (
     'english' => 'English', 

     'arabic' => 'Arabic', // +++ Add this line 

     'spanish' => 'Español' 
012:あなたは、配列を見つけるでしょう​​で setting.php という名前のファイルに)
  • ゴー

    アプリケーションを保存して実行します。

  • 関連する問題