Java Internalization - คลาส ResourceBundle
คลาส ResourceBundle ใช้ในการจัดเก็บข้อความและอ็อบเจ็กต์ที่มีความอ่อนไหวด้านโลแคล โดยทั่วไปเราใช้ไฟล์คุณสมบัติเพื่อจัดเก็บข้อความเฉพาะโลแคลจากนั้นแสดงโดยใช้อ็อบเจ็กต์ ResourceBundle ต่อไปนี้เป็นขั้นตอนในการใช้ไฟล์คุณสมบัติเฉพาะโลแคลในแอ็พพลิเคชันที่ใช้ java
ขั้นตอนที่ 1: สร้างไฟล์คุณสมบัติ
สมมติว่าเราต้องการไฟล์คุณสมบัติสำหรับโลแคลภาษาอังกฤษ จากนั้นสร้างชื่อไฟล์คุณสมบัติ XXX_en_US.properties โดยที่ XXX เป็นชื่อของไฟล์และ en_US แทนโลแคลสำหรับภาษาอังกฤษ (US)
Messages_en_US.properties
message=Welcome to TutorialsPoint.COM!
ตอนนี้มาสร้างไฟล์คุณสมบัติสำหรับภาษาฝรั่งเศส จากนั้นสร้างชื่อไฟล์คุณสมบัติ XXX_fr_FR.properties โดยที่ XXX เป็นชื่อของไฟล์และ fr_FR แทนโลแคลสำหรับ French (ฝรั่งเศส)
Messages_fr_FR.properties
message=Bienvenue sur TutorialsPoint.COM!
ที่นี่คุณสามารถทราบได้ว่าคีย์นั้นเหมือนกัน แต่ค่าเป็นโลแคลเฉพาะในทั้งไฟล์คุณสมบัติ
ขั้นตอนที่ 2: สร้างวัตถุ ResourceBundle
สร้างอ็อบเจ็กต์ ResourceBundle ด้วยชื่อไฟล์คุณสมบัติและโลแคลโดยใช้ไวยากรณ์ต่อไปนี้
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
ขั้นตอนที่ 3: รับค่าจากวัตถุ ResourceBundle
รับค่าจากวัตถุ ResourceBundle โดยการส่งผ่านคีย์
String value = bundle.getString("message");
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้อ็อบเจ็กต์ ResourceBundle เพื่อแสดงค่าเฉพาะโลแคลจากไฟล์คุณสมบัติ
IOTester.java
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NTester {
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));
bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);
System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
}
}
เอาต์พุต
มันจะพิมพ์ผลลัพธ์ต่อไปนี้
Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!
หมายเหตุสำหรับหลักการตั้งชื่อ
ต่อไปนี้เป็นหลักการตั้งชื่อสำหรับไฟล์คุณสมบัติ
สำหรับไฟล์คุณสมบัติที่แมปกับโลแคลเริ่มต้นไม่จำเป็นต้องมีคำนำหน้า message_en_US.properties เทียบเท่ากับ message.properties
สำหรับไฟล์คุณสมบัติที่แมปกับโลแคลสามารถแนบคำนำหน้าได้สองวิธี message_fr.properties เทียบเท่ากับ message_fr_FR.properties