i18ntk
Version:
i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.
806 lines • 254 kB
JSON
{
"meta": {
"version": "4.7.0",
"updated": "2026-07-07",
"lang": "th"
},
"common": {
"welcome": "ยินดีต้อนรับ",
"hello": "สวัสดี",
"goodbye": "ลาก่อน",
"yes": "ใช่",
"no": "เลขที่",
"save": "บันทึก",
"cancel": "ยกเลิก",
"delete": "ลบ",
"edit": "แก้ไข",
"loading": "กำลังโหลด...",
"offlineTitle": "คุณออฟไลน์อยู่",
"offlineMessage": "โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ",
"tryReconnect": "ลองเชื่อมต่อใหม่",
"logout": "ออกจากระบบ",
"login": "เข้าสู่ระบบ",
"amount": "จำนวน",
"success": "ความสำเร็จ",
"error": "ข้อผิดพลาด",
"warning": "คำเตือน",
"info": "ข้อมูล:",
"debug": "ดีบัก",
"progress": "ความคืบหน้า:",
"remaining": "ที่เหลืออยู่:",
"total": "ทั้งหมด:",
"completed": "7. สำเร็จลุล่วงไปด้วยดี!",
"missing": "หายไป",
"partial": "บางส่วน",
"sameAsSource": "เช่นเดียวกับแหล่งที่มา:",
"formatMismatch": "รูปแบบไม่ตรงกัน:",
"typeMismatch": "ประเภทไม่ตรงกัน:",
"structureMismatch": "โครงสร้างไม่ตรงกัน:",
"invalidOption": "ตัวเลือกไม่ถูกต้อง",
"separator": "==================================================",
"initializationFailed": "❌ การเริ่มต้นล้มเหลว: {error}",
"stackTrace": "การติดตามสแต็ก: {stack}",
"pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
"pressEnterToReturn": "กด Enter เพื่อกลับสู่เมนูหลัก...",
"stepCompleted": "ขั้นตอน'{stepName}' สมบูรณ์.",
"stepFailed": "ขั้นตอน'{stepName}' ล้มเหลว.",
"runningStep": "ขั้นตอนการวิ่ง: {stepName}",
"command": "สั่งการ: {command}",
"startingWorkflow": "กำลังเริ่มเวิร์กโฟลว์...",
"workflowCompleted": "ขั้นตอนการทำงานเสร็จสมบูรณ์",
"checkReports": "ตรวจสอบรายงานเพื่อดูรายละเอียด",
"errorExecutingCommand": "เกิดข้อผิดพลาดในการดำเนินการคำสั่ง: {error}",
"genericError": "❌ ข้อผิดพลาด: {error}",
"errors": {
"errors": "ข้อผิดพลาด:",
"genericError": "❌ ข้อผิดพลาด: {error}",
"initializationFailed": "❌ การเริ่มต้นล้มเหลว: {error}",
"initializationCancelled": "❌ การเริ่มต้นถูกยกเลิกโดยผู้ใช้",
"translationKeyNotFound": "ไม่พบคีย์การแปล: {key}",
"sourceDirectoryNotFound": "ไม่พบไดเรกทอรีต้นทาง: {directory}",
"configLoadingFailed": "การโหลดการกำหนดค่าล้มเหลว",
"invalidSourceDirectory": "ไดเรกทอรีต้นทางไม่ถูกต้อง: {directory}",
"securityViolation": "ตรวจพบการละเมิดความปลอดภัย",
"authenticationFailed": "การตรวจสอบสิทธิ์ล้มเหลว",
"sourceEqualsI18nWarn": "⚠️ sourceDir เท่ากับ i18nDir ({sourceDir}). ถอยกลับไป. {fallback} สำหรับการสแกนแหล่งที่มา"
},
"errorGeneratingStatusSummary": "เกิดข้อผิดพลาดในการสร้างสรุปสถานะ: {error}",
"errorRunningDebugTool": "เกิดข้อผิดพลาดในการเรียกใช้เครื่องมือแก้ไขข้อบกพร่อง '{displayName}': {error}",
"errorReadingDebugLogs": "เกิดข้อผิดพลาดในการอ่านบันทึกการแก้ไขข้อบกพร่อง: {error}",
"errorAnalyzingLogFile": "เกิดข้อผิดพลาดในการวิเคราะห์ไฟล์บันทึก: {error}",
"errorAnalyzingTranslationKeys": "เกิดข้อผิดพลาดในการวิเคราะห์คีย์การแปล: {error}",
"errorAnalyzingTranslationCompleteness": "เกิดข้อผิดพลาดในการวิเคราะห์ความสมบูรณ์ของการแปล: {error}",
"analyzingTranslationCompleteness": "กำลังวิเคราะห์ความสมบูรณ์ของการแปลในทุกภาษา...",
"i18nDirectoryNotFound": "⚠️ ไม่พบไดเรกทอรี i18n: {i18nDir}",
"translationCompletenessAnalysisFailed": "⚠️ การวิเคราะห์ความสมบูรณ์ของการแปลล้มเหลว: {error}",
"failedToAnalyzeLanguage": "❌วิเคราะห์ภาษาไม่สำเร็จ {language}: {error}",
"errorReadingI18nDirectory": "❌ เกิดข้อผิดพลาดในการอ่านไดเรกทอรี i18n:",
"languageCompletenessTitle": "📈 ความสมบูรณ์ในการแปลตามภาษา",
"errorAnalyzingTranslationFormat": "เกิดข้อผิดพลาดในการวิเคราะห์รูปแบบการแปล: {error}",
"errorAnalyzingTranslationType": "เกิดข้อผิดพลาดในการวิเคราะห์ประเภทการแปล: {error}",
"errorAnalyzingTranslationStructure": "เกิดข้อผิดพลาดในการวิเคราะห์โครงสร้างการแปล: {error}",
"errorAnalyzingTranslationFormatMismatch": "เกิดข้อผิดพลาดในการวิเคราะห์รูปแบบการแปลที่ไม่ตรงกัน: {error}",
"errorAnalyzingTranslationTypeMismatch": "เกิดข้อผิดพลาดในการวิเคราะห์ประเภทการแปลที่ไม่ตรงกัน: {error}",
"errorAnalyzingTranslationStructureMismatch": "เกิดข้อผิดพลาดในการวิเคราะห์โครงสร้างการแปลที่ไม่ตรงกัน: {error}",
"errorAnalyzingTranslationSameAsSource": "เกิดข้อผิดพลาดในการวิเคราะห์คำแปลเหมือนกับแหล่งที่มา: {error}",
"title": "สถานะ",
"nextStep1": "1. ตรวจสอบการวิเคราะห์การใช้งาน:",
"nextStep2": "2. ตรวจสอบการแปล:",
"nextStep3": "3. วิเคราะห์ความสมบูรณ์:",
"nextStep4": "4. แปลคำแปลที่ขาดหายไปให้สมบูรณ์:",
"nextStep5": "5. สร้างรายงานสรุป:",
"nextStep6": "6. ตรวจสอบและสรุปการแปล:",
"generating": "กำลังสร้างรายงานสรุป...",
"review": "กำลังตรวจสอบคำแปล...",
"finalizing": "กำลังแปลตอนจบ...",
"finalized": "สำเร็จแล้ว!",
"warnings": "คำเตือน:",
"completedKeys": "กุญแจที่เสร็จสมบูรณ์:",
"missingKeys": "คีย์ที่หายไป:",
"partialKeys": "คีย์บางส่วน:",
"home": "บ้าน",
"settings": "การตั้งค่า",
"startingSettings": "🎛️ กำลังเริ่มการตั้งค่า CLI...",
"confirm": "ยืนยัน",
"errorExiting": "เกิดข้อผิดพลาดขณะออก"
},
"errors": {
"invalidOption": "❌ ตัวเลือกไม่ถูกต้อง: {option}. โปรดลองอีกครั้ง",
"readlineClosed": "สตรีมอินพุตปิดอยู่ ทำงานในโหมดไม่โต้ตอบ",
"noPackageJson": "ไม่พบ package.json ไม่สามารถตรวจจับเฟรมเวิร์ก i18n อัตโนมัติได้",
"noI18nDir": "ไม่พบไดเร็กทอรี i18n ในรูทโปรเจ็กต์",
"noI18nConfig": "ไม่พบไฟล์การกำหนดค่า i18n ในรูทโปรเจ็กต์",
"errorReadingDebugLogs": "เกิดข้อผิดพลาดในการอ่านบันทึกการแก้ไขข้อบกพร่อง: {error}"
},
"scanner": {
"help_message": "การใช้งานเครื่องสแกนข้อความ I18n: โหนด i18ntk-scanner.js [ตัวเลือก] ตัวเลือก: --source-dir <dir> ไดเร็กทอรีต้นทางที่จะสแกน (ค่าเริ่มต้น: ./src) --output <file> ไฟล์เอาต์พุตสำหรับผลการสแกน (ค่าเริ่มต้น: ./i18ntk-scanner-report.json) --framework <name> กรอบการทำงานเพื่อกำหนดเป้าหมาย (react, vue, เชิงมุม, วานิลลา) --patterns <patterns> รูปแบบ regex ที่กำหนดเอง (คั่นด้วยเครื่องหมายจุลภาค) --include-tests รวมไฟล์ทดสอบในการสแกน --exclude-dirs <dirs> ไดเร็กทอรีที่จะยกเว้น (คั่นด้วยเครื่องหมายจุลภาค) --help แสดงความช่วยเหลือนี้ ตัวอย่าง: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-results.json",
"help_options": {
"source_dir": "ไดเรกทอรีต้นทางที่จะสแกนหาปัญหา i18n",
"output_dir": "ไดเร็กทอรีสำหรับรายงานการสแกนและผลลัพธ์",
"framework": "กรอบงานเป้าหมาย (react, vue, เชิงมุม, วานิลลา)",
"patterns": "รูปแบบ regex ที่กำหนดเองสำหรับการตรวจจับข้อความ",
"exclude": "รูปแบบไฟล์ที่จะแยกออกจากการสแกน",
"output_report": "สร้างรายงานการสแกนโดยละเอียด",
"min_length": "ความยาวข้อความขั้นต่ำที่ต้องพิจารณาในการแปล",
"max_length": "ความยาวข้อความสูงสุดที่ต้องพิจารณาในการแปล",
"include_tests": "รวมไฟล์ทดสอบในกระบวนการสแกน"
},
"starting": "🔍 การเริ่มเครื่องสแกนข้อความสำหรับเฟรมเวิร์ก: {framework}",
"sourceDirectory": "📁 กำลังสแกนไดเรกทอรี: {sourceDir}",
"frameworkDetected": "🎯 กรอบงานที่ตรวจพบ: {framework}",
"scanningFiles": "📊 การสแกน {fileCount} ไฟล์...",
"foundTexts": "⏩ พบแล้ว {textCount} ข้อความที่ต้องการการแปล",
"generatingReport": "📊 กำลังสร้างรายงานโดยละเอียด...",
"reportSaved": "💾 บันทึกรายงานการสแกนไปที่: {reportPath}",
"noTextsFound": "✅ ไม่พบข้อความภาษาอังกฤษแบบฮาร์ดโค้ด",
"scanComplete": "🎉 สแกนสำเร็จแล้ว!",
"analysisTitle": "🔍 การวิเคราะห์การสแกนการแปล",
"fileSummary": "📄 {file}: {count} พบข้อความ",
"textLocation": "📍 ไลน์ {line}: {text}",
"foundText": "พบ {count} อินสแตนซ์ข้อความฮาร์ดโค้ดที่เป็นไปได้",
"context": "⏩ บริบท: {context}",
"severity": "⚠️ความรุนแรง: {severity}",
"recommendation": "💡 คำแนะนำ: {recommendation}",
"welcome": {
"title": "🎯 ยินดีต้อนรับสู่เครื่องสแกนข้อความ!",
"description": "เครื่องมือนี้จะสแกนซอร์สโค้ดของคุณเพื่อหาข้อความภาษาอังกฤษแบบฮาร์ดโค้ดที่อาจต้องมีการแปล"
},
"frameworkPrompt": {
"title": "🎯 เลือกกรอบงาน",
"available": "เฟรมเวิร์กที่ใช้ได้: react, vue, เชิงมุม, vanilla",
"description": "ป้อนประเภทเฟรมเวิร์ก (หรือกด Enter เพื่อการตรวจจับอัตโนมัติ):",
"input": "กรอบ:"
},
"directoryPrompt": {
"title": "📁 เลือกไดเรกทอรีต้นทาง",
"current": "ไดเรกทอรีปัจจุบัน: {dir}",
"description": "ป้อนไดเร็กทอรีที่จะสแกน (หรือกด Enter เพื่อดูรายการปัจจุบัน):",
"input": "ไดเรกทอรี:"
},
"options": {
"includeTests": "รวมไฟล์ทดสอบ?",
"excludeDirs": "ไดเรกทอรีที่จะยกเว้น (คั่นด้วยเครื่องหมายจุลภาค):",
"customPatterns": "รูปแบบที่กำหนดเองที่จะสแกนหา (regex):"
},
"reportGenerated": "รายงานการสแกนที่สร้างขึ้น: {path}"
},
"fixer": {
"help_message": "การใช้งานผู้ให้บริการการแปล I18n: โหนด i18ntk-fixer.js [ตัวเลือก] ตัวเลือก: --source-dir <dir> ไดเรกทอรีต้นทางที่จะสแกน (ค่าเริ่มต้น: ./locales) --ภาษา <langs> รายการภาษาที่คั่นด้วยเครื่องหมายจุลภาคเพื่อแก้ไข --markers <markers> เครื่องหมายคั่นด้วยเครื่องหมายจุลภาคเพื่อถือเป็นข้อมูลที่ไม่ได้แปล --no-backup ข้ามการสร้างการสำรองข้อมูลอัตโนมัติ --help แสดงความช่วยเหลือนี้ ตัวอย่าง: โหนด i18ntk-fixer.js --ภาษา de,fr โหนด i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED โหนด i18ntk-fixer.js --no-backup",
"starting": "🚀 เริ่มการแก้ไขการแปลสำหรับภาษาต่างๆ: {languages}",
"sourceDirectory": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"sourceLanguage": "🔤 ภาษาต้นฉบับ: {sourceLanguage}",
"markers": "🏷️ เครื่องหมายที่ต้องแก้ไข: {markers}",
"scanningLanguage": "📊 การสแกน {language}...",
"noLanguages": "❌ไม่มีการระบุภาษาในการซ่อม",
"allComplete": "🎉 แปลทั้งหมดเรียบร้อยแล้ว!",
"fullReportSaved": "📊 รายงานฉบับเต็มบันทึกไว้ที่: {reportPath}",
"reviewReport": "โปรดตรวจสอบรายงานก่อนดำเนินการต่อ",
"backupCreated": "💾 สร้างการสำรองข้อมูลเรียบร้อยแล้ว",
"applyingFixes": "🔄 กำลังใช้การแก้ไข...",
"fixingComplete": "✅ แก้คำแปลเสร็จ!",
"operationCancelled": "❌ การดำเนินการถูกยกเลิกโดยผู้ใช้",
"analysisTitle": "🔍 การวิเคราะห์การแก้ไขการแปล",
"analysisSeparator": "==================================================",
"totalIssues": "ปัญหาทั้งหมดที่พบ: {totalIssues}",
"missingTranslations": "คำแปลที่ขาดหายไป: {missing}",
"placeholderTranslations": "การแปลตัวยึดตำแหน่ง: {placeholder}",
"noIssues": "✅ไม่พบปัญหาใดๆ การแปลทั้งหมดเสร็จสมบูรณ์แล้ว",
"detailedIssues": "📋 DETAILED ISSUES:",
"detailedSeparator": "--------------------------------------------------",
"filePath": "📄 {file} → {path}",
"missingKey": "❌ ขาดหายไป: {source} → {new}",
"placeholderKey": "⚠️ ตัวยึดตำแหน่ง: \"{target}\" → \"{new}\"",
"moreIssues": "... และ {count} ปัญหาเพิ่มเติม ตรวจสอบไฟล์รายงานเพื่อดูรายละเอียดทั้งหมด",
"confirmationTitle": "🤔 คุณต้องการดำเนินการแก้ไขเหล่านี้ต่อหรือไม่?",
"confirmationOptions": "ตัวเลือก:",
"optionYes": "y - ใช่ ใช้การแก้ไขทั้งหมด",
"optionNo": "n - ไม่ ยกเลิกการดำเนินการ",
"optionShow": "s - แสดงปัญหาโดยละเอียด",
"choicePrompt": "ทางเลือกของคุณ (มี/ไม่มี/วินาที):",
"nonInteractiveMode": "⚡ ตรวจพบโหมดที่ไม่โต้ตอบ - ใช้การแก้ไขโดยอัตโนมัติ...",
"reportGenerated": "📊 สร้างรายงานผู้ให้บริการแล้ว: {path}",
"summary": "สรุปผู้ให้บริการ:",
"welcome": {
"title": "🎯 ยินดีต้อนรับสู่ผู้ให้บริการแปล!",
"description": "เครื่องมือนี้จะช่วยคุณแก้ไขคำแปลและตัวยึดตำแหน่งที่เสียหายในไฟล์สถานที่ของคุณ"
},
"markerPrompt": {
"title": "🏷️ กำหนดค่าเครื่องหมายตัวยึดตำแหน่ง",
"description": "ป้อนเครื่องหมายที่ระบุข้อความที่ไม่ได้แปล (คั่นด้วยเครื่องหมายจุลภาค):",
"currentDefaults": "เครื่องหมายเริ่มต้น: {markers}",
"input": "เครื่องหมาย (หรือกด Enter เพื่อดูค่าเริ่มต้น):"
},
"languagePrompt": {
"title": "🌍 เลือกภาษาที่จะแก้ไข",
"available": "ภาษาที่ใช้ได้: {languages}",
"description": "ป้อนภาษาที่จะแก้ไข (คั่นด้วยเครื่องหมายจุลภาค) หรือกด Enter สำหรับทุกคน:",
"input": "ภาษา:",
"noLanguages": "ไม่พบภาษาที่จะแก้ไข"
},
"directoryPrompt": {
"title": "📁 เลือกไดเรกทอรี",
"current": "ไดเรกทอรีปัจจุบัน: {dir}",
"description": "ป้อนไดเร็กทอรีที่มีไฟล์โลแคลของคุณ (หรือกด Enter เพื่อดูไฟล์ปัจจุบัน):",
"input": "ไดเรกทอรี:"
},
"backupLocation": "ตำแหน่งสำรอง: {dir}",
"completed": "การแก้ไขเสร็จสมบูรณ์",
"creatingBackup": "กำลังสร้างข้อมูลสำรองใน {dir}...",
"dryRunMode": "โหมดดรายรัน: {mode}",
"error": "ตัวแก้ไขล้มเหลว: {error}",
"fixing": "การแก้ไข {language}...",
"foundLanguages": "พบ {count} ภาษา: {languages}",
"languageFixed": "{language}: ที่ตายตัว {fixed} คีย์ถูกข้ามไป {skipped}.",
"running": "กำลังเรียกใช้โปรแกรมแก้ไขการแปล...",
"totalFixed": "คงที่ทั้งหมด: {count}"
},
"autorun": {
"stepAnalyzeTranslations": "วิเคราะห์คำแปล",
"stepCompletedWithIcon": "✅ เสร็จสิ้น: {stepName}",
"stepValidateTranslations": "ตรวจสอบการแปล",
"stepRunning": "▶️สเต็ป {stepNumber}/{totalSteps}: {stepName}",
"separator": "==================================================",
"stepFailed": "❌ ล้มเหลว: {stepName}",
"errorLabel": "ข้อผิดพลาด",
"autoRunScriptTitle": "🧪 เวิร์กโฟลว์การทำงานอัตโนมัติ",
"usageTitle": "การใช้งาน",
"runAllSteps": "รัน: โหนด i18ntk-autorun.js",
"configureSettingsFirst": "กำหนดค่า: แฟล็ก i18ntk-config.json หรือ CLI",
"runSpecificSteps": "ใช้ --steps=1,3 หรือ --list เพื่อแสดงขั้นตอน",
"showHelp": "--help สำหรับข้อมูลเพิ่มเติม",
"examplesTitle": "ตัวอย่าง",
"configExample": "โหนด i18ntk-autorun.js --ui-ภาษา=zh",
"stepsExample1": "โหนด i18ntk-autorun.js --steps=analyze,validate",
"stepsExample2": "โหนด i18ntk-autorun.js --list",
"customSettingsConfiguration": "การตั้งค่าการทำงานอัตโนมัติแบบกำหนดเอง",
"availableSteps": "ขั้นตอนที่ใช้ได้",
"startingAutoRunWorkflow": "🚀 กำลังเริ่มเวิร์กโฟลว์การทำงานอัตโนมัติ...",
"workflowIncludesSteps": "ขั้นตอนการทำงานประกอบด้วย {count} ขั้นตอน:",
"missingRequiredFile": "ไฟล์ที่ต้องการหายไป: {file}",
"workflowStopped": "เวิร์กโฟลว์หยุดลงเนื่องจากความล้มเหลว",
"workflowCompleted": "🎉 ขั้นตอนการทำงานเสร็จสมบูรณ์!",
"successfulSteps": "ขั้นตอนที่สำเร็จ: {count}",
"failedSteps": "ขั้นตอนที่ล้มเหลว: {count}",
"stepInitializeProject": "เริ่มต้นโครงการ",
"stepCheckUsage": "ตรวจสอบการใช้งานคีย์",
"stepGenerateSummary": "สร้างรายงานสรุป",
"runInitializationFirst": "กรุณาเรียกใช้การเริ่มต้นก่อน",
"initializationCheckPassed": "ผ่านการตรวจสอบการเริ่มต้นแล้ว",
"runningStep": "ขั้นตอนการวิ่ง: {stepName}",
"commandLabel": "สั่งการ: {command}",
"stepCompletedWithTime": "ขั้นตอน'{stepName}' เสร็จสิ้นใน {duration}นางสาว",
"stepCompleted": "ขั้นตอน'{stepName}' สมบูรณ์.",
"stepFailedWithError": "ขั้นตอน'{stepName}' ล้มเหลวโดยมีข้อผิดพลาด: {error}",
"requiredStepFailed": "ขั้นตอนที่จำเป็นล้มเหลว กำลังหยุดเวิร์กโฟลว์",
"optionalStepFailed": "ขั้นตอนที่ไม่บังคับล้มเหลว กระบวนการทำงานอย่างต่อเนื่อง",
"stepRequired": "(ที่จำเป็น)",
"stepOptional": "(ไม่จำเป็น)",
"startingExecution": "กำลังเริ่มดำเนินการ...",
"pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
"runningSelectedSteps": "กำลังดำเนินการขั้นตอนที่เลือก...",
"invalidStepNumber": "หมายเลขขั้นตอนไม่ถูกต้อง: {stepNum}",
"executionReport": "รายงานการดำเนินการ:",
"requiredFailedSteps": "ขั้นตอนที่จำเป็นล้มเหลว: {count}",
"stepDetails": "รายละเอียดขั้นตอน:",
"reportSavedTo": "บันทึกรายงานไปที่: {path}",
"overallStatusSuccess": "SUCCESS",
"overallStatusFailed": "FAILED",
"overallStatus": "สถานะโดยรวม: {status}",
"pressEnterForDefaults": "กด Enter เพื่อใช้การตั้งค่าเริ่มต้นสำหรับข้อความแจ้งใดๆ",
"sourceDirPrompt": "ป้อนไดเร็กทอรีต้นทาง (ค่าเริ่มต้น: {default}):",
"sourceLangPrompt": "ป้อนภาษาต้นฉบับ (ค่าเริ่มต้น: {default}):",
"targetLangsPrompt": "ป้อนภาษาเป้าหมาย (คั่นด้วยเครื่องหมายจุลภาค ค่าเริ่มต้น: {default}):",
"translationMarkerPrompt": "ป้อนเครื่องหมายการแปล (ค่าเริ่มต้น: {default}):",
"outputDirPrompt": "ป้อนไดเรกทอรีผลลัพธ์สำหรับรายงาน (ค่าเริ่มต้น: {default}):",
"settingsUpdatedSuccessfully": "อัปเดตการตั้งค่าสำเร็จแล้ว!",
"errorConfiguringSettings": "เกิดข้อผิดพลาดในการกำหนดการตั้งค่า: {error}",
"configurationComplete": "การกำหนดค่าเสร็จสมบูรณ์",
"runAutoRunCommand": "ตอนนี้คุณสามารถรันคำสั่งทำงานอัตโนมัติได้แล้ว",
"configurationFailed": "การกำหนดค่าล้มเหลว: {error}",
"noValidStepNumbers": "ไม่ได้ระบุหมายเลขขั้นตอนที่ถูกต้อง",
"autoRunFailed": "การทำงานอัตโนมัติล้มเหลว: {error}",
"stepCompleteTranslations": "การแปลที่สมบูรณ์",
"stepAnalyzeSizing": "วิเคราะห์ขนาด",
"stepCompletedIcon": "✅",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] ขั้นตอน '{stepName}' วิ่ง...",
"stepFailedIcon": "❌",
"translationLoadWarning": "คำเตือน: ไม่สามารถโหลดได้ {lang} การแปล",
"configReadError": "เกิดข้อผิดพลาดในการอ่าน {file}"
},
"analyze": {
"help_message": "การใช้งานตัววิเคราะห์การแปล I18n: โหนด i18ntk-analyze.js [ตัวเลือก] ตัวเลือก: --source-dir <dir> ไดเร็กทอรีต้นทางที่จะสแกน (ค่าเริ่มต้น: ./src) --i18n-dir <dir> ไดเรกทอรี I18n (ค่าเริ่มต้น: ./src/locales) --output-report สร้างรายงานโดยละเอียด --output-dir <dir> ไดเร็กทอรีเอาต์พุตสำหรับรายงาน (ค่าเริ่มต้น: ./reports) --help แสดงวิธีใช้นี้ ตัวอย่าง: โหนด i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./analysis --output-report",
"source_directory": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"i18n_directory": "🌐 ไดเรกทอรี I18n: {i18nDir}",
"loading_translation_files": "📋 กำลังโหลดไฟล์แปล...",
"sourceDirectoryLabel": "📁 ไดเรกทอรีที่มา: {sourceDir}",
"sourceLanguageLabel": "🌍 ภาษาต้นฉบับ: {sourceLanguage}",
"strictModeLabel": "⚙️ โหมดเข้มงวด: {mode}",
"found_translation_files_count": "✅พบ {count} ไฟล์แปล",
"analyzing_translations": "🔍 กำลังวิเคราะห์คำแปล...",
"analysis_completed_successfully": "🎉 วิเคราะห์สำเร็จแล้ว!",
"analysis_results": "📊 ANALYSIS RESULTS",
"language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% ที่แปลแล้ว)",
"sample_missing_keys": "ตัวอย่างคีย์ที่หายไป:",
"missing_key": "- {key}",
"and_more_missing": "...และ {count} มากกว่า.",
"sample_unused_keys": "ตัวอย่างคีย์ที่ไม่ได้ใช้:",
"unused_key": "- {key}",
"and_more_unused": "...และ {count} มากกว่า.",
"recommendations": "📋 คำแนะนำ",
"add_missing_translations": "💡 เพิ่มคำแปลที่ขาดหายไปเพื่อปรับปรุงความครอบคลุม",
"remove_unused_translations": "💡 ลบคำแปลที่ไม่ได้ใช้ออกเพื่อให้โปรเจ็กต์ของคุณสะอาด",
"next_steps": "📋 NEXT STEPS",
"review_analysis_results": "1. ตรวจสอบผลการวิเคราะห์ในคอนโซลหรือรายงานที่สร้างขึ้น",
"run_with_output_report": "2. รันด้วย --output-report สำหรับรายงานโดยละเอียด",
"add_or_remove_translations": "3. เพิ่มคำแปลที่ขาดหายไปหรือลบคำแปลที่ไม่ได้ใช้",
"rerun_analysis": "4. ดำเนินการวิเคราะห์ซ้ำเพื่อตรวจสอบการปรับปรุง",
"analysis_summary": "📊 ANALYSIS SUMMARY",
"source_files_scanned": "ไฟล์ต้นฉบับที่สแกน: {fileCount}",
"translation_files_checked": "ตรวจสอบไฟล์การแปลแล้ว: {translationFileCount}",
"total_keys": "คีย์ทั้งหมด: {totalKeys}",
"translated_keys": "คีย์ที่แปลแล้ว: {translatedKeys}",
"missing_keys": "คีย์ที่หายไป: {missingKeys}",
"unused_keys": "คีย์ที่ไม่ได้ใช้: {unusedKeys}",
"translation_coverage": "ความครอบคลุมการแปล: {coverage}%",
"analysis_passed_for_language": "✅ผ่านการวิเคราะห์ {language}",
"analysis_failed_for_language": "❌การวิเคราะห์ล้มเหลวสำหรับ {language} ({missingKeys} หายไป, {unusedKeys} ไม่ได้ใช้)",
"starting": "🔍 กำลังเริ่มวิเคราะห์การแปล...",
"foundLanguages": "📋 พบแล้ว {count} ภาษาที่จะวิเคราะห์: {languages}",
"analyzing": "🔄 กำลังวิเคราะห์ {language}...",
"reportTitle": "📊 รายงานการวิเคราะห์การแปล",
"generated": "สร้าง: {timestamp}",
"status": "สถานะ: {translated}/{total} กุญแจ ({percentage}% ที่แปลแล้ว)",
"filesAnalyzed": "ไฟล์ที่วิเคราะห์: {analyzed}/{total}",
"keysNeedingTranslation": "คีย์ที่ต้องแปล: {count}",
"fileBreakdown": "📋 รายละเอียดไฟล์",
"error": "ข้อผิดพลาด",
"completed": "✅วิเคราะห์เสร็จแล้วสำหรับ {language}",
"progress": "📊 ความคืบหน้าโดยรวม: {translated}/{total} ภาษาที่ประมวลผล",
"reportSaved": "บันทึกรายงานแล้ว: {reportPath}",
"summary": "📊 ANALYSIS SUMMARY",
"finished": "✅ วิเคราะห์สำเร็จ!",
"statusFileMissing": "❌ไฟล์แปลหาย",
"sourceKeys": "📊 คีย์แหล่งที่มา: {count}",
"translation": "📊 การแปล: {translated}/{total} ({percentage}%)",
"structure": "🗂️ โครงสร้าง: {status}",
"consistent": "สม่ำเสมอ",
"inconsistent": "ไม่สอดคล้องกัน",
"missingKeys": "คีย์ที่หายไป: {count}",
"extraKeys": "กุญแจเสริม: {count}",
"issues": "⚠️ ปัญหาที่พบ: {count}",
"issueType": {
"not_translated": "ไม่ได้แปล: {count}",
"empty_value": "ค่าว่าง: {count}",
"partial_translation": "การแปลบางส่วน: {count}",
"format_mismatch": "รูปแบบไม่ตรงกัน: {count}",
"type_mismatch": "ประเภทไม่ตรงกัน: {count}",
"structure_mismatch": "โครงสร้างไม่ตรงกัน: {count}",
"same_as_source": "เช่นเดียวกับแหล่งที่มา: {count}"
},
"keysToTranslate": "📋 กุญแจในการแปล",
"key": "สำคัญ",
"english": "ภาษาอังกฤษ",
"needsTranslation": "ต้องการการแปล",
"andMoreKeys": "...และ {count} กุญแจเพิ่มเติม",
"noLanguages": "⚠️ ไม่พบภาษาเป้าหมาย",
"languageStats": "{language}: {percentage}% สมบูรณ์ ({translated}/{total} กุญแจ)",
"invalidReportFilePath": "เส้นทางไฟล์รายงานไม่ถูกต้อง",
"failedToWriteReportFile": "ไม่สามารถเขียนไฟล์รายงานอย่างปลอดภัย"
},
"complete": {
"configLoadedSuccessfully": "โหลดการกำหนดค่าเรียบร้อยแล้ว",
"configLoadingFailed": "การโหลดการกำหนดค่าล้มเหลว",
"sourceLanguageNotFound": "ไม่พบไดเร็กทอรีภาษาต้นฉบับ: {sourceLanguage}",
"couldNotParseTarget": "ไม่สามารถแยกวิเคราะห์ไฟล์เป้าหมาย: {file}",
"couldNotParseSource": "ไม่สามารถแยกวิเคราะห์ไฟล์ต้นฉบับ: {file}",
"reportGenerated": "สร้างรายงานแล้ว: {path}",
"generateReportPrompt": "คุณต้องการสร้างรายงานหรือไม่?",
"title": "🌍 การแปล I18NTK เสร็จสมบูรณ์",
"separator": "============================================================",
"sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"sourceLanguage": "🌐 ภาษาต้นฉบับ: {sourceLanguage}",
"dryRunMode": "🧪 โหมดดรายรัน - จะไม่มีการเปลี่ยนแปลงใดๆ",
"languages": "🌍 ภาษาที่ใช้ได้: {languages}",
"addingMissingKeys": "➕ การเพิ่มคีย์ที่หายไปให้กับไฟล์การแปล...",
"processing": "🔄 กำลังประมวลผล {language}...",
"addedKeys": "✅เข้าเพิ่ม {count} กุญแจหายไป",
"noChangesNeeded": "✅ไม่จำเป็นต้องเปลี่ยนแปลงใดๆ {language}",
"summaryTitle": "📊 สรุปผลสำเร็จ",
"totalChanges": "แปลก การเปลี่ยนแปลงทั้งหมด: {totalChanges}",
"languagesProcessed": "🌍 ภาษาที่ประมวลผล: {languagesProcessed}",
"missingKeysAdded": "➕ เพิ่มคีย์ที่หายไป: {missingKeysAdded}",
"nextStepsTitle": "📋 NEXT STEPS",
"nextStep1": "1. เรียกใช้การวิเคราะห์การใช้งาน:",
"nextStep2": "โหนด i18ntk-usage.js --output-report",
"nextStep3": "2. ตรวจสอบการแปล:",
"nextStep4": "โหนด i18ntk-validate.js",
"nextStep5": "3. วิเคราะห์รูปแบบ:",
"nextStep6": "โหนด i18ntk-analyze.js",
"allKeysAvailable": "🎉 คีย์การแปลทั้งหมดพร้อมใช้งานแล้ว!",
"runWithoutDryRun": "💡 ทำงานโดยไม่ต้อง --dry-run เพื่อใช้การเปลี่ยนแปลง",
"deletingOldReport": "🗑️ กำลังลบรายงานเก่า...",
"generatingFreshAnalysis": "📊 กำลังสร้างการวิเคราะห์การใช้งานใหม่...",
"couldNotGenerate": "❌ ไม่สามารถสร้างการวิเคราะห์การใช้งานได้",
"reportNotFound": "📋 ไม่พบรายงานการใช้งาน การใช้ปุ่มทั่วไป...",
"foundMissingKeys": "📋 พบแล้ว {count} คีย์หายไปจากการวิเคราะห์การใช้งาน",
"couldNotParse": "❌ ไม่สามารถแยกวิเคราะห์รายงานการใช้งานได้ การใช้ปุ่มทั่วไป...",
"errorDuringCompletion": "❌ ข้อผิดพลาดระหว่างดำเนินการเสร็จสิ้น: {error}",
"fatalError": "❌ ข้อผิดพลาดร้ายแรง: {error}",
"configurationValidationFailed": "การตรวจสอบการกำหนดค่าล้มเหลว: ไม่มีช่องที่ต้องกรอก"
},
"sizing": {
"separator": "================================================================================",
"lineSeparator": "--------------------------------------------------------------------------------",
"analysisStats": "{stats}",
"sourceDirectoryLabel": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"sourceLanguageLabel": "🌍 ภาษาต้นฉบับ: {sourceLanguage}",
"strictModeLabel": "⚙️ โหมดเข้มงวด: {mode}",
"invalidSourceDirectoryError": "เส้นทางไดเรกทอรีต้นทางไม่ถูกต้อง: {sourceDir}",
"sourceDirectoryNotFoundError": "ไม่พบไดเรกทอรีต้นทาง: {sourceDir}",
"invalidOutputDirectoryError": "เส้นทางไดเรกทอรีผลลัพธ์ไม่ถูกต้อง: {outputDir}",
"invalidReportFileError": "เส้นทางไฟล์รายงานไม่ถูกต้อง",
"problematic_keys": "คีย์ที่มีปัญหา: {problematicKeys}",
"problematicKeysLabel": "คีย์ที่มีปัญหา: {problematicKeys}",
"long_translations": "การแปลแบบยาว: {longTranslations}",
"failedToSaveReportError": "ไม่สามารถบันทึกรายงานอย่างปลอดภัย",
"invalidCsvFileError": "เส้นทางไฟล์ CSV ไม่ถูกต้อง",
"failedToSaveCsvError": "ไม่สามารถบันทึกรายงาน CSV อย่างปลอดภัย",
"fatalError": "❌ การวิเคราะห์ขนาดล้มเหลว: {error}",
"starting_i18n_sizing_analysis": "กำลังเริ่มการวิเคราะห์ขนาด i18n...",
"source_directory": "ไดเรกทอรีต้นทาง: {sourceDir}",
"found_languages": "ภาษาที่พบ: {languages}",
"analyzing_file_sizes": "กำลังวิเคราะห์ขนาดไฟล์...",
"analyzing_translation_content": "กำลังวิเคราะห์เนื้อหาการแปล...",
"generating_size_comparisons": "กำลังสร้างการเปรียบเทียบขนาด...",
"no_languages_found_for_comparison": "ไม่พบภาษาที่จะเปรียบเทียบ",
"sizing_analysis_results": "ผลการวิเคราะห์ขนาด I18n",
"file_sizes_title": "ขนาดไฟล์",
"file_sizes_header": "ขนาดภาษา(KB) บรรทัด อักขระ",
"file_size_row": "{lang} {sizeKB} {lines} {characters}",
"language_statistics_title": "สถิติภาษา",
"language_stats_header": "ปุ่มภาษา ตัวอักษร ความยาวเฉลี่ย ความยาวสูงสุด ว่าง ยาว",
"language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
"size_variations_title": "การเปลี่ยนแปลงขนาด",
"size_variations_header": "ภาษา Char Diff % Diff เป็นปัญหา",
"size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
"problematic_yes": "ใช่",
"problematic_no": "เลขที่",
"recommendations_title": "ข้อแนะนำ",
"recommendation_item": "{index}. {recommendation}",
"problematic_key_detail": "{index}. สำคัญ: '{key}' - รูปแบบต่างๆ: {variations}",
"generating_detailed_report": "กำลังสร้างรายงานโดยละเอียด...",
"keysHaveSignificantSizeVariations": "คีย์จะมีขนาดที่แตกต่างกันอย่างมาก",
"longTranslationsDetected": "${lang} มีการแปล ${data.longKeys} ยาวกว่า 100 ตัวอักษร - ลองแยกย่อย",
"longer": "อีกต่อไป",
"shorter": "สั้นลง",
"review_translations": "พิจารณาทบทวน {lang} การแปล - พวกเขาเป็น {percentageDifference}% {comparison} กว่าพื้นฐาน",
"report_saved_to": "บันทึกรายงานไปที่: {reportPath}",
"considerReviewingTranslations": "พิจารณาทบทวน ${lang} การแปล - ยาวกว่าพื้นฐาน ${data.percentageDifference}%",
"csv_report_saved_to": "รายงาน CSV บันทึกไปที่: {csvPath}",
"human_report_saved": "บันทึกรายงานที่สามารถอ่านได้: {reportPath}",
"folder_summary_title": "สรุปโฟลเดอร์",
"folder_summary_table_header": "ขนาดภาษา(KB) คีย์ ความยาวเฉลี่ย ตัวอักษรทั้งหมด",
"folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
"language_comparison_title": "การเปรียบเทียบภาษา",
"language_comparison_row": "{lang}: {diff} ตัวอักษร ({percent}%) {status}",
"summary_stats": "📊 สรุป: {totalLanguages} ภาษา {totalKeys} คีย์ - รายงานที่บันทึกไว้ใน {reportPath}",
"detailedKeysDescription": "แสดงการวิเคราะห์ระดับคีย์โดยละเอียดในคอนโซล",
"too_many_keys_warning": "⚠️ มีคีย์มากเกินไปที่จะแสดงในคอนโซล - ตรวจสอบไฟล์รายงานโดยละเอียดเพื่อการวิเคราะห์แบบเต็ม",
"no_translation_files_found": "ไม่พบไฟล์การแปล",
"analysis_completed": "วิเคราะห์เสร็จเมื่อ พ.ศ {duration}นางสาว",
"analysis_failed": "การวิเคราะห์ล้มเหลว: {errorMessage}",
"starting_analysis": "กำลังเริ่มการวิเคราะห์...",
"found_files": "พบ {count} ไฟล์",
"failed_to_parse_language_error": "แยกวิเคราะห์ไม่สำเร็จ {language} การแปล: {errorMessage}",
"recommendations": {
"keys_have_significant_size_variations": "คีย์จะมีขนาดที่แตกต่างกันอย่างมาก",
"consider_reviewing_translations": "พิจารณาทบทวน {lang} การแปล - พวกเขาเป็น {percentageDifference}% {comparison} กว่าพื้นฐาน",
"long_translations_detected": "{lang} มี {longKeys} แปลยาวกว่า. {threshold} ตัวละคร - ลองแยกย่อยพวกมันออก"
},
"detailed_key_analysis_title": "การวิเคราะห์คีย์โดยละเอียด",
"key_analysis_detail": "{lang}: {length} ตัวอักษร ({status}) - {translation}",
"key_analysis_header": "สำคัญ: {key}",
"status_empty": "ว่างเปล่า",
"status_long": "ยาว",
"status_ok": "ตกลง"
},
"usage": {
"help_message": "ตัววิเคราะห์การใช้งาน I18n การใช้งาน: โหนด i18ntk-usage.js [ตัวเลือก] ตัวเลือก: --source-dir <dir> ไดเร็กทอรีต้นทางที่จะสแกน (ค่าเริ่มต้น: ./src) --i18n-dir <dir> ไดเรกทอรี I18n (ค่าเริ่มต้น: ./src/locales) --output-report สร้างรายงานโดยละเอียด --output-dir <dir> ไดเร็กทอรีเอาต์พุตสำหรับรายงาน (ค่าเริ่มต้น: ./reports) --help แสดงวิธีใช้นี้ ตัวอย่าง: โหนด i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report",
"source_directory_thissourcedir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"translationCompletenessTitle": "🌍 ความสมบูรณ์ของการแปล:",
"i18n_directory_thisi18ndir": "🌐 ไดเรกทอรี I18n: {i18nDir}",
"failed_to_parse_filename_error": "⚠️ ไม่สามารถแยกวิเคราะห์ {fileName}: {errorMessage}",
"analyzing_source_files": "🔍 กำลังวิเคราะห์ไฟล์ต้นฉบับ...",
"found_files_in_source": "📂 พบแล้ว {numFiles} ไฟล์ในไดเร็กทอรีต้นทาง",
"found_thisusedkeyssize_unique_": "🎯 พบแล้ว {usedKeysSize} กุญแจที่ใช้ไม่ซ้ำใคร",
"total_key_usages_totalkeysfoun": "📊 การใช้งานคีย์ทั้งหมด: {totalKeysFound}",
"loading_available_translation_": "📋 กำลังโหลดคีย์การแปลที่มีอยู่...",
"found_thisavailablekeyssize_av": "✅พบ {availableKeysSize} กุญแจที่มีอยู่",
"foundTranslationFiles": "✅พบ {count} ไฟล์แปล",
"errorReadingI18nDirectory": "⚠️ เกิดข้อผิดพลาดในการอ่านไดเรกทอรี i18n: {error}",
"pressEnterToReturnToMenu": "⏩ กด Enter เพื่อกลับสู่เมนูหลัก...",
"notTranslatedKeysTotal": "⚠️ คีย์ที่ไม่ได้แปล: {total}",
"noSourceFilesFound": "⚠️ ไม่พบไฟล์ต้นฉบับในไดเร็กทอรีต้นทาง",
"reviewNotTranslatedKeys": "💡 รีวิวคีย์ที่ไม่ได้แปล",
"analysisCompletedSuccessfully": "🎉 วิเคราะห์สำเร็จแล้ว!",
"detectedSourceDirectory": "ไดเรกทอรีต้นทางที่ตรวจพบ: {sourceDir}",
"detectedI18nDirectory": "ตรวจพบไดเร็กทอรี i18n: {i18nDir}",
"fileInfo": "📄 {namespace}: {keys} กุญแจ",
"failedToAnalyzeUsage": "❌ ล้มเหลวในการวิเคราะห์การใช้งาน: {error}",
"failedToAnalyzeFile": "❌ ไม่สามารถวิเคราะห์ไฟล์: {error}",
"failedToExtractKeys": "❌ ไม่สามารถแยกคีย์ออกจาก {filePath}: {error}",
"analysisFailedError": "❌ การวิเคราะห์ล้มเหลว: {error}",
"analyzerInitialized": "เริ่มต้นตัววิเคราะห์แล้ว",
"analyzerInitFailed": "การเริ่มต้นตัววิเคราะห์ล้มเหลว: {error}",
"argsParsed": "อาร์กิวเมนต์แยกวิเคราะห์แล้ว",
"processedFiles": "ดำเนินการแล้ว {processedFiles} ของ {totalFiles} ไฟล์.",
"argsParseFailed": "การแยกวิเคราะห์อาร์กิวเมนต์ล้มเหลว: {error}",
"translationDiscoveryError": "ข้อผิดพลาดในการค้นพบคำแปล: {error}",
"fileTraversalError": "ข้อผิดพลาดในการข้ามไฟล์: {error}",
"sourceEqualsI18nWarn": "{reason}. การวิเคราะห์การใช้งานจะไม่สแกนไฟล์ภาษาเป็นซอร์สโค้ด",
"i18nEqualsSourceWarn": "⚠️ ไดเร็กทอรี I18n และไดเร็กทอรีต้นทางเหมือนกัน นี่อาจทำให้เกิดปัญหากับการวิเคราะห์",
"usageAnalysisFailed": "⚠️ การวิเคราะห์การใช้งานล้มเหลว: {error}",
"translationFileParseError": "⚠️ ข้อผิดพลาดในการแยกวิเคราะห์ไฟล์การแปล: {error}",
"translationKeysLoadError": "⚠️ ข้อผิดพลาดในการโหลดคีย์การแปล: {error}",
"languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% ที่แปลแล้ว)",
"missingKeysCount": "⚠️ กุญแจที่หายไป: {count}",
"analyzingTranslationCompleteness": "กำลังวิเคราะห์ความสมบูรณ์ของการแปล...",
"unusedKeysCount": "คีย์ที่ไม่ได้ใช้: {count}",
"usedKeysCount": "กุญแจที่ใช้: {count}",
"availableKeysCount": "กุญแจที่มีอยู่: {count}",
"analysisResults": "ผลการวิเคราะห์:",
"i18nDirectoryNotFound": "⚠️ ไม่พบไดเรกทอรี I18n กรุณาตรวจสอบเส้นทาง",
"sourceDirectoryNotFound": "⚠️ ไม่พบไดเรกทอรีต้นทาง: {dir}",
"checkUsage": {
"title": "🔍 I18NTK USAGE ANALYSIS",
"analyzing_source_files": "🔍 กำลังวิเคราะห์ไฟล์ต้นฉบับ...",
"source_directory_thissourcedir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"i18n_directory_thisi18ndir": "📁 ไดเรกทอรี i18n: {i18nDir}",
"found_files_in_source": "✅พบ {numFiles} ไฟล์ในไดเร็กทอรีต้นทาง",
"no_source_files_found": "⚠️ ไม่พบไฟล์ต้นฉบับในไดเร็กทอรีที่ระบุ",
"processedFiles": "📊 แปรรูปแล้ว {processedFiles} ของ {totalFiles} ไฟล์",
"failedToProcessFile": "❌ ดำเนินการไม่สำเร็จ",
"found_thisusedkeyssize_unique_": "🔍 พบแล้ว {usedKeysSize} กุญแจที่ใช้ไม่ซ้ำใคร",
"total_key_usages_totalkeysfoun": "📊 การใช้งานคีย์ทั้งหมด: {totalKeysFound}",
"loading_available_translation_": "📂 กำลังโหลดคีย์การแปลที่มีอยู่...",
"found_thisavailablekeyssize_av": "✅พบ {availableKeysSize} กุญแจที่มีอยู่",
"message": "กำลังวิเคราะห์การใช้คีย์การแปลทั่วทั้งโปรเจ็กต์ของคุณ...",
"usage_analysis_results": "📊 USAGE ANALYSIS RESULTS",
"source_files_scanned_thisfileu": "📁 ไฟล์ต้นฉบับที่สแกน: {fileUsageSize}",
"available_translation_keys_thi": "✅คีย์การแปลที่มีอยู่: {availableKeysSize}",
"used_translation_keys_thisused": "🔍 คีย์การแปลที่ใช้: {usedKeysSize}",
"dynamic_keys_detected_dynamick": "⚡ ตรวจพบปุ่มไดนามิก: {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "🗑️ กุญแจที่ไม่ได้ใช้: {unusedKeysLength}",
"missing_keys_missingkeyslength": "❌กุญแจหาย: {missingKeysLength}",
"translation_completeness_title": "📈 ความสมบูรณ์ของการแปล",
"language_completeness_stats": "{language}: {translated}/{total} กุญแจ ({percentage}%)",
"n_sample_unused_keys": "🗑️ ตัวอย่างคีย์ที่ไม่ได้ใช้ (5 ตัวแรก):",
"key": "🔑 {key}",
"and_unusedkeyslength_5_more": "... และ {count} คีย์ที่ไม่ได้ใช้มากขึ้น",
"n_sample_missing_keys": "❌ ตัวอย่างคีย์ที่หายไป (5 ตัวแรก):",
"and_missingkeyslength_5_more": "... และ {count} กุญแจที่หายไปมากขึ้น",
"n_generating_detailed_report": "📊 กำลังสร้างรายงานโดยละเอียด...",
"report_saved_reportpath": "📄 บันทึกรายงานแล้ว: {reportPath}",
"n_recommendations": "💡 คำแนะนำ:",
"consider_removing_unused_trans": "🗑️ พิจารณาลบคำแปลที่ไม่ได้ใช้เพื่อลดขนาดชุดรวม",
"add_missing_translation_keys_t": "➕ เพิ่มคีย์การแปลที่หายไปเพื่อรักษาความสอดคล้อง",
"review_dynamic_keys_manually_t": "🔍 ตรวจสอบไดนามิกคีย์ด้วยตนเอง (อาจใช้ได้)",
"all_translation_keys_are_prope": "✅ ใช้คีย์การแปลทั้งหมดอย่างถูกต้อง!",
"n_next_steps": "🎯 NEXT STEPS:",
"2_check_the_detailed_report_fo": "2. ตรวจสอบรายงานโดยละเอียดสำหรับปัญหาเฉพาะ",
"help_message": "ตัววิเคราะห์การใช้งาน I18n การใช้งาน: โหนด i18ntk-usage.js [ตัวเลือก] ตัวเลือก: --source-dir <dir> ไดเร็กทอรีต้นทางที่จะสแกน (ค่าเริ่มต้น: ./src) --i18n-dir <dir> ไดเรกทอรี I18n (ค่าเริ่มต้น: ./src/locales) --output-report สร้างรายงานโดยละเอียด --output-dir <dir> ไดเร็กทอรีเอาต์พุตสำหรับรายงาน (ค่าเริ่มต้น: ./reports) --help แสดงวิธีใช้นี้ ตัวอย่าง: โหนด i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report",
"1_review_the_analysis_results": "1. ตรวจสอบผลการวิเคราะห์ในคอนโซลหรือรายงานที่สร้างขึ้น",
"2_run_with_outputreport_for_de": "2. รันด้วย --output-report สำหรับรายงานโดยละเอียด",
"3_remove_unused_keys_or_add_mi": "3. ลบคีย์ที่ไม่ได้ใช้หรือเพิ่มคีย์ที่หายไปในซอร์สโค้ดของคุณ",
"4_rerun_analysis_to_verify_imp": "4. ดำเนินการวิเคราะห์ซ้ำเพื่อตรวจสอบการปรับปรุง",
"noSourceFilesFound": "ไม่พบไฟล์ต้นฉบับที่จะวิเคราะห์",
"i18nDirectoryNotFound": "ไม่พบไดเรกทอรี I18n: {i18nDir}",
"noTranslationLanguagesFound": "ไม่พบภาษาแปล",
"failedToAnalyzeFile": "วิเคราะห์ไฟล์ไม่สำเร็จ {filePath}: {error}",
"failedToAnalyzeLanguage": "วิเคราะห์ภาษาไม่สำเร็จ {language}: {error}",
"translationCompletenessAnalysisFailed": "การวิเคราะห์ความสมบูรณ์ของการแปลล้มเหลว: {error}",
"n": "\\n"
},
"complete": {
"configLoadedSuccessfully": "โหลดการกำหนดค่าเรียบร้อยแล้ว",
"configLoadingFailed": "การโหลดการกำหนดค่าล้มเหลว",
"title": "🌍 การแปล I18NTK เสร็จสมบูรณ์",
"separator": "============================================================",
"sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"sourceLanguage": "🌐 ภาษาต้นฉบับ: {sourceLanguage}",
"dryRunMode": "🧪 โหมดดรายรัน - จะไม่มีการเปลี่ยนแปลงใดๆ",
"languages": "🌍 ภาษาที่ใช้ได้: {languages}",
"addingMissingKeys": "➕ การเพิ่มคีย์ที่หายไปให้กับไฟล์การแปล...",
"processing": "🔄 กำลังประมวลผล {language}...",
"addedKeys": "✅เข้าเพิ่ม {count} กุญแจหายไป",
"changeDetails": "📝 {file}: {key}",
"andMore": "...และ {count} มากกว่า",
"noChangesNeeded": "✅ไม่จำเป็นต้องเปลี่ยนแปลงใดๆ {language}",
"summaryTitle": "📊 สรุปผลสำเร็จ",
"totalChanges": "แปลก การเปลี่ยนแปลงทั้งหมด: {totalChanges}",
"languagesProcessed": "🌍 ภาษาที่ประมวลผล: {languagesProcessed}",
"missingKeysAdded": "➕ เพิ่มคีย์ที่หายไป: {missingKeysAdded}",
"nextStepsTitle": "📋 NEXT STEPS",
"nextStep1": "1. เรียกใช้การวิเคราะห์การใช้งาน:",
"nextStep2": "โหนด i18ntk-usage.js --output-report",
"nextStep3": "2. ตรวจสอบการแปล:",
"nextStep4": "โหนด i18ntk-validate.js",
"nextStep5": "3. วิเคราะห์รูปแบบ:",
"nextStep6": "โหนด i18ntk-analyze.js",
"allKeysAvailable": "🎉 คีย์การแปลทั้งหมดพร้อมใช้งานแล้ว!",
"runWithoutDryRun": "💡 ทำงานโดยไม่ต้อง --dry-run เพื่อใช้การเปลี่ยนแปลง",
"deletingOldReport": "🗑️ กำลังลบรายงานเก่า...",
"generatingFreshAnalysis": "📊 กำลังสร้างการวิเคราะห์การใช้งานใหม่...",
"couldNotGenerate": "❌ ไม่สามารถสร้างการวิเคราะห์การใช้งานได้",
"reportNotFound": "📋 ไม่พบรายงานการใช้งาน การใช้ปุ่มทั่วไป...",
"foundMissingKeys": "📋 พบแล้ว {count} คีย์หายไปจากการวิเคราะห์การใช้งาน",
"couldNotParse": "❌ ไม่สามารถแยกวิเคราะห์รายงานการใช้งานได้ การใช้ปุ่มทั่วไป..."
},
"noTranslationLanguagesFound": "ไม่พบภาษาแปล",
"failedToAnalyzeLanguage": "ไม่สามารถวิเคราะห์ภาษาได้",
"translationCompletenessAnalysisFailed": "การวิเคราะห์ความสมบูรณ์ของการแปลล้มเหลว",
"failedToProcessFile": "ล้มเหลวในการประมวลผลไฟล์:",
"failedToSaveReport": "ไม่สามารถบันทึกรายงานการใช้งาน: {error}",
"i18nDirectoryDoesNotExist": "ไม่มีไดเร็กทอรี I18n: {dir}",
"reportSavedTo": "รายงานการใช้งานบันทึกไว้ที่: {reportPath}",
"sourceDirectoryDoesNotExist": "ไม่มีไดเรกทอรีต้นทาง: {dir}",
"noSourceDirectoryConfigured": "(ไม่มีการกำหนดค่า)"
},
"validate": {
"help_message": "การใช้งานเครื่องมือตรวจสอบการแปล I18n: โหนด i18ntk-validate.js [ตัวเลือก] ตัวเลือก: --source-dir <dir> ไดเร็กทอรีต้นทางที่จะสแกน (ค่าเริ่มต้น: ./src) --i18n-dir <dir> ไดเรกทอรี I18n (ค่าเริ่มต้น: ./src/locales) --output-report สร้างรายงานโดยละเอียด --output-dir <dir> ไดเร็กทอรีเอาต์พุตสำหรับรายงาน (ค่าเริ่มต้น: ./reports) --help แสดงวิธีใช้นี้ ตัวอย่าง: โหนด i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report",
"title": "🔍 เครื่องมือตรวจสอบการแปล I18n",
"message": "กำลังเริ่มกระบวนการตรวจสอบ...",
"sourceDirectory": "📁 ไดเรกทอรีต้นทาง: {dir}",
"sourceLanguage": "🌍 ภาษาต้นฉบับ: {sourceLanguage}",
"strictMode": "⚙️ โหมดเข้มงวด: {mode}",
"noTargetLanguages": "ไม่มีภาษาเป้าหมายที่กำหนดค่าไว้ ข้ามการตรวจสอบเป้าหมาย เพิ่มภาษาผ่าน \"i18ntk init -- languages=de,fr\"",
"validatingLanguages": "🌍 กำลังตรวจสอบภาษา: {langs}",
"validatingLanguage": "🔍 ภาษาในการตรวจสอบ: {lang}",
"filesCount": "📄 ไฟล์: {count}",
"keysCount": "🔑 กุญแจ: {count}",
"missingFilesCount": "📁 ไฟล์ที่หายไป: {count}",
"syntaxErrorsCount": "❌ ข้อผิดพลาดทางไวยากรณ์: {count}",
"translationPercentage": "🎯 แปล: {percentage}% ({translated}/{total} กุญแจ)",
"validationSummary": "📊 สรุปการตรวจสอบ",
"validation_failed": "❌ การตรวจสอบล้มเหลว: {error}",
"totalErrors": "❌ ข้อผิดพลาดทั้งหมด: {count}",
"totalWarnings": "⚠️ คำเตือนทั้งหมด: {count}",
"errorsSection": "❌ ERRORS",
"warningsSection": "⚠️ WARNINGS",
"recommendationsSection": "💡 คำแนะนำ",
"fixErrorsFirst": "1. แก้ไขข้อผิดพลาดทั้งหมดก่อน",
"resolveMissingFilesAndSyntaxErrors": "1. แก้ไขไฟล์ที่หายไปและข้อผิดพลาดทางไวยากรณ์",
"fixStructuralInconsistencies": "2. แก้ไขความไม่สอดคล้องของโครงสร้าง",
"completeMissingTranslations": "3. แปลคำแปลที่ขาดหายไปให้สมบูรณ์",
"rerunValidation": "4. รันการตรวจสอบอีกครั้งเพื่อตรวจสอบการแก้ไข",
"addressWarnings": "แจ้งเตือนเพื่อปรับปรุงคุณภาพ",
"reviewWarnings": "ตรวจสอบคำเตือนและแก้ไขตามความเหมาะสม",
"considerRunningWithStrict": "2. พิจารณาเรียกใช้ด้วยแฟล็ก --strict เพื่อการตรวจสอบที่เข้มงวดยิ่งขึ้น",
"allValidationsPassed": "🎉 ผ่านการตรวจสอบทั้งหมดแล้ว!",
"considerRunningUsageAnalysis": "พิจารณาเรียกใช้การวิเคราะห์การใช้งาน: node i18ntk-usage.js",
"deletedOldReport": "🗑️ ลบรายงานการตรวจสอบเก่าแล้ว",
"sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
"i18nDir": "🌐 ไดเรกทอรี I18n: {i18nDir}",
"loadingTranslationFiles": "📋 กำลังโหลดไฟล์แปล...",
"foundTranslationFilesCount": "✅พบ {count} ไฟล์แปล",
"analyzingTranslations": "🔍 กำลังวิเคราะห์คำแปล...",
"validationCompletedSuccessfully": "🎉 การตรวจสอบความถูกต้องเสร็จสมบูรณ์แล้ว!",
"validationErrorsFound": "⚠️ พบข้อผิดพลาดในการตรวจสอบ: {count}",
"validationWarningsFound": "⚠️ พบคำเตือนการตรวจสอบความถูกต้อง: {count}",
"validationPassed": "✅ผ่านการตรวจสอบแล้วไม่มีข้อผิดพลาด",
"validationFailed": "การตรวจสอบความถูกต้องล้มเหลว: {error}",
"startingValidationProcess": "🔍 กำลังเริ่มกระบวนการตรวจสอบ...",
"validationProcessCompletedSuccessfully": "✅ กระบวนการตรวจสอบเสร็จสมบูรณ์เรียบร้อยแล้ว",
"stackTrace": "การติดตามสแต็ก: {stack}",
"authenticationFailed": "❌ การรับรองความถูกต้องล้มเหลว การเข้าถึงถูกปฏิเสธ",
"fatalValidationError": "❌ ข้อผิดพลาดในการตรวจสอบความถูกต้องร้ายแรง: {error}",
"configAccess": "การเข้าถึงการกำหนดค่าเพื่อตรวจสอบความถูกต้อง",
"configValidated": "ตรวจสอบการกำหนดค่าสำเร็จแล้ว",
"configError": "ข้อผิดพลาดในการกำหนดค่า: {error}",
"validatorInit": "กำลังเริ่มต้นเครื่องมือตรวจสอบ I18n",
"validatorInitialized": "เริ่มต้นเครื่องมือตรวจสอบ I18n สำเร็จแล้ว",
"validatorInitError": "ข้อผิดพลาดในการเริ่มต้นตัวตรวจสอบความถูกต้อง: {error}",
"argsParsing": "การแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง",
"argsParsed": "อาร์กิวเมนต์บรรทัดคำสั่งแยกวิเคราะห์สำเร็จ",
"argsParseError": "ข้อผิดพลาดในการแยกวิเคราะห์อาร์กิวเมนต์: {error}",
"languagesScan": "กำลังสแกนภาษาที่ใช้ได้",
"languagesFound": "พบ {count} ภาษา",
"languagesScanError": "ข้อผิดพลาดในการสแกนภาษา: {error}",
"filesScan": "พบ {count} ไฟล์ใน {language}",
"filesScanError": "ข้อผิดพลาดในการสแกนไฟล์: {error}",
"jsonValidated": "ตรวจสอบไวยากรณ์ JSON แล้ว: {filePath}",
"jsonValidationError": "ข้อผิดพลาดในการตรวจสอบ JSON: {error}",
"languageValidation": "กำลังตรวจสอบภาษา: {language}",
"languageValidationError": "ข้อผิดพลาดในการตรวจสอบภาษา: {error}",
"fileDeleted": "ลบไฟล์แล้ว",
"runStarted": "กำลังเริ่มดำเนินการตรวจสอบความถูกต้อง",
"runCompleted": "การตรวจสอบความถูกต้องเสร็จสมบูรณ์แล้ว",
"runError": "การตรวจสอบความถูกต้องล้มเหลว: {error}",
"scriptExecution": "การดำเนินการสคริปต์",
"validationCompleted": "การตรวจสอบความถูกต้องเสร็จสมบูรณ์",
"validationError": "ข้อผิดพลาดในการตรวจสอบ: {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 ภาษา: {language}",
"validationResults": "📊 ผลการตรวจสอบ",
"noErrors": "✅ไม่พบข้อผิดพลาด",
"noWarnings": "✅ไม่พบคำเตือน",
"summaryHeader": "📋 OVERALL SUMMARY",
"progressIndicator": "⏳ กำลังประมวลผล...",
"completedIndicator": "✅ จบ.",
"errorIndicator": "❌เกิดข้อผิดพลาด",
"warningIndicator": "⚠️คำเตือน",
"infoIndicator": "ℹ️ข้อมูล",
"sourceDirNotConfigured": "ไม่ได้กำหนดค่าไดเรกทอรีต้นทาง",
"sourceLanguageNotConfigured": "ไม่ได้กำหนดค่าภาษาต้นฉบับ",
"translationFunctionNotInitialized": "ฟังก์ชั่นการแปลไม่ได้เริ่มต้นอย่างถูกต้อง",
"sourceLanguageDirectoryNotFound": "ไม่พบไดเรกทอรีภาษาต้นฉบับ",
"specifiedLanguageNotFound": "ไม่พบภาษาที่ระบุ",
"noJsonFilesFound": "ไม่พบไฟล์ JSON ในไดเรกทอรีต้นทาง: {sourceDir}",
"i18nDirectoryNotFound": "ไม่พบไดเรกทอรี I18n: {i18nDir}",
"invalidDirectoryPaths": "ตรวจพบเส้นทางไดเรกทอรีที่ไม่ถูกต้อง",
"invalidSampleFilePath": "เส้นทางไฟล์ตัวอย่างไม่ถูกต้อง",
"failedToCreateSampleTranslationFile": "ไม่สามารถสร้างไฟล์การแปลตัวอย่างได้",
"invalidFilePathDetected": "ตรวจพบเส้นทางไฟล์ไม่ถูกต้อง",
"failedToWriteFile": "ไม่สามารถเขียนไฟล์: {filePath}",
"invalidSourceDirectory": "ไดเรกทอรีต้นทางไม่ถูกต้อง: {sourceDir}",
"invalidSourceLanguageDirectory": "ไดเรกทอรีภาษาต้นฉบับไม่ถูกต้อง: {sourceDir}"
},
"adminCli": {
"setupPinProtectionTitle": "🔐 การตั้งค่าการป้องกัน PIN ของผู้ดูแลระบบ",
"setupPinProtectionDescription": "ซึ่งจะต้องใช้ PIN 4-6 หลักสำหรับการดำเนินการด้านผู้ดูแลระบบ",
"enablePinProtectionPrompt": "คุณต้องการเปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบหรือไม่",
"setupCancelled": "การตั้งค่าการป้องกัน PIN ของผู้ดูแลระบบถูกยกเลิก",
"enterPinPrompt": "ป้อน PIN 4-6 หลัก:",
"pinFormatError": "❌ PIN ต้องเป็นตัวเลข 4-6 หลัก โปรดลองอีกครั้ง",
"confirmPinPrompt": "ยืนยันรหัส PIN:",
"pinMismatchError": "❌ PIN ไม่ตรงกัน โปรดลองอีกครั้ง",
"pinProtectionEnabledSuccess": "✅ เปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบเรียบร้อยแล้ว!",
"pinRecoveryWarning": "⚠️ จำ PIN ของคุณ - ไม่สามารถกู้คืนได้หากสูญหาย",
"setupPinProtectionFailed": "❌ ไม่สามารถตั้งค่าการป้องกัน PIN ของผู้ดูแลระบบได้",
"errorSettingUpPin": "❌ เกิดข้อผิดพลาดในการตั้งค่า PIN ผู้ดูแลระบบ: {message}",
"authRequiredForOperation": "🔐 ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบสำหรับ: {operation}",
"invalidPinFormat": "❌ รูปแบบ PIN ไม่ถูกต้อง PIN ต้องเป็นตัวเลข 4-6 หลัก",
"authenticationSuccess": "✅ รับรองความถูกต้องสำเร็จ!",
"invalidPinAttemptsRemaining": "❌ PIN ไม่ถูกต้อง {remaining} ความพยายามที่เหลืออยู่",
"authenticationFailedAccessDenied": "❌ การรับรองความถูกต้องล้มเหลว การเข้าถึงถูกปฏิเสธ",
"authenticationError": "❌ ข้อผิดพลาดในการรับรองความถูกต้อง: {message}",
"pinProtectionNotEnabled": "การป้องกัน PIN ของผู้ดูแลระบบไม่ได้เปิดใช้งานอยู่ในขณะนี้",
"disablingPinProtectionTitle": "🔓 ปิดการใช้งานการป้องกัน PIN ของผู้ดูแลระบบ",
"confirmDisablePinProtection": "คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบ",
"operationCancelled": "การดำเนินการถูกยกเลิก",
"pinProtectionDisabledSuccess": "✅ การป้องกัน PIN ของผู้ดูแลระบบถูกปิดใช้งาน",
"disablePinProtectionFailed": "❌ ไม่สามารถปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบได้",
"errorDisablingPinProtection": "❌ เกิดข้อผิดพลาดในการปิดใช้งานการป้องกันผู้ดูแลระบบ: {message}",
"adminProtectionStatusTitle": "🔐 สถานะการคุ้มครองผู้ดูแลระบบ",
"statusEnabled": "สถานะ: ✅เปิดใช้งานแล้ว",
"protectionDetails": "การป้องกัน: ต้องใช้ PIN 4-6 หลักสำหรับการดำเนินงานของผู้ดูแลระบบ",
"lockoutDetails": "การล็อก: ล้มเหลว 3 ครั้ง = การล็อก 15 นาที",
"statusDisabled": "สถานะ: ❌ ปิดการใช้งาน",
"noAuthRequired": "การป้องกัน: ไม่จำเป็นต้องมีการรับรองความถูกต้อง",
"unprotectedRisk": "ความเสี่ยง: การดำเนินการด้านการบริหารไม่มีการป้องกัน",
"errorCheckingAdminStatus": "❌ เกิดข้อผิดพลาดในการตรวจสอบสถานะผู้ดูแลระบบ: {message}",
"authRequired": "🔐 ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบ",
"invalidPin": "❌ PIN ไม่ถูกต้อง",
"authSuccess": "✅ รับรองความถูกต้องสำเร็จ!",
"adminPinSetupCli": "admin_pin_setup_cli",
"adminAuthFailedCli": "admin_auth_failed_cli",
"adminAuthDisabledCli": "admin_auth_disabled_cli",
"protectedAccess": "การเข้าถึงที่มีการป้องกัน: ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบสำหรับการดำเนินการที่มีความละเอียดอ่อน",
"enterPin": "ป้อน PIN ของผู้ดูแลระบบ:",
"accessGranted": "ให้สิทธิ์การเข้าถึงแล้ว"
},
"adminPin": {
"setup_title": "🔐 การตั้งค่า PIN ผู้ดูแลระบบ",
"setup_separator": "============================================================",
"setup_description": "สร้าง PIN 4-6 หลักสำหรับผู้ดูแลระบบในการเข้าถึงการตั้งค่าที่ละเอียดอ่อน",
"required_for_title": "PIN นี้จำเป็นสำหรับ:",
"required_for_1": "• การเปลี่ยนการตั้งค่าความปลอดภัย",
"required_for_2": "• การปรับเปลี่ยนการกำหนดค่าขั้นสูง",
"required_for_3": "• การเข้าถึงเครื่องมือแก้ไขข้อบกพร่อง",
"required_for_4": "• การรีเซ็ตการตั้งค่า",
"setup_note": "💡 หมายเหตุ: คุณจะเห็นเครื่องหมายดอกจัน (*) ขณะที่พิมพ์ - นี่เป็นเพียงการปิดบังอักขระ",
"setup_digits_only": "ยอมรับเฉพาะตัวเลข 0-9 เท่านั้นที่เป็นตัวเลข PIN",
"invalid_pin_length": "❌ PIN ไม่ถูกต้อง ต้องเป็นตัวเลข 4-6 หลัก (ตัวเลข 0-9 เท่านั้น)",
"invalid_pin_example": "ตัวอย่าง: 1234 หรือ 567890",
"pins_do_not_match": "❌ PIN ไม่ตรงกัน",
"setup_s