热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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(英文)

globalMessages_zh_CN.properties(中文)

编写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+"/"; 
%> 
 
 
  
   
   
  
  
  
  : 
    
    
  

这里有一个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中配置拦截器和国际化的资源:

<&#63;xml version="1.0" encoding="UTF-8" &#63;> 
 
 
 
   
   
     
       
     
     
      /index.jsp 
       
       
     
   
 

最后看看运行结果:

选择语言为中文:

选择语言为英文:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
author-avatar
手机用户2602929101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有