การปรับปรุง Internationalization ใน Java 9 รวมถึงการ เปิดใช้งาน CLDR Locale Data โดยค่าเริ่มต้น
มีแหล่งข้อมูล locale 4 แหล่ง ระบุด้วย keyword ด้านล่าง:
- CLDR: ข้อมูล locale จาก Unicode Common Locale Data Repository (CLDR) project
- HOST: การปรับแต่งของผู้ใช้งานปัจจุบันจากการตั้งค่า OS รองรับ format เช่น date, time, number, currency ขึ้นกับ OS
- SPI: Locale-sensitive services ที่ implemented ใน SPI providers ที่ติดตั้ง
- COMPAT (JRE): ข้อมูล locale ที่เข้ากันได้กับรุ่นก่อน Java 9 JRE ยังใช้เป็นค่าได้แต่ deprecated และจะลบในอนาคต
ใน Java 8 และก่อนหน้า JRE เป็น default locale data Java 9 ตั้ง CLDR เป็น priority สูงสุดโดยค่าเริ่มต้น สามารถเลือกแหล่งข้อมูล locale ตามลำดับความชอบด้วย system property java.locale.providers หาก provider ไหนล้มเหลว จะประมวลผล provider ถัดไป
การตั้งค่า java.locale.providers
java.locale.providers=COMPAT,CLDR,HOST,SPI
ค่าเริ่มต้น (ไม่ตั้งค่า property)
java.locale.providers=CLDR,COMPAT,SPI
เพื่อเข้ากันได้กับ Java 8 ให้วาง COMPAT หน้า CLDR
java.locale.providers=COMPAT,CLDR
ผลกระทบ
- รูปแบบวันที่ เวลา ตัวเลข สกุลเงิน อาจเปลี่ยนไปตามข้อมูล CLDR
- บาง locale อาจมีชื่อแสดงผล ตัวคั่น หรือลำดับฟิลด์ต่างจาก JRE เดิม
- แอปที่พึ่งพารูปแบบเฉพาะของ JRE ควรตั้งค่า COMPAT ก่อน
CLDR เป็นมาตรฐานข้อมูล locale ของ Unicode Consortium ใช้กว้างขวางใน OS และไลบรารีต่างๆ ทำให้ Java สอดคล้องกับมาตรฐานสากล