1. บทนำสถานที่
สถานที่หมายถึงภูมิภาค วัตถุสถานที่แต่ละแห่งแสดงถึงภูมิภาคทางภูมิศาสตร์การเมืองและวัฒนธรรมที่เฉพาะเจาะจง
มันมักจะใช้เมื่อวัตถุปฏิบัติการที่แสดงวันที่/เวลาเช่นวันที่ปฏิทิน ฯลฯ ; เนื่องจากวิธีการแสดงเวลาแตกต่างกันในภูมิภาคต่าง ๆ
มาพูดคุยกันสามวิธีทั่วไปในการสร้างวัตถุในสถานที่
(1) รับตำแหน่งเริ่มต้น
วิธีใช้:
locale locale = locale.getdefault ()
(2) ใช้วัตถุคงที่ของ Locale โดยตรง
วัตถุคงที่ต่อไปนี้มีให้ใน locale.java
สาธารณะคงที่สุดท้ายสถานที่ตั้ง Canadapublic คงสุดท้าย locale canada_frenchpublic คงที่ locale สุดท้าย chinapublic คงที่ locale locale chinesepublic คงสุดท้าย locale locale ingrening public locale สุดท้าย locale locale locale locale Japanpublic Static Final Locale Japanesepublic Static Final Locale Koreapublic Static Final Locale Koreanpublic Static Final Locale Prcpublic Static Locale สุดท้าย
วิธีใช้: วัตถุสถานที่ต่อไปนี้สอดคล้องกับ "จีน (แผ่นดินใหญ่)"
locale locale = locale.simplified_chinese
(3) สร้างวัตถุในสถานที่ผ่านตัวสร้างสถานที่
มี 3 ตัวสร้างในสถานที่ ดังนี้:
ตำแหน่ง (ภาษาสตริง) ตำแหน่ง (ภาษาสตริง, สตริงประเทศ) สถานที่ตั้ง (ภาษาสตริง, ประเทศสตริง, ตัวแปรสตริง)
วิธีใช้:
locale local = locale ใหม่ ("zh", "cn");ชั้นเรียนโลคัลสนับสนุนประเทศและภูมิภาคจำนวนมาก เราสามารถดูพื้นที่ทั้งหมดที่รองรับโดยสถานที่ผ่านวิธีการต่อไปนี้:
locale [] ls = locale.getavailablelocales (); สำหรับ (locale locale: ls) {system.out.println ("locale:"+locale);} ผลลัพธ์อินพุตมีดังนี้:
สถานที่ทั้งหมด: 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 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_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_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 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 ES_AR, SK, MS_MY, HR_HR, EN_SG, DA, MT, PL, AR_OM, TR, TH_TH_TH, EL, MS, SV_SE, DA_DK, ES_HN
เลือกสองของพวกเขาเพื่อแสดงวิธีใช้เพื่อสร้างวัตถุในสถานที่:
ตัวอย่างเช่นผลลัพธ์แรกคือ "JA_JP"
ในหมู่พวกเขา JA เป็นตัวแทนของ "ภาษา" ซึ่งหมายถึงภาษาญี่ปุ่น "JP" เป็นตัวแทนของประเทศซึ่งหมายถึงญี่ปุ่น
เราสามารถสร้าง "ภาษาเป็นภาษาญี่ปุ่นและประเทศเป็นวัตถุสถานที่ตั้งของญี่ปุ่น" ด้วยวิธีการต่อไปนี้
locale locale = locale ใหม่ ("Ja", "jp"); ตัวอย่างเช่นเอาต์พุตที่สามคือ "en"
ในหมู่พวกเขา en หมายถึง "ภาษา" ซึ่งหมายถึงภาษาอังกฤษที่นี่
เราสามารถสร้าง "วัตถุสถานที่ที่ภาษาเป็นภาษาอังกฤษ" ด้วยวิธีการต่อไปนี้
locale locale = locale ใหม่ ("en"); รายการฟังก์ชั่น locale
// locale constructor locale (ภาษาสตริง) locale (ภาษาสตริง, ประเทศสตริง) locale (ภาษาสตริง, ประเทศสตริง, ตัวแปรสตริง)
Object clone () บูลีนเท่ากับ (วัตถุวัตถุ) locale คงที่ [] getAvailableLocales () สตริง getCountry () locale คงที่ getDefault () สตริง getDisplayCountry (locale locale) สตริงสุดท้าย getDisplayCountry getDisplayName (locale locale) สตริงสุดท้าย getDisplayName () สตริงสุดท้าย getDisplayVariant () สตริง getDisplayVariant (locale locale) สตริง getiso3country () สตริง getiso3language HashCode () โมฆะคงที่แบบคงที่ setDefault (locale locale) สตริงสุดท้าย toString ()
2. ตัวอย่างสถานที่
ต่อไปนี้เป็นตัวอย่างที่จะแสดงให้เห็นโดยใช้สถานที่ในวันที่
รหัสอ้างอิงมีดังนี้ (localetest.java):
นำเข้า java.util.locale; นำเข้า java.util.date; นำเข้า java.util.calendar; นำเข้า java.text.simpledateFormat; นำเข้า java.text.dateFormat;/*** โปรแกรมทดสอบ locale*/localetest localetest // แสดงสถานที่ทั้งหมด testalllocales (); } / *** 2 วิธีการสร้างสถานที่ที่แตกต่างกัน* / โมฆะส่วนตัวแบบคงที่ testDiffDatelocales () {// วันที่คือ 2013-09-19 14:22:30 วันที่วันที่ = วันที่ใหม่ (113, 8, 19, 14, 22, 30); // สร้าง locale locale localecn = locale.simplified_chinese; // สร้าง locale localeus = locale ใหม่ ("en", "us"); // รับสตริงวันที่ที่สอดคล้องกับสตริง "ภาษาจีนที่ง่ายขึ้น" cn = dateformat.getDateInstance (DateFormat.medium, localecn) .Format (วันที่); // รับสตริงวันที่ที่สอดคล้องกับสตริง "English/US" us = dateFormat.getDateInstance (DateFormat.medium, localeus) .Format (วันที่); System.out.printf ("CN =%S/NUS =%S/N", CN, US); } / ** * แสดงสถานที่ทั้งหมด * / โมฆะคงที่ส่วนตัว testallLocales () {locale [] ls = locale.getavailablelocales (); System.out.print ("สถานที่ทั้งหมด:"); สำหรับ (locale locale: ls) {system.out.printf (locale+","); } system.out.println (); -3. ใช้ ResourceBundle เพื่ออ่านไฟล์ทรัพยากรระหว่างประเทศ
แพ็คเกจทรัพยากร ResourceBundle มีวัตถุสำหรับสถานที่เฉพาะ ใช้เพื่อโหลดและอ่านทรัพยากรในสถานที่
1. แปลหรือแปลเป็นภาษาต่าง ๆ ได้อย่างง่ายดาย
2. จัดการสภาพแวดล้อมในสถานที่หลายแห่งพร้อมกัน
3. คุณสามารถปรับเปลี่ยนได้อย่างง่ายดายในอนาคตและรองรับสภาพแวดล้อมในสถานที่มากขึ้นหนึ่งครั้ง
เมื่อโปรแกรมต้องการวัตถุเฉพาะตำแหน่งจะใช้เมธอด getBundle () เพื่อโหลดคลาส ResourceBundle
ResourceBundle RB = ResourceBundle.getBundle ("Res.MessageBundle", CurrentLocale);ในหมู่พวกเขา Res.MessageBundle แสดงให้เห็นว่าเราได้สร้างโฟลเดอร์ RES ภายใต้ SRC และมีไฟล์ทรัพยากรชื่อ MessageBundle.properteis ภายใต้โฟลเดอร์ Res เราอนุญาตให้สร้างไฟล์ทรัพยากรระหว่างประเทศหลายไฟล์ได้ที่นี่:
MessageBundle_zh_cn.properties; messagebundle_en_us.properteis;
ในหมู่พวกเขา MessageBundle เป็นสตริงที่จะใช้เมื่อสร้าง ResourceBundle ชื่อนี้ถูกกฎหมายและไม่ต้องการข้อ จำกัด เฉพาะ ชื่อต่อไปนี้จะต้องปฏิบัติตามกฎ
Resourcename_language_country.properteis;
จากนั้นเราใช้ rb.getString (คีย์); เพื่อให้ได้ค่าที่สอดคล้องกับคีย์ในไฟล์ทรัพยากร
ใช้ struts1.x เพื่อให้ได้การสลับอัตโนมัติระหว่างประเทศ
โดยการตรวจสอบซอร์สโค้ด struts คุณจะพบว่าข้อมูลในสถานที่ถูกเก็บไว้ในเซสชันผ่าน this.setLocale (คำขอสถานที่);
ดังนั้นเพื่อให้บรรลุความเป็นสากลคุณต้องเปลี่ยนค่าสถานที่ในเซสชันเมื่อคุณคลิกไฮเปอร์ลิงก์บนหน้าและผ่านการกระทำ ในการดำเนินการ:
// ยอมรับข้อมูลคำขอภาษาที่ส่งโดย String Language = request.getParameter ("MyLanguage"); // กำหนดข้อมูลภูมิภาคภาษา locale currentlocale = null; // สร้างข้อมูลสถานที่ที่แตกต่างกันตามคำขอที่แตกต่างกันถ้า ("zh" .equals (ภาษา)) {currentLocale = locale ใหม่ ("zh", "cn"); } อื่นถ้า ("en" .equals (ภาษา)) {currentLocale = locale ใหม่ ("en", "us"); } // ... // เปลี่ยนข้อมูลในเซสชัน this.setLocale (คำขอ, currentlocale); // แน่นอนเมื่อแสดงข้อมูลไฟล์ทรัพยากรบนหน้าเว็บให้ใช้วิธีการต่อไปนี้: // <ถั่ว: คีย์ข้อความ =” คีย์” />