SpringMVC + Freemarker 国际化
一、基于浏览器当前语言的国际化
在Spring的配置文件中配置资源文件Bean
<!-- 资源文件绑定器 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>resources/messages</value>
</list>
</property>
</bean>粗体为资源文件的存放位置 目的是为了了将资源文件的位置传入到basenames属性中。
注意:国际化资源文件需要有共同的主名即messages,只有这样才可以将资源文件传入basenames属性。
资源文件截图如下:

messages_zh_CN.properties及messages_en_US.properties的资源文件的编码转换成unicode,经过native2ascii的编码转换即可实现,本例使用convert.bat进行简易转换
native2ascii -encoding UTF-8 messages_zh_CN.txt messages_zh_CN.properties
native2ascii -encoding UTF-8 messages_en_US.txt messages_en_US.properties
pause将spring-webmvc jar包中的spring.ftl(lib\spring-webmvc\org\springframework\web\servlet\view \freemarker\spring.ftl)拷贝至ftl文件目录的include(include名可自定义)文件夹下

在html中引入spring.ftl

二、基于Session的国际化配置(在一的基础上进行配置)
首先配置拦截器
<!-- 国际化操作 拦截器 必需配置,可以和其它国际化方式通用 -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />再进行Session配置
<!-- 基于Session的国际化配置 --> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
Web后台配置(一般在login页面进行语言选择),通过改变session值改变当前语言,代码如下:
// String language = "zh_CN";
// String language = "ja_JP";
// String language = "zh_CN";
// 获取veiw传入的值
String language = request.getParameter("language");
// 当language为null时,则以客户浏览器语进行言国际化
if(language != null ) {
Locale locale = null;
if (language.equals("zh_CN")) {
// 汉语-中国
locale = new Locale("zh", "CN");
} else if (language.equals("en_US")) {
// 英语-美国
locale = new Locale("en", "US");
} else if (language.equals("ja_JP")) {
// 日语-日本
locale = new Locale("ja", "JP");
} else {
locale = new Locale("zh", "CN");
}
//以上内容是根据配置文件的配置信息实例化Locale对象。
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
} 相关推荐
81314797 2020-11-18
89314493 2020-11-03
81941231 2020-09-17
thisisid 2020-09-09
如狼 2020-08-15
82384399 2020-06-16
86384798 2020-05-12
80183053 2020-05-02
86384798 2020-04-26
86384798 2020-04-11
rionchen 2020-04-09
86384798 2020-04-07
86384798 2020-04-04
80183053 2020-03-07
87201943 2020-03-06
83961233 2020-02-26
87201943 2020-02-21