开发者

Codeigniter Change loaded language

Currently i have a language loaded inside MY_Controller开发者_如何学JAVA which extends CI_Controller. But inside a special page which controller (let's call it ABC controller) extends MY_Controller, I need to override the loaded language with another language. I tried loading another language inside this ABC controller, but unsuccessful. Is there a way to unload the loaded language and load another language?


an easier way is to reset the language data and is_loaded

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


I know it's a bit late to answer this but I think you can change the config item 'language' dynamically based on page requirement.

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

I had a requirement to send newsletters in users base lang, and this helped me change the language on the fly, hope this might help..


Have you tried just loading the language file you need?

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

It should be then accessible just like your default language. I haven't tested this tho, but from my understanding this should be the way to go about it.

Reference: http://codeigniter.com/user_guide/libraries/language.html


REVISED

I ended up digging a bit more for you, and found that you CANNOT load a default language (define it as default in your controller) and then later try to change it to something else.

Follow these steps:

  • If you need a language OTHER than english (default), set that in your config.
  • If you want to load ANOTHER language on a controller basis, you need to define that (most commonly in your constructor using something like session array / user selection.
  • You cannot load 2 languages (1 in the constructor, then another in a different class.. won't work!)

Reference here per forum posts: http://codeigniter.com/forums/viewthread/176223/


I encounter this problem and find a tricky solution.

$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__');

Hope it helps.


If you have any application installed built in codeigniter and you want add a language pack, just follow these steps:

  1. Add language files in folder application/language/arabic
  2. (I added arabic lang in sma2 built in ci)
  3. Go to the file named setting.php
  4. In application/modules/settings/views/setting.php you will find the array:
<div class="controls">

    <?php /*

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

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

      'spanish' => 'Español'

Now save and run the application.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜