`

JAVA中怎么实现国际化(ResourceBundle 与locale的使用 )

    博客分类:
  • JAVA
阅读更多
package org.bbs.util;

import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class MessageResource {
	private ResourceBundle rb; //资源绑定  
	/** 
	 * 构造器 
	 * @param props Properties 资源绑定 
	 */
	public MessageResource(ResourceBundle rb) {
		this.rb = rb;
	}
	/** 
	 * 得到消息字符 
	 * @param key String 键 
	 * @return String 
	 */
	public String getString(String key) {
		try {
			return rb.getString(key);
		} catch (MissingResourceException ex) {
			return "undefined";
		}
	}
	/** 
	 * 得到消息资源 
	 * @param key String 键 
	 * @param args Object[] 可变消息 
	 * @return String 
	 */
	public String getString(String key, Object[] args) {
		try {
			String temp = rb.getString(key);
			MessageFormat mFormat = new MessageFormat(temp);
			return mFormat.format(temp, args);
		} catch (MissingResourceException ex) {
			return "undefined";
		}
	}
}

package org.bbs.util;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;

public class MessageResourceFactory {  
    private static MessageResourceFactory factory = new MessageResourceFactory();  
   //存放消息资源 
    private Map msgResourceMap = null; 
     
  
    private MessageResourceFactory() {  
        msgResourceMap = new HashMap();  
    }  
  
    public static MessageResourceFactory getInstance() {  
        return factory;  
    }  
    /** 
     * 创建消息资源 
     * @param name String 消息资源文件名 
     * @param locale Locale  
     * @return MessageResource 
     */  
    public MessageResource createMessageResource(String fileResName, Locale locale) {  
        Object msgResObj = msgResourceMap.get(fileResName);  
        if (msgResObj == null) {               
            ResourceBundle rb = ResourceBundle.getBundle(fileResName, locale);  
            MessageResource msgRes = new MessageResource(rb);  
            msgResourceMap.put(fileResName, msgRes);  
            return msgRes;  
        } else {  
            return (MessageResource)msgResObj;  
        }  
    }  
}  


package org.bbs.util;

import java.util.Locale;

public class MessageFormatIin18 {

	public static void main(String[] args) {
		MessageResourceFactory factory = MessageResourceFactory.getInstance();
		MessageResource res = factory.createMessageResource("message",
				new Locale("zh", "CN"));
		String value = res.getString("button.add");
		System.out.println(value);
		String value_args = res.getString("message", new Object[] { "C", "12" });
		System.out.println(value_args);
	}

}


button.add=Add
button.update=Modify
button.delete=Delete
button.refresh=Refresh
state.success=Operation Success
state.failure=Operation Failure
message=The disk's {0} contains {1} files.



button.add=\u6dfb\u52a0
button.update=\u4fee\u6539
button.delete=\u5220\u9664
button.refresh=\u5237\u65b0
state.success=\u64cd\u4f5c\u6210\u529f
state.failure=\u64cd\u4f5c\u5931\u8d25
message=The disk''s {0} contains {1} files.




分享到:
评论

相关推荐

    JAVA_国际化程序实现

    你可以根据需要创建不同的`Locale`对象,然后在`ResourceBundle`和格式化类中使用它们。 在Web应用中,Spring框架提供了强大的i18n支持。通过配置`MessageSource`,可以方便地读取和使用本地化消息。在JSP页面中,...

    java实现国际化

    在Java中,这一功能主要通过Java的国际ization(i18n)和本地化(l10n)API来实现。 首先,我们需要理解`ResourceBundle`类的重要性。`ResourceBundle`是Java i18n的核心,它用于存储和加载不同语言环境下的文本...

    java国际化实现框架底层源码

    Java提供了完整的API来处理国际化问题,主要包括java.util.Locale、java.text包中的类以及ResourceBundle等核心组件。下面我们将深入探讨Java国际化实现的原理,并结合`SearchZhUtil.java`源码进行分析。 1. **java...

    国际化 必备工具 java编写

    本篇将深入探讨Java中实现国际化的必备工具以及相关的编码转换问题。 一、Java中的国际化 1. **资源绑定文件(Properties文件)** 在Java中,我们通常使用`.properties`文件来存储不同语言的文本资源。例如,`...

    java技术教你如何实现国际化

    为了在代码中使用资源包,我们需要使用`java.util.ResourceBundle`类。以下是一个简单的例子: ```java ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.CHINA); String greeting = bundle....

    Java国际化编程及其实现.rar

    在Java中,国际化主要通过java.util包下的Locale、ResourceBundle和Format类来实现。 首先,Locale类代表一个特定的语言环境,包括语言、国家和变体。例如,"zh_CN"代表简体中文,"en_US"代表美式英语。开发者可以...

    Xml ResourceBundle简单实现

    总结来说,Xml ResourceBundle是Java中实现国际化和本地化的一种有效手段,通过XML文件存储资源,提高了代码的可读性和维护性。开发者可以根据需求自定义ResourceBundle子类,实现XML资源的加载和解析,以满足项目的...

    java国际化官方指南

    ResourceBundle允许将应用程序中使用的字符串、图片和其他本地化信息按照不同的Locale来组织和管理。它是一个本地化数据的容器,可以为特定的Locale提供本地化资源,使得程序能够根据当前Locale来选择相应的资源束,...

    java国际化组件

    为了将这个国际化组件整合到其他模块,我们需要在Maven的`pom.xml`文件中声明该组件为依赖,并在调用模块的代码中使用相应的方法来获取本地化资源。例如,我们可以创建一个`I18NService`类,提供根据Locale获取资源...

    java国际化&时间处理

    Java国际化(Internationalization)与时间处理是开发过程中两个重要的领域,尤其对于构建全球化应用程序来说,理解和掌握这些概念至关重要。国际化允许软件适应不同地区的语言、文化习惯和格式,而时间处理则涉及...

    java国际化中文乱码问题解决包

    2. **在ResourceBundle中使用UTF-8**:在创建 `ResourceBundle` 文件时,确保每个文件都以UTF-8格式保存,这样可以确保中文字符被正确存储。 3. **读取ResourceBundle时指定编码**:在读取 `ResourceBundle` 文件时...

    java国际化i18n

    在Java中实现国际化通常涉及以下几个步骤: 1. 创建资源包:资源包通常是`.properties`文件,如`messages.properties`(默认语言)和`messages_de.properties`(德语版本)。每个文件包含键值对,键用于在代码中...

    JAVA Web實現國際化插件

    在Java Web开发中,实现国际化是一项重要的任务,它允许应用程序为不同地区的用户提供本地化的界面和内容。"JAVA Web实现国际化插件"就是这样一个工具,它旨在简化这一过程,提供便捷的语言转换功能。以下是对该插件...

    JAVA国际化

    7. **国际化和Web应用**:在Java Web应用中,国际化通常是通过Servlet或者JSP来实现的。请求上下文中的Locale信息可以从HttpServletRequest对象中获取,然后用它来加载相应的ResourceBundle。在JSP页面上,可以使用...

    Java 程序国际化教程+源码

    在Java中,资源包(Resource Bundle)是实现国际化的核心。资源包是一系列键值对,存储了应用程序中的文本和其他可变内容,比如错误消息和用户界面字符串。通过使用`ResourceBundle`类,我们可以根据用户的`Locale`...

    Java 国际化操作

    Java通过使用Resource Bundle和Locale对象来实现国际化。 1. **Locale对象**:在Java中,`java.util.Locale`类代表了一个特定的语言环境,它包含了语言、国家和地区的信息。例如,`new Locale("en", "US")`表示英语...

    Java internationalization basics.zip_JAVA 国际化_doc_国际化 java

    Java的国际化是通过一系列的API和设计原则来实现的,这些API包括`java.text`、`java.util`和`java.util.locale`包中的类。这些工具使得开发者能够创建可扩展且灵活的应用程序,可以轻松地处理多种语言和文化设置。 ...

    java实现国际化I18N简单实例,没用任何框架.zip

    Java 实现国际化(I18N)是为应用程序提供多语言支持的过程,使得软件能够适应不同国家和地区的用户。I18N 是 "Internationalization" 的缩写,因为 "i" 和 "n" 之间有18个字母,这个术语在编程领域广泛使用。在这个...

Global site tag (gtag.js) - Google Analytics