Spring MVC支持org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
ResourceBundleMessageSource
中的区域设置解析。
问题是,它只考虑accept-language标头中的主要语言环境。但是,根据HTTP规范,accept语言支持多种语言,并且每种语言都有首选。
Spring MVC中是否有办法根据资源包中的首选项和可用语言环境来解析语言环境?
例如,如果我有以下消息资源
Message.properties
Messages_en_US.properties
Messages_ko_KR.properties
如果接受标题如下所示
Accept-Language: ko, ko-kr;q=0.8, en;q=0.7
AcceptHeaderLocaleResolver只解析ko
,正弦我没有此语言环境的消息ResourceBundleMessageSource从默认语言环境Meassages.properties中获取消息。
我想从ko_KR接收消息,因为这是第二个偏好,而不是直接跳转到默认值。
我可以使用ServletRequest.getLocales()枚举编写一些代码来执行此操作,该枚举以首选顺序为我提供区域设置。但是,ResourceBundle没有API方法返回我有消息的所有语言环境,所以我必须编写一些hack代码来准备这个列表。我只是不想重新发明轮子。