没有语言部分的多语言uri编码器


Codeigniter multilanguage uri without language part

我搜索了很多,在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";