Java i18n - Java 中的国际化
Java 中的国际化或 Java i18n 是一个非常重要的特性。Java 通过资源包提供国际化 (i18n) 支持。
Java 中的国际化
为了使您的应用程序支持不同的语言环境,我们需要创建特定于语言环境的属性文件。文件名遵循带有语言代码和国家代码的包名称的模式,例如ApplicationMessages_en_US.properties
。特定语言环境的属性文件准备就绪后,您需要做的就是使用正确的语言环境初始化资源包。Java 提供了两个用于此目的的类java.util.ResourceBundle
。ResourceBundlejava.util.Locale
读取特定于语言环境的属性文件,您可以获取任何键的特定于语言环境的值。这对于使您的 Web 应用程序文本特定于语言环境非常有帮助,您可以从 HTTP 请求中获取语言环境信息,并使用该语言环境资源包文件生成动态页面。您还可以为用户提供选择语言环境的选项并动态更新标签。
Java i18n 示例
对于 java i18n 示例,我创建了结构如下图所示的项目。以下是JavaInternationalizationExample类的 java 代码。
package com.journaldev.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
这就是快速 Java i18n 示例的全部内容。Java 中的国际化对于 Web 应用程序非常有用,可用于以特定语言环境的语言提供页面。