我正在使用Spring Web应用程序,我的应用程序是多语言的。我已经将ResourceBundle属性文件创建为messages.properties和messages_ar.properties。
在我的开始页面中,我默认将语言环境设置为英语。通过:
<fmt:setLocale value="en" scope="session"/>
在同一页面上,我通过以下链接为用户提供了访问其他语言(阿拉伯语)的权限:
<a href="index.htm?locale=ar">Arabic Version</a>
我通过spring message标签从属性文件加载表单文本,页面标题和其他常用元素:
<spring:message code="title"/>
应用程序适用于英语,但是当我选择阿拉伯语版本时,未加载meaages_ar.properties中的值。我的错误是什么,或者如何加载,应用程序可以多语言。
提前感谢您的帮助。 问候, 阿卜杜勒·奥拉卡拉
答案 0 :(得分:1)
Spring MVC在支持国际化方面做得非常好。您可以在应用程序上下文中注册LocaleChangeInterceptor以完成这些工作。下面是一个示例,它将如何在Spring 3和新的mvc名称空间中显示。
<?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>
您可以在官方文档部分找到更多详细信息:
http://static.springsource.org/spring/docs/1.2.9/reference/mvc.html#mvc-localeresolver
在speing examples存储库中还有一个非常有用的示例应用程序:
https://src.springframework.org/svn/spring-samples/mvc-basic/
答案 1 :(得分:0)
设置<fmt:setLocale value="en" scope="session"/>
时,您告诉应用程序只使用英语。 value
的{{1}}必须是一个表达式,其值为当前区域设置。某事setLocale
答案 2 :(得分:-1)
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);
}
}