Codeigniter更改加载的语言

时间:2011-09-27 01:54:09

标签: php codeigniter

目前我在MY_Controller中加载了一种语言,它扩展了CI_Controller。但是在一个特殊的页面中,哪个控制器(我们称之为ABC控制器)扩展了MY_Controller,我需要用另一种语言覆盖加载的语言。我尝试在这个ABC控制器中加载另一种语言,但不成功。有没有办法卸载加载的语言并加载另一种语言?

5 个答案:

答案 0 :(得分:18)

更简单的方法是重置语言数据并is_loaded

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

答案 1 :(得分:7)

我知道回答这个问题有点迟,但我认为您可以根据页面要求动态更改配置项“语言”。

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

我需要在用户基础上发送简讯,这有助于我动态更改语言,希望这可能有所帮助..

答案 2 :(得分: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__');

希望它有所帮助。

答案 3 :(得分:3)

您是否尝试过加载所需的语言文件?

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

然后应该像默认语言一样访问它。我没有测试过这个,但根据我的理解,这应该是解决问题的方法。

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


<强> REVISED

我最后为你挖了一些,发现你无法加载默认语言(在控制器中将其定义为默认语言),然后尝试将其更改为其他语言。

请按照以下步骤操作:

  • 如果您需要的语言不是英语(默认),请在配置中进行设置。
  • 如果您想在控制器的基础上加载另一种语言,您需要定义它(最常见的是constructor使用类似会话数组/用户选择的内容。
  • 你不能加载2种语言(在构造函数中为1,然后在另一个类中加载另一种语言..将无效!)

每个论坛帖子参考:http://codeigniter.com/forums/viewthread/176223/

答案 4 :(得分:-1)

如果您在codeigniter内置了任何应用程序,并且想要添加语言包,请按以下步骤操作:

     
  1. 在文件夹application/language/arabic
  2. 中添加语言文件   (我在ci中加入了sma2中的阿拉伯语lang)  
  3. 转到名为setting.php
  4. 的文件    在application/modules/settings/views/setting.php中,您将找到数组:
    <div class="controls">
    
        <?php /*
    
      $lang = array (
          'english' => 'English',
    
          'arabic' => 'Arabic',  // +++ Add this line
    
          'spanish' => 'Español'
    

    现在保存并运行该应用程序。