DEV Community

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

Posted on • Originally published at apidog.com

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

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

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

รูปภาพทดสอบ

ทำไมต้องมีโพสต์ทดสอบนี้

ก่อนหน้านี้ workflow แปลของ n8n มีปัญหาในบางโพสต์ที่แปลแล้ว:

  • ไม่ได้ใส่ป้ายหมวดหมู่ในโพสต์แปล
  • ไม่ได้เติม custom_excerpt หรือส่วนนำ
  • ลิงก์ภายในยังคงชี้ไปยัง URL ภาษาอังกฤษ

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

โพสต์นี้จึงทำหน้าที่เป็น smoke test เพื่อยืนยันว่า workflow เวอร์ชันล่าสุดทำงานครบตั้งแต่การอ่านโพสต์ต้นฉบับ แปลเนื้อหา เขียนลิงก์ใหม่ และสร้างโพสต์ใน Ghost

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

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

ตรวจสอบแต่ละฉบับด้วย checklist นี้:

  1. ฟิลด์ custom_excerpt ต้องมีข้อความที่แปลจากส่วนนำต้นฉบับ และต้อง ไม่ว่าง
  2. ฟิลด์ category ต้องมีค่า Tutorials ตรงกับโพสต์ต้นฉบับ
  3. ลิงก์ภายในเนื้อหาต้องถูกเขียนใหม่ให้ตรงกับ locale ของบทความนั้น

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

ต้นฉบับภาษาอังกฤษ:
https://apidog.com/blog/free-cursor-ai/

ฉบับภาษาญี่ปุ่น:
https://apidog.com/jp/blog/free-cursor-ai/

ฉบับภาษาอินโดนีเซีย:
https://apidog.com/id/blog/free-cursor-ai/
Enter fullscreen mode Exit fullscreen mode

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

ในโพสต์นี้มีลิงก์ภายใน 2 รูปแบบ เพื่อทดสอบว่า regular expression ของ workflow รองรับได้ครบ

1. ลิงก์แบบ absolute

2. ลิงก์แบบ root-relative

หลัง workflow ทำงานแล้ว ให้ตรวจสอบว่า URL เหล่านี้ถูกแปลงตาม locale ที่ถูกต้อง เช่น:

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

โดยเฉพาะภาษาอินโดนีเซียต้องใช้:

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

ไม่ใช่:

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

นอกจากนี้ โพสต์ภาษาอินโดนีเซียควรถูกสร้างใน Ghost ด้วย slug ที่ลงท้ายด้วย -id และมีแท็ก 1Locale ID ซึ่งเป็นส่วนหนึ่งของการติดตามผล Req 6

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

หลังจาก workflow สร้างโพสต์แปลแล้ว ให้ตรวจสอบหน้าเป้าหมายด้วย curl:

# ตรวจสอบว่าหน้าภาษาญี่ปุ่นถูกสร้างและเรนเดอร์ได้
curl -I https://apidog.com/jp/blog/translation-pipeline-smoke-test/

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

หากต้องการตรวจหลาย locale แบบรวดเร็ว สามารถใช้ loop:

locales=("jp" "id" "pt" "es" "fr")

for locale in "${locales[@]}"; do
  url="https://apidog.com/${locale}/blog/translation-pipeline-smoke-test/"
  echo "Checking ${url}"
  curl -I "${url}" | head -n 1
done
Enter fullscreen mode Exit fullscreen mode

Checklist สำหรับยืนยันผลใน Ghost

ตรวจสอบโพสต์แปลแต่ละฉบับใน Ghost Admin:

[ ] โพสต์ถูกสร้างครบตามจำนวน locale ที่คาดหวัง
[ ] custom_excerpt ไม่ว่าง
[ ] category = Tutorials
[ ] internal links ถูกเขียนใหม่ตาม locale
[ ] slug ของ locale พิเศษ เช่น id ถูกต้อง
[ ] tag ของ locale ถูกต้อง เช่น 1Locale ID
Enter fullscreen mode Exit fullscreen mode

หากพบปัญหา ให้บันทึก locale, slug, URL ต้นทาง และ URL ที่ถูกเขียนผิด เพื่อส่งต่อให้เจ้าของ workflow ตรวจสอบ node ที่เกี่ยวข้องใน n8n

การทำความสะอาดหลังยืนยันผล

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

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

Top comments (0)