首先加载配置文件,因此从那里选择默认语言。 但我需要通过按钮点击动态更改默认语言。我怎样才能做到这一点? 在我的控制器中我有
public function __construct()
{
parent::__construct();
$this->config->set_item('language', 'japanese');
$this->load->helper('language');
$this->lang->load('fileimport');
var_dump(lang('message_missing_csvfile_import'));
}
这将以日语显示值
config.php如下:
$config['language'] = 'english';
autoload.php如下:
$autoload['language'] = array(
'application'
);
我的观点如下:
<form action ='<?php echo current_url(); ?>' enctype =
'multipart/form-data' method ='post' name="formtest" id="formtest">
<div>
<select id="main_language" name ="main_language">
<option>English</option>
<option>Japanese</option>
</select>
<input id="main_lang_button" type="button" value="Set Main Language">
</div></form>
答案 0 :(得分:2)
从表单中获取值后,将其放入cookie中。这样的事情:
/* form validation here */
// ...
// After you know it's a valid value:
setcookie('language', $_POST['main_language'], 0, '/');
然后在 application / config / config.php 中使用该cookie:
$allowed_languages = array('English', 'Japanese');
if (isset($_COOKIE['language']) && in_array($_COOKIE['language'], $allowed_languages, true)) {
$config['language'] = strtolower($_COOKIE['language']);
} else {
$config['language'] = 'english';
}
请注意,您还需要验证Cookie。无论您是否设置它,它都是仍用户输入。
当然,此配置默认为“英语&#39;根据您仍在处理表单的请求。只需确保在设置Cookie后进行重定向,您就可以解决该问题。
答案 1 :(得分:1)
您可以针对您的问题尝试此解决方案。
请更改My_controller以进行语言更改。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
if(!$this->session->userdata('language')) {
$this->session->set_userdata('language','japanese');
}
$this->lang->load('language_name',$this->session->userdata('language'));
}
} ?>
您可以为语言添加设置会话任何您的控制器为ex。 仪表板控制器。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function change_language($lang = 'japasese') {
if($this->input->is_ajax_request()) {
$this->session->set_userdata('language',(($lang=='japasese') ? 'japasese' : 'english'));
echo true;
} else {
redirect('login');
}
}
} ?>
您可以将视图文件设置为
<form action ='#' enctype ='multipart/form-data' method ='post' name="formtest" id="formtest">
<select id="main_language" name ="main_language">
<option value="english">English</option>
<option value="japasese">Japanese</option>
</select>
</form>
添加Scrip文件。
<script type="text/javascript">
base_url = '<?=base_url()?>';
$(document).on('change', '#main_language', function () {
lang = $('#main_language').val();
$.ajax
({
'type': 'GET',
'url': base_url + 'dashboard/change_language/'+lang,
'success': function(response){
window.location.reload();
}
});
});
</script>
我希望这会对你有所帮助。