DEV Community

Cover image for ทดสอบระบบงานแปลภาษา
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

ทดสอบระบบงานแปลภาษา

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

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

เป้าหมายของการทดสอบนี้

ก่อนหน้านี้เวิร์กโฟลว์แปลของ n8n เคยมีปัญหา 2 กลุ่มหลัก:

  • โพสต์แปลบางรายการไม่มี category และ custom_excerpt
  • ลิงก์ภายในในบทความแปลยังชี้ไปยัง URL ภาษาอังกฤษ

ผลกระทบคือหน้าแปลขาด metadata ที่จำเป็น และกลุ่ม hreflang อ่อนลง เพราะผู้อ่านในภาษาหนึ่งอาจถูกส่งไปยังบทความภาษาอังกฤษโดยไม่ตั้งใจ

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

สิ่งที่ต้องตรวจสอบหลังรันเวิร์กโฟลว์

เมื่อเผยแพร่โพสต์นี้ เวิร์กโฟลว์ n8n ควรรัน 1 ครั้ง และสร้างฉบับแปล 11 ภาษาใน Ghost ไม่ว่าจะเป็นฉบับร่างหรือโพสต์ที่เผยแพร่แล้ว

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

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

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

https://apidog.com/blog/free-cursor-ai/
Enter fullscreen mode Exit fullscreen mode

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

ส่วนนี้ตั้งใจใส่ลิงก์ 2 รูปแบบ เพื่อทดสอบ regex ที่ใช้เขียนลิงก์ภายในใหม่

ผลลัพธ์ที่คาดหวังคือ URL เหล่านี้ต้องถูกเขียนใหม่ตาม locale ของแต่ละภาษา เช่น:

/jp/blog/{slug}/
Enter fullscreen mode Exit fullscreen mode

สำหรับภาษาญี่ปุ่น และ:

/id/blog/{slug}/
Enter fullscreen mode Exit fullscreen mode

สำหรับภาษาอินโดนีเซีย

กรณีภาษาอินโดนีเซียต้องตรวจสอบเป็นพิเศษว่าใช้ /id/blog/{slug}/ ไม่ใช่ /ig/blog/{slug}/

นอกจากนี้โพสต์ที่สร้างใน Ghost ควรมี:

  • slug ลงท้ายด้วย …-id
  • tag เป็น 1Locale ID

ส่วนนี้ใช้ติดตามผลของ Req 6

ตรวจสอบด้วย curl หลังเผยแพร่

ใช้คำสั่งนี้เพื่อตรวจสอบว่าโพสต์แปลถูกเผยแพร่และเข้าถึงได้:

# Verify a translation came out cleanly (after publishing):
curl -I https://apidog.com/jp/blog/translation-pipeline-smoke-test/

# expect 200, and the rendered page to show
#   - "Tutorials" category badge
#   - a Japanese excerpt under the title
#   - any internal links rewritten to /jp/blog/...
Enter fullscreen mode Exit fullscreen mode

ผลลัพธ์ที่ต้องการ:

HTTP/2 200
Enter fullscreen mode Exit fullscreen mode

จากนั้นเปิดหน้าที่ render แล้วตรวจสอบด้วยสายตาอีกครั้งว่า:

  • มี badge หมวดหมู่ Tutorials
  • มี excerpt ภาษาญี่ปุ่นใต้ชื่อบทความ
  • ลิงก์ภายในถูกเปลี่ยนเป็น /jp/blog/...

แนวทางล้างข้อมูลหลังยืนยันผล

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

ถ้าพบปัญหาอย่างใดอย่างหนึ่งต่อไปนี้ ให้เก็บโพสต์ไว้เพื่อ debug:

  • หมวดหมู่หายไป
  • custom_excerpt ว่าง
  • ลิงก์ภายในยังชี้ไปยังภาษาอังกฤษ
  • locale path ผิด เช่น /ig/ แทน /id/
  • slug หรือ tag ไม่ตรงกับที่คาดไว้

เมื่อเจอเคสผิดพลาด ให้แจ้งเจ้าของเวิร์กโฟลว์ n8n พร้อม URL ของโพสต์ที่มีปัญหาและผลลัพธ์ที่ตรวจพบไว้ในรายงานเดียวกัน

Top comments (0)