Hello Forum,在使用CI 2.0.3和国际化(i18n)库时,我遇到了这个问题。我在这里读过类似的帖子,但他们没有解决我的问题。希望有人能指出我正确的方向。
routes.php:
$route['default_controller'] = "home";
$route['404_override'] = '';
$route['scaffolding_trigger'] = "";
// '/en', '/de', '/ru' URIs -> use default controller
$route['^(en|de|ru)$'] = $route['default_controller'];
// URI like '/en/about' -> use controller 'about'
$route['^(en|de|ru)/(:any)'] = "$2";
这很有效,但我有一个名为“blog”的区域,在博客中CI_Controller是一个从数据库中抓取文章的函数:
public function article()
{
$this->db->where('id', $this->uri->segment(4));
$data['query']= $this->db->get('blogentries');
$this->load->view('article_view',$data);
}
精彩,也有效。结果是一个像/ en / blog / article / 1这样的URL。 在语言文件中,我将变量保存为:
$lang['menu.blog'] = "Blog";
在博客视图中加载$ lang变量:
<?=lang('menu.blog')?>
打开文章时出现问题,语言文件中的var根本没有加载。 http://localhost/代替“博客”。我想这与路由有关。因此,对于像/ en / blog这样的网址,我会:
$route['^(en|de|ru)/(:any)'] = "$2";
所有其他网址都能正常运行,并正确加载语言文件中的变量。
但我如何处理像/ en / blog / article / 1这样的网址?我在思考正确的方向吗? 建议表示赞赏。
谢谢。
答案 0 :(得分:0)
我可能不理解你在问什么,但似乎你可以做到:
$route['^(en|de|ru)/blog/article/(:any)']
这应该捕获不同的语言,但仍然通过id将您引导到博客文章。