Изменить URL при выборе другого языка в codeigniter - PullRequest
2 голосов
/ 04 апреля 2019

Я только что создал переключатель языка в 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>

Этоhook:

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-адрес не меняется, например.это URL:

http://localhost/ci_login/users  

Но я хочу что-то вроде этого:

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

Как этого достичь?

1 Ответ

0 голосов
/ 05 апреля 2019
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...