JavaSE 国际化详解

1. Locale介绍

该类封装了语言名代号及国家名代号信息,通过如下程序我们可以进一步了解:

JavaSE 国际化详解_第1张图片
locale介绍.png

以美国举例对应的语言代号为en,对应的国家代号为US,这也就是为什么资源文件命名中会出现大写字母的原因

2. ResourceBundle介绍

ResourceBundle是一个抽象类,专门用于读取资源文件,底层已经封装好了io, 通过它与Locale的搭配可以轻松实现国际化

3. 国际化示例

  1. 新建一个java工程, 并在src目录下新建如下两个资源文件,资源文件的命名规则为baseName_语言代号_国家代号:
java工程结构.png
  1. 这两个配置文件的内容分别为:
shengsiyuan_en_US.properties.png
shengsiyuan_zh_CN.properties.png
  1. 主程序代码如下:
JavaSE 国际化详解_第2张图片
main.png
  1. 控制台打印信息:
console_1.png
  1. 如果第一行代码改为ResourceBundle rb = ResourceBundle.getBundle("shengsiyuan", Locale.US);那么控制台输出的是zhangsan

  2. 总结:本质就是字符串的拼接而已,可以把Locale看作一个字符串变量

3. 默认资源文件

默认资源文件的名字为baseName.properties,当Locale对应的资源文件找不到的时候,最后就会加载baseName.properties文件

4. 资源文件占位符

我们可以在资源文件中设置占位符,搭配MessageFormat可以动态的设置资源文件中的内容值,示例如下:

spaceholder_1.png
spaceholder_2.png

主程序代码:

JavaSE 国际化详解_第3张图片
占位符格式化.png

控制台输出结果:

spaceHolder_console.png

如果改为Locale.US那么输出结果就是zhangsan:welcome

你可能感兴趣的:(JavaSE 国际化详解)