Java i18n – Java 中的国际化

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

Java中的国际化

为了使你的应用程序支持不同的区域设置,我们需要创建特定区域设置的属性文件。文件名遵循包名称与语言代码和国家代码的模式,例如ApplicationMessages_en_US.properties。一旦特定区域设置的属性文件准备就绪,你所需做的就是使用正确的Locale初始化资源包。Java提供了两个类java.util.ResourceBundlejava.util.Locale用于此目的。ResourceBundle读取特定区域设置的属性文件,你可以获取任何键的特定区域设置的值。这对于使你的Web应用程序文本具有区域设置特定性非常有帮助,你可以从HTTP请求中获取区域设置信息并使用该区域设置资源包文件生成动态页面。你还可以为用户提供选择区域设置并动态更新标签的选项。

Java i18n示例

对于Java国际化示例,我已经创建了项目,其结构如下图所示。这是JavaInternationalizationExample类的Java代码。

package com.journaldev.i18n;

import java.util.Locale;
import java.util.ResourceBundle;

public class JavaInternationalizationExample {

    public static void main(String[] args) {
        //默认区域设置
        ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
        //使用已定义的区域设置获取ResourceBundle
        ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
        //在需要创建Locale时获取资源包
        ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
        
        //让我们打印一些消息
        printMessages(bundle);
        printMessages(bundleFR);
        printMessages(bundleSWE);
        
    }

    private static void printMessages(ResourceBundle bundle) {
        System.out.println(bundle.getString("CountryName"));
        System.out.println(bundle.getString("CurrencyCode"));
    }

}

这里的bundle名称是ApplicationMessages,我有两个特定于区域设置的资源包和一个默认的资源包。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国际化示例的全部内容。在Java中进行国际化对于Web应用程序以特定于区域设置的语言提供页面非常有用。

Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java