龙空技术网

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

IT研究僧 84

前言:

此刻姐妹们对“myeclipse调整代码格式”都比较关切,看官们都想要了解一些“myeclipse调整代码格式”的相关文章。那么小编在网络上网罗了一些有关“myeclipse调整代码格式””的相关文章,希望看官们能喜欢,姐妹们快快来学习一下吧!

7.6 国际化与格式化

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

7.6.1 Java国际化的思路

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

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

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

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

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

baseName_language_country.propertiesbaseName_language.propertiesbaseName.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属性文件。

标签: #myeclipse调整代码格式