国际化在Java或Java i18n中是一个非常重要的功能,Java通过资源包提供国际化(i18n)的支持。
Java 国际化
要使您的应用程序支持不同的局部,我们需要创建 locale 特定的属性文件。 文件名按照语言代码和国家代码的组件名称模式,例如 ApplicationMessages_en_US.properties
. 一旦特定局部的属性文件准备好了,您所需要做的就是用正确的 Locale 初始化资源包。 Java 提供了两个类 java.util.ResourceBundle
和 java.util.Locale
用于此目的。 ResourceBundle 读取了局部特定的属性文件,您可以获得任何密钥的局部特定的值。
Java i18n 示例
For java i18n example, I have created the project whose structure is like below image. Here is the java code for JavaInternationalizationExample class.
1package com.journaldev.i18n;
2
3import java.util.Locale;
4import java.util.ResourceBundle;
5
6public class JavaInternationalizationExample {
7
8 public static void main(String[] args) {
9 //default locale
10 ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
11 //Get ResourceBundle with Locale that are already defined
12 ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
13 //Get resource bundle when Locale needs to be created
14 ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
15
16 //lets print some messages
17 printMessages(bundle);
18 printMessages(bundleFR);
19 printMessages(bundleSWE);
20
21 }
22
23 private static void printMessages(ResourceBundle bundle) {
24 System.out.println(bundle.getString("CountryName"));
25 System.out.println(bundle.getString("CurrencyCode"));
26 }
27
28}
这里的包名为ApplicationMessages
,我有2个本地特定的资源包和一个默认的资源包。
1CountryName=USA
2CurrencyCode=USD
ApplicationMessages_fr_FR.properties
的应用程序
1CountryName=France
2CurrencyCode=Euro
’ApplicationMessages_sv_SE.properties’ 的内容
1CountryName=Sweden
2CurrencyCode=Kr
注意使用Locale类,有些地方已经定义了,但我们可以通过将语言代码和国家代码传递给它的构建器来创建新的地方。
1USA
2USD
3France
4Euro
5Sweden
6Kr
对于快速的 java i18n 示例来说,国际化在 java 中非常有用,在 Web 应用程序中以本地特定语言服务页面。