struts国际化教程
国际化

第一章国际化1.国际化:(Internationalization:I18N)在程序在不做任何修改的情况写,可以在不同国家或地区和不同语言环境下,按照当地的语言和格式习惯显示字符。
2.本地化(Localization:L10N)一个国际化的程序,当它运行在本地机器时,能够根据本地机器的语言和地区设置显示相应字符。
Java程序的国际化思路:1.将程序中的提示信息、错误信息等放在资源文件中,为不同国家/语言编写对应资源文件;2.资源文件有很多key-value对组成,key保持不变,value随国家/语言不同而不同;3.这些资源文件使用共同的基名,通过在基名后面添加语言代码、国家和地区代码来进行区分。
第二章步骤1.在struts.xml配置文件中;value的值为配置文件的基名;2.在登录的页面,submit的value值发生了变化;并且label属性被key取代;3.在action中4.国际化之后配置框架的变化补充:1.全局资源文件a)所有包的所有Action类都可以访问b)导致资源文件变得非常庞大臃肿,不便于维护2.包范围资源文件a)对应包下创建package language country.propertiesb)处于该包及包下的action才可以访问该文件3.Action范围资源文件a)命名格式ActionClassName language country.propertiesb)只有单个Action可以访问查找顺序:Action--->package--->全局如果是全局的国际化的配置文件,必须在struts.xml文件中注册基名;Key的属性引用配置文件。
localeresolver 国际化处理流程

localeresolver 国际化处理流程国际化处理流程是在软件开发过程中,将软件设计和开发过程中的所有国际化相关任务进行整合和规划的过程。
国际化是指将软件产品或应用程序进行适应不同语言、地区和文化背景的过程。
本文将以“localeresolver 国际化处理流程”为主题,详细介绍国际化处理流程的每一步骤。
第一步:确定目标市场和目标语言在国际化处理过程中,首先需要确定软件产品的目标市场和目标语言。
这可以通过市场调研和用户需求分析来确定。
根据目标市场的不同,软件产品需要适应不同的语言、地区和文化要求。
第二步:设计和规划本地化需求根据确定的目标市场和目标语言,设计和规划软件产品的本地化需求。
这包括设计多语言支持、本地化界面、日期时间格式、货币符号等方面的需求。
同时,还需要考虑到文化差异和地区特殊要求,比如文字排版习惯、数字格式、色彩偏好等。
第三步:提取本地化资源在国际化处理过程中,需要将软件产品中需要本地化的资源提取出来,以便进行后续的翻译和本地化处理。
这些资源包括界面文本、帮助文档、错误提示等。
提取本地化资源的方式可以使用工具或手动进行。
第四步:翻译和本地化处理将提取出的本地化资源进行翻译和本地化处理。
这可以通过雇佣专业翻译人员或者使用机器翻译等方式来完成。
同时,还需要进行语言和文化的适配,确保翻译内容符合目标市场的语言表达和文化背景。
第五步:集成和测试本地化版本将翻译和本地化处理完成的资源集成到软件产品中,并进行测试验证。
在集成和测试过程中,需要确保本地化版本的完整性和正确性。
这包括界面显示、文字排版、日期时间格式、货币符号等方面的测试。
第六步:发布和推广将本地化版本的软件产品发布到目标市场,并进行推广和营销。
在发布和推广过程中,需要针对目标市场的特点和需求进行调整和优化。
这包括市场定位、渠道选择、宣传策略等方面。
第七步:反馈和优化在软件产品的使用过程中,收集用户反馈和意见,并根据反馈进行优化和改进。
基于struts框架的国际化问题的解决方案

默认 资 源 文 件 抽 题 组 卷 英 文 资 源文 件 中文 资源 文 件
Co mpo e pp ia in p o e t s s a l to . r p ri c e Co o e p l a in e . r p ris mp s a p i t c o n p o ete
下 面 以登 录模 块 为例来讨 论 资源 文件 的建 立 和
使 用.
表 1 网 上 考 试 系 统 各 模 块 对 应 的 资 源 文 件
模 块名 资源文件类型 默认资源文件
考生登录 英文资源文件
资源文件名称
S u e t o ia p ia in. r p r e td nL gn p l t c o p o et s i
这种 多模 块 的 Srt 应用 ,可 以考 虑 为 网上 考 试 系 t s u
关 的格式化 或解 析工 作 , 它代 表 一种 特 定 的语 言 和 地 区 ,向本地 敏感 的类 提供 本地化 信 息 ….
R suc u de类 提 供存 放 和 管理 与 L c 相 eo r B n l e oa l
_
存 在 ssi es n内 , 样 ,Srt框 架 能 自动 根 据这 一 o 这 t s u o ae L cl实 例从 R suc ude中选 择合 适 的资源 文 eoreB nl 件, 再从 资 源文件 中读 取本 地化 的消 息文 本 ] 2.
Srt框 架提 供 了对 国际化 的支 持 , 文 利 用 Srt t s u 本 t s u 框 架解决 了网上考 试 系统 的 国际化 问题 ,使其 支 持 面 向中文和 英文 两种 不 同的语 言环境 .
2 网 上考 试 系统 国 际化 问题 解 决 方 案
i18N-网页网站国际化和动态内容国际化

I18N与网站动态国际化网站国际化一般都是会有语言的按钮,对不同语言用户的切换选择,例如以下部分,是三种语言的连接。
国际化主要分为系统国际化和内容国际化。
一般这两中国际化是同步的。
内容国际化很简单主要是根据语言来区分往数据库中去什么语言的值。
那我做的这个例子来说。
我使用SSH2框架写的公司网站。
当用户点击语言切换的时候,在超链接中执行一个action.并且传递一个参数:在后台判断这个status的值,然后根据不同的状态,拼写hql语句即可:并且将设定的状态值写到session中。
在方法的地方获取:这样将根据语言查询的内容国际化就读取出来了。
最重要的一点就是网站的国际化。
这个需要一种资源文件.property 文件;资源文件命名规则为message + en_US >English; message+””+zh_CN > 中文。
里面写对应的key value;在struts.xml 文件中配置国际化<!-- 设置Web应用的默认Locale为en_US 英文--><constant name="struts.locale" value="en_US" /><!-- 利用i18n来管理国际化-- ><constant name="struts.custom.i18n.resources" value="messageResource"/>如果不默认Local,那么网站国际化将根据浏览器的语言来自动选择使用那用国际化;这样。
网站的自动国际化就可以实现了。
当然。
我们做的是动态的国际化。
看似很复杂,其实很简单。
你只要在刚才执行的语言切换action中加入以下代码即可:首先声明一个locale,并默认一种语言Locale locale=new Locale("zh","CN"); 我们当前来默认成中文然后根据你传过来的status 状态来胜定locale的状态Locale locale=new Locale("en","US");if(getStatus()==null||getStatus().equals("")){languagebase = "2";locale=new Locale("en","US");}else if(getStatus().equals("1")){languagebase = "1";locale=new Locale("zh","CN");}else if(getStatus().equals("2")){languagebase = "2";locale=new Locale("en","US");}else if(getStatus().equals("3")){languagebase = "3";locale=new Locale("ru","RU");}然后加入这句话//struts2 i18n会自动拦截session中的WW_TRANS_I18N_LOCALE 的值,作为local的状态ServletActionContext.getRequest().getSession().setAttribute("WW_TRANS_I18N_LOCALE", locale); 这样浏览器会自动获取WW_TRANS….现在基本上可以实现动态链接切换中英文了,不过,还有个小问题,需要解决,那就是,需要点击2下中文才能切换到中文,英文同样也是;这样只需要写一个拦截器就可以了:/*** i18n 拦截器** */public class Locals extends AbstractInterceptor {private String locale;@Overridepublic String intercept(ActionInvocation arg0) throws Exception { if(getLocale()!=null){String loc[]=getLocale().split("_");Locale locale=new Locale(loc[0],loc[1]);ServletActionContext.getRequest().getSession().setAttribute("WW_T RANS_I18N_LOCALE", locale);}return arg0.invoke();}public String getLocale() {return locale;}public void setLocale(String locale) {this.locale = locale;}}在struts.xml 中配置拦截器:首先要在<package>中加入这句话<interceptors><interceptor-stack name="local"><interceptor-ref name="defaultStack"><paramname="params.excludeParams">com.ruijian.meilinweb.filter.*</param>//f ilter路径</interceptor-ref></interceptor-stack></interceptors>配置action<action name="languagelocale"class="languageAction"method="languageLocale"><interceptor-ref name="local"></interceptor-ref>//到页面前执行拦截<result name="login">/mei.jsp</result></action><action name="language" class="languageAction"><!—先执行这里。
前端框架中的国际化与本地化方法

前端框架中的国际化与本地化方法在前端开发中,国际化(Internationalization,缩写为i18n)和本地化(Localization,缩写为l10n)是两个重要的概念。
国际化是指将网站或应用程序适配不同的语言和文化,以便在全球范围内进行使用,而本地化则是根据用户的地理位置和习惯,提供与之相符的用户界面和内容。
对于前端框架来说,实现国际化和本地化是一个不可或缺的功能。
它可以让开发者轻松地为不同语种的用户提供友好的界面和内容,提升用户体验,扩大应用程序的受众范围。
下面将介绍一些常见的前端框架中实现国际化和本地化的方法。
一、Vue.js框架中的国际化和本地化方法Vue.js是一种流行的前端框架,它提供了一种名为Vue I18n的插件,用于实现国际化和本地化功能。
1. 安装Vue I18n插件在Vue.js应用程序中,可以通过npm安装Vue I18n插件,并在代码中导入依赖。
2. 设置语言资源文件在Vue I18n中,语言资源文件以JSON格式存储,并包含应用程序中需本地化的文本和翻译。
3. 配置Vue I18n实例在Vue.js应用程序的入口文件中,需要配置Vue I18n实例,并加载语言资源文件。
4. 使用vue-i18n指令使用vue-i18n指令能够快速实现文本的国际化和本地化。
通过在模板中使用指令,可以动态地根据用户的语言设置呈现相应的文本。
二、React框架中的国际化和本地化方法React是另一种流行的前端框架,它也有一些常用的库和工具,可以帮助实现国际化和本地化功能。
1. React Intl库React Intl是一个常用的国际化库,它提供了一系列组件和API,用于处理文本的国际化和本地化。
2. 定义语言资源文件与Vue I18n类似,在React应用程序中,需要定义语言资源文件,以便存储不同语言的文本和翻译。
3. 使用Intl组件和API通过使用React Intl提供的组件和API,可以在React应用程序中实现国际化和本地化。
前端开发中的国际化处理方法

前端开发中的国际化处理方法在当今日益全球化的互联网环境中,对于前端开发来说,国际化已经成为一个重要的考虑因素。
所谓国际化,就是将产品或网站适应于不同语言、不同文化习惯的需求,使其能够在全球范围内顺利运行和交互。
本文将介绍一些前端开发中常用的国际化处理方法,旨在帮助开发者更好地应对国际化的需求。
一、语言切换和资源文件语言切换是前端国际化处理的基本需求之一。
通过为网站或应用程序提供多语言支持,可以使用户根据自己的需要选择使用的语言。
在前端开发中,最常用的方式是使用资源文件(如JSON、XML等)来存储不同语言的文本内容,然后根据用户选择的语言加载相应的资源文件,实现语言切换功能。
同时,为了方便维护和更新,可以将不同语言的资源文件分别存放在不同的文件中,通过合适的命名规范和文件目录结构来组织管理。
二、日期、时间和货币格式化除了语言切换外,国际化还涉及到日期、时间和货币等格式化的处理。
不同国家和地区有不同的日期和时间格式,如年月日的顺序、时间的小时制或12小时制、货币的符号和位数等。
对于前端开发来说,可以使用现有的库或插件来实现这些格式的自动转换,如Moment.js和Numeral.js等。
这些库提供了丰富的日期、时间和货币处理功能,可以根据用户的地区设置自动格式化显示。
三、数字和单位转换在国际化处理中,数字和单位的转换也是一个重要的问题。
不同地区使用的计量单位和数值表示方式可能不同,比如货币单位、长度单位、重量单位等。
为了适应不同地区的需求,前端开发需要对数字和单位进行自动转换。
可以使用类似于Moment.js和Numeral.js的库来实现这些功能,或者根据具体需求自行开发相应的代码。
四、多语言输入和字体处理除了文本和格式化的处理,国际化还需考虑多语言输入和字体的适配。
对于需要支持多语言输入的网站或应用程序,前端开发需要实现相应的输入框和编辑器,以满足用户在不同语言环境下的输入需求。
同时,还需要考虑不同语言所使用的字体是否支持,并根据需要进行字体的适配和兼容处理。
Struts2详细实例教程

Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。
五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。
七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。
在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。
在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。
在Sun NetBeans开发工具中创建基于Struts框架的国际化效果的用户系统登录示例

在Sun NetBeans开发工具中创建基于Struts框架的国际化效果的用户系统登录示例1、创建两个资源文件(1)中文资源文件ApplicationResource_zh_CN.propertie执行JDK中所带的native2ascii转换工具:native2ascii ZWApplicationResources.properties ApplicationResources_zh_CN.propertie转换后的结果文件ApplicationResources_zh_CN.propertie中的内容如下:username=\u7528\u6237\u540d\u79f0\uff08\u8f93\u5165liutao\u6b63\u786e\uff09password=\u7528\u6237\u5bc6\u7801\uff08\u8f93\u51651984\u6b63\u786e\uff09 loginSuccess=\u7528\u6237\u767b\u5f55\u6210\u529floginFailure=\u7528\u6237\u767b\u5f55\u5931\u8d25submit=\u63d0\u4ea4reset=\u91cd\u7f6etitle=\u767b\u9646\u754c\u9762(2)英文资源文件ApplicationResource_en_US.properties代码如下:username=username(liutao is correct) password=password(1984 is correct) loginSuccess=loginSuccess loginFailure= loginFailuresubmit=submitreset=resettitle=login(3)设置缺省资源文件为英文格式2、在JSP页面中显示资源文件中的信息(1)<bean:message>标签(2)用法:<bean:message key="title"/>,其中key属性与资源文件中的信息key保持相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于一个面向全球的Web应用程序,按着不同国家的要求显示相关信息(称为国际化)显得尤为重要。
国际化的工作非常复杂和繁琐。
因为要翻译很多Web界面,信息格式等。
然而,Struts为我们提供了完成国际化工作的更容易的方式。
在本文将介绍如何使用Struts来简化国际化的工作。
一、处理客户端界面的编码问题由于Web浏览器可以使用不同的编码格式来解析客户端代码,这主要取决于用户的默认设置或偏好。
由于存在这种情况,因此,在服务端向客户端发送数据时,就必须使用和客户端一致的编码格式。
通常的做法是使用Internet上比较常用的UTF-8编码,这主要是因为UTF-8编码格式所描述的字符包括了世界上所有以知国家和地区的语言编码。
这样服务端就不用根据客户端的编码格式不断地调整服务端响应信息的编码格式了。
对于JSP页面来说,可以使用page指定来设置响应信息的编码格式,如下面代码所示:<%@ page contentType="text/html; charset=UTF-8" %>当然,如果我们在Web程序中使用了Struts框架,还可以在struts-config.xml文件中使用如下的代码来设置编码格式:<controller contentType="text/html; charset=UTF-8"/>如果使用上面的设置,所有通过.do或<forward>元素访问的页面都会继承这一编码设置。
但是如果单独访问JSP页面,就会绕过Struts的这个设置。
对于静态页面(如HTML)来说,需要使用<meta>元素来设置编码格式,如下面代码所示:<head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head>除了使用通用的UTF-8编码格式外,也可以从HTTP请求头字段Accept- Charset中获得客户端的编码格式。
然后根据这个编码格式来设置响应信息的编码格式。
然而,虽然根据HTML4.0规范,Web浏览器可以设置 Accept-Charset字段,但是有很多浏览器可以会忽略这一字段,因此,只使用这个字段来确定Web浏览器所使用的编码格式是不可靠的。
所以最好的国际化编码格式解决方案仍然是UTF-8。
二、本地化属性文件本地化最重要的部分就是根据用户所处的语言环境来显示响应语言的界面,如用户在英文操作系统下,就会显示英文界面,如果在中文操作系统下,就会显示中文界面。
最理想的情况是这种显示效果的切换是完全透明的。
在Struts中提供了这种技术,使我们可以更容易地实现透明地界面切换。
在Struts Bean标签库中有一个<bean:message>标签,它可以根据客户端浏览器所处的语言环境自动选择相应的属性文件来读取界面显示信息。
为了演示如何使用<bean:message>以及不同的属性文件来实现国际化的程序。
让我们先来看一个例子。
在本例中,选用了三个国家的语言环境(中文、英文和法文)来演示国际化的实现。
由于读者可能不便于输入法文,因此,法文信息仍然用中文代替,只是后面多了个“(法文)”作为标识。
我们需要如下四步来完成这个例子:【第1步】建立一个默认的属性文件在<samples工程目录>\src\struts目录中建立一个application.properties文件,内容如下:title = 这是一个国际化的web程序(默认值)name = 姓名(默认值)submit = 提交(默认值)application.properties文件是默认的属性文件,如果客户端浏览器所处的语言环境在服务端未找到相应的属性文件,<bean:message>标签就会从application.properties文件中读取字符串信息。
在Eclipse中编辑非ISO 8859-1编码格式的字符时,应使用在《属性(资源)文件乱码问题的解决之道》介绍的两个Eclipse插件,或使用native2ascii.exe命令进行转换。
否则在显示属性文件中的信息时会出现乱码。
【第2步】在struts-config.xml文件中配置属性文件在Struts中所有的属性文件都必须在struts-config.xml文件中配置。
否则<bean:message>标签就会由于无法找到相应的属性文件而抛出异常。
为了配置application.properties,需要在struts-config.xml文件中的<struts-config>标签中加入如下的代码:<message- , parameter="struts.application" key = "global"/>由于在struts-config.xml文件中已经有一个ErrorDescription.properties作为默认的属性文件,因此,application.properties文件要使用一个key加以标识。
在使用<bean:message>标签时必须要使用bundle属性指定这个key才能找到application.properties文件。
【第3步】加入不同语言的属性文件在这一步我们来加入中文、英文、法文的属性文件。
这三个属性文件的文件名如下:∙中文:application_zh.properties∙英文:application_en.properties∙法文:application_fr.properties将这三个文件放到<samples工程目录>\src\struts目录中。
它们的内容如下:application_zh.propertiestitle = 这是一个国际化的web程序name = 姓名submit = 提交application_en.propertiestitle = This is an internationalization web program.name = namesubmit = submitapplication_fr.propertiestitle = 这是一个国际化的web程序(法语)name = 姓名(法语)submit = 提交(法语)这三个属性文件是不需要在struts-config.xml中配置的。
Struts会自动根据客户端浏览器所处的语言环境来寻找这三个文件。
【第4步】编写JSP页面在这个JSP页面中使用了<bean:message>来根据客户端浏览器所处的语言环境来读取相应的属性文件中的内容。
在web根目录中建立一个global.jsp文件,代码如下:<%@ page pageEncoding="UTF-8" %><%@ taglib uri="/tags-bean" prefix="bean"%><html><head><title>国际化</title></head><body><bean:message key="title" bundle="global"/><p/><form action=""><bean:message key="name" bundle="global"/>:<input type="text" name="name"/><p/><input type="submit" value=<bean:message key="submit" bundle="global"/ > /></form></body></html>由于安装不同语言的操作系统很不方便,在这里我们采用另一种方法来模拟不同的语言环境测试这个程序。
首先在IE中使用【工具】>【Internet 选项】> 【常规】>【语言】来打开“语言首选项”对话框,使用“添加”按钮添加“中文 [zh]”、“英文 [en]”和“法语(法国)[fr]”,再添加一种其他语言,如“梵文 [sa]”。
添加后的界面如下图所示。
然后分别将这四种语言上移到列表顶端。
然后点击“确定”按钮保存设置。
在启动Tomcat 后,在IE中输入如下的URL:http://localhost:8080/samples/global.jsp根据语言设置的不同,在IE中会显示不同语言的界面,如中文和英文的页面分别如下面两个图所示。
如果在刷新时页面语言未更新,可能是因为IE的Cache的原因,读者可以启一个新的IE窗口,再进行测试。
读者在使用属性文件进行国际化时应注意如下三点:1. 由于语言还可以继续细分,如中文可以分为简体和繁体,英文也可以分为不同国家或地区的英文,如爱尔兰、澳大利亚等。
因此,对于更细化的语言,可以在属性文件后面再加一个代表国家或地区的后缀,如application_zh_TW.properties代表中国台湾所使用的繁体中文,application_en_AU.properties代表澳大利亚英文。
Struts在寻找属性文件时,会首先查找带有国家或地区后缀的属性文件,如果这类文件不存在,会继续查找只有语言后缀的属性文件,如果还不存在,最后会读取默认属性文件,也就是application.properties的内容。
假设我们在“语言首选项”中选择了“中文(台湾) [zh-tw]”,那么读取文件的顺序(从最左边开始,如果文件不存在,依次读取右边的文件)如下:application_zh_TW.properties > application_zh.properties > application.propertie s如果选择的语言是“中文 [zh]”,那么就直接从application_zh.properties开始读取。
2. 在建立属性文件时要注意,后缀的连接符为下划线( _ ),而不能用减号( - )。