一、java中的国际化
a) jave中实现国际化的原理
java中通过Locale对象可以指定或得到当前系统的默认国际化配置及语言代码和国家代码,然后通过ResourceBundle类得到对应Lacale对象的国际化配置文件即Properties文件,通过读取键的值实现国际化。
b) java中实现国际化需要的类
locale类:
可以指定所要显示的语言,即对应的国际化文件
Locale类的方法:
//得到当前系统默认的编码
Locale l=Locale.getDefault();
//自定义Locale
//参数1:语言编码en(英文) zh(中文) ja(日本)
//参数2;国家编码US(英国) CN(中国)JP(日本)
Locale l1=new Locale("en","US");
//得到国家代码
l.getCountry();
//得到语言代码
l.getLanguage();
ResourceBundle类:
可以读取相应的Locale 对应的property文件
c) 更改系统默认的国际化编码
控制面板—语言区域
d) 在IE中修改默认的编码
IE首选项—语言
e) property文件的文件名编写规则
Basename名_语言代码_国家代码.properties
说明: BaseName名可以自定义但后面的名称必须按以上规则书写
f) 读取对应的Properties文件
//读取对应的Properties文件
//第一个参数对应相应的basename
//第二个参数对应相应的Locale
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
rb.getString("key值");
g) Properties文件的中文乱码问题
在读取Properties文件时键对应的中文键值会出现乱码应使用jdk的native2ascii.exe 工具将中文转换成unicode码再写入Properties文件中
h) Native2ascii .exe的使用方法
在jdk的bin目录下双击native2ascii.exe 将需要转换的中文copy到该命令提示行下 回车即可看到转换的unicode编码将其替换对应键的值即可
Eg:
将a=你好
替换成 a= \uf60\u597d
批量替换
Native2ascii.exe 源文件路径 替换文件路径
系统会自动根据控制面板设置的国际化编码进行转换。
i) Properties 文件的占位符问题
Properties 文件中可以使用{0}{1}进行占位符设置注意是从0位开始
使用占位符
MessageFormat mf =new MessageFormat(rb.getString("键名"));
String result = mf.format(new Object[]{"a","b"});
j) 国际化文件的路径问题
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
默认读取的是src下的文件,若路径不同应标明路径
方法:msg + . + Properties文件的BaseName名
Eg: msg.Message
k) 注意:
默认情况下ResourceBundle会根据参数Locale的国家代码和语言代码自动匹配相应的Properties文件进行读取(所以properties文件的命名必须合法)。
若没有找到相应文件则加载系统默认的国际化配置文件(读取系统设置的国家代码和语言代码)若系统的设置也没有与之对应的properties文件则加载Basename名.properties文件。若还没有对应文件则报错。
l) 注意2:新建java项目进行测试时必须建立源src文件夹否则报错。
二、 Struts硬编码国际化
a) Stuts硬编码国际化即对页面中不变的文字进行国际化处理。
b) 使用方法
i. 在struts-config.xml:文件中加入
<message-resources parameter="MessageResources" />
第一个参数及Properties文件BaseName的名称
ii. 在properties文件中配置相关的字段,注意中文要转换成unicode码
iii. 在页面中用Struts标签替换需要国际化的内容
<bean:message key=” ”>
c) 注意:加载国际化文件时若没有找得相关文件(IE中的国际化配置)则会根据操作系统的语言配置进行查找若还没有会加载默认文件即 Basename.properties文件。
d) 通过修改session 实现手动修改语言
request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
第二个参数为自定义的Locale对象。
或者:
this.setLocale(request, currentLocale);
第二个参数为自定义的Locale对象
三、 动态文本国际化
1、 方法
在action中定义普通信息和错误信息
ActionMessage m=new ActionMessage("upass",new Object[]{"pppp"});
第一个参数是该信息的key值,第二个参数是占位符的内容,若仅有一个占位符可以不用object数组
直接写成String类型的参数
ActionMessage m=new ActionMessage("upass",”sss”);
2、 分别定义普通信息和错误信息的ActionMessages
ActionMessages messages=new ActionMessages();
3、 将普通信息和错误信息分别放入相应的messages中
Messages.add("uu",m3);
第一个参数为信息的名称,第二个参数为定义的ActionMessage
4、 将普通信息存入
this.saveMessages(request,messages);
注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
5、 将错误信息存入
this.saveErrors(request, messages2);
注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
6、 读取普通信息
<html:messages id="s" message="true">
<bean:write name="s"/>
</html:messages>
解析: message=”true”信息标识此标签读取的是普通信息
Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。
<hr>
<html:messages id="s" message="true" property="upass">
<bean:write name="s"/>
</html:messages>
解析: message=”true”信息标识此标签读取的是普通信息。
Property表示从该信息集合中取出名为此属性值的元素的集合。
Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。
7、 读取错误信息
<html:messages id="s" property="upass">
<bean:write name="s"/>
</html:messages>
解析: message标签默认读取的是错误信息。
<html:errors property="uu"/><br>
解析:该标签可以读取所有错误信息也可根据property读出所有是该属性名的错误信息的集合。
8、 错误信息的格式定义
定义在国际化的Properties文件中
Eg:
errors.header=<UL> 信息的头部代码
errors.prefix=<LI><font color="red"> 每条信息的开头代码
errors.suffix=</font></LI>每条信息的结尾代码
errors.footer=</UL> 信息的尾部代码
相关推荐
总的来说,Struts2的资源国际化机制使得开发者可以轻松地为Web应用程序添加多语言支持,提高用户体验,而无需深入修改程序的内部结构。只需维护好各个语言版本的资源文件,系统就能根据用户的语言环境自动显示相应的...
Struts2作为一款流行的MVC(Model-View-Controller)框架,为开发者提供了便捷的方式来实现国际化。本文将深入探讨如何在Struts2中利用i18n标签来创建多语言支持的应用。 首先,我们需要理解i18n的概念。"i18n"是由...
在Java Struts框架中实现国际化,能够使应用更好地服务于全球用户。 首先,我们来看一下Struts的国际化实现机制。Struts使用资源包(Resource Bundle)来存储各种语言的文本消息。资源包通常是一个`.properties`...
在Struts2中,实现国际化是一项重要的任务,因为它允许应用程序为全球用户提供本地化的体验。 在"struts2i18n"这个示例中,我们将会看到如何在Struts2环境中配置和使用i18n功能。这个实例基于Struts2.16版本,一个...
struts2国际化MyEclipse开发struts2国际化MyEclipse开发童叟无欺
### Struts 1.2 国际化详解 #### 一、引言 在软件开发过程中,为了满足不同地域和语言环境下的用户需求,软件国际化(Internationalization, 简称 I18N)和本地化(Localization, 简称 L10N)成为了一项重要的技术...
标题提到的“国际化与Struts2”意味着我们将探讨如何在Struts2应用中实现多语言支持。在描述中提到的“与上一个文件是相同效果、相同目的的升级文件”,可能是指这个文件包含了一些更新或者改进,用于增强之前版本的...
在国际化(i18n)方面,Struts1提供了强大的支持,使得应用程序可以适应不同语言和地区的用户需求。以下是关于Struts1.x国际化的一些核心知识点: 1. **资源包(Resource Bundle)**: - 在Java中,资源包是包含...
### Struts1 国际化详解 #### 一、国际化概念与意义 国际化(Internationalization),简称 I18N(取首字母I和尾字母N,中间共有18个字母),指的是开发软件产品时,使其具有能够根据不同国家或地区的语言和文化...
在Struts2中实现国际化(i18n)是一项重要功能,它允许应用程序支持多种语言,以满足全球用户的需求。国际化不仅仅是翻译文本,而是设计应用程序以适应不同地区的文化习惯和语言需求。 首先,让我们来探讨一下...
struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2...
Struts基本用法之国际化
在这个"Struts2国际化源代码"资源中,我们可以深入理解如何在Struts2应用中实现国际化功能。 首先,国际化的核心在于资源文件,通常命名为`Messages.properties`,其中包含了应用程序中的所有可本地化的字符串。...
### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...
在Struts2中实现国际化,可以帮助开发者创建对多语言环境友好的应用。 本示例主要围绕Struts2框架如何实现国际化进行深入探讨。源码中包含两个关键部分:WebRoot目录和src目录。 1. **WebRoot** 目录: - `WEB-...
Struts2 框架提供了国际化支持,允许程序根据机器所在的国家、语言环境,自动显示当前国家、语言的内容。国际化的步骤包括: * 为不同的国家、语言环境提供资源包 * 在程序中输出的国际化消息的 key Struts2 的...
Struts2 标签库及国际化的使用案例 Struts2 框架提供了强大的标签库和国际化功能,本实验旨在掌握 Struts 2 标签库和国际化功能的使用,并实现用户注册页面的国际化显示。 一、Struts2 标签库 Struts2 框架提供了...
在国际化方面,Struts验证框架允许开发者为不同的语言和地区提供错误消息的翻译。这通过在资源文件(如Messages.properties或Messages_zh_CN.properties)中定义错误消息实现,这样当验证失败时,系统会根据用户...
在Struts1中实现国际化(i18n)是提高应用程序可扩展性和适应不同语言环境的重要手段。下面将详细解释如何在Struts1中进行国际化实践,并结合给出的实例进行解析。 一、国际化(i18n)基础 国际化是指软件设计时...
在“struts国际化(项目)”中,我们关注的是如何使应用程序支持多种语言,即国际化(Internationalization,通常缩写为i18n)。这个主题包括了资源包的创建、配置文件的设置以及在Struts中如何调用这些资源来显示...