Java國際化(i18n)ResourceBundle類

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

第1步:創建屬性檔

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

檔:Messages_en_US.properties -

message=Welcome to xuhuhu.com!

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

檔:Messages_fr_FR.properties -

message=Bienvenue sur xuhuhu.com!

在這裏可以看到鍵(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 xuhuhu.com!
Message in fr_FR: Bienvenue sur xuhuhu.com!

命名約定注意事項

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

  • 對於映射到默認語言環境的屬性檔,不需要首碼。 message_en_US.properties等同於message.properties
  • 對於映射到語言環境的屬性檔,可以通過兩種方式附加首碼。 message_fr.properties等同於message_fr_FR.properties

上一篇: Java國際化(i18n)顯示語言 下一篇: Java國際化(i18n)NumberFormat類