- java对国际化的支持
java进行国际化时,主要使用如下3个类完成
1.java.util.Locale 对应一个特定的区域和语言环境
中国应用环境的Locale对象:Locale.CN
常用的方法如下:
getDefault() 获取本地系统默认的Locale对象
getCountry() 获取区域名
getLanguage() 获取语言
getDisplayCountry() 获取适合对用户显示的区域名
getDisplayLanguage() 获取适合对用户显示的语言
getAvaiableLocale() 返回一个Locale对象数组,表示支持的所有语言环境
2.java.util.ResourceBundle 用于加载一个资源包
资源包与Locale的相关联过程如下
//创建locale对象
Locale locale = new Locale("zh", "CN", "WIN");
//使用ResourceBundle的getBundle,并且将locale最为对象传入
ResourceBundle myResource = ResourceBundle.getBundle("Resource", locale);
javaz支持的区域和语言
public static void main(String[] args) {
/*****打印java支持的区域和语言 ******/
//通过getAvailableLocales获取Locale的list对象
Locale[] list = Locale.getAvailableLocales();
for (int i = 0; i < list.length; i++) {
//打印区域信息
System.out.print(list[i].getDisplayCountry() + "-->"
+ list[i].getCountry());
//打印语言信息
System.out.println(" "+list[i].getDisplayLanguage() + "-->"
+ list[i].getLanguage());
}
}
3.java.text.Message.Format 用于将消息格式化
- 使用资源文件
1.创建资源文件。
MessagesResources_zh_CN.properties
userName=\u7528\u6237\u540D
userPassword=\u5BC6\u7801
MessagesResources_en_US.properties
userName=Name
userPassword=Password
2.创建java类
package resource;
import java.util.Locale;
import java.util.ResourceBundle;
public class FirstI18N {
public static void main(String[] args) {
//获取默认区域的locale对象
Locale locale = Locale.getDefault();
//加载locale对应的资源
ResourceBundle resourceBundle = ResourceBundle.getBundle("resource.MessagesResources", locale);
System.out.println(resourceBundle.getString("userName"));
System.out.println(resourceBundle.getString("userPassword"));
}
}
- 使用资源类文件
资源类必须继承ListResourceBundle类
1.创建资源类
Resources_zh_CN.java
package resource;
import java.util.ListResourceBundle;
public class Resources_zh_CN extends ListResourceBundle{
static final Object[][] contents = new String[][]{
{"userName","姓名"},
{"userPassword","密码"}
};
@Override
protected Object[][] getContents() {
return contents;
}
}
Resources_en_US.java
package resource;
import java.util.ListResourceBundle;
public class Resources_en_US extends ListResourceBundle{
static final Object[][] contents = new String[][]{
{"userName","Name"},
{"userPassword","Password"}
};
@Override
protected Object[][] getContents() {
return contents;
}
}
2.创建使用资源类的java类
SecondI18N.java
package resource;
import java.util.Locale;
import java.util.ResourceBundle;
public class SecondI18N {
public static void main(String[] args) {
Locale locale = null;
if(args.length == 2){
locale = new Locale(args[0],args[1]);
}else{
locale = Locale.getDefault();
}
ResourceBundle resourceBundle = ResourceBundle.getBundle("resource.Resources",locale);
System.out.println(resourceBundle.getString("userName"));
System.out.println(resourceBundle.getString("userPassword"));
}
}
- MesageFormat类的使用
创建资源文件
MessageFormat_zh_CN.properties
userName={0},\u4ECA\u5929{1}
创建使用类MessageFormatThree.java
package resource;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;
public class MessageFormatThree {
public static void main(String[] args) {
Locale locale = null;
if(args.length == 2){
locale = new Locale(args[0],args[1]);
}else{
locale = Locale.getDefault();
}
ResourceBundle resourceBundle = ResourceBundle.getBundle("resource.MessageFormat",locale);
String userName = resourceBundle.getString("userName");
System.out.println(MessageFormat.format(userName,"xue",new Date()));
}
}