国际化程序实现

在工作开发里面,国际化应用一定会存在,只不过如果你只是针对使用情况下开发,国际化基本上就是应用。

如果说现在有一套程序可能中国要使用,美国要使用,俄罗斯也要使用。很明显,不管哪块使用,程序的核心功能不会改变,改变的只是语言。

如果要想实现语言的统一,那么唯一能够做的方式就是将所有需要显示的语言定义在各自的资源文件里面。

9003228-f6061484185d2b2a.png
image.png

所谓的国际化应用指的就是根据当前的语言环境读取指定的语言资源文件。
如果要想实现国际化的操作,那么首先要解决的就是如何读取资源文件的问题,所谓的资源文件指的是后缀名称为:"*.properties",里面的内容基于K-V存储,里面的命名标准与Java类完全一样。

范例:定义一个Messages.properties(直接在src下建)如果保存的是中文信息,那么就必须保存UNICODE编码

info=中华人民共和国

这里面保存的info是这个信息的key,以后根据这个key读取信息。

如果要读取资源文件的信息使用java.util.ResourceBundle类,这是一个抽象类,但是这个类的内部提供有一个static方法用于取得本类对象。
根据当前语言环境取出:public static final ResourceBundle getBundle(String baseName)

设置指定语言环境:
public static final ResourceBundle getBundle(String baseName,
Locale locale)

当取得了ResourcesBundle类之后,可以通过方法读取数据:
简单读取:public final String getString(String key)

范例:读取普通文本信息

很多时候数据是会被改变的

扫描二维码关注公众号,回复: 5183522 查看本文章

范例:设置读取可变的内容

如果你只是从事应用开发,那么你所要编写的只是一个资源文件而已。国际化程序应该根据所在的国家不同显示不同内容,这个时候就需要Locale类帮忙了。
Locale保存的是一个国家的区域和语言编码:
中国:zh_CN
美国:en_US

范例:定义中文的资源文件 Message_zh_CN.properties

总结:

1.资源文件:文件名称与每个单词首字母大写,而后后缀必须是"*.properties"
2.通过ResourceBundle类可以读取在指定的CLASSPATH下的资源文件,读取时不需要加后缀
动态占位文本格式化:Message.format
3.Locale类用于指定读取的资源文件的语言环境

猜你喜欢

转载自blog.csdn.net/weixin_33811539/article/details/87040395