如何在spring boot中使用locale更改messagesource?

时间:2017-09-01 06:57:40

标签: spring spring-boot internationalization locale

我在春季启动时遇到了muitle messeage资源的问题,如下所示:

这是我的application.yml:

...
spring:
   messages:
      basename: i18n/messages_fr,i18n/messages_en

这是我的测试类:

public class MessageSourceTest {
@Autowired
MessageSource messageSource;

public String getMessage(String key, String keyLang) {
    Locale locale = Locale.forLanguageTag(keyLang); // keyLang = "en", or "fr"
    String message = messageSource.getMessage(key, null, locale);
    return message;
}

}

问题是我总是从i18n / messages_fr得到消息,无论我设置的语言环境是什么" en"或" fr"。

如果我将application.yml设置为:

basename: i18n/messages_en,i18n/messages_fr

然后我从i18n / messages_en

收到消息

那么,有什么方法可以获得动态语言环境的消息。

(就在后端,没有通过localeResolver和addInterceptors设置客户端,如下所示:http://www.baeldung.com/spring-boot-internationalization

1 个答案:

答案 0 :(得分:0)

您应将baseName设为i18n/messages而不是i18n/messages_{lang}。 然后检查localeResolver,spring决定应该读取哪个文件。