Multilanguage in der Session mit SessionLocaleResolver

Dosihris

Grünschnabel
Hi,

ich versuche in meine kleine Seite Mehrsprachigkeit einzubauen. Da diese ja von der Session abhängig sein muss, versuche ich mit Hilfe des SessionLocaleResolver die Sprache in der Session zu ändern. Hat damit von euch jemand Erfahrung? Hab es so gebaut, dass es funktionieren müsste, macht es aber natürlich nicht.
Falls das jemand erfolgreich geschafft hat, wäre ich dankbar, wenn das hier mal jemand erklären könnte, wie er das geschafft hat.

Hier mal so wie ich es gemacht habe, wie es eigentlich funktionieren müsste.

In meiner SpringDispatcher-servlet.xml
Code:
   <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    	<property name="paramName" value ="siteLanguage" />
    </bean>

	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

 	<bean id="changeLangController" class="de.nfranze.sf.controller.changeLangController"/>

<bean id="urlMapping" 
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="interceptors">
        <list>
            <ref local="localeChangeInterceptor"/>
        </list>
    </property>
    <property name="mappings">
        <props>
            <prop key="/**/language.htm">changeLangController</prop>
        </props>
    </property>
</bean>

mit folgender URL sollte nun eigentlich in meinem Request-objekt im Controller die Sprache eine andere sein.
http://localhost:8080/sf/language.htm?siteLanguage=en

So versuche ich die Sprache in dem Controller auszulesen, aber leider enthält die Variable country immer den Wert "de", und keinen anderen.
Code:
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

		Locale loc=request.getLocale();
		String country=loc.getLanguage();

		ModelAndView mav = new ModelAndView("home");
		
		return mav;
	}

Sieht jemand einen Fehler?
 
Hallo,

hast du dir schonmal das Countries Sample Projekt angeschaut?
-> E:\springframework\XXXX\spring-framework-XXXX\samples\countries
Dort findest auch ein Beispiel für on the fly umschaltbare Locales.

Gruß Tom
 
Problem gelöst...
Es hat alles funktioniert, ausser der Code zum Abfragen der Sprache in der Session.
Code:
		Locale loc=request.getLocale();
		String country=loc.getLanguage();

Dieser Code liefert immer da gleiche, da sich das niemals ändert.

Richtig, um die Sprache abzufragen, ist folgendes vorgehen.
Code:
loc=RequestContextUtils.getLocale(request);

Und schon geht es...
 

Neue Beiträge

Zurück