Java i18n – Java 中的国际化

國際化在Java或Java i18n中是一個非常重要的功能。 Java通過資源束提供國際化(i18n)支持。

Java中的國際化

為了使應用程序支持不同的語言環境,我們需要創建特定於語言環境的屬性文件。文件名遵循捆綁名稱與語言代碼和國家代碼的模式,例如 ApplicationMessages_en_US.properties 。一旦特定於語言環境的屬性文件準備就緒,您所需做的就是使用正確的語言環境初始化資源束。 Java提供了兩個類 java.util.ResourceBundle java.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);
        //當需要創建語言環境時,獲取資源束
        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"));
    }

}

這裡的資源束名稱是 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