Struts2的i18n国际化-关于默认资源文件

昨天接到一个新的任务,将之前的一个供货商管理系统进行国际化支持,该系统采用了Status2框架,因此对Struts2的国际化进行了一些研究,下面是关于国际化配置的一些结果,分享给大家参考:

1.    建立资源文件:

建立资源文件如:

            message.properties:作为默认资源文件使用,当无法匹配其他资源文件时使用;

            message_zh_CN.properties:中文语言资源文件.

因为需求目前仅需要英文语言和中文语言,因此只建立了这两个文件。

2.    配置status2指定资源目录,
在status2的配置文件status.xml中加入配置文件指定资源文件:

为了管理,资源文件都生成在src/i18n/文件夹下,并且将资源文件进行了拆分,所以最终的配置如:

<constant name=”struts.custom.i18n.resources” value=”i18n.globalResource,i18n.messages” />

在Status2的i18n资源文件配置中,如果需要引用多个资源文件,可以在多个文件之间使用英文标点”,”进行分隔。

3.    在jsp或action中引用资源文件中的数据:

在jsp页面中,一般我们可以使用struts的标签来引用资源文件中的数据,如:

<s:text name=”messages.sys001″ />

另外,在引用过程中也可以对参数进行赋值等,如local.pageno=第{0}页,在jsp中使用<s:param>标签引用:

<s:text name=”local.pageno”><s:param>${pageNo}</s:param></s:text>

jsp中还有一些其他的引用方式,在这里不一一说明了,在action中引用,一般使用getText()方法,使用该方法需要action类继承ActionSupport父类,如:

System.out.println(this.getText(“message.sys001″));

到这里的配置基本上在百度上都很容易找到了,笔者也很容易的实现了这些调用,但是这是笔者遇到了一些其他问题:在本地部署好项目后,使用浏览器方法页面,中文信息都是很正常的,但是当笔者修改了浏览器默认语言为英文或俄文后,访问页面依然返回了中文页面。

可能是不会百度吧,google也无法访问,测试了很久,才找到了问题所在:当struts在找不到浏览器指定的语言对应的资源文件的时候,并不是直接使用默认的资源文件,而是会根据项目部署的服务器的默认语言来查找资源文件,直到默认语言的资源文件依然没有找到,才会使用默认的资源文件,笔者的本地环境是中文系统,所以当笔者修改了浏览器的语言为英文的时候,因为这个时候没有en_US的资源文件,struts通过locale的默认语言(可以通过locale.getDefault查看,笔者为zh_CN)来获取相应的资源文件,这个资源文件是存在的,因此自动返回了中文信息。

为了解决这个问题,可以通过设置默认的locale来解决该问题,笔者通过servlet的listener实现了该功能,当然或许还有其他的解决方案~,笔者的代码如下:

package com.zhenpin.supplier.listener;
import java.util.Locale;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class DefaultLocaleListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    
    }
    
    public void contextInitialized(ServletContextEvent event) {
        // 设置默认的localer语言为en_US,用于国际化
        Locale.setDefault(Locale.ENGLISH);
    }

}

对于问题分析,可能存在不准确的地方,欢迎大家指正~

另外,该文章转载自我的主站:http://www.smileyb.cn/?p=107,如需转载,请注明出处,谢谢。

时间: 2024-12-27 00:22:30

Struts2的i18n国际化-关于默认资源文件的相关文章

spring配置国际化的消息资源文件(.properties)

<!-- 引入属性文件 --> <!--加载config.properties文件--> <context:property-placeholder location="classpath:config.properties" /> <!-- 国际化的消息资源文件 --> <bean id="messageSource"         class="org.springframework.contex

使用MessageSource来管理国际化的消息资源文件

spring的配置文件中,MessageSource的配置如下 <!-- 国际化的消息资源文件(一般系统中主要用于显示/错误消息定制) --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames">

asp.net 网站国际化在使用资源文件发布到IIS上不可访问,因为它受保护级别限制

asp.net 网站国际化在使用资源文件发布到IIS上报错:编译器错误消息: CS0122: "Resources.Resource"不可访问,因为它受保护级别限制 后来在网上找了很久,才找了个解决方案 在资源文件属性上选择生成操作为"内容",不要选择"嵌入的资源"

Struts2之i18N国际化

对于i18n其实没有太多内容,一般的公司用不到这些内容,除非是跨国公司,但即便是跨国公司也不一定会使用i18n来进行国际化处理,所以本篇内容仅供大家了解,不做深入的探讨,希望通过本篇内容,可以帮助大家了解i18n的使用.好了废话不多说,下面进入今天的正题. 首先说一下i18n在Struts中分为三个等级:Action.package.Application三种,分别对应着其作用的范围,我想你一定已经知道什么意思了.先通过一个java project简单认识一下i18n的使用:i18n文件上的后缀

struts2国际化---配置国际化全局资源文件并输出国际化资源信息

我们首先学习怎么配置国际化全局资源文件,并输出资源文件信息 1.首先struts2项目搭建完成后,我们在src目录下,即struts2.xml同级目录下创建资源文件,资源文件的名称格式为: XXX_语言_国家.properties XXX:资源文件名称,可以随意定义 语言.国家:必须是java所支持的语言和国家,例如: 中国大陆:语言   zh   国家  CN 美国:语言  en   国家 US 所以我们可以这么取名: 例如:itheima_zh_CN.properties itheima_e

struts2官方 中文教程 系列七:消息资源文件

介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字段标签,并根据用户的语言环境将文本更改为特定的语言. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列七:消息资源文件  即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html 下载本章节代码 信息资源属性文件 在Struts2 we

Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. JSTL标签库,是由一些Java类组成的. JSTL组成: JSTL –Core 核心标签库. 重点 JSTL – I18N - 国际化标签库.Internationalization- I18N JSTL – SQL – 数据库操作标签(有悖于MVC设计模式),现在都不用这个. JSTL - Fu

Windows Store App 全球化:引用分离资源文件中的资源

大部分应用程序仅需要单个默认资源文件,例如Strings/zh-CN/Resources.resw,但是在某些应用程序中,最好将资源分离到多个资源文件中,以便更好地组织资源内容,这样就需要考虑如何引用这些分离资源文件中的资源.下面通过一个示例讲解如何在后台代码中引用分离资源文件中的字符串资源. 新建一个Windows应用商店的空白应用程序项目,并命名为SeparatedResourcesFiles.在项目中添加如18.2.3小节示例中相同的语言文件夹.资源文件以及资源信息.完成上述操作后,在"z

Android资源文件手记

Android Studio 的res/values文件夹为开发者提供了自定义资源文件的能力.参考Google的文档,记录一下. 一.将资源放入res目录下指定的子目录下.res目录下支持的资源目录如下: animator/ 用于定义属性动画的 XML 文件. anim/ 定义渐变动画的 XML 文件.(属性动画也可以保存在此目录中,但是为了区分这两种类型,属性动画首选 animator/ 目录.) color/ 用于定义颜色状态列表的 XML 文件. drawable/位图文件(.png..9