开发者

Multilingual web application problem

I am working on Spring web application and my application is multilingual. I have created the ResourceBundle property files开发者_如何学运维 as messages.properties and messages_ar.properties.

In my start page, I have set by default the locale to English. through:

<fmt:setLocale value="en" scope="session"/>

On the same page, I have provided users with access to other language (Arabic) through a link as :

<a href="index.htm?locale=ar">Arabic Version</a>

And I load the form texts, page title and other common elements from the properties file through the spring message tag:

<spring:message code="title"/>

Application works fine for English, but when I select the arabic version, the values from meaages_ar.properties is not loaded. What is my mistake or how can it be loaded and the application be made multilingual.

Thanks in advance for the help. Regards, Abdel Olakara


Spring MVC does a very good job in supporting internationalization. You can register a LocaleChangeInterceptor in your application context to get this stuff done. Here is an example how this would look like in Spring 3 and the new mvc namespace.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- use the annotation driven programming model -->
    <mvc:annotation-driven />

    <!-- register interceptors -->
    <mvc:interceptors>
        <!-- change the locale when a request parameter locale is received e.g. /?locale=de -->
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
    </mvc:interceptors>

    <!-- save the locale using a cookie -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />

    <!-- associate view names with jsp files in the directory /WEB-INF/views/ -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

You can find more details in the section of the official documentation:
http://static.springsource.org/spring/docs/1.2.9/reference/mvc.html#mvc-localeresolver

There is also a very helpful sample application in the speing examples repository:
https://src.springframework.org/svn/spring-samples/mvc-basic/


When setting <fmt:setLocale value="en" scope="session"/> you tell the application to use only English. the value of setLocale must be an expression that evaluates to the current locale. Something <fmt:setLocale value="${localeController.currentLocale}" />


ou dono change any culture. for change between cultures you have to change the Culture and UICulture like

    public event CultureChanged OnCultureChanged;
    public string LastCultureName
    {
        get
        {
            string lastCultureName = (string)Session["lastCulture"];

            if (lastCultureName == null)
            {
                Session["lastCulture"] = Thread.CurrentThread.CurrentCulture.Name;
                //lastCultureName = "ar-EU";
            }

            return lastCultureName;
        }
        set
        {
            Session["lastCulture"] = value;
        }
    }    //  Session["lastCulture"] = "en-US"; // Session["lastCulture"] = "ar-EU";


protected override void InitializeCulture()
    {
        string lang = (string)Session["lastCulture"];

        if (lang == null || lang == String.Empty)
            lang = LastCultureName;
        if (lang != string.Empty)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);
            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(lang);
        }
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜