java util工具读取国际化资源文件

Locale ResourceBundle Locale读取资源文件

package yycg.util;

import java.io.Serializable;

import java.text.MessageFormat;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Locale;

import java.util.ResourceBundle;

import java.util.Set;

/**

* 资源文件读取工具类

*

*/

public class ResourcesUtil implements Serializable {

private static final long serialVersionUID = -7657898714983901418L;

/**

* 系统语言环境,默认为中文zh

*/

public static final String LANGUAGE = "zh";

/**

* 系统国家环境,默认为中国CN

*/

public static final String COUNTRY = "CN";

private static Locale getLocale() {

Locale locale = new Locale(LANGUAGE, COUNTRY);

return locale;

}

/**

* 根据语言、国家、资源文件名和key名字获取资源文件值

*

* @param language

*            语言

*

* @param country

*            国家

*

* @param baseName

*            资源文件名

*

* @param section

*            key名字

*

* @return 值

*/

private static String getProperties(String baseName, String section) {

String retValue = "";

try {

Locale locale = getLocale();

ResourceBundle rb = ResourceBundle.getBundle(baseName, locale);

retValue = (String) rb.getObject(section);

} catch (Exception e) {

e.printStackTrace();

// TODO 添加处理

}

return retValue;

}

/**

* 通过key从资源文件读取内容

*

* @param fileName

*            资源文件名

*

* @param key

*            索引

*

* @return 索引对应的内容

*/

public static String getValue(String fileName, String key) {

String value = getProperties(fileName,key);

return value;

}

public static List<String> gekeyList(String baseName) {

Locale locale = getLocale();

ResourceBundle rb = ResourceBundle.getBundle(baseName, locale);

List<String> reslist = new ArrayList<String>();

Set<String> keyset = rb.keySet();

for (Iterator<String> it = keyset.iterator(); it.hasNext();) {

String lkey = (String)it.next();

reslist.add(lkey);

}

return reslist;

}

/**

* 通过key从资源文件读取内容,并格式化

*

* @param fileName

*            资源文件名

*

* @param key

*            索引

*

* @param objs

*            格式化参数

*

* @return 格式化后的内容

*/

public static String getValue(String fileName, String key, Object[] objs) {

String pattern = getValue(fileName, key);

String value = MessageFormat.format(pattern, objs);

return value;

}

public static void main(String[] args) {

System.out.println(getValue("resources.messages", "101",new Object[]{100,200}));

//根据操作系统环境获取语言环境

/*Locale locale = Locale.getDefault();

System.out.println(locale.getCountry());//输出国家代码

System.out.println(locale.getLanguage());//输出语言代码s

//加载国际化资源(classpath下resources目录下的messages.properties,如果是中文环境会优先找messages_zh_CN.properties)

ResourceBundle rb = ResourceBundle.getBundle("resources.messages", locale);

String retValue = rb.getString("101");//101是messages.properties文件中的key

System.out.println(retValue);

//信息格式化,如果资源中有{}的参数则需要使用MessageFormat格式化,Object[]为传递的参数,数量根据资源文件中的{}个数决定

String value = MessageFormat.format(retValue, new Object[]{100,200});

System.out.println(value);

*/

}

}

时间: 2024-12-17 02:07:51

java util工具读取国际化资源文件的相关文章

Java IO流 之 ResourceBundle 读取国际化资源文件

http://www.verejava.com/?id=16994867037422 /** java.util.ResourceBundle : 用来读取资源文件的类(*.properties) 资源文件里面的内容是Key=value 键值对 注意: 1. 根据Locale来读取资源文件时,如果没有找到以 baseName_language_country.properties 形式定义的资源文件, 就从 baseName.properties 资源文件读取 */ import java.ut

Java中读取properties资源文件

一.通过ResourceBundle来读取.properties文件 /** * 通过java.util.resourceBundle来解析properties文件. * @param String path:properties文件的路径 * @param String key: 获取对应key的属性 * @return String:返回对应key的属性,失败时候为空. */ public static String getPropertyByName1(String path,String

Java国际化资源文件的选择

(一)在Java环境下有以下资源文件: message_zh_CN.properties message_zh_TW.properties message_zh.properites message.properties 如果Locale为zh_CN,查找资源文件的顺序为: message_zh_CN.properties message_zh.properites message.properties 如果上述三个资源文件都不存在,则抛出异常,不会使用message_zh_TW.propert

Struts2的国际化(一)-国际化资源文件的配置及国际化信息的访问

一.概述: 1)国际化是一种技术:在程序设计领域,把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化. 2)本地化是一个动作:与国际化对应的是本地化,指让一个具备国际化支持的应用程序支持某个特定的地区. 3)Struts2 国际化是建立在 Java 国际化基础上的: >为不同国家/语言提供对应的消息资源文件 >Struts2 框架会根据请求中包含的Locale 加载对应的资源文件 >通过程序代码取得该资源文件中指定 key 对应的消息 二.如何配置国际化

小谈——读取web资源文件的方式和路径问题

读取web资源文件的方式 a): 采用servletContext对象获得. 优点: 任意文件,任意路径都可获得 缺点: 必须在web环境下 // 拿到全局对象 ServletContext sc = this.getServletContext(); // 获取p1.properties文件的路径 String path = sc.getRealPath("/WEB-INF/classes/p1.properties"); b): 采用resourceBundle获得 优点: 非we

SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件

关于SpringMVC验证框架Validation的使用方法,不是本篇的重点,可参见博文SpringMVC介绍之Validation 在使用Validation时,一定有朋友遇到过一个问题,那就是:无法传递参数到国际化资源文件properties错误描述中. 举个例子: User类中 @NotEmpty(message="{password.empty.error}") private String password; 资源文件validation_zh_CN.properties中为

Struts2的国际化(二)-利用超链接实现动态加载国际化资源文件

原理:程序是根据Locale来确定国际化资源文件,因此关键之处在于知道 Struts2 框架是如何确定 Local 对象的 ! 由于Struts2 使用 i18n 拦截器处理国际化,并且将其注册在默认的拦截器中,因此,可以通过阅读 I18N 拦截器知道. 具体确定 Locale 对象的过程: > Struts2 使用 i18n 拦截器 处理国际化,并且将其注册在默认的拦截器栈中 > i18n拦截器在执行Action方法前,自动查找请求中一个名为 request_locale 的参数. 如果该参

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

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

*_zh_CN.properties 国际化资源文件 struts 防乱码等

国际化资源文件在struts中须要写以下代码: <!-- 设置Web应用的默认Locale为zh_CN --> <constant name="struts.locale" value="zh_CN" /> <!-- 设置Struts2应用的国际化资源文件,多个文件中间可用逗号分隔 --> <constant name="struts.custom.i18n.resources" value="