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

พิมพ์