Java WEB开发--国际化

一、国际化
国际化概念:软件开始,要使它能同时应对世界不同地区和国家的访问,并针对不用地方和国家的访问,提供相应、符合来访者阅读习惯的页面或数据。inernationalization   i18n
国际化特征:
1、对于程序中固定使用的文本元素,例如菜单、导航条等
2、对于程度动态产生的数据,例如日期、货币等软件应能根据当前所在的国家或地区的文化习惯进行显示


国际化实现:
1、对于软件中的菜单栏、导航条等这些固定不变的文本信息,可以把它们写在一个propertires文件中,根据不同的国家编写不同的properties文件,一组properties文件称之为一个资源包
2、ResourceBundle类用户描述一个资源包, 通过getBundle方法访问相应的propertie
创建资源包和资源文件:
一个资源包中的每个资源文件都必须又有共同的极品的必须基名
在cdm中转换一个字符串   naive2ascii  去带编码,将资源文件中的中文替换掉 


二、创建资源包和资源文件
1、一个资源包中的每个资源文件都必须拥有共同的基名。除了基名,每个资源文件的名称中还必须有标识其本地信息的附加部分。
2、每个资源包都应有一个默认资源文件,这个文件不带有标识本地信息的附加部分。若ResourceBundle对象在资源包中找不到与用户匹配的资源文件,它将选择该资源包中与用户最相近的资源文件,如果再找不到,则使用默认资源文件。例如:myproperites.properties
3、资源文件的书写格式
资源文件的内容通常采用“关键字=值”的形式,软件根据关键字检索值显示在页面上。一个资源包中的所有资源文件的关键字必须相同,值则为相应国家的文字。
并且资源文件中采用的是properties格式文件,所以文件中的所有字符都必须是ASCII字码,对于像中文这样的非ACSII字符,须先进行编码
4、编程实现固定文本的国际化
(1)ResourceBundle类提供了一个静态方法getBundle,该方法用于装载资源文件,并创建ResourceBundle实例:
      Locale?currentLocale?=?Locale.getDefault();
    ResourceBundle?myResources?= 
          ResourceBundle.getBundle(basename,?currentLocale);
basename为资源包基名(且必须为完整路径)。
如果与该locale对象匹配的资源包子类找不到。一般情况下,则选用默认资源文件予以显示。 
(2)加载资源文件后, 程序就可以调用ResourceBundle 实例对象的 getString 方法获取指定的资源信息名称所对应的值。
      String value =  myResources.getString(“key");
三、JSTL国际化标签
1、<fmt:setLocale>标签   属性:value variant,
用于在JSP页面中显示地设置用户 的本地化信息,value的值,不能乱写,在浏览器语言那儿可以查看如中国为:zh_CN
value 可以是Locale对象  也可以是规定的字符串
2、 <fmt:setBundle basename="" var="" scope=""/>   属性  basename  基名描述资源包   var  scope 以var属性名存储在指定的作用域
如果是成对标签的话,bundle对象只在标签体内有效,不能保存在作用域中 
3、<fmt:message key="" bundle=""> 用于从一个资源包中读取信息并进行格式化输出、
如果属性带上var  则代表不输出,而是存储作用域中。
4、<fmt:bundle basename="com.csdn.resource.MyResource" prefix="com.csdn.www.">
  <fmt:message key="greetings"></fmt:message>
  </fmt:bundle>创建一个用于描述资源包的ResourceBundle对象,该对象在标签体内有效, prefix表示前缀


四、动态数据
数值、货币、时间、日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将他们从应用程序分裂出来,用javaUutil类解决


Locale  实例对象代表一个特定的地址,政治、文化区域
本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息
DateFormat
将一个时期/时间对象格式化为表示某个国家地区的日期/时间字符串
如果对日期操作   DateFormat.getDateInstance()
如果对时间操作   DateFormat.getTimeInstance()\
如果对日期和时间操作   DateFormat.getDateTimeInstance()
实例化完, 调用format(Date date)方法 转换成字符串
反向解析:parse(String s)  注意实例化对象的时候设置的类型。、




NumberFormat  
主要用于对货币的操作
NumberFormat nf=NumberFormat.getCurrencyInstance(Locale.US);
double f=56.8;
System.out.println(nf.format(f));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值