Struts2:国际化

中文系统系统默认使用zh_CN文件,没有的话使用基本文件lan.properties

lan.properties

label.ahtitle=wuhan diff veryday
label.username=user name

ah001=i need input
m01={0}is already registed
e01=call admin please

lan_zh_CN.properties

label.ahtitle=\u5149\u7070\u57CE\u5E02
label.username=\u7528\u6237\u540D

ah001=\u9700\u8981\u4F60\u7684\u8F93\u5165
m01={0}\u5DF2\u6CE8\u518C
e01=\u627E\u7BA1\u7406\u5458

inputMsg.jsp 无关大局,略了

index.jsp(JSP页面国际化)

<title><s:text name="label.ahtitle" /></title>
...
    <%
    // 改一下国家,火狐浏览器可以改,360,Chrome没发现
    ActionContext.getContext().setLocale(new Locale("","")); %>
    <s:form action="m1Action" method="post">
        <s:textfield name="uname" key="label.username" />
        <s:actionmessage/>
        <s:submit value="%{getText(‘label.ahtitle‘)}"></s:submit>
        <s:actionerror/>
    </s:form>

#Ognl中的%,类似js的eval功能,用于强制返回Ognl结果

title中的内容,测试没啥效果(火狐浏览器修改语言后有效果)

struts.xml

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.configuration.xml.reload" value="true" />
    <constant name="struts.custom.i18n.resources" value="lan" />
    <package name="p1" namespace="/" extends="struts-default">
        <action name="*Action" class="org.ah.s2.C1" method="{1}">
            <result name="success" type="dispatcher">
                /inputMsg.jsp
            </result>
            <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>

Action:(编程式 验证错误消息国际化)

package org.ah.s2;

import java.util.Collection;

import com.opensymphony.xwork2.ActionSupport;

public class C1 extends ActionSupport {
    private String uname;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String m1() {
        Collection<String> actionMessages = getActionMessages();
        System.out.println("actionMessages:" + actionMessages);
        if (actionMessages.size() > 0) {
            return "input";
        }

        return "success";
    }

    @Override
    public void validate() {
        if ("admin".equals(uname)) {
            // 继续走(被效验)方法
            addActionMessage(getText("m01", new String[] { uname }));
        } else if ("sa".equals(uname)) {
            // 直接input,不走(被效验)方法
            addActionError(getText("e01"));
        }
    }
}

C1-validation.xml(声明式 验证错误消息国际化)

<validators>
    <field name="uname">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message key="ah001"></message>
        </field-validator>
    </field>
</validators>



(引入日文资源后,发现错误提示还是中文,用火狐改浏览器语言应该可解决之)

lan_ja_JP.properties

label.ahtitle=\u6B66\u6F22
label.username=\u540D\u524D
ah001=\u5165\u529B\u3057\u3067\u304F\u3060\u3055\u3044
m01={0}\u3082\u3046
e01=\u7BA1\u7406\u54E1\u306B
时间: 2024-10-19 21:56:23

Struts2:国际化的相关文章

struts2学习(10)struts2国际化

一.国际化简介: 二.struts2国际化设置: 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.dt

Struts2国际化

一:简单理解 国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n.18为中间的字符数. 随着全球经济的一体化,软件开发者应该开发出支持多国语言.国际化的Web应用.对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果. 国际化文件的命名规则: 1.基本名.properties 如:message.properties 2.基本名_语言编码_国家编码.properties 如:message_zh_CN.properties, messa

【转】Struts2国际化

原文章:http://www.cnblogs.com/hellokitty1/p/5083663.html 简单理解     国际化简称i18n,其来源是英文单词 internationalization的首末字符i 和n.18为中间的字符数.     随着全球经济的一体化,软件开发者应该开发出支持多国语言.国际化的Web应用.对于Web应用来说,同样的页面在不同的语言环境下需要显示不同的效果.     国际化文件的命名规则:           1.基本名.properties 如:messa

[JavaWeb基础] 016.Struts2 国际化配置

如果一个软件想要让其受众是全球或者是几个国家的人,那么这个软件就需要支持多种语言,那么我们就需要软件的国际化去对一些文字信息进行国际化处理.web也一样,当外国人打开我们的网站,要是看到满屏幕的中文,他估计就傻了,好比我们看英文的,或者其他语言的网站时候也不舒服.那么,下面我们就来介绍下使用struts2如何来处理国际化. 1.首先要在strust.xml中在<struts>标签下配置<constant name="struts.custom.i18n.resources&qu

【Struts2系列】Struts2 国际化资源文件的机制原理

[Struts2国际化资源文件定义的3种范围方法] 1)全局的国际化资源文件,对所有的Action和View都有效 定义方式: 在struts.xml中增加全局资源文件定路径定义:        <constant name="struts.custom.i18n.resources" value="globalMessage"></constant> 对应的资源文件为classpath根目录位置: globalMessage.propert

(六)Struts2 国际化

所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:国际化简介 国际化(Internationlization),通俗地讲,就是让软件实现对多种语言的支持. 让美国人看到的是英语,让中国人看到的汉语 第二节:Struts2 国际化设置 <constant name="struts.custom.i18n.resources" value="wishwzp"></consta

struts2国际化全例 错误解决

在struts2中需要做国际化的有: jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化,校验错误信息的国际化 在之前的例子中已经做过和国际化相关的例子了,在struts.xml中配置过 view plaincopy to clipboardprint? <constant name="struts.custom.i18n.resources" value="message"></constant> 其中的message就

struts2国际化支持

几年之前,应用程序开发者能够考虑到仅仅支持他们本国的只使用一种语言(或者有时候是 两种)和通常只有一种数量表现方式(例如日期.数字.货币值)的应用.然而,基于web技术的应用程序的爆炸性增长,以及将这些应用程序部署在 Internet或其它被广泛访问的网络之上,已经在很多情况下使得国家的边界淡化到不可见.这种情况转变成为一种对于应用程序支持国际化 (internationalization,经常被称做"i18n",因为18是字母"i"和字母"n"

使用Struts2国际化

Struts2国际化是建立在Java国际化的基础之上,一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息--整个过程与Java程序的国家化完全相同,只是Struts2对Java程序国际化进一步封装,从而简化了应用程序的国际化. Struts2中加载全局资源文件 通过在struts.xml或struts.properties中配置struts.custom.i18n.resources常量,该

struts2 国际化

国际化概述: 软件国际化:一个软件根据来访者地区不同,显示不同语言. 国际化: * 必须有一组资源包: * 一组属性文件命名: 基本名称_语言(小写)_国家(大写).properties * 如:message_zh_CN.properties   message_en_US.properties * 使用ResourceBundle这个类. * ResourceBundle.getBundle(String baseName,Locale locale); Struts2中的国际化: 全局国际