1、 软件的国际化
a) 软件开发时、要是它能够同时应对世界不同地区和国家的访问、冰针对不同地区和国家的访问,提供相应的、符合来访问阅读习惯的页面或数据
2、 合格的国际化软件
a) 软件的国际化需具备哪些特征
i. 对于程序中固定使用文本元素如:菜单栏 等需要根据来访者的地区和国家玄色不同语言的文本为之服务
ii. 对于程序动态产生的数据如货币,软件应能根据当前所在的国家和地区的文化习惯进行显示
3、 固定文本元素的国际化
a) 把固定不变的文本信息、可以把他们写到一个properties文件中。并根据不同的顾家编写不同的properties文件。这一组properties文件称为 “一个资源包”
b) 使用ResourceBundle类描述一个资源包并且 ResourceBundle类提供了相应的方法getBundle,这个方法可以根据来访者的国家地区自动获取与之对应的资源文件予以显示。
4、 创建资源包和资源文件
a) 一个资源包里的资源文件必须有共同的基名,每个资源文件的名称中还必须有标识其本地信息的附加部分如:myproperites_zh.properties” “myproperites_en.properties
b) 每个资源包都应该有一个默认资源文件,这个文件不带有标识本地信息的附加部分
5、 资源文件的书写格式
a) 资源文件的内容通常采用“关键字=值”的形式,软件根据关键字检索值显示在页面上。一个资源包中的所有资源文件的关键字必须相同,值则为相应国家的文字
6、 ResourceBundle类提供了一个静态方法getBundle,用于装载资源文件
a) Locale currentLocale = Locale.getDefault();
ResourceBundle myResources =ResourceBundle.getBundle(basename, currentLocale);
b) basename为资源包基名(完整路径)
c) 如果与该locale对象匹配的资源包子类找不到。一般情况下,则选用默认资源文件
予以显示。
d) 加载资源文件后, 程序就可以调用ResourceBundle 实例对象的 getString 方法获取指定的资源信息名称所对应的值。
String value = myResources.getString(“key");
7、 动态数据的国际化
a) 数值、货币、时间、日期等数据由于可能在程序运行时动态产生,所以需要想特殊处理
b) Locale类
i. Locale 实例对象代表一个特定的地理,政治、文化区域。
ii. 一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由本地敏感的类去完成
8、 DateFormat类
a) 可以将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串。
b) DateFormate类除了可以按国家地区格式输出日期外,,他还定义了一些用于描述日期/时间的显示模式的int型的常量,包括 FULL、LONG、MEDIU、DEFAULT、SHORT、实例化DateFormat对象是可以使用这些常量控制时间/日期的显示长度
c) DateFormat类的方式
i. getDateInstance(int style, Locale aLocale):以指定的日期显示模式和本地信息来获得DateFormat实例对象,该实例对象不处理时间值部分。
ii. getTimeInstance(int style, Locale aLocale):以指定的时间显示模式和本地信息来获得DateFormat实例对象,该实例对象不处理日期值部分。
iii. getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale):以单独指定的日期显示模式、时间显示模式和本地信息来获得DateFormat实例对象。
d) DateFormat对象的方法
i. Format:将date对象格式化为符合某个本地环境习惯的字符串
ii. Parse:将字符串解析为日期/时间爱你对象
iii. (注;parse和format完全相反,一个是把date时间转化为相应地区和国家的显示方式,一个是把一个是把相应地区的时间日期转化成date对象)
e) DateFormat对象每个线程都应该创建自己的DateFormate实例对象