3 Stimmen

Spring MVC Webanwendung i18n

In einer Webanwendung, die mit Spring-MVC geschrieben wurde, möchte ich es Benutzern ermöglichen, die aktuelle Sprache zu ändern, indem sie auf einen Link klicken, dessen Text der Name der Sprache ist.

Ich habe bereits eine messageSource eingerichtet und alle meine JSP-Seiten finden die Nachrichten mit dieser messageSource. Derzeit ändert sich die Sprache je nach dem Gebietsschema des Benutzerbrowsers.

Ich möchte nun also die Möglichkeit schaffen, das Gebietsschema manuell zu ändern.

Ich habe herausgefunden, dass die Klasse SessionLocaleResolver helfen könnte, aber ich weiß nicht, wie ich sie in meiner Anwendungskontextdatei einrichten kann (der Name ist myAppName-servlet.xml).

Ich habe die Bohne definiert:

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

Aber in welche Bohne soll ich das stecken? Und wie setze ich ein Cookie für das Gebietsschema in einer Benutzersitzung?

6voto

madewulf Punkte 1830

Alle Informationen, die ich brauchte, waren in den Unterlagen enthalten, die ich vor mir liegen hatte:

http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-localeresolver

Kurz gesagt, habe ich die folgende xml-Datei an myAppName-servlet.xml angepasst

<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.CookieLocaleResolver"/>

<bean id="urlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="localeChangeInterceptor"/>
        </list>
    </property>
    <property name="mappings">
        <value>/**/*.view=someController</value>
    </property>
</bean>

Und jetzt reicht es aus, jede Seite mit dem Parameter :

siteLanguage=locale

um das Gebietsschema für die gesamte Website zu ändern.

Zum Beispiel: http://localhost:8080/SBrowser/deliveries.html?siteLanguage=fr enter code here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X