1. Pendahuluan Lokal
Lokal berarti wilayah. Setiap objek lokal mewakili wilayah geografis, politik dan budaya tertentu.
Sering digunakan ketika objek operasi yang mewakili tanggal/waktu seperti tanggal, kalender, dll.; karena metode representasi waktu berbeda di daerah yang berbeda.
Mari kita bicara tentang tiga cara umum untuk membuat objek lokal.
(1) Dapatkan lokal default
Bagaimana menggunakan:
Local locale = locale.getDefault ()
(2) Langsung gunakan objek statis lokal
Objek statis berikut disediakan di locale.java
public static final Locale CANADApublic static final Locale CANADA_FRENCHpublic static final Locale CHINApublic static final Locale CHINESEpublic static final Locale ENGLISHpublic static final Locale FRANCEpublic static final Locale FRENCHpublic static final Locale GERMANpublic static final Locale GERMANYpublic static final Locale ITALIANpublic static final final Locale ITALYpublic static final Locale JAPANpublic static final Locale JAPANESEpublic static final Locale KOREApublic static final Locale KOREANpublic static final Locale PRCpublic static final Locale ROOTpublic static final Locale SIMPLIFIED_CHINESEpublic static final Locale TAIWANpublic static final Locale TRADITIONAL_CHINESEpublic static final Locale UKpublic static final Locale US
Cara menggunakan: Objek lokal berikut sesuai dengan "Cina (daratan)"
Lokal lokal = locale.simplified_chinese
(3) Buat objek lokal melalui konstruktor lokal
Ada 3 konstruktor di lokasi. sebagai berikut:
LOCALLE (STRING BAHASA) LOCAL (Bahasa String, Negara String) Lokal (Bahasa String, Negara String, Varian String)
Bagaimana menggunakan:
Lokal lokal = lokal baru ("zh", "cn");Kelas lokal mendukung banyak negara dan wilayah. Kami dapat melihat semua area yang didukung oleh lokal melalui metode berikut:
Locale [] ls = locale.getavailableLocales (); for (locale locale: ls) {system.out.println ("locale:"+locale);} Hasil input adalah sebagai berikut:
Semua lokal: 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, sv, sv, sv, sv, sv, sv, sv, sv, sv, sv, sv, mk_mk, mk_mk, mk_mk, mk_mk, mk_mk, mk_mk, mk_mk, mk_mk, mk_mk, mk_mk, mk, sv, 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_BE, es_ES, ar_LB, ko, fr_CA, et_EE, ar_KW, sr_RS, es_US, es_MX, ar_SD, in_ID, ru, lv, es_UY, lv_LV, iw, pt_BR, ar_SY, hr, et, es_DO, fr_CH, hi_IN, es_VE, ar_BH, en_PH, ar_TN, fi, de_AT, es, nl_NL, es_EC, zh_TW, ar_JO, be, is_IS, 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, es_SV, ru_RU, ko_KR, vi, 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, fr_fr, cs_cz, it_ch, ro_ro, es_pr, en_ca, de_cz, it_ch, ro_ro, es_pr, en_ca, cs_cz, it_ch, ro_ro, es_pr, en_ca, de_cz, it_ch, ro_ro, es_pr, en_ca, de_cz ms_my, hr_hr, en_sg, da, mt, pl, ar_om, tr, th_th_th, el, ms, sv_se, da_dk, es_hn
Pilih dua dari mereka untuk menggambarkan cara menggunakannya untuk membuat objek lokal:
Misalnya, output pertama adalah "JA_JP".
Di antara mereka, JA mewakili "bahasa", yang mengacu pada bahasa Jepang; "JP" mewakili negara, yang mengacu pada Jepang.
Kita dapat menciptakan "bahasa adalah bahasa Jepang dan negara adalah objek lokal Jepang" melalui metode berikut.
Lokal lokal = lokal baru ("ja", "jp"); Misalnya, output ketiga adalah "en".
Di antara mereka, en mewakili "bahasa", yang mengacu pada bahasa Inggris di sini.
Kita dapat membuat "objek lokal yang bahasanya bahasa Inggrisnya" melalui metode berikut.
Lokal lokal = lokal baru ("en"); Daftar Fungsi Lokal
// Locale Constructor Locale (String Language) Locale (String Language, String Country) Locale (Bahasa String, Negara String, Varian String)
Object clone()boolean equals(Object object)static Locale[] getAvailableLocales()String getCountry()static Locale getDefault()String getDisplayCountry(Locale locale)final String getDisplayCountry()final String getDisplayCountry()final String getDisplayLanguage()String getDisplayLanguage(Locale locale)String getDisplayName(Locale locale)final String getDisplayName()final String getDisplayVariant()String getDisplayVariant(Locale locale)String getISO3Country()String getISO3Language()static String[] getISOCountries()static String[] getISOLanguages()String getLanguage()String getVariant()synchronized int hashCode()synchronized static void SetDefault (Lokal Locale) String akhir ToString ()
2. Contoh Lokal
Berikut ini adalah contoh untuk menunjukkan penggunaan lokal pada tanggal.
Kode referensi adalah sebagai berikut (localetest.java):
import java.util.Locale;import java.util.Date;import java.util.Calendar;import java.text.SimpleDateFormat;import java.text.DateFormat;/** * Locale test program*/public class LocaleTest { public static void main(String[] args) { // 2 different locale creation methods testDiffDateLocales(); // tunjukkan semua lokal testAlllocales (); } / *** 2 Metode Pembuatan Lokal yang Berbeda* / Private Static Void TestDiffDatelocales () {// Tanggal adalah 2013-09-19 14:22:30 Tanggal Tanggal = Tanggal Baru (113, 8, 19, 14, 22, 30); // Buat lokal lokal localecn = locale.simplified_chinese; // Buat locale localeus = new locale ("en", "us"); // Dapatkan string tanggal yang sesuai dengan string "Cina disederhanakan" cn = dateFormat.getDateInstance (dateFormat.medium, localecn) .Format (tanggal); // Dapatkan string tanggal yang sesuai dengan String "English/US" US = DateFormat.GetDateInstance (DateFormat.Medium, Localeus) .Format (Tanggal); System.out.printf ("cn =%s/nus =%s/n", cn, us); } / ** * Tunjukkan semua lokal * / private static void testAllLocales () {locale [] ls = locale.getAvailableLocales (); System.out.print ("Semua lokal:"); for (locale locale: ls) {system.out.printf (lokal+","); } System.out.println (); }}3. Gunakan ResourceBundle untuk membaca file sumber daya internasional
Paket sumber daya ResourceBundle berisi objek untuk lokal tertentu. Gunakan untuk memuat dan membaca sumber daya lokal.
1. Mudah melokalisasi atau menerjemahkan ke dalam bahasa yang berbeda
2. Tangani beberapa lingkungan lokal sekaligus
3. Anda dapat dengan mudah memodifikasinya di masa mendatang dan mendukung lebih banyak lingkungan lokal sekali.
Saat program membutuhkan objek spesifik lokal, ia menggunakan metode getBundle () untuk memuat kelas ResourceBundle
ResourceBundle RB = ResourceBundle.GetBundle ("Res.MessageBundle", CurrentLocale);Di antara mereka, res.messageBundle menyatakan bahwa kami telah membuat folder res di bawah SRC, dan ada file sumber daya bernama MessageBundle.properteis di bawah folder res. Kami mengizinkan beberapa file sumber daya internasional dibuat di sini:
MessageBundle_zh_cn.properties; MessageBundle_en_us.properteis;
Di antara mereka, MessageBundle adalah string yang akan digunakan saat membangun sumber daya. Nama ini legal dan tidak memerlukan kendala spesifik. Nama -nama berikut harus mengikuti aturan.
resourcename_language_country.properteis;
Kemudian kami menggunakan rb.getString (key); Untuk mendapatkan nilai yang sesuai dengan kunci dalam file sumber daya.
Gunakan Struts1.x untuk mencapai switching otomatis internasional
Dengan memeriksa kode sumber Struts, Anda dapat menemukan bahwa informasi lokal disimpan dalam sesi, melalui this.setLocale (permintaan, lokal);
Oleh karena itu, untuk mencapai internasionalisasi, Anda perlu mengubah nilai lokal di sesi saat Anda mengklik hyperlink pada halaman dan lulus tindakan. Beraksi:
// Terima informasi permintaan bahasa yang dikirim oleh bahasa string klien = request.getParameter ("MyLanguage"); // Tentukan informasi wilayah bahasa lokal CurrentLocale = null; // Buat informasi lokal yang berbeda sesuai dengan permintaan yang berbeda jika ("zh" .Equals (bahasa)) {currentLocale = lokal baru ("zh", "cn"); } lain jika ("en" .Equals (bahasa)) {currentLocale = new locale ("en", "us"); } // ... // Ubah informasi di sesi this.setLocale (permintaan, currentLocale); // Tentu saja, saat menampilkan informasi file sumber daya di halaman, gunakan metode berikut: // <bean: pesan kunci = "key" />