Php 如何通过单击按钮实现语言切换?
首先加载配置文件,然后从中选择默认语言。 但我需要通过单击按钮动态更改默认语言。我该怎么做? 我的控制器里有Php 如何通过单击按钮实现语言切换?,php,codeigniter,Php,Codeigniter,首先加载配置文件,然后从中选择默认语言。 但我需要通过单击按钮动态更改默认语言。我该怎么做? 我的控制器里有 public function __construct() { parent::__construct(); $this->config->set_item('language', 'japanese'); $this->load->helper('language'); $this->
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['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>
autoload.php如下所示:
$config['language'] = 'english';
$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>
我的看法如下:
$config['language'] = 'english';
$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>
从表单中获取值时,将其放入cookie中。诸如此类:
/* form validation here */
// ...
// After you know it's a valid value:
setcookie('language', $_POST['main_language'], 0, '/');
然后在应用程序/config/config.php中使用该cookie:
注意,您还需要验证cookie。不管您设置了什么,它仍然是用户输入
当然,当您仍在处理表单时,此配置将默认为“english”。只需确保在设置cookie后执行重定向,就可以解决这个问题。从表单中获取值时,将其放入cookie中。诸如此类:
/* form validation here */
// ...
// After you know it's a valid value:
setcookie('language', $_POST['main_language'], 0, '/');
然后在应用程序/config/config.php中使用该cookie:
注意,您还需要验证cookie。不管您设置了什么,它仍然是用户输入
当然,当您仍在处理表单时,此配置将默认为“english”。只需确保在设置cookie后执行重定向,您就可以绕过该问题。您可以尝试此解决方案解决您的问题
请更改My_控制器以更改语言
您可以为控制器的任何语言添加set会话。
仪表板控制器
您可以将视图文件设置为
英语
日本人
添加纸条文件
基本url=“”;
$(文档).on('change','main#u language',函数(){
lang=$(“#主语言”).val();
$.ajax
({
'type':'GET',
“url”:基本url+“仪表板/更改语言/”+lang,
“成功”:函数(响应){
window.location.reload();
}
});
});
我希望这将对您有所帮助。您可以尝试解决您的问题
请更改My_控制器以更改语言
您可以为控制器的任何语言添加set会话。
仪表板控制器
您可以将视图文件设置为
英语
日本人
添加纸条文件
基本url=“”;
$(文档).on('change','main#u language',函数(){
lang=$(“#主语言”).val();
$.ajax
({
'type':'GET',
“url”:基本url+“仪表板/更改语言/”+lang,
“成功”:函数(响应){
window.location.reload();
}
});
});
我希望这会对您有所帮助。我如何使用会话而不是cookies?您不应该使用会话来完成此操作,而且这会更加复杂。我如何使用会话而不是cookies?您不应该使用会话来完成此操作,这会更复杂。我试过了。但它仍然显示英语而不是日语。在检查加载的语言文件之后,您可以先检查会话中的语言。echo$this->session->userdata('language'))仅显示英语,即使我从选择框中选择日语,请检查您的ajax请求以更改语言;在ajax内部,成功基于所选内容显示英语和日语。我尝试了这一点。但它仍然显示英语而不是日语。在检查加载的语言文件后,您可以首先检查会话中的语言。echo$this->session->userdata('language')仅显示英语,即使我从选择框中选择日语,请检查您的ajax请求以更改语言;ajax内部的成功在于根据选择显示英语和日语