2017-09-01 45 views
0

我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; 
} 

}

问题是无论我设置的语言环境是“en”还是“fr”,我总是会收到来自i18n/messages_fr的消息。

如果我application.yml设置为:

basename: i18n/messages_en,i18n/messages_fr 

后来我得到消息,从国际化/ messages_en

那么,有没有什么办法,我可以用动态语言环境中获取消息。

(只是在后端,不设置由LocaleResolver和addInterceptors,像这样throught客户端:http://www.baeldung.com/spring-boot-internationalization

+0

您的基本名称必须是'i18n/message',正确的文件是基于'Locale'加载的。 –

+0

这不起作用。我得到了异常org.springframework.context.NoSuchMessageException:代码'test.title'中没有找到locale'en'的消息。 – user2582163

+0

如果你复制粘贴我键入的是,因为它缺少's' ...'i18n/messages'。 –

回答

0

您应该设置baseNamei18n/messagesi18n/messages_{lang}。 然后在检查你的localeResolver后,spring决定应该读取哪个文件。

相关问题