Codeigniter国际化i18n尾随斜线没有添加

时间:2013-06-12 14:57:04

标签: codeigniter internationalization routes

我正在进行一个项目,现在[管理部分已经完成](我知道有点迟了)我正在尝试为项目实施i18n。 我认为一切正常,除非我输入http://localhost/my_project而my_project正在使用CI安装工作目录时,我被重定向到以下http://localhost/my_project/enhomeen之后没有任何尾随斜线)任何想法?

期待结果http://localhost/my_project/en/home,而不只是home控制器,但所有控制器的行为都相同。

.htaccessbase_urlindex_page设置正确(所有工作都没有i18n)。

routes.php 缺货

$route['default_controller'] = "home";
$route['404_override'] = '';

// URI like '/en/about' -> use controller 'about'
$route['^(en|de|fr|nl)/(.+)$'] = "$2";

// '/en', '/de', '/fr' and '/nl' URIs -> use default controller
$route['^(en|de|fr|nl)$'] = $route['default_controller'];

修改 我正在使用ellislab中的“new”i18n。对不起,链接错误(1.7 CI版本)。

2 个答案:

答案 0 :(得分:2)

所以经过一番挖掘后,我在核心文件中发现了问题,在这个发布的脚本的底部有变量$new_url,它没有“修复”而回显Redirect triggered to http://192.168.1.184/my_project/enhome。我刚刚在那里添加了/,它完美地运作我想知道这里发生了什么,如果这是OK修复的话。

function MY_Lang() {
    parent::__construct();

    global $CFG;
    global $URI;
    global $RTR;


    $this->uri = $URI->uri_string();
    $this->default_uri = $RTR->default_controller;

    $uri_segment = $this->get_uri_lang($this->uri);
    $this->lang_code = $uri_segment['lang'] ;

    $url_ok = false;
    if ((!empty($this->lang_code)) && (array_key_exists($this->lang_code, $this->languages)))
    {
        $language = $this->languages[$this->lang_code];
        $CFG->set_item('language', $language);
        $url_ok = true;
    }

    if ((!$url_ok) && (!$this->is_special($uri_segment['parts'][0]))) // special URI -> no redirect
    { 
      // set default language
      $CFG->set_item('language', $this->languages[$this->default_lang()]);

      $uri = (!empty($this->uri)) ? $this->uri: $this->default_uri;
      //OPB - modification to use i18n also without changing the .htaccess (without pretty url) 
      $index_url = empty($CFG->config['index_page']) ? '' : $CFG->config['index_page']."/";
      $new_url = $CFG->config['base_url'].$index_url.$this->default_lang()."/".$uri;
      echo "Redirect triggered to ".$new_url;

      //header("Location: " . $new_url, TRUE, 302);
      // exit;
    }
}

答案 1 :(得分:0)

这个库有点老了从来没有更新过的作者很久以来它适用于CI 1.7但这里是与CI 2.1兼容的更新版本。*相同的库但更新版本的工作方式与此处可以从这里下载

CodeIgniter 2.1 internationalization i18n