【问题标题】:Localized routes and URL string本地化路由和 URL 字符串
【发布时间】:2012-01-18 21:43:12
【问题描述】:

是否有一些常见的解决方案或最佳实践如何在 (java) Play 中实现本地化的 URL 字符串和路由!申请?

我们需要这样的路线:

/examples/demonstration

/esempi/dimostrazione

/przyklady/demonstracji

...(10 多种语言)

所有网址自然指向控制器示例和动作演示

提前致谢!

【问题讨论】:

  • 通常您会在其中放置一个语言代码,以便以不同语言出现但具有不同含义的单词不会使您的 URL 模棱两可。例如,/en/once 可能对应于/es/una_vez/,而/es/once/ 可能对应于/en/eleven/
  • 等等,在上面的例子中,我试图表明“example.com/examples/demonstration”不应该像波兰语版本的网站那样写。所以应用程序中的链接应该被翻译,包含翻译后的路由,但指向同一个控制器。
  • 我知道,但如果没有语言环境标识符,您会遇到false cognates/once/ 是指英文单词“once”还是/eleven/ 的西班牙语翻译?
  • 啊,你的意思是,是的,我会从 cookie 和选择的语言环境中知道用户的语言,但我可以在开始时添加语言代码。但是有一些很好的解决方案来处理这种“黑客”路线吗?显然我不会使用控制器“En”或“Pl”而不是“Examples”,并且希望不要用 10 种语言手动编写每条路线......
  • 我喜欢,有人有好的解决方案吗?肯定会很好。

标签: java model-view-controller localization playframework url-routing


【解决方案1】:

也许你可以这样做:

英语:

%{ if (play.i18n.Lang.getLocale().getLanguage().equals("en")) { }%
GET     /add-new-post                Application.addNewPost
%{ } }%

荷兰语:

%{ if (play.i18n.Lang.getLocale().getLanguage().equals("nl")) { }%
GET     /voeg-nieuwe-commentaar      Application.addNewPost
%{ } }%

等等等等。

致谢:http://playframework.wordpress.com/2011/07/15/hidden-features-of-the-play-framework-routes-file/

祝你好运

【讨论】:

  • 如果没有别的,我学到了一些关于路线的新东西 :) 实际上我们决定采用“经典”方式,例如 Joomla,您为每种语言、页面/操作和菜单/控制器。谢谢。
  • 好的,请以某种方式更新我们,因为我正计划做类似的项目,我需要至少 5 种语言......祝你好运!
  • 当相同的代码部署在不同语言的多个实例中时,这很好,但当在同一个 Play 实例中支持多种语言时,它就不起作用了。我认为路由文件中的代码仅在播放开始时执行一次,而不是每次反转路由时(生成 URL)。
猜你喜欢
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多