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?