Java i18n – Java国际化
时间:2020-02-23 14:36:37 来源:igfitidea点击:
Java或者Java i18n中的国际化是非常重要的功能。
Java通过资源包提供国际化(i18n)支持。
Java国际化
为了使您的应用程序支持不同的语言环境,我们需要创建特定于语言环境的属性文件。
文件名遵循包名称的格式,并带有语言代码和国家/地区代码,例如ApplicationMessages_zh_CN.properties
准备好特定语言环境的属性文件后,您要做的就是使用正确的语言环境初始化资源包。
Java提供了两个类" java.util.ResourceBundle"和" java.util.Locale"。
ResourceBundle读取特定于语言环境的属性文件,您可以获取任何键的特定于语言环境的值。
这对于使Web应用程序文本特定于语言环境非常有用,您可以从HTTP请求中获取语言环境信息,并使用该语言环境资源包文件生成动态页面。
您还可以为用户提供选择语言环境并动态更新标签的选项。
Java i18n示例
对于java i18n示例,我创建了一个项目,其结构如下图所示。
这是JavaInternationalizationExample类的Java代码。
package com.theitroad.i18n; import java.util.Locale; import java.util.ResourceBundle; public class JavaInternationalizationExample { public static void main(String[] args) { //default locale ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages"); //Get ResourceBundle with Locale that are already defined ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE); //Get resource bundle when Locale needs to be created ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE")); //lets print some messages printMessages(bundle); printMessages(bundleFR); printMessages(bundleSWE); } private static void printMessages(ResourceBundle bundle) { System.out.println(bundle.getString("CountryName")); System.out.println(bundle.getString("CurrencyCode")); } }
这里的束名称是" ApplicationMessages",我有2个特定于语言环境的资源束和一个默认资源束。
ApplicationMessages.properties
CountryName=USA CurrencyCode=USD
ApplicationMessages_fr_FR.properties
CountryName=France CurrencyCode=Euro
ApplicationMessages_sv_SE.properties
CountryName=Sweden CurrencyCode=Kr
注意使用Locale类,已经定义了一些语言环境,但是我们总是可以通过将语言代码和国家/地区代码传递给其构造函数来创建新的语言环境。
当我运行上面的程序时,这是输出。
USA USD France Euro Sweden Kr