首页 > 其他分享 >struts(il8n) 实现国际化的一个例子

struts(il8n) 实现国际化的一个例子

时间:2023-06-13 10:01:48浏览次数:37  
标签:info 国际化 struts org apache import il8n


struts(il8n) 实现国际化的一个例子
[code]

struts利用在session中放一个local对象来达到设置当前语言您的目的,默认的情况下,struts根据网页向后台提交时所包含的编码信息来提供缺省的local对象。这就是我们为什么可以通过更改网页显示语言设置,就能显示不同语言文字的原因。struts在session中存放的这个 local对象取名为Globals.LOCAL_KEY的值,因此利用这个原理我们就可以用编程的方式来手工切换整个应用系统的语言。
struts国际化问题的一个小例子:(根据下拉列表的选择显示不同语言的网站)

1,首先针对不同的语言,写不同的MessageResources.properties文件,比如说简体中文是
MessageResources_zh_CN.properties,英文就是MessageResources_en_US.properties,然后对这些配置信
息文件同样用native2ascii工具处理一次(打开cmd输入 native2ascii然后把要显示的中文输入回车就ok了),把非ASCII码统统转为Unicode编码。 放在classes文件夹下你指定的地方,这里是放在/web-inf/classes/com/下,
我写的两个文件是;1,MessageResources_en_US.properties:内容如下:

version=hello,you have choose the english version


MessageResources_zh_CN.properties内容如下:

version=\u4f60\u597d,\u4f60\u5df2\u7ecf\u9009\u62e9\u4e86\u4e2d\u6587\u7248\u672c


(要注意的是:文件名中的zh和en代表语言的不能写错,而CN和US代表国家可以不写)
2,在struts-config.xml加入 <message-resources parameter="com.MessageResources" />注意com为包名。
3,测试页面:index.jsp

<form name="form1" method="post" action="chooselocal.do"> 

 <select name="il8n_info"> 

 <option value="zh">中文版</option> 

 <option value="en">英文版</option> 

 </select> 

 <input type="submit" value="submit"><p> 

 </form> 

4.相应的actionform: 


package com.il8n; 


import org.apache.struts.action.ActionForm; 


public class il8nActionForm extends ActionForm { 

 private String il8n_info; 


public String getIl8n_info() { 

 return il8n_info; 

} 


public void setIl8n_info(String il8n_info) { 

 this.il8n_info = il8n_info; 

} 


}


5:相应的acrion:

package com.il8n; 


import java.util.Locale; 


import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 


import org.apache.struts.Globals; 

import org.apache.struts.action.Action; 

import org.apache.struts.action.ActionForm; 

import org.apache.struts.action.ActionForward; 

import org.apache.struts.action.ActionMapping; 

import org.apache.struts.action.ActionMessage; 

import org.apache.struts.action.ActionMessages; 


public class il8nAction extends Action { 


 @Override 

 public ActionForward execute(ActionMapping mapping, ActionForm form, 

 HttpServletRequest request, HttpServletResponse response) 

 throws Exception { 

 il8nActionForm il8naf = (il8nActionForm)form; 

 ActionMessages messages = new ActionMessages(); 


 Locale locale = null; 

 if("zh".equals(il8naf.getIl8n_info())){ 

 locale = new Locale("zh","CN"); 

 }else if("en".equals(il8naf.getIl8n_info())){ 

 locale = new Locale("en","Us"); 

 } 

 this.setLocale(request, locale);// 将local对象放到session里也可以用下面的方法: 

 //request.getSession().setAttribute(Globals.LOCALE_KEY, locale);//英文struts是把local对象放在了session里面 

 return mapping.findForward("success"); 

 } 


}


6:struts-config.xml中的配置:

<form-beans> 

<form-bean name="il8nActionForm" type="com.il8n.il8nActionForm"></form-bean> 

</form-beans> 

<action-mappings> 

<action path="/chooselocal" 

 type="com.il8n.il8nAction" 

 name="il8nActionForm" 

 scope="request" 

> 

<forward name="success" path="/index.jsp"></forward> 

</action> 

</action-mappings> 

<message-resources parameter="com.MessageResources" />然后在 index.jsp中使用<been:message key="version"/>

来调用version的值显示不同的语言。(当然要引入相关的tag)
也就是当你选择中文版然后提交就会显示
你好,你选择了中文版
当你选择英文版的时候就会显示:
hello,you have choose the english version
[/code]

标签:info,国际化,struts,org,apache,import,il8n
From: https://blog.51cto.com/u_16087012/6467265

相关文章

  • struts2 intercepter简单例子
    玩了一天终于把struts2的intercepter搞明白了,有那么点小兴奋,呵呵。下面把俺的成果分享一下:1.在注册页面中(index.jsp)注册一下:  <%session.setAttribute("user","lzw");%>2.在登录界面(login.jsp)登录:<formaction="login.action"method="post"><......
  • Vue 国际化之 vue-i18n 的使用
    一、安装npminstallvue-i18nyarnaddvue-i18n如果在一个模块系统中使用它,你必须通过Vue.use()明确地安装vue-i18n:importVuefrom'vue'importVueI18nfrom'vue-i18n'Vue.use(VueI18n)二、使用在src下创建lang文件夹。1、准备语言包本例我准备了两种语言包,分别是......
  • 用native2ascii.exe实现国际化
    用native2ascii.exe实现国际化用javaSDK/bin目录下的native2ascii.exe把.peoperties文件中的中文转换成unicode字符,实现国际化需要用到javaSDK\\bin目录下的native2ascii.exe程序,把你写的文本文件转成unicode字符即可, native2ascii - Native-to-ASCII Converter将一个文件......
  • 关于struts中的ActionError和ActionMessage的占位符{0}的使用
    先说说ActionError,  一般的情况下我们会自己写的ActionForm的validate方法来对提交过来的表单做验证 开始的时候我也是在想这个仅仅是return了一个ActionErrors 这里是我的form源码packagecom.little.struts.form;publicclassHelloFormextendsActionForm{private......
  • struts的ActionErrors和ActionMessage写法
    我在Action中的ActionErrors的实例中add了一系列的ActionError, 在JSP中用<html:errors/>显示,但什么都没有! 是不是ActionErrors.add("abc", ActionError)中的第一个字符串“abc”要添加在什么资源文件里呀?怎么建立资源文件,怎么添加?怎么显示? 我非常迷惑,请各位赐教,谢谢!   A......
  • SpringMVC 国际化 Hibernate Validator 扩展注解
    高版本JDKHibernateValidator扩展注解https://stackoverflow.com/questions/35986200/error-creating-bean-with-name-org-springframework-validation-beanvalidation-opt1.JDK8版本需要添加的jar包springmvc验证需要的jar├─classmate-0.8.0.jar├─hibernate-v......
  • SpringMVC学习系列(8) 之 国际化
    在系列(7)中我们讲了数据的格式化显示,Spring在做格式化展示的时候已经做了国际化处理,那么如何将我们网站的其它内容(如菜单、标题等)做国际化处理呢?这就是本篇要将的内容—>国际化。一.基于浏览器请求的国际化实现:首先配置我们项目的springservlet-config.xml文件添加的内容如下:<bean......
  • struts2,Jboss
                    ......
  • Struts2实例
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitio......
  • 使用JPA+Struts2+Spring 在 google Appengine开发应用
    本文同时发表在我在googleAppengine上的搭建的博客:[url]http://blogfor11lu.appspot.com/articleaction_view.action?article.id=agtibG9nZm9yMTFsdXIPCxIHQXJ0aWNsZRjBtQMM[/url]之前用JDO和Struts2在googleAppengine上试着写了一个简单的blog程序,但我还是希望使用Spring......