侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 747 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Struts2(14)之国际化

zze
zze
2017-09-25 / 0 评论 / 0 点赞 / 372 阅读 / 3984 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

概述

国际化也叫 I18N,是 Internationalization 的简称。Struts2 国际化是建立在 Java 国际化基础上,只是 Struts2 框架对 Java 国际化进行了进一步封装,从而简化了应用程序的国际化。

使用

全局国际化

1、在类路径下新建 properties 资源文件,文件名为如下格式:

名称_en_uS.properties  // 英文
名称_zh_CN.properties  // 中文

例如:

# message_zh_CN.properties
name=姓名不能为空
# message_en_US.properties
name=name can't be null

2、在 struts.xml 中配置常量:

<constant name="struts.custom.i18n.resources" value="message"/>

3、接下来就可以获取资源文件中国际化后的内容了:

// 在 Action 中获取
package com.zze.action;

import com.opensymphony.xwork2.ActionSupport;

public class I18NAction extends ActionSupport {
    @Override
    public String execute() throws Exception {
        String name = getText("name");
        System.out.println(name); // 姓名不能为空
        return super.execute();
    }
}
<!-- 在 JSP 中获取 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>国际化测试</title>
</head>
<body>
<s:text name="name"/>
</body>
</html>
<!-- 配置文件中获取 -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>
    <field name="name">
        <field-validator type="requiredstring">
            <!--通过 key 取出国际化文本-->
            <message key="name"></message>
        </field-validator>
    </field>
</validators>

Action范围国际化

1、在 Action 所在的包下创建 properties 资源文件,文件名为如下格式:

Action名_zh_CN.properties // 中文
Action名_en_US.properties // 英文

2、直接在 Action 中使用即可,使用方式同全局一致。

包范围国际化

1、在需国际化的包下新建 properties 资源文件,文件名格式如下:

package_zh_CN.properties // 中文
package_en_US.properties // 英文

2、接下来在当前包及子包中都能使用该国际化资源文件。

<!-- JSP 中获取 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>国际化测试</title>
</head>
<body>
<s:i18n name="com/zze/action/package">
    <s:text name="msg"/>
</s:i18n>
</body>
</html>

补充

使用占位符

# com/zze/action/package_zh_CN.properties
wel=欢迎 {0}
<!-- JSP 中传参并获取 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>国际化测试</title>
</head>
<body>
<s:i18n name="com/zze/action/package">
    <s:text name="wel">
        <s:param>张三</s:param>
    </s:text>
</s:i18n>
</body>
</html>

// Action 中传参并获取

import com.opensymphony.xwork2.ActionSupport;

public class I18NAction extends ActionSupport {
    @Override
    public String execute() throws Exception {
        String wel = getText("wel", new String[]{"张三"});
        System.out.println(wel); // 欢迎 张三
        return super.execute();
    }
}
0

评论区