博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2(十三)国际化-internationalization
阅读量:5145 次
发布时间:2019-06-13

本文共 4578 字,大约阅读时间需要 15 分钟。

一、国际化是什么--I18N

 即internationalization

首字母i-结束字母n之间有18个字母

特征:在程序不做修改的情况下,可以根据不同的语言环境显示相应内容

二、Java内置国际化

 

message_en_US.properties

demo = hello world!userName = user namepassword = passwordwelcome = welcome!

message_zh_CN.properties

demo = \u60A8\u597D\u4E16\u754C!userName = \u7528\u6237\u540Dpassword = \u5BC6\u7801welcome = \u6B22\u8FCE!

message.properties

demo = \u60A8\u597D\u4E16\u754C!userName = \u7528\u6237\u540Dpassword = \u5BC6\u7801welcome = \u6B22\u8FCE!

实现代码

<%@page import="java.util.ResourceBundle"%><%@page import="java.util.Locale"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
测试

测试页面

<%//获取当前已经安装的语言数组Locale [] locals=Locale.getAvailableLocales();//遍历数组for(Locale local:locals){ //国家+国家代码 out.print("国家: "+local.getDisplayCountry()+" 国家代码:"+local.getCountry()+" "); //语言+语言代码 out.println("语言: "+local.getDisplayLanguage()+" 语言代码:"+local.getLanguage()+"

");}//引用语言 此处可以更改Locale ls=Locale.getDefault();//使用哪个资源文件ResourceBundle rb=ResourceBundle.getBundle("message",ls);//输出out.println(rb.getString("demo"));out.println(rb.getString("userName"));out.println(rb.getString("password"));out.println(rb.getString("welcome"));%>

三、Struts2实现

 准备全局资源文件:通常至少三个文件

命名规则:前缀名_语言_国家.properties

内容格式:key=value

指定资源文件(设置常量)

1.struts.xml文件中:

2.struts.properties中:

struts.custom.i18n.resources=message

 

更改资源文件

message.properites

demo = 您好世界!userName = 用户名password = 密码welcome = 欢迎!submit =提交reset=重置

message_zh_CN.properties

demo = 您好世界!userName = 用户名password = 密码welcome = 欢迎!submit =提交reset=重置

message_en_US.properties

demo = hello world!userName = user namepassword = passwordwelcome = welcome!submit =submitreset=reset
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %>
测试

四、Action类实现国际化

message.properties

demo = 您好世界!userName = 用户名password = 密码welcome = {0}欢迎!{1}submit =提交reset=重置fail=登录失败usermsg=用户名不能为空usermsglength=用户名的长度为2-16位pwdmsg=密码不能为空pwdmsglength=密码的长度为2-16位

message_zh_CN.properties同上

message_en_US.properties

demo = hello world!userName = user namepassword = passwordwelcome = {0}welcome!{1}submit =submitreset=resetfail=login failedusermsg=user name do not emptyusermsglength=user name length is 2 to 16!pwdmsg=password do not emptypwdmsglength=password length is 2 to 16!

struts.xml

/demo.jsp
/demo.jsp

demo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %>
测试<%--
--%>

LogionAction

package action;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {    private String username;    private String password;    public String login() {        if ("admin".equalsIgnoreCase(username)                && "admin".equalsIgnoreCase(password)) {            this.addActionMessage(this.getText("welcome", new String[] {                    username,password}));            return SUCCESS;        }        this.addActionMessage(this.getText("fail"));        return INPUT;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

LogionAction.login()验证文件

LogionAction-login-validation.xml

 

true
${getText("usermsg")}
true
2
16
${getText("usermsglength")}
true
${getText("pwdmsg")}
true
2
16
${getText("pwdmsglength")}

 

五、Jsp页面国际化传参数 

Mr Smith

 

admin
ffff

 六、资源查找顺序

七、在JSP中使用国际化

使用UI表单标志时,getText可以用来设置label属性,例如: 

八、资源文件里使用OGNL表达式

许多情况下,我们都需要在动行时(runtime)为国际化字符插入一些参数,例如在输入验证提示信息的时候。在Struts 2.0中,我们可以通过在资源文件的国际化字符串中使用OGNL做到这点: 格式为${表达式},例如:

validation.require=${fileName} is required

九、资源文件查找顺序

 

转载于:https://www.cnblogs.com/liunanjava/p/4385233.html

你可能感兴趣的文章
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
Attributes.Add用途与用法
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
OpenFire 的安装和配置
查看>>
侧边栏广告和回到顶部
查看>>
https://blog.csdn.net/u012106306/article/details/80760744
查看>>
ios应用版本号设置规则
查看>>
海上孤独的帆
查看>>
error: more than one device and emulator 问题解决
查看>>
springmvc集成Freemarke配置的几点
查看>>
Django 学习
查看>>
Linux-socket的close和shutdown区别及应用场景
查看>>