Skip to main content

เครื่องมือแปลจำลอง

ทดสอบ UI สำหรับ i18n ก่อนเปิดตัว สร้างคำแปลปลอมที่ทดสอบเลย์เอาต์ การเข้ารหัส และการเรนเดอร์สองทิศทางอย่างหนัก โดยไม่ต้องรอคำแปลจริง

ปัญหา

UI ดูสมบูรณ์แบบในภาษาอังกฤษ แต่พอภาษาเยอรมันมาถึง ข้อความที่ยาวขึ้น 40% ทำให้ทุกปุ่มเสียหายและส่วนหัวตารางทุกช่องถูกตัด ภาษาอาหรับพลิกทั้งเลย์เอาต์และไอคอนชี้ผิดทาง ภาษาญี่ปุ่นต้องใช้ความสูงบรรทัดต่างกันจนการ์ดที่จัดระยะไว้อย่างละเอียดพังลง คุณพบปัญหาเหล่านี้ทั้งหมดหลังจ่ายค่าแปลแล้ว

ค่าใช้จ่ายเฉลี่ยในการแก้ข้อบกพร่องเลย์เอาต์ด้าน i18n หลังแปลสูงกว่าการจับระหว่างพัฒนา 5-10 เท่า การแปลจำลองจับปัญหาเหล่านี้ได้ฟรีก่อนคุณจ่ายเงินให้คำแปลจริงแม้แต่ดอลลาร์เดียว

วิธีแก้

i18n-pseudo สร้างคำแปลปลอมที่ทดสอบ UI อย่างหนักโดยไม่ต้องรอนักแปลจริง เครื่องมือใช้กลยุทธ์การแปลง 7 ชนิด ทั้งอักขระกำกับเสียง อักขระ CJK การขยายข้อความ เครื่องหมาย RTL และอื่นๆ พร้อมรักษาตัวยึดตำแหน่ง ICU ไวยากรณ์พหูพจน์ และตัวแปรแทรกค่า

การติดตั้ง

i18n-pseudo มีให้ใช้เป็นแพ็กเกจ npm สูตร Homebrew หรือจะบิลด์จากซอร์สด้วย Cargo ก็ได้

Terminal
npm install -g @i18n-agent/i18n-pseudo
แพ็กเกจ npm มีไบนารี CLI ส่วนกลาง โดยไม่ต้องใช้การพึ่งพาขณะรัน

กลยุทธ์การแปลง 7 ชนิด

แต่ละกลยุทธ์มุ่งจับข้อบกพร่องด้าน i18n ชนิดหนึ่ง ใช้แยกกันด้วยแฟล็กหรือรวมกันด้วยค่าที่ตั้งไว้ล่วงหน้า

StrategyFlagInputOutput
Accents--accentsHelloĤéľľó
CJK--cjkHello你好世界你好
Special Chars--specialHelloHel­lo
Expansion--expansion NSaveSave~~~~
Brackets--bracketsHello[Hello]
RTL--rtlHello‮Hello‬
Unicode Stress--unicode-stressHelloH́ȩl̈l̀õ
อักขระกำกับเสียงเป็นกลยุทธ์ยอดนิยมที่สุดในการตรวจหาข้อความฮาร์ดโค้ด หากข้อความใน UI ปรากฏโดยไม่มีเครื่องหมายกำกับ แสดงว่าข้อความนั้นไม่เคยผ่านฟังก์ชันแปล

ค่าที่ตั้งไว้ล่วงหน้า

ค่าที่ตั้งไว้ล่วงหน้ารวมกลยุทธ์สำหรับสถานการณ์ทดสอบที่พบบ่อย ใช้ --preset เพื่อใช้กลุ่มกลยุทธ์พร้อมกัน

PresetStrategiesUse Case
defaultaccents + bracketsQuick visual check that all strings are externalized
layoutexpansion (1.4x) + bracketsCatch truncation and overflow before real translations
charsetCJK + special + bracketsTest font rendering and character encoding
rtlRTL markers + bracketsVerify bidirectional layout without switching locale
fullAll strategies combinedMaximum stress test — everything at once

ตัวอย่างการใช้งาน

รัน i18n-pseudo กับไฟล์ภาษาต้นฉบับ เครื่องมืออ่าน JSON, YAML, PO และรูปแบบ i18n อื่นๆ ใช้กลยุทธ์ที่เลือก แล้วเขียนผลลัพธ์ที่แปลงแล้ว

Terminal
# 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 และตัวยึดตำแหน่งการแทรกค่ายังคงเดิมทุกประการ

Before & After
// 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 {# íťéɱš}}]"
}
ระบบจะไม่แก้ไขตัวยึดตำแหน่งอย่าง {name}, {count} และนิพจน์พหูพจน์ ICU โดยแปลงเฉพาะเซกเมนต์ข้อความที่แปลได้ แอปจึงเรนเดอร์ไฟล์คำแปลจำลองได้อย่างถูกต้อง

การเชื่อมต่อ CI

เพิ่มการแปลจำลองลงในไปป์ไลน์ CI เพื่อจับการถดถอยด้าน i18n โดยอัตโนมัติ สร้างไฟล์คำแปลจำลอง แล้วรันการทดสอบการถดถอยด้านภาพกับไฟล์เหล่านั้น

CI Pipeline
# 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
ใช้ค่าตั้งต้นสำหรับเลย์เอาต์ร่วมกับการทดสอบการถดถอยด้านภาพของ Playwright หรือ Chromatic คอมโพเนนต์ที่ล้นหรือถูกตัดเมื่อข้อความขยาย 1.4 เท่าจะไม่ผ่านการเปรียบเทียบภาพ

เครื่องมือและคู่มือที่เกี่ยวข้อง

ลองใช้ i18n Agent ตอนนี้

ลากและวางไฟล์แปลของคุณที่นี่

JSON, YAML, PO, XML, CSV, Markdown, Properties

หรือคลิกเพื่อเลือกไฟล์

ภาษาเป้าหมาย

ไม่ต้องลงทะเบียนประเมินราคาได้ทันที

คำถามที่พบบ่อย