2017-09-01 24 views
0

私はこのような春ブーツでmuitle messeageリソースの問題を得た:スプリングブートでロケールを使用してmessagesourceを変更するにはどうすればよいですか?

これは私の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

だから、私は動的ロケールでメッセージを取得することができますどのような方法があるi18nとメッセージが表示されました。

(ただ、バックエンドで、localeResolverとaddInterceptorsとクライアントthroughtこのような何か設定されていません:http://www.baeldung.com/spring-boot-internationalization)を

+0

あなたのベース名は 'i18n/message'でなければなりません。正しいファイルは' Locale'に基づいてロードされます。 –

+0

それは仕事ではありません。 org.springframework.context.NoSuchMessageException例外があります: 'test.title'というロケール 'en'のコードの下にメッセージが見つかりません。 – user2582163

+0

あなたが 's' ...' i18n/messages'を見つけられなかったので、あなたが貼り付けたものを貼り付けた場合、私は「はい」とタイプしました。 –

答えて

0

あなたはi18n/messages_{lang}ないi18n/messagesとしてbaseNameを設定する必要があります。 次に、localeResolverを確認して、どのファイルを読み込むかを決定します。

関連する問題