ข้ามไปยังเนื้อหา
i18n Doctor

i18n Doctor: รับรายงานสุขภาพการแปลฉบับสมบูรณ์ในคำสั่งเดียว

รัน better-i18n doctor เพื่อวิเคราะห์โค้ดของคุณอย่างละเอียดในห้าด้าน — คุณภาพของโค้ด, ความครอบคลุมของการแปล, ความถูกต้องของตัวแปรแทน, คีย์ที่ไม่ได้ใช้, และการซิงค์ CDN — และรับคะแนนสุขภาพเดียว 0–100 พร้อมการวินิจฉัยที่สามารถดำเนินการได้

$ better-i18n doctor
better-i18n · รายงานจากผู้เชี่ยวชาญด้าน i18n
████████████████░░░░82 / 100A
PASSED (threshold: 70)
Coverage95(3 issues)
Quality88(2 issues)
Code72(8 issues)
Structure100(clean)
Performance91(1 issue)

ห้าชั้นการวิเคราะห์ในครั้งเดียว

แพทย์รันโค้ดสแกน, การวิเคราะห์ความครอบคลุม, การตรวจสอบคุณภาพ, การตรวจสอบประสิทธิภาพ, และการตรวจสอบการซิงค์ CDN — ทั้งหมดพร้อมกัน พร้อมคะแนนรวม

โค้ด — การตรวจจับสตริงที่ฝังไว้อย่างถาวร

การสแกนที่ใช้ AST จะค้นหาทุกสตริงที่แสดงต่อผู้ใช้ซึ่งไม่ได้ถูกห่อด้วย t() ครอบคลุมถึงข้อความใน JSX, คุณสมบัติ, ตรรกะโลเคชันแบบ ternary, ข้อความ toast และตัวแปรที่เป็นสตริง

ความครอบคลุม — การแปลที่ขาดหายไป

เปรียบเทียบคีย์ที่มีอยู่ในแหล่งที่มาของคุณกับแต่ละเป้าหมายท้องถิ่น คีย์ใดที่หายไปจากเป้าหมายท้องถิ่นจะถูกแจ้งพร้อมชื่อพื้นที่และเส้นทางที่แน่นอน

คุณภาพ — การไม่ตรงกันของตัวที่แทน

ตรวจสอบว่าตัวแทนการแทรกค่าแบบประมาณค่าสอดคล้องกันในทุกภาษาที่รองรับ รองรับรูปแบบชื่อ {}, คู่ปีกกาคู่ {{}}, printf %s, เทมเพลต ${}, และตำแหน่ง {0}

ประสิทธิภาพ — การตรวจจับคีย์กำพร้า

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

ซิงค์ — เปรียบเทียบ CDN

เปรียบเทียบคีย์ที่ดึงออกมาจากโค้ดของคุณกับคีย์ที่เผยแพร่ใน CDN แสดงปัญหาคีย์ที่หายไปจากระยะไกลและคีย์ที่ไม่ได้ใช้จากระยะไกลก่อนที่ปัญหาจะเกิดขึ้นในสภาพแวดล้อมการผลิต

คะแนนเดียวสำหรับสุขภาพการแปลของคุณ

ระบบคำนวณคะแนนตั้งแต่ 0 ถึง 100 ตามการวินิจฉัยที่พบ ข้อผิดพลาดจะถูกหักคะแนน 3.0 คะแนนต่อข้อ ในขณะที่การเตือนของแต่ละกฎจะถูกจำกัดไว้ที่ 20 คะแนน — เพื่อป้องกันไม่ให้กฎเดียวที่มีการเตือนหลายพันครั้งทำให้คะแนนของคุณเป็นศูนย์ทั้งหมด

เกณฑ์มาตรฐานสำหรับการผ่านคือ 70 (เกรด B) ใช้ --ci เพื่อทำให้การสร้างล้มเหลวหากต่ำกว่าเกณฑ์นี้ หรือเริ่มต้นด้วย --report เพื่อกำหนดเกณฑ์พื้นฐานก่อนที่จะบังคับใช้คะแนน

สูตรการให้คะแนน
score = 100 - (errors × 3.0) - Σ min(rule_warnings × 0.15, 20)

เกณฑ์การให้คะแนน

A+≥ 90
ผ่าน
A≥ 80
ผ่าน
B≥ 70
ผ่าน
C≥ 50
ล้มเหลว
F< 50
ล้มเหลว

การผสาน CI/CD — ป้องกันการแปลที่ไม่ดีก่อนที่มันจะเผยแพร่

เพิ่มแพทย์เข้าไปใน CI pipeline ของคุณเพื่อตรวจจับการถดถอยของการแปลในทุกการ push การตรวจสอบสิทธิ์ OIDC อัตโนมัติใน GitHub Actions หมายความว่าคุณไม่ต้องจัดการความลับเลย

GitHub Actions พร้อม OIDC

ยืนยันตัวตนโดยอัตโนมัติโดยไม่ต้องใช้คีย์ API ด้วย GitHub Actions OIDC เพียงเพิ่ม id-token: write permission และรัน doctor --ci --report

การเปิด-ปิดสัญญาณตามเกณฑ์

ตั้งค่าเกณฑ์ผ่าน (ค่าเริ่มต้น: 70) และให้ถือว่าล้มเหลวเมื่อคะแนนต่ำกว่าเกณฑ์ที่กำหนด เริ่มการติดตามด้วย --report จากนั้นบังคับใช้ด้วย --ci

JSON ที่สามารถอ่านได้โดยเครื่อง

ใช้ --format json สำหรับเอาต์พุตที่มีโครงสร้างซึ่งคุณสามารถส่งต่อไปยัง jq, แดชบอร์ดที่กำหนดเอง หรือระบบอัตโนมัติในขั้นตอนถัดไปของกระบวนการปรับใช้ของคุณ

รายงานแดชบอร์ด

อัปโหลดผลลัพธ์ไปยังแดชบอร์ด Better I18N ด้วย --report เพื่อการติดตามประวัติย้อนหลัง การวิเคราะห์แนวโน้ม และการมองเห็นทั่วทั้งทีมเกี่ยวกับสถานะของ i18n

# GitHub Actions example
- run: npx @better-i18n/cli doctor --ci --report

เมื่อใดควรใช้คำสั่ง Which

แพทย์เป็นตัวเลือกที่ครอบคลุม ใช้คำสั่งที่เฉพาะเจาะจงเมื่อคุณต้องการตรวจสอบเฉพาะหรือต้องการข้อมูลตอบกลับที่รวดเร็วขึ้นใน pre-commit hooks

แพทย์

คะแนนสุขภาพเต็มรูปแบบพร้อมการวิเคราะห์ห้าชั้น — แหล่งข้อมูลเดียวที่ถูกต้องสำหรับสถานะ i18n ของโครงการคุณ

สแกน

การตรวจจับสตริงแบบฮาร์ดโค้ดที่เน้นเฉพาะจุด รองรับ --staged สำหรับฮุคก่อนการคอมมิต

ตรวจสอบ

ตัวตรวจสอบแบบโต้ตอบสำหรับคีย์การแปลที่หายไปหรือไม่ได้ใช้ พร้อมคำแนะนำแบบมีขั้นตอน

ซิงค์

การเปรียบเทียบแบบเต็มรูปแบบจากเครื่องท้องถิ่นไปยังเครื่องระยะไกล แสดงทั้งคีย์ที่หายไปและคีย์ที่ไม่ได้ใช้งานพร้อมกัน

สร้างขึ้นเพื่อรองรับกระบวนการทำงาน i18n ในโลกจริง

คะแนนสุขภาพ 0–100

คะแนนเดียวพร้อมการแยกตามหมวดหมู่และเกณฑ์ผ่าน/ไม่ผ่านของ CI ติดตามสุขภาพการแปลของคุณตลอดเวลา

การติดตามขอบเขตของคำศัพท์

การตรวจจับเนมสเปซอัจฉริยะสำหรับทั้ง useTranslations และ getTranslations ทุกการเรียกใช้ t() จะถูกแมปไปยังเนมสเปซที่ถูกต้อง

การสนับสนุนส่วนประกอบเซิร์ฟเวอร์

รองรับการทำงานของฟังก์ชันเซิร์ฟเวอร์แบบอะซิงโครนัสของ Next.js App Router อย่างเต็มรูปแบบ การเรียกใช้ getTranslations ฝั่งเซิร์ฟเวอร์จะถูกตรวจจับและตรวจสอบอย่างถูกต้อง

กฎที่สามารถกำหนดค่าได้

ปิดใช้งานหรือลดระดับกฎใน i18n.config.ts ตั้งค่ากฎเป็น "error", "warning" หรือ "off" ตามความต้องการของโครงการของคุณ

การกรองอัจฉริยะ

จะละเว้นชื่อคลาส CSS, URL, เส้นทางการนำเข้า และค่าคงที่ของนักพัฒนาโดยอัตโนมัติ แสดงเฉพาะผลลัพธ์ที่สามารถดำเนินการได้เท่านั้น

บันทึกการตรวจสอบแบบละเอียด

ความโปร่งใสอย่างลึกซึ้งด้วย --verbose สรุปขอบเขต, ข้อมูลการจับเวลา, และร่องรอยการแก้ไขชื่อพื้นที่สำหรับการดีบัก

รู้จักสุขภาพการแปลของคุณก่อนส่งมอบงาน

รัน better-i18n doctor หนึ่งครั้งเพื่อกำหนดค่าพื้นฐานของคุณ เพิ่มเข้าไปใน CI เพื่อไม่ให้ส่งการแปลที่ขาดหายไปอีก