哈喽,小萌新有来爆料了!这次爆的是中英文切换例子,也就是我们经常说的国际化
首先来说一下是国际化
不同的国家有不同的语言,中文虽然广为流传,但是毕竟有不是中国人,看不懂中文,那该怎么办呢?简单啊,我再页面上设计一下切换语言不就完啦?所以这就是国际化。
国际化文件的命名规则:
1、基本名.properties 如:message.properties
2、基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, message_en_US.properties 其中语言编码和国家编码是固定的,可以在JDK中Locale类的常量中找到。
Java中已经实现了国际化功能,struts2中只是对该功能进行了整合,以方便我们的使用。
Struts2中使用到国际化的地方有: 1、jsp页面的国际化; 2、Action信息国际化; 3、转换错误信息的国际化; 4、校验错误信息的国际化;
Struts2国际化文件分类: 1、全局范围国际化文件 2、包范围国际化文件 3、Action类范围国际化文件。
利用资源文件的切换加载,来实现国际化的效果。什么是资源文件?就是以.properties结尾的文件。为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对,其中key是程序使用的部分,而value是程序的显示部分。下面我们来进入主题~~(你们不敢相信我其实是穿着汉服在这里坐着写文章de,QAQ......)
整体结构问题
悄咪咪的说,字母不要写错,jar包的位置不要放错,,不然会出现不明错误,,,深有体会的博主,555......
1、新建项目Struts2work
2、在src下新建资源文件
在File nme那里写上资源文件的名字就好了。
global_fr.properties(英文)
代码如下:
global.name = Name
global.age = Age
global.submit = Submit
global.heading = Select Locale
global.success =Successfully authenticated
global_zh.properties(中文)
代码如下:
global.name = \u59D3\u540D
global.age = \u5E74\u9F84
global.submit = \u63D0\u4EA4
global.heading = \u9009\u62E9\u4E00\u79CD\u8BED\u8A00
global.success =\u6210\u529F
3.新建jsp页面
index.jsp
国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n。18为中间的字符数。 随着全球经济的一体化,软件开发者应该开发出支持多国语言、国际化的Web应用。对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Employee Form with Multilingual Support</title>
</head>
<body>
<h1><s:text name="global.heading"/></h1>
<s:url id="indexZH" namespace="/" action="locale" >
<s:param name="request_locale" >zh</s:param>
</s:url>
<s:url id="indexFR" namespace="/" action="locale" >
<s:param name="request_locale" >fr</s:param>
</s:url>
<button><s:a href="%{indexZH}" >中文</s:a></button>
<button><s:a href="%{indexFR}" >英文</s:a></button>
<s:form action="empinfo" method="post" namespace="/">
<s:textfield name="name" key="global.name" size="20" />
<s:textfield name="age" key="global.age" size="20" />
<s:submit name="submit" key="global.submit" />
</s:form>
</body>
</html>
success.jsp(登录成功则显示成功)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Success</title>
</head>
<body>
<s:property value="getText('global.success')" />
</body>
</html>
4.引入jar包
5.在src下新建Employee.java和Locale.java文件
Employee.java
package com.oumyye.action;
import com.opensymphony.xwork2.ActionSupport;
public class Employee extends ActionSupport{
private String name;
private int age;
public String execute()
{
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Locale.java
package com.oumyye.action;
import com.opensymphony.xwork2.ActionSupport;
public class Locale extends ActionSupport{
public String execute()
{
return SUCCESS;
}
}
6.配置文件web.xml和struts.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<!-- 扫描资源目录下以global开头的文件 -->
<constant name="struts.custom.i18n.resources" value="global" />
<package name="helloworld" extends="struts-default" namespace="/">
<action name="empinfo"
class="com.oumyye.action.Employee"
method="execute">
<result name="input">/index.jsp</result>
<result name="success">/Success.jsp</result>
</action>
<action name="locale"
class="com.oumyye.action.Locale"
method="execute">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
7.运行结果
图1:(点击按钮切换英文)
图2:
图3:
其实这种方式很简便,毕竟只用切换资源文件就可以解决语言问题。好了,今天的代码结束了,明天见哦~~~