SessionLocaleResolver - welche Locale wird benutzt?

Molly_Grue

Mitglied
Hallo zusammen!

Ich hab mal zwei kleine Fragen zum SessionLocaleResolver (org.springframework.web.servlet.i18n.SessionLocaleResolver).

Ich habe eine WebAnwendung, die ich - je nach Auswahl - auf Deutsch oder Englisch anzeigen möchte. Das funktioniert soweit auch prima. Jetzt ist es aber so, dass ich sozusgen gerne Englisch als "Fallback-Sprache" einrichten möchte, wenn z.B. im Browser als accept-language Spanisch, oder was weiß ich, eingestellt ist. Wenn ich im localResolver "en" als defaultLocale definiere, wird diese IMMER zuerst benutzt, auch wenn die accept-language im Browser z.B. Deutsch ist (also eine Sprache, die unterstützt wird). Gibt es eine Möglichkeit, so etwas zu definieren?

Und die zweite Frage geht eigentlich in eine ähnliche Richtung... Und zwar, welche Locale wird denn ausgewählt, wenn keine defaultLocale definiert ist und im Browser nur eine eingestellt ist, die nicht unterstützt wird (für die es also keine .properties-Datei gibt)? Bei mir wurde dann scheinbar zufällig mal Deutsch, mal Englisch angezeigt... Ist das Verhalten korrekt, oder überseh ich da etwas? Ich habe auch versucht etwas zu debuggen, aber dabei habe ich nur rausgefunden, dass sogar ein Aufruf von
Code:
getApplicationContext().getMessage("label.locale", new Object[] {}, request.getLocale())
den deutschen Text vom Label "label.locale" liefert, auch wenn
Code:
request.getLocale()
z.B. "ab" statt "de" zurück gibt... Seeeehr verwirrend...

Für Hinweise wäre ich wirklich dankbar!
Viele Grüße,
molly
 

Molly_Grue

Mitglied
Sooo, hab die Lösung gefunden...

1. ich benutze jetzt ReloadableResourceBundleMessageSource anstelle von ResourceBundleMessageSource
2. <property name="fallbackToSystemLocale" value="false" /> in der messageSource-Bean
3. keine defaultLocale in der localeResolver-Bean
4. die default-properties (englisch) heißen "messages.properties", die deutschen "messages_de.properties"
 

Neue Beiträge