JAVA的國際化機制

azz發表於2007-08-24
JAVA的國際化機制[@more@]  一 介紹
  國際化(Internationalization)是設計一個適用於多種語言和地區的應用程式的過程。適用於多種語言和地區的含義是當使用不同語言及處於不同的地區的使用者在使用這個應用程式時,應用程式必須使用他們能看懂的語言和符合他們文化習慣來顯示資訊。國際化有時候被簡稱為i18n,因為有18個字母在國際化的英文單詞的字母i和n之間。

  一個國際化的程式通常具有以下特徵:

  有一個附加的本地化資料(localized data)及擁有在全世界各個地區執行的能力。
  文字的元素,比如狀態資訊或GUI截面的lables,不是直接寫(hardcoded)在程式中,而是被儲存在本地化的資料中,並且能被程式正確的動態的使用。
  支援新的語言時,不需要修改程式,不需要重新編譯。
  文化差異的資料,比如日期和貨幣,必須根據擁護的語言和習慣顯示不同的格式。
  可以被迅速的本地化。
  本地化(Localization)是指透過增加本地描述的構件(locale-specific components )和文字翻譯工作來使應用程式適應於不同的語言和地區的過程。本地化有時候被簡稱為l10n,應為有10個字母在本地化的英文單詞的字母l和n之間。通常本地化最耗時的工作應該是文字翻譯。本地化工作者們要根據地區的具體需求來為日期、數字和通貨等資料建立新的格式。其他型別的資料,象聲音,圖象等,也需要根據具體需要來決定是否本地化。

  下面透過一個簡單的例子來說明如何給一個程式提供國際化的特性。這個例子在不同的語言環境下顯示不同的文字資訊。

  一個簡單的例子
  先看下面的一段程式碼:
  public class NotI18N {
  static public void main(String[] args) {
  System.out.println("Hello.");
  System.out.println("How are you?");
  System.out.println("Goodbye.");
  }
  }
  如果你決定在上面的程式中給德國和法國的不同使用者顯示同樣的資訊。但是你的程式設計師卻不是個語言專家,他不懂德語和法語。所以你需要翻譯人員把它翻譯成德語和法語,但是你的翻譯人員不懂程式,所以你可以把這些資訊存到一個文字或其他格式的檔案中供翻譯人員使用。那麼,程式必須能顯示不同語言的資訊,並且你並不知道你希望為這個程式提供的下一個語言支援是什麼,或許是日語或許是別的什麼語言。
  下面的程式碼是一個國際化的程式碼的例子:
  import java.util.*;

  public class I18NSample {
  static public void main(String[] args) {
  String language;
  String country;

  if (args.length != 2) {
  language = new String("en");
  country = new String("US");
  } else {
  language = new String(args[0]);
  country = new String(args[1]);
  }

  Locale currentLocale;
  ResourceBundle messages;

  currentLocale = new Locale(language, country);
  messages = ResourceBundle.getBundle("MessagesBundle",
  currentLocale);
  System.out.println(messages.getString("greetings"));
  System.out.println(messages.getString("inquiry"));
  System.out.println(messages.getString("farewell"));
  }
  }
  請注意:在上面的程式碼中,資訊並沒有被hardcoded在程式碼中!
  如果想執行上面的程式碼,請下載下面的檔案:
  1、I18NSample.java
  2、MessageBundle.properties
  3、MessageBundle_de_DE.properties
  4、MessageBundle_en_US.properties
  5、MessageBundle_fr_FR.properties
  下面看看這個程式的執行結果:
  顯示法語資訊:
  java I18NSample fr FR
  Bonjour.
  Comment allez-vous?
  Au revoir.
  顯示英語資訊:
  java I18NSample en US
  Hello.
  How are you?
  Goodbye.

  從上面的程式碼我們可以看出,在實現了國際化的程式碼中,並沒有將需要顯示的資訊直接hardcode在程式碼中,而是存在一個檔案中供程式使用。程式根據不同的語言和國家(Local)來取得檔案中不同資訊顯示。我們試著按一下的步驟一步一步分析這段程式碼如何實現了國際化:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965652/,如需轉載,請註明出處,否則將追究法律責任。

相關文章