java 国际化

来源:互联网 发布:南山铝业数据 编辑:程序博客网 时间:2024/06/01 19:56

 资源文件的命名:basename_language_country.properties
 
如果系统同时存在资源文件、类文件,系统将以类文件为主,而不会调用资源文件。
 
对于简体中文的Locale,ResourceBundle搜索资源的顺序是:
 
(1)baseName_zh_CN.class
 
(2)baseName_zh_CN.properties


(3)baseName_zh.class
 
(4)baseName_zh.properties
 
(5)baseName.class
 
(6)baseName.properties

加载资源文件的顺序
 
Action中加载资源文件,假设我们在某个ChildAction中调用了getText("user.title"),Struts 2.0的将会执行以下的操作:
 
(1)优先加载系统中保存在ChildAction的类文件相同位置,且baseName为ChildAction的系列资源文件。
 
(2)如果在(1)中找不到指定key对应的消息,且ChildAction有父类ParentAction,则加载系统中保存在ParentAction的类文件相同位置,且
 
   baseName为ParentAction的系列资源文件。
 
(3)如果在(2)中找不到指定key对应的消息,且ChildAction有实现接口IChildAction,则加载系统中保存在IChildAction的类文件相同位置,且
 
   baseName为IChildAction的系列资源文件。
 
(4)如果在(3)中找不到指定key对应的消息,且ChildAction有实现接口ModelDriven(即使用模型驱动模式),则对于getModel()方法返回的model对象,
 
   重新执行第(1)步操作。
 
(5)如果在(4)中找不到指定key对应的消息,则查找当前包下baseName为package的系列资源文件。
 
(6)如果在(5)中找不到指定key对应的消息,则沿着当前包上溯,直到最顶层包来查找baseName为package的系列资源文件。
 
(7)如果在(6)中找不到指定key对应的消息,则查找struts.custom.i18n.resources常量指定baseName的系列资源文件。
 
(8)如果经过上面的步骤一直找不到key对应的消息,将直接输出该key的字符串值。
 
对于在JSP中访问国际化消息,则简单的多,他们又可以分为两种形式:
 
(1)对于使用<s:i18n.../>标签作为父标签的<s:text.../>标签、表单标签的形式:
 
   a、将从<s:i18n.../>标签指定的国际化资源文件中加载指定key对应的消息。
 
   b、如果在a中找不到指定key对应的消息,则查找struts.custom.i18n.resources常量指定baseName的系列资源文件。
 
   c、如果经过上面步骤一直找不到该key对应的消息,将直接输出该key的字符串值。
 
(2)如果<s:text.../>标签、表单标签没有使用<s:i18n.../>标签作为父标签:
 
    直接加载struts.custom.i18n.resources常量指定baseName的系列资源文件。如果找不到该key对应的消息,将直接输出该key的字符串值。

0 0