java实现国际化_Java 国际化标准程序实现

本文介绍了Java中实现国际化的基本步骤,包括使用ResourceBundle读取.properties资源文件,通过Locale指定语言环境来获取不同的资源内容。示例代码展示了如何简单读取和格式化文本,并给出了根据不同国家语言加载不同资源文件的实例。
摘要由CSDN通过智能技术生成

国际化程序实现

所谓的国家化应用指的就是根据当前的语言环境读取指定的语言资源文件。

如果要想实现国际化的操作,那么首先要解决的问题就是如何读取资源文件的问题;所谓的资源文件 就是指文件后缀名称为:“*.properties”,里面保存的内容按照“key = value”的形式保存。

定义一个 Message.properties

info = 中华人民共和国

但是在properties文件中保存也并不是这样,而是会将中文转成UNICODE编码

info = u4E2Du534Eu4EBAu6C11u5171u548Cu56FD

这里的 info 是这个信息的 key ;以后可以根据这个 key 取得对象的 value

资源读取

java.util.ResourceBundle类

在对properties文件进行资源读取的时候就需要使用 ResourceBundle 类

ResourceBundle是一个抽象类,类中有一个方法用于取得本类对象:

根据当前语言环境取出: public static final ResourceBundle getBundle(String baseName);

根据指定语言环境取出: public static final ResourceBundle getBundle(String baseName , Locale locale);

读取内容

简单读取: public final String getString(String key);

格式化文本:(java.text.MessageFormat) public static String format(String pattern , Object … argume)

实例分析:(简单读取)

package helloworld;

import java.util.ResourceBundle;

public class TestDemo {

public static void main(String [] args) {

ResourceBundle rb = ResourceBundle.getBundle("Message");

// 访问资源文件properties时,只需要提供文件名即可不要后缀格式名

System.out.println(rb.getString("info"));

}

}

实例分析:(格式化文本)

修改 properties 文件内容

info=u4E2Du534Eu4EBAu6C11u5171u548Cu56FD

msg =u59D3u540D{0}u5F53u524Du65F6u95F4{1}

现在的 properties 文件中出现了{*}占位符,因为format()方法传可变长参数。

package helloworld;

import java.text.MessageFormat;

import java.util.Date;

import java.util.ResourceBundle;

public class TestDemo {

public static void main(String [] args) {

ResourceBundle rb = ResourceBundle.getBundle("Message");

// 访问资源文件properties时,只需要提供文件名即可不要后缀格式名

String str = rb.getString("msg");

System.out.println( MessageFormat.format(str,"王宇阳",new Date()));

}

}

如果需要根据国家语言不同输出不同的资源内容,则需要 Locale 类

Locale类保存的是一个国家的区域和语言编码,例如:中国 zh_CN

在定义资源文件的时候加上指定的语言编码

范例:定义中文的资源文件

Messages_zh_CN.properties msg = 欢迎 {0} 光临

范例:定义英文的资源文件

Messages_en_US.properties msg = Hello {0}

设置的baseName(区域和语言编码)一定是Messages,所有的语言代码由 Locale类 设置

构造方法: public Locale (String language , String country);

取得当前语言环境: public static Locale getDefault();

实例:读取中文的资源文件

public class TestDemo {

public static void main(String [] args) {

Locale loc = new Locale("zh","CN"); //明确定义国家的语言

ResourceBundle rb = ResourceBundle.getBundle("Messages",loc);

// 访问资源文件properties时,只需要提供文件名即可不要后缀格式名

String str = rb.getString("msg");

System.out.println(MessageFormat.format(str, "王宇阳"));

}

}

实例:读取英文的资源文档

public class TestDemo {

public static void main(String [] args) {

Locale loc = new Locale("en","US"); //明确定义国家的语言

ResourceBundle rb = ResourceBundle.getBundle("Messages",loc);

// 访问资源文件properties时,只需要提供文件名即可不要后缀格式名

String str = rb.getString("msg");

System.out.println(MessageFormat.format(str, "yuyang_Wang"));

}

}

在上两则实例中,我们通过对 Locale类对象 loc设置了指定的国家和区域,properties资源会根据 Locale 设置的baseName来进行调用指定的baseName的资源文档。

总结

资源文件:文件名称的每个单词首字母大写,后缀为:*.properties

通过ResourceBundle类可以读取在指定的CLASSPATH下的资源文件

Locale 类用于指定读取的资源文件的语言环境

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值