Php 无语言部分的Codeigniter多语言uri

Php 无语言部分的Codeigniter多语言uri,php,codeigniter,codeigniter-2,multilingual,codeigniter-url,Php,Codeigniter,Codeigniter 2,Multilingual,Codeigniter Url,我搜索了很多,在CI的多语言URL上找到了更多的主题。但大多数答案都没有到CI wiki的有效链接,或者没有解释我想要什么 我的默认值是非英语语言,但我希望控制器和方法以英语命名。我也不希望语言段出现在我的URL中(至少不是默认语言) 例如: 默认uri-example.com/blogas/irasas/123 英语uri-example.com/blog/item/123或example.com/en/blog/item/123 两种语言的链接都应该调用Blog::item() 生成UR

我搜索了很多,在CI的多语言URL上找到了更多的主题。但大多数答案都没有到CI wiki的有效链接,或者没有解释我想要什么

我的默认值是非英语语言,但我希望控制器和方法以英语命名。我也不希望语言段出现在我的URL中(至少不是默认语言)

例如:

  • 默认uri-example.com/blogas/irasas/123
  • 英语uri-example.com/blog/item/123或example.com/en/blog/item/123
两种语言的链接都应该调用Blog::item()

生成URI应该类似-
site\uURL('blog/item/123')应以用户语言生成链接:

  • 默认值-example.com/blogas/irasas/123
  • 英语-example.com/blog/item/123或example.com/en/blog/item/123
最好在cookie或会话中设置用户语言。 有什么办法可以做到这一点吗?
使用最新的CI 2.2.0


我相信应该可以,但我不知道URI应该如何翻译(翻译的位置)以及如何从URI中删除语言部分。

可能我错了,但我的理解是,您正在尝试使用
站点中的相同单词,基于活动语言生成不同的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";

那个么从URL中删除语言部分呢?我还注意到,现在如果我转到example.com,它会重定向到controller(它重定向到example.com/en/blog)-有没有一种简单的方法来消除这个问题?你是在使用多语言库吗?我已经做了所有的事情,就像在一个教程中我发布了一个链接到()一样,我现在正在尝试使路由工作,我必须定义所有路由,如
$route['lang/blogas/irasas/(:any)]='blog/item/$1';
。否则,如果我跳过
lang/
部分,我会出现404错误。我真不敢相信没有办法让多语言在CI中更简单:/n不要使用该库并在会话数据中存储活动语言。然后使用带有翻译的自定义路由。