1. การตั้งชื่อไฟล์ทรัพยากร
รูปแบบการตั้งชื่อของไฟล์ทรัพยากรระหว่างประเทศมีดังนี้:
basename_language_country.properties basename_language.properties basename.properties
ที่ Basename เป็นชื่อพื้นฐานของไฟล์ทรัพยากรภาษาและประเทศจะต้องเป็นภาษาและประเทศที่ได้รับการสนับสนุนโดย Java รหัสภาษาและประเทศที่ได้รับการสนับสนุน Java มีดังนี้:
locale [] locales = locale.getavailablelocales (); สำหรับ (locale locale: locales) {system.out.println ("ประเทศ:" + locale.getCountry () + ", ภาษา:" + locale.getLanguage ()); -2. การกำหนดค่าและการได้มาของไฟล์ทรัพยากร
สร้างไฟล์ทรัพยากรใหม่ ในสภาพแวดล้อมของจีนค่ามูลค่าในไฟล์ทรัพยากรจะต้องได้รับการแปลง ASCII คุณสามารถป้อน Native2ASCII หลังจากทำงาน นอกจากนี้บทความนี้ใช้ปลั๊กอินไฟล์แอตทริบิวต์ Eclipse ดังนั้นจึงแสดงเป็นภาษาจีนโดยตรง ไฟล์คุณสมบัติได้รับการกำหนดค่าดังนี้:
info_en_us.properties
ชื่อผู้ใช้ = zhangsaninfo_zh_cn.propertiesusername = zhangsaninfo_zh.propertiesusername = li si รหัสผ่าน = lisiinfo.propertiesusername = wangwu password = wangwuemail = กล่องจดหมาย
นอกจากนี้หากคุณต้องการอ่านค่าในไฟล์คุณสมบัติคุณต้องกำหนดค่าค่าคงที่ในไฟล์ struts-config.xml
<!-ใช้ชื่อไฟล์ทรัพยากรโดยที่ค่าค่าแสดงถึงชื่อ basename ของไฟล์ทรัพยากร-> <constant name = "struts.custom.i18n.resources" value = "info"
วิธีรับไฟล์ทรัพยากรบนหน้าคือการใช้แท็ก struts <s: text/> ดังที่แสดงด้านล่าง:
<!-ไฟล์ทรัพยากรได้รับค่าคีย์-> <s: ชื่อข้อความ = "ชื่อผู้ใช้"/> <s: ชื่อข้อความ = "รหัสผ่าน"/> <s: ชื่อข้อความ = "อีเมล"/>>>
นอกจากนี้หากคุณได้รับค่าคีย์ในแบบฟอร์มวิธีการดังนี้:
<!- ที่ค่าคีย์คือค่าคีย์ในไฟล์ทรัพยากรและฟังก์ชั่นคือการเพิ่มชื่อฉลากลงในกล่องอินพุตซึ่งเหมือนกับค่าแอตทริบิวต์ของฉลาก อย่างไรก็ตามในค่าคงที่ไม่สามารถรับค่าคีย์ได้จากไฟล์แอตทริบิวต์ -> <s: textfield name = "login.username" key = "username"> </s: textfield>
นอกจากนี้โปรดทราบว่าเมื่อใช้ค่าคงที่ <constant name = "struts.ui.theme" ค่า = "ง่าย"/> ถูกใช้ค่าคีย์ใน <s: textfield/> ไม่สามารถรับค่าที่สอดคล้องกันจากไฟล์แอตทริบิวต์
หน้าสุดท้ายแสดงผลลัพธ์ดังนี้:
จากไฟล์การกำหนดค่าข้างต้นเราสามารถเห็นแหล่งที่มาของค่าของค่าทั้งสามนี้ จากนี้เราจะเห็นว่าลำดับการค้นหาของไฟล์ทรัพยากรมีดังนี้:
ก่อนอื่นให้ค้นหาค่าคีย์ที่เกี่ยวข้องจาก basename_language_country.properties ถ้าไม่ลองมองหาค่าคีย์ที่เกี่ยวข้องใน basename_language.properties ถ้าไม่ลองมองหาค่าคีย์ที่เกี่ยวข้องใน basename.properties ถ้าไม่มองหาค่าคีย์ที่เกี่ยวข้อง ถ้าไม่มันจะแสดงเป็นชื่อ
3. การใช้ตัวยึดตำแหน่งในไฟล์แอตทริบิวต์
เนื้อหาการกำหนดค่าของไฟล์คุณสมบัติมีดังนี้:
ชื่อผู้ใช้ = Zhang San, {0}, {1}
ใช้แท็ก <s: พารามิเตอร์> ค่า </s: param> เพื่อส่งผ่านพารามิเตอร์ใน JSP
<s: ชื่อข้อความ = "ชื่อผู้ใช้"> <s: param> hello </s: param> <s: param> ยินดีต้อนรับ! </s: param> </s: text>
4. ไฟล์ทรัพยากรแอปพลิเคชันกำลังดำเนินการ
ในการใช้ไฟล์ทรัพยากรในการดำเนินการคุณต้องสืบทอดคลาส ActionsUpport คลาส ActionSupport ใช้อินเทอร์เฟซทั้งสอง: TextProvider และ LocalEprovider TextProvider มีวิธีการรับวิธีไฟล์ทรัพยากร getText () ในขณะที่อินเตอร์เฟส localeProvider มีวิธี getLocale () เพียงวิธีเดียวเท่านั้นที่จะได้รับสถานที่
แก้ไขไฟล์การกำหนดค่า info_zh_cn.properties:
username = Zhang San, {0}, {1} userNameError = ชื่อผู้ใช้ไม่สามารถว่างเปล่า! กรุณายืนยัน!ในการดำเนินการวิธีการรับไฟล์คุณสมบัติมีดังนี้:
this.getText ("UserNameError");ใช้ตัวยึดตำแหน่งในการดำเนินการรหัสมีดังนี้:
this.getText ("ชื่อผู้ใช้", สตริงใหม่ [] {"สวัสดี", "ยินดีต้อนรับ"});5. ไฟล์ทรัพยากรทั่วทั้งแพ็คเกจ
การดำเนินการภายใต้แพ็คเกจนี้และแพ็คเกจย่อยสามารถเข้าถึงไฟล์ทรัพยากรได้ ตำแหน่งอยู่ภายใต้แพ็คเกจที่แน่นอนและรูปแบบการตั้งชื่อคือ: package_language_country.properties ที่แพ็คเกจเป็นรูปแบบคงที่ ไฟล์กำหนดค่า package_zh_cn.properties มีดังนี้:
ชื่อผู้ใช้ = ชื่อผู้ใช้ภายใต้ขอบเขตแพ็คเกจ
ในการดำเนินการด้านล่างแพ็คเกจคุณสามารถใช้ getText ("ชื่อผู้ใช้") เพื่อรับ
6. ไฟล์ทรัพยากรในขอบเขตของการดำเนินการ
คุณสามารถระบุไฟล์คุณสมบัติสำหรับการดำเนินการแยกต่างหากและวางไว้ในไดเรกทอรีในระดับเดียวกับการกระทำ รูปแบบชื่อคือ
ActionName_language_country.properties
-
กำหนดค่าไฟล์คุณสมบัติของขอบเขตการดำเนินการ:
ชื่อผู้ใช้ = ชื่อผู้ใช้ภายในช่วงของการกระทำ
วิธีการ getText ("ชื่อผู้ใช้") ยังใช้ในการดำเนินการเพื่อรับค่า
7. ลำดับการโหลดไฟล์ทรัพยากร
สำหรับการใช้ค่า getText (คีย์) สำหรับการดำเนินการเมื่อมีทั้งไฟล์คุณสมบัติภายในขอบเขตการกระทำไฟล์คุณสมบัติภายในขอบเขตแพ็คเกจและไฟล์คุณสมบัติส่วนกลางลำดับการโหลดมีดังนี้:
ก่อนอื่นไม่ว่าจะมีค่าคีย์อยู่ในไฟล์แอตทริบิวต์ในการดำเนินการที่ระบุหรือไม่ หากมีอยู่จะมีค่า หากไม่มีอยู่ให้ดูว่าไฟล์แอตทริบิวต์ช่วงแพ็คเกจที่มีค่าคีย์ที่ระบุมีอยู่ในแพ็คเกจระดับบนของการกระทำปัจจุบันหรือไม่ หากไม่มีอยู่ให้ค้นหาต่อในแพ็คเกจระดับก่อนหน้า หากไม่พบพบให้ดูว่าค่าคีย์ที่ระบุนั้นมีอยู่ในไฟล์แอตทริบิวต์ทั่วโลกหรือไม่ หากค่าคีย์ที่ระบุมีอยู่ค่าที่สอดคล้องกับค่าคีย์จะถูกนำออก หากไม่มีอยู่ค่าเริ่มต้นคือค่าคีย์
นอกจากนี้เมื่อมีไฟล์ทรัพยากรหลายไฟล์ในไฟล์แอตทริบิวต์ทั่วโลกคุณต้องค้นหาตามลำดับของ basename_language_country, basename_language และ basename
8. รับไฟล์ทรัพยากรบนหน้า
(1) ใช้ <s: i18n/> เพื่อเข้าถึงไฟล์ทรัพยากร
รหัสมีดังนี้:
<!-ใช้แท็ก i18n เพื่อรับไฟล์แอตทริบิวต์-> <!-รับไฟล์ทรัพยากรในขอบเขตแพ็คเกจ-> <s: i18n name = "com/struts/package"> <s: ชื่อข้อความ = "ชื่อผู้ใช้"> </s: text> </s: i18n> <! <s: ชื่อข้อความ = "ชื่อผู้ใช้"> </s: text> </s: i18n>
(2) การใช้ <fmt/>
JSTL รวมถึงแท็กการจัดรูปแบบสากลและการจัดรูปแบบ การใช้แท็กสากลทำให้หน้า JSP สามารถแสดงออกหน้าเอาต์พุตในภาษาต่าง ๆ ตามพื้นที่ที่ผู้เข้าชมตั้งอยู่ ที่นี่คุณต้องใช้ Maven เพื่อเพิ่มแพ็คเกจขวดที่พึ่งพา ไฟล์กำหนดค่ามีดังนี้:
<!-แนะนำไลบรารีแท็ก JSTL-> <pendency> <roupId> JSTL </groupId> <ArtIfactId> JSTL </ArtIfactId>
ใช้แท็ก FMT ในหน้า JSP และรหัสแอปพลิเคชันมีดังนี้:
<!-การใช้ JSTL TAG FMT-> <!-การตั้งค่าสถานที่จะเขียนทับข้อร้องเรียนที่ส่งผ่านโดยไคลเอนต์-> <fmt: setLocale value = "ZH_CN" ขอบเขต = "คำขอ"/> <!-โหลดชุดทรัพยากรและบันทึกไว้ในตัวแปร EL Basename เป็นชื่อพื้นฐาน ถ้าอยู่ในขอบเขตแพ็คเกจมันคือ com.struts.package และภายใต้ขอบเขตการกระทำมันคือ com.struts.service.loginservice-> <fmt: setBundle basename = "info" spope = "คำขอ" var = "basename"/> <fmt: param value = "hello"/> <fmt: param value = "welcome"/> </fmt: ข้อความ> <br/> <!-fmt: ชุดชุดข้อมูลชุดทรัพยากรที่สามารถเข้าถึงได้ในแท็กตัวเท่านั้น-> <! </fmt: bundle> <!-ไฟล์ทรัพยากรในขอบเขตการกระทำ-> <fmt: bundle basename = "com.struts.service.loginservice"> <fmt: message key = "ชื่อผู้ใช้"/> </fmt: bundle>