传智播客java web 学习,国际化的web程序开发(二)

来源:互联网 发布:用电脑玩手游的软件 编辑:程序博客网 时间:2024/04/29 03:11

    继续学习张老师的开发国际化的Web程序,觉得这部分确实很重要,张老师举例的代码我敲了一遍,真的不错,帮助快速理解基本理论知识。
NumberFormat类


    它和DateFormate类一样,也是Format类的一个抽象子类,是描述所有数值的表现格式的基类。它可以将一个数值格式化为符合某个国家或地区的数值字符串,也可以将符合某个国家或地区习惯的字符串解析为对应的数值。使用时不用考虑本地环境下的十进制小数点,千进位分隔符的规定。和DateFormate类一样,它是一个抽象类,不能使用构造方法获得其实例对象,jdk提供了获得其之类对象的一些静态方法。


在张老师的举例中比较常用的几个有
getNumberInstance():以操作系统的本地信息来获得具有多种用途的NumberFormat实例对象。
getIntegerInstance() :以操作系统的本地信息来获得处理整数的NumberFormat实例对象。
getCurrencyInstace():以操作系统的本地信息来获得处理货币的NumberFormat实例对象。
getPercentInstance() :以操作系统的本地信息来获得处理百分数比值的NumberFormat实例对象。
以上方法还有他们的传入Local对象参数的重载方法,以Local对象所标识的本地信息来获得相应的NumberFormat实例对象。

 

NumberFormat类同样有一个format方法和一个parse方法用于数值的格式化和解析,对这两个方法的使用举两个简单的例子:
1.格式化  String numString=NumberFormat.getInstance().format(12345);
2.解析: NumberFormat nf=NumberFormat.getInstance(Locale.GERMAN);
Number number=nf.parse("123.45");
需要注意的是,如上例解析一个数值字符串时,这个字符串的首字母必须是数值,其前面不允许有空白字符或任何其他字符。被解析的数值字符串后面可以有空格或其他费数值字符,解析时他们及其后面的数值字符将被忽略。

 

MessageFormat类
   MessageFormat类提供了一种用参数替换模式字符串中的占位符的方式,根据模式字符串中包含的占位符产生的一系列的格式化对象,然后调用这些格式化对象对参数进行格式化,并用格式化后的结果字符串替换模式字符串中的相应占位符。MessageFormat类是Format类的具体子类,可以通过构造方法创建它的实例对象,本身并不执行与本地信息相关的行为,所有与本地信息相关的行为都由它调用的格式化对象(NumberFormat或DateFormat)去执行。
   占位符有三种形式,
 {ArgumentIndex}, {ArgumentIndex,FormateType},{ArgumentIndex,FormateType,FormateStyle}
ArgumentIndex是0到9之间的一个数字,表示要格式化的对象数据在参数数组中的索引号。FormateType表示参数的格式化类型,Number,date,time等;FormatStyle表示与指定的格式化类型对应的模式。

 

张老师在最后对web应用国际化做了总结,web站点实现国际化的两种方式:
 1.针对不同语言和地区的用户开发出不同的jsp网页版本,当用户请求资源时根据请求消息中的本地信息为用户提供合适的版本。
2.将对本地资源敏感的数据从网页中分离出来。放在.properties属性资源文件中。对于应用中的数值货币和日期/时间等本地敏感的数据,可以通过占位符的方式设置他们的格式类型和格式模式。
如果web应用中有大量数据要根据用户的本地信息进行显示,则可以采用方式1,少量则可以采用方式2,实际应用中,这两种方式往往结合使用。