React Native เปิดตัว react-native-i18n-kit ไลบรารี i18n ใหม่
นักพัฒนาสร้าง react-native-i18n-kit ไลบรารีแปลภาษาแบบ native ไม่มี dependency รองรับ React Native New Architecture และจัดการพหูพจน์ซับซ้อน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- พัฒนาด้วย Kotlin, Swift และ TypeScript รองรับ New Architecture เต็มตัว
- ไม่มีการใช้ dependency ภายนอก ช่วยให้ระบบเบาและเสถียร
- รองรับกฎพหูพจน์ซับซ้อนด้วย Intl.PluralRules ใน Hermes
- มีระบบจัดการข้อผิดพลาดและหน่วยความจำที่ปลอดภัย
การแปลภาษา (Localization) มักเป็นฟีเจอร์ที่นักพัฒนาซอฟต์แวร์จำเป็นต้องใส่ใจในทุกแอปพลิเคชัน แต่เมื่อมีการอัปเกรด React Native, การเปิดใช้งาน New Architecture, ข้อกำหนดเรื่องขนาดหน้า 16 KB ของ Google Play, ปัญหาภาษากลุ่ม RTL อย่างภาษาอาหรับแสดงผลผิดพลาด หรือค่าภาษาที่ตั้งไว้หายไปหลังรีสตาร์ทแอป ล้วนเป็นอุปสรรคที่พบได้บ่อย
จากปัญหาเหล่านี้ นักพัฒนาอย่าง Rushikesh Pandit จึงได้สร้าง react-native-i18n-kit ขึ้นมา ซึ่งเป็นชุดเครื่องมือแปลภาษาแบบ native ทั้งหมด ไม่มี dependency ภายนอก เขียนด้วยภาษา Kotlin สำหรับฝั่ง Android, Swift สำหรับฝั่ง iOS และ TypeScript แบบ strict สำหรับโค้ดส่วนกลาง โดยสามารถติดตั้งใช้งานได้ผ่านคำสั่ง npm install react-native-i18n-kit
เป้าหมายในการพัฒนาไลบรารีตัวนี้มีความชัดเจน ได้แก่ การเป็น native ในส่วนที่จำเป็น, ปราศจาก dependency จากบุคคลที่สาม, ออกแบบมาเพื่อ New Architecture เป็นอันดับแรก และมาพร้อมกับ hooks API ขนาดเล็กที่ใช้งานง่ายและผิดพลาดได้ยาก

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ความท้าทายสำคัญในการแปลภาษาคือเรื่องกฎพหูพจน์ เช่น ภาษาอังกฤษมีรูปแบบพหูพจน์ 2 แบบ ขณะที่ภาษาอาหรับมีถึง 6 แบบ และภาษาฝรั่งเศสกับฮินดีถือว่าเลข 0 เป็นเอกพจน์ การเขียนโค้ดตรวจสอบแบบธรรมดามักทำให้เกิดข้อผิดพลาด ไลบรารีนี้จึงเลือกใช้ Intl.PluralRules ที่ทำงานร่วมกับ Hermes engine เพื่อเลือกกลุ่มคำใน CLDR (Common Locale Data Repository) ให้ตรงกับภาษาที่ใช้งานอยู่จริง
นอกจากนี้ ตัวจัดการโลแคนลี (Locale Matcher) ของไลบรารีถูกออกแบบมาให้รองรับรูปแบบที่หลากหลาย เช่น zh-Hans-CN, FR-ca, pt_BR และรหัสภาษาเก่าบน Android อย่าง iw โดยระบบจะทำการตรวจสอบไล่ระดับตั้งแต่แท็กภาษาเต็มรูปแบบ ไปจนถึงสคริปต์ ภูมิภาค และภาษาเดี่ยว พร้อมรองรับการค้นหาภูมิภาคสำรองในตัว
การพัฒนาไลบรารี i18n ที่ออกแบบเฉพาะสำหรับ New Architecture ของ React Native ถือเป็นก้าวสำคัญ เพราะสถาปัตยกรรมใหม่นี้เน้นการสื่อสารแบบ Synchronous ระหว่าง JavaScript และ Native ผ่าน JSI การสร้างโมดูลแบบ Native-first จึงช่วยลด Overhead และเพิ่มประสิทธิภาพการทำงานได้ดีกว่าการพึ่งพาไลบรารี JavaScript แบบเดิมที่ต้องแปลงข้อมูลข้ามสะพาน (Bridge) แบบเก่า
ในด้านการจัดการข้อผิดพลาด ข้อมูลที่ไม่ถูกต้อง เช่น ค่า NaN, Infinity หรือรหัสสกุลเงินที่ไม่ถูกต้อง จะถูกส่งกลับเป็น I18nKitError ที่มีรหัสสถานะชัดเจน เช่น INVALID_LOCALE หรือ INVALID_ARGUMENT แทนที่จะแสดงคำว่า NaN บนหน้าจอผู้ใช้ และหากหาคีย์การแปลไม่พบ ระบบจะแสดงคีย์นั้นกลับมาพร้อมคำเตือนในโหมดนักพัฒนาแทนการทำให้แอปพลิเคชันล่ม
สำหรับนักพัฒนาที่สนใจทดลองใช้งาน ตัวโครงการยังมีตัวอย่างแอปพลิเคชันที่รองรับภาษาอังกฤษ ฝรั่งเศส อาหรับ (RTL) และฮินดี มาพร้อมโค้ดตัวอย่างสำหรับการทดสอบด้วย Jest และรองรับข้อกำหนดทางเทคนิคขั้นต่ำ ได้แก่ React Native 0.85 (New Architecture), Android API 29 ขึ้นไป, iOS 15.1 ขึ้นไป และ TypeScript 5 ขึ้นไป
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น