有关使用资源绑定的详细信息
这个类主要用于解决国际化和本地化问题。 国际化和本地化不是两个概念,而是两者都一起出现。 可以说国际化的目的是实现本地化。 例如,“取消”在中文中表示为“取消”,而在英语中使用“取消”。 如果我们的计划面向国际,也是软件发展的趋势。 使用的人们必然是多语言环境,需要实现国际化。 资源绑定有助于轻松完成此任务。 如果程序需要特定于区域设置的资源(如String ),则可以从适合当前用户区域设置的资源包(大多数情况下为. properties文件)中加载程序。 这样,您就可以创建与用户区域设置无关的程序代码,并且可以隔离区域设置特定的信息,即使很少或不是资源包。
这使您能够:
轻松翻译成本地化或不同的语言
一次处理多个区域设置
稍后可以轻松修改以支持更多的区域设置
简而言之,该类的作用是读取资源属性文件(properties ),并基于. properties文件的名称信息(本地化信息)与当前系统的国家语言信息相匹配(也可以通过程序指定)
要使用此类,properties必须遵循一定的命名约定。 常规命名约定为自定义名称语言代码国家代码. properties,缺省情况下直接写为自定义名称. properties。
例如:
myres_en_US.properties
myres_zh_CN.properties
myres.properties
在中文操作系统中,如果同时存在myres_zh_CN.properties和myres.properties文件,则优先使用myres_zh_CN.properties,然后单击
未指定语言和区域的资源文件是系统的默认资源文件。
所有资源文件都必须经过ISO-8859-1编码,因此对于所有非西方语言处理,必须首先将其转换为Java Unicode Escape格式。 转换方法使用JDK附带的工具native2ascii。
资源绑定的类层次结构
PropertyResourceBundle将本地化文本保存在Java property文件中。
从资源绑定获取值
获取资源绑定实例后,可以通过以下方式获取本地化值:
gt object (字符串密钥;
getstring (字符串密钥);
获取字符串阵列(字符串密钥);
也可以使用keySet ()方法获取所有key。 Set keys=bundle.keySet (;
其他资源绑定方法可以通过查看文档获得。
测试和验证
新的四个属性文件
my _ en _ us.properties:cancel key=cancel
my _ zh _ cn.properties:cancel key=_ u53d6_ u6d 88 (取消() ) ) ) ) ) ) )。
my _ zh.properties:cancel key=_ u53d6_ U6 d 88 zh (zh取消) ) ) ) ) ) 652
my.properties:cancel key=u53d6 U6 d 88 default (取消默认值) () ) ) ) ) 0
获取绑定
resourcebundlebundle=resource bundle.get bundle (“RES”,newlocale )“zh”,“CN”)
1
其中,new Locale(“zh”、“CN”提供本地化信息。 在上面的代码中,程序首先在classpath下查找my_zh_CN.properties文件,如果my_zh_CN.properties文件不存在,则查找它
代码
import javax.annotation.resource;
import java.util.Locale;
import java.util.ResourceBundle;
公共类主{
publicstaticvoidmain (string args [ ] ) {
resourcebundlebundle=resource bundle.get bundle (“my”,newlocale )“zh”,“CN”)
string cancel=bundle.getstring (“cancel key”);
system.out.println(Cancel );
bundle=resource bundle.get bundle (" my ",Locale.US );
cancel=bundle.getstring (“cancel key”);
system.out.println(Cancel );
bundle=resource bundle.get bundle (" my ",Locale.getDefault ) );
cancel=bundle.getstring (“cancel key”);
system.out.println(Cancel );
bundle=resource bundle.get bundle (" my ",Locale.GERMAN );
cancel=bundle.getstring (“cancel key”);
system.out.println(Cancel );
bundle=resource bundle.get bundle (“my”
for (string key : bundle.keyset ) () () ) ) ) )。
system.out.println (bundle.getstring (key ) );
}
}
}
输出结果
取消
取消
取消
取消
取消
说明:前三个分别根据zh_CN、US、默认结果输出,第四个没有定义GERMAN属性文件,因此ResourceBundle是根据当前系统的语言环境获得的本地化信息所以如果找不到GERMAN,之后我会去找CHINA,所以我找到了一个叫res_zh_CH.properties的资源包。 最后,如果有多个属性文件,则可以通过Map的形式遍历属性文件中的每个值。