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
native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties
変換後の内容は次のようになります. messages_zh_TW.properties messages.properties ResourceBundleDemo.java
ハロー!世界!
ResourceBundle.getBundle()を使用する場合は、たとえばmessages_en_US.propertiesは、ResourceBundle.getBundle()がこのファイルの内容を取得するには、次のように書くことができます.
Locale locale = new Locale("en", "US");ResourceBundle resource = ResourceBundle.getBundle("messages", locale);
取得されたメッセージはmessages_en_US.propertiesの内容.
Locale locale = new Locale("zh", "TW");
どのようにしてLocaleをメッセージバインドに使用しますか?ResourceBundle.getBundle()メソッドを使用すると、プリセットは自動的にコンピュータの言語と地域のメッセージを取得します.実際には、メッセージファイルの名前はbasenameと言語と地域で構成されています.たとえば、次のようになります.
言語と地域を指定していないbasenameはプリセットのリソースファイル名であり、専用の言語系、地域メッセージファイルが提供されていない場合、プリセットのリソースファイルが検索されます.繁体字中国語のメッセージを提供する場合は、メッセージ・リソース・ファイルがISO-8859-1符号化されている必要があるため、非西洋語系の処理では、Java Unicode Escape形式に変換する必要があります.たとえば、メッセージ・リソース・ファイルに次のような内容を書くことができます.
onlyfun.caterpillar.welcome=
onlyfun.caterpillar.name=
は、次いで、JDKのツールプログラムnative 2 asciiを使用して変換される.native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties
変換後の内容は次のようになります.
onlyfun.caterpillar.welcome=\u54c8\u56c9
onlyfun.caterpillar.name=\u4e16\u754c
このファイルをclasspathがアクセスできる場所に配置し、プリセットのメッセージファイルを提供することもできます.onlyfun.caterpillar.welcome=Hello
onlyfun.caterpillar.name=World
メッセージファイルをテストしてみましょう.私が使っている作業システムは言語系設定が中国語で、地域設定が台湾で、私が次のプログラムを使っているとき: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の内容.