JavaWEB国际化——笔记

来源:互联网 发布:雷电法术升级数据 编辑:程序博客网 时间:2024/05/17 01:12

1、什么是JavaWEB国际化
简单来说就是根据不同的区域,选择所对应地区的页面风俗习惯
一般情况下所要改变的内容有语言、数字、货币、日期,这些随着用户信息而变化的数据称为本地信息敏感数据
国际化又称i18n:internationalization
所以对于这些本地信息敏感数据,还有错误提示信息、状态信息等文本信息,不是直接写在WEB程序中,而是存储在外部资源中(properties文件)
2、Locale类
Locale实例对象代表一个特定的地理,政治或文化上的区域,它本身不做验证它自己代表的语言和地区信息是否正确,只是向本地敏感的类提供本地信息
2.1 Local类的创建通常不需要new出来
只需要调用enum(点后面都是大写的地区常量,所以应该是枚举类
,这个我随后做验证!)
来创建一个对象
3、本地敏感的类
就是在运行时需要根据Locale类对象来调整其功能的类就叫本地敏感类,比如有以下几个:
3.1DateFomat类
它是一个抽象类,可以调用工厂方法获取对象,当调用这个方法的所传的参数就会有Locale类的对象,
3.2NumberFormat
和DataFomat相似,
有个getCurrentInstance方法获取NumberFomat对象,调用对象的fotmat方法(参数为数字类型),返回的是货币格式的字符串
3.3MessageFormat
模式字符串与占位符:
模式字符串:On {1},xxxx{2}dsajjj{3}
占位符的三种方式
3.3.1{argumentindex}:
0-9之间的数字,表示表示索引
3.3.2{argumentIndex,formatType}
参数的格式化类型
3.3.3{argumentIndex,formatType,FormatStyle}:
与指定的格式化类型对应的模式,必须是一些合法模式的字符串

`public void testMessageFormat(){    String str = "Date :{0},Number:{1}";    Date date = new Date();    double num = 1234.12;    String result = MessageFormat.format(str,date,num);    System.out.println(result);}`

4、ResourceBundle :资源包类
4.1在类加载路径下需要有对应的资源文件:baseName.properties 其中baseName是基名
4.2可以使用 基名语言代码国家代码.properties 来添加不同国家或地区资源文件
4.3可以调用ResourceBundle的getBundle(基名,Locale实例)获取ResourceBundle对象
4.4可以调用ResourceBundle的getString(key)来获取资源文件的value值

5、WEB的国际化
5.1可以使用request.getLocale()获取Locale对象
5.2可以使用JSTL的fmt标签完成的国际化,后面使用框架提供的标签完成
5.3实现中英文的切换:
①提供两个超链接,提供不同的变量值
②根据变量值确定对应的Locale对象
③把Locale对象放入的session中
④绑定Locale对应的资源文件

<c:if test="${sessionScope.locale != null}">    <fmt:setBundle basename="i18n"/></c:if>
0 0
原创粉丝点击