เครื่องมือแปลจำลอง
ทดสอบ UI สำหรับ i18n ก่อนเปิดตัว สร้างคำแปลปลอมที่ทดสอบเลย์เอาต์ การเข้ารหัส และการเรนเดอร์สองทิศทางอย่างหนัก โดยไม่ต้องรอคำแปลจริง
ปัญหา
UI ดูสมบูรณ์แบบในภาษาอังกฤษ แต่พอภาษาเยอรมันมาถึง ข้อความที่ยาวขึ้น 40% ทำให้ทุกปุ่มเสียหายและส่วนหัวตารางทุกช่องถูกตัด ภาษาอาหรับพลิกทั้งเลย์เอาต์และไอคอนชี้ผิดทาง ภาษาญี่ปุ่นต้องใช้ความสูงบรรทัดต่างกันจนการ์ดที่จัดระยะไว้อย่างละเอียดพังลง คุณพบปัญหาเหล่านี้ทั้งหมดหลังจ่ายค่าแปลแล้ว
วิธีแก้
i18n-pseudo สร้างคำแปลปลอมที่ทดสอบ UI อย่างหนักโดยไม่ต้องรอนักแปลจริง เครื่องมือใช้กลยุทธ์การแปลง 7 ชนิด ทั้งอักขระกำกับเสียง อักขระ CJK การขยายข้อความ เครื่องหมาย RTL และอื่นๆ พร้อมรักษาตัวยึดตำแหน่ง ICU ไวยากรณ์พหูพจน์ และตัวแปรแทรกค่า
การติดตั้ง
i18n-pseudo มีให้ใช้เป็นแพ็กเกจ npm สูตร Homebrew หรือจะบิลด์จากซอร์สด้วย Cargo ก็ได้
npm install -g @i18n-agent/i18n-pseudoกลยุทธ์การแปลง 7 ชนิด
แต่ละกลยุทธ์มุ่งจับข้อบกพร่องด้าน i18n ชนิดหนึ่ง ใช้แยกกันด้วยแฟล็กหรือรวมกันด้วยค่าที่ตั้งไว้ล่วงหน้า
| Strategy | Flag | Input | Output |
|---|---|---|---|
| Accents | --accents | Hello | Ĥéľľó |
| CJK | --cjk | Hello | 你好世界你好 |
| Special Chars | --special | Hello | Hello |
| Expansion | --expansion N | Save | Save~~~~ |
| Brackets | --brackets | Hello | [Hello] |
| RTL | --rtl | Hello | Hello |
| Unicode Stress | --unicode-stress | Hello | H́ȩl̈l̀õ |
ค่าที่ตั้งไว้ล่วงหน้า
ค่าที่ตั้งไว้ล่วงหน้ารวมกลยุทธ์สำหรับสถานการณ์ทดสอบที่พบบ่อย ใช้ --preset เพื่อใช้กลุ่มกลยุทธ์พร้อมกัน
| Preset | Strategies | Use Case |
|---|---|---|
default | accents + brackets | Quick visual check that all strings are externalized |
layout | expansion (1.4x) + brackets | Catch truncation and overflow before real translations |
charset | CJK + special + brackets | Test font rendering and character encoding |
rtl | RTL markers + brackets | Verify bidirectional layout without switching locale |
full | All strategies combined | Maximum stress test — everything at once |
ตัวอย่างการใช้งาน
รัน i18n-pseudo กับไฟล์ภาษาต้นฉบับ เครื่องมืออ่าน JSON, YAML, PO และรูปแบบ i18n อื่นๆ ใช้กลยุทธ์ที่เลือก แล้วเขียนผลลัพธ์ที่แปลงแล้ว
# Default (accents + brackets)
i18n-pseudo en.json -o output/
# Layout testing (text expansion + brackets)
i18n-pseudo en.json --preset layout -o output/
# Specific strategies
i18n-pseudo en.json --accents --expansion 1.5 -o output/
# Kitchen sink
i18n-pseudo en.json --preset full -o output/ก่อนและหลัง
ต่อไปนี้คือผลที่ค่าตั้งต้น ซึ่งประกอบด้วยอักขระกำกับเสียงกับวงเล็บ ทำกับไฟล์แปลทั่วไป สังเกตว่าไวยากรณ์พหูพจน์ ICU และตัวยึดตำแหน่งการแทรกค่ายังคงเดิมทุกประการ
// Input (en.json):
{
"greeting": "Hello, {name}!",
"save": "Save",
"items": "{count, plural, one {# item} other {# items}}"
}
// Output (default preset — accents + brackets):
{
"greeting": "[Ĥéľľó, {name}!]",
"save": "[Šáṽé]",
"items": "[{count, plural, one {# íťéɱ} other {# íťéɱš}}]"
}การเชื่อมต่อ CI
เพิ่มการแปลจำลองลงในไปป์ไลน์ CI เพื่อจับการถดถอยด้าน i18n โดยอัตโนมัติ สร้างไฟล์คำแปลจำลอง แล้วรันการทดสอบการถดถอยด้านภาพกับไฟล์เหล่านั้น
# Generate pseudo-translations and run visual regression
i18n-pseudo locales/en.json --preset layout -o locales/pseudo/
NEXT_PUBLIC_LOCALE=pseudo npx playwright test --project=visualเครื่องมือและคู่มือที่เกี่ยวข้อง
ลองใช้ i18n Agent ตอนนี้
ลากและวางไฟล์แปลของคุณที่นี่
JSON, YAML, PO, XML, CSV, Markdown, Properties
หรือคลิกเพื่อเลือกไฟล์
ภาษาเป้าหมาย