Java i18n - Java 中的国际化

国际化在Java或Java i18n中是一个非常重要的功能,Java通过资源包提供国际化(i18n)的支持。

Java 国际化

要使您的应用程序支持不同的局部,我们需要创建 locale 特定的属性文件。 文件名按照语言代码和国家代码的组件名称模式,例如 ApplicationMessages_en_US.properties. 一旦特定局部的属性文件准备好了,您所需要做的就是用正确的 Locale 初始化资源包。 Java 提供了两个类 java.util.ResourceBundlejava.util.Locale 用于此目的。 ResourceBundle 读取了局部特定的属性文件,您可以获得任何密钥的局部特定的值。

Java i18n 示例

For java i18n example, I have created the project whose structure is like below image. java i18n example, Internationalization in Java 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 应用程序中以本地特定语言服务页面。

Published At
Categories with 技术
Tagged with
comments powered by Disqus