java國際化程式建立屬性檔案_Java國際化(i18n)ResourceBundle類

ResourceBundle類用於儲存區域設定敏感的文字和物件。 通常使用屬性檔案來儲存特定於語言環境的文字,然後使用ResourceBundle物件來表示它們。 以下是在基於Java的應用程式中使用特定於語言環境的屬性檔案的步驟。

第1步:建立屬性檔案

假設我們需要英文語言環境的屬性檔案。建立屬性檔名稱為:XXX_en_US.properties,其中XXX是檔案的名稱,en_US表示英語(美國)的語言環境。

檔案:Messages_en_US.properties -

message=Welcome to zyiz.net!

現在為法語區域設定建立屬性檔案。建立一個屬性檔名稱為:XXX_fr_FR.properties,其中XXX是檔案的名稱,fr_FR表示法語(法國)的語言環境。

檔案:Messages_fr_FR.properties -

message=Bienvenue sur zyiz.net!

在這裡可以看到鍵(message)是相同的,但是這個值在屬性檔案中是特定於語言環境的。

第2步:建立ResourceBundle物件

使用以下語法建立具有屬性檔名和區域設定的ResourceBundle物件。

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

第3步:從ResourceBundle物件取得值。

透過傳遞鍵,然後從ResourceBundle物件取得值。

String value = bundle.getString("message");

範例

以下範例說明如何使用ResourceBundle物件來顯示來自屬性檔案的特定於區域的值。

檔案:IOTester.java -

import java.util.Locale;

import java.util.ResourceBundle;

public class I18NTester {

public static void main(String[] args) {

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));

bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);

System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));

}

}

它會列印下面的結果 -

Message in en_US: Welcome to zyiz.net!

Message in fr_FR: Bienvenue sur zyiz.net!

命名約定注意事項

以下是屬性檔案的命名約定。

對於對映到預設語言環境的屬性檔案,不需要前置詞。 message_en_US.properties等同於message.properties。

對於對映到語言環境的屬性檔案,可以透過兩種方式附加前置詞。 message_fr.properties等同於message_fr_FR.properties。

b739ec46bb5c46d9c0aa4ce35ba1ea56.png