2013-03-15 100 views
3

我正在开发多语言网站。 我在CI_Controller类文件中编写了以下代码,因此我无需将语言加载到每个控制器文件。在codeigniter中从类CI_Controller加载不同的语言

$this->lang->load('english'); 

问题是当我必须改变其他语言例如:让我们说西班牙语。

$this->lang->load('spanish'); 

如何在菜单选项中选择语言>英语/西班牙语时在这两种语言之间加载?

+1

我的建议是在会话中设置lang类型(英文/西班牙文)。然后将相应的lang加载到基本控制器构造函数中。 – mrsrinivas 2013-03-15 12:08:12

+0

如何在CI_Controller类文件中定义会话? – yajay 2013-03-18 04:19:40

回答

1

检查和加载

将此代码放在控制器constructor

$this->load->library('session'); 
$lang= $this->session->userdata('language'); 

if($lang != ''){ 
    switch($lang){ 
     case 'en' : 
      $this->lang->load('english', 'english'); 
      break; 
     case 'sp' : 
      $this->lang->load('spanish', 'spanish'); 
      break; 
    } 
} 

设置郎

将此代码放置在您设置lang

$this->session->set_userdata('language', '<set english or spanish>') 
+0

致命错误:调用第53行上的FILE PATH \ system \ core \ Controller.php中的非对象的成员函数userdata() 我想在system/core/contoller.php文件上设置语言,即CI_Controller类。 这样我就不必在所有的控制器文件中使用它了。 – yajay 2013-03-18 08:06:34

+0

只需在'config/autoload.php'中添加'$ this-> load-?library('session');'在顶部或在lirararies数组中添加'session' – mrsrinivas 2013-03-19 19:22:03

1

如果你有任何安装codeigniter的应用程序,或者你在制作1并且你想添加一些语言包,只需按照以下步骤操作:
1:在文件夹中添加语言文件application/language/arabic建于笨经理提前)
2:转到应用程序/模块/设置/查看/ setting.php文件名为setting.php这里ü找到阵列

<?php /* 

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

    'arabic' => 'Arabic', // i add this here 

    'spanish' => 'Español' 

现在保存并运行应用程序的工作罚款