Stiamo utilizzando Spring Boot per l'applicazione. In ApplicationConfig.java ho il codice qui sottoProblema di localizzazione di avvio a molla - Intestazione Accept-Language
@Bean
public LocaleResolver localeResolver() {
return new SmartLocaleResolver();
}
e SmartLocaleResolver.java è inferiore
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();
}
}
e ho nella mia classe costanti il seguito per confrontare il valore di intestazione Accept-Language.
elenco statico finale pubblico LOCALE = Collezioni .unmodifiableList (Arrays.asList ("en", "es"));
So che nell'attuale scenario l'intestazione sarà come Accept-Language: fr, es; q = 0.8, en-us; q = 0.6 ma a scopo di test lo sto passando come di seguito.
Accept-Language: FR, ES, IT
Il codice non è ancora completo, ma io sono solo test da postino per vedere se il codice prende "es", come il locale e mi dà l'localizzato risultato.
Non ho il file messages_fr.properties ma ho messages_es.properties quindi mi aspetto che se l'applicazione imposta il locale dal codice sottostante, selezionerà Locale come 'es' e fornirà i valori che voglio in spagnolo. Quali modifiche devo apportare qui affinché il codice funzioni?
Perché non c tutto 'request.getLocale()' direttamente? –
Se chiamo direttamente request.getLocale() come verifica che non supportiamo 'fr' nel mio progetto? Non ho messaggi_fr.properies nel mio progetto. Quindi ha bisogno di ignorare fr e dovrebbe impostare Locale come 'es' perché supportiamo 'es' e abbiamo messages_es.properties. Può farlo automaticamente senza scrivere alcuna logica per quello? – Arun