【发布时间】:2018-01-03 13:22:05
【问题描述】:
映射 i18n 翻译的 url 路径的方法是什么?
例如,假设我们谈论以下 url (for locale en):
www.foo.tld/car/manufacturer
在德语 (de) 中,此网址为
www.foo.tld/auto/hersteller
我对 Controller RequestMapping 的了解我可以使用严格的值将这些 url 映射为一种方法,例如
@GetMapping(value={"/car/manufacturer/", "/auto/hersteller/"})
更多的 seo 优化可能与路径中的当前语言环境类似
@GetMapping(value={"/en/car/manufacturer/", "/de/auto/hersteller/"})
...但我不想开始讨论什么是最好的 uri seo 明智的。
如果只使用几个区域设置/语言,这还不错,但我想让它以某种方式动态化。 目前我正在使用 messages_xx.properties 映射 url 路径部分以在我的应用程序中生成 url,例如:
messages.properties
uri.car=car
uri.manufacturer=manufacturer
messages_de.properties
uri.car=auto
uri.manufacturer=hersteller
我已经在使用它们来构建符合用户区域设置的链接,效果很好。
我现在正在寻找的是一种优雅的、更少错误的修剪方式来将这些 url 映射到我的控制器中。例如,如果我要更改键 uri.car 的值,并且在我的控制器中有一个静态 RequestMapping,就像上面的示例一样,我还需要在那里更改它(如果我没有忘记的话!)。 此外,如果我想添加对另一种语言的支持,我需要在所有控制器中搜索并检查是否需要添加另一个值映射。
是否有一种更智能的方法可以在 Spring 控制器中映射 i18n 路径部分,理想情况下尊重请求区域设置并在 messages_xx.properties 的帮助下解析路径字符串? 或者是一种过滤器,可以根据请求的语言环境提取路径部分并在内部仅使用一种语言来映射 url?
【问题讨论】:
标签: spring spring-mvc spring-boot