【问题标题】:Translate routes (url ) for multilanguage website in codeigniter在 codeigniter 中翻译多语言网站的路线 (url)
【发布时间】:2014-02-01 06:27:05
【问题描述】:

我最近开始使用框架(CodeIgniter),经过大量研究后仍然有很多疑问,特别是关于多语言网站。

我正在尝试“翻译”网址,例如,我有 en/homefr/home ,但我希望每种语言都有自己的翻译,例如 fr/accueilpt/inicio 和很快... 到目前为止,我的系统所做的只是更改语言,但 url(控制器)保持相同的语言(英语): en/homefr/homept/home 而不是 fr/accueilpt/inicio

我必须做什么才能实现这种“翻译”或路由?为每种语言创建一个控制器并分别调用它们会更好吗?我开始这样做,但在某些时候我意识到它非常庞大,可能这不是一个好习惯。但是我发现为每种语言创建一个控制器要容易得多,但是我不知道我必须在哪里以及在哪个文件中设置“自动运行功能”来检测/保存语言首选项。

此外,当我在网址中输入语言时(例如 /en/fr ),它不会“重定向”到主控制器(主页):

// '/en', '/de', '/fr' and '/nl' URIs -> use default controller
$route['^(en|fr|pt)$'] = $route['default_controller'];

这对我不起作用,除非我在语言后输入“/”: /fr/ 工作正常!,/fr 不工作!

【问题讨论】:

  • 在我看来,如果您的控制器与当前选择的语言不同,用户将不会使用 url 浏览您的网站,他们将通过 menu 浏览您的网站,并且links 你提供的。那是你必须做的。但是,如果您真的想要该功能,则必须为不同的语言添加或调用不同的控制器。

标签: php codeigniter url multilingual codeigniter-routing


【解决方案1】:

我成功地使用了为语言设置cookie而不是在URI中设置cookie的方法,然后在我的页面数据库中为每种语言设置所有URI段,然后在我的页面模型中加载正确的语言URI和基于语言 cookie 的文本。

现在剩下的唯一问题是路由,我在路由文件的末尾设置了这样的内容,将所有剩余的请求重定向到页面控制器方法:

$route['(:any)'] = "main/pages";
$route['(:any)/(:any)'] = "main/pages";

这样,我的本地化版本可以同时拥有页面 URI 和子菜单 URI。

【讨论】:

  • 谢谢!这确实是一种可能性,以及将所有语言的 url 保留为英文。但我真的很想用 CI 来实现这一点。我知道如何获得我想要的结果的其他方法,但我认为就良好实​​践和模式而言,我可能的解决方案可能不是最好的方法......
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2014-05-10
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多