1。ロケールの紹介
ロケールは領域を意味します。各ロケールオブジェクトは、特定の地理的、政治的、文化的地域を表します。
日付、カレンダーなどの日付/時間を表すオブジェクトを操作するときによく使用されます。時間表現方法は異なる地域で異なるためです。
ロケールオブジェクトを作成する3つの一般的な方法について話しましょう。
(1)デフォルトのロケールを取得します
使い方:
locale locale = locale.getDefault()
(2)Localeの静的オブジェクトを直接使用します
次の静的オブジェクトは、locale.javaで提供されています
パブリティスタティック最終ロケールカナダポリックスタティック最終ロケールカナダ_frenchpublic static final final locale chinapublic static final chinesepublic static final static final static finalpublic static finalpublic static final final final fanypublic static final locale digrenpublic static static digramepublic static yatianpublic jialpublic static static static digranpublic static static static fanypublic static finalpublic static static static fan静的最終ロケールJapanesepublic Static Final Locale Koreapbublic Static Final Locale Koreanpublic Prcpublic Static fany static fany static fany rocale rocale rotic rocale static final static fany fany final locale taiwanpublic static final locale ragale _chinesepublic static final locale us usues us us us us
使用方法:次のロケールオブジェクトは「中国(本土)」に対応しています
locale locale = locale.simplified_chinese
(3)ロケールコンストラクターを介してロケールオブジェクトを作成します
ロケールには3つのコンストラクターがあります。次のように:
Locale(String Language)Locale(String Language、String Country)Locale(String Language、String Country、Stringバリアント)
使い方:
locale local = new Locale( "zh"、 "cn");
ロケールクラスは、多くの国と地域をサポートしています。次の方法を使用して、ロケールごとにサポートされているすべての領域を表示できます。
locale [] ls = locale.getavailableLocales();
入力結果は次のとおりです。
すべてのロケール:JA_JP、ES_PE、EN、JA_JP_JP、ES_PA、SR_BA、MK、ES_GT、AR_AE、NO_NO、SQ_AL、BG、AR_IQ、AR_YE、HU、PT_PT、EL_CY、AR_QA、MK_MK、DE_CH、eN_US、fi、de_Ch、 EN_MT、SL_SI、SK_SK、IT、TR_TR、ZH、TH、AR_SA、NO、EN_GB、SR_CS、LT、RO、EN_NZ、NO_NO_NY、LT_LT、ES_NI、NL、GA_IE、FR_BBE、ES_ES、AR_LB、KO、FR_CA、AR_CH、 es_us、es_mx、ar_sd、in_id、ru、lv、es_uy、lv_lv、iw、pt_br、ar_sy、hr、hr、hr、et、es_do、fr_ch、hi_in、es_ve、ar_bh、en_ph、ar_tn、fi、de_at ES_CO、ES_CR、ES_CL、AR_EG、EN_ZA、TH_TH、EL_GR、IT_IT、CA、HU_HU、FR、EN_IE、UK_UA、PL_PL、FR_LU、NL_BE、EN_IN、CA_ES、AR_MA、ES_BO、EN_AU、SR、ZH_SG、PT、UK、UK、UK、UK、UK、UK、UK、UK、UK、UK、UK、UK、UK、US AR_DZ、VI_VN、SR_ME、SQ、AR_LY、AR、ZH_CN、BE_BY、ZH_HK、JA、IW_IL、BG_BG、IN、MT_MT、ES_PY、SL、SL、SL、SL、CS_CZ、IT_CH、RO_RO、ES_PR、ES_CA、de_de、ga、de_de、de_de、de_de、de_de、 MS_MY、HR_HR、EN_SG、DA、MT、PL、AR_OM、TR、TH_TH_TH、EL、MS、SV_SE、DA_DK、ES_HN
それらの2つを選択して、それらを使用してロケールオブジェクトを作成する方法を説明します。
たとえば、最初の出力は「JA_JP」です。
その中で、JAは日本語を指す「言語」を表しています。 「JP」は日本を指す国を表しています。
「言語は日本語であり、国は日本のロケールオブジェクト」を次の方法で作成できます。
locale locale = new Locale( "JA"、 "JP");
たとえば、3番目の出力は「EN」です。
その中で、ENは「言語」を表しています。これはここで英語を指します。
次の方法で「言語が英語であるロケールオブジェクト」を作成できます。
locale locale = new Locale( "en");
ロケール関数リスト
// locale constructor locale(string language)locale(string language、string country)locale(string language、string country、stringバリアント)
Object clone()booleanは(オブジェクトオブジェクト)static locale [] getavailablelocales()string getcountry()static locale getDefault()String getDisPlayCountry(Locale Locale)Final String getDisPlayCountry()最終文字列getDisplayCountry()最終文字列getDisplayliangage()String getDispliongage() getDisplayName(locale locale)final String getDisPlayName()final String getDisPlayVariant()String getDisPlayVariant(Locale Locale)String getiso3Country()String getiso3language()static String [] getisocountries()static string [] getIsolanguages()String getlangig()String()String()String()String()String()String()String()String()String hashcode()同期静的void setDefault(locale locale)final String toString()
2。ロケールの例
以下は、日付のロケールを使用して実証する例です。
参照コードは次のとおりです(localetest.java):
Import java.util.locale; Import java.util.date; import java.util.calendar; Import java.text.simpledateformat; Import java.text.dateformat;/***ロケールテストプログラム*/パブリッククラスlocaletest {public void main(] {/args){// 2 Differy exiffed( //すべてのロケールを表示しますtestalllocales(); } / *** 2異なるロケール作成方法* / private static void testdiffdatelocales(){//日付は2013-09-19 14:22:30日付=新しい日付(113、8、19、14、22、30); // locale locale localecn = locale.simplified_chineseを作成します。 // locale localeus = new Locale( "en"、 "us"); //「簡略化された中国語」文字列cn = dateformat.getDateInstance(dateFormat.Medium、localecn).Format(date)に対応する日付文字列を取得します。 //「English/Us」文字列us = dateFormat.getDateInstance(dateFormat.Medium、localeus).Format(date)に対応する日付文字列を取得します。 System.out.printf( "cn =%s/nus =%s/n"、cn、us); } / ** *すべてのロケールを表示 * / private static void testalllocales(){locale [] ls = locale.getavailablelocales(); System.out.print( "すべてのロケール:"); for(locale locale:ls){system.out.printf(locale+"、"); } system.out.println(); }}3. ResourceBundleを使用して、国際的なリソースファイルを読み取ります
ResourceBundleリソースパッケージには、特定のロケールのオブジェクトが含まれています。それを使用して、ロケールリソースを読み込みます。
1.さまざまな言語に簡単にローカライズまたは翻訳します
2。複数のロケール環境を一度に処理します
3.将来的には簡単に変更し、より多くのロケール環境を1回サポートできます。
プログラムがロケール固有のオブジェクトを必要とする場合、getBundle()メソッドを使用してResourceBundleクラスをロードします
ResourceBundle rb = resourcebundle.getBundle( "Res.MessageBundle"、currentLocale);
その中で、Res.MessageBundleは、SRCの下にRESフォルダーを作成したことを表しており、RESフォルダーの下にMessageBundle.Properteisという名前のリソースファイルがあります。ここで複数の国際的なリソースファイルを作成することを許可します。
messagebundle_zh_cn.properties; messagebundle_en_us.properteis;
その中でも、MessageBundleは、ResourceBundleを構築するときに使用する文字列です。この名前は合法であり、特定の制約は必要ありません。次の名前はルールに従う必要があります。
resourcename_language_country.properteis;
次に、rb.getString(key)を使用します。リソースファイルのキーに対応する値を取得します。
Struts1.xを使用して、国際的な自動スイッチングを実現します
Strutsソースコードをチェックすることにより、この.setlocale(request、locale)を介して、セッションにロケール情報が保存されていることがわかります。
したがって、国際化を達成するには、ページのハイパーリンクをクリックしてアクションに合格するときに、セッションのロケール値を変更する必要があります。行動:
//クライアント文字列= request.getParameter( "mylanguage")によって送信された言語リクエスト情報を受け入れる; //言語領域情報Locale currentLocale = nullを定義します。 //異なるリクエストに従って異なるロケール情報を作成するif( "zh" .equals(言語)){currentLocale = new Locale( "zh"、 "cn"); } else if( "en" .equals(language)){currentLocale = new Locale( "en"、 "us"); } // ... //セッションの情報を変更this.setlocale(request、currentlocale); //もちろん、ページにリソースファイル情報を表示する場合、次の方法を使用します。