Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在codeigniter中从多语言切换到默认语言_Codeigniter - Fatal编程技术网

在codeigniter中从多语言切换到默认语言

在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

我们正在使用一个多语言网站,如

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/(: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下