大家好,又见面了,我是你们的朋友全栈君。
初识国际化和ResourceBundle
这使编写的程序可以:
- 轻松地本地化或翻译成不同的语言
- 一次处理多个语言环境
- 以后可以轻松进行修改,以便支持更多的语言环境
测试及验证
定义四个资源文件:res_en_US.properties、res_zh_CN.properties、res_zh.properties、res.properties
ResourceBundle bundle = ResourceBundle.getBundle("res", new Locale("zh", "CN"));
其中new Locale(“zh”, “CN”);这个对象就告诉了程序你的本地化信息,就拿这个来说吧:程序首先会去classpath下寻找res_zh_CN.properties
package bundle.test;
import java.util.Locale;
import java.util.ResourceBundle;
public class BundleTest {
public static void main(String args[]) {
ResourceBundle bundle = ResourceBundle.getBundle("res", new Locale("zh", "CN"));
String cancel = bundle.getString("cancelKey");
System.out.println(cancel);
bundle = ResourceBundle.getBundle("res", Locale.US);
cancel = bundle.getString("cancelKey");
System.out.println(cancel);
bundle = ResourceBundle.getBundle("res", Locale.getDefault());
cancel = bundle.getString("cancelKey");
System.out.println(cancel);
bundle = ResourceBundle.getBundle("res", Locale.GERMAN);
cancel = bundle.getString("cancelKey");
System.out.println(cancel);
}
}
取消 cancel 取消 取消
ResourceBundle baseBundle = null;
for (Locale targetLocale = locale;
targetLocale != null;
targetLocale = control.getFallbackLocale(baseName, targetLocale)) {// 这里就是去拿备用方案的
// do something 我们暂时不关心
}
public Locale getFallbackLocale(String baseName, Locale locale) {
if (baseName == null) {
throw new NullPointerException();
}
Locale defaultLocale = Locale.getDefault();
return locale.equals(defaultLocale) ? null : defaultLocale;
}
国际化和本地化
一个国际化的程序通常具有以下特征:
- 有一个附加的本地化数据(localized data)及拥有在全世界各个地区执行的能力。
- 文本的元素,比如状态信息或GUI截面的lables,不是直接写(hardcoded)在程序中,而是被存储在本地化的数据中,并且能被程序正确的动态的使用。
- 支持新的语言时,不需要修改程序,不需要重新编译。
- 文化差异的数据,比如日期和货币,必须根据拥护的语言和习惯显示不同的格式。
- 可以被迅速的本地化。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158687.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...