本章目标
掌握国际化程序的基本实现原理。
掌握资源文件的作用。
掌握Locale类的基本实现原理。
掌握ResourceBundle类的作用。
可以使用MessageFormat处理动态文本。
了解资源类的使用。
国际化程序
国际化的操作就是指一个程序可以同时适应多门语言,即:如果现在程序的使用者是中国人,则会以中文为显示文字,如果现在程序的使用者是英国人,则会以英语为显示文字,也就是说可以通过国际化操作,让一个程序适应各个国家的语言要求。
那么对于各个国家来说,每一个程序的代码是不会有任何改变的,但是只是其显示的文字上有所差异而已。
国际化程序的实现思路:
程序根据不同的语言环境找到不同的资源文件,之后从资源文件中取出内容,资源文件中的内容都是以key—value的形式保存的,所以在读取的时候通过其key找到对应的value即可。
国际化实现的支持类
如果想实现Java程序的国际化操作必须通过以下三个类完成:
java.util.Locale:用于表示一个国家的语言类。
java.util.ResourceBundle:用于访问资源文件。
java.util.MessageFormat:格式化资源文件的占位字符串。
Locale类
Locale表示的是本地,实际上使用的是一个ISO编码的封装类。对于各个国家来说都存在一个唯一的编码,那么这种编码就称为ISO编码,使用Locale可以指定一个具体的国家编码。
例如:
中国的编码:zh-CN
英语-美国的编码:en-US
法语的编码:fr-FR
ResourceBundle
此类是专门完成属性文件读取操作的,读取的时候直接指定文件名即可(此文件名一般不需要指定后缀,后缀统一为*.properties),可以根据Locale所指定的区域码来自动选择所需要的资源文件。
public static final ResourceBundle getBundle(String baseName),此方法是指定操作的资源文件,此方法找到的是默认的操作系统的语言Locale对象。
public static final ResourceBundle getBundle(String baseName, Locale locale),此方法也是指定操作的资源文件,并传入Locale对象。
public final String getString(String key)根据key取得对应的value。
下面通过一道程序来观察资源文件的使用,以及如何使用ResourceBundle读取资源文件。
资源文件命名的时候最好采用单词首字母大写的方式完成。
Message.proper