目前我在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
中安装了任何应用程序,并且您想要添加语言包,请按照以下步骤操作:
- 在
application/language/arabic
文件夹中添加语言文件 (我在ci内置的sma2中添加了阿拉伯语语言) - 进入名为
setting.php
的文件在
application/modules/settings/views/setting.php
中,你会发现这个数组:<div class="controls">
<?php /*
$lang = array (
'english' => 'English',
'arabic' => 'Arabic', // +++ Add this line
'spanish' => 'Español'