保存一个文件到classpath下面,如message.properties,这个是西欧的默认资源文件,其他语言的方式是basename_语言代码_国家代码.properties,如message_zh_CN.properties。全局加载,struts2是struts.custom.i18n.resources=message,如果保存在包下面则是包名.资源名如,我们放到了com.test包下面就是struts.custom.i18n.resources=com.test.message。页面输出资源信息
<s:text name="messagekey" />
<s:property value=%{getTest("messageKey"}/>
在java中国际化主要是java.util.ResourceBundle加载资源包 java.util.Locale 对应一个特定的国家区域,语言环境,java.text.MessageFormat
资源文件可以有三种格式
basename_language_country.properties
basename_language.properties
basename.properties
通过Locale.getAvailaleLocales0来获取所有的支持的国家和语言
struts包范围资源文件
包名_language_country.properties,这里的报名不是action的包名,是资源文件所在的包名(不是完整包名),如com.test包下面就是test.properties,而com.test包的action和com.test的子包都可以访问
位于这个包下的action都可以访问
Action范围
ActionName_language_county.properties
和action类所在同一个包下。
加载顺序,先加载action,找不到的话,然后是父类的action,然后是action实现的action接口,然后是模型驱动的getModel返回的modle执行加载顺序类似的操作。找不到,找package的,一直找到第一级package,找不到找全局的。一直找不到,就输出这个key的字符串名。
为用户设置语言,ActionContext.getContext().setLocale(Locale arg);另一个有一个il8n的拦截器,会获取request_locale参数自动设置国家和语言。另外i18n拦截器会将上面说的生成的locale对象保存到session名为WW_TRANS_I18N_LOCALE。
<s:text name="messagekey" />
<s:property value=%{getTest("messageKey"}/>
在java中国际化主要是java.util.ResourceBundle加载资源包 java.util.Locale 对应一个特定的国家区域,语言环境,java.text.MessageFormat
资源文件可以有三种格式
basename_language_country.properties
basename_language.properties
basename.properties
通过Locale.getAvailaleLocales0来获取所有的支持的国家和语言
struts包范围资源文件
包名_language_country.properties,这里的报名不是action的包名,是资源文件所在的包名(不是完整包名),如com.test包下面就是test.properties,而com.test包的action和com.test的子包都可以访问
位于这个包下的action都可以访问
Action范围
ActionName_language_county.properties
和action类所在同一个包下。
加载顺序,先加载action,找不到的话,然后是父类的action,然后是action实现的action接口,然后是模型驱动的getModel返回的modle执行加载顺序类似的操作。找不到,找package的,一直找到第一级package,找不到找全局的。一直找不到,就输出这个key的字符串名。
为用户设置语言,ActionContext.getContext().setLocale(Locale arg);另一个有一个il8n的拦截器,会获取request_locale参数自动设置国家和语言。另外i18n拦截器会将上面说的生成的locale对象保存到session名为WW_TRANS_I18N_LOCALE。