DEV Community

Cover image for ทดสอบลิงก์สำรองการแปล
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

ทดสอบลิงก์สำรองการแปล

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

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

ตัวยึดรูปภาพส่วนหัว

โพสต์นี้ใช้ทดสอบอะไร

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

กฎที่ต้องตรวจสอบมีดังนี้:

  • ถ้าบทความปลายทางมีคำแปลในภาษานั้น ลิงก์ควรถูกเขียนเป็น path ของภาษานั้น เช่น /jp/blog/... หรือ /kr/blog/...
  • ถ้าบทความปลายทางยังไม่มีคำแปล ระบบควรพาผู้อ่านกลับไปยังเวอร์ชันภาษาอังกฤษ
  • ลิงก์ภายนอก เช่น ghost.org ต้องไม่ถูกแก้ไข
  • ผลลัพธ์ต้องไม่ทำให้เกิด 404

ชุดลิงก์ที่ควรถูกแปลเกือบทุกภาษา

บทความสองรายการนี้มีอยู่ในทุก 11 ภาษาที่ไม่ใช่ภาษาอังกฤษ ดังนั้นในบทความที่แปลแล้ว ลิงก์ควรถูก rewrite ไปยังภาษาปลายทางได้ตามปกติ:

ตัวอย่างผลลัพธ์ที่คาดหวังในภาษาญี่ปุ่น:

/th/blog/get-claude-pro-for-free/
→ /jp/blog/get-claude-pro-for-free/

/th/blog/llms-no-restrictions/
→ /jp/blog/llms-no-restrictions/
Enter fullscreen mode Exit fullscreen mode

ทั้งสอง URL ควรโหลดได้ด้วย HTTP 200

ชุดลิงก์ที่มีคำแปลบางภาษาเท่านั้น

สองบทความถัดไปใช้ทดสอบ fallback behavior เพราะมีคำแปลเฉพาะบางภาษา:

ผลลัพธ์ที่ควรได้:

ภาษาญี่ปุ่น:
ทุกลิงก์ควรถูกเขียนเป็น /jp/blog/{slug}/ และโหลดได้

ภาษาฝรั่งเศส:
get-claude-pro-for-free  → /fr/blog/...
llms-no-restrictions     → /fr/blog/...
free-cursor-ai           → fallback ไป /blog/...
top-10-ai-testing        → fallback ไป /blog/...
Enter fullscreen mode Exit fullscreen mode

จุดสำคัญคือระบบไม่ควรสร้าง URL ภาษาปลายทางที่ไม่มีอยู่จริง เช่น /fr/blog/free-cursor-ai/ หากบทความนั้นยังไม่มีคำแปลภาษาฝรั่งเศส

ลิงก์ที่ไม่ควรถูกแก้ไข

ลิงก์ภายนอกต้องถูกปล่อยไว้เหมือนเดิมในทุกภาษา:

โปรเจกต์ Ghost CMS

ค่าที่ถูกต้องคือ:

https://ghost.org/
Enter fullscreen mode Exit fullscreen mode

ถ้าพบว่าถูกเปลี่ยนเป็นรูปแบบ เช่น:

https://ghost.org/jp/...
https://ghost.org/fr/...
Enter fullscreen mode Exit fullscreen mode

แสดงว่า logic การ rewrite ลิงก์กว้างเกินไป และควรจำกัดให้ทำงานเฉพาะโดเมนหรือ path ของบล็อกภายในเท่านั้น

วิธีตรวจสอบหลัง publish

หลังจากโพสต์นี้ถูกเผยแพร่และ workflow แปลทำงานแล้ว ให้เปิดบทความที่แปลแล้วหลายภาษา แล้วตรวจสอบตาม checklist นี้

1. ตรวจสอบสำเนาภาษาญี่ปุ่น

ลิงก์บล็อก Apidog ทุกลิงก์ควรอยู่ในรูปแบบ:

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

และทุกลิงก์ควรโหลดได้ด้วย HTTP 200

2. ตรวจสอบสำเนาภาษาฝรั่งเศส

ลิงก์ที่มีคำแปลภาษาฝรั่งเศสควรเป็น:

/fr/blog/get-claude-pro-for-free/
/fr/blog/llms-no-restrictions/
Enter fullscreen mode Exit fullscreen mode

ลิงก์ที่ยังไม่มีคำแปลภาษาฝรั่งเศสควร fallback ไปยังภาษาอังกฤษ:

/blog/free-cursor-ai/
/blog/top-10-ai-testing/
Enter fullscreen mode Exit fullscreen mode

3. ตรวจสอบลิงก์ภายนอก

ลิงก์ Ghost ต้องคงเดิม:

https://ghost.org/
Enter fullscreen mode Exit fullscreen mode

ห้ามถูกเติม locale path ใด ๆ

4. ตรวจสอบ metadata ของบทความแปล

ในสำเนาที่แปลแล้วทุกภาษา ให้ตรวจสอบว่า:

  • มีหมวดหมู่ Tutorials
  • มี excerpt ที่ถูกแปลแล้ว
  • ไม่มีฟิลด์สำคัญว่างเปล่า
  • ไม่มีลิงก์ภายในที่กลายเป็น 404

ตัวอย่างการตรวจสอบด้วย curl

ใช้ curl ตรวจสอบ status code ของลิงก์ได้โดยตรง:

curl -I https://apidog.com/jp/blog/get-claude-pro-for-free/
curl -I https://apidog.com/fr/blog/llms-no-restrictions/
curl -I https://apidog.com/blog/free-cursor-ai/
curl -I https://ghost.org/
Enter fullscreen mode Exit fullscreen mode

ผลลัพธ์ที่ต้องการคือ status code ที่ไม่ใช่ 404 เช่น:

HTTP/2 200
Enter fullscreen mode Exit fullscreen mode

หรือในกรณี fallback/redirect อาจเห็น:

HTTP/2 301
HTTP/2 302
Enter fullscreen mode Exit fullscreen mode

จากนั้นให้ตรวจสอบ URL ปลายทางว่าเป็นเวอร์ชันภาษาอังกฤษ /blog/... ไม่ใช่ path ภาษาที่ไม่มีบทความจริง

การล้างข้อมูล

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

Top comments (0)