Java Gossip:国際化メッセージ

2736 ワード

Java Gossip: 国際化メッセージ国際化の英語はInternationalizationです.単語には全部で18文字あり、I 18 Nと略称されています.アプリケーションが地域によって異なるメッセージを表示できるようにすることを目的としています.最も基本的なのは、異なる言語の使用者に自分の言語に属するメッセージを見ることができ、英語の言語のように英語の内容を見ることができます.中国語学部では中国語の内容が見られます.アプリケーションで領域を表すためにJavaはjava.util.Localeクラスを提供し、Localeインスタンスには言語情報と領域情報が含まれています.例えば、「en」は英語の言語を表す国です.このアルファベットの組み合わせは ISO 639 で定義されていますが、地域情報は「US」のようにアメリカを表し、このアルファベットの組み合わせは ISO 3166 に表示されます.このようにしてLocaleのインスタンスを追加することができます.
Locale locale = new Locale("zh", "TW");
 どのようにしてLocaleをメッセージバインドに使用しますか?ResourceBundle.getBundle()メソッドを使用すると、プリセットは自動的にコンピュータの言語と地域のメッセージを取得します.実際には、メッセージファイルの名前はbasenameと言語と地域で構成されています.たとえば、次のようになります.
  • basename.properties
  • basename_en.properties
  • basename_zh_TW.properties

  • 言語と地域を指定していないbasenameはプリセットのリソースファイル名であり、専用の言語系、地域メッセージファイルが提供されていない場合、プリセットのリソースファイルが検索されます.繁体字中国語のメッセージを提供する場合は、メッセージ・リソース・ファイルがISO-8859-1符号化されている必要があるため、非西洋語系の処理では、Java Unicode Escape形式に変換する必要があります.たとえば、メッセージ・リソース・ファイルに次のような内容を書くことができます.
  • messages_zh_TW.txt
  • onlyfun.caterpillar.welcome=  
    onlyfun.caterpillar.name=
    は、次いで、JDKのツールプログラムnative 2 asciiを使用して変換される.
    native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties
    変換後の内容は次のようになります.
  • messages_zh_TW.properties
  • onlyfun.caterpillar.welcome=\u54c8\u56c9
    onlyfun.caterpillar.name=\u4e16\u754c
    このファイルをclasspathがアクセスできる場所に配置し、プリセットのメッセージファイルを提供することもできます.
  • messages.properties
  • onlyfun.caterpillar.welcome=Hello
    onlyfun.caterpillar.name=World
    メッセージファイルをテストしてみましょう.私が使っている作業システムは言語系設定が中国語で、地域設定が台湾で、私が次のプログラムを使っているとき:
  • ResourceBundleDemo.java
  • package onlyfun.caterpillar;
     
    import java.util.ResourceBundle;

    public class ResourceBundleDemo {
    public static void main(String[] args) {
    ResourceBundle resource =
    ResourceBundle.getBundle("messages");

    System.out.print(resource.getString(
    "onlyfun.caterpillar.welcome") + "!");
    System.out.println(resource.getString(
    "onlyfun.caterpillar.name") + "!");
    }
    }
    はプリセットの語系「zh」と領域設定「TW」を使うのでmessages_を探しますzh_TW.propertiesの内容なので、以下のメッセージが表示されます.
    ハロー!世界!
    ResourceBundle.getBundle()を使用する場合は、たとえばmessages_en_US.propertiesは、ResourceBundle.getBundle()がこのファイルの内容を取得するには、次のように書くことができます.
    Locale locale = new Locale("en", "US");ResourceBundle resource =             ResourceBundle.getBundle("messages", locale);
     取得されたメッセージはmessages_en_US.propertiesの内容.