iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >struts2的国际化如何实现网站整体中英文切换
  • 258
分享到

struts2的国际化如何实现网站整体中英文切换

struts2 2023-05-30 23:05:28 258人浏览 独家记忆
摘要

这篇文章主要为大家展示了“struts2的国际化如何实现网站整体中英文切换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“struts2的国际化如何实现网站整体中英文切换”这篇文章吧。具体如下:环

这篇文章主要为大家展示了“struts2的国际化如何实现网站整体中英文切换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“struts2的国际化如何实现网站整体中英文切换”这篇文章吧。

具体如下:

环境要求:Struts2框架环境搭建成功

为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对,其中key是程序使用的部分,而value是程序的显示部分。

资源文件的命名可以是如下3种形式:

  1. baseName_language_country.properties

  2. baseName_language.properties

  3. baseName.properties

其中baseName是资源文件的基本名称,用户可自由定义,而language和country是不变的,必须是Java所支持的语言和国家。(用到哪个国家语言资源可查官方文档)

Java不可能支持所有的国家和语言,可以通过Locale类的getAvailableLocale方法获取支持的,该方法返回一个Locale数组,该数组中包含了所有支持的国家和语言。

创建资源文件:

globalMessages_en_US.properties(英文)

struts2的国际化如何实现网站整体中英文切换

globalMessages_zh_CN.properties(中文)

struts2的国际化如何实现网站整体中英文切换

编写jsp页面,在这个jsp上测试中英文切换效果:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>  <head>   <base href="<%=basePath%>" rel="external nofollow" >   <title></title>  </head>  <body>  <s:i18n name="globalMessages">   <s:text name="check"></s:text>:   <a href="login.action?request_locale=zh_CN" rel="external nofollow" ><s:text name="chinese"></s:text></a>    <a href="login.action?request_locale=en_US" rel="external nofollow" ><s:text name="english"></s:text></a>    <br/>   <h4><s:text name="title"></s:text></h4>   <s:fORM action="login" method="post">       <table width="344" height="300">         <tr>           <td> </td>         </tr>         <tr>           <td><s:text name="username" />           <td><s:textfield name="name" />           </td>         </tr>         <tr>           <td><s:text name="passWord" />           </td>           <td><s:password name="password" />           </td>         </tr>         <tr>           <td> </td>           <td><s:submit value="%{getText('login')}" /></td>         </tr>       </table>     </s:form>   </s:i18n>  </body> </html>

这里有一个i18n,他就是Internationalization(国际化)的英文缩写,为什么是i18n呢?

Internationalization去掉头尾的i和n刚好还剩下18个字符,涨姿势了,原来还可以这样命名

编写action:

import com.opensymphony.xwork2.ActionSupport;  public class LoginAction extends ActionSupport{   private static final long serialVersionUID = 8153220869598441387L;   @Override   public String execute() throws Exception {     return SUCCESS;   } }

这里测试中英文切换,就不做登录处理了,直接登录成功。

配置拦截器,在进入action之前进行语言选择的处理

public class CheckInterceptor extends AbstractInterceptor{   private static final long serialVersionUID = -1112495747942034188L;    @Override   public String intercept(ActionInvocation ai) throws Exception {     ActionContext ac = ai.getInvocationContext();     Map session = ac.getSession();     Locale locale = (Locale)session.get("WW_TRANS_I18N_LOCALE");     if(locale==null){       locale = new Locale("zh","CN");       session.put("WW_TRANS_I18N_LOCALE",locale);     }     return ai.invoke();   }  }

在struts2中,提供了一个i18n的拦截器,这个拦截器在执行Action方法之前,自动查找请求中名为request_locale的参数,拦截后转换为Locale对象,放置在用户session的名为“WW_TRANS_I18N_LOCALE”的属性。I18n在程序运行时会被自动加载,我们可以利用这些来设置允许用户自动选择网页的语言。

在struts.xml中配置拦截器和国际化的资源:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC   "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"   "Http://struts.apache.org/dtds/struts-2.3.dtd">  <struts>   <constant name="struts.costom.i18n.resources" value="globalMessages"/>   <package name="default" extends="struts-default" namespace="/">     <interceptors>       <interceptor name="myInter" class="org.locale.action.CheckInterceptor"></interceptor>     </interceptors>     <action name="login" class="org.locale.action.LoginAction">       <result name="success">/index.jsp</result>       <interceptor-ref name="defaultStack"></interceptor-ref>       <interceptor-ref name="myInter"></interceptor-ref>     </action>   </package> </struts>

最后看看运行结果:

选择语言为中文:

struts2的国际化如何实现网站整体中英文切换

选择语言为英文:

struts2的国际化如何实现网站整体中英文切换

我们可以看到,已经成功实现了中英文切换,不同语言的切换只需要提供不同国家的语言资源文件即可。

以上是“struts2的国际化如何实现网站整体中英文切换”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: struts2的国际化如何实现网站整体中英文切换

本文链接: https://www.lsjlt.com/news/222001.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • struts2的国际化如何实现网站整体中英文切换
    这篇文章主要为大家展示了“struts2的国际化如何实现网站整体中英文切换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“struts2的国际化如何实现网站整体中英文切换”这篇文章吧。具体如下:环...
    99+
    2023-05-30
    struts2
  • Android如何实现中英文语言切换
    这篇文章主要介绍Android如何实现中英文语言切换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码@Override    protected void ...
    99+
    2023-06-22
  • js如何实现导航栏中英文切换效果
    这篇文章主要为大家展示了“js如何实现导航栏中英文切换效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js如何实现导航栏中英文切换效果”这篇文章吧。思路:ul...
    99+
    2024-04-02
  • 如何使用gettext技术为ASP.NET网站实现国际化支持
    这篇文章将为大家详细讲解有关如何使用gettext技术为ASP.NET网站实现国际化支持,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。不知道有多少人对这个题目感兴趣,因为最近在做一个网站玩玩...
    99+
    2023-06-17
  • Django中的国际化和本地化如何实现
    Django中的国际化和本地化可以通过以下步骤来实现: 在settings.py中设置语言和时区: LANGUAGE_CODE ...
    99+
    2024-03-05
    Django
  • 如何在springboot中实现页面的国际化
    确保这个修改是正确的(否则将会出现乱码) 创建i18n文件夹(就是国际化的意思),然后在此文件加下创login.properties login_zh_CN,properties文...
    99+
    2024-04-02
  • 如何在PHP中使用缓存和JavaScript实时来优化您的网站体验?
    在现代互联网时代,用户对于网站的访问速度和体验要求越来越高。为了提升网站的性能,我们需要使用一些技术手段来优化网站的加载速度和响应速度。其中,缓存和JavaScript实时是两种常见的优化技术。在本文中,我们将介绍如何在PHP中使用缓存和J...
    99+
    2023-09-23
    缓存 javascript 实时
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作