1. Locale介绍
该类封装了语言名代号及国家名代号信息,通过如下程序我们可以进一步了解:
locale介绍.png
以美国举例对应的语言代号为en,对应的国家代号为US,这也就是为什么资源文件命名中会出现大写字母的原因
2. ResourceBundle介绍
ResourceBundle是一个抽象类,专门用于读取资源文件,底层已经封装好了io, 通过它与Locale的搭配可以轻松实现国际化
3. 国际化示例
- 新建一个java工程, 并在src目录下新建如下两个资源文件,资源文件的命名规则为baseName_语言代号_国家代号:
java工程结构.png
- 这两个配置文件的内容分别为:
shengsiyuan_en_US.properties.png
shengsiyuan_zh_CN.properties.png
- 主程序代码如下:
main.png
- 控制台打印信息:
console_1.png
如果第一行代码改为
ResourceBundle rb = ResourceBundle.getBundle("shengsiyuan", Locale.US);
那么控制台输出的是zhangsan总结:本质就是字符串的拼接而已,可以把Locale看作一个字符串变量
3. 默认资源文件
默认资源文件的名字为baseName.properties,当Locale对应的资源文件找不到的时候,最后就会加载baseName.properties文件
4. 资源文件占位符
我们可以在资源文件中设置占位符,搭配MessageFormat可以动态的设置资源文件中的内容值,示例如下:
spaceholder_1.png
spaceholder_2.png
主程序代码:
占位符格式化.png
控制台输出结果:
spaceHolder_console.png
如果改为Locale.US那么输出结果就是zhangsan:welcome