更改加载的语言


Codeigniter Change loaded language

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

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

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

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

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

我需要用用户基础语言发送时事通讯,这帮助我在飞行中改变了语言,希望这可能会有所帮助…

您是否尝试过加载所需的语言文件?
$this->lang->load('filename', 'language');

应该可以像默认语言一样访问。我还没有测试过这个,但从我的理解,这应该是去做的方式。

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


修订

我最后为你挖掘了一点,发现你不能加载默认语言(在你的控制器中定义为默认语言),然后再尝试将其更改为其他语言。

遵循以下步骤:

  • 如果您需要英语以外的语言(默认),请在配置中设置。
  • 如果你想在控制器的基础上加载另一种语言,你需要定义它(最常见的是在你的constructor中使用会话数组/用户选择之类的东西)。你不能加载两种语言(一种在构造函数中,另一种在不同的类中)。不会工作!)

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

我遇到了这个问题,并找到了一个棘手的解决方案。

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

希望能有所帮助。

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

  1. application/language/arabic文件夹中添加语言文件
  2. (我在ci内置的sma2中添加了阿拉伯语语言)
  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'