2015-10-13 19 views

回答

2

完成第以增加多语言

按照这个例子

application/config

$config['language'] = 'english'; //default Language 

然后在控制器application/language目录以作为eparate目录为每种语言

<?php 
$lang["msg_first_name"] = "First Name"; 
$lang["msg_last_name"] = "Last Name"; 
$lang["msg_dob"] = "Date of Birth"; 
$lang["msg_address"] = "Address"; 

然后

<?php 
class TestLanguage extends CI_Controller 
{ 
    public function __construct() { 
     parent::__construct();  
     $this->lang->load("message","english"); 
    } 

    function index() { 
     $data["language_msg"] = $this->lang->line("msg_hello_english"); 
     $this->load->view('language_view', $data); 
    } 
} 

lang->load()方法的第一个参数将是没有语言的文件名_lang后缀。第二个参数是可选的,是语言目录。如果在这里没有提供,它将指向你的配置中的默认语言。

我们可以使用lang-line()方法直接引用语言文件的条目,并将其返回给传递给视图模板的数据。在视图内部,我们可以使用上述语言信息作为$language_msg

对于视图内的这些文件,内部控制器可以使用相同的访问方法。

<?php 
$this->lang->line("msg_hello_english"); 

我们还可以使用下面的代码的支持下,语言助手的加载内部意见的语言输入,这让我们更清晰的代码。

<?php 
lang("msg_view_english"); 

分配语言加载的责任对钩

在CONFIG

$config['enable_hooks'] = TRUE; 

然后钩。PHP

<?php 
$hook['post_controller_constructor'] = array(
    'class' => 'LanguageLoader', 
    'function' => 'initialize', 
    'filename' => 'LanguageLoader.php', 
    'filepath' => 'hooks' 
); 

然后在应用/钩

<?php 
class LanguageLoader 
{ 
    function initialize() { 
     $ci =& get_instance(); 
     $ci->load->helper('language'); 

     $site_lang = $ci->session->userdata('site_lang'); 
     if ($site_lang) { 
      $ci->lang->load('message',$ci->session->userdata('site_lang')); 
     } else { 
      $ci->lang->load('message','english'); 
     } 
    } 
} 

不同语言

之间的切换在控制器

<?php 
class LangSwitch extends CI_Controller 
{ 
    public function __construct() { 
     parent::__construct(); 
     $this->load->helper('url'); 
    } 

    function switchLanguage($language = "") { 
     $language = ($language != "") ? $language : "english"; 
     $this->session->set_userdata('site_lang', $language); 
     redirect(base_url()); 
    } 
} 

然后我们需要定义链接来切换每种可用语言

<a href='<?php echo $base_url; ?>langswitch/switchLanguage/english'>English</a> 
<a href='<?php echo $base_url; ?>langswitch/switchLanguage/french'>French</a> 

当用户选择一个特定的语言,在LangSwitch类将分配选定语言的会话和用户重定向到主页

相关链接的switchLanguage()方法

  1. codeigniter.com Language Class Ver < 3.0
  2. codeigniter.com Language Class Ver 3.0 +
  3. Source
+0

你的方法不会添加到URL连接或Ru – MegaWm

+0

首先,你那么以后你可以改变它在' langswitch/switchLanguage/english'' –

+1

@Abdulla Np,任何时候。 :P – Tpojka