Java 国际化标准程序实现
2019-08-16 09:54:46来源:博客园 阅读 ()
Java 国际化标准程序实现
国际化程序实现
所谓的国家化应用指的就是根据当前的语言环境读取指定的语言资源文件。
如果要想实现国际化的操作,那么首先要解决的问题就是如何读取资源文件的问题;所谓的资源文件 就是指文件后缀名称为:“*.properties”,里面保存的内容按照“key = value”的形式保存。
- 定义一个 Message.properties
info = 中华人民共和国
但是在properties文件中保存也并不是这样,而是会将中文转成UNICODE编码
info = \u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD
这里的 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=\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD
msg =\u59D3\u540D{0}\u5F53\u524D\u65F6\u95F4{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 类用于指定读取的资源文件的语言环境
原文链接:https://www.cnblogs.com/wangyuyang1016/p/11143954.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Float计算机表示形式
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash