您好论坛,在使用 CI 2.0.3 和国际化 (i18n) 库时,我遇到了这个问题。我在这里读过类似的帖子,但它们并没有解决我的问题。希望这里有人可以指出我正确的方向。
路线.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";
这很好用,但我有一个名为“博客”的区域,在博客 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 这样的 URL,我将拥有:
$route['^(en|de|ru)/(:any)'] = "$2";
所有其他 URL 都可以正常工作并正确加载语言文件中的变量。
但是我如何处理像 /en/blog/article/1 这样的 URL?我在思考正确的方向吗?建议表示赞赏。
谢谢你。