Ich versuche eine mehrsprachige Anwendung mit Spring Boot und Thymoleaf zu machen.I18n im Frühjahr Boot + Thymeleaf
Ich habe einige Properties-Dateien erstellt, um die verschiedenen Nachrichten zu speichern, aber ich kann sie nur in meiner Browser-Sprache anzeigen (Ich habe versucht, das Gebietsschema zu ändern, aber sie scheinen nicht zu funktionieren), trotzdem wollte ich ein Knopf auf meiner Website, um diese Pflicht zu erfüllen (Ändern der Sprache), aber ich weiß nicht, wie oder wo zu finden, wie man das schafft.
gehend, zeigen Sie meine config:
Struktur des Projekts
I18n Konfigurationsklasse
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;
}
}
Thymleaf HTML-Seite
<!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 (Properties-Dateien)
messages_en_US.properties
hello.world = Hello people
messages_es.properties
hello.world = Hola gente
Eigentlich wird die Nachricht auf Spanisch angezeigt, nicht sicher, wie würde ich das ändern, also wenn Sie mir helfen könnten, vielen Dank.
Es gibt eine andere Frage, die mir in den Sinn kommt ... Wie würde ich die Nachrichten von der Datenbank statt von der Eigenschaftendatei bekommen?
Dumme Frage: Wie stellen Sie das 'Locale' ein? Haben Sie einen [LocaleResolver] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/LocaleResolver.html) konfiguriert? Wie gibst du ihm das gewünschte Locale? –
Ich bin nicht, ich nehme an, Spring nimmt es aus der Browserkonfiguration. Soll ich das Gebietsschema abhängig von einem Tastendruck einstellen? Nicht sicher, ob es so funktionieren würde. –
Beginnen Sie bei [oben] (http://www.concretepage.com/spring-4/spring-4-mvc-internationalization-i18n-and-localization-l10n-annotation-example) und machen Sie weiter.Es gibt 3 Dinge, die Sie brauchen: 1) eine 'MessageSource', 2) ein' LocaleResolver' um für eine bestimmte Anfrage zu bestimmen, welche Locale zu verwenden ist und (optional) 3) einen 'LocaleChangeInterceptor', so dass Sie aus einer Anfrage Stellen Sie das Gebietsschema im 'LocaleResolver' ein. –