CodeIgniter和i18n库

时间:2012-01-20 17:56:23

标签: codeigniter internationalization routing codeigniter-2 i18n-gem

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这样的网址?我在思考正确的方向吗? 建议表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:0)

我可能不理解你在问什么,但似乎你可以做到:

$route['^(en|de|ru)/blog/article/(:any)']

这应该捕获不同的语言,但仍然通过id将您引导到博客文章。