在codeigniter中从多语言切换到默认语言
我们正在使用一个多语言网站,如 www.example.com/en/www.example.com/es/ 我们有这样的roout配置在codeigniter中从多语言切换到默认语言,codeigniter,Codeigniter,我们正在使用一个多语言网站,如 www.example.com/en/www.example.com/es/ 我们有这样的roout配置 $route['switch-language/language/(:any)'] = 'switch_language/language/$1'; $route['en/page/(:any)'] = 'page/view/$1'; $route['fr/page/(:any)'] = 'page/view/$1'; $route['es/page/(:a
$route['switch-language/language/(:any)'] = 'switch_language/language/$1';
$route['en/page/(:any)'] = 'page/view/$1';
$route['fr/page/(:any)'] = 'page/view/$1';
$route['es/page/(:any)'] = 'page/view/$1';
$route['pt/page/(:any)'] = 'page/view/$1';
我们有可能关闭语言转换器。当我们关闭url时,我们仍然有www.example.com/en/format
当多语言切换器关闭时,有没有办法不在url上显示语言标记
语言切换控制是这样的
class Switch_language extends CI_Controller {
public function __construct() {
parent::__construct ();
}
function language($language = "") {
$this->load->model('template_model', '', TRUE);
$language = ($language != "") ? $language : "english";
$this->session->set_userdata ( 'site_lang', $language );
$language_iso = $this->template_model->get_language_iso2_from_language_key($language);
$this->session->set_userdata('site_lang_iso', strtolower($language_iso));
//redirect ( base_url () );
if(isset($_SERVER["HTTP_REFERER"])){
//redirect($_SERVER["HTTP_REFERER"]);
redirect ( base_url ().strtolower($language_iso) );
}
else{
redirect ( base_url () );
}
}
function language_code() {
if ($this->input->post ( 'language_save' )) {
$this->load->model('template_model', '', TRUE);
$language = $this->input->post ( 'language_key' );
$language = ($language != "") ? $language : "english";
$this->session->set_userdata ( 'site_lang', $language );
$language_iso = $this->template_model->get_language_iso2_from_language_key($language);
$this->session->set_userdata('site_lang_iso', strtolower($language_iso));
//redirect ( base_url () );
if(isset($_SERVER["HTTP_REFERER"])){
//redirect($_SERVER["HTTP_REFERER"]);
redirect ( base_url ().strtolower($language_iso) );
}
else{
redirect ( base_url () );
}
}
}
}
当我从路由中手动删除lang标记时,这是可以的。但我们需要一些自动的东西
当转弯时,路线将被关闭
$route['page/(:any)'] = 'page/view/$1';
需要一些逻辑来解决此问题。您可以在配置文件中保留这两条路由,然后检查语言切换器是否打开/关闭。如果它处于打开状态,并且用户尝试访问的url中没有en/es/fr等。您可以将其重定向到相应的lang url?似乎我们需要编辑语言swtch controller。我在上面添加了lang开关控件。请问您为什么决定在url中使用lang指示器?使用CI的语言库,您可以将语言键(en、es等)存储在会话变量中。库将自动将正确的语言从应用程序/语言文件夹加载到您的站点中。是我使用CodeIgniter构建的多语言站点的一个示例。也许您可以考虑从URL中删除郎部分?我们将如何解决SEO问题。在同一个url下有两个不同的语言页面,您可以在配置文件中保留两个路由,然后检查语言切换器是否打开/关闭。如果它处于打开状态,并且用户尝试访问的url中没有en/es/fr等。您可以将其重定向到相应的lang url?似乎我们需要编辑语言swtch controller。我在上面添加了lang开关控件。请问您为什么决定在url中使用lang指示器?使用CI的语言库,您可以将语言键(en、es等)存储在会话变量中。库将自动将正确的语言从应用程序/语言文件夹加载到您的站点中。是我使用CodeIgniter构建的多语言站点的一个示例。也许您可以考虑从URL中删除郎部分?我们将如何解决SEO问题。在具有两个不同语言页面的同一url下