1、应用基础
(国际化Internationalization-I18N,本地化Localization-L10N。)
Java程序国际化主要通过3个类完成:
iava.util.ResourceBundle:用于加载一个资源包。
java.util.Locale:对应一个特定的国家/区域、语言环境。
java.util.ResourceBundle:用于将消息格式化。
2、准备资源
为了实现国际化,必须先提供程序所需的资源文件(key-value对)。资源文件的命名可以有一下三种形式:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,用户可以自由定义。而language和country都不是可以随便定义的,必须是Java所支持的语言和国家。
3、Struts2加载全局资源文件
加载全局资源文件的方式是通过配置常量来实现的。(struts.custom.i18n.resources)
4、访问国际化资源
JSP页面输出:<s:text name=”username” /> 用name属性来加载资源文件的key值。
Action中访问:可以使用ActionSupport类的getText方法。该方法可以接受一个name参数,既资源文件的key值。
表单元素的Label里输出:直接用对应表单的key属性。
5、输出带占位符号的国际化信息
JSP页面输出:在<s:text name=”username” />标签中使用多个<s:param …/>
Action中访问:使用getText(String aTextName,List args)或者getText(String key,String[] args)。
补充:
加载资源文件的方式
Struts2中还提供了多种方式加载国际化资源文件,包括指定包范围资源文件、类范围资源文件,以及临时指定资源文件。
(1)包范围资源文件(分而治之)
方法:在包的根路径下建立多个文件名为package_languae_country.properties的文件,一旦建立了这个系列的国际化资源文件,应用中处于该包下的所有Action都可以访问该资源文件。
注意:上边的包范围资源文件的baseName就是package,不是Action所在的包名。该文件通常需要放在该包的根路径下即可。
(2)Action范围资源文件(最优先)
方法:在Action类文件所在的路径下建立多个文件名为ActionName_language_country.properties的文件。一旦建立,该Action将可以访问该Action范围的资源文件。
(3)临时指定资源文件
JSP中用到,如果把<s:i18n …/>标签作为<s:text … />的父标签,作为<s:text … />标签将会直接加载<s:i18n …/>标签中指定的国际化资源文件;如果当作表单的父标签,则表单标签可以使用key属性将会从国际化资源文件中加载该信息。该文件保存在WEB-INF/classes路径下。
如:
<s:i18n name="tmp">
<s:text name="loginPage"/>
</s:i18n>
(国际化Internationalization-I18N,本地化Localization-L10N。)
Java程序国际化主要通过3个类完成:
iava.util.ResourceBundle:用于加载一个资源包。
java.util.Locale:对应一个特定的国家/区域、语言环境。
java.util.ResourceBundle:用于将消息格式化。
2、准备资源
为了实现国际化,必须先提供程序所需的资源文件(key-value对)。资源文件的命名可以有一下三种形式:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,用户可以自由定义。而language和country都不是可以随便定义的,必须是Java所支持的语言和国家。
3、Struts2加载全局资源文件
加载全局资源文件的方式是通过配置常量来实现的。(struts.custom.i18n.resources)
4、访问国际化资源
JSP页面输出:<s:text name=”username” /> 用name属性来加载资源文件的key值。
Action中访问:可以使用ActionSupport类的getText方法。该方法可以接受一个name参数,既资源文件的key值。
表单元素的Label里输出:直接用对应表单的key属性。
5、输出带占位符号的国际化信息
JSP页面输出:在<s:text name=”username” />标签中使用多个<s:param …/>
Action中访问:使用getText(String aTextName,List args)或者getText(String key,String[] args)。
补充:
加载资源文件的方式
Struts2中还提供了多种方式加载国际化资源文件,包括指定包范围资源文件、类范围资源文件,以及临时指定资源文件。
(1)包范围资源文件(分而治之)
方法:在包的根路径下建立多个文件名为package_languae_country.properties的文件,一旦建立了这个系列的国际化资源文件,应用中处于该包下的所有Action都可以访问该资源文件。
注意:上边的包范围资源文件的baseName就是package,不是Action所在的包名。该文件通常需要放在该包的根路径下即可。
(2)Action范围资源文件(最优先)
方法:在Action类文件所在的路径下建立多个文件名为ActionName_language_country.properties的文件。一旦建立,该Action将可以访问该Action范围的资源文件。
(3)临时指定资源文件
JSP中用到,如果把<s:i18n …/>标签作为<s:text … />的父标签,作为<s:text … />标签将会直接加载<s:i18n …/>标签中指定的国际化资源文件;如果当作表单的父标签,则表单标签可以使用key属性将会从国际化资源文件中加载该信息。该文件保存在WEB-INF/classes路径下。
如:
<s:i18n name="tmp">
<s:text name="loginPage"/>
</s:i18n>