Wir verwenden Spring Boot für die Anwendung. Accept-Language In ApplicationConfig.java habe ich den Code untenSpring Boot-Lokalisierungsproblem - Accept-Language-Header
@Bean
public LocaleResolver localeResolver() {
return new SmartLocaleResolver();
}
und die SmartLocaleResolver.java unter
public class SmartLocaleResolver extends SessionLocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
final String acceptLanguage = request.getHeader("Accept-Language");
if (acceptLanguage.contains(",")) {
String[] aheader = acceptLanguage.split(",[ ]*");
for (String locale : aheader) {
if (ApplicationConstants.LOCALE.contains(locale)) {
locale.trim();
return Locale.forLanguageTag(locale);
}
}
} else if (!acceptLanguage.contains(",") && !acceptLanguage.isEmpty()) {
if (ApplicationConstants.LOCALE.contains(acceptLanguage)) {
return Locale.forLanguageTag(acceptLanguage);
}
}
return request.getLocale();
}
}
und ich habe in meiner Konstanten Klasse des unter dem Wert von Header zu vergleichen.
öffentliche statische endgültige Liste LOCALE = Sammlungen .unmodiableList (Arrays.asList ("en", "es"));
Ich weiß im tatsächlichen Szenario der Header wird wie Accept-Language: fr, es; q = 0.8, en-us; q = 0.6 aber für Testzwecke bin ich es wie folgt übergeben.
Accept-language: fr, es, en
Der Code ist noch nicht abgeschlossen, aber ich bin Tests nur von Postbote, um zu sehen, ob der Code nimmt „es“ als Gebietsschema und gibt mir die lokalisierte Ergebnis.
Ich habe keine messages_fr.properties-Datei, aber ich habe messages_es.properties, also erwarte ich, wenn die Anwendung das Gebietsschema aus dem folgenden Code einstellt, würde es Locale als 'es' auswählen und die gewünschten Werte in Spanisch geben. Welche Änderungen muss ich hier vornehmen, damit der Code funktioniert?
Warum nicht c alle 'request.getLocale()' direkt? –
Wenn ich nur request.getLocale() direkt anrufe, wie stellt es sicher, dass wir 'fr' in meinem Projekt nicht unterstützen? Ich habe keine messages_fr.properies in meinem Projekt. Also muss es fr ignorieren und muss Locale als 'es' setzen, weil wir es unterstützen und messages_es.properties haben. Kann es das automatisch tun, ohne dass ich irgendeine Logik dafür schreibe? – Arun