เว็บไซต์ที่พูดได้หลายสิบภาษา โดยไม่ต้องมีนักแปล
แปลโดยอัตโนมัติจากภาษาอิตาลี · ดูต้นฉบับ
วิธีที่เราสร้างระบบแปลภาษาที่ทำงานอยู่ภายใต้หน้าเว็บเหล่านี้: ใช้ AI เมื่อจำเป็น แคชเสมอ และไม่มีการรอคอยที่รับรู้ได้
ปัญหาของการทำ i18n แบบดั้งเดิม
เป็นเวลาหลายปี การทำให้เว็บไซต์เป็นสากลเป็นกระบวนการที่ซับซ้อน: ไฟล์ .po, นักแปลภาษา, คีย์ที่ถูกลืม, การปรับใช้ที่ล่าช้าเพราะ "ยังขาดภาษาเยอรมันอยู่" การเพิ่มภาษาใหม่ต้องใช้เวลาและเงินทุน การเพิ่มสิบภาษาเป็นเรื่องที่ไม่สามารถทำได้สำหรับบริษัทขนาดเล็กใดๆ
ด้วย LLM รุ่นล่าสุด คุณภาพของการแปลด้วยเครื่องได้มาถึงจุดที่เพียงพอสำหรับเว็บไซต์ขององค์กร ไม่ใช่สำหรับวรรณกรรม คำถามไม่ได้อยู่ที่ "เราสามารถแปลเป็นภาษาอัตโนมัติได้หรือไม่" แต่เป็น "เราจะผสานรวมได้อย่างไรโดยไม่ทำลายประสบการณ์ผู้ใช้"
สถาปัตยกรรมโดยสรุป
เว็บไซต์ให้บริการแบบคงที่ในภาษาอิตาลี เมื่อผู้ใช้เลือกภาษาอื่น มอเตอร์ขนาดเล็กบนคอลเลกชัน MongoDB สามชุดจะเข้ามาทำงาน:
i18n_base: ข้อความต้นฉบับในภาษาที่เลือก (ปัจจุบันคือภาษาอิตาลี) แต่ละข้อความมีประกาศภาษาของตนเอง คำอธิบายว่าปรากฏที่ใดและเหตุใดบนเว็บไซต์ (จำเป็นสำหรับคุณภาพของการแปล) น้ำเสียงและขีดจำกัดจำนวนตัวอักษร คำอธิบายนี้จะกลายเป็นส่วนหนึ่งของพรอมต์ไปยัง LLM ซึ่งจะทราบว่ากำลังแปลปุ่มหรือย่อหน้าi18n_human: การแปลที่ดูแลโดยมนุษย์ เมื่อเราต้องการคุณภาพระดับบรรณาธิการสำหรับบางหน้าแทนที่จะเป็นเอาต์พุต LLM มีลำดับความสำคัญเหนือแคชอัตโนมัติและ "ถูกทำเครื่องหมาย" โดยอัตโนมัติเมื่อข้อความต้นฉบับเปลี่ยนแปลงi18n_cache: การแปลที่สร้างขึ้นแล้ว จัดทำดัชนีตาม (ฟิลด์, ภาษา) แต่ละรายการจะเก็บรักษา timestamp ของข้อความพื้นฐาน ณ เวลาที่สร้างarticoli_i18n: ตรรกะเดียวกันที่ใช้กับเนื้อหาที่ยาวขึ้น เช่น บทความนี้
เมื่อเข้าถึงเป็นภาษาใหม่เป็นครั้งแรก ระบบจะขอเฉพาะฟิลด์ที่ขาดหายไปจาก LLM บันทึกคำตอบลงในแคช และส่งกลับไปยังเบราว์เซอร์ การเข้าชมครั้งต่อๆ ไปในภาษาเดียวกันจะเกิดขึ้นทันที โดยไม่ต้องเรียกใช้ AI อีกต่อไป
การทำให้ไม่ถูกต้องที่ใช้งานได้
แคชคือข้อมูลเท็จที่เป็นระเบียบ: จะบอกว่า "ความจริงของฉันคือสิ่งนี้" จนกว่าจะมีใครมาหักล้างมัน กลไกการหักล้างที่นี่ง่ายมาก: การแปลแต่ละครั้งที่แคชไว้จะเก็บ timestamp ของข้อความต้นฉบับที่สร้างมันขึ้นมา เมื่อคุณแก้ไขข้อความภาษาอิตาลีและอัปเดต updated_at การแปลทั้งหมดของฟิลด์นั้นในทุกภาษาจะกลายเป็นข้อมูลที่ล้าสมัยโดยอัตโนมัติ และจะถูกสร้างใหม่เมื่อจำเป็น ไม่ต้องทำ cascade แบบแมนนวล ไม่ต้องล้างแคชเลย
ผู้ใช้ที่ไม่รอ
สิ่งที่น่าสนใจที่สุดไม่ใช่การแปล—แต่เป็นวิธีการแสดงผล เมื่อเปลี่ยนภาษา เบราว์เซอร์จะเห็นหน้าเว็บภาษาอิตาลีพร้อมกับสปินเนอร์เล็กๆ ถัดจากแต่ละบล็อกข้อความที่จะอัปเดต สิ่งที่น่าดึงดูดใจคือการส่งคำขอเดียวเพื่อแปลทุกอย่างพร้อมกัน: ง่าย สะอาด และจะทำให้ผู้ใช้ต้องรอจนกว่า LLM จะเสร็จสิ้นก่อนที่จะเห็นการเปลี่ยนแปลงใดๆ
เราเลือกแนวทางตรงกันข้าม ข้อความจะถูกจัดกลุ่มตามส่วน (navbar, เนื้อหา, footer) และแบ่งออกเป็น micro-batch ขนาดสามฟิลด์ต่อชุด คำขอจะถูกส่ง ตามลำดับ: ก่อนอื่นคือฟิลด์จำนวนน้อยใน navbar ซึ่งจะปรากฏภายในไม่กี่วินาที—ผู้ใช้จะเห็นว่ามีบางอย่างเกิดขึ้นและเริ่มอ่าน ในขณะที่อ่าน ส่วนแรกของเนื้อหาจะมาถึง จากนั้นส่วนที่สอง และสุดท้ายคือ footer
งานตอนกลางคืน
แคชมีศัตรูตัวจริงเพียงตัวเดียวคือการเข้าชมครั้งแรก ผู้ใช้ชาวเยอรมันคนแรกต้องจ่ายค่าแปลทั้งหมดในอนาคต และประสบการณ์ของเขาคือสิ่งที่อยู่ในใจเขา เพื่อขจัด (หรือเกือบจะ) ปัญหา งานเบื้องหลังจะตื่นขึ้นทุกนาที เลือกภาษาที่คาดหวังมากที่สุดจากภาษาที่ยังไม่สมบูรณ์ เลือกข้อความที่ยังไม่ได้แปล และส่งไปยัง LLM ในนาทีถัดไป ทำซ้ำกับข้อความถัดไป ในไม่กี่วัน ภาษาที่ใช้กันอย่างแพร่หลายก็จะพร้อมใช้งาน
งานตอนกลางคืนยังทำหน้าที่ที่สองอีกด้วย: ตรวจสอบการแปลที่มีคุณภาพน่าสงสัยโดยอัตโนมัติ และลองใหม่ด้วยโมเดล AI ที่แตกต่างกัน เมื่อการจัดแนวระหว่างภาษาเป็นสิ่งสำคัญ การแปลที่แย่จะไม่คงอยู่
หากคุณเป็นชาวเยอรมันคนแรกของวันและมาถึงในขณะที่ระบบยังคงปรับปรุงแคชอยู่ คุณยังมี Progressive Loading คอยทำให้คุณไม่เบื่อ หากคุณเป็นคนที่สอง คุณจะไม่สังเกตเห็นเลย
สิ่งที่คุณได้รับ
เว็บไซต์หลายภาษาโดยไม่ต้องใช้ผู้แปล ไม่ต้องจัดการไฟล์ ไม่ต้องปรับใช้เพื่อเพิ่มภาษา ผู้ใช้พิมพ์รหัส — ja, ca, eu ตามที่ต้องการ — และหน้าเว็บจะแปลโดยอัตโนมัติ ครั้งที่สองจะเกิดขึ้นทันที ครั้งที่สาม มีโอกาสสูงที่เราได้ดำเนินการแปลให้เรียบร้อยแล้ว โดยแปลในเวลาที่เหมาะสมด้วยงานที่ไม่เคยหลับใหล
หน้าเว็บเดียวกันนี้ หากคุณกำลังอ่านเป็นภาษาเยอรมัน สเปน หรือเกาหลี ไม่เคยถูกเขียนโดยผู้แปลเลย ถูกแปลเพียงครั้งเดียวโดย LLM และตั้งแต่นั้นมาก็ให้บริการจากแคช สิ่งเดียวที่เป็นลายมือคือสิ่งที่คุณกำลังอ่านอยู่ตอนนี้ หากเป็นภาษาอิตาลี
สนใจที่จะนำสถาปัตยกรรมนี้มาใช้กับเว็บไซต์ของคุณหรือไม่? มาพูดคุยกัน
ติดต่อเรา
มีข้อเสนอแนะ? แจ้งให้เราทราบ
ข้อความนี้จะส่งถึงเราเท่านั้น หากความคิดเห็นของคุณน่าสนใจ เราอาจนำไปเผยแพร่ต่อท้ายบทความ แต่จะเผยแพร่เมื่อได้รับการอนุมัติเท่านั้น
ขณะที่คุณพิมพ์ เบราว์เซอร์ของคุณกำลังแก้ปัญหาทางคณิตศาสตร์เล็กน้อย นี่เป็นวิธีที่เราป้องกันอีเมลอัตโนมัติโดยไม่ต้องใช้บริการภายนอกหรือให้คุณระบุรูปภาพ คุณไม่จำเป็นต้องทำอะไร และไม่มีข้อมูลใดออกจากเว็บไซต์นี้