我搜索了很多,在CI的多语言url上发现了更多的主题。但是大多数的答案都没有链接到CI wiki,或者没有解释我想要的东西。
我的默认语言是非英语的,但是我想用英语命名控制器和方法。我也不希望语言段出现在我的URL中(至少不是默认语言)。
。:
- 默认uri - example.com/blogas/irasas/123
- 英文网址- example.com/blog/item/123或example.com/en/blog/item/123
两种语言的链接都应该调用Blog::item()
生成uri应该类似- site_url('blog/item/123');
应该生成用户语言的链接:
- 默认设置- example.com/blogas/irasas/123
- 英文- example.com/blog/item/123或example.com/en/blog/item/123
用户语言最好在cookie或会话中设置。有什么办法可以做到这一点吗?
使用最新的CI 2.2.0
我相信这个2.1的解决方案应该工作,但我不能弄清楚URI应该如何翻译(在哪里放置翻译)以及如何从URI中删除语言部分。
可能是我错了,但我所理解的是,你正试图在site_url
中使用相同的单词基于活动语言生成不同的url。如果这是正确的,你可以简单地用语言助手翻译你的话。
site_url(lang('blog_item_url') . '123);
在你的英语语言文件中
$lang['blog_item_url'] = "blog/item/";
在你的另一种语言中
$lang['blog_item_url'] = "blogas/irasas/";
在route.php中定义路由。
$route['blog/item/(:num)'] = "blog/item/$1";
$route['blogas/irasas/(:num)'] = "blog/item/$1";