Spring bootとThymeleafを使用して多言語アプリケーションを作成しようとしています。
さまざまなメッセージを保存するためにいくつかのプロパティファイルを作成しましたが、ブラウザの言語でしか表示できません(ブラウザのロケールを変更する拡張機能を試しましたが、機能していないようです)この義務(言語の変更)を行うことですが、これを管理する方法や場所を見つける方法がわかりません。
私の設定を表示します:
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class I18nConfiguration extends WebMvcConfigurerAdapter {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
th:with="lang=${#locale.language}" th:lang="${lang}">
<head>
<title>Spring Boot and Thymeleaf example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h3>Spring Boot and Thymeleaf</h3>
<p>Hello World!</p>
<p th:text="${nombre}"></p>
<h1 th:text="#{hello.world}">FooBar</h1>
</body>
</html>
messages_en_US.properties
hello.world = Hello people
messages_es.properties
hello.world = Hola gente
実際、メッセージはスペイン語で表示されていますが、これをどのように変更したらよいかわかりません。よろしくお願いします。
私の頭に浮かぶ別の質問があります...プロパティファイルからではなく、データベースからメッセージを取得するにはどうすればよいですか?
アプリケーションは拡張する必要がありますWebMvcConfigurerAdapter
@SpringBootApplication
public class NerveNetApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(NerveNetApplication.class, args);
}
@Bean
public LocaleResolver localeResolver() {
return new CookieLocaleResolver();
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
次に、ブラウザでparamlangで言語を切り替えることができます例: http:// localhost:1111 /?lang = kh which messages_kh.properitesはクメール語のコンテンツを保存します。