V modulu MVC rámce
Spring™ je problém internacionalizace usnadněn
existencí takzvaných detektorů národního
prostředí (objektů typu LocaleResolver).
Jakým způsobem je objekt typu LocaleResolver
zařazen do řetězu zpracování HTTP požadavku, jsme si
ukázali dříve (viz „Cesta požadavku útrobami Spring MVC“). Jeho účel je jednoduchý.
V libovolném kroku zpracování požadavku má za úkol vrátit objekt typu
Locale příslušný tomuto požadavku. Existuje
několik implementací tohoto rozhraní, které reprezentují různé strategie
detekce národního prostředí.
Není-li v aplikačním kontextu daného servletu uvedena žádná
deklarace s názvem localeResolver, je použita
defaultní implementace, tedy
AcceptHeaderLocaleResolver. Tato implementace
určí Locale požadavku na základě
HTTP hlaviček tohoto požadavku.
Vrací vždy stejný Locale.
XML definice může vypadat například
takto:
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.FixedLocaleResolver">
<property name="defaultLocale" value="en_US" />
</bean>
Vrací objekt typu Locale uložený v
uživatelském sezení (v objektu HttpSession
příslušném aktuálnímu uživateli). V případě, že v uživatelském sezení
není uložena žádná instance Locale, tak je
aplikován AcceptHeaderLocaleResolver.
Definice:
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
Obdoba SessionLocaleResolver s tím
rozdílem, že Locale je pro daného uživatele
uchováván prostřednictvím klasických cookies. To
je užitečné v případě bezstavových webových aplikací, kde se
uživatelská sezení nepoužívají. Definice:
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />