您的位置 首页 java

初识java—(三十八)国际化与格式化

7.6 国际化与格式化

国际化是指应用程序运行时,可根据客户端请求来自的国家/地区、语言的不同而显示不同的界面。例如,如果请求来自中文操作系统的客户端,则应用程序中的各个提示信息和帮助等都使用中文文字;如果客户端使用英文操作系统,则应用程序能 自动识别 ,并做出英文的响应。

7.6.1 java 国际化的思路

Java程序的国际化思路是将程序中的标签、提示等信息放在资源文件中,程序需要支持哪些国家、语言环境,就对应提供相应的资源文件。

Java程序的国际化主要通过三个类来完成:

  Java .util.ResourceBundle:用于加载国家、语言资源包
java.util. Locale :用于封装特定的国家/区域、语言环境。
java.text.MessageFormat:用于格式化带占位符的 字符串  

为了实现程序的国际化,必须先提供程序所需的资源文件。资源文件的内容是很多key-value对,其中key是程序使用的部分,而value则是程序界面的显示字符串。

资源文件的命名可以有如下三种形式:

 baseName_language_country.properties
baseName_language.properties
baseName.properties  

其中baseName是资源文件的基本名,可随意指定,而language和country都不可以随意变化而必须是Java所支持的语言和国家。

7.6.2 Java支持的国家和语言

Java支持绝大部分的国家和语言,如果需要获取Java所支持的国家和语言,则可调用Locale类的getAvailableLocales()方法,该方法返回个Locale数组,该数组包含了Java所支持的国家和语言。

举例1:

 public  static   void  main(String[] args) throws  Exception {
Locale[] locales = Locale.getAvailableLocales();
for(int i=0;i<locales.length;i++){
System.out.println(locales[i].getDisplayCountry()+":"+locales[i].getCountry()+" "+locales[i].getDisplayLanguage()+":"+locales[i].getLanguage());
}
}  

获取系统默认的国家/语言环境

Locale.getDefaule()

举例2:

 public static void main(String[] args) throws Exception{
Locale china = Locale.getDefault();
System.out.println(china.getLanguage()+"_"+china.getCountry());
}  

7.6.3 完成程序国际化

对下面程序完成国际化

 public static void main(String[] args) throws Exception{
System.out.println("Hello world");
}  

为上面程序提供如下两个文件

1、mess.properties

文件内容为:

Hello world = Hello,world!

2、mess_zh_CN.properties,此文件由native2ascii工具来生成,此工具的作用是将资源文件中的编码转换成系统使用 Unicode 字符编码。

文件内容为:

Hello world = 世界,你好!

命令格式如下:native2ascii mess.properties mess_zh_CN.properties

MyEclipse 中创建属性文件时,编辑工具已经提供了此功能,因此可以直接写资源文件,而略过第一步,此文件放置在源码文件src下。

3、程序修改如下:

 public static void main(String[] args) throws Exception{
Locale china = Locale.getDefault();
ResourceBundle bundle = ResourceBundle.getBundle("mess",china);
System.out.println(bundle.getString("HelloWorld"));
}
mess_en_GB.properties---UK 英国 mess_en_US.properties-----US 美国  

ResourceBundle. getBundle (“mess”,china);当不指定系统默认的语言环境时,即使用ResourceBundle. getBundle (“mess”);系统会默认查找当前语言环境下的资源文件,例如当前语言环境是中国,则会查找mess_zh_CN.properties文件,在系统中查找不到此文件时,才会找mess.properties属性文件。

文章来源:智云一二三科技

文章标题:初识java—(三十八)国际化与格式化

文章地址:https://www.zhihuclub.com/186514.shtml

关于作者: 智云科技

热门文章

网站地图