使用i18n路径部件的Spring MVC请求映射

使用i18n路径部件的Spring MVC请求映射,spring,spring-mvc,spring-boot,Spring,Spring Mvc,Spring Boot,映射i18n翻译url路径的方法有哪些 例如,假设我们讨论以下url(对于语言环境en): 在德语(de)中,此url为 www.foo.tld/auto/hersteller 据我所知,关于控制器请求映射,我可以使用severel值为一个方法映射这些url,比如 @GetMapping(value={"/car/manufacturer/", "/auto/hersteller/"}) 更优化的搜索引擎优化可能会与路径中的当前区域设置类似 @GetMapping(value={"/en/c

映射i18n翻译url路径的方法有哪些

例如,假设我们讨论以下url(对于语言环境en):

在德语(de)中,此url为

www.foo.tld/auto/hersteller
据我所知,关于控制器请求映射,我可以使用severel值为一个方法映射这些url,比如

@GetMapping(value={"/car/manufacturer/", "/auto/hersteller/"})
更优化的搜索引擎优化可能会与路径中的当前区域设置类似

@GetMapping(value={"/en/car/manufacturer/", "/de/auto/hersteller/"})
…但是我不想开始讨论什么是最好的uri seo

如果只使用少数地区/语言,这并不糟糕,但我希望以某种方式使其动态化。 目前,我正在使用messages_xx.properties映射url路径部分,以便在我的应用程序中生成url,如:

messages.properties

uri.car=car
uri.manufacturer=manufacturer
uri.car=auto
uri.manufacturer=hersteller
消息\u de.properties

uri.car=car
uri.manufacturer=manufacturer
uri.car=auto
uri.manufacturer=hersteller
我已经在使用它们来建立链接,重复用户区域设置,效果很好

我现在搜索的是一种优雅的、更少出错的修剪方法,可以在我的控制器中映射这些URL。例如,如果我要更改key uri.car的一个值,并且在我的控制器中有一个静态RequestMapping,就像上面的例子一样,我还需要在那里更改它(如果我没有忘记!)。 另外,如果我想添加对另一种语言的支持,我需要在所有控制器中搜索,并检查是否需要添加另一个值映射

有没有一种更智能的方法来映射Spring控制器中的i18n路径部分,最好是根据请求区域设置,并借助messages_xx.properties解析路径字符串?
或者是一个过滤器,用于根据请求的区域设置提取路径部分,并在内部仅使用一种语言映射URL?

请确保您具有具有以下属性的EN message.properties和DE message.properties:

url.car=/car/manufacturer/
在英语中

url.car=/auto/hersteller/
在DE中

在@Controller中,通过配置messageSource并使用它获取属性,您可以轻松获得以下属性:

注入配置的MessageSource以允许Spring解析消息:

 @Autowired
 private MessageSource messageSource;
然后,您可以从message.properties文件中获取所有属性: