在Codeigniter中选择其他语言时更改URL

时间:2019-04-04 13:54:39

标签: php codeigniter-3

我刚刚在codeigniter中创建了一个语言切换器,用户可以从以下四种语言中进行选择:
 1.阿拉伯语
 2.英语
 3.法语
 4.德语

我已经在所有这些文件夹中创建了message_lang.php:

$lang['welcome_message'] = 'أهلا بك';
$lang['welcome_message'] = 'Welcome'; 
$lang['welcome_message'] = 'Bienvenue';
$lang['welcome_message'] = 'Willkommen in CodexWorld';

这是我正在更改语言的视图文件:

<select onchange="javascript:window.location.href='<?php echo base_url(); ?>users/switchLang/'+this.value;">
    <option value="english" <?php if($this->session->userdata('site_lang') == 'english') echo 'selected="selected"'; ?>>English</option>
    <option value="french" <?php if($this->session->userdata('site_lang') == 'french') echo 'selected="selected"'; ?>>French</option>
    <option value="german" <?php if($this->session->userdata('site_lang') == 'german') echo 'selected="selected"'; ?>>German</option>  
    <option value="arabic" <?php if($this->session->userdata('site_lang') == 'arabic') echo 'selected="selected"'; ?>>Arabic</option>       
</select>
<p><?php echo $this->lang->line('welcome_message'); ?></p>

这是钩子:

class LanguageLoader
{
    function initialize() {
        $ci =& get_instance();
        $ci->load->helper('language');
        $siteLang = $ci->session->userdata('site_lang');
        if ($siteLang) {
            $ci->lang->load('message',$siteLang);
        } else {
            $ci->lang->load('message','english');
        }
    }
}

这是切换语言功能:

public function switchLang($language = "") {

    $language = ($language != "") ? $language : "english";
    $this->session->set_userdata('site_lang', $language);

    redirect($_SERVER['HTTP_REFERER']);

}

语言正在更改,但是url不会更改,例如。这是网址:

http://localhost/ci_login/users  

但是我想要这样的东西:

http://localhost/ci_login/users/en/  

如何实现?

1 个答案:

答案 0 :(得分:0)

<select id='cmbLanguage'>
   <option value="en">English</option>
   <option value="fr">French</option>
   <option value="gr">German</option>  
   <option value="ar">Arabic</option>  
</select>
<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
   $("cmbLanguage").on("change",function(){
       window.location.assign("<?= base_url()?>" + 'users/switchLang/' + $(this).val());
   });
</script>