17 คะแนน โดย xguru 2024-05-03 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • การโลคัลไลเซชันแบบอสมมาตร: ใช้เพศ/ตัวพิมพ์เล็กพิมพ์ใหญ่เฉพาะเมื่อจำเป็น เพื่อมุ่งสู่การแปลที่เป็นธรรมชาติ ความสามารถในการแสดงออกไม่ถูกจำกัดด้วยไวยากรณ์ของภาษาต้นฉบับ
  • การปรับปรุงแบบค่อยเป็นค่อยไป: การแปลแต่ละรายการถูกจัดการอย่างอิสระ จึงไม่ส่งผลต่อโลแคลอื่น สามารถปรับปรุงคำแปลซ้ำ ๆ ได้โดยไม่กระทบต่อภาษาอื่น
  • ฟีเจอร์ที่หลากหลาย: การจัดรูปแบบวันที่ เวลา และตัวเลข หมวดหมู่พหูพจน์ การรองรับข้อความสองทิศทาง การจัดรูปแบบโดยผู้ใช้ ไวยากรณ์ที่อ่านง่าย การแปลและแปลซ้ำขณะรันไทม์ และการจัดการข้อผิดพลาดที่แข็งแกร่ง
  • โอเพนซอร์สภายใต้สัญญาอนุญาต Apache โดยมีเซิร์ฟเวอร์อิมพลีเมนเทชันสำหรับ JS, Python, Rust และมี React binding ให้ด้วย

เหตุผลที่สร้าง Fluent

  • การโลคัลไลเซชันซอฟต์แวร์ถูกครอบงำมายาวนานด้วยกระบวนทัศน์แบบเก่า ที่มองว่าการแปลคือการแมปแบบหนึ่งต่อหนึ่งกับข้อความภาษาอังกฤษ
  • ไวยากรณ์ของภาษาต้นฉบับจำกัดความสามารถในการแสดงออกของคำแปล
  • Fluent ถูกสร้างขึ้นเพื่อเปลี่ยนกระบวนทัศน์นี้
    • นักแปลควรสามารถใช้ศักยภาพในการแสดงออกของภาษาได้อย่างเต็มที่ โดยไม่ต้องขออนุญาตจากนักพัฒนา
    • ใน Fluent การแปลเป็นแบบอสมมาตร สตริงภาษาอังกฤษที่เรียบง่ายสามารถแมปไปเป็นคำแปลหลายรูปแบบที่ซับซ้อนในภาษาอื่นได้
  • Fluent ช่วยให้รองรับไวยากรณ์และสไตล์ของหลายภาษาได้ โดยไม่ขึ้นกับภาษาต้นฉบับ
  • มีความเป็นอิสระ
    • แม้ว่าภาษาหนึ่งจะใช้ประโยชน์จากตรรกะขั้นสูง ก็ไม่จำเป็นต้องให้การโลคัลไลเซชันอื่น ๆ นำสิ่งนั้นไปใช้ตาม
    • การโลคัลไลเซชันแต่ละภาษาควบคุมได้เองว่าคำแปลจะซับซ้อนเพียงใด

4 ความคิดเห็น

 
yangeok 2024-05-09

โอ้ น่าทึ่งมากเลยนะที่ก้าวพ้นจากกรอบแนวคิดการจับคู่แบบ 1:1 ในอดีต

 
iolothebard 2024-05-03

เวอร์ชันด้อยลงของ gettext ที่มีไว้สำหรับ JavaScript โดยเฉพาะ

 
xguru 2024-05-03

https://github.com/projectfluent/fluent/wiki/Fluent-vs-gettext

ถ้าพูดแบบนั้นก็เท่ากับมองโปรเจกต์นี้เบาเกินไปนะครับ

 
iolothebard 2024-05-13

คำตอบสั้นแบบไม่ค่อยใส่ใจเกินไปหน่อย เลยอาจทำให้คุณมองแบบนั้นก็ได้ เดี๋ยวผมจะลองเขียนให้ใส่ใจมากขึ้นอีกหน่อยครับ

ตารางเปรียบเทียบเองก็ขึ้นอยู่แล้วว่าจะเทียบโดยยึดใครเป็นหลัก เลยไม่ได้มีความหมายมากนัก

เหตุผลที่ผมรู้สึกว่ามันเป็นเวอร์ชันด้อยกว่าก็เพราะ... มันให้ความรู้สึกว่าไม่ค่อยให้ความเคารพกับองค์ความรู้ที่สั่งสมอยู่ใน gettext ตลอดหลายปีจากผู้คนมากมาย

มีคนบอกว่า gettext ใช้ได้แค่กับภาษา C แต่มีภาษาใหญ่ภาษาไหนบ้างที่ไม่รองรับ gettext?
เขาบอกว่าใช้พารามิเตอร์แบบอิงคีย์เพื่อคำนึงถึงปัญหาเรื่องลำดับคำ แต่ไม่ใช่ทุกภาษาที่มี dictionary ฝังมาเป็นพื้นฐาน ดังนั้นภาษาแบบนั้นก็ต้องมีวิธีเพิ่มเติมเข้ามาอีกอยู่ดี (เช่น ถ้าเป็น Java ก็ต้องใช้ Map อะไรทำนองนั้น) ส่วน gettext ถึงจะอิงตำแหน่ง แต่ก็มีการคำนึงถึงการสลับลำดับคำอยู่แล้ว

ผมบ่นยืดยาวมาเยอะ แต่
จริง ๆ แล้ว... เหตุผลที่ไม่ชอบตั้งแต่แรกก็คือมันใช้ {$...} แทนที่จะเป็น ${...} นี่แหละครับ ^^

โดยส่วนตัวผมชอบการ "reinvent the wheel" มากเลยนะ แต่ถ้าจะคุยเหมือนกับว่าตัวเองประดิษฐ์ล้อแบบที่โลกไม่เคยมีมาก่อน อันนั้นผมว่าไม่น่าดูเท่าไร