类集--国际化实现

补充知识--国际化实现
所谓的贵计划指的是同一个程序可以在不同的国家使用,不同的国家对于程序本身的逻辑操作是不会有任何
的变化,只有提示的国际化程序指的是可以动态的根据所在的区域改变语言的调用资源。
在java.util包下存在有一个Locale的类,这个类负责区域的设置,在本类有一个构造
构造:public Locale(String language,String country),要输入语言合国家代码
对于国家的代码,前面使用小写,后面使用大写,例如:zh_CN.cn_US
在Locale之中还提供有一个当前区域的方法,public static Locale getDefault()
范例:测试Locale
package classJI;
import java.util.Locale;
public class Localea {
public static void main(String[] args) {
// TODO Auto-generated method stub
Locale loc=Locale.getDefault();
System.out.println(loc);
Locale lb=new Locale("en","US");
System.out.println(lb);
}
}
国际化实现的关键一个是国家代码的区分,另外一个就是资源文件,而这种资源文件后缀都是*.properties(属性文件)
里面的内容都必须按照"key=value"的形式保存,而且文件的命名要求与类名称相同。例如,现在假设有一个
Message.properties文件
范例;定义Message.properties
hello.info=WELCOME
那么如果要想读取这个信息,不是使用Properties类,而需要使用一个ResourceBundle类,这个类有如下方法
取得默认的资源:public static final ResourceBundle getBundle(String baseName)
取得指定位置的资源:public static final ResourceBundle getBundle(String baseName,Localea localea)
范例:读取资源
package classJI;
import java.util.ResourceBundle;
public class c {
public static void main(String[] args) {
// TODO Auto-generated method stub
//读取Message.properties文件,此处不写后缀
ResourceBundle rb=ResourceBundle.getBundle("Message");
System.out.println(rb.getString("hello.info"));
}
}
清楚了以上的两个类,下面就可以进入到真正的国际化实现,首先国际化的实现之中必须准备出多个资源文件
,例如,如果是中文则资源文件应该是Message_zh_CN_properties,如果是英文Message_en_US_properties
范例:定义Message_zh_CN_properties文件,如果Locale为中文时读取
hello.info=\uds340\u5970 //只能保存转码的中文
范例:定义Message_en_US_properties文件,如果Locale为英文时读取
hello.info=HELLO WORLD
范例:设置Locale
package classJIea;
import java.util.ResourceBundle;
public class c {
public static void main(String[] args) {
// TODO Auto-generated method stub
Locale loc=new Locale("en","US");
//读取Message.properties文件,此处不写后缀
ResourceBundle rb=ResourceBundle.getBundle("Message",loc);
System.out.println(rb.getString("hello.info"));
}
}
虽然绑定资源的时候设置的只有一个Message名称,但是可以根据不同的环境加载不同的语言文件,而从
实现国际化程序的操作

猜你喜欢

转载自blog.csdn.net/a584898/article/details/81038236
今日推荐