2
votes

I just created a language switcher in codeigniter where there are four types of languages user can select from:
1. arabic
2. english
3. french
4. german

I have created message_lang.php in all these folders like this :

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

This is the view file from where I am changing the language :

<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>

This is the 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');
        }
    }
}

This is the switch language function:

public function switchLang($language = "") {

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

    redirect($_SERVER['HTTP_REFERER']);

}

The language is changing but the url does not change for eg. this is the url :

http://localhost/ci_login/users  

But I want something like this :

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

How this can be achieved?

1
Have you set the htaccess? this might help you : Dealing with multi-language web-applications - Hasta Dhana

1 Answers

0
votes
<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>