テンプレートエンジンとしてThymeleafを使用するSpring Boot Webアプリケーションを作成しました。サブフォルダー内のメッセージを検索するようにMessageSource
を構成しました。
_@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setFallbackToSystemLocale(false);
messageSource.setCacheSeconds(0);
return messageSource;
}
_
このフォルダーに、コンテンツ_messages_de.properties
_を持つファイル_ticket.type.BUG=Fehler
_を作成しました。私のテンプレートでは、次のようなテキストを表示しようとします。
_<p th:text="#{ticket.type.BUG}">BUG</p>
_
しかし、ページがレンダリングされると、次の結果が得られます。
_<p>??ticket.type.BUG_de_DE??</p>
_
私は何が欠けていますか?追加のBeanを構成する必要がありますか?
P.S.:
「サーバー側」では、MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
を使用してメッセージを取得できます。
I18nメッセージングを解決する方法は、MessagesSource
Beanをあなたのように定義することでした。さらに、WebMvcConfigurerAdapter
のgetValidator()
メソッドをオーバーライドする必要がありました。
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource( messageSource() );
return validator;
}
この後、それは私のために働いた。
フォールバックを許可するファイルmessages.properties
(_de
なし)がありますか?動作しますか?ブラウザーはロケールDE_de
に設定されていますか?
メッセージソースはクラスパスに相対的です:
messageSource.setBasename(" classpath:i18n/messages");
ここに、thymeleafとspringについて参照したチュートリアルがあります= http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html