如何实现 Spring MVC i18n 国际化,动态设置默认语言
1.在spring配置文件中配置资源文件properties的位置及公共名,下列配置指定的properties文件处于src目录下的resources文件夹中,名字为message_info_*.properties。
bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
propertyname="basenames"
list
valueresources/message_info/value
/list
/property
propertyname="useCodeAsDefaultMessage"value="true"/!--
Set whether to usethe message code as default message instead of
throwing aNoSuchMessageException. Useful for development
anddebugging. --
/bean
2.在spring配置文件中配置基于session的处理,将提交上来的locale参数进行处理,下列代码默认加载的语言是中文简体拦咐。
bean id="localeResolver"class="org.springframework.web.servlet.i18n.SessionLocaleResolver"
propertyname="defaultLocale"value="zh_CN"/property
/bean
3.在spring配置文件中的controller内配置相应的拦截器。
beanid="className"
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"
propertyname="interceptors"
list
beanclass="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/
/list
/property
/bean
4.相应的properties文件内写入对应的语言,配置文件的语言信息以keyvalue的形式进行存储。
5.利用jstl的fmt标签库进行相应数据的国际化。
1)导入相应的fmt标签库%@taglib prefix="fmt" uri=""%
2)需要国肆衡羡际化处写入fmt:messagekey="title"/fmt:message标签,此处将显示相应properties文件中名为title的信息。
3)页面上写成三个连接用于控制国际化的转换
ahref="/CloudPortal/staff/goindex.do?locale=zh_CN"裂拍Chinese/a//message_info_zh_CN.properties
ahref="/CloudPortal/staff/goindex.do?locale=en_US"English/a//message_info_en_US.properties
ahref="/CloudPortal/staff/goindex.do?locale=zh_TW"Chinese(TW)/a//message_info_zh_TW.properties
locale内部固定的参数用于判断读取请求的配置文件。
-------------------------------------------------------------
分割线--------------2014-11-11 by
zhang------------------------------------------------------------------------------------------------------
springmvc如何实现国际化
1.springmvc实现国际化有多种方式(自行百度)。
几种方式无非就是配置国际化方式和读取国际化资源文件从而实现国际化,下面本文介绍基于session的国际化配置,感觉配置比较方便快捷一些。
(1).首先配置配置国际化在spring-servlet.xml,即springmvc的配置文件中(xxx-servlet.xml)。
!-- springmvc 国际化配置 (基于Session的国际化配置 方式)--
bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver"
/bean
bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
property name="fallbackToSystemLocale"
valuefalse/value
/property
property name="basename" value="/WEB-INF/i18n/resources/messages" /
/bean
(2)在WEB-INF文件夹下按照
[html] view plaincopy
/WEB-INF/i18n/resources/messages
配置新建文件夹,在文件夹里面新建配置文件
messages_zh_CN.properties(中文国际化资源文件),messages.properties(英文国际化资源文件)国际化资源文件。
到此配置完毕。
注:springmvc的国际化必须要经过控制器Controller才能生效。
2.如何在jsp页面读取国际化
(1)引入spring:message/标签如:spring:message key=''user.manage.role/
或者
(2)引入fmt:message/标签例如fmt:message key='user.manage.role'/,其中user.manage,role在messages_zh_CN.properties中配置为:user.manage.role=\u89D2\u8272,在messages.properties中配置为user.manage.role=Role,即可。
SpringBoot如何配置和引用国际化资源
第一种将资源文件放在源码里面:
那么配置文件信息如下:
!-- 读取国际化资源文件 == 资源文件在包里面,路径写全包名--
bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
property name="basenames"
list
valuecn/ddx/i18n/messages/value
/list
/property
/bean
第二种配置文件在WEB-INF下面自己创建的目录下面:
那么配置文件信息如下:
!-- 读取国际化资源乱信文件 == 资源文件在WEB-INF下面 ,可以配置多个 --
bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
property name="basenames"
list
value/WEB-INF/lang/messages/value
/list
/property
/bean
需要注意的是两者配置的class不同
配置文件路径中的“祥李messages”为资源文件名称中_en_US.properties的前面部分,可谨陪迟以自定义。
javaEE Web项目 Spring 的国际化异常 No message found
我也喊猛遇到这个问题了。现在已经解决
解决方法:
application.properties增没渗袜加配置:如枯激下:
login是你的文件的名字
#国际化配置
spring.messages.basename=i18n/login
#-1 no expried
spring.messages.cache-seconds= -1
spring.messages.encoding=UTF-8
SpringBoot国际化(jsp)
原来的项目用的是jsp,改成html太麻烦,这里介绍一辩弊下jsp国际化的(如果仿灶物是html使用thymeleaf,它自带了的)备液:
1.项目路径如图:
2.相关依赖:
3.新增I18nConfig(设置默认语言)
4.新增LocaleResolver(修改local的值)文件
5.application.yml文件
6.新建messages.properties,messages_zh.properties,messages_en.properties个文件:
7.index.jsp
效果:
spring 配置国际化porperties文件怎么取数据
一般来说。我们会将一些配置的信息放在。properties文件中。
然后使用${}将配置文件中的信息读取至搭卖spring的配置文件。
那么我们知腊逗如何在spring读取properties文件呢。
1.首先。我们要先在spring配置文件中。定义一个专门读取properties文件的类.
例:
bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
property name="locations"
list
valueclasspath*:jdbc.properties/value
!--要是有多个配置文件,只需在这里继续添加即可 --
/list
/property
/bean
这里为什么用locations(还有一个location)
是因为。一般来说。我们的项目里面。配置文件可能存在多个。
就算是只有一个。那将来新添加的话。只需在下面再加一个value标签即可。
而不必再重新改动太多。(当然。性能上是否有影响,这个以当前这种服务器的配置来说。是基科可以忽略不计的)。
然后我们就可以在jdbc.properties文件中填写具体的配置信息了。
!-- 配置C3P0数据源 --
bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
property name="driverClass"
value${jdbc.driverClassName}/value
/property
property name="jdbcUrl"
value${jdbc.url}/value
/property
property name="user"
value${jdbc.username}/value
/property
property name="password"
value${jdbc.password}/value
/property
/bean
jdbc.properties文件写的信息。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
附加一个列子:
bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
property name="locations"
list
valuefile:/data/pc-config/passport.properties/value
valueclasspath:memcached.properties/value
/list
/property
/bean
classpath:是指的当前类文件的目录下。
file:在局仿window下是指的当前分区(比如你的项目是放在d盘,则是在d:/data/pc-config/passport.properties)
在linux下,则是当前路径下的文件/data/pc-config/passport.properties
springboot国际化(前后端分离情况)
spring.messages.basename=messages/messages
其中if else部分可以省略,看前端传的情况,前端如果传乱态正送header中的Accept-Language是en,zh,ja这样的简写,就需要补全,如果前端传过来的就是en-US,zh-CN,这样的就不需要if,else转换。
当然也可以不用messageSource用ResourceBundle :
messages.properties中的是默认的,如果语言取不到就取默认的。
messages_zh_CN.properties是中文的配哗悔置:
messages_en_US.properties是英文配置:
比如切换语言的多选框:
具体方法:
则jquery调用可以是这样:
其中 headers:{ 'Accept-Language':localStorage.getItem('lang')||'en' }, 这个就是根据你切换的语言,传给服务端对应的语言,这样闭耐就做到前后端同步。