DEV Community

Cover image for ทดสอบระบบแปลภาษาอัตโนมัติ
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

ทดสอบระบบแปลภาษาอัตโนมัติ

นี่คือโพสต์ทดสอบภาษาไทยสำหรับยืนยันพฤติกรรมใหม่ 3 อย่างของเวิร์กโฟลว์การแปลใน n8n: คัดลอก หมวดหมู่ จากโพสต์ต้นฉบับ, แปล ข้อความเกริ่นนำ ตามภาษาเป้าหมาย และ เขียนลิงก์บล็อกภายในใหม่ ให้ชี้ไปยังเวอร์ชันภาษาที่ถูกต้อง แทนที่จะชี้กลับไปยังต้นฉบับภาษาอังกฤษ หากเห็นโพสต์นี้บนบล็อกจริง ให้ลบออกหลังจากยืนยันผลการทดสอบแล้ว

ลองใช้ Apidog วันนี้

ทำไมโพสต์นี้ถึงมีอยู่

ก่อนหน้านี้ เครื่องมือแปลของ n8n ละทิ้งป้ายหมวดหมู่และข้อความเกริ่นนำในโพสต์ที่แปลแล้ว ตัวอย่างเช่น บทช่วยสอน LLM เวอร์ชันภาษาโปรตุเกสฉบับหนึ่งไม่มีทั้งสองฟิลด์นี้

นอกจากนี้ ลิงก์ภายในบทความที่แปลแล้วเคยยังชี้ไปยัง URL ภาษาอังกฤษ ทำให้กลุ่ม hreflang อ่อนลง และอาจส่งผู้อ่านภาษาอื่น เช่น ภาษาอินโดนีเซีย ไปยังบทความภาษาอังกฤษโดยไม่ได้ตั้งใจ

การปรับปรุงเวิร์กโฟลว์ล่าสุดแก้ปัญหาเหล่านี้แล้ว โพสต์นี้จึงใช้เป็น smoke test เพื่อยืนยันว่าการแก้ไขทำงานถูกต้องกับ Ghost จริง

สิ่งที่ต้องตรวจสอบหลังเผยแพร่

เมื่อเผยแพร่โพสต์นี้ เวิร์กโฟลว์แปลของ n8n ควรทำงาน 1 ครั้ง และสร้างฉบับแปล 11 ฉบับใน Ghost ซึ่งอาจอยู่ในสถานะ draft หรือ published ตามการตั้งค่าเวิร์กโฟลว์

ตรวจสอบแต่ละฉบับแปลตามรายการนี้:

  1. ฟิลด์ custom_excerpt ต้องมีข้อความเกริ่นนำที่แปลแล้ว และต้อง ไม่ว่างเปล่า
  2. ฟิลด์ category ต้องมีค่า Tutorials เหมือนโพสต์ต้นฉบับ
  3. ลิงก์ภายในเนื้อหาต้องถูกเขียนใหม่ให้ตรงกับภาษาของโพสต์นั้น เช่น เวอร์ชันภาษาญี่ปุ่นควรใช้:
https://apidog.com/jp/blog/free-cursor-ai/
Enter fullscreen mode Exit fullscreen mode

ไม่ใช่ URL ภาษาอังกฤษเดิม

ลิงก์สำหรับยืนยันการเขียนใหม่

ใช้ลิงก์ด้านล่างเป็น test targets สำหรับตรวจสอบ regex หรือ logic ที่เขียนลิงก์ใหม่ โดยมีทั้ง URL แบบเต็มและแบบสัมพันธ์กับ root

ผลลัพธ์ที่คาดหวัง:

  • เวอร์ชันภาษาญี่ปุ่นควรเขียน URL ทั้ง 4 รายการให้อยู่ในรูปแบบ /jp/blog/{slug}/
  • เวอร์ชันภาษาอินโดนีเซียควรเขียนเป็น /id/blog/{slug}/
  • ห้ามเขียนผิดเป็น /ig/blog/...
  • โพสต์ภาษาอินโดนีเซียควรถูกสร้างใน Ghost ด้วย slug ที่ลงท้ายด้วย ...-id
  • โพสต์ภาษาอินโดนีเซียควรมีแท็ก 1Locale ID

ส่วนท้ายของการเปลี่ยนชื่อนี้คือการติดตามผล Req 6

ตรวจสอบด้วยคำสั่ง curl

หลังเผยแพร่ ให้ตรวจสอบว่า URL ของฉบับแปลตอบกลับถูกต้องและหน้าเรนเดอร์ได้จริง ตัวอย่างสำหรับภาษาญี่ปุ่น:

# ตรวจสอบว่าการแปลออกมาอย่างสะอาดหลังเผยแพร่
curl -I https://apidog.com/jp/blog/translation-pipeline-smoke-test/

# คาดหวัง:
# - HTTP 200
# - หน้าเรนเดอร์แล้วแสดงป้ายหมวดหมู่ "Tutorials"
# - มีข้อความเกริ่นนำภาษาญี่ปุ่นใต้ชื่อเรื่อง
# - ลิงก์ภายในถูกเขียนใหม่เป็น /jp/blog/...
Enter fullscreen mode Exit fullscreen mode

หากต้องการตรวจหลายภาษา ให้เปลี่ยน locale ใน path เช่น:

curl -I https://apidog.com/id/blog/translation-pipeline-smoke-test/
curl -I https://apidog.com/pt/blog/translation-pipeline-smoke-test/
curl -I https://apidog.com/fr/blog/translation-pipeline-smoke-test/
Enter fullscreen mode Exit fullscreen mode

เช็กลิสต์สำหรับยืนยันผลใน Ghost

ใช้เช็กลิสต์นี้กับฉบับแปลทั้ง 11 ฉบับ:

[ ] โพสต์ถูกสร้างใน Ghost
[ ] slug ใช้ locale ที่ถูกต้อง
[ ] custom_excerpt ไม่ว่างเปล่า
[ ] category มีค่า Tutorials
[ ] ลิงก์ภายในถูกเขียนใหม่เป็น path ของภาษานั้น
[ ] เวอร์ชัน id ใช้ /id/blog/... ไม่ใช่ /ig/blog/...
[ ] เวอร์ชัน id มีแท็ก 1Locale ID
Enter fullscreen mode Exit fullscreen mode

การล้างข้อมูลหลังยืนยันแล้ว

หากฉบับแปลทั้ง 11 ฉบับถูกต้อง ให้ลบโพสต์นี้และฉบับแปลทั้งหมดออกจาก Ghost เพราะโพสต์นี้มีไว้สำหรับทดสอบเท่านั้นและไม่มีคุณค่าใน production

หากพบปัญหา เช่น หมวดหมู่หายไป, ข้อความเกริ่นนำว่างเปล่า หรือการเขียนลิงก์ใหม่ผิดพลาด ให้เก็บโพสต์ไว้เพื่อใช้วินิจฉัย และแจ้งเจ้าของเวิร์กโฟลว์เพื่อตรวจสอบต่อไป

Top comments (0)