没有语言部分的Codeigniter多语言uri

时间:2014-08-10 12:03:56

标签: php codeigniter codeigniter-2 multilingual codeigniter-url

我经常搜索并发现有关CI的多语言网址的更多主题。但是大多数答案已经不再与CI维基链接,或者没有解释我想要的东西。

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

例如:

  • 默认uri - example.com/blogas/irasas/123
  • 英文uri - example.com/blog/item/123或example.com/en/blog/item/123

两种语言的链接都应该调用Blog :: item()

生成uris应该类似 - 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

我相信this solution for 2.1应该有用,但我无法弄清楚URI应该如何翻译(在哪里放置翻译)以及如何从URI中删除语言部分。

1 个答案:

答案 0 :(得分:0)

可能是我错了,但我的理解是你试图使用site_url中使用相同单词的活动语言生成不同的网址。如果这是正确的,您可以使用语言助手简单地翻译您的单词。

site_url(lang('blog_item_url') . '123);

在你的英文语言文件中。

$lang['blog_item_url']        =   "blog/item/";

在你的其他langugae

$lang['blog_item_url']        =   "blogas/irasas/";

在配置中的 route.php 中定义路径

$route['blog/item/(:num)'] = "blog/item/$1";
$route['blogas/irasas/(:num)'] = "blog/item/$1";