六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 49|回复: 0

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

[复制链接]

升级  26%

82

主题

82

主题

82

主题

举人

Rank: 3Rank: 3

积分
278
 楼主| 发表于 2013-1-27 04:43:44 | 显示全部楼层 |阅读模式
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=Addbutton.update=Modifybutton.delete=Deletebutton.refresh=Refreshstate.success=Operation Successstate.failure=Operation Failuremessage=The disk's {0} contains {1} files.


button.add=\u6dfb\u52a0button.update=\u4fee\u6539button.delete=\u5220\u9664button.refresh=\u5237\u65b0state.success=\u64cd\u4f5c\u6210\u529fstate.failure=\u64cd\u4f5c\u5931\u8d25message=The disk''s {0} contains {1} files.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表