i18ntk 4.7.0 → 4.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/README.md +15 -4
  3. package/main/i18ntk-ui.js +35 -30
  4. package/main/i18ntk-usage.js +2 -2
  5. package/main/i18ntk-validate.js +1 -1
  6. package/main/manage/commands/ValidateCommand.js +1 -1
  7. package/main/manage/index.js +52 -47
  8. package/main/manage/managers/LanguageMenu.js +3 -1
  9. package/main/manage/services/ConfigurationService.js +1 -1
  10. package/main/manage/services/FrameworkDetectionService.js +1 -1
  11. package/main/manage/services/UsageService.js +2 -2
  12. package/package.json +11 -7
  13. package/settings/settings-manager.js +19 -3
  14. package/ui-locales/ar.json +2636 -0
  15. package/ui-locales/cs.json +2636 -0
  16. package/ui-locales/de.json +17 -1
  17. package/ui-locales/el.json +2636 -0
  18. package/ui-locales/en.json +17 -1
  19. package/ui-locales/es.json +17 -1
  20. package/ui-locales/fr.json +17 -1
  21. package/ui-locales/he.json +2636 -0
  22. package/ui-locales/hi.json +2636 -0
  23. package/ui-locales/hu.json +2636 -0
  24. package/ui-locales/it.json +2636 -0
  25. package/ui-locales/ja.json +17 -1
  26. package/ui-locales/ko.json +2636 -0
  27. package/ui-locales/nl.json +2636 -0
  28. package/ui-locales/pl.json +2636 -0
  29. package/ui-locales/pt.json +2636 -0
  30. package/ui-locales/ru.json +17 -1
  31. package/ui-locales/sv.json +2636 -0
  32. package/ui-locales/th.json +2636 -0
  33. package/ui-locales/tr.json +2636 -0
  34. package/ui-locales/uk.json +2636 -0
  35. package/ui-locales/vi.json +2636 -0
  36. package/ui-locales/zh.json +17 -1
  37. package/utils/config-helper.js +2 -2
  38. package/utils/config-manager.js +3 -4
  39. package/utils/env-manager.js +1 -1
  40. package/utils/locale-optimizer.js +1 -1
@@ -0,0 +1,2636 @@
1
+ {
2
+ "meta": {
3
+ "version": "4.7.0",
4
+ "updated": "2026-07-07",
5
+ "lang": "th"
6
+ },
7
+ "common": {
8
+ "welcome": "ยินดีต้อนรับ",
9
+ "hello": "สวัสดี",
10
+ "goodbye": "ลาก่อน",
11
+ "yes": "ใช่",
12
+ "no": "เลขที่",
13
+ "save": "บันทึก",
14
+ "cancel": "ยกเลิก",
15
+ "delete": "ลบ",
16
+ "edit": "แก้ไข",
17
+ "loading": "กำลังโหลด...",
18
+ "offlineTitle": "คุณออฟไลน์อยู่",
19
+ "offlineMessage": "โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ",
20
+ "tryReconnect": "ลองเชื่อมต่อใหม่",
21
+ "logout": "ออกจากระบบ",
22
+ "login": "เข้าสู่ระบบ",
23
+ "amount": "จำนวน",
24
+ "success": "ความสำเร็จ",
25
+ "error": "ข้อผิดพลาด",
26
+ "warning": "คำเตือน",
27
+ "info": "ข้อมูล:",
28
+ "debug": "ดีบัก",
29
+ "progress": "ความคืบหน้า:",
30
+ "remaining": "ที่เหลืออยู่:",
31
+ "total": "ทั้งหมด:",
32
+ "completed": "7. สำเร็จลุล่วงไปด้วยดี!",
33
+ "missing": "หายไป",
34
+ "partial": "บางส่วน",
35
+ "sameAsSource": "เช่นเดียวกับแหล่งที่มา:",
36
+ "formatMismatch": "รูปแบบไม่ตรงกัน:",
37
+ "typeMismatch": "ประเภทไม่ตรงกัน:",
38
+ "structureMismatch": "โครงสร้างไม่ตรงกัน:",
39
+ "invalidOption": "ตัวเลือกไม่ถูกต้อง",
40
+ "separator": "==================================================",
41
+ "initializationFailed": "❌ การเริ่มต้นล้มเหลว: {error}",
42
+ "stackTrace": "การติดตามสแต็ก: {stack}",
43
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
44
+ "pressEnterToReturn": "กด Enter เพื่อกลับสู่เมนูหลัก...",
45
+ "stepCompleted": "ขั้นตอน'{stepName}' สมบูรณ์.",
46
+ "stepFailed": "ขั้นตอน'{stepName}' ล้มเหลว.",
47
+ "runningStep": "ขั้นตอนการวิ่ง: {stepName}",
48
+ "command": "สั่งการ: {command}",
49
+ "startingWorkflow": "กำลังเริ่มเวิร์กโฟลว์...",
50
+ "workflowCompleted": "ขั้นตอนการทำงานเสร็จสมบูรณ์",
51
+ "checkReports": "ตรวจสอบรายงานเพื่อดูรายละเอียด",
52
+ "errorExecutingCommand": "เกิดข้อผิดพลาดในการดำเนินการคำสั่ง: {error}",
53
+ "genericError": "❌ ข้อผิดพลาด: {error}",
54
+ "errors": {
55
+ "errors": "ข้อผิดพลาด:",
56
+ "genericError": "❌ ข้อผิดพลาด: {error}",
57
+ "initializationFailed": "❌ การเริ่มต้นล้มเหลว: {error}",
58
+ "initializationCancelled": "❌ การเริ่มต้นถูกยกเลิกโดยผู้ใช้",
59
+ "translationKeyNotFound": "ไม่พบคีย์การแปล: {key}",
60
+ "sourceDirectoryNotFound": "ไม่พบไดเรกทอรีต้นทาง: {directory}",
61
+ "configLoadingFailed": "การโหลดการกำหนดค่าล้มเหลว",
62
+ "invalidSourceDirectory": "ไดเรกทอรีต้นทางไม่ถูกต้อง: {directory}",
63
+ "securityViolation": "ตรวจพบการละเมิดความปลอดภัย",
64
+ "authenticationFailed": "การตรวจสอบสิทธิ์ล้มเหลว",
65
+ "sourceEqualsI18nWarn": "⚠️ sourceDir เท่ากับ i18nDir ({sourceDir}). ถอยกลับไป. {fallback} สำหรับการสแกนแหล่งที่มา"
66
+ },
67
+ "errorGeneratingStatusSummary": "เกิดข้อผิดพลาดในการสร้างสรุปสถานะ: {error}",
68
+ "errorRunningDebugTool": "เกิดข้อผิดพลาดในการเรียกใช้เครื่องมือแก้ไขข้อบกพร่อง '{displayName}': {error}",
69
+ "errorReadingDebugLogs": "เกิดข้อผิดพลาดในการอ่านบันทึกการแก้ไขข้อบกพร่อง: {error}",
70
+ "errorAnalyzingLogFile": "เกิดข้อผิดพลาดในการวิเคราะห์ไฟล์บันทึก: {error}",
71
+ "errorAnalyzingTranslationKeys": "เกิดข้อผิดพลาดในการวิเคราะห์คีย์การแปล: {error}",
72
+ "errorAnalyzingTranslationCompleteness": "เกิดข้อผิดพลาดในการวิเคราะห์ความสมบูรณ์ของการแปล: {error}",
73
+ "analyzingTranslationCompleteness": "กำลังวิเคราะห์ความสมบูรณ์ของการแปลในทุกภาษา...",
74
+ "i18nDirectoryNotFound": "⚠️ ไม่พบไดเรกทอรี i18n: {i18nDir}",
75
+ "translationCompletenessAnalysisFailed": "⚠️ การวิเคราะห์ความสมบูรณ์ของการแปลล้มเหลว: {error}",
76
+ "failedToAnalyzeLanguage": "❌วิเคราะห์ภาษาไม่สำเร็จ {language}: {error}",
77
+ "errorReadingI18nDirectory": "❌ เกิดข้อผิดพลาดในการอ่านไดเรกทอรี i18n:",
78
+ "languageCompletenessTitle": "📈 ความสมบูรณ์ในการแปลตามภาษา",
79
+ "errorAnalyzingTranslationFormat": "เกิดข้อผิดพลาดในการวิเคราะห์รูปแบบการแปล: {error}",
80
+ "errorAnalyzingTranslationType": "เกิดข้อผิดพลาดในการวิเคราะห์ประเภทการแปล: {error}",
81
+ "errorAnalyzingTranslationStructure": "เกิดข้อผิดพลาดในการวิเคราะห์โครงสร้างการแปล: {error}",
82
+ "errorAnalyzingTranslationFormatMismatch": "เกิดข้อผิดพลาดในการวิเคราะห์รูปแบบการแปลที่ไม่ตรงกัน: {error}",
83
+ "errorAnalyzingTranslationTypeMismatch": "เกิดข้อผิดพลาดในการวิเคราะห์ประเภทการแปลที่ไม่ตรงกัน: {error}",
84
+ "errorAnalyzingTranslationStructureMismatch": "เกิดข้อผิดพลาดในการวิเคราะห์โครงสร้างการแปลที่ไม่ตรงกัน: {error}",
85
+ "errorAnalyzingTranslationSameAsSource": "เกิดข้อผิดพลาดในการวิเคราะห์คำแปลเหมือนกับแหล่งที่มา: {error}",
86
+ "title": "สถานะ",
87
+ "nextStep1": "1. ตรวจสอบการวิเคราะห์การใช้งาน:",
88
+ "nextStep2": "2. ตรวจสอบการแปล:",
89
+ "nextStep3": "3. วิเคราะห์ความสมบูรณ์:",
90
+ "nextStep4": "4. แปลคำแปลที่ขาดหายไปให้สมบูรณ์:",
91
+ "nextStep5": "5. สร้างรายงานสรุป:",
92
+ "nextStep6": "6. ตรวจสอบและสรุปการแปล:",
93
+ "generating": "กำลังสร้างรายงานสรุป...",
94
+ "review": "กำลังตรวจสอบคำแปล...",
95
+ "finalizing": "กำลังแปลตอนจบ...",
96
+ "finalized": "สำเร็จแล้ว!",
97
+ "warnings": "คำเตือน:",
98
+ "completedKeys": "กุญแจที่เสร็จสมบูรณ์:",
99
+ "missingKeys": "คีย์ที่หายไป:",
100
+ "partialKeys": "คีย์บางส่วน:",
101
+ "home": "บ้าน",
102
+ "settings": "การตั้งค่า",
103
+ "startingSettings": "🎛️ กำลังเริ่มการตั้งค่า CLI...",
104
+ "confirm": "ยืนยัน",
105
+ "errorExiting": "เกิดข้อผิดพลาดขณะออก"
106
+ },
107
+ "errors": {
108
+ "invalidOption": "❌ ตัวเลือกไม่ถูกต้อง: {option}. โปรดลองอีกครั้ง",
109
+ "readlineClosed": "สตรีมอินพุตปิดอยู่ ทำงานในโหมดไม่โต้ตอบ",
110
+ "noPackageJson": "ไม่พบ package.json ไม่สามารถตรวจจับเฟรมเวิร์ก i18n อัตโนมัติได้",
111
+ "noI18nDir": "ไม่พบไดเร็กทอรี i18n ในรูทโปรเจ็กต์",
112
+ "noI18nConfig": "ไม่พบไฟล์การกำหนดค่า i18n ในรูทโปรเจ็กต์",
113
+ "errorReadingDebugLogs": "เกิดข้อผิดพลาดในการอ่านบันทึกการแก้ไขข้อบกพร่อง: {error}"
114
+ },
115
+ "scanner": {
116
+ "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",
117
+ "help_options": {
118
+ "source_dir": "ไดเรกทอรีต้นทางที่จะสแกนหาปัญหา i18n",
119
+ "output_dir": "ไดเร็กทอรีสำหรับรายงานการสแกนและผลลัพธ์",
120
+ "framework": "กรอบงานเป้าหมาย (react, vue, เชิงมุม, วานิลลา)",
121
+ "patterns": "รูปแบบ regex ที่กำหนดเองสำหรับการตรวจจับข้อความ",
122
+ "exclude": "รูปแบบไฟล์ที่จะแยกออกจากการสแกน",
123
+ "output_report": "สร้างรายงานการสแกนโดยละเอียด",
124
+ "min_length": "ความยาวข้อความขั้นต่ำที่ต้องพิจารณาในการแปล",
125
+ "max_length": "ความยาวข้อความสูงสุดที่ต้องพิจารณาในการแปล",
126
+ "include_tests": "รวมไฟล์ทดสอบในกระบวนการสแกน"
127
+ },
128
+ "starting": "🔍 การเริ่มเครื่องสแกนข้อความสำหรับเฟรมเวิร์ก: {framework}",
129
+ "sourceDirectory": "📁 กำลังสแกนไดเรกทอรี: {sourceDir}",
130
+ "frameworkDetected": "🎯 กรอบงานที่ตรวจพบ: {framework}",
131
+ "scanningFiles": "📊 การสแกน {fileCount} ไฟล์...",
132
+ "foundTexts": "⏩ พบแล้ว {textCount} ข้อความที่ต้องการการแปล",
133
+ "generatingReport": "📊 กำลังสร้างรายงานโดยละเอียด...",
134
+ "reportSaved": "💾 บันทึกรายงานการสแกนไปที่: {reportPath}",
135
+ "noTextsFound": "✅ ไม่พบข้อความภาษาอังกฤษแบบฮาร์ดโค้ด",
136
+ "scanComplete": "🎉 สแกนสำเร็จแล้ว!",
137
+ "analysisTitle": "🔍 การวิเคราะห์การสแกนการแปล",
138
+ "fileSummary": "📄 {file}: {count} พบข้อความ",
139
+ "textLocation": "📍 ไลน์ {line}: {text}",
140
+ "foundText": "พบ {count} อินสแตนซ์ข้อความฮาร์ดโค้ดที่เป็นไปได้",
141
+ "context": "⏩ บริบท: {context}",
142
+ "severity": "⚠️ความรุนแรง: {severity}",
143
+ "recommendation": "💡 คำแนะนำ: {recommendation}",
144
+ "welcome": {
145
+ "title": "🎯 ยินดีต้อนรับสู่เครื่องสแกนข้อความ!",
146
+ "description": "เครื่องมือนี้จะสแกนซอร์สโค้ดของคุณเพื่อหาข้อความภาษาอังกฤษแบบฮาร์ดโค้ดที่อาจต้องมีการแปล"
147
+ },
148
+ "frameworkPrompt": {
149
+ "title": "🎯 เลือกกรอบงาน",
150
+ "available": "เฟรมเวิร์กที่ใช้ได้: react, vue, เชิงมุม, vanilla",
151
+ "description": "ป้อนประเภทเฟรมเวิร์ก (หรือกด Enter เพื่อการตรวจจับอัตโนมัติ):",
152
+ "input": "กรอบ:"
153
+ },
154
+ "directoryPrompt": {
155
+ "title": "📁 เลือกไดเรกทอรีต้นทาง",
156
+ "current": "ไดเรกทอรีปัจจุบัน: {dir}",
157
+ "description": "ป้อนไดเร็กทอรีที่จะสแกน (หรือกด Enter เพื่อดูรายการปัจจุบัน):",
158
+ "input": "ไดเรกทอรี:"
159
+ },
160
+ "options": {
161
+ "includeTests": "รวมไฟล์ทดสอบ?",
162
+ "excludeDirs": "ไดเรกทอรีที่จะยกเว้น (คั่นด้วยเครื่องหมายจุลภาค):",
163
+ "customPatterns": "รูปแบบที่กำหนดเองที่จะสแกนหา (regex):"
164
+ },
165
+ "reportGenerated": "รายงานการสแกนที่สร้างขึ้น: {path}"
166
+ },
167
+ "fixer": {
168
+ "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",
169
+ "starting": "🚀 เริ่มการแก้ไขการแปลสำหรับภาษาต่างๆ: {languages}",
170
+ "sourceDirectory": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
171
+ "sourceLanguage": "🔤 ภาษาต้นฉบับ: {sourceLanguage}",
172
+ "markers": "🏷️ เครื่องหมายที่ต้องแก้ไข: {markers}",
173
+ "scanningLanguage": "📊 การสแกน {language}...",
174
+ "noLanguages": "❌ไม่มีการระบุภาษาในการซ่อม",
175
+ "allComplete": "🎉 แปลทั้งหมดเรียบร้อยแล้ว!",
176
+ "fullReportSaved": "📊 รายงานฉบับเต็มบันทึกไว้ที่: {reportPath}",
177
+ "reviewReport": "โปรดตรวจสอบรายงานก่อนดำเนินการต่อ",
178
+ "backupCreated": "💾 สร้างการสำรองข้อมูลเรียบร้อยแล้ว",
179
+ "applyingFixes": "🔄 กำลังใช้การแก้ไข...",
180
+ "fixingComplete": "✅ แก้คำแปลเสร็จ!",
181
+ "operationCancelled": "❌ การดำเนินการถูกยกเลิกโดยผู้ใช้",
182
+ "analysisTitle": "🔍 การวิเคราะห์การแก้ไขการแปล",
183
+ "analysisSeparator": "==================================================",
184
+ "totalIssues": "ปัญหาทั้งหมดที่พบ: {totalIssues}",
185
+ "missingTranslations": "คำแปลที่ขาดหายไป: {missing}",
186
+ "placeholderTranslations": "การแปลตัวยึดตำแหน่ง: {placeholder}",
187
+ "noIssues": "✅ไม่พบปัญหาใดๆ การแปลทั้งหมดเสร็จสมบูรณ์แล้ว",
188
+ "detailedIssues": "📋 DETAILED ISSUES:",
189
+ "detailedSeparator": "--------------------------------------------------",
190
+ "filePath": "📄 {file} → {path}",
191
+ "missingKey": "❌ ขาดหายไป: {source} → {new}",
192
+ "placeholderKey": "⚠️ ตัวยึดตำแหน่ง: \"{target}\" → \"{new}\"",
193
+ "moreIssues": "... และ {count} ปัญหาเพิ่มเติม ตรวจสอบไฟล์รายงานเพื่อดูรายละเอียดทั้งหมด",
194
+ "confirmationTitle": "🤔 คุณต้องการดำเนินการแก้ไขเหล่านี้ต่อหรือไม่?",
195
+ "confirmationOptions": "ตัวเลือก:",
196
+ "optionYes": "y - ใช่ ใช้การแก้ไขทั้งหมด",
197
+ "optionNo": "n - ไม่ ยกเลิกการดำเนินการ",
198
+ "optionShow": "s - แสดงปัญหาโดยละเอียด",
199
+ "choicePrompt": "ทางเลือกของคุณ (มี/ไม่มี/วินาที):",
200
+ "nonInteractiveMode": "⚡ ตรวจพบโหมดที่ไม่โต้ตอบ - ใช้การแก้ไขโดยอัตโนมัติ...",
201
+ "reportGenerated": "📊 สร้างรายงานผู้ให้บริการแล้ว: {path}",
202
+ "summary": "สรุปผู้ให้บริการ:",
203
+ "welcome": {
204
+ "title": "🎯 ยินดีต้อนรับสู่ผู้ให้บริการแปล!",
205
+ "description": "เครื่องมือนี้จะช่วยคุณแก้ไขคำแปลและตัวยึดตำแหน่งที่เสียหายในไฟล์สถานที่ของคุณ"
206
+ },
207
+ "markerPrompt": {
208
+ "title": "🏷️ กำหนดค่าเครื่องหมายตัวยึดตำแหน่ง",
209
+ "description": "ป้อนเครื่องหมายที่ระบุข้อความที่ไม่ได้แปล (คั่นด้วยเครื่องหมายจุลภาค):",
210
+ "currentDefaults": "เครื่องหมายเริ่มต้น: {markers}",
211
+ "input": "เครื่องหมาย (หรือกด Enter เพื่อดูค่าเริ่มต้น):"
212
+ },
213
+ "languagePrompt": {
214
+ "title": "🌍 เลือกภาษาที่จะแก้ไข",
215
+ "available": "ภาษาที่ใช้ได้: {languages}",
216
+ "description": "ป้อนภาษาที่จะแก้ไข (คั่นด้วยเครื่องหมายจุลภาค) หรือกด Enter สำหรับทุกคน:",
217
+ "input": "ภาษา:",
218
+ "noLanguages": "ไม่พบภาษาที่จะแก้ไข"
219
+ },
220
+ "directoryPrompt": {
221
+ "title": "📁 เลือกไดเรกทอรี",
222
+ "current": "ไดเรกทอรีปัจจุบัน: {dir}",
223
+ "description": "ป้อนไดเร็กทอรีที่มีไฟล์โลแคลของคุณ (หรือกด Enter เพื่อดูไฟล์ปัจจุบัน):",
224
+ "input": "ไดเรกทอรี:"
225
+ },
226
+ "backupLocation": "ตำแหน่งสำรอง: {dir}",
227
+ "completed": "การแก้ไขเสร็จสมบูรณ์",
228
+ "creatingBackup": "กำลังสร้างข้อมูลสำรองใน {dir}...",
229
+ "dryRunMode": "โหมดดรายรัน: {mode}",
230
+ "error": "ตัวแก้ไขล้มเหลว: {error}",
231
+ "fixing": "การแก้ไข {language}...",
232
+ "foundLanguages": "พบ {count} ภาษา: {languages}",
233
+ "languageFixed": "{language}: ที่ตายตัว {fixed} คีย์ถูกข้ามไป {skipped}.",
234
+ "running": "กำลังเรียกใช้โปรแกรมแก้ไขการแปล...",
235
+ "totalFixed": "คงที่ทั้งหมด: {count}"
236
+ },
237
+ "autorun": {
238
+ "stepAnalyzeTranslations": "วิเคราะห์คำแปล",
239
+ "stepCompletedWithIcon": "✅ เสร็จสิ้น: {stepName}",
240
+ "stepValidateTranslations": "ตรวจสอบการแปล",
241
+ "stepRunning": "▶️สเต็ป {stepNumber}/{totalSteps}: {stepName}",
242
+ "separator": "==================================================",
243
+ "stepFailed": "❌ ล้มเหลว: {stepName}",
244
+ "errorLabel": "ข้อผิดพลาด",
245
+ "autoRunScriptTitle": "🧪 เวิร์กโฟลว์การทำงานอัตโนมัติ",
246
+ "usageTitle": "การใช้งาน",
247
+ "runAllSteps": "รัน: โหนด i18ntk-autorun.js",
248
+ "configureSettingsFirst": "กำหนดค่า: แฟล็ก i18ntk-config.json หรือ CLI",
249
+ "runSpecificSteps": "ใช้ --steps=1,3 หรือ --list เพื่อแสดงขั้นตอน",
250
+ "showHelp": "--help สำหรับข้อมูลเพิ่มเติม",
251
+ "examplesTitle": "ตัวอย่าง",
252
+ "configExample": "โหนด i18ntk-autorun.js --ui-ภาษา=zh",
253
+ "stepsExample1": "โหนด i18ntk-autorun.js --steps=analyze,validate",
254
+ "stepsExample2": "โหนด i18ntk-autorun.js --list",
255
+ "customSettingsConfiguration": "การตั้งค่าการทำงานอัตโนมัติแบบกำหนดเอง",
256
+ "availableSteps": "ขั้นตอนที่ใช้ได้",
257
+ "startingAutoRunWorkflow": "🚀 กำลังเริ่มเวิร์กโฟลว์การทำงานอัตโนมัติ...",
258
+ "workflowIncludesSteps": "ขั้นตอนการทำงานประกอบด้วย {count} ขั้นตอน:",
259
+ "missingRequiredFile": "ไฟล์ที่ต้องการหายไป: {file}",
260
+ "workflowStopped": "เวิร์กโฟลว์หยุดลงเนื่องจากความล้มเหลว",
261
+ "workflowCompleted": "🎉 ขั้นตอนการทำงานเสร็จสมบูรณ์!",
262
+ "successfulSteps": "ขั้นตอนที่สำเร็จ: {count}",
263
+ "failedSteps": "ขั้นตอนที่ล้มเหลว: {count}",
264
+ "stepInitializeProject": "เริ่มต้นโครงการ",
265
+ "stepCheckUsage": "ตรวจสอบการใช้งานคีย์",
266
+ "stepGenerateSummary": "สร้างรายงานสรุป",
267
+ "runInitializationFirst": "กรุณาเรียกใช้การเริ่มต้นก่อน",
268
+ "initializationCheckPassed": "ผ่านการตรวจสอบการเริ่มต้นแล้ว",
269
+ "runningStep": "ขั้นตอนการวิ่ง: {stepName}",
270
+ "commandLabel": "สั่งการ: {command}",
271
+ "stepCompletedWithTime": "ขั้นตอน'{stepName}' เสร็จสิ้นใน {duration}นางสาว",
272
+ "stepCompleted": "ขั้นตอน'{stepName}' สมบูรณ์.",
273
+ "stepFailedWithError": "ขั้นตอน'{stepName}' ล้มเหลวโดยมีข้อผิดพลาด: {error}",
274
+ "requiredStepFailed": "ขั้นตอนที่จำเป็นล้มเหลว กำลังหยุดเวิร์กโฟลว์",
275
+ "optionalStepFailed": "ขั้นตอนที่ไม่บังคับล้มเหลว กระบวนการทำงานอย่างต่อเนื่อง",
276
+ "stepRequired": "(ที่จำเป็น)",
277
+ "stepOptional": "(ไม่จำเป็น)",
278
+ "startingExecution": "กำลังเริ่มดำเนินการ...",
279
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
280
+ "runningSelectedSteps": "กำลังดำเนินการขั้นตอนที่เลือก...",
281
+ "invalidStepNumber": "หมายเลขขั้นตอนไม่ถูกต้อง: {stepNum}",
282
+ "executionReport": "รายงานการดำเนินการ:",
283
+ "requiredFailedSteps": "ขั้นตอนที่จำเป็นล้มเหลว: {count}",
284
+ "stepDetails": "รายละเอียดขั้นตอน:",
285
+ "reportSavedTo": "บันทึกรายงานไปที่: {path}",
286
+ "overallStatusSuccess": "SUCCESS",
287
+ "overallStatusFailed": "FAILED",
288
+ "overallStatus": "สถานะโดยรวม: {status}",
289
+ "pressEnterForDefaults": "กด Enter เพื่อใช้การตั้งค่าเริ่มต้นสำหรับข้อความแจ้งใดๆ",
290
+ "sourceDirPrompt": "ป้อนไดเร็กทอรีต้นทาง (ค่าเริ่มต้น: {default}):",
291
+ "sourceLangPrompt": "ป้อนภาษาต้นฉบับ (ค่าเริ่มต้น: {default}):",
292
+ "targetLangsPrompt": "ป้อนภาษาเป้าหมาย (คั่นด้วยเครื่องหมายจุลภาค ค่าเริ่มต้น: {default}):",
293
+ "translationMarkerPrompt": "ป้อนเครื่องหมายการแปล (ค่าเริ่มต้น: {default}):",
294
+ "outputDirPrompt": "ป้อนไดเรกทอรีผลลัพธ์สำหรับรายงาน (ค่าเริ่มต้น: {default}):",
295
+ "settingsUpdatedSuccessfully": "อัปเดตการตั้งค่าสำเร็จแล้ว!",
296
+ "errorConfiguringSettings": "เกิดข้อผิดพลาดในการกำหนดการตั้งค่า: {error}",
297
+ "configurationComplete": "การกำหนดค่าเสร็จสมบูรณ์",
298
+ "runAutoRunCommand": "ตอนนี้คุณสามารถรันคำสั่งทำงานอัตโนมัติได้แล้ว",
299
+ "configurationFailed": "การกำหนดค่าล้มเหลว: {error}",
300
+ "noValidStepNumbers": "ไม่ได้ระบุหมายเลขขั้นตอนที่ถูกต้อง",
301
+ "autoRunFailed": "การทำงานอัตโนมัติล้มเหลว: {error}",
302
+ "stepCompleteTranslations": "การแปลที่สมบูรณ์",
303
+ "stepAnalyzeSizing": "วิเคราะห์ขนาด",
304
+ "stepCompletedIcon": "✅",
305
+ "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] ขั้นตอน '{stepName}' วิ่ง...",
306
+ "stepFailedIcon": "❌",
307
+ "translationLoadWarning": "คำเตือน: ไม่สามารถโหลดได้ {lang} การแปล",
308
+ "configReadError": "เกิดข้อผิดพลาดในการอ่าน {file}"
309
+ },
310
+ "analyze": {
311
+ "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",
312
+ "source_directory": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
313
+ "i18n_directory": "🌐 ไดเรกทอรี I18n: {i18nDir}",
314
+ "loading_translation_files": "📋 กำลังโหลดไฟล์แปล...",
315
+ "sourceDirectoryLabel": "📁 ไดเรกทอรีที่มา: {sourceDir}",
316
+ "sourceLanguageLabel": "🌍 ภาษาต้นฉบับ: {sourceLanguage}",
317
+ "strictModeLabel": "⚙️ โหมดเข้มงวด: {mode}",
318
+ "found_translation_files_count": "✅พบ {count} ไฟล์แปล",
319
+ "analyzing_translations": "🔍 กำลังวิเคราะห์คำแปล...",
320
+ "analysis_completed_successfully": "🎉 วิเคราะห์สำเร็จแล้ว!",
321
+ "analysis_results": "📊 ANALYSIS RESULTS",
322
+ "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% ที่แปลแล้ว)",
323
+ "sample_missing_keys": "ตัวอย่างคีย์ที่หายไป:",
324
+ "missing_key": "- {key}",
325
+ "and_more_missing": "...และ {count} มากกว่า.",
326
+ "sample_unused_keys": "ตัวอย่างคีย์ที่ไม่ได้ใช้:",
327
+ "unused_key": "- {key}",
328
+ "and_more_unused": "...และ {count} มากกว่า.",
329
+ "recommendations": "📋 คำแนะนำ",
330
+ "add_missing_translations": "💡 เพิ่มคำแปลที่ขาดหายไปเพื่อปรับปรุงความครอบคลุม",
331
+ "remove_unused_translations": "💡 ลบคำแปลที่ไม่ได้ใช้ออกเพื่อให้โปรเจ็กต์ของคุณสะอาด",
332
+ "next_steps": "📋 NEXT STEPS",
333
+ "review_analysis_results": "1. ตรวจสอบผลการวิเคราะห์ในคอนโซลหรือรายงานที่สร้างขึ้น",
334
+ "run_with_output_report": "2. รันด้วย --output-report สำหรับรายงานโดยละเอียด",
335
+ "add_or_remove_translations": "3. เพิ่มคำแปลที่ขาดหายไปหรือลบคำแปลที่ไม่ได้ใช้",
336
+ "rerun_analysis": "4. ดำเนินการวิเคราะห์ซ้ำเพื่อตรวจสอบการปรับปรุง",
337
+ "analysis_summary": "📊 ANALYSIS SUMMARY",
338
+ "source_files_scanned": "ไฟล์ต้นฉบับที่สแกน: {fileCount}",
339
+ "translation_files_checked": "ตรวจสอบไฟล์การแปลแล้ว: {translationFileCount}",
340
+ "total_keys": "คีย์ทั้งหมด: {totalKeys}",
341
+ "translated_keys": "คีย์ที่แปลแล้ว: {translatedKeys}",
342
+ "missing_keys": "คีย์ที่หายไป: {missingKeys}",
343
+ "unused_keys": "คีย์ที่ไม่ได้ใช้: {unusedKeys}",
344
+ "translation_coverage": "ความครอบคลุมการแปล: {coverage}%",
345
+ "analysis_passed_for_language": "✅ผ่านการวิเคราะห์ {language}",
346
+ "analysis_failed_for_language": "❌การวิเคราะห์ล้มเหลวสำหรับ {language} ({missingKeys} หายไป, {unusedKeys} ไม่ได้ใช้)",
347
+ "starting": "🔍 กำลังเริ่มวิเคราะห์การแปล...",
348
+ "foundLanguages": "📋 พบแล้ว {count} ภาษาที่จะวิเคราะห์: {languages}",
349
+ "analyzing": "🔄 กำลังวิเคราะห์ {language}...",
350
+ "reportTitle": "📊 รายงานการวิเคราะห์การแปล",
351
+ "generated": "สร้าง: {timestamp}",
352
+ "status": "สถานะ: {translated}/{total} กุญแจ ({percentage}% ที่แปลแล้ว)",
353
+ "filesAnalyzed": "ไฟล์ที่วิเคราะห์: {analyzed}/{total}",
354
+ "keysNeedingTranslation": "คีย์ที่ต้องแปล: {count}",
355
+ "fileBreakdown": "📋 รายละเอียดไฟล์",
356
+ "error": "ข้อผิดพลาด",
357
+ "completed": "✅วิเคราะห์เสร็จแล้วสำหรับ {language}",
358
+ "progress": "📊 ความคืบหน้าโดยรวม: {translated}/{total} ภาษาที่ประมวลผล",
359
+ "reportSaved": "บันทึกรายงานแล้ว: {reportPath}",
360
+ "summary": "📊 ANALYSIS SUMMARY",
361
+ "finished": "✅ วิเคราะห์สำเร็จ!",
362
+ "statusFileMissing": "❌ไฟล์แปลหาย",
363
+ "sourceKeys": "📊 คีย์แหล่งที่มา: {count}",
364
+ "translation": "📊 การแปล: {translated}/{total} ({percentage}%)",
365
+ "structure": "🗂️ โครงสร้าง: {status}",
366
+ "consistent": "สม่ำเสมอ",
367
+ "inconsistent": "ไม่สอดคล้องกัน",
368
+ "missingKeys": "คีย์ที่หายไป: {count}",
369
+ "extraKeys": "กุญแจเสริม: {count}",
370
+ "issues": "⚠️ ปัญหาที่พบ: {count}",
371
+ "issueType": {
372
+ "not_translated": "ไม่ได้แปล: {count}",
373
+ "empty_value": "ค่าว่าง: {count}",
374
+ "partial_translation": "การแปลบางส่วน: {count}",
375
+ "format_mismatch": "รูปแบบไม่ตรงกัน: {count}",
376
+ "type_mismatch": "ประเภทไม่ตรงกัน: {count}",
377
+ "structure_mismatch": "โครงสร้างไม่ตรงกัน: {count}",
378
+ "same_as_source": "เช่นเดียวกับแหล่งที่มา: {count}"
379
+ },
380
+ "keysToTranslate": "📋 กุญแจในการแปล",
381
+ "key": "สำคัญ",
382
+ "english": "ภาษาอังกฤษ",
383
+ "needsTranslation": "ต้องการการแปล",
384
+ "andMoreKeys": "...และ {count} กุญแจเพิ่มเติม",
385
+ "noLanguages": "⚠️ ไม่พบภาษาเป้าหมาย",
386
+ "languageStats": "{language}: {percentage}% สมบูรณ์ ({translated}/{total} กุญแจ)",
387
+ "invalidReportFilePath": "เส้นทางไฟล์รายงานไม่ถูกต้อง",
388
+ "failedToWriteReportFile": "ไม่สามารถเขียนไฟล์รายงานอย่างปลอดภัย"
389
+ },
390
+ "complete": {
391
+ "configLoadedSuccessfully": "โหลดการกำหนดค่าเรียบร้อยแล้ว",
392
+ "configLoadingFailed": "การโหลดการกำหนดค่าล้มเหลว",
393
+ "sourceLanguageNotFound": "ไม่พบไดเร็กทอรีภาษาต้นฉบับ: {sourceLanguage}",
394
+ "couldNotParseTarget": "ไม่สามารถแยกวิเคราะห์ไฟล์เป้าหมาย: {file}",
395
+ "couldNotParseSource": "ไม่สามารถแยกวิเคราะห์ไฟล์ต้นฉบับ: {file}",
396
+ "reportGenerated": "สร้างรายงานแล้ว: {path}",
397
+ "generateReportPrompt": "คุณต้องการสร้างรายงานหรือไม่?",
398
+ "title": "🌍 การแปล I18NTK เสร็จสมบูรณ์",
399
+ "separator": "============================================================",
400
+ "sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
401
+ "sourceLanguage": "🌐 ภาษาต้นฉบับ: {sourceLanguage}",
402
+ "dryRunMode": "🧪 โหมดดรายรัน - จะไม่มีการเปลี่ยนแปลงใดๆ",
403
+ "languages": "🌍 ภาษาที่ใช้ได้: {languages}",
404
+ "addingMissingKeys": "➕ การเพิ่มคีย์ที่หายไปให้กับไฟล์การแปล...",
405
+ "processing": "🔄 กำลังประมวลผล {language}...",
406
+ "addedKeys": "✅เข้าเพิ่ม {count} กุญแจหายไป",
407
+ "noChangesNeeded": "✅ไม่จำเป็นต้องเปลี่ยนแปลงใดๆ {language}",
408
+ "summaryTitle": "📊 สรุปผลสำเร็จ",
409
+ "totalChanges": "แปลก การเปลี่ยนแปลงทั้งหมด: {totalChanges}",
410
+ "languagesProcessed": "🌍 ภาษาที่ประมวลผล: {languagesProcessed}",
411
+ "missingKeysAdded": "➕ เพิ่มคีย์ที่หายไป: {missingKeysAdded}",
412
+ "nextStepsTitle": "📋 NEXT STEPS",
413
+ "nextStep1": "1. เรียกใช้การวิเคราะห์การใช้งาน:",
414
+ "nextStep2": "โหนด i18ntk-usage.js --output-report",
415
+ "nextStep3": "2. ตรวจสอบการแปล:",
416
+ "nextStep4": "โหนด i18ntk-validate.js",
417
+ "nextStep5": "3. วิเคราะห์รูปแบบ:",
418
+ "nextStep6": "โหนด i18ntk-analyze.js",
419
+ "allKeysAvailable": "🎉 คีย์การแปลทั้งหมดพร้อมใช้งานแล้ว!",
420
+ "runWithoutDryRun": "💡 ทำงานโดยไม่ต้อง --dry-run เพื่อใช้การเปลี่ยนแปลง",
421
+ "deletingOldReport": "🗑️ กำลังลบรายงานเก่า...",
422
+ "generatingFreshAnalysis": "📊 กำลังสร้างการวิเคราะห์การใช้งานใหม่...",
423
+ "couldNotGenerate": "❌ ไม่สามารถสร้างการวิเคราะห์การใช้งานได้",
424
+ "reportNotFound": "📋 ไม่พบรายงานการใช้งาน การใช้ปุ่มทั่วไป...",
425
+ "foundMissingKeys": "📋 พบแล้ว {count} คีย์หายไปจากการวิเคราะห์การใช้งาน",
426
+ "couldNotParse": "❌ ไม่สามารถแยกวิเคราะห์รายงานการใช้งานได้ การใช้ปุ่มทั่วไป...",
427
+ "errorDuringCompletion": "❌ ข้อผิดพลาดระหว่างดำเนินการเสร็จสิ้น: {error}",
428
+ "fatalError": "❌ ข้อผิดพลาดร้ายแรง: {error}",
429
+ "configurationValidationFailed": "การตรวจสอบการกำหนดค่าล้มเหลว: ไม่มีช่องที่ต้องกรอก"
430
+ },
431
+ "sizing": {
432
+ "separator": "================================================================================",
433
+ "lineSeparator": "--------------------------------------------------------------------------------",
434
+ "analysisStats": "{stats}",
435
+ "sourceDirectoryLabel": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
436
+ "sourceLanguageLabel": "🌍 ภาษาต้นฉบับ: {sourceLanguage}",
437
+ "strictModeLabel": "⚙️ โหมดเข้มงวด: {mode}",
438
+ "invalidSourceDirectoryError": "เส้นทางไดเรกทอรีต้นทางไม่ถูกต้อง: {sourceDir}",
439
+ "sourceDirectoryNotFoundError": "ไม่พบไดเรกทอรีต้นทาง: {sourceDir}",
440
+ "invalidOutputDirectoryError": "เส้นทางไดเรกทอรีผลลัพธ์ไม่ถูกต้อง: {outputDir}",
441
+ "invalidReportFileError": "เส้นทางไฟล์รายงานไม่ถูกต้อง",
442
+ "problematic_keys": "คีย์ที่มีปัญหา: {problematicKeys}",
443
+ "problematicKeysLabel": "คีย์ที่มีปัญหา: {problematicKeys}",
444
+ "long_translations": "การแปลแบบยาว: {longTranslations}",
445
+ "failedToSaveReportError": "ไม่สามารถบันทึกรายงานอย่างปลอดภัย",
446
+ "invalidCsvFileError": "เส้นทางไฟล์ CSV ไม่ถูกต้อง",
447
+ "failedToSaveCsvError": "ไม่สามารถบันทึกรายงาน CSV อย่างปลอดภัย",
448
+ "fatalError": "❌ การวิเคราะห์ขนาดล้มเหลว: {error}",
449
+ "starting_i18n_sizing_analysis": "กำลังเริ่มการวิเคราะห์ขนาด i18n...",
450
+ "source_directory": "ไดเรกทอรีต้นทาง: {sourceDir}",
451
+ "found_languages": "ภาษาที่พบ: {languages}",
452
+ "analyzing_file_sizes": "กำลังวิเคราะห์ขนาดไฟล์...",
453
+ "analyzing_translation_content": "กำลังวิเคราะห์เนื้อหาการแปล...",
454
+ "generating_size_comparisons": "กำลังสร้างการเปรียบเทียบขนาด...",
455
+ "no_languages_found_for_comparison": "ไม่พบภาษาที่จะเปรียบเทียบ",
456
+ "sizing_analysis_results": "ผลการวิเคราะห์ขนาด I18n",
457
+ "file_sizes_title": "ขนาดไฟล์",
458
+ "file_sizes_header": "ขนาดภาษา(KB) บรรทัด อักขระ",
459
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
460
+ "language_statistics_title": "สถิติภาษา",
461
+ "language_stats_header": "ปุ่มภาษา ตัวอักษร ความยาวเฉลี่ย ความยาวสูงสุด ว่าง ยาว",
462
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
463
+ "size_variations_title": "การเปลี่ยนแปลงขนาด",
464
+ "size_variations_header": "ภาษา Char Diff % Diff เป็นปัญหา",
465
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
466
+ "problematic_yes": "ใช่",
467
+ "problematic_no": "เลขที่",
468
+ "recommendations_title": "ข้อแนะนำ",
469
+ "recommendation_item": "{index}. {recommendation}",
470
+ "problematic_key_detail": "{index}. สำคัญ: '{key}' - รูปแบบต่างๆ: {variations}",
471
+ "generating_detailed_report": "กำลังสร้างรายงานโดยละเอียด...",
472
+ "keysHaveSignificantSizeVariations": "คีย์จะมีขนาดที่แตกต่างกันอย่างมาก",
473
+ "longTranslationsDetected": "${lang} มีการแปล ${data.longKeys} ยาวกว่า 100 ตัวอักษร - ลองแยกย่อย",
474
+ "longer": "อีกต่อไป",
475
+ "shorter": "สั้นลง",
476
+ "review_translations": "พิจารณาทบทวน {lang} การแปล - พวกเขาเป็น {percentageDifference}% {comparison} กว่าพื้นฐาน",
477
+ "report_saved_to": "บันทึกรายงานไปที่: {reportPath}",
478
+ "considerReviewingTranslations": "พิจารณาทบทวน ${lang} การแปล - ยาวกว่าพื้นฐาน ${data.percentageDifference}%",
479
+ "csv_report_saved_to": "รายงาน CSV บันทึกไปที่: {csvPath}",
480
+ "human_report_saved": "บันทึกรายงานที่สามารถอ่านได้: {reportPath}",
481
+ "folder_summary_title": "สรุปโฟลเดอร์",
482
+ "folder_summary_table_header": "ขนาดภาษา(KB) คีย์ ความยาวเฉลี่ย ตัวอักษรทั้งหมด",
483
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
484
+ "language_comparison_title": "การเปรียบเทียบภาษา",
485
+ "language_comparison_row": "{lang}: {diff} ตัวอักษร ({percent}%) {status}",
486
+ "summary_stats": "📊 สรุป: {totalLanguages} ภาษา {totalKeys} คีย์ - รายงานที่บันทึกไว้ใน {reportPath}",
487
+ "detailedKeysDescription": "แสดงการวิเคราะห์ระดับคีย์โดยละเอียดในคอนโซล",
488
+ "too_many_keys_warning": "⚠️ มีคีย์มากเกินไปที่จะแสดงในคอนโซล - ตรวจสอบไฟล์รายงานโดยละเอียดเพื่อการวิเคราะห์แบบเต็ม",
489
+ "no_translation_files_found": "ไม่พบไฟล์การแปล",
490
+ "analysis_completed": "วิเคราะห์เสร็จเมื่อ พ.ศ {duration}นางสาว",
491
+ "analysis_failed": "การวิเคราะห์ล้มเหลว: {errorMessage}",
492
+ "starting_analysis": "กำลังเริ่มการวิเคราะห์...",
493
+ "found_files": "พบ {count} ไฟล์",
494
+ "failed_to_parse_language_error": "แยกวิเคราะห์ไม่สำเร็จ {language} การแปล: {errorMessage}",
495
+ "recommendations": {
496
+ "keys_have_significant_size_variations": "คีย์จะมีขนาดที่แตกต่างกันอย่างมาก",
497
+ "consider_reviewing_translations": "พิจารณาทบทวน {lang} การแปล - พวกเขาเป็น {percentageDifference}% {comparison} กว่าพื้นฐาน",
498
+ "long_translations_detected": "{lang} มี {longKeys} แปลยาวกว่า. {threshold} ตัวละคร - ลองแยกย่อยพวกมันออก"
499
+ },
500
+ "detailed_key_analysis_title": "การวิเคราะห์คีย์โดยละเอียด",
501
+ "key_analysis_detail": "{lang}: {length} ตัวอักษร ({status}) - {translation}",
502
+ "key_analysis_header": "สำคัญ: {key}",
503
+ "status_empty": "ว่างเปล่า",
504
+ "status_long": "ยาว",
505
+ "status_ok": "ตกลง"
506
+ },
507
+ "usage": {
508
+ "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",
509
+ "source_directory_thissourcedir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
510
+ "translationCompletenessTitle": "🌍 ความสมบูรณ์ของการแปล:",
511
+ "i18n_directory_thisi18ndir": "🌐 ไดเรกทอรี I18n: {i18nDir}",
512
+ "failed_to_parse_filename_error": "⚠️ ไม่สามารถแยกวิเคราะห์ {fileName}: {errorMessage}",
513
+ "analyzing_source_files": "🔍 กำลังวิเคราะห์ไฟล์ต้นฉบับ...",
514
+ "found_files_in_source": "📂 พบแล้ว {numFiles} ไฟล์ในไดเร็กทอรีต้นทาง",
515
+ "found_thisusedkeyssize_unique_": "🎯 พบแล้ว {usedKeysSize} กุญแจที่ใช้ไม่ซ้ำใคร",
516
+ "total_key_usages_totalkeysfoun": "📊 การใช้งานคีย์ทั้งหมด: {totalKeysFound}",
517
+ "loading_available_translation_": "📋 กำลังโหลดคีย์การแปลที่มีอยู่...",
518
+ "found_thisavailablekeyssize_av": "✅พบ {availableKeysSize} กุญแจที่มีอยู่",
519
+ "foundTranslationFiles": "✅พบ {count} ไฟล์แปล",
520
+ "errorReadingI18nDirectory": "⚠️ เกิดข้อผิดพลาดในการอ่านไดเรกทอรี i18n: {error}",
521
+ "pressEnterToReturnToMenu": "⏩ กด Enter เพื่อกลับสู่เมนูหลัก...",
522
+ "notTranslatedKeysTotal": "⚠️ คีย์ที่ไม่ได้แปล: {total}",
523
+ "noSourceFilesFound": "⚠️ ไม่พบไฟล์ต้นฉบับในไดเร็กทอรีต้นทาง",
524
+ "reviewNotTranslatedKeys": "💡 รีวิวคีย์ที่ไม่ได้แปล",
525
+ "analysisCompletedSuccessfully": "🎉 วิเคราะห์สำเร็จแล้ว!",
526
+ "detectedSourceDirectory": "ไดเรกทอรีต้นทางที่ตรวจพบ: {sourceDir}",
527
+ "detectedI18nDirectory": "ตรวจพบไดเร็กทอรี i18n: {i18nDir}",
528
+ "fileInfo": "📄 {namespace}: {keys} กุญแจ",
529
+ "failedToAnalyzeUsage": "❌ ล้มเหลวในการวิเคราะห์การใช้งาน: {error}",
530
+ "failedToAnalyzeFile": "❌ ไม่สามารถวิเคราะห์ไฟล์: {error}",
531
+ "failedToExtractKeys": "❌ ไม่สามารถแยกคีย์ออกจาก {filePath}: {error}",
532
+ "analysisFailedError": "❌ การวิเคราะห์ล้มเหลว: {error}",
533
+ "analyzerInitialized": "เริ่มต้นตัววิเคราะห์แล้ว",
534
+ "analyzerInitFailed": "การเริ่มต้นตัววิเคราะห์ล้มเหลว: {error}",
535
+ "argsParsed": "อาร์กิวเมนต์แยกวิเคราะห์แล้ว",
536
+ "processedFiles": "ดำเนินการแล้ว {processedFiles} ของ {totalFiles} ไฟล์.",
537
+ "argsParseFailed": "การแยกวิเคราะห์อาร์กิวเมนต์ล้มเหลว: {error}",
538
+ "translationDiscoveryError": "ข้อผิดพลาดในการค้นพบคำแปล: {error}",
539
+ "fileTraversalError": "ข้อผิดพลาดในการข้ามไฟล์: {error}",
540
+ "sourceEqualsI18nWarn": "{reason}. การวิเคราะห์การใช้งานจะไม่สแกนไฟล์ภาษาเป็นซอร์สโค้ด",
541
+ "i18nEqualsSourceWarn": "⚠️ ไดเร็กทอรี I18n และไดเร็กทอรีต้นทางเหมือนกัน นี่อาจทำให้เกิดปัญหากับการวิเคราะห์",
542
+ "usageAnalysisFailed": "⚠️ การวิเคราะห์การใช้งานล้มเหลว: {error}",
543
+ "translationFileParseError": "⚠️ ข้อผิดพลาดในการแยกวิเคราะห์ไฟล์การแปล: {error}",
544
+ "translationKeysLoadError": "⚠️ ข้อผิดพลาดในการโหลดคีย์การแปล: {error}",
545
+ "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% ที่แปลแล้ว)",
546
+ "missingKeysCount": "⚠️ กุญแจที่หายไป: {count}",
547
+ "analyzingTranslationCompleteness": "กำลังวิเคราะห์ความสมบูรณ์ของการแปล...",
548
+ "unusedKeysCount": "คีย์ที่ไม่ได้ใช้: {count}",
549
+ "usedKeysCount": "กุญแจที่ใช้: {count}",
550
+ "availableKeysCount": "กุญแจที่มีอยู่: {count}",
551
+ "analysisResults": "ผลการวิเคราะห์:",
552
+ "i18nDirectoryNotFound": "⚠️ ไม่พบไดเรกทอรี I18n กรุณาตรวจสอบเส้นทาง",
553
+ "sourceDirectoryNotFound": "⚠️ ไม่พบไดเรกทอรีต้นทาง: {dir}",
554
+ "checkUsage": {
555
+ "title": "🔍 I18NTK USAGE ANALYSIS",
556
+ "analyzing_source_files": "🔍 กำลังวิเคราะห์ไฟล์ต้นฉบับ...",
557
+ "source_directory_thissourcedir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
558
+ "i18n_directory_thisi18ndir": "📁 ไดเรกทอรี i18n: {i18nDir}",
559
+ "found_files_in_source": "✅พบ {numFiles} ไฟล์ในไดเร็กทอรีต้นทาง",
560
+ "no_source_files_found": "⚠️ ไม่พบไฟล์ต้นฉบับในไดเร็กทอรีที่ระบุ",
561
+ "processedFiles": "📊 แปรรูปแล้ว {processedFiles} ของ {totalFiles} ไฟล์",
562
+ "failedToProcessFile": "❌ ดำเนินการไม่สำเร็จ",
563
+ "found_thisusedkeyssize_unique_": "🔍 พบแล้ว {usedKeysSize} กุญแจที่ใช้ไม่ซ้ำใคร",
564
+ "total_key_usages_totalkeysfoun": "📊 การใช้งานคีย์ทั้งหมด: {totalKeysFound}",
565
+ "loading_available_translation_": "📂 กำลังโหลดคีย์การแปลที่มีอยู่...",
566
+ "found_thisavailablekeyssize_av": "✅พบ {availableKeysSize} กุญแจที่มีอยู่",
567
+ "message": "กำลังวิเคราะห์การใช้คีย์การแปลทั่วทั้งโปรเจ็กต์ของคุณ...",
568
+ "usage_analysis_results": "📊 USAGE ANALYSIS RESULTS",
569
+ "source_files_scanned_thisfileu": "📁 ไฟล์ต้นฉบับที่สแกน: {fileUsageSize}",
570
+ "available_translation_keys_thi": "✅คีย์การแปลที่มีอยู่: {availableKeysSize}",
571
+ "used_translation_keys_thisused": "🔍 คีย์การแปลที่ใช้: {usedKeysSize}",
572
+ "dynamic_keys_detected_dynamick": "⚡ ตรวจพบปุ่มไดนามิก: {dynamicKeysLength}",
573
+ "unused_keys_unusedkeyslength": "🗑️ กุญแจที่ไม่ได้ใช้: {unusedKeysLength}",
574
+ "missing_keys_missingkeyslength": "❌กุญแจหาย: {missingKeysLength}",
575
+ "translation_completeness_title": "📈 ความสมบูรณ์ของการแปล",
576
+ "language_completeness_stats": "{language}: {translated}/{total} กุญแจ ({percentage}%)",
577
+ "n_sample_unused_keys": "🗑️ ตัวอย่างคีย์ที่ไม่ได้ใช้ (5 ตัวแรก):",
578
+ "key": "🔑 {key}",
579
+ "and_unusedkeyslength_5_more": "... และ {count} คีย์ที่ไม่ได้ใช้มากขึ้น",
580
+ "n_sample_missing_keys": "❌ ตัวอย่างคีย์ที่หายไป (5 ตัวแรก):",
581
+ "and_missingkeyslength_5_more": "... และ {count} กุญแจที่หายไปมากขึ้น",
582
+ "n_generating_detailed_report": "📊 กำลังสร้างรายงานโดยละเอียด...",
583
+ "report_saved_reportpath": "📄 บันทึกรายงานแล้ว: {reportPath}",
584
+ "n_recommendations": "💡 คำแนะนำ:",
585
+ "consider_removing_unused_trans": "🗑️ พิจารณาลบคำแปลที่ไม่ได้ใช้เพื่อลดขนาดชุดรวม",
586
+ "add_missing_translation_keys_t": "➕ เพิ่มคีย์การแปลที่หายไปเพื่อรักษาความสอดคล้อง",
587
+ "review_dynamic_keys_manually_t": "🔍 ตรวจสอบไดนามิกคีย์ด้วยตนเอง (อาจใช้ได้)",
588
+ "all_translation_keys_are_prope": "✅ ใช้คีย์การแปลทั้งหมดอย่างถูกต้อง!",
589
+ "n_next_steps": "🎯 NEXT STEPS:",
590
+ "2_check_the_detailed_report_fo": "2. ตรวจสอบรายงานโดยละเอียดสำหรับปัญหาเฉพาะ",
591
+ "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",
592
+ "1_review_the_analysis_results": "1. ตรวจสอบผลการวิเคราะห์ในคอนโซลหรือรายงานที่สร้างขึ้น",
593
+ "2_run_with_outputreport_for_de": "2. รันด้วย --output-report สำหรับรายงานโดยละเอียด",
594
+ "3_remove_unused_keys_or_add_mi": "3. ลบคีย์ที่ไม่ได้ใช้หรือเพิ่มคีย์ที่หายไปในซอร์สโค้ดของคุณ",
595
+ "4_rerun_analysis_to_verify_imp": "4. ดำเนินการวิเคราะห์ซ้ำเพื่อตรวจสอบการปรับปรุง",
596
+ "noSourceFilesFound": "ไม่พบไฟล์ต้นฉบับที่จะวิเคราะห์",
597
+ "i18nDirectoryNotFound": "ไม่พบไดเรกทอรี I18n: {i18nDir}",
598
+ "noTranslationLanguagesFound": "ไม่พบภาษาแปล",
599
+ "failedToAnalyzeFile": "วิเคราะห์ไฟล์ไม่สำเร็จ {filePath}: {error}",
600
+ "failedToAnalyzeLanguage": "วิเคราะห์ภาษาไม่สำเร็จ {language}: {error}",
601
+ "translationCompletenessAnalysisFailed": "การวิเคราะห์ความสมบูรณ์ของการแปลล้มเหลว: {error}",
602
+ "n": "\\n"
603
+ },
604
+ "complete": {
605
+ "configLoadedSuccessfully": "โหลดการกำหนดค่าเรียบร้อยแล้ว",
606
+ "configLoadingFailed": "การโหลดการกำหนดค่าล้มเหลว",
607
+ "title": "🌍 การแปล I18NTK เสร็จสมบูรณ์",
608
+ "separator": "============================================================",
609
+ "sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
610
+ "sourceLanguage": "🌐 ภาษาต้นฉบับ: {sourceLanguage}",
611
+ "dryRunMode": "🧪 โหมดดรายรัน - จะไม่มีการเปลี่ยนแปลงใดๆ",
612
+ "languages": "🌍 ภาษาที่ใช้ได้: {languages}",
613
+ "addingMissingKeys": "➕ การเพิ่มคีย์ที่หายไปให้กับไฟล์การแปล...",
614
+ "processing": "🔄 กำลังประมวลผล {language}...",
615
+ "addedKeys": "✅เข้าเพิ่ม {count} กุญแจหายไป",
616
+ "changeDetails": "📝 {file}: {key}",
617
+ "andMore": "...และ {count} มากกว่า",
618
+ "noChangesNeeded": "✅ไม่จำเป็นต้องเปลี่ยนแปลงใดๆ {language}",
619
+ "summaryTitle": "📊 สรุปผลสำเร็จ",
620
+ "totalChanges": "แปลก การเปลี่ยนแปลงทั้งหมด: {totalChanges}",
621
+ "languagesProcessed": "🌍 ภาษาที่ประมวลผล: {languagesProcessed}",
622
+ "missingKeysAdded": "➕ เพิ่มคีย์ที่หายไป: {missingKeysAdded}",
623
+ "nextStepsTitle": "📋 NEXT STEPS",
624
+ "nextStep1": "1. เรียกใช้การวิเคราะห์การใช้งาน:",
625
+ "nextStep2": "โหนด i18ntk-usage.js --output-report",
626
+ "nextStep3": "2. ตรวจสอบการแปล:",
627
+ "nextStep4": "โหนด i18ntk-validate.js",
628
+ "nextStep5": "3. วิเคราะห์รูปแบบ:",
629
+ "nextStep6": "โหนด i18ntk-analyze.js",
630
+ "allKeysAvailable": "🎉 คีย์การแปลทั้งหมดพร้อมใช้งานแล้ว!",
631
+ "runWithoutDryRun": "💡 ทำงานโดยไม่ต้อง --dry-run เพื่อใช้การเปลี่ยนแปลง",
632
+ "deletingOldReport": "🗑️ กำลังลบรายงานเก่า...",
633
+ "generatingFreshAnalysis": "📊 กำลังสร้างการวิเคราะห์การใช้งานใหม่...",
634
+ "couldNotGenerate": "❌ ไม่สามารถสร้างการวิเคราะห์การใช้งานได้",
635
+ "reportNotFound": "📋 ไม่พบรายงานการใช้งาน การใช้ปุ่มทั่วไป...",
636
+ "foundMissingKeys": "📋 พบแล้ว {count} คีย์หายไปจากการวิเคราะห์การใช้งาน",
637
+ "couldNotParse": "❌ ไม่สามารถแยกวิเคราะห์รายงานการใช้งานได้ การใช้ปุ่มทั่วไป..."
638
+ },
639
+ "noTranslationLanguagesFound": "ไม่พบภาษาแปล",
640
+ "failedToAnalyzeLanguage": "ไม่สามารถวิเคราะห์ภาษาได้",
641
+ "translationCompletenessAnalysisFailed": "การวิเคราะห์ความสมบูรณ์ของการแปลล้มเหลว",
642
+ "failedToProcessFile": "ล้มเหลวในการประมวลผลไฟล์:",
643
+ "failedToSaveReport": "ไม่สามารถบันทึกรายงานการใช้งาน: {error}",
644
+ "i18nDirectoryDoesNotExist": "ไม่มีไดเร็กทอรี I18n: {dir}",
645
+ "reportSavedTo": "รายงานการใช้งานบันทึกไว้ที่: {reportPath}",
646
+ "sourceDirectoryDoesNotExist": "ไม่มีไดเรกทอรีต้นทาง: {dir}",
647
+ "noSourceDirectoryConfigured": "(ไม่มีการกำหนดค่า)"
648
+ },
649
+ "validate": {
650
+ "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",
651
+ "title": "🔍 เครื่องมือตรวจสอบการแปล I18n",
652
+ "message": "กำลังเริ่มกระบวนการตรวจสอบ...",
653
+ "sourceDirectory": "📁 ไดเรกทอรีต้นทาง: {dir}",
654
+ "sourceLanguage": "🌍 ภาษาต้นฉบับ: {sourceLanguage}",
655
+ "strictMode": "⚙️ โหมดเข้มงวด: {mode}",
656
+ "noTargetLanguages": "ไม่มีภาษาเป้าหมายที่กำหนดค่าไว้ ข้ามการตรวจสอบเป้าหมาย เพิ่มภาษาผ่าน \"i18ntk init -- languages=de,fr\"",
657
+ "validatingLanguages": "🌍 กำลังตรวจสอบภาษา: {langs}",
658
+ "validatingLanguage": "🔍 ภาษาในการตรวจสอบ: {lang}",
659
+ "filesCount": "📄 ไฟล์: {count}",
660
+ "keysCount": "🔑 กุญแจ: {count}",
661
+ "missingFilesCount": "📁 ไฟล์ที่หายไป: {count}",
662
+ "syntaxErrorsCount": "❌ ข้อผิดพลาดทางไวยากรณ์: {count}",
663
+ "translationPercentage": "🎯 แปล: {percentage}% ({translated}/{total} กุญแจ)",
664
+ "validationSummary": "📊 สรุปการตรวจสอบ",
665
+ "validation_failed": "❌ การตรวจสอบล้มเหลว: {error}",
666
+ "totalErrors": "❌ ข้อผิดพลาดทั้งหมด: {count}",
667
+ "totalWarnings": "⚠️ คำเตือนทั้งหมด: {count}",
668
+ "errorsSection": "❌ ERRORS",
669
+ "warningsSection": "⚠️ WARNINGS",
670
+ "recommendationsSection": "💡 คำแนะนำ",
671
+ "fixErrorsFirst": "1. แก้ไขข้อผิดพลาดทั้งหมดก่อน",
672
+ "resolveMissingFilesAndSyntaxErrors": "1. แก้ไขไฟล์ที่หายไปและข้อผิดพลาดทางไวยากรณ์",
673
+ "fixStructuralInconsistencies": "2. แก้ไขความไม่สอดคล้องของโครงสร้าง",
674
+ "completeMissingTranslations": "3. แปลคำแปลที่ขาดหายไปให้สมบูรณ์",
675
+ "rerunValidation": "4. รันการตรวจสอบอีกครั้งเพื่อตรวจสอบการแก้ไข",
676
+ "addressWarnings": "แจ้งเตือนเพื่อปรับปรุงคุณภาพ",
677
+ "reviewWarnings": "ตรวจสอบคำเตือนและแก้ไขตามความเหมาะสม",
678
+ "considerRunningWithStrict": "2. พิจารณาเรียกใช้ด้วยแฟล็ก --strict เพื่อการตรวจสอบที่เข้มงวดยิ่งขึ้น",
679
+ "allValidationsPassed": "🎉 ผ่านการตรวจสอบทั้งหมดแล้ว!",
680
+ "considerRunningUsageAnalysis": "พิจารณาเรียกใช้การวิเคราะห์การใช้งาน: node i18ntk-usage.js",
681
+ "deletedOldReport": "🗑️ ลบรายงานการตรวจสอบเก่าแล้ว",
682
+ "sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
683
+ "i18nDir": "🌐 ไดเรกทอรี I18n: {i18nDir}",
684
+ "loadingTranslationFiles": "📋 กำลังโหลดไฟล์แปล...",
685
+ "foundTranslationFilesCount": "✅พบ {count} ไฟล์แปล",
686
+ "analyzingTranslations": "🔍 กำลังวิเคราะห์คำแปล...",
687
+ "validationCompletedSuccessfully": "🎉 การตรวจสอบความถูกต้องเสร็จสมบูรณ์แล้ว!",
688
+ "validationErrorsFound": "⚠️ พบข้อผิดพลาดในการตรวจสอบ: {count}",
689
+ "validationWarningsFound": "⚠️ พบคำเตือนการตรวจสอบความถูกต้อง: {count}",
690
+ "validationPassed": "✅ผ่านการตรวจสอบแล้วไม่มีข้อผิดพลาด",
691
+ "validationFailed": "การตรวจสอบความถูกต้องล้มเหลว: {error}",
692
+ "startingValidationProcess": "🔍 กำลังเริ่มกระบวนการตรวจสอบ...",
693
+ "validationProcessCompletedSuccessfully": "✅ กระบวนการตรวจสอบเสร็จสมบูรณ์เรียบร้อยแล้ว",
694
+ "stackTrace": "การติดตามสแต็ก: {stack}",
695
+ "authenticationFailed": "❌ การรับรองความถูกต้องล้มเหลว การเข้าถึงถูกปฏิเสธ",
696
+ "fatalValidationError": "❌ ข้อผิดพลาดในการตรวจสอบความถูกต้องร้ายแรง: {error}",
697
+ "configAccess": "การเข้าถึงการกำหนดค่าเพื่อตรวจสอบความถูกต้อง",
698
+ "configValidated": "ตรวจสอบการกำหนดค่าสำเร็จแล้ว",
699
+ "configError": "ข้อผิดพลาดในการกำหนดค่า: {error}",
700
+ "validatorInit": "กำลังเริ่มต้นเครื่องมือตรวจสอบ I18n",
701
+ "validatorInitialized": "เริ่มต้นเครื่องมือตรวจสอบ I18n สำเร็จแล้ว",
702
+ "validatorInitError": "ข้อผิดพลาดในการเริ่มต้นตัวตรวจสอบความถูกต้อง: {error}",
703
+ "argsParsing": "การแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง",
704
+ "argsParsed": "อาร์กิวเมนต์บรรทัดคำสั่งแยกวิเคราะห์สำเร็จ",
705
+ "argsParseError": "ข้อผิดพลาดในการแยกวิเคราะห์อาร์กิวเมนต์: {error}",
706
+ "languagesScan": "กำลังสแกนภาษาที่ใช้ได้",
707
+ "languagesFound": "พบ {count} ภาษา",
708
+ "languagesScanError": "ข้อผิดพลาดในการสแกนภาษา: {error}",
709
+ "filesScan": "พบ {count} ไฟล์ใน {language}",
710
+ "filesScanError": "ข้อผิดพลาดในการสแกนไฟล์: {error}",
711
+ "jsonValidated": "ตรวจสอบไวยากรณ์ JSON แล้ว: {filePath}",
712
+ "jsonValidationError": "ข้อผิดพลาดในการตรวจสอบ JSON: {error}",
713
+ "languageValidation": "กำลังตรวจสอบภาษา: {language}",
714
+ "languageValidationError": "ข้อผิดพลาดในการตรวจสอบภาษา: {error}",
715
+ "fileDeleted": "ลบไฟล์แล้ว",
716
+ "runStarted": "กำลังเริ่มดำเนินการตรวจสอบความถูกต้อง",
717
+ "runCompleted": "การตรวจสอบความถูกต้องเสร็จสมบูรณ์แล้ว",
718
+ "runError": "การตรวจสอบความถูกต้องล้มเหลว: {error}",
719
+ "scriptExecution": "การดำเนินการสคริปต์",
720
+ "validationCompleted": "การตรวจสอบความถูกต้องเสร็จสมบูรณ์",
721
+ "validationError": "ข้อผิดพลาดในการตรวจสอบ: {error}",
722
+ "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
723
+ "languageHeader": "🌐 ภาษา: {language}",
724
+ "validationResults": "📊 ผลการตรวจสอบ",
725
+ "noErrors": "✅ไม่พบข้อผิดพลาด",
726
+ "noWarnings": "✅ไม่พบคำเตือน",
727
+ "summaryHeader": "📋 OVERALL SUMMARY",
728
+ "progressIndicator": "⏳ กำลังประมวลผล...",
729
+ "completedIndicator": "✅ จบ.",
730
+ "errorIndicator": "❌เกิดข้อผิดพลาด",
731
+ "warningIndicator": "⚠️คำเตือน",
732
+ "infoIndicator": "ℹ️ข้อมูล",
733
+ "sourceDirNotConfigured": "ไม่ได้กำหนดค่าไดเรกทอรีต้นทาง",
734
+ "sourceLanguageNotConfigured": "ไม่ได้กำหนดค่าภาษาต้นฉบับ",
735
+ "translationFunctionNotInitialized": "ฟังก์ชั่นการแปลไม่ได้เริ่มต้นอย่างถูกต้อง",
736
+ "sourceLanguageDirectoryNotFound": "ไม่พบไดเรกทอรีภาษาต้นฉบับ",
737
+ "specifiedLanguageNotFound": "ไม่พบภาษาที่ระบุ",
738
+ "noJsonFilesFound": "ไม่พบไฟล์ JSON ในไดเรกทอรีต้นทาง: {sourceDir}",
739
+ "i18nDirectoryNotFound": "ไม่พบไดเรกทอรี I18n: {i18nDir}",
740
+ "invalidDirectoryPaths": "ตรวจพบเส้นทางไดเรกทอรีที่ไม่ถูกต้อง",
741
+ "invalidSampleFilePath": "เส้นทางไฟล์ตัวอย่างไม่ถูกต้อง",
742
+ "failedToCreateSampleTranslationFile": "ไม่สามารถสร้างไฟล์การแปลตัวอย่างได้",
743
+ "invalidFilePathDetected": "ตรวจพบเส้นทางไฟล์ไม่ถูกต้อง",
744
+ "failedToWriteFile": "ไม่สามารถเขียนไฟล์: {filePath}",
745
+ "invalidSourceDirectory": "ไดเรกทอรีต้นทางไม่ถูกต้อง: {sourceDir}",
746
+ "invalidSourceLanguageDirectory": "ไดเรกทอรีภาษาต้นฉบับไม่ถูกต้อง: {sourceDir}"
747
+ },
748
+ "adminCli": {
749
+ "setupPinProtectionTitle": "🔐 การตั้งค่าการป้องกัน PIN ของผู้ดูแลระบบ",
750
+ "setupPinProtectionDescription": "ซึ่งจะต้องใช้ PIN 4-6 หลักสำหรับการดำเนินการด้านผู้ดูแลระบบ",
751
+ "enablePinProtectionPrompt": "คุณต้องการเปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบหรือไม่",
752
+ "setupCancelled": "การตั้งค่าการป้องกัน PIN ของผู้ดูแลระบบถูกยกเลิก",
753
+ "enterPinPrompt": "ป้อน PIN 4-6 หลัก:",
754
+ "pinFormatError": "❌ PIN ต้องเป็นตัวเลข 4-6 หลัก โปรดลองอีกครั้ง",
755
+ "confirmPinPrompt": "ยืนยันรหัส PIN:",
756
+ "pinMismatchError": "❌ PIN ไม่ตรงกัน โปรดลองอีกครั้ง",
757
+ "pinProtectionEnabledSuccess": "✅ เปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบเรียบร้อยแล้ว!",
758
+ "pinRecoveryWarning": "⚠️ จำ PIN ของคุณ - ไม่สามารถกู้คืนได้หากสูญหาย",
759
+ "setupPinProtectionFailed": "❌ ไม่สามารถตั้งค่าการป้องกัน PIN ของผู้ดูแลระบบได้",
760
+ "errorSettingUpPin": "❌ เกิดข้อผิดพลาดในการตั้งค่า PIN ผู้ดูแลระบบ: {message}",
761
+ "authRequiredForOperation": "🔐 ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบสำหรับ: {operation}",
762
+ "invalidPinFormat": "❌ รูปแบบ PIN ไม่ถูกต้อง PIN ต้องเป็นตัวเลข 4-6 หลัก",
763
+ "authenticationSuccess": "✅ รับรองความถูกต้องสำเร็จ!",
764
+ "invalidPinAttemptsRemaining": "❌ PIN ไม่ถูกต้อง {remaining} ความพยายามที่เหลืออยู่",
765
+ "authenticationFailedAccessDenied": "❌ การรับรองความถูกต้องล้มเหลว การเข้าถึงถูกปฏิเสธ",
766
+ "authenticationError": "❌ ข้อผิดพลาดในการรับรองความถูกต้อง: {message}",
767
+ "pinProtectionNotEnabled": "การป้องกัน PIN ของผู้ดูแลระบบไม่ได้เปิดใช้งานอยู่ในขณะนี้",
768
+ "disablingPinProtectionTitle": "🔓 ปิดการใช้งานการป้องกัน PIN ของผู้ดูแลระบบ",
769
+ "confirmDisablePinProtection": "คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบ",
770
+ "operationCancelled": "การดำเนินการถูกยกเลิก",
771
+ "pinProtectionDisabledSuccess": "✅ การป้องกัน PIN ของผู้ดูแลระบบถูกปิดใช้งาน",
772
+ "disablePinProtectionFailed": "❌ ไม่สามารถปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบได้",
773
+ "errorDisablingPinProtection": "❌ เกิดข้อผิดพลาดในการปิดใช้งานการป้องกันผู้ดูแลระบบ: {message}",
774
+ "adminProtectionStatusTitle": "🔐 สถานะการคุ้มครองผู้ดูแลระบบ",
775
+ "statusEnabled": "สถานะ: ✅เปิดใช้งานแล้ว",
776
+ "protectionDetails": "การป้องกัน: ต้องใช้ PIN 4-6 หลักสำหรับการดำเนินงานของผู้ดูแลระบบ",
777
+ "lockoutDetails": "การล็อก: ล้มเหลว 3 ครั้ง = การล็อก 15 นาที",
778
+ "statusDisabled": "สถานะ: ❌ ปิดการใช้งาน",
779
+ "noAuthRequired": "การป้องกัน: ไม่จำเป็นต้องมีการรับรองความถูกต้อง",
780
+ "unprotectedRisk": "ความเสี่ยง: การดำเนินการด้านการบริหารไม่มีการป้องกัน",
781
+ "errorCheckingAdminStatus": "❌ เกิดข้อผิดพลาดในการตรวจสอบสถานะผู้ดูแลระบบ: {message}",
782
+ "authRequired": "🔐 ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบ",
783
+ "invalidPin": "❌ PIN ไม่ถูกต้อง",
784
+ "authSuccess": "✅ รับรองความถูกต้องสำเร็จ!",
785
+ "adminPinSetupCli": "admin_pin_setup_cli",
786
+ "adminAuthFailedCli": "admin_auth_failed_cli",
787
+ "adminAuthDisabledCli": "admin_auth_disabled_cli",
788
+ "protectedAccess": "การเข้าถึงที่มีการป้องกัน: ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบสำหรับการดำเนินการที่มีความละเอียดอ่อน",
789
+ "enterPin": "ป้อน PIN ของผู้ดูแลระบบ:",
790
+ "accessGranted": "ให้สิทธิ์การเข้าถึงแล้ว"
791
+ },
792
+ "adminPin": {
793
+ "setup_title": "🔐 การตั้งค่า PIN ผู้ดูแลระบบ",
794
+ "setup_separator": "============================================================",
795
+ "setup_description": "สร้าง PIN 4-6 หลักสำหรับผู้ดูแลระบบในการเข้าถึงการตั้งค่าที่ละเอียดอ่อน",
796
+ "required_for_title": "PIN นี้จำเป็นสำหรับ:",
797
+ "required_for_1": "• การเปลี่ยนการตั้งค่าความปลอดภัย",
798
+ "required_for_2": "• การปรับเปลี่ยนการกำหนดค่าขั้นสูง",
799
+ "required_for_3": "• การเข้าถึงเครื่องมือแก้ไขข้อบกพร่อง",
800
+ "required_for_4": "• การรีเซ็ตการตั้งค่า",
801
+ "setup_note": "💡 หมายเหตุ: คุณจะเห็นเครื่องหมายดอกจัน (*) ขณะที่พิมพ์ - นี่เป็นเพียงการปิดบังอักขระ",
802
+ "setup_digits_only": "ยอมรับเฉพาะตัวเลข 0-9 เท่านั้นที่เป็นตัวเลข PIN",
803
+ "invalid_pin_length": "❌ PIN ไม่ถูกต้อง ต้องเป็นตัวเลข 4-6 หลัก (ตัวเลข 0-9 เท่านั้น)",
804
+ "invalid_pin_example": "ตัวอย่าง: 1234 หรือ 567890",
805
+ "pins_do_not_match": "❌ PIN ไม่ตรงกัน",
806
+ "setup_success": "✅ ตั้งค่า PIN ของผู้ดูแลระบบสำเร็จแล้ว!",
807
+ "setup_warning": "⚠️ รักษา PIN นี้ให้ปลอดภัย ไม่สามารถกู้คืนได้หากสูญหาย",
808
+ "setup_error": "❌ เกิดข้อผิดพลาดในการตั้งค่า PIN:",
809
+ "session_expired": "⏰ เซสชันผู้ดูแลระบบหมดอายุเนื่องจากไม่มีการใช้งาน",
810
+ "no_pin_set_setting_up": "⚠️ ไม่มีการตั้ง PIN ของผู้ดูแลระบบ กำลังตั้งค่า PIN...",
811
+ "no_pin_configured_access_denied": "⚠️ ไม่มีการกำหนดค่า PIN ของผู้ดูแลระบบ การเข้าถึงถูกปฏิเสธ",
812
+ "use_admin_settings_to_set_pin": "💡 ใช้การตั้งค่าผู้ดูแลระบบเพื่อตั้งค่า PIN ก่อน",
813
+ "locked_out": "🔒 การเข้าถึงของผู้ดูแลระบบถูกล็อคเนื่องจากการพยายามล้มเหลวหลายครั้งเกินไป",
814
+ "wait_before_retry": "โปรดรอประมาณ 5 นาทีก่อนลองอีกครั้ง",
815
+ "access_granted": "✅ ให้สิทธิ์การเข้าถึงของผู้ดูแลระบบแล้ว",
816
+ "incorrect_pin": "❌ PIN ไม่ถูกต้อง {attempts} ความพยายามที่เหลืออยู่",
817
+ "verify_pin_error": "❌ เกิดข้อผิดพลาดในการตรวจสอบ PIN:",
818
+ "already_configured": "✅ PIN ผู้ดูแลระบบได้รับการกำหนดค่าแล้ว",
819
+ "optional_setup_title": "🔐 การตั้งค่า PIN ผู้ดูแลระบบ (ไม่บังคับ)",
820
+ "optional_setup_description": "การป้องกัน PIN ของผู้ดูแลระบบเพิ่มความปลอดภัยสำหรับการดำเนินการที่มีความละเอียดอ่อน เช่น:",
821
+ "setup_prompt": "คุณต้องการตั้งค่า PIN ของผู้ดูแลระบบหรือไม่ (มี/ไม่มี):",
822
+ "skipping_setup": "⏭️ ข้ามการตั้งค่า PIN ของผู้ดูแลระบบ คุณสามารถตั้งค่าได้ในภายหลังในการตั้งค่า",
823
+ "setup_prompt_error": "❌ เกิดข้อผิดพลาดระหว่างการแจ้งการตั้งค่า PIN:",
824
+ "protectedAccess": "การเข้าถึงที่มีการป้องกัน: ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบสำหรับการดำเนินการที่มีความละเอียดอ่อน",
825
+ "enterPin": "ป้อน PIN ของผู้ดูแลระบบ:",
826
+ "accessGranted": "ให้สิทธิ์การเข้าถึงแล้ว",
827
+ "invalidPin": "❌ PIN ไม่ถูกต้อง โปรดลองอีกครั้ง",
828
+ "weak_pin_warning": "⚠️ คำเตือน: PIN นี้ดูเหมือนจะไม่รัดกุมหรือพบบ่อย",
829
+ "weak_pin_suggestion": "💡 พิจารณาใช้ PIN ที่รัดกุมยิ่งขึ้นด้วยตัวเลขที่หลากหลาย",
830
+ "use_anyway_prompt": "พิมพ์ \"ใช่\" เพื่อใช้ต่อไป หรือกด Enter เพื่อเลือก PIN อื่น:",
831
+ "enter_new_pin": "ป้อน PIN ผู้ดูแลระบบใหม่ (4-6 หลัก):",
832
+ "confirm_pin": "ยืนยัน PIN ของผู้ดูแลระบบ:",
833
+ "not_set": "ไม่ได้ตั้งค่า",
834
+ "pin_display_mask": "####"
835
+ },
836
+ "debug": {
837
+ "title": "🏽 เครื่องมือแก้ไขข้อบกพร่อง",
838
+ "separator": "============================================================",
839
+ "mainDebuggerSystemDiagnostics": "1. การวินิจฉัยระบบ",
840
+ "_consoleTranslationsCheck": "// 2. ตรวจสอบการแปลคอนโซล",
841
+ "_exportMissingKeys": "// 3. ส่งออกคีย์การแปลที่หายไป",
842
+ "_replaceHardcodedConsole": "// 4. แทนที่สตริงคอนโซลแบบฮาร์ดโค้ด",
843
+ "_consoleKeyChecker": "// 5. ตัวตรวจสอบคีย์คอนโซล",
844
+ "debugLogs": "2. บันทึกการแก้ไขข้อบกพร่อง",
845
+ "backToMainMenu": "0. กลับสู่เมนูหลัก",
846
+ "selectOption": "เลือกเครื่องมือแก้ไขข้อบกพร่อง:",
847
+ "runningDebugTool": "วิ่ง {displayName}...",
848
+ "debugToolNotFound": "❌ ไม่พบเครื่องมือแก้ไขข้อบกพร่อง: {toolName}",
849
+ "errorRunningDebugTool": "เกิดข้อผิดพลาดในการเรียกใช้เครื่องมือแก้ไขข้อบกพร่อง '{displayName}': {error}",
850
+ "recentDebugLogs": "📄 บันทึกการแก้ไขข้อบกพร่องล่าสุด",
851
+ "noDebugLogsFound": "❌ ไม่พบบันทึกการแก้ไขข้อบกพร่อง",
852
+ "debugLogsDirectoryNotFound": "❌ ไม่พบไดเรกทอรีบันทึกการแก้ไขข้อบกพร่อง",
853
+ "selectLogPrompt": "เลือกไฟล์บันทึกเพื่อดู (1-{count}):",
854
+ "invalidChoiceSelectRange": "ตัวเลือกไม่ถูกต้อง กรุณาเลือกจากช่วงที่มีอยู่",
855
+ "contentOf": "📄 เนื้อหาของ {filename}:",
856
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ..."
857
+ },
858
+ "detect_language_mismatches": {
859
+ "tool_title": "🔍 เครื่องมือตรวจจับภาษาที่ไม่ตรงกัน",
860
+ "separator": "=====================================",
861
+ "analyzing_file": "📄 กำลังวิเคราะห์ {language}.json...",
862
+ "error_analyzing_file": "❌ วิเคราะห์ผิดพลาด {filename}: {errorMessage}",
863
+ "results_title": "📊 ผลการตรวจจับภาษาที่ไม่ตรงกัน",
864
+ "results_separator": "========================================",
865
+ "summary_title": "📋 SUMMARY:",
866
+ "total_files_analyzed": "ไฟล์ทั้งหมดที่วิเคราะห์: {totalFiles}",
867
+ "files_with_mismatches": "ไฟล์ที่ไม่ตรงกัน: {filesWithMismatches}",
868
+ "total_mismatches_found": "พบข้อมูลที่ไม่ตรงกันทั้งหมด: {totalMismatches}",
869
+ "no_mismatches_found": "✅ ไม่พบภาษาที่ไม่ตรงกัน! การแปลทั้งหมดดูเหมือนจะเป็นภาษาที่ถูกต้อง",
870
+ "detailed_results_title": "🔍 DETAILED RESULTS:",
871
+ "file_mismatch_header": "📄 {filename} ({language})",
872
+ "mismatches_count": "พบ {count} ไม่ตรงกัน:",
873
+ "mismatch_details": "{index}. สำคัญ: {key}",
874
+ "mismatch_value": "ค่า: \"{value}\"",
875
+ "mismatch_issue": "ปัญหา: {description}",
876
+ "recommendations_title": "💡 คำแนะนำ:",
877
+ "recommendation_1": "1. ตรวจสอบและแปลรายการทั้งหมดที่มีเครื่องหมาย [แปล]",
878
+ "recommendation_2": "2. แทนที่คำนำหน้าภาษา (เช่น [DE], [FR]) ด้วยคำแปลที่เหมาะสม",
879
+ "recommendation_3": "3. แปลข้อความภาษาอังกฤษเป็นภาษาเป้าหมายที่เหมาะสม",
880
+ "recommendation_4": "4. ใช้ภาษาท้องถิ่นที่เทียบเท่ากับข้อความที่ผู้ใช้เห็นทั้งหมด",
881
+ "recommendation_5": "5. เรียกใช้เครื่องมือนี้อีกครั้งหลังจากทำการแก้ไขเพื่อตรวจสอบการแก้ไข",
882
+ "detailed_report_saved": "📄 รายงานโดยละเอียดบันทึกไว้ที่: {reportPath}",
883
+ "error_saving_report": "❌ รายงานข้อผิดพลาดในการบันทึก: {errorMessage}",
884
+ "auto_fix_mode": "🏽 โหมดแก้ไขอัตโนมัติ {dryRun}",
885
+ "auto_fix_separator": "=====================================",
886
+ "fixed_file": "✅แก้ไขแล้ว {filename}",
887
+ "auto_fix_summary_title": "📊 สรุปการแก้ไขอัตโนมัติ:",
888
+ "total_fixes_applied": "ใช้การแก้ไขทั้งหมด: {count}",
889
+ "preview_fixes_title": "🔍 ดูตัวอย่างการแก้ไข:",
890
+ "fix_details": "{file}: {key} เก่า: \"{old}\" ใหม่: \"{new}\"",
891
+ "more_fixes": "... และ {count} การแก้ไขเพิ่มเติม",
892
+ "run_with_apply_fixes": "💡 รันด้วย --apply เพื่อใช้การแก้ไขเหล่านี้",
893
+ "error_general": "❌ ข้อผิดพลาด:",
894
+ "mainDebuggerSystemDiagnostics": "ดีบักเกอร์หลัก / การวินิจฉัยระบบ",
895
+ "exportMissingKeys": "ส่งออกคีย์ที่หายไป",
896
+ "replaceHardcodedConsole": "แทนที่คอนโซลแบบฮาร์ดโค้ด",
897
+ "consoleKeyChecker": "ตัวตรวจสอบคีย์คอนโซล",
898
+ "debugLogs": "บันทึกการแก้ไขข้อบกพร่อง",
899
+ "backToMainMenu": "กลับไปที่เมนูหลัก",
900
+ "invalidChoiceSelectRange": "❌ตัวเลือกไม่ถูกต้อง. โปรดเลือกหมายเลขภายในช่วงที่แสดง",
901
+ "runningDebugTool": "เรียกใช้เครื่องมือแก้ไขข้อบกพร่อง: {displayName}",
902
+ "debugToolNotFound": "เครื่องมือแก้ไขข้อบกพร่อง '{toolName}' ไม่พบ.",
903
+ "recentDebugLogs": "บันทึกการแก้ไขข้อบกพร่องล่าสุด",
904
+ "noDebugLogsFound": "ไม่พบบันทึกการแก้ไขข้อบกพร่อง",
905
+ "logEntry": "รายการบันทึก: {timestamp} - {message}",
906
+ "debugLogsDirectoryNotFound": "ไม่พบไดเรกทอรีบันทึกการแก้ไขข้อบกพร่อง"
907
+ },
908
+ "help": {
909
+ "title": "📊 ความช่วยเหลือด้านการจัดการ I18NTK",
910
+ "usage": "การใช้งาน: โหนด main/manage/index.js [ตัวเลือก]",
911
+ "interactiveMode": "💡 การใช้งาน: โหนด main/manage/index.js --command=<command> เพื่อการดำเนินการโดยตรง",
912
+ "showHelp": "📖 ใช้: node main/manage/index.js --help สำหรับคำสั่งที่มีอยู่",
913
+ "availableCommands": "📖 คำสั่งที่ใช้ได้:",
914
+ "initProject": "🚀 เริ่มต้นภาษาใหม่",
915
+ "analyzeTranslations": "🔍 วิเคราะห์การแปล",
916
+ "validateTranslations": "✅ ตรวจสอบการแปล",
917
+ "checkUsage": "📊 ตรวจสอบการใช้งานกุญแจ",
918
+ "initCommand": "init - เริ่มต้นภาษาใหม่",
919
+ "analyzeCommand": "วิเคราะห์ - วิเคราะห์การแปล",
920
+ "validateCommand": "ตรวจสอบ - ตรวจสอบการแปล",
921
+ "usageCommand": "การใช้งาน - ตรวจสอบการใช้งานคีย์",
922
+ "sizingCommand": "การปรับขนาด - วิเคราะห์ขนาด",
923
+ "completeCommand": "เสร็จสมบูรณ์ - การแปลเสร็จสมบูรณ์ (ครอบคลุม 100%)",
924
+ "summaryCommand": "สรุป - แสดงสถานะโครงการ",
925
+ "debugCommand": "ดีบัก - ดีบักปัญหาการแปล",
926
+ "scannerCommand": "เครื่องสแกน - สแกนหากุญแจ",
927
+ "translateCommand": "แปล - แปลไฟล์ภาษาอัตโนมัติ",
928
+ "menu": {
929
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
930
+ "title": "🌐 เมนูการจัดการ I18NTK",
931
+ "description": "เมนูแบบโต้ตอบสำหรับการจัดการความเป็นสากล",
932
+ "exit": "🚪 ออก"
933
+ },
934
+ "commands": {
935
+ "init": "init - เริ่มต้นภาษาใหม่",
936
+ "analyze": "วิเคราะห์ - วิเคราะห์การแปล",
937
+ "validate": "ตรวจสอบ - ตรวจสอบการแปล",
938
+ "usage": "การใช้งาน - ตรวจสอบการใช้งานคีย์",
939
+ "sizing": "การปรับขนาด - วิเคราะห์ขนาด",
940
+ "complete": "เสร็จสมบูรณ์ - การแปลเสร็จสมบูรณ์ (ครอบคลุม 100%)",
941
+ "summary": "สรุป - แสดงสถานะโครงการ",
942
+ "debug": "ดีบัก - ดีบักปัญหาการแปล"
943
+ },
944
+ "options": {
945
+ "sourceDir": "--source-dir <dir> ไดเรกทอรีต้นทางที่จะวิเคราะห์",
946
+ "output": "--เอาท์พุท <file> ไฟล์เอาต์พุตสำหรับรายงาน",
947
+ "verbose": "--verbose, -v แสดงข้อมูลโดยละเอียด",
948
+ "keepReports": "--keep-reports เก็บรายงานที่มีอยู่",
949
+ "deleteReports": "--delete-reports ลบรายงานที่มีอยู่",
950
+ "help": "--help, -h แสดงความช่วยเหลือนี้"
951
+ },
952
+ "examples": {
953
+ "title": "ตัวอย่าง:",
954
+ "example1": "โหนด i18ntk-manage.js",
955
+ "example2": "โหนด i18ntk-manage.js --source-dir ./locales",
956
+ "example3": "โหนด i18ntk-manage.js --สรุปเอาต์พุต-report.txt",
957
+ "example4": "โหนด i18ntk-manage.js --verbose",
958
+ "example5": "โหนด i18ntk-manage.js --source-dir ./locales --output report.json"
959
+ },
960
+ "features": {
961
+ "initProject": "🚀 เริ่มต้นภาษาใหม่",
962
+ "analyzeTranslations": "🔍 วิเคราะห์การแปล",
963
+ "validateTranslations": "✅ ตรวจสอบการแปล",
964
+ "checkUsage": "📊 ตรวจสอบการใช้งานกุญแจ",
965
+ "completeTranslations": "🎯 การแปลที่สมบูรณ์ (ครอบคลุม 100%)",
966
+ "showSizing": "📏 วิเคราะห์ขนาด",
967
+ "runWorkflow": "🔄 รันเวิร์กโฟลว์เต็มรูปแบบ",
968
+ "showStatus": "📋 แสดงสถานะโครงการ",
969
+ "deleteReports": "🗑️ ลบรายงานทั้งหมด",
970
+ "changeLanguage": "🌍 เปลี่ยนภาษา UI",
971
+ "settings": "⚙️ การตั้งค่า",
972
+ "showHelp": "❓ช่วยเหลือ",
973
+ "debugTools": "🏽 เครื่องมือแก้ไขข้อบกพร่อง"
974
+ },
975
+ "messages": {
976
+ "selectOption": "เลือกตัวเลือก:",
977
+ "invalidOption": "ตัวเลือกไม่ถูกต้อง โปรดลองอีกครั้ง",
978
+ "operationCompleted": "✅ ปฏิบัติการสำเร็จลุล่วงด้วยดี!",
979
+ "pressEnter": "กด Enter เพื่อดำเนินการต่อ...",
980
+ "goodbye": "😏 ลาก่อน!",
981
+ "unknownCommand": "คำสั่งที่ไม่รู้จัก: {command}",
982
+ "nonInteractive": "⚠️ ตรวจพบโหมดที่ไม่โต้ตอบ เมนูที่แสดงสำหรับการอ้างอิงเท่านั้น"
983
+ },
984
+ "i18n_helper": {
985
+ "translation_file_not_found": "ไม่พบไฟล์การแปล: {translationFile}",
986
+ "error_loading_translations": "เกิดข้อผิดพลาดในการโหลดคำแปล: {errorMessage}",
987
+ "translation_not_found": "ไม่พบคำแปลสำหรับคีย์: {key}",
988
+ "translation_key_not_string": "คีย์การแปลไม่สามารถแปลงเป็นสตริงได้: {key}",
989
+ "error_reading_locales_directory": "เกิดข้อผิดพลาดในการอ่านไดเรกทอรีสถานที่: {errorMessage}"
990
+ }
991
+ },
992
+ "init": {
993
+ "initializationTitle": "🚀 ชุดเครื่องมือการจัดการ i18n - การเริ่มต้นโครงการ",
994
+ "initializationCancelled": "🚫 การเริ่มต้นถูกยกเลิกโดยผู้ใช้",
995
+ "sourceDirectoryLabel": "📁 ไดเรกทอรีที่มา: {dir}",
996
+ "requiredTitle": "จำเป็นต้องมีการเริ่มต้น",
997
+ "requiredBody": "ต้องเริ่มต้นโปรเจ็กต์นี้ก่อนที่จะรันคำสั่งนี้",
998
+ "promptRunNow": "คุณต้องการเรียกใช้การเริ่มต้นตอนนี้หรือไม่? (มี/ไม่มี):",
999
+ "sourceLanguageLabel": "🌍 ภาษาต้นฉบับ: {language}",
1000
+ "detectedI18nFrameworks": "🔍 ตรวจพบเฟรมเวิร์ก i18n: {frameworks}",
1001
+ "pinMustBe4Digits": "🔐 PIN ต้องเป็นตัวเลข 4 หลัก",
1002
+ "existingDirectoriesFound": "📁 พบไดเรกทอรีการแปลที่มีอยู่:",
1003
+ "useExistingDirectoryPrompt": "คุณต้องการใช้ไดเร็กทอรีที่มีอยู่หรือไม่? (มี/ไม่มี)",
1004
+ "selectDirectoryPrompt": "เลือกไดเร็กทอรีโดยป้อนหมายเลข (หรือเลือก 'สร้างไดเร็กทอรีใหม่')",
1005
+ "enterNewDirectoryName": "ป้อนชื่อสำหรับไดเรกทอรีการแปลใหม่ของคุณ",
1006
+ "createdNewDirectory": "✅ สร้างไดเรกทอรีใหม่: {dir}",
1007
+ "directoryAlreadyExists": "⚠️ มีไดเร็กทอรีอยู่แล้ว: {dir}",
1008
+ "invalidDirectoryName": "❌ ชื่อไดเรกทอรีที่ระบุไม่ถูกต้อง",
1009
+ "usingExistingDirectory": "การใช้ไดเร็กทอรีที่มีอยู่: {dir}",
1010
+ "adminPinSetupOptional": "🔐 การตั้งค่า PIN ผู้ดูแลระบบเป็นตัวเลือก (แนะนำเพื่อความปลอดภัย)",
1011
+ "adminPinSeparator": "------------------------------",
1012
+ "adminPinDescription1": "PIN ผู้ดูแลระบบ: หมายเลข 4 หลักเพื่อการเข้าถึงที่ปลอดภัย",
1013
+ "adminPinDescription2": "เว้นว่างไว้เพื่อข้ามการตั้งค่า PIN",
1014
+ "adminPinDescription3": "หากคุณตั้งค่า PIN จะต้องใช้สำหรับการดำเนินการที่ปลอดภัยทั้งหมดในอนาคต",
1015
+ "adminPinDescription4": "การเข้ารหัส AES-256-GCM ใช้สำหรับการจัดเก็บ PIN ที่ปลอดภัย",
1016
+ "adminPinSetupPrompt": "ป้อน PIN ของผู้ดูแลระบบ (4 หลัก) หรือเว้นว่างไว้เพื่อข้าม:",
1017
+ "skippingAdminPinSetup": "กำลังข้ามการตั้งค่า PIN ของผู้ดูแลระบบ...",
1018
+ "settingUpAdminPin": "🔐 การตั้งค่า PIN ผู้ดูแลระบบ...",
1019
+ "enterAdminPin": "ป้อน PIN ผู้ดูแลระบบ:",
1020
+ "confirmAdminPin": "ยืนยัน PIN ผู้ดูแลระบบ:",
1021
+ "pinMismatch": "PIN ไม่ตรงกัน โปรดลองอีกครั้ง",
1022
+ "adminPinSetupSuccess": "🔐 การตั้งค่า PIN ผู้ดูแลระบบสำเร็จแล้ว!",
1023
+ "adminPinSetupFailure": "🔐 การตั้งค่า PIN ผู้ดูแลระบบล้มเหลว โปรดลองอีกครั้ง",
1024
+ "adminProtectionEnabled": "🔐 เปิดใช้งานการป้องกันผู้ดูแลระบบแล้ว การดำเนินการทั้งหมดต้องมีการตรวจสอบสิทธิ์ PIN",
1025
+ "adminProtectionDisabled": "🔐 การป้องกันผู้ดูแลระบบถูกปิดใช้งาน การดำเนินการทั้งหมดสามารถทำได้โดยไม่ต้องใช้ PIN",
1026
+ "autoDetectedI18nDirectory": "ไดเร็กทอรี i18n ที่ตรวจพบอัตโนมัติ: {directory}",
1027
+ "initializingProject": "⚙️ กำลังเริ่มต้นการกำหนดค่าโปรเจ็กต์...",
1028
+ "createdSampleTranslationFile": "✅ สร้างไฟล์แปลตัวอย่าง: {file}",
1029
+ "languageSelectionTitle": "🌐 การกำหนดค่าภาษา",
1030
+ "available": "มีอยู่",
1031
+ "defaultLanguages": "⏩ ภาษาเริ่มต้น: {languages}",
1032
+ "enterLanguageCodes": "🎯 กรอกรหัสภาษาเป้าหมาย (คั่นด้วยเครื่องหมายจุลภาค เช่น de, es, fr, ru):",
1033
+ "targetLanguages": "🌍 ภาษาเป้าหมาย",
1034
+ "foundSourceFiles": "📄 พบแล้ว {count} ไฟล์ต้นฉบับที่จะวิเคราะห์",
1035
+ "processingLanguage": "🔄 ภาษาการประมวลผล: {language}",
1036
+ "fileProcessingResult": "✅แปรรูปแล้ว {file}: {translated}/{total} กุญแจ ({percentage}%)",
1037
+ "overallProgress": "📊 ความคืบหน้าโดยรวม: {translated}/{total} คีย์ที่ประมวลผล ({percentage}%)",
1038
+ "initializationSummaryTitle": "📋 สรุปการเริ่มต้น",
1039
+ "languageSummary": "{icon} {name} ({code}): {percentage}% สมบูรณ์",
1040
+ "languageFiles": "📄 ไฟล์: {count}",
1041
+ "languageKeys": "🔤 กุญแจ: {translated}/{total}",
1042
+ "languageMissing": "⚠️ ขาดหายไป: {count}",
1043
+ "initializationCompletedSuccessfully": "🎉 การเริ่มต้นโครงการเสร็จสมบูรณ์แล้ว!",
1044
+ "nextStepsTitle": "🚀 ขั้นตอนต่อไป",
1045
+ "nextStep1": "1. ตรวจสอบไฟล์การแปลที่สร้างขึ้นในไดเร็กทอรี locales/ ของคุณ",
1046
+ "nextStep2": "2. เพิ่มคำแปลสำหรับแต่ละภาษาเป้าหมาย",
1047
+ "nextStep3": "3. เรียกใช้ 'npm run i18ntk' อีกครั้งเพื่อตรวจสอบความถูกต้องของการแปล",
1048
+ "detectedFrameworks": "✅ ตรวจพบเฟรมเวิร์ก i18n: {frameworks}",
1049
+ "setup": {
1050
+ "title": "ตั้งค่า",
1051
+ "question": "ตั้งคำถาม",
1052
+ "opt_single": "ไฟล์เดียว",
1053
+ "opt_modular": "แบบโมดูลาร์",
1054
+ "opt_existing": "ที่มีอยู่เดิม",
1055
+ "choice_prompt": "เลือกตัวเลือก:",
1056
+ "opt_confirm": "ยืนยัน",
1057
+ "opt_cancel": "ยกเลิก",
1058
+ "apply_all_prompt": "ใช้โครงสร้างนี้กับทุกภาษาใช่ไหม (มี/ไม่มี):",
1059
+ "per_language_intro": "คุณได้เลือกที่จะกำหนดค่าภาษาแยกกัน นี่คือภาษาที่ใช้ได้:",
1060
+ "available_languages": "ภาษาที่ใช้ได้: {languages}",
1061
+ "include_prompt": "ป้อนรหัสภาษาที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวม (เช่น 'de,fr,es'):"
1062
+ },
1063
+ "warnings": {
1064
+ "noPackageJson": "ไม่พบ package.json ไม่สามารถตรวจจับเฟรมเวิร์ก i18n อัตโนมัติได้"
1065
+ },
1066
+ "errorsPackageJsonRead": "เกิดข้อผิดพลาดในการอ่าน package.json: {error}",
1067
+ "errorsNoFramework": "ไม่พบเฟรมเวิร์ก i18n โปรดติดตั้งหรือระบุด้วยตนเอง",
1068
+ "suggestions": {
1069
+ "noFramework": "ไม่พบเฟรมเวิร์ก i18n พิจารณาใช้อย่างใดอย่างหนึ่งต่อไปนี้:",
1070
+ "installFramework": "หากต้องการติดตั้งเฟรมเวิร์ก ให้รัน: npm install <package-name>"
1071
+ },
1072
+ "frameworks": {
1073
+ "react": "- ตอบสนอง i18next (ตอบสนอง-i18next)",
1074
+ "vue": "- วู i18n (วู-i18n)",
1075
+ "i18next": "- i18next (ไอ18เน็กซ์)",
1076
+ "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
1077
+ "svelte": "- สเวลเต้ i18n (svelte-i18n)"
1078
+ },
1079
+ "continueWithoutI18nPrompt": "ไม่พบเฟรมเวิร์ก i18n คุณต้องการดำเนินการต่อโดยไม่มีใครหรือไม่? (มี/ไม่มี):",
1080
+ "detectedI18nFramework": "ตรวจพบเฟรมเวิร์ก i18n: {frameworks}",
1081
+ "existingDirectoryItem": "{index}. {location}",
1082
+ "usingExistingStructure": "การใช้โครงสร้างที่มีอยู่: {dir}",
1083
+ "creatingSourceDirectory": "การสร้างไดเรกทอรีต้นทาง: {dir}",
1084
+ "creatingSourceLanguageDirectory": "การสร้างไดเร็กทอรีภาษาต้นฉบับ: {dir}",
1085
+ "errors": {
1086
+ "errorExecutingCommand": "เกิดข้อผิดพลาดในการดำเนินการคำสั่ง: {error}",
1087
+ "sourceDirectoryNotFound": "ไม่พบไดเรกทอรีต้นทาง: {dir}",
1088
+ "sourceLanguageDirectoryNotFound": "ไม่พบไดเร็กทอรีภาษาต้นฉบับ: {dir}",
1089
+ "noJsonFilesInSourceDirectory": "ไม่พบไฟล์ JSON ในไดเรกทอรีต้นทาง: {dir}",
1090
+ "invalidFilePathDetected": "ตรวจพบเส้นทางไฟล์ไม่ถูกต้อง",
1091
+ "initializationFailed": "การเริ่มต้นล้มเหลว: {error}",
1092
+ "noFramework": "ไม่พบเฟรมเวิร์ก i18n ดำเนินการต่อด้วยโหมดทั่วไป",
1093
+ "packageJsonRead": "เกิดข้อผิดพลาดในการอ่าน package.json"
1094
+ },
1095
+ "processingFile": "กำลังประมวลผล {file} สำหรับ {language}...",
1096
+ "fileAlreadyExistsMerging": "ไฟล์ {file} มีอยู่แล้ว การรวมคีย์ใหม่",
1097
+ "createdNewFile": "สร้างไฟล์ใหม่: {file}",
1098
+ "updatedFile": "ไฟล์ที่อัปเดต: {file}",
1099
+ "skippingExcludedFile": "กระโดดข้าม {file} สำหรับ {language} ตามที่ยกเว้นไว้",
1100
+ "continuingWithoutAdminPin": "ดำเนินการต่อโดยไม่ต้องตั้งค่า PIN ของผู้ดูแลระบบ",
1101
+ "createdSourceLanguageDirectory": "สร้างไดเร็กทอรีภาษาต้นฉบับ: {dir}",
1102
+ "errorSettingUpAdminPin": "เกิดข้อผิดพลาดในการตั้งค่า PIN ผู้ดูแลระบบ: {error}",
1103
+ "noTargetLanguagesSpecified": "ไม่ได้ระบุภาษาเป้าหมาย",
1104
+ "translationFilesCreatedWarning": "ไฟล์การแปลถูกสร้างขึ้นโดยใช้ตัวยึดตำแหน่ง ตรวจสอบก่อนการใช้งานจริง",
1105
+ "warningCannotReadSourceDir": "คำเตือน: ไม่สามารถอ่านไดเรกทอรีต้นทางได้ {dir}: {error}",
1106
+ "warningInvalidLanguageCodes": "คำเตือน: รหัสภาษาที่ไม่ถูกต้องถูกละเว้น: {languages}",
1107
+ "warningProceedingWithoutFramework": "ดำเนินการโดยตรวจไม่พบเฟรมเวิร์ก i18n",
1108
+ "backup": {
1109
+ "title": "การตั้งค่าการสำรองข้อมูล",
1110
+ "description": "การสำรองข้อมูลจะถูกปิดใช้งานตามค่าเริ่มต้นเพื่อหลีกเลี่ยงการเรียกซ้ำของการสำรองข้อมูลและมลภาวะจากการซื้อคืน",
1111
+ "enablePrompt": "เปิดใช้งานการสำรองข้อมูลอัตโนมัติหรือไม่ (มี/ไม่มี):",
1112
+ "keepPrompt": "จำนวนการสำรองข้อมูลที่ควรเก็บไว้โดยอัตโนมัติ (1-3, ค่าเริ่มต้น 1):"
1113
+ },
1114
+ "completionSummaryTitle": "สรุปความสมบูรณ์",
1115
+ "completionSummaryBasicTitle": "สรุปความสมบูรณ์ (พื้นฐาน)",
1116
+ "totalChanges": "การเปลี่ยนแปลงทั้งหมด: {count}",
1117
+ "languagesProcessed": "ภาษาที่ประมวลผล: {count}",
1118
+ "missingKeysAdded": "เพิ่มคีย์ที่หายไป: {count}",
1119
+ "reportPrompt": "คุณต้องการสร้างรายงานหรือไม่? (มี/ไม่มี):",
1120
+ "reportGenerated": "สร้างรายงานแล้ว: {reportPath}",
1121
+ "reportFailed": "ไม่สามารถสร้างรายงาน: {error}",
1122
+ "completionError": "เกิดข้อผิดพลาดระหว่างดำเนินการเสร็จสิ้น: {error}",
1123
+ "optimize": {
1124
+ "title": "การเพิ่มประสิทธิภาพขนาดบรรจุภัณฑ์",
1125
+ "preview": "กำลังเรียกใช้การแสดงตัวอย่างการเพิ่มประสิทธิภาพสถานที่...",
1126
+ "reduceTip": "คุณสามารถลดขนาดแพ็คเกจได้โดยเลือกเฉพาะภาษาที่คุณต้องการ",
1127
+ "prompt": "คุณต้องการใช้การเพิ่มประสิทธิภาพเชิงโต้ตอบทันทีหรือไม่ (มี/ไม่มี):",
1128
+ "starting": "กำลังเริ่มต้นการเพิ่มประสิทธิภาพสถานที่เชิงโต้ตอบ...",
1129
+ "completed": "การเพิ่มประสิทธิภาพแพ็คเกจเสร็จสมบูรณ์",
1130
+ "later": "คุณสามารถเรียกใช้การเพิ่มประสิทธิภาพสถานที่ได้ในภายหลังด้วย:",
1131
+ "unavailable": "ไม่สามารถเสนอการเพิ่มประสิทธิภาพสถานที่ได้: {error}"
1132
+ }
1133
+ },
1134
+ "language": {
1135
+ "title": "🌍 เปลี่ยนภาษา",
1136
+ "separator": "============================================================",
1137
+ "current": "ภาษาปัจจุบัน: {language}",
1138
+ "available": "ภาษาที่ใช้ได้:",
1139
+ "languageOption": "{index}. {displayName}{current}",
1140
+ "backToMainMenu": "กลับไปที่เมนูหลัก",
1141
+ "prompt": "เลือกภาษา (0-8):",
1142
+ "cancelled": "การเปลี่ยนแปลงภาษาถูกยกเลิก",
1143
+ "invalid": "ตัวเลือกไม่ถูกต้อง โปรดลองอีกครั้ง",
1144
+ "changed": "ภาษาเปลี่ยนเป็น: {language}",
1145
+ "changeFailed": "ไม่สามารถเปลี่ยนภาษา: {error}",
1146
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ..."
1147
+ },
1148
+ "maintainLanguagePurity": {
1149
+ "workflow_title": "🚀 ขั้นตอนการบำรุงรักษาความบริสุทธิ์ของภาษา",
1150
+ "step1_title": "📊 ขั้นตอนที่ 1: การประเมินความบริสุทธิ์ของภาษาเริ่มต้น",
1151
+ "step2_title": "🏽 ขั้นตอนที่ 2: ตรวจจับและแก้ไขภาษาที่ไม่ตรงกันโดยอัตโนมัติ",
1152
+ "step3_title": "🌐 ขั้นตอนที่ 3: ใช้การแปลอัตโนมัติ",
1153
+ "step4_title": "✅ ขั้นตอนที่ 4: การประเมินความบริสุทธิ์ของภาษาขั้นสุดท้าย",
1154
+ "workflow_error": "❌ ข้อผิดพลาดขั้นตอนการทำงาน: {errorMessage}",
1155
+ "running_initial_validation": "กำลังเรียกใช้การตรวจสอบความบริสุทธิ์ของภาษาเริ่มต้น...",
1156
+ "initial_assessment_complete": "✅ การประเมินเบื้องต้นเสร็จสมบูรณ์: {count} พบการละเมิด",
1157
+ "initial_assessment_warnings": "⚠️ การประเมินเบื้องต้นเสร็จสมบูรณ์พร้อมคำเตือน",
1158
+ "detecting_fixing_mismatches": "กำลังตรวจจับและแก้ไขภาษาที่ไม่ตรงกัน...",
1159
+ "detection_complete_applying_fixes": "การตรวจจับเสร็จสมบูรณ์ กำลังใช้การแก้ไขอัตโนมัติ...",
1160
+ "mismatch_fixes_complete": "✅ แก้ไขภาษาที่ไม่ตรงกันเสร็จสมบูรณ์: {count} ใช้การแก้ไขแล้ว",
1161
+ "mismatch_fixes_warnings": "⚠️ แก้ไขภาษาที่ไม่ตรงกันเสร็จสมบูรณ์พร้อมคำเตือน",
1162
+ "applying_automatic_translations": "กำลังใช้การแปลอัตโนมัติ...",
1163
+ "translation_preview_complete": "ดูตัวอย่างการแปลเสร็จสมบูรณ์ กำลังใช้คำแปล..."
1164
+ },
1165
+ "menu": {
1166
+ "title": "🌐 เมนูการจัดการ I18NTK",
1167
+ "separator": "============================================================",
1168
+ "options": {
1169
+ "init": "🚀 เริ่มต้นภาษาใหม่",
1170
+ "analyze": "🔍 วิเคราะห์การแปล",
1171
+ "validate": "✅ ตรวจสอบการแปล",
1172
+ "usage": "📊 ตรวจสอบการใช้งานกุญแจ",
1173
+ "complete": "🎯 การแปลที่สมบูรณ์ (ครอบคลุม 100%)",
1174
+ "sizing": "📏 วิเคราะห์ขนาด",
1175
+ "fix": "🛠️ แก้ไขการแปลตัวยึดตำแหน่ง",
1176
+ "scanner": "🔍 สแกนหาปัญหา i18n",
1177
+ "translate": "🌐 แปลอัตโนมัติ",
1178
+ "workflow": "🔄 รันเวิร์กโฟลว์เต็มรูปแบบ",
1179
+ "status": "📋 แสดงสถานะโครงการ",
1180
+ "delete": "🗑️ ลบรายงานทั้งหมด",
1181
+ "language": "🌍 เปลี่ยนภาษา UI",
1182
+ "settings": "⚙️ การตั้งค่า",
1183
+ "help": "❓ช่วยเหลือ",
1184
+ "debug": "🏽 เครื่องมือแก้ไขข้อบกพร่อง",
1185
+ "exit": "🚪 ออก"
1186
+ },
1187
+ "update": "📦 อัพเดตแพ็คเกจ",
1188
+ "goodbye": "😏 ลาก่อน!",
1189
+ "invalidChoice": "ตัวเลือกไม่ถูกต้อง กรุณาเลือก 0-15",
1190
+ "returning": "กลับสู่เมนูหลัก...",
1191
+ "invalidOption": "ตัวเลือกไม่ถูกต้อง โปรดลองอีกครั้ง",
1192
+ "nonInteractiveModeWarning": "ตรวจพบโหมดที่ไม่โต้ตอบ เมนูที่แสดงสำหรับการอ้างอิงเท่านั้น",
1193
+ "useDirectExecution": "ใช้: โหนด main/manage/index.js --command=<command> เพื่อการดำเนินการโดยตรง",
1194
+ "useHelpForCommands": "ใช้: node main/manage/index.js --help สำหรับคำสั่งที่มีอยู่",
1195
+ "returnToMainMenu": "กด Enter เพื่อกลับสู่เมนูหลัก",
1196
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
1197
+ "selectOptionPrompt": "เลือกตัวเลือก:",
1198
+ "selectDebugToolPrompt": "เลือกเครื่องมือแก้ไขข้อบกพร่อง:",
1199
+ "selectLogPrompt": "เลือกไฟล์บันทึก (1-{count}):",
1200
+ "autoDetectedI18nDirectory": "ไดเร็กทอรี i18n ที่ตรวจพบอัตโนมัติ: {directory}",
1201
+ "executingCommand": "การดำเนินการคำสั่ง: {command}",
1202
+ "unknownCommand": "คำสั่งที่ไม่รู้จัก: {command}",
1203
+ "languageOption": "{index}. {displayName}{current}",
1204
+ "debugTools": {
1205
+ "1": "การวิเคราะห์ไฟล์บันทึก",
1206
+ "2": "การวิเคราะห์การใช้คีย์การแปล",
1207
+ "3": "การวิเคราะห์ความสมบูรณ์ของการแปล",
1208
+ "4": "การวิเคราะห์รูปแบบการแปล",
1209
+ "5": "การวิเคราะห์ประเภทการแปล",
1210
+ "6": "การวิเคราะห์โครงสร้างการแปล"
1211
+ },
1212
+ "native_translations": {
1213
+ "exact_translation_found": "✅ {keyPath}: {value}",
1214
+ "no_exact_translation": "⚠️ ไม่มีคำแปลที่แน่นอนสำหรับ '{keyPath}' พบคีย์ที่คล้ายกัน:",
1215
+ "similar_key": "- {key} ({similarity}% จับคู่)",
1216
+ "processing_language_files": "🔄 กำลังประมวลผล {count} ไฟล์ภาษา...",
1217
+ "file_not_found": "⚠️ ไม่พบไฟล์: {file}",
1218
+ "processing_translations": "🌍 กำลังประมวลผล {code} การแปล...",
1219
+ "backup_created": "📋 สร้างการสำรองข้อมูลแล้ว: {filename}",
1220
+ "error_parsing_json": "❌ เกิดข้อผิดพลาดในการแยกวิเคราะห์ {code}.json: {errorMessage}",
1221
+ "existing_keys_found": "📊 {code}: พบ {count} คีย์ที่มีอยู่",
1222
+ "error_writing_json": "❌เขียนผิด. {code}.json: {errorMessage}",
1223
+ "translations_replaced": "📊 {code}: {count} การแปลแทนที่",
1224
+ "translation_replacement_complete": "✅ เปลี่ยนคำแปลเรียบร้อยแล้ว!",
1225
+ "total_replacements": "📊 การทดแทนทั้งหมด: {count}",
1226
+ "dry_run_mode": "⚠️ โหมด DRY RUN - ไม่มีการแก้ไขไฟล์",
1227
+ "tool_title": "🌍 ตัวแทนที่การแปลดั้งเดิม v1.9.1",
1228
+ "tool_separator": "======================================",
1229
+ "dry_run_warning": "⚠️ ทำงานในโหมด DRY RUN - ไม่มีไฟล์ใดที่จะได้รับการแก้ไข",
1230
+ "error_during_replacement": "❌ เกิดข้อผิดพลาดระหว่างการเปลี่ยนคำแปล:"
1231
+ }
1232
+ },
1233
+ "config": {
1234
+ "dirFallbackWarning": "⚠️ไดเร็กทอรี {dir} ไม่พบ โดยใช้ {fallback}.",
1235
+ "dirInvalidError": "❌ ไดเรกทอรีไม่ถูกต้อง: {dir}"
1236
+ },
1237
+ "operations": {
1238
+ "completed": "✅ ปฏิบัติการสำเร็จลุล่วงด้วยดี!",
1239
+ "deleteReportsTitle": "🗑️ ลบรายงาน บันทึก และแคช",
1240
+ "scanningForFiles": "🔍 กำลังสแกนหาไฟล์ที่จะลบ...",
1241
+ "noFilesFoundToDelete": "✅ไม่พบไฟล์ที่จะลบ",
1242
+ "availableDirectories": "📁 ไดเรกทอรีที่มีอยู่:",
1243
+ "allDirectories": "ไดเรกทอรีทั้งหมด",
1244
+ "andMore": "และอื่นๆ...",
1245
+ "cancelOption": "ยกเลิก",
1246
+ "cancelReportOption": "ยกเลิก / กลับสู่เมนู",
1247
+ "invalidSelection": "❌ การเลือกไม่ถูกต้อง",
1248
+ "foundFilesInSelectedDirectories": "📊 พบแล้ว {count} ไฟล์ในไดเร็กทอรีที่เลือก:",
1249
+ "deletionOptions": "🗑️ ตัวเลือกการลบ:",
1250
+ "deleteAllFiles": "ลบไฟล์ทั้งหมด",
1251
+ "keepLast3Files": "เก็บไฟล์ล่าสุด 3 ไฟล์ (ตามวันที่)",
1252
+ "keepLast5Files": "เก็บไฟล์ล่าสุด 5 ไฟล์ (ตามวันที่)",
1253
+ "noFilesToDelete": "✅ไม่มีไฟล์ให้ลบ",
1254
+ "filesToDeleteCount": "📋 ไฟล์ที่จะลบ: {count}",
1255
+ "filesToKeepCount": "📋 ไฟล์ที่จะเก็บไว้: {count}",
1256
+ "confirmDeletion": "⚠️ คุณแน่ใจหรือไม่ว่าต้องการลบไฟล์เหล่านี้ (มี/ไม่มี):",
1257
+ "deletedFile": "✅ ลบแล้ว: {filename}",
1258
+ "failedToDeleteFile": "❌ไม่สามารถลบได้ {filename}: {error}",
1259
+ "cancelled": "❌ การดำเนินการถูกยกเลิก",
1260
+ "init": {
1261
+ "title": "🚀 เริ่มต้นภาษาใหม่"
1262
+ },
1263
+ "usage": {
1264
+ "title": "📊 ตรวจสอบการใช้คีย์",
1265
+ "noUsedKeysHint": "พบการแปล แต่ไม่มีการใช้งานในแหล่งที่มา ตรวจสอบ --source-dir และ TranslationPatterns"
1266
+ },
1267
+ "analyze": {
1268
+ "title": "🔍 วิเคราะห์การแปล"
1269
+ },
1270
+ "validate": {
1271
+ "title": "✅ ตรวจสอบการแปล"
1272
+ },
1273
+ "settings": {
1274
+ "title": "⚙️ การจัดการการตั้งค่า",
1275
+ "separator": "============================================================"
1276
+ },
1277
+ "complete": {
1278
+ "deletingOldReport": "🗑️ ลบรายงานการใช้งานเก่าเพื่อวิเคราะห์ใหม่",
1279
+ "generatingFreshAnalysis": "🔄 กำลังสร้างการวิเคราะห์การใช้งานใหม่...",
1280
+ "couldNotGenerate": "⚠️ ไม่สามารถสร้างการวิเคราะห์การใช้งานได้ การใช้คีย์ที่หายไปทั่วไป",
1281
+ "reportNotFound": "⚠️ ไม่พบรายงานการใช้งาน กำลังสร้างการวิเคราะห์ใหม่...",
1282
+ "foundMissingKeys": "🔍 พบแล้ว {count} คีย์หายไปจากการวิเคราะห์การใช้งาน",
1283
+ "couldNotParse": "⚠️ ไม่สามารถแยกวิเคราะห์รายงานการใช้งานได้ การใช้คีย์ที่หายไปทั่วไป",
1284
+ "title": "🎯 การแปลให้เสร็จสิ้น",
1285
+ "separator": "============================================================",
1286
+ "sourceDir": "📁 ไดเรกทอรีต้นทาง: {sourceDir}",
1287
+ "sourceLanguage": "🔤 ภาษาต้นฉบับ: {sourceLanguage}",
1288
+ "dryRunMode": "🧪 โหมด DRY RUN - ไม่มีไฟล์ใดที่จะได้รับการแก้ไข",
1289
+ "languages": "🎯 ภาษาเป้าหมาย: {languages}",
1290
+ "addingMissingKeys": "➕ การเพิ่มคีย์ที่หายไปให้กับไฟล์การแปล...",
1291
+ "processing": "🔄 กำลังประมวลผล {language}...",
1292
+ "addedKeys": "✅เข้าเพิ่ม {count} กุญแจ",
1293
+ "changeDetails": "📝 {file}: {key}",
1294
+ "noChangesNeeded": "✅ไม่จำเป็นต้องเปลี่ยนแปลงใดๆ {language}",
1295
+ "summaryTitle": "📊 สรุปผลสำเร็จ",
1296
+ "totalChanges": "แปลก การเปลี่ยนแปลงทั้งหมด: {totalChanges}",
1297
+ "languagesProcessed": "🌐 ภาษาที่ประมวลผล: {languagesProcessed}",
1298
+ "missingKeysAdded": "➕ เพิ่มคีย์ที่หายไป: {missingKeysAdded}",
1299
+ "nextStepsTitle": "📋 NEXT STEPS",
1300
+ "nextStep1": "1. เรียกใช้การวิเคราะห์การใช้งาน:",
1301
+ "nextStep2": "2. ตรวจสอบการแปล:",
1302
+ "nextStep3": "3. วิเคราะห์ความสมบูรณ์:",
1303
+ "allKeysAvailable": "🎉 คีย์การแปลทั้งหมดพร้อมใช้งานแล้ว!",
1304
+ "runWithoutDryRun": "💡 ทำงานโดยไม่ต้อง --dry-run เพื่อใช้การเปลี่ยนแปลง",
1305
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ..."
1306
+ },
1307
+ "updatePackage": {
1308
+ "title": "📦 อัพเดทแพ็คเกจ i18n-toolkit",
1309
+ "description": "สิ่งนี้จะอัปเดตแพ็คเกจ i18n-toolkit เป็นเวอร์ชันล่าสุดที่มีอยู่ในเวลา 23.00 น.",
1310
+ "command": "คำสั่งให้รัน",
1311
+ "confirm": "คุณแน่ใจหรือไม่ว่าต้องการดำเนินการอัปเดตต่อไป (มี/ไม่มี):",
1312
+ "updating": "กำลังอัปเดตแพ็คเกจ... อาจใช้เวลาสักครู่",
1313
+ "success": "✅ อัปเดต i18n-toolkit สำเร็จแล้ว!",
1314
+ "error": "❌ ไม่สามารถอัปเดต i18n-toolkit",
1315
+ "cancelled": "❌ ยกเลิกการอัพเดตแล้ว"
1316
+ }
1317
+ },
1318
+ "security": {
1319
+ "pathValidationFailed": "path_validation_failed",
1320
+ "invalidInputType": "invalid_input_type",
1321
+ "pathTraversalAttempt": "path_traversal_attempt",
1322
+ "pathValidated": "✅ ตรวจสอบเส้นทางสำเร็จแล้ว",
1323
+ "pathValidationError": "path_validation_error",
1324
+ "fileTooLarge": "ความปลอดภัย: ไฟล์มีขนาดใหญ่เกินไป: {filePath}",
1325
+ "fileReadError": "ความปลอดภัย: ข้อผิดพลาดในการอ่านไฟล์: {errorMessage}",
1326
+ "contentTooLargeForFile": "ความปลอดภัย: เนื้อหามีขนาดใหญ่เกินไปสำหรับไฟล์: {filePath}",
1327
+ "fileWriteError": "ความปลอดภัย: ข้อผิดพลาดในการเขียนไฟล์: {errorMessage}",
1328
+ "jsonStringTooLarge": "ความปลอดภัย: สตริง JSON ใหญ่เกินไป",
1329
+ "jsonParseError": "ความปลอดภัย: ข้อผิดพลาดในการแยกวิเคราะห์ JSON: {errorMessage}",
1330
+ "inputContainsDisallowedCharacters": "ความปลอดภัย: อินพุตมีอักขระที่ไม่ได้รับอนุญาต",
1331
+ "unknownCommandArgument": "ความปลอดภัย: อาร์กิวเมนต์คำสั่งที่ไม่รู้จัก: {key}",
1332
+ "unknown_command_argument": "ความปลอดภัย: อาร์กิวเมนต์คำสั่งที่ไม่รู้จัก: {key}",
1333
+ "unknownConfigKey": "ความปลอดภัย: คีย์การกำหนดค่าที่ไม่รู้จัก: {key}",
1334
+ "unknown_config_key": "ความปลอดภัย: คีย์การกำหนดค่าที่ไม่รู้จัก: {key}",
1335
+ "securityAlert": "[การแจ้งเตือนด้านความปลอดภัย] {timestamp}: {event}",
1336
+ "contentTooLarge": "ความปลอดภัย: เนื้อหามีขนาดใหญ่เกินไปสำหรับไฟล์: {validatedPath}",
1337
+ "inputDisallowedCharacters": "ความปลอดภัย: อินพุตมีอักขระที่ไม่ได้รับอนุญาต",
1338
+ "unknownCommandArg": "อาร์กิวเมนต์คำสั่งที่ไม่รู้จัก",
1339
+ "logMessage": "[ความปลอดภัย {level}] {timestamp}: {event}",
1340
+ "alertMessage": "[การแจ้งเตือนด้านความปลอดภัย] {timestamp}: {event}",
1341
+ "securityWarning": "[คำเตือนด้านความปลอดภัย] {timestamp}: {event}",
1342
+ "json_parse_error": "ความปลอดภัย: ข้อผิดพลาดในการแยกวิเคราะห์ JSON: {errorMessage}",
1343
+ "file_too_large": "ไฟล์มีขนาดใหญ่เกินไป",
1344
+ "file_read_error": "ข้อผิดพลาดในการอ่านไฟล์",
1345
+ "content_too_large_for_file": "เนื้อหาใหญ่เกินไปสำหรับไฟล์",
1346
+ "file_write_error": "เกิดข้อผิดพลาดในการเขียนไฟล์",
1347
+ "json_string_too_large": "สตริง Json ใหญ่เกินไป",
1348
+ "recursion_detected": "ตรวจพบการเรียกซ้ำใน {operation}",
1349
+ "operation_timeout": "หมดเวลาดำเนินการ: {operation}",
1350
+ "operation_error": "การดำเนินการผิดพลาดใน {operation}: {error}",
1351
+ "directory_read_error": "ข้อผิดพลาดในการอ่านไดเรกทอรี: {errorMessage}",
1352
+ "security_alert": "การแจ้งเตือนความปลอดภัย"
1353
+ },
1354
+ "settings-cli": {
1355
+ "settings": {
1356
+ "mainMenu": {
1357
+ "title": "เมนูหลัก:",
1358
+ "uiSettings": "การตั้งค่า UI",
1359
+ "uiSettingsDesc": "ตัวเลือกภาษา ธีม และอินเทอร์เฟซ",
1360
+ "directorySettings": "การตั้งค่าไดเรกทอรี",
1361
+ "directorySettingsDesc": "เส้นทางไดเร็กทอรีต้นทางและเอาต์พุต",
1362
+ "scriptDirectorySettings": "การตั้งค่าไดเรกทอรีสคริปต์",
1363
+ "scriptDirectorySettingsDesc": "เส้นทางไดเร็กทอรีสำหรับการดำเนินการสคริปต์แต่ละรายการ",
1364
+ "processingSettings": "การตั้งค่าการประมวลผล",
1365
+ "processingSettingsDesc": "ขนาดแบตช์ ความสอดคล้อง และประสิทธิภาพ",
1366
+ "advancedSettings": "การตั้งค่าขั้นสูง",
1367
+ "advancedSettingsDesc": "การตรวจสอบความถูกต้อง การบันทึก และตัวเลือกของผู้เชี่ยวชาญ",
1368
+ "viewAllSettings": "ดูการตั้งค่าทั้งหมด",
1369
+ "viewAllSettingsDesc": "แสดงการกำหนดค่าปัจจุบัน",
1370
+ "importExport": "นำเข้า/ส่งออก",
1371
+ "importExportDesc": "สำรองและกู้คืนการตั้งค่า",
1372
+ "resetToDefaults": "รีเซ็ตเป็นค่าเริ่มต้น",
1373
+ "resetToDefaultsDesc": "คืนค่าการตั้งค่าจากโรงงาน",
1374
+ "reportBug": "รายงานข้อผิดพลาด",
1375
+ "reportBugDesc": "ส่งรายงานปัญหาบน GitHub",
1376
+ "saveChanges": "บันทึกการเปลี่ยนแปลง",
1377
+ "saveChangesDesc": "บันทึกการตั้งค่าปัจจุบันลงในไฟล์",
1378
+ "updatePackage": "อัพเดตแพ็คเกจ",
1379
+ "updatePackageDesc": "อัพเดตแพ็คเกจ i18n-toolkit ผ่าน npm",
1380
+ "help": "ช่วย",
1381
+ "helpDesc": "แสดงข้อมูลความช่วยเหลือโดยละเอียด",
1382
+ "quit": "ล้มเลิก",
1383
+ "quitDesc": "ออกจากการตั้งค่า (พร้อมแจ้งบันทึกหากจำเป็น)",
1384
+ "unsavedChangesWarning": "⚠️ คุณยังไม่ได้บันทึกการเปลี่ยนแปลง",
1385
+ "saveChangesBeforeQuit": "คุณต้องการบันทึกการเปลี่ยนแปลงก่อนที่จะออกหรือไม่ (มี/ไม่มี):",
1386
+ "selectOption": "เลือกตัวเลือก:",
1387
+ "goodbyeMessage": "ขอขอบคุณที่ใช้ตัวจัดการการตั้งค่า i18n!"
1388
+ },
1389
+ "goodbyeMessage": "ขอขอบคุณที่ใช้ตัวจัดการการตั้งค่า i18n!",
1390
+ "relativePathHint": "ใช้เส้นทางสัมพันธ์จากไดเรกทอรีนี้ (เช่น ./src/i18n/locales)",
1391
+ "currentDirectory": "ไดเรกทอรีโครงการปัจจุบัน"
1392
+ },
1393
+ "settings_manager": {
1394
+ "error_loading_settings": "❌ เกิดข้อผิดพลาดในการโหลดการตั้งค่า:",
1395
+ "error_saving_settings": "❌ เกิดข้อผิดพลาดในการบันทึกการตั้งค่า:",
1396
+ "error_setting_value": "❌ การตั้งค่าผิดพลาด:",
1397
+ "missing_required_setting": "❌ ขาดการตั้งค่าที่จำเป็น: {prop}",
1398
+ "invalid_language": "❌ ภาษาไม่ถูกต้อง: {language}",
1399
+ "invalid_source_language": "❌ ภาษาต้นฉบับไม่ถูกต้อง: {sourceLanguage}",
1400
+ "default_languages_must_be_array": "❌ defaultLanguages ​​ต้องเป็นอาร์เรย์",
1401
+ "invalid_date_format": "❌ รูปแบบวันที่ไม่ถูกต้อง: {dateFormat}. รูปแบบที่ถูกต้อง: {validFormats}",
1402
+ "invalid_time_format": "❌ รูปแบบเวลาไม่ถูกต้อง: {timeFormat}. รูปแบบที่ถูกต้อง: {validFormats}",
1403
+ "notifications_types_must_be_object": "❌การแจ้งเตือนประเภทจะต้องเป็นวัตถุ",
1404
+ "exclude_files_must_be_array": "❌excludeFiles ต้องเป็นอาร์เรย์",
1405
+ "exclude_dirs_must_be_array": "❌ ยกเว้น Dirs จะต้องเป็นอาร์เรย์",
1406
+ "include_extensions_must_be_array": "❌ includeExtensions ต้องเป็นอาร์เรย์",
1407
+ "invalid_batch_size": "❌ ขนาดชุดไม่ถูกต้อง ต้องเป็นจำนวนบวก",
1408
+ "invalid_max_concurrent_files": "❌ ไฟล์พร้อมกันสูงสุดไม่ถูกต้อง ต้องเป็นจำนวนบวก",
1409
+ "invalid_sizing_threshold": "❌เกณฑ์ขนาดไม่ถูกต้อง ต้องเป็นจำนวนบวก",
1410
+ "invalid_timeout": "❌ หมดเวลาไม่ถูกต้อง ต้องมีอย่างน้อย 1,000ms",
1411
+ "invalid_sizing_format": "❌ รูปแบบขนาดไม่ถูกต้อง: {sizingFormat}. รูปแบบที่ถูกต้อง: {validFormats}",
1412
+ "error_validating_settings": "❌ เกิดข้อผิดพลาดในการตรวจสอบการตั้งค่า:",
1413
+ "backup_created": "📋 สร้างการสำรองข้อมูลแล้ว: {backupPath}",
1414
+ "error_creating_backup": "❌ เกิดข้อผิดพลาดในการสร้างข้อมูลสำรอง:",
1415
+ "language_not_supported": "ภาษา '{language}' ไม่รองรับ มีอยู่: {availableLanguages}",
1416
+ "ui_language_set": "🌍 ตั้งค่าภาษา UI เป็น: {language}"
1417
+ }
1418
+ },
1419
+ "settings": {
1420
+ "title": "⚙️ การจัดการการตั้งค่า",
1421
+ "separator": "============================================================",
1422
+ "goodbyeMessage": "ขอขอบคุณที่ใช้ตัวจัดการการตั้งค่า i18ntk!",
1423
+ "relativePathHint": "ใช้เส้นทางสัมพันธ์จากไดเรกทอรีนี้ (เช่น ./src/i18n/locales)",
1424
+ "currentDirectory": "ไดเรกทอรีโครงการปัจจุบัน",
1425
+ "startingSettings": "การตั้งค่าเริ่มต้น:",
1426
+ "pin": "PIN:",
1427
+ "reportBug": {
1428
+ "title": "รายงานข้อผิดพลาด",
1429
+ "description": "รายงานปัญหาหรือข้อบกพร่องใด ๆ ที่คุณพบ",
1430
+ "guidance": "หากต้องการรายงานปัญหาอย่างมีประสิทธิภาพ:",
1431
+ "checkLogs": "1. ตรวจสอบบันทึกการแก้ไขข้อบกพร่องในไดเรกทอรีโครงการของคุณ",
1432
+ "documentIssue": "2. บันทึกปัญหาพร้อมขั้นตอนในการทำซ้ำ",
1433
+ "contactSupport": "3. ติดต่อผู้ดูแลระบบหรือทีมสนับสนุนของคุณ",
1434
+ "completed": "คำแนะนำการรายงานข้อผิดพลาดปรากฏขึ้น",
1435
+ "instructions": "ปฏิบัติตามคำแนะนำข้างต้นเพื่อรายงานจุดบกพร่อง"
1436
+ },
1437
+ "mainMenu": {
1438
+ "title": "เมนูหลัก:",
1439
+ "uiSettings": "การตั้งค่า UI",
1440
+ "uiSettingsDesc": "ตัวเลือกภาษา ธีม และอินเทอร์เฟซ",
1441
+ "directorySettings": "การตั้งค่าไดเรกทอรี",
1442
+ "directorySettingsDesc": "เส้นทางไดเร็กทอรีต้นทางและเอาต์พุต",
1443
+ "processingSettings": "การตั้งค่าการประมวลผล",
1444
+ "processingSettingsDesc": "ขนาดแบตช์ ความสอดคล้อง และประสิทธิภาพ",
1445
+ "advancedSettings": "การตั้งค่าขั้นสูง",
1446
+ "advancedSettingsDesc": "การตรวจสอบความถูกต้อง การบันทึก และตัวเลือกของผู้เชี่ยวชาญ",
1447
+ "viewAllSettings": "ดูการตั้งค่าทั้งหมด",
1448
+ "viewAllSettingsDesc": "แสดงการกำหนดค่าปัจจุบัน",
1449
+ "importExport": "นำเข้า/ส่งออก",
1450
+ "updatePackage": "อัพเดตแพ็คเกจ",
1451
+ "updatePackageDesc": "อัพเดตแพ็คเกจ i18n-toolkit ผ่าน npm",
1452
+ "importExportDesc": "สำรองและกู้คืนการตั้งค่า",
1453
+ "resetToDefaults": "รีเซ็ตเป็นค่าเริ่มต้น",
1454
+ "resetToDefaultsDesc": "คืนค่าการตั้งค่าจากโรงงาน",
1455
+ "reportBug": "รายงานข้อผิดพลาด",
1456
+ "reportBugDesc": "ส่งรายงานปัญหาบน GitHub",
1457
+ "saveChanges": "บันทึกการเปลี่ยนแปลง",
1458
+ "saveChangesDesc": "บันทึกการตั้งค่าปัจจุบันลงในไฟล์",
1459
+ "help": "ช่วย",
1460
+ "helpDesc": "แสดงข้อมูลความช่วยเหลือโดยละเอียด",
1461
+ "quit": "ล้มเลิก",
1462
+ "quitDesc": "ออกจากการตั้งค่า (พร้อมแจ้งบันทึกหากจำเป็น)",
1463
+ "unsavedChangesWarning": "⚠️ คุณยังไม่ได้บันทึกการเปลี่ยนแปลง",
1464
+ "saveChangesBeforeQuit": "คุณต้องการบันทึกการเปลี่ยนแปลงก่อนที่จะออกหรือไม่ (มี/ไม่มี):",
1465
+ "selectOption": "เลือกตัวเลือก:",
1466
+ "goodbyeMessage": "ขอขอบคุณที่ใช้ตัวจัดการการตั้งค่า i18n!",
1467
+ "selectSettingPrompt": "เลือกการตั้งค่าที่จะแก้ไข (หรือ 'b' เพื่อย้อนกลับ):",
1468
+ "enterNewValue": "ป้อนค่าใหม่:",
1469
+ "updatedSuccessfully": "{setting} อัปเดตเรียบร้อยแล้ว!",
1470
+ "scriptDirectorySettings": "การตั้งค่าไดเรกทอรีสคริปต์",
1471
+ "scriptDirectoryDesc": "ระบุไดเร็กทอรีที่กำหนดเองสำหรับแต่ละสคริปต์",
1472
+ "scriptDirectorySettingsDesc": "คุณสามารถตั้งค่าไดเร็กทอรีที่กำหนดเองสำหรับแต่ละสคริปต์ได้ หากไม่ได้ตั้งค่า ระบบจะใช้การตั้งค่าส่วนกลาง",
1473
+ "currentDirectory": "ไดเรกทอรีโครงการปัจจุบัน",
1474
+ "securitySettings": "การตั้งค่าความปลอดภัย",
1475
+ "securitySettingsDesc": "PIN ผู้ดูแลระบบและตัวเลือกความปลอดภัยอื่นๆ",
1476
+ "backupSettings": "การตั้งค่าการสำรองข้อมูล",
1477
+ "backupSettingsDesc": "สำรองและกู้คืนการตั้งค่าการกำหนดค่า",
1478
+ "autoTranslate": "แปลอัตโนมัติ",
1479
+ "autoTranslateDesc": "ปรับแต่งการจัดการตัวยึดตำแหน่ง การทำงานพร้อมกัน การแบ่งกลุ่ม และรายงาน"
1480
+ },
1481
+ "updatePackage": {
1482
+ "title": "อัพเดตแพ็คเกจ",
1483
+ "description": "อัพเดตแพ็คเกจ i18n-toolkit ผ่าน npm",
1484
+ "command": "อัพเดต npm i18ntk -g",
1485
+ "success": "การอัปเดตเสร็จสมบูรณ์แล้ว",
1486
+ "failed": "การอัปเดตล้มเหลว",
1487
+ "prompt": "คุณต้องการอัปเดตแพ็คเกจตอนนี้หรือไม่? (มี/ไม่มี):",
1488
+ "promptDesc": "หมายเหตุ: สิ่งนี้จะอัปเดตแพ็คเกจ i18ntk เป็นเวอร์ชันล่าสุด",
1489
+ "confirm": "ย",
1490
+ "cancelled": "การอัปเดตถูกยกเลิก",
1491
+ "error": "ไม่สามารถอัปเดตแพ็คเกจได้",
1492
+ "updating": "กำลังอัปเดตแพ็กเกจ..."
1493
+ },
1494
+ "admin": {
1495
+ "selectOption": "เลือกตัวเลือก:",
1496
+ "updateSuccess": "อัปเดต PIN ผู้ดูแลระบบเรียบร้อยแล้ว!",
1497
+ "updateFailed": "อัปเดต PIN ของผู้ดูแลระบบไม่สำเร็จ",
1498
+ "protectionRemoved": "การป้องกัน PIN ของผู้ดูแลระบบถูกลบออก",
1499
+ "configSuccess": "กำหนดค่า PIN ผู้ดูแลระบบเรียบร้อยแล้ว!",
1500
+ "configFailed": "กำหนดค่า PIN ของผู้ดูแลระบบไม่สำเร็จ",
1501
+ "setupPinPrompt": "คุณต้องการตั้งค่า PIN ของผู้ดูแลระบบหรือไม่ (มี/ไม่มี):",
1502
+ "pinUpdatedSuccess": "อัปเดต PIN ผู้ดูแลระบบเรียบร้อยแล้ว!",
1503
+ "pinUpdatedFailed": "อัปเดต PIN ของผู้ดูแลระบบไม่สำเร็จ",
1504
+ "pinRemoved": "การป้องกัน PIN ของผู้ดูแลระบบถูกลบออก",
1505
+ "pinConfiguredSuccess": "กำหนดค่า PIN ผู้ดูแลระบบเรียบร้อยแล้ว!",
1506
+ "pinConfiguredFailed": "กำหนดค่า PIN ของผู้ดูแลระบบไม่สำเร็จ",
1507
+ "accessDenied": "❌ การเข้าถึงถูกปฏิเสธ กำลังกลับเข้าสู่เมนู",
1508
+ "setupPin": "🔐 การตั้งค่า PIN ผู้ดูแลระบบ...",
1509
+ "setupFailed": "❌ ไม่สามารถตั้งค่า PIN ผู้ดูแลระบบได้ การตั้งค่าไม่เปลี่ยนแปลง",
1510
+ "pinConfigured": "📌 PIN ผู้ดูแลระบบได้รับการกำหนดค่าแล้ว",
1511
+ "options": "ตัวเลือก:",
1512
+ "changePin": "1) เปลี่ยน PIN ที่มีอยู่",
1513
+ "removePin": "2) ลบการป้องกัน PIN",
1514
+ "cancel": "3) ยกเลิก",
1515
+ "verifyCurrentPin": "🔐 ตรวจสอบ PIN ปัจจุบันก่อน:",
1516
+ "settingNewPin": "🔄 การตั้งค่า PIN ใหม่...",
1517
+ "verifyToRemove": "🔐 ตรวจสอบ PIN ปัจจุบันเพื่อลบการป้องกัน:",
1518
+ "noPinConfigured": "🔓 ขณะนี้ไม่มีการกำหนดค่า PIN ของผู้ดูแลระบบ",
1519
+ "pinBenefits": "การตั้งค่า PIN ของผู้ดูแลระบบจะเพิ่มความปลอดภัยสำหรับ:",
1520
+ "benefitSecurity": "• การเปลี่ยนการตั้งค่าความปลอดภัย",
1521
+ "benefitAdvanced": "• การปรับเปลี่ยนการกำหนดค่าขั้นสูง",
1522
+ "benefitDebug": "• การเข้าถึงเครื่องมือแก้ไขข้อบกพร่อง",
1523
+ "benefitReset": "• การรีเซ็ตการตั้งค่า",
1524
+ "setupCancelled": "⏭️ การตั้งค่า PIN ผู้ดูแลระบบถูกยกเลิก",
1525
+ "operationCancelled": "❌ การดำเนินการถูกยกเลิก",
1526
+ "startingSettings": "🎛️ กำลังเริ่มการตั้งค่า CLI...",
1527
+ "authRequired": "🔒 ต้องมีการรับรองความถูกต้องของผู้ดูแลระบบสำหรับ: {label}",
1528
+ "pinSetupTitle": "การตั้งค่า PIN ผู้ดูแลระบบ",
1529
+ "browserOpenFailed": "ไม่สามารถเปิดเบราว์เซอร์โดยอัตโนมัติได้",
1530
+ "manualVisit": "กรุณาเยี่ยมชมด้วยตนเอง: {url}",
1531
+ "browserOpened": "✅ เปิดเบราว์เซอร์สำเร็จแล้ว!"
1532
+ },
1533
+ "importExport": {
1534
+ "title": "การตั้งค่าการนำเข้า/ส่งออก",
1535
+ "export": "การตั้งค่าการส่งออก",
1536
+ "import": "นำเข้าการตั้งค่า",
1537
+ "backup": "สร้างข้อมูลสำรอง",
1538
+ "enterFilename": "ป้อนชื่อไฟล์ (หรือกด Enter เป็นค่าเริ่มต้น):",
1539
+ "exportSuccess": "การตั้งค่าที่ส่งออกไปที่ {file}",
1540
+ "exportFailed": "ไม่สามารถส่งออกการตั้งค่า: {error}",
1541
+ "importFilename": "ป้อนชื่อไฟล์ที่จะนำเข้า:",
1542
+ "fileNotFound": "ไม่พบไฟล์.",
1543
+ "invalidFormat": "รูปแบบไฟล์การตั้งค่าไม่ถูกต้อง",
1544
+ "confirmImport": "สิ่งนี้จะแทนที่การตั้งค่าปัจจุบันทั้งหมด ดำเนินการต่อ? (มี/ไม่มี):",
1545
+ "importSuccess": "นำเข้าการตั้งค่าเรียบร้อยแล้ว",
1546
+ "importFailed": "ไม่สามารถนำเข้าการตั้งค่า: {error}",
1547
+ "backupSuccess": "สร้างข้อมูลสำรองแล้ว: {file}",
1548
+ "backupFailed": "ไม่สามารถสร้างข้อมูลสำรองได้: {error}",
1549
+ "exportFilenamePrompt": "ป้อนชื่อไฟล์ส่งออก:",
1550
+ "importConfirm": "นำเข้าไฟล์การตั้งค่านี้หรือไม่ (มี/ไม่มี):",
1551
+ "importFilenamePrompt": "ป้อนชื่อไฟล์นำเข้า:",
1552
+ "manageBackups": "จัดการการสำรองข้อมูล",
1553
+ "restore": "คืนค่าการตั้งค่า"
1554
+ },
1555
+ "selectOption": "เลือกตัวเลือก:",
1556
+ "resetToDefaultsTitle": "รีเซ็ตการตั้งค่าเป็นค่าเริ่มต้น",
1557
+ "resetWarning1": "⚠️การดำเนินการนี้จะรีเซ็ตการตั้งค่าทั้งหมดเป็นค่าเริ่มต้น",
1558
+ "resetWarning2": "การดำเนินการนี้ไม่สามารถยกเลิกได้",
1559
+ "resetConfirm": "คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ? (มี/ไม่มี):",
1560
+ "resetSuccess": "รีเซ็ตการตั้งค่าเป็นค่าเริ่มต้นสำเร็จ",
1561
+ "resetFailed": "ไม่สามารถรีเซ็ตการตั้งค่าได้: {error}",
1562
+ "resetDone": "รีเซ็ตการตั้งค่าเป็นค่าเริ่มต้นสำเร็จ",
1563
+ "resetScriptDirsDone": "ไดเร็กทอรีสคริปต์รีเซ็ตเป็นค่าเริ่มต้นของระบบสำเร็จ",
1564
+ "saveSuccess": "บันทึกการตั้งค่าเรียบร้อยแล้ว",
1565
+ "saveFailed": "ไม่สามารถบันทึกการตั้งค่า",
1566
+ "saveError": "การตั้งค่าที่ให้มาไม่ถูกต้อง",
1567
+ "pressEnter": "กด Enter เพื่อดำเนินการต่อ...",
1568
+ "initFailed": "ไม่สามารถเริ่มต้นการตั้งค่าได้: {error}",
1569
+ "invalidValueFormat": "รูปแบบค่าไม่ถูกต้อง",
1570
+ "help": {
1571
+ "title": "วิธีใช้การตั้งค่า",
1572
+ "navigationTitle": "การนำทาง",
1573
+ "navigation1": "1. การตั้งค่าทั่วไป - กำหนดค่าภาษา UI ธีม และการตั้งค่าพื้นฐาน",
1574
+ "navigation2": "2. การตั้งค่าไดเร็กทอรี - ตั้งค่าไดเร็กทอรีต้นทางและเอาต์พุตสำหรับไฟล์การแปล",
1575
+ "navigation3": "3. การตั้งค่าการประมวลผล - กำหนดขนาดแบทช์ การทำงานพร้อมกัน และตัวเลือกประสิทธิภาพ",
1576
+ "navigation4": "4. การตั้งค่าขั้นสูง - ตัวเลือกการตรวจสอบการเข้าถึง การบันทึก และการกำหนดค่าของผู้เชี่ยวชาญ",
1577
+ "categoriesTitle": "หมวดหมู่การตั้งค่า",
1578
+ "categoryUI": "• การตั้งค่า UI: ภาษาอินเทอร์เฟซ ธีมสี และการตั้งค่าการแสดงผล",
1579
+ "categoryDirectory": "• การตั้งค่าไดเร็กทอรี: ตำแหน่งไฟล์ต้นฉบับและไดเร็กทอรีรายงานเอาต์พุต",
1580
+ "categoryProcessing": "• การตั้งค่าการประมวลผล: การประมวลผลเป็นชุด ขีดจำกัดไฟล์ และการปรับแต่งประสิทธิภาพ",
1581
+ "categoryAdvanced": "• การตั้งค่าขั้นสูง: โหมดแก้ไขข้อบกพร่อง การบันทึกการตรวจสอบ และตัวเลือกความปลอดภัย",
1582
+ "envVarsTitle": "ตัวแปรสภาพแวดล้อม",
1583
+ "envVar1": "• I18N_SOURCE_DIR: แทนที่เส้นทางไดเรกทอรีต้นทางเริ่มต้น",
1584
+ "envVar2": "• I18N_OUTPUT_DIR: แทนที่เส้นทางไดเรกทอรีเอาต์พุตเริ่มต้น",
1585
+ "envVar3": "• I18N_DEBUG: เปิดใช้งานโหมดดีบัก (จริง/เท็จ)",
1586
+ "cliUsageTitle": "ตัวอย่างการใช้งาน CLI",
1587
+ "cliUsage1": "• npx i18ntk --settings: เปิดเมนูการตั้งค่าแบบโต้ตอบ",
1588
+ "cliUsage2": "• npx i18ntk --settings --lang de: เปิดการตั้งค่าเป็นภาษาเยอรมัน",
1589
+ "cliUsage3": "• npx i18ntk --reset-settings: รีเซ็ตการตั้งค่าทั้งหมดเป็นค่าเริ่มต้น",
1590
+ "navigation": "ใช้ปุ่มตัวเลขเพื่อเลือกตัวเลือก 'b' เพื่อย้อนกลับ",
1591
+ "editing": "ป้อนค่าใหม่เมื่อได้รับแจ้ง หรือกด Enter เพื่อให้เป็นค่าปัจจุบัน",
1592
+ "saving": "ใช้ 's' เพื่อบันทึกการเปลี่ยนแปลงก่อนที่จะออก",
1593
+ "reset": "ใช้ตัวเลือก 7 เพื่อรีเซ็ตการตั้งค่าทั้งหมดเป็นค่าเริ่มต้น"
1594
+ },
1595
+ "categories": {
1596
+ "uiSettings": "การตั้งค่า UI",
1597
+ "directorySettings": "การตั้งค่าไดเรกทอรี",
1598
+ "processingSettings": "การตั้งค่าการประมวลผล",
1599
+ "advancedSettings": "การตั้งค่าขั้นสูง",
1600
+ "scriptDirectorySettings": "การตั้งค่าไดเรกทอรีสคริปต์",
1601
+ "securitySettings": "การตั้งค่าความปลอดภัย",
1602
+ "autoTranslate": "การตั้งค่าการแปลอัตโนมัติ"
1603
+ },
1604
+ "security": {
1605
+ "title": "🔐 การตั้งค่าความปลอดภัย",
1606
+ "description": "กำหนดค่าตัวเลือกการป้องกัน PIN และความปลอดภัยของผู้ดูแลระบบ",
1607
+ "currentPin": "รหัส PIN ปัจจุบัน:",
1608
+ "pinConfigured": "✅ กำหนดค่าแล้ว",
1609
+ "pinNotConfigured": "❌ไม่ได้กำหนดค่า",
1610
+ "pinDisplay": "จอแสดงผลพิน:",
1611
+ "menu": {
1612
+ "enableDisable": "1) เปิด/ปิดการใช้งาน PIN ผู้ดูแลระบบ",
1613
+ "setupChange": "2) ตั้งค่า/เปลี่ยน PIN ผู้ดูแลระบบ",
1614
+ "sessionTimeout": "3) หมดเวลาเซสชัน",
1615
+ "maxAttempts": "4) ความพยายามสูงสุดที่ล้มเหลว",
1616
+ "lockoutDuration": "5) ระยะเวลาการล็อก",
1617
+ "back": "b) กลับสู่เมนูหลัก"
1618
+ },
1619
+ "prompts": {
1620
+ "enablePin": "เปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบไหม (มี/ไม่มี):",
1621
+ "disablePin": "ปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบใช่ไหม (มี/ไม่มี):",
1622
+ "enterTimeout": "ป้อนการหมดเวลาเซสชัน (นาที):",
1623
+ "enterMaxAttempts": "ป้อนความพยายามที่ล้มเหลวสูงสุด:",
1624
+ "enterLockoutDuration": "ป้อนระยะเวลาการล็อค (นาที):"
1625
+ },
1626
+ "messages": {
1627
+ "pinEnabled": "เปิดใช้งานการป้องกัน PIN ของผู้ดูแลระบบแล้ว",
1628
+ "pinDisabled": "การป้องกัน PIN ของผู้ดูแลระบบถูกปิดใช้งาน",
1629
+ "timeoutUpdated": "หมดเวลาเซสชันอัปเดตเป็น {minutes} นาที",
1630
+ "maxAttemptsUpdated": "ความพยายามที่ล้มเหลวสูงสุดได้รับการอัปเดตเป็น {attempts}",
1631
+ "lockoutDurationUpdated": "ระยะเวลาการล็อคได้รับการอัปเดตเป็น {minutes} นาที"
1632
+ }
1633
+ },
1634
+ "fields": {
1635
+ "backup.enabled": {
1636
+ "label": "Enable Backup",
1637
+ "description": "Enable automatic backup of settings",
1638
+ "help": "Enable/disable backup feature"
1639
+ },
1640
+ "backup.singleFileMode": {
1641
+ "label": "Single File Mode",
1642
+ "description": "Use single file for backups",
1643
+ "help": "Backup settings in a single file"
1644
+ },
1645
+ "backup.singleBackupFile": {
1646
+ "label": "Backup File Path",
1647
+ "description": "Path to the backup file",
1648
+ "help": "Path to the single backup file"
1649
+ },
1650
+ "backup.retentionDays": {
1651
+ "label": "Retention Period",
1652
+ "description": "Days to keep backup files",
1653
+ "help": "Number of days to retain old backup files"
1654
+ },
1655
+ "backup.maxBackups": {
1656
+ "label": "Maximum Backups",
1657
+ "description": "Maximum backup files to keep",
1658
+ "help": "Maximum number of backup files to keep"
1659
+ },
1660
+ "backup.confirm": {
1661
+ "label": "Confirm Backup",
1662
+ "description": "Require confirmation for backup operations",
1663
+ "help": "Confirm backup operation"
1664
+ },
1665
+ "i18nDir": {
1666
+ "label": "ไดเรกทอรี I18n",
1667
+ "description": "ไดเร็กทอรีที่มีไฟล์การแปล",
1668
+ "current": "ปัจจุบัน: {value}",
1669
+ "help": "พาธไปยังไดเร็กทอรีที่มีไฟล์การแปล"
1670
+ },
1671
+ "projectRoot": {
1672
+ "label": "รากของโครงการ",
1673
+ "description": "ไดเรกทอรีรากของโครงการ",
1674
+ "current": "ปัจจุบัน: {value}",
1675
+ "help": "พาธไปยังไดเร็กทอรีรากของโปรเจ็กต์"
1676
+ },
1677
+ "checkUsage": {
1678
+ "usage_analysis_failed": "การวิเคราะห์การใช้งานล้มเหลว",
1679
+ "usage_analysis_success": "วิเคราะห์การใช้งานสำเร็จ",
1680
+ "usage_analysis_complete": "การวิเคราะห์การใช้งานเสร็จสมบูรณ์",
1681
+ "usage_analysis_in_progress": "อยู่ระหว่างการวิเคราะห์การใช้งาน",
1682
+ "usage_analysis_started": "การวิเคราะห์การใช้งานเริ่มต้นขึ้น",
1683
+ "usage_analysis_skipped": "ข้ามการวิเคราะห์การใช้งานแล้ว"
1684
+ },
1685
+ "language": {
1686
+ "label": "ภาษาอินเทอร์เฟซ",
1687
+ "description": "ภาษาสำหรับอินเทอร์เฟซผู้ใช้",
1688
+ "current": "ปัจจุบัน: {value}",
1689
+ "help": "เลือกภาษาอินเทอร์เฟซที่คุณต้องการ"
1690
+ },
1691
+ "scriptDirectories": {
1692
+ "analyzeLabel": "วิเคราะห์ไดเร็กทอรีสคริปต์",
1693
+ "analyzeHelp": "วิเคราะห์ไดเรกทอรีสคริปต์สำหรับปัญหา",
1694
+ "completeLabel": "ไดเรกทอรีการตั้งค่าเสร็จสมบูรณ์",
1695
+ "initLabel": "เริ่มต้นไดเร็กทอรีสคริปต์",
1696
+ "manageLabel": "จัดการไดเรกทอรีสคริปต์",
1697
+ "sizingLabel": "การปรับขนาดไดเร็กทอรีสคริปต์",
1698
+ "summaryLabel": "ไดเรกทอรีรายงานสรุป",
1699
+ "usageLabel": "ไดเรกทอรีรายงานการใช้งาน",
1700
+ "validateLabel": "ตรวจสอบไดเรกทอรีสคริปต์"
1701
+ },
1702
+ "theme": {
1703
+ "label": "ธีมสี",
1704
+ "description": "การตั้งค่าธีม UI",
1705
+ "current": "ปัจจุบัน: {value}",
1706
+ "help": "เลือกระหว่างธีมสว่างและธีมมืด"
1707
+ },
1708
+ "dateFormat": {
1709
+ "label": "รูปแบบวันที่",
1710
+ "description": "รูปแบบการแสดงวันที่",
1711
+ "current": "ปัจจุบัน: {value}",
1712
+ "help": "เลือกวิธีแสดงวันที่ในรายงาน"
1713
+ },
1714
+ "notifications": {
1715
+ "enabled": {
1716
+ "label": "เปิดใช้งานการแจ้งเตือน",
1717
+ "description": "แสดงการแจ้งเตือนบนเดสก์ท็อป",
1718
+ "current": "ปัจจุบัน: {value}",
1719
+ "help": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อปสำหรับการดำเนินการที่เสร็จสมบูรณ์"
1720
+ }
1721
+ },
1722
+ "sourceDir": {
1723
+ "label": "ไดเรกทอรีต้นทาง",
1724
+ "description": "ไดเร็กทอรีที่มีไฟล์การแปล",
1725
+ "current": "ปัจจุบัน: {value}",
1726
+ "help": "พาธไปยังไดเร็กทอรีที่มีไฟล์การแปลต้นฉบับ"
1727
+ },
1728
+ "sourceLanguage": {
1729
+ "label": "ภาษาต้นฉบับ",
1730
+ "description": "ภาษาหลักสำหรับการแปล",
1731
+ "current": "ปัจจุบัน: {value}",
1732
+ "help": "ภาษาหลักที่ใช้เป็นแหล่งที่มาในการแปล"
1733
+ },
1734
+ "outputDir": {
1735
+ "label": "ไดเร็กทอรีเอาท์พุต",
1736
+ "description": "ไดเร็กทอรีสำหรับรายงานที่สร้างขึ้น",
1737
+ "current": "ปัจจุบัน: {value}",
1738
+ "help": "ตำแหน่งที่รายงานและไฟล์ที่ประมวลผลจะถูกบันทึก"
1739
+ },
1740
+ "batchSize": {
1741
+ "label": "ขนาดแบทช์",
1742
+ "description": "จำนวนสินค้าที่ประมวลผลต่อชุด",
1743
+ "current": "ปัจจุบัน: {value}",
1744
+ "help": "จำนวนไฟล์ที่ต้องประมวลผลในแต่ละชุด"
1745
+ },
1746
+ "maxConcurrentFiles": {
1747
+ "label": "ไฟล์สูงสุดที่เกิดขึ้นพร้อมกัน",
1748
+ "description": "ไฟล์สูงสุดที่ประมวลผลพร้อมกัน",
1749
+ "current": "ปัจจุบัน: {value}",
1750
+ "help": "จำนวนไฟล์สูงสุดที่จะประมวลผลในเวลาเดียวกัน"
1751
+ },
1752
+ "sizingThreshold": {
1753
+ "label": "เกณฑ์การกำหนดขนาด (%)",
1754
+ "description": "เกณฑ์สำหรับคำเตือนการเปลี่ยนแปลงขนาด",
1755
+ "current": "ปัจจุบัน: {value}%",
1756
+ "help": "เกณฑ์เปอร์เซ็นต์สำหรับการตรวจหาขนาดที่ไม่ตรงกัน"
1757
+ },
1758
+ "strictMode": {
1759
+ "label": "โหมดการตรวจสอบอย่างเข้มงวด",
1760
+ "description": "เปิดใช้งานโหมดการตรวจสอบที่เข้มงวด",
1761
+ "current": "ปัจจุบัน: {value}",
1762
+ "help": "เปิดใช้งานการตรวจสอบอย่างเข้มงวดสำหรับไฟล์การแปล"
1763
+ },
1764
+ "enableAuditLog": {
1765
+ "label": "เปิดใช้งานบันทึกการตรวจสอบ",
1766
+ "description": "ติดตามการเปลี่ยนแปลงการแปลทั้งหมด",
1767
+ "current": "ปัจจุบัน: {value}",
1768
+ "help": "บันทึกการเปลี่ยนแปลงทั้งหมดที่ทำกับไฟล์การแปล"
1769
+ },
1770
+ "backupBeforeChanges": {
1771
+ "label": "การสำรองข้อมูลอัตโนมัติ",
1772
+ "description": "สร้างการสำรองข้อมูลก่อนที่จะแก้ไข",
1773
+ "current": "ปัจจุบัน: {value}",
1774
+ "help": "สร้างการสำรองข้อมูลโดยอัตโนมัติก่อนทำการเปลี่ยนแปลง"
1775
+ },
1776
+ "advanced_maxConcurrentFiles": {
1777
+ "label": "ไฟล์สูงสุดที่เกิดขึ้นพร้อมกัน",
1778
+ "description": "ไฟล์สูงสุดที่ประมวลผลพร้อมกัน",
1779
+ "current": "ปัจจุบัน: {value}",
1780
+ "help": "จำนวนไฟล์สูงสุดที่จะประมวลผลในเวลาเดียวกัน"
1781
+ },
1782
+ "advanced_strictMode": {
1783
+ "label": "โหมดการตรวจสอบอย่างเข้มงวด",
1784
+ "description": "เปิดใช้งานโหมดการตรวจสอบที่เข้มงวด",
1785
+ "current": "ปัจจุบัน: {value}",
1786
+ "help": "เปิดใช้งานการตรวจสอบอย่างเข้มงวดสำหรับไฟล์การแปล"
1787
+ },
1788
+ "adminPinEnabled": {
1789
+ "label": "การป้องกัน PIN ของผู้ดูแลระบบ",
1790
+ "description": "เปิดใช้งานการตรวจสอบสิทธิ์ PIN ของผู้ดูแลระบบสำหรับการตั้งค่าที่ละเอียดอ่อน",
1791
+ "current": "ปัจจุบัน: {value}",
1792
+ "help": "ต้องใช้ PIN ของผู้ดูแลระบบเพื่อเปลี่ยนความปลอดภัยและการตั้งค่าขั้นสูง"
1793
+ },
1794
+ "sessionTimeout": {
1795
+ "label": "หมดเวลาเซสชัน",
1796
+ "description": "หมดเวลาเซสชันผู้ดูแลระบบในไม่กี่นาที",
1797
+ "current": "ปัจจุบัน: {value} นาที",
1798
+ "help": "ระยะเวลาที่เซสชันผู้ดูแลระบบยังคงใช้งานได้ก่อนที่จะต้องมีการตรวจสอบสิทธิ์อีกครั้ง"
1799
+ },
1800
+ "maxFailedAttempts": {
1801
+ "label": "ความพยายามสูงสุดล้มเหลว",
1802
+ "description": "จำนวนครั้งในการพยายาม PIN ที่ล้มเหลวสูงสุดก่อนการล็อก",
1803
+ "current": "ปัจจุบัน: {value} ความพยายาม",
1804
+ "help": "จำนวนครั้งในการพยายามป้อน PIN ที่ล้มเหลวที่อนุญาตก่อนการล็อกชั่วคราว"
1805
+ },
1806
+ "lockoutDuration": {
1807
+ "label": "ระยะเวลาการล็อค",
1808
+ "description": "ระยะเวลาของการล็อกหลังจากพยายามล้มเหลว",
1809
+ "current": "ปัจจุบัน: {value} นาที",
1810
+ "help": "ระยะเวลาที่ระบบยังคงล็อคอยู่หลังจากพยายามล้มเหลวสูงสุดแล้ว"
1811
+ },
1812
+ "scriptDirectories_analyze": {
1813
+ "label": "วิเคราะห์ไดเร็กทอรีสคริปต์",
1814
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับสคริปต์วิเคราะห์",
1815
+ "current": "ปัจจุบัน: {value}",
1816
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์วิเคราะห์ เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1817
+ },
1818
+ "scriptDirectories_complete": {
1819
+ "label": "ไดเรกทอรีการตั้งค่าเสร็จสมบูรณ์",
1820
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับสคริปต์การตั้งค่าที่สมบูรณ์",
1821
+ "current": "ปัจจุบัน: {value}",
1822
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์การตั้งค่าที่สมบูรณ์ เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1823
+ },
1824
+ "scriptDirectories_init": {
1825
+ "label": "เริ่มต้นไดเร็กทอรีสคริปต์",
1826
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับการเริ่มต้นสคริปต์",
1827
+ "current": "ปัจจุบัน: {value}",
1828
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์เตรียมใช้งาน เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1829
+ },
1830
+ "scriptDirectories_manage": {
1831
+ "label": "จัดการไดเรกทอรีสคริปต์",
1832
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับจัดการสคริปต์",
1833
+ "current": "ปัจจุบัน: {value}",
1834
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์จัดการ เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1835
+ },
1836
+ "scriptDirectories_sizing": {
1837
+ "label": "การปรับขนาดไดเร็กทอรีสคริปต์",
1838
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับการปรับขนาดสคริปต์",
1839
+ "current": "ปัจจุบัน: {value}",
1840
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์การกำหนดขนาด เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1841
+ },
1842
+ "scriptDirectories_summary": {
1843
+ "label": "ไดเรกทอรีรายงานสรุป",
1844
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับสคริปต์รายงานสรุป",
1845
+ "current": "ปัจจุบัน: {value}",
1846
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์รายงานสรุป เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1847
+ },
1848
+ "scriptDirectories_usage": {
1849
+ "label": "ไดเรกทอรีรายงานการใช้งาน",
1850
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับสคริปต์รายงานการใช้งาน",
1851
+ "current": "ปัจจุบัน: {value}",
1852
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์รายงานการใช้งาน เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1853
+ },
1854
+ "scriptDirectories_validate": {
1855
+ "label": "ตรวจสอบไดเรกทอรีสคริปต์",
1856
+ "description": "ไดเร็กทอรีที่กำหนดเองสำหรับตรวจสอบสคริปต์",
1857
+ "current": "ปัจจุบัน: {value}",
1858
+ "help": "ระบุไดเร็กทอรีต้นทางที่กำหนดเองสำหรับสคริปต์ตรวจสอบ เว้นว่างไว้เพื่อใช้การตั้งค่าส่วนกลาง"
1859
+ },
1860
+ "security_adminPinEnabled": {
1861
+ "label": "การป้องกัน PIN ของผู้ดูแลระบบ",
1862
+ "description": "เปิดใช้งานการตรวจสอบสิทธิ์ PIN ของผู้ดูแลระบบสำหรับการตั้งค่าที่ละเอียดอ่อน",
1863
+ "current": "ปัจจุบัน: {value}",
1864
+ "help": "ต้องใช้ PIN ของผู้ดูแลระบบเพื่อเปลี่ยนความปลอดภัยและการตั้งค่าขั้นสูง"
1865
+ },
1866
+ "fields": {
1867
+ "adminPinEnabled": {
1868
+ "label": "การป้องกัน PIN ของผู้ดูแลระบบ",
1869
+ "description": "เปิดใช้งานการตรวจสอบสิทธิ์ PIN ของผู้ดูแลระบบสำหรับการตั้งค่าที่ละเอียดอ่อน",
1870
+ "help": "ต้องใช้ PIN ของผู้ดูแลระบบเพื่อเปลี่ยนความปลอดภัยและการตั้งค่าขั้นสูง"
1871
+ }
1872
+ },
1873
+ "security_pinProtection_enabled": {
1874
+ "label": "การป้องกันรหัส PIN",
1875
+ "description": "เปิดใช้งานการป้องกัน PIN สำหรับการตั้งค่าที่ละเอียดอ่อน",
1876
+ "current": "ปัจจุบัน: {value}",
1877
+ "help": "ต้องใช้ PIN เพื่อเปลี่ยนความปลอดภัยและการตั้งค่าขั้นสูง"
1878
+ },
1879
+ "pinProtection_configure": {
1880
+ "label": "กำหนดค่าสคริปต์ที่ป้องกันด้วย PIN",
1881
+ "description": "กำหนดค่าสคริปต์ที่ต้องการการป้องกันด้วย PIN",
1882
+ "help": "เลือกสคริปต์แต่ละรายการที่ต้องมีการตรวจสอบสิทธิ์ PIN"
1883
+ },
1884
+ "pinProtection_debugMenu": {
1885
+ "label": "เมนูเครื่องมือแก้ไขข้อบกพร่อง",
1886
+ "description": "ต้องใช้ PIN สำหรับเมนูเครื่องมือแก้ไขข้อบกพร่อง",
1887
+ "current": "ปัจจุบัน: {value}",
1888
+ "help": "เปิดใช้งานการป้องกัน PIN สำหรับการเข้าถึงเครื่องมือแก้ไขข้อบกพร่อง"
1889
+ },
1890
+ "pinProtection_deleteReports": {
1891
+ "label": "ลบรายงาน",
1892
+ "description": "ต้องใช้ PIN สำหรับการลบรายงาน",
1893
+ "current": "ปัจจุบัน: {value}",
1894
+ "help": "เปิดใช้งานการป้องกัน PIN สำหรับการลบรายงาน"
1895
+ },
1896
+ "pinProtection_summaryReports": {
1897
+ "label": "รายงานสรุป",
1898
+ "description": "ต้องใช้ PIN สำหรับรายงานสรุป",
1899
+ "current": "ปัจจุบัน: {value}",
1900
+ "help": "เปิดใช้งานการป้องกัน PIN เพื่อสร้างรายงานสรุป"
1901
+ },
1902
+ "pinProtection_settingsMenu": {
1903
+ "label": "เมนูการตั้งค่า",
1904
+ "description": "ต้องใช้ PIN สำหรับเมนูการตั้งค่า",
1905
+ "current": "ปัจจุบัน: {value}",
1906
+ "help": "เปิดใช้งานการป้องกัน PIN สำหรับการเข้าถึงการตั้งค่า"
1907
+ },
1908
+ "pinProtection_initScript": {
1909
+ "label": "เริ่มต้นสคริปต์",
1910
+ "description": "ต้องใช้ PIN เพื่อเริ่มต้นสคริปต์",
1911
+ "current": "ปัจจุบัน: {value}",
1912
+ "help": "เปิดใช้งานการป้องกัน PIN สำหรับการเรียกใช้สคริปต์เริ่มต้น"
1913
+ },
1914
+ "pinProtection_resetDefaults": {
1915
+ "label": "รีเซ็ตการป้องกัน PIN",
1916
+ "description": "รีเซ็ตการตั้งค่าการป้องกัน PIN ทั้งหมดเป็นค่าเริ่มต้น",
1917
+ "help": "รีเซ็ตการป้องกัน PIN สคริปต์แต่ละรายการทั้งหมดเป็นค่าเริ่มต้น"
1918
+ },
1919
+ "removeUiLanguages": {
1920
+ "label": "ลบภาษา UI",
1921
+ "description": "ลบภาษา UI ที่ไม่ได้ติดตั้ง",
1922
+ "help": "ลบภาษา UI ที่ไม่ได้ติดตั้งบนระบบ"
1923
+ },
1924
+ "${helperKey}": {
1925
+ "help": "ช่วย"
1926
+ },
1927
+ "reports_format": {
1928
+ "label": "รูปแบบรายงาน",
1929
+ "help": "เลือกมาร์กดาวน์สำหรับรายงานที่อ่านได้, json สำหรับการทำงานอัตโนมัติ หรือข้อความสำหรับบันทึกธรรมดา"
1930
+ },
1931
+ "autoTranslate_placeholderMode": {
1932
+ "label": "โหมดการจัดการตัวยึดตำแหน่ง",
1933
+ "help": "วิธีจัดการสตริงที่มีตัวยึดตำแหน่งระหว่างการแปลอัตโนมัติ"
1934
+ },
1935
+ "autoTranslate_concurrency": {
1936
+ "label": "การร้องขอการแปลพร้อมกัน",
1937
+ "help": "คำขอของผู้ให้บริการพร้อมกันสูงสุด Google รองรับมากถึง 100 รายการใน i18ntk DeepL และ LibreTranslate ถูกจำกัดไว้ด้านล่าง"
1938
+ },
1939
+ "autoTranslate_batchSize": {
1940
+ "label": "ส่วนข้อความต่อชุด",
1941
+ "help": "จำนวนส่วนของข้อความที่กำหนดเวลาไว้ต่อชุด"
1942
+ },
1943
+ "autoTranslate_progressInterval": {
1944
+ "label": "ช่วงการอัพเดตความคืบหน้า",
1945
+ "help": "ส่วนข้อความที่สมบูรณ์ระหว่างการอัปเดตความคืบหน้า"
1946
+ },
1947
+ "autoTranslate_retryCount": {
1948
+ "label": "ลองนับอีกครั้ง",
1949
+ "help": "การลองใหม่สูงสุดต่อคำขอที่ล้มเหลว"
1950
+ },
1951
+ "autoTranslate_retryDelay": {
1952
+ "label": "ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)",
1953
+ "help": "ความล่าช้าในการลองพื้นฐานอีกครั้งในหน่วยมิลลิวินาที"
1954
+ },
1955
+ "autoTranslate_timeout": {
1956
+ "label": "คำขอหมดเวลา (มิลลิวินาที)",
1957
+ "help": "คำขอของผู้ให้บริการแปลหมดเวลา"
1958
+ },
1959
+ "autoTranslate_dryRunFirst": {
1960
+ "label": "ดูตัวอย่างการทดลองเรียกใช้ก่อน",
1961
+ "help": "ดูตัวอย่างสิ่งที่จะแปลก่อนที่จะเขียนไฟล์"
1962
+ },
1963
+ "autoTranslate_onlyMissingOrEnglish": {
1964
+ "label": "ขาดหายไปหรือคีย์ภาษาอังกฤษเท่านั้น",
1965
+ "help": "เก็บค่าเป้าหมายที่แปลที่มีอยู่และแปลเฉพาะค่าที่หายไป เครื่องหมาย สำเนาต้นฉบับ หรือค่าภาษาอังกฤษที่เป็นไปได้"
1966
+ },
1967
+ "autoTranslate_reportStdout": {
1968
+ "label": "พิมพ์รายงานไปยังเทอร์มินัล",
1969
+ "help": "พิมพ์รายงานหลังการแปลไปที่ stdout"
1970
+ },
1971
+ "autoTranslate_bom": {
1972
+ "label": "เขียน UTF-8 BOM",
1973
+ "help": "เขียนไฟล์ JSON ที่แปลแล้วด้วย UTF-8 BOM"
1974
+ },
1975
+ "autoTranslate_protectionEnabled": {
1976
+ "label": "ปกป้องเงื่อนไข กุญแจ ค่านิยมของแบรนด์",
1977
+ "help": "เปิดใช้งานคำ คีย์ ค่า และรูปแบบที่ได้รับการป้องกันซึ่งผู้ใช้แก้ไขได้"
1978
+ },
1979
+ "autoTranslate_protectionFile": {
1980
+ "label": "ไฟล์ JSON การป้องกัน",
1981
+ "help": "ไฟล์โปรเจ็กต์ JSON ที่มีกฎการป้องกันการแปลอัตโนมัติ"
1982
+ },
1983
+ "autoTranslate_promptProtectionSetup": {
1984
+ "label": "ขอให้สร้างไฟล์ป้องกัน",
1985
+ "help": "ขอให้สร้างไฟล์ป้องกันเมื่อการแปลอัตโนมัติทำงานครั้งแรก"
1986
+ },
1987
+ "autoTranslate_promptProtectionUpdate": {
1988
+ "label": "ขอให้ปรับปรุงกฎการป้องกัน",
1989
+ "help": "ถามว่าจะอัปเดตกฎการป้องกันก่อนการแปลโดยผู้จัดการหรือไม่"
1990
+ },
1991
+ "backup": {
1992
+ "enabled": {
1993
+ "label": "เปิดใช้งานการสำรองข้อมูล",
1994
+ "description": "เปิดใช้งานการสำรองข้อมูลการตั้งค่าอัตโนมัติ",
1995
+ "help": "เปิด/ปิดคุณสมบัติการสำรองข้อมูล"
1996
+ },
1997
+ "singleFileMode": {
1998
+ "label": "โหมดไฟล์เดี่ยว",
1999
+ "description": "ใช้ไฟล์เดียวในการสำรองข้อมูล",
2000
+ "help": "สำรองข้อมูลการตั้งค่าในไฟล์เดียว"
2001
+ },
2002
+ "singleBackupFile": {
2003
+ "label": "เส้นทางไฟล์สำรอง",
2004
+ "description": "เส้นทางไปยังไฟล์สำรอง",
2005
+ "help": "เส้นทางไปยังไฟล์สำรองข้อมูลเดียว"
2006
+ },
2007
+ "retentionDays": {
2008
+ "label": "ระยะเวลาการเก็บรักษา",
2009
+ "description": "จำนวนวันในการเก็บไฟล์สำรอง",
2010
+ "help": "จำนวนวันในการเก็บรักษาไฟล์สำรองข้อมูลเก่า"
2011
+ },
2012
+ "maxBackups": {
2013
+ "label": "การสำรองข้อมูลสูงสุด",
2014
+ "description": "จำนวนไฟล์สำรองสูงสุดที่จะเก็บไว้",
2015
+ "help": "จำนวนไฟล์สำรองข้อมูลสูงสุดที่จะเก็บไว้"
2016
+ },
2017
+ "confirm": {
2018
+ "label": "ยืนยันการสำรองข้อมูล",
2019
+ "description": "ต้องมีการยืนยันสำหรับการดำเนินการสำรองข้อมูล",
2020
+ "help": "ยืนยันการดำเนินการสำรองข้อมูล"
2021
+ }
2022
+ }
2023
+ },
2024
+ "actions": {
2025
+ "editSetting": "แก้ไข {setting}:",
2026
+ "settingUpdated": "✅ {setting} อัปเดตเรียบร้อยแล้ว!",
2027
+ "invalidValue": "❌ค่าไม่ถูกต้อง. โปรดลองอีกครั้ง",
2028
+ "pressEnter": "กด Enter เพื่อดำเนินการต่อ...",
2029
+ "backToMenu": "กลับสู่เมนูหลัก",
2030
+ "saveSuccess": "✅ บันทึกการตั้งค่าเรียบร้อยแล้ว!",
2031
+ "saveFailed": "❌ ไม่สามารถบันทึกการตั้งค่า: {error}",
2032
+ "resetConfirm": "คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ตการตั้งค่าทั้งหมดเป็นค่าเริ่มต้น (มี/ไม่มี):",
2033
+ "resetSuccess": "✅ รีเซ็ตการตั้งค่าเป็นค่าเริ่มต้นสำเร็จแล้ว!",
2034
+ "importSuccess": "✅ นำเข้าการตั้งค่าเรียบร้อยแล้ว!",
2035
+ "exportSuccess": "✅ ส่งออกการตั้งค่าเรียบร้อยแล้ว!",
2036
+ "fileNotFound": "❌ ไม่พบไฟล์: {path}",
2037
+ "invalidFormat": "❌ รูปแบบไฟล์การตั้งค่าไม่ถูกต้อง",
2038
+ "pinProtectionUpdated": "✅ การป้องกัน PIN สำหรับ {script} อัปเดตเรียบร้อยแล้ว!",
2039
+ "pinProtectionReset": "✅ การตั้งค่าการป้องกัน PIN ทั้งหมดรีเซ็ตเป็นค่าเริ่มต้น!",
2040
+ "pinProtectionConfigure": "กำหนดค่าการป้องกัน PIN สำหรับแต่ละสคริปต์",
2041
+ "pinProtectionSelectScript": "เลือกสคริปต์เพื่อสลับการป้องกัน PIN:",
2042
+ "pinProtectionCurrentStatus": "สถานะปัจจุบัน: {status}",
2043
+ "pinProtectionEnabled": "เปิดใช้งานแล้ว",
2044
+ "pinProtectionDisabled": "พิการ",
2045
+ "pinProtectionToggle": "สลับการป้องกัน PIN",
2046
+ "pinProtectionResetAll": "รีเซ็ตทั้งหมดเป็นค่าเริ่มต้น",
2047
+ "pinProtectionBack": "กลับไปที่การตั้งค่าความปลอดภัย"
2048
+ },
2049
+ "themes": {
2050
+ "light": "แสงสว่าง",
2051
+ "dark": "มืด",
2052
+ "system": "ระบบ"
2053
+ },
2054
+ "languages": {
2055
+ "en": "ภาษาอังกฤษ",
2056
+ "de": "เยอรมัน",
2057
+ "es": "สเปน",
2058
+ "fr": "ภาษาฝรั่งเศส",
2059
+ "ru": "ภาษารัสเซีย",
2060
+ "ja": "ญี่ปุ่น",
2061
+ "zh": "ชาวจีน",
2062
+ "it": "อิตาลี",
2063
+ "pt": "โปรตุเกส",
2064
+ "nl": "ดัตช์",
2065
+ "pl": "โปแลนด์",
2066
+ "sv": "สวีเดน",
2067
+ "uk": "ยูเครน",
2068
+ "cs": "เช็ก",
2069
+ "tr": "ตุรกี",
2070
+ "ko": "เกาหลี",
2071
+ "ar": "อาหรับ",
2072
+ "hi": "ฮินดี",
2073
+ "th": "ไทย",
2074
+ "vi": "เวียดนาม",
2075
+ "he": "ฮิบรู",
2076
+ "el": "กรีก",
2077
+ "hu": "ฮังการี"
2078
+ },
2079
+ "viewAll": {
2080
+ "title": "ดูการตั้งค่าทั้งหมด"
2081
+ },
2082
+ "current": "ปัจจุบัน",
2083
+ "back": "กลับสู่เมนูหลัก",
2084
+ "selectSettingPrompt": "เลือกการตั้งค่าที่จะแก้ไข (หรือ b สำหรับด้านหลัง, r สำหรับรีเซ็ต):",
2085
+ "invalidOption": "ตัวเลือกไม่ถูกต้อง",
2086
+ "editing": "การแก้ไข",
2087
+ "enterNewValue": "ป้อนค่าใหม่ (หรือกด Enter เพื่อรักษาค่าปัจจุบัน พิมพ์ 'default' เพื่อใช้ค่าเริ่มต้นของระบบ):",
2088
+ "validOptions": "ตัวเลือกที่ถูกต้อง",
2089
+ "updatedSuccessfully": "อัปเดตเรียบร้อยแล้ว!",
2090
+ "noHelp": "ไม่มีความช่วยเหลือสำหรับการตั้งค่านี้",
2091
+ "resetScriptDirectories": "รีเซ็ตเป็นค่าเริ่มต้น",
2092
+ "resetScriptDirectoriesTitle": "รีเซ็ตไดเร็กทอรีสคริปต์เป็นค่าเริ่มต้น",
2093
+ "resetScriptDirectoriesWarning1": "การดำเนินการนี้จะรีเซ็ตการกำหนดค่าไดเรกทอรีสคริปต์ทั้งหมดเป็นค่าเริ่มต้นของระบบ",
2094
+ "resetScriptDirectoriesWarning2": "เส้นทางไดเรกทอรีที่กำหนดเองทั้งหมดจะถูกล้าง การดำเนินการนี้ไม่สามารถยกเลิกได้",
2095
+ "resetScriptDirectoriesConfirm": "คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ตไดเรกทอรีสคริปต์ทั้งหมดเป็นค่าเริ่มต้น (มี/ไม่มี):",
2096
+ "backup": {
2097
+ "title": "การตั้งค่าการสำรองข้อมูล",
2098
+ "description": "สำรองการตั้งค่าปัจจุบันไปยังไฟล์",
2099
+ "confirm": "คุณแน่ใจหรือไม่ว่าต้องการสำรองข้อมูลการตั้งค่าปัจจุบัน (มี/ไม่มี):",
2100
+ "success": "✅ สำรองข้อมูลการตั้งค่าเรียบร้อยแล้ว {backupFile}",
2101
+ "failed": "❌ การตั้งค่าการสำรองข้อมูลล้มเหลว: {error}",
2102
+ "enabled": "เปิดใช้งานการสำรองข้อมูล",
2103
+ "enabledHelp": "เปิด/ปิดคุณสมบัติการสำรองข้อมูล",
2104
+ "singleFileMode": "โหมดไฟล์เดี่ยว",
2105
+ "singleFileModeHelp": "สำรองข้อมูลการตั้งค่าในไฟล์เดียว",
2106
+ "singleBackupFile": "ไฟล์สำรองข้อมูลเดี่ยว",
2107
+ "singleBackupFileHelp": "เส้นทางไปยังไฟล์สำรองข้อมูลเดียว",
2108
+ "retentionDays": "วันเก็บรักษา",
2109
+ "retentionDaysHelp": "จำนวนวันในการเก็บรักษาไฟล์สำรองข้อมูลเก่า",
2110
+ "maxBackups": "การสำรองข้อมูลสูงสุด",
2111
+ "maxBackupsHelp": "จำนวนไฟล์สำรองข้อมูลสูงสุดที่จะเก็บไว้",
2112
+ "confirmHelp": "ยืนยันการดำเนินการสำรองข้อมูล",
2113
+ "confirmYes": "ใช่",
2114
+ "confirmNo": "เลขที่"
2115
+ },
2116
+ "validation": {
2117
+ "valid": "ถูกต้อง",
2118
+ "validatingPaths": "กำลังตรวจสอบเส้นทางที่กำหนดค่า...",
2119
+ "validationComplete": "การตรวจสอบเส้นทางเสร็จสมบูรณ์: {valid}/{total} ถูกต้อง."
2120
+ }
2121
+ },
2122
+ "summary": {
2123
+ "separator": "============================================================",
2124
+ "configurationTitle": "???? การกำหนดค่า:",
2125
+ "sourceLanguage": "ภาษาต้นฉบับ: {sourceLanguage}",
2126
+ "supportedExtensions": "ส่วนขยายที่รองรับ: {extensions}",
2127
+ "excludedFiles": "ไฟล์ที่ยกเว้น: {files}",
2128
+ "reportContent": "{report}",
2129
+ "fatalError": "❌ ข้อผิดพลาดร้ายแรง: {error}",
2130
+ "helpTitle": "📊 เครื่องกำเนิดรายงานสรุป I18NTK",
2131
+ "helpDescription": "วิเคราะห์โครงสร้างโฟลเดอร์ i18n และสร้างรายงานสรุปที่ครอบคลุม รวมถึงสถิติที่สำคัญ การวิเคราะห์โครงสร้างไฟล์ และการตรวจสอบความถูกต้อง",
2132
+ "helpUsage": "การใช้งาน: โหนด i18ntk-summary.js [ตัวเลือก]",
2133
+ "helpOptions": "--source-dir <dir> ไดเรกทอรีต้นทางที่จะวิเคราะห์",
2134
+ "helpSourceDir": "--source-dir <dir> ไดเรกทอรีต้นทางที่จะวิเคราะห์",
2135
+ "helpOutput": "--เอาท์พุท <file> ไฟล์เอาต์พุตสำหรับรายงาน",
2136
+ "helpVerbose": "--verbose, -v แสดงข้อมูลโดยละเอียด",
2137
+ "helpKeepReports": "--keep-reports เก็บรายงานที่มีอยู่",
2138
+ "helpDeleteReports": "--delete-reports ลบรายงานที่มีอยู่",
2139
+ "helpHelp": "--help, -h แสดงความช่วยเหลือนี้",
2140
+ "helpExamples": "ตัวอย่าง:",
2141
+ "helpExample1": "โหนด i18ntk-summary.js",
2142
+ "helpExample2": "โหนด i18ntk-summary.js --source-dir ./locales",
2143
+ "helpExample3": "โหนด i18ntk-summary.js --สรุปเอาต์พุต-report.txt",
2144
+ "helpExample4": "โหนด i18ntk-summary.js --verbose",
2145
+ "helpExample5": "โหนด i18ntk-summary.js --source-dir ./locales --output report.json",
2146
+ "couldNotReadFile": "⚠️ ไม่สามารถอ่านไฟล์ได้: {filePath}",
2147
+ "couldNotParseJSFile": "⚠️ ไม่สามารถแยกวิเคราะห์ไฟล์ JS/TS: {filePath}",
2148
+ "errorReadingFile": "⚠️ เกิดข้อผิดพลาดในการอ่านไฟล์ {filePath}: {error}",
2149
+ "analyzingFolder": "🔍 กำลังวิเคราะห์โครงสร้างโฟลเดอร์...",
2150
+ "noLanguageDirectoriesFound": "❌ ไม่พบไดเรกทอรีภาษาในไดเรกทอรีต้นทางที่ระบุ",
2151
+ "foundLanguages": "✅พบ {count} ภาษา: {languages}",
2152
+ "referenceLanguageFiles": "📁 ภาษาอ้างอิง '{language}' มี {count} ไฟล์",
2153
+ "analyzingLanguage": "🌍 กำลังวิเคราะห์ภาษา: {language}",
2154
+ "keysInFiles": "📊 พบแล้ว {keys} กุญแจข้าม {files} ไฟล์",
2155
+ "checkingInconsistentKeys": "🔍 กำลังตรวจสอบคีย์ที่ไม่สอดคล้องกันในภาษาต่างๆ...",
2156
+ "generatingSummaryReport": "⏩ กำลังสร้างรายงานสรุป...",
2157
+ "reportTitle": "📊 I18NTK SUMMARY REPORT",
2158
+ "generated": "สร้าง: {timestamp}",
2159
+ "sourceDirectory": "ไดเรกทอรีต้นทาง: {dir}",
2160
+ "overview": "📈 OVERVIEW",
2161
+ "languagesCount": "ภาษา: {count}",
2162
+ "totalFiles": "ไฟล์ทั้งหมด: {count}",
2163
+ "totalKeys": "คีย์ทั้งหมด: {count}",
2164
+ "avgKeysPerLanguage": "คีย์เฉลี่ยต่อภาษา: {count}",
2165
+ "languagesBreakdown": "🌍 รายละเอียดภาษา",
2166
+ "languageBreakdown": "{language}: {files} ไฟล์, {keys} กุญแจ",
2167
+ "fileStructure": "📁 โครงสร้างไฟล์",
2168
+ "fileKeys": "{file}: {keys} กุญแจ",
2169
+ "missingInLanguages": "⚠️ ขาดหายไปใน: {languages}",
2170
+ "issuesFound": "❌ ISSUES FOUND",
2171
+ "missingFiles": "📁 ไฟล์ที่หายไป:",
2172
+ "emptyFiles": "📄 ไฟล์เปล่า:",
2173
+ "malformedFiles": "⚠️ ไฟล์มีรูปแบบไม่ถูกต้อง:",
2174
+ "duplicateKeys": "🔑 คีย์ที่ซ้ำกัน:",
2175
+ "inconsistentKeys": "🔍 คีย์ไม่สอดคล้องกัน:",
2176
+ "missingKeys": "หายไป: {keys}{more}",
2177
+ "extraKeys": "พิเศษ: {keys}{more}",
2178
+ "noIssuesFound": "✅ NO ISSUES FOUND",
2179
+ "allFilesConsistent": "ไฟล์การแปลทั้งหมดมีความสอดคล้องกันในทุกภาษา",
2180
+ "recommendations": "💡 คำแนะนำ",
2181
+ "createMissingFiles": "• สร้างไฟล์การแปลที่หายไป",
2182
+ "addContentToEmptyFiles": "• เพิ่มเนื้อหาลงในไฟล์การแปลที่ว่างเปล่า",
2183
+ "fixMalformedFiles": "• แก้ไขไฟล์ JSON/JS ที่มีรูปแบบไม่ถูกต้อง",
2184
+ "removeDuplicateKeys": "• ลบคีย์ที่ซ้ำกันออกจากไฟล์",
2185
+ "synchronizeKeys": "• ประสานคีย์ในทุกภาษา",
2186
+ "splitLargeFiles": "• พิจารณาแยกไฟล์ขนาดใหญ่ออกเป็นเนมสเปซที่เล็กลง",
2187
+ "addMoreLanguages": "• พิจารณาเพิ่มภาษาเพิ่มเติม",
2188
+ "nextSteps": "🎯 NEXT STEPS",
2189
+ "nextStep1": "1. แก้ไขปัญหาใดๆ ที่ระบุไว้ข้างต้น",
2190
+ "nextStep2": "2. ดำเนินการตรวจสอบความถูกต้องเพื่อให้มั่นใจว่ามีความสอดคล้องกัน",
2191
+ "nextStep3": "3. พิจารณาใช้ i18ntk-validate สำหรับการตรวจสอบโดยละเอียด",
2192
+ "nextStep4": "4. แนะนำให้มีการตรวจสอบอย่างสม่ำเสมอ",
2193
+ "couldNotFindI18nDirectory": "❌ ไม่พบไดเรกทอรี i18n โปรดระบุ --source-dir",
2194
+ "sourceDirectoryDoesNotExist": "❌ ไม่มีไดเรกทอรีต้นทาง: {dir}",
2195
+ "i18nSummaryReportGenerator": "📊 เครื่องมือสร้างรายงานสรุป I18N",
2196
+ "analysisComplete": "✅ การวิเคราะห์เสร็จสมบูรณ์",
2197
+ "analyzedLanguages": "📊 ภาษาที่วิเคราะห์: {count}",
2198
+ "processedFiles": "📁 ไฟล์ที่ประมวลผล: {count}",
2199
+ "foundTranslationKeys": "🔑 พบคีย์การแปล: {count}",
2200
+ "foundIssues": "❌พบ {count} ปัญหา",
2201
+ "noIssuesConsole": "✅ ไม่พบปัญหา - ไฟล์ทั้งหมดสอดคล้องกัน!",
2202
+ "errorDuringAnalysis": "❌ ข้อผิดพลาดระหว่างการวิเคราะห์: {error}",
2203
+ "usageReportTitle": "📊 I18NTK USAGE REPORT",
2204
+ "usageReportGenerated": "สร้าง: {timestamp}",
2205
+ "usageReportSourceDir": "ไดเรกทอรีต้นทาง: {sourceDir}",
2206
+ "usageReportI18nDir": "ไดเรกทอรี I18n: {i18nDir}",
2207
+ "usageReportSummary": "📈 SUMMARY",
2208
+ "usageReportSourceFilesScanned": "ไฟล์ต้นฉบับที่สแกน: {count}",
2209
+ "usageReportTranslationFilesFound": "พบไฟล์แปล: {count}",
2210
+ "usageReportAvailableKeys": "คีย์การแปลที่มีอยู่: {count}",
2211
+ "usageReportUsedKeys": "คีย์การแปลที่ใช้: {count}",
2212
+ "usageReportDynamicKeys": "คีย์การแปลแบบไดนามิก: {count}",
2213
+ "usageReportUnusedKeys": "คีย์การแปลที่ไม่ได้ใช้: {count}",
2214
+ "usageReportMissingKeys": "คีย์การแปลหายไป: {count}",
2215
+ "usageReportNotTranslatedKeys": "คีย์ที่ไม่ได้แปล: {count}",
2216
+ "usageReportTranslationCompleteness": "🌍 ความสมบูรณ์ของการแปล",
2217
+ "usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
2218
+ "usageReportNotTranslatedInLanguage": "ไม่ได้แปล: {count} กุญแจ",
2219
+ "usageReportTranslationFilesDiscovered": "📁 ไฟล์คำแปล",
2220
+ "usageReportFileInfo": "{relativePath} (เนมสเปซ: {namespace}, พิมพ์: {type})",
2221
+ "usageReportUnusedTranslationKeys": "🗑️ คีย์การแปลที่ไม่ได้ใช้",
2222
+ "usageReportUnusedKeysDescription": "คีย์เหล่านี้มีอยู่ในไฟล์การแปล แต่ไม่ได้ใช้ในซอร์สโค้ด:",
2223
+ "usageReportUnusedKey": "• {key}",
2224
+ "usageReportMoreUnusedKeys": "... และ {count} คีย์ที่ไม่ได้ใช้มากขึ้น",
2225
+ "usageReportMissingTranslationKeys": "❌ ไม่มีคีย์การแปล",
2226
+ "usageReportMissingKeysDescription": "คีย์เหล่านี้ใช้ในซอร์สโค้ด แต่ไม่มีไฟล์การแปล:",
2227
+ "usageReportMissingKey": "• {key}",
2228
+ "usageReportUsedIn": "ใช้ใน: {filePath}",
2229
+ "usageReportMoreFiles": "... และ {count} ไฟล์เพิ่มเติม",
2230
+ "usageReportDynamicTranslationKeys": "⚡ ปุ่มแปลแบบไดนามิก",
2231
+ "usageReportDynamicKeysDescription": "คีย์เหล่านี้ถูกใช้แบบไดนามิก (สร้างที่รันไทม์):",
2232
+ "usageReportDynamicKey": "• {key}",
2233
+ "usageReportFileUsageBreakdown": "📊 รายละเอียดการใช้ไฟล์",
2234
+ "usageReportFileUsage": "{filePath}: {count} กุญแจ",
2235
+ "status": {
2236
+ "generating": "⏳ กำลังสร้าง...",
2237
+ "completed": "✅ จบ."
2238
+ },
2239
+ "help": {
2240
+ "usage": "การใช้งาน: โหนด main/manage/index.js [ตัวเลือก]",
2241
+ "interactiveMode": "💡 การใช้งาน: โหนด main/manage/index.js --command=<command> เพื่อการดำเนินการโดยตรง",
2242
+ "initProject": "🚀 เริ่มต้นภาษาใหม่",
2243
+ "analyzeTranslations": "🔍 วิเคราะห์การแปล",
2244
+ "validateTranslations": "✅ ตรวจสอบการแปล",
2245
+ "checkUsage": "📊 ตรวจสอบการใช้งานกุญแจ",
2246
+ "showHelp": "📖 ใช้: node main/manage/index.js --help สำหรับคำสั่งที่มีอยู่",
2247
+ "availableCommands": "📖 คำสั่งที่ใช้ได้:",
2248
+ "initCommand": "init - เริ่มต้นภาษาใหม่",
2249
+ "analyzeCommand": "วิเคราะห์ - วิเคราะห์การแปล",
2250
+ "validateCommand": "ตรวจสอบ - ตรวจสอบการแปล",
2251
+ "usageCommand": "การใช้งาน - ตรวจสอบการใช้งานคีย์",
2252
+ "sizingCommand": "การปรับขนาด - วิเคราะห์ขนาด",
2253
+ "completeCommand": "เสร็จสมบูรณ์ - การแปลเสร็จสมบูรณ์ (ครอบคลุม 100%)",
2254
+ "summaryCommand": "สรุป - แสดงสถานะโครงการ",
2255
+ "scannerCommand": "เครื่องสแกนเนอร์ - สแกนหาปัญหา i18n",
2256
+ "translateCommand": "แปล - แปลไฟล์ภาษาอัตโนมัติ",
2257
+ "debugCommand": "ดีบัก - ดีบักปัญหาการแปล"
2258
+ },
2259
+ "test_complete_system": {
2260
+ "starting_test": "🧪 เริ่มการทดสอบระบบให้เสร็จสมบูรณ์",
2261
+ "separator": "=",
2262
+ "testing_ui_translations": "⏩ ทดสอบการแปล UI...",
2263
+ "testing_settings_manager": "⚙️ ตัวจัดการการตั้งค่าการทดสอบ...",
2264
+ "testing_main_scripts": "🏽 ทดสอบสคริปต์หลัก...",
2265
+ "checking_translation_consistency": "🌐 กำลังตรวจสอบความสอดคล้องของการแปล...",
2266
+ "non_critical_missing_keys": "ℹ️ {file}: {count} คีย์หายไปที่ไม่สำคัญ",
2267
+ "extra_keys": "ℹ️ {file}: {count} กุญแจพิเศษ",
2268
+ "generating_report": "📊 กำลังสร้างรายงาน...",
2269
+ "final_test_report_title": "📋 FINAL TEST REPORT",
2270
+ "passed": "✅ผ่าน: {passed}",
2271
+ "failed": "❌ ล้มเหลว: {failed}",
2272
+ "warnings": "⚠️คำเตือน: {warnings}",
2273
+ "missing_translations_title": "🔍 ไม่มีคำแปล ({count}):",
2274
+ "missing_translation_key": "- {key}",
2275
+ "missing_translations_more": "... และ {count} มากกว่า",
2276
+ "errors_title": "❌ ข้อผิดพลาด:",
2277
+ "error_message": "- {error}",
2278
+ "overall_status": "📊 สถานะโดยรวม: {status}",
2279
+ "success_message": "✅ {message}",
2280
+ "failure_message": "❌ {message}",
2281
+ "failure_error_message": "{errorMessage}",
2282
+ "warning_message": "⚠️ {message}",
2283
+ "test_runner_failed": "❌ นักวิ่งทดสอบล้มเหลว:",
2284
+ "recommendations": {
2285
+ "add_missing_translation_keys": "เพิ่มคีย์การแปลที่ขาดหายไปเพื่อรักษาความสอดคล้อง",
2286
+ "fix_failing_scripts": "แก้ไขสคริปต์ที่ล้มเหลวก่อนที่จะปรับใช้",
2287
+ "review_warning_messages": "ตรวจสอบและแก้ไขข้อความเตือน",
2288
+ "system_ready_for_deployment": "ระบบพร้อมสำหรับการใช้งานแล้ว"
2289
+ },
2290
+ "hardcodedTexts": {
2291
+ "addMissingTranslationKeys": "เพิ่มคีย์การแปลที่ขาดหายไปเพื่อรักษาความสอดคล้อง",
2292
+ "fixFailingScripts": "แก้ไขสคริปต์ที่ล้มเหลวก่อนที่จะปรับใช้",
2293
+ "reviewWarningMessages": "ตรวจสอบและแก้ไขข้อความเตือน",
2294
+ "systemReadyForDeployment": "ระบบพร้อมสำหรับการใช้งานแล้ว"
2295
+ }
2296
+ },
2297
+ "testConsoleI18n": {
2298
+ "found_target_file": "พบไฟล์เป้าหมาย: {fileName}",
2299
+ "scanning_files_for_console_statements": "กำลังสแกนไฟล์เพื่อหาคำสั่งคอนโซล...",
2300
+ "found_javascript_files": "พบ {count} ไฟล์จาวาสคริปต์",
2301
+ "console_i18n_analysis_results": "ผลการวิเคราะห์คอนโซล I18n",
2302
+ "total_console_statements": "คำสั่งคอนโซลทั้งหมด: {count}",
2303
+ "translated_statements": "ข้อความที่แปล: {count}",
2304
+ "hardcoded_statements": "คำสั่งฮาร์ดโค้ด: {count}",
2305
+ "translation_coverage": "ความครอบคลุมการแปล: {percentage}%",
2306
+ "coverage_by_file": "ความครอบคลุมตามไฟล์:",
2307
+ "file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
2308
+ "hardcoded_console_statements": "คำสั่งคอนโซลแบบฮาร์ดโค้ด:",
2309
+ "file_header": "ไฟล์: {file}",
2310
+ "line_statement": "เส้น {line}: {statement}",
2311
+ "suggested_key": "รหัสที่แนะนำ: {key}",
2312
+ "suggested_replacement": "การเปลี่ยนที่แนะนำ: {replacement}",
2313
+ "recommendations": "คำแนะนำ:",
2314
+ "recommendation_1": "1. แทนที่สตริงฮาร์ดโค้ดด้วยการเรียก i18n.t()",
2315
+ "recommendation_2": "2. เพิ่มคีย์ใหม่ให้กับไฟล์ JSON การแปลที่เกี่ยวข้อง",
2316
+ "recommendation_3": "3. ตรวจสอบให้แน่ใจว่าข้อความคอนโซลทั้งหมดปรากฏต่อหน้าผู้ใช้และต้องมีการแปล",
2317
+ "recommendation_4": "4. ใช้เทมเพลตตัวอักษรหรือการต่อสตริงสำหรับข้อความไดนามิก โดยส่งตัวแปรไปที่ i18n.t()",
2318
+ "translation_keys_to_add": "คีย์การแปลที่แนะนำให้เพิ่ม:",
2319
+ "add_keys_instruction": "คัดลอกโครงสร้าง JSON ต่อไปนี้ลงในไฟล์แปลของคุณ:",
2320
+ "perfect_translation_coverage": "ครอบคลุมการแปลที่สมบูรณ์แบบ!",
2321
+ "all_statements_using_translation": "คำสั่งคอนโซลทั้งหมดใช้ระบบการแปล",
2322
+ "i18n_console_translation_checker": "เครื่องมือตรวจสอบการแปลคอนโซล I18n",
2323
+ "script_description_line1": "สคริปต์นี้จะสแกนไฟล์ JavaScript ทั้งหมดเพื่อหาคำสั่งคอนโซล",
2324
+ "script_description_line2": "และตรวจสอบว่าพวกเขากำลังใช้ระบบการแปลหรือไม่",
2325
+ "analysis_completed_in_duration": "วิเคราะห์เสร็จเมื่อ พ.ศ {duration} วินาที",
2326
+ "report_saved_to_path": "บันทึกรายงานไปที่: {path}",
2327
+ "found_hardcoded_messages": "พบ {count} ข้อความฮาร์ดโค้ด ออกด้วยรหัสข้อผิดพลาด 1",
2328
+ "all_console_messages_use_translation": "ข้อความคอนโซลทั้งหมดใช้การแปล ออกด้วยรหัส 0",
2329
+ "consoleTranslationsCheck": "ตรวจสอบการแปลคอนโซล"
2330
+ },
2331
+ "translate_mismatches": {
2332
+ "title": "🌐 ตัวช่วยแปล {dryRun}",
2333
+ "separator": "=====================================",
2334
+ "processing_file": "📄 กำลังประมวลผล {language}.json...",
2335
+ "translation_summary_title": "📊 สรุปการแปล:",
2336
+ "total_translations_applied": "ใช้คำแปลทั้งหมด: {totalTranslations}",
2337
+ "run_with_apply_instruction": "💡 รันด้วย --apply เพื่อใช้คำแปลเหล่านี้",
2338
+ "no_translation_mappings": "⚠️ ไม่มีการแมปการแปลสำหรับ {language}",
2339
+ "translation_applied": "✅ {key}: \"{oldValue}\" → \"{newValue}\"",
2340
+ "saved_translations": "💾 บันทึกแล้ว {count} แปลเป็น {filename}",
2341
+ "found_translatable_items": "🔍 พบแล้ว {count} รายการที่สามารถแปลได้",
2342
+ "no_automatic_translations": "✨ ไม่มีการแปลอัตโนมัติ",
2343
+ "error_processing_file": "❌ เกิดข้อผิดพลาดในการประมวลผล {filename}: {errorMessage}",
2344
+ "coverage_report_title": "📊 รายงานความครอบคลุมการแปล",
2345
+ "coverage_report_separator": "===============================",
2346
+ "file_header": "📄 {filename}:",
2347
+ "total_keys": "คีย์ทั้งหมด: {total}",
2348
+ "translated_keys": "แปล: {translated}",
2349
+ "untranslated_markers": "เครื่องหมายที่ไม่ได้แปล: {untranslated}",
2350
+ "contains_english": "ประกอบด้วยภาษาอังกฤษ: {hasEnglish}",
2351
+ "coverage_percentage": "ความคุ้มครอง: {coverage}%",
2352
+ "error_general": "❌ ข้อผิดพลาด:",
2353
+ "use_help": "ใช้ --help สำหรับข้อมูลการใช้งาน"
2354
+ },
2355
+ "cleaningUpReportFiles": "กำลังล้างไฟล์รายงานเก่า...",
2356
+ "couldNotDelete": "ไม่สามารถลบได้ {file}: {error}",
2357
+ "deletedOldReportFiles": "ลบแล้ว {count} ไฟล์รายงานเก่า",
2358
+ "errorCleaningUpReports": "เกิดข้อผิดพลาดในการล้างรายงาน: {error}",
2359
+ "noOldReportFilesToDelete": "ไม่มีไฟล์รายงานเก่าที่จะลบ",
2360
+ "reportFilesPreserved": "ไฟล์รายงานที่เก็บรักษาไว้",
2361
+ "reportSaveFailed": "ไม่สามารถบันทึกรายงานไปที่: {reportPath}",
2362
+ "reportSaved": "บันทึกรายงานไปที่: {reportPath}"
2363
+ },
2364
+ "ui": {
2365
+ "autoDetectedI18nDirectory": "ไดเร็กทอรี i18n ที่ตรวจพบอัตโนมัติ: {path}",
2366
+ "executingCommand": "การดำเนินการคำสั่ง: {command}",
2367
+ "unknownCommand": "คำสั่งที่ไม่รู้จัก: {command}",
2368
+ "errorExecutingCommand": "เกิดข้อผิดพลาดในการดำเนินการคำสั่ง: {error}",
2369
+ "errorLoadingTranslationFile": "เกิดข้อผิดพลาดในการโหลดไฟล์การแปลสำหรับ '{language}': {error}",
2370
+ "errorSavingLanguagePreference": "เกิดข้อผิดพลาดในการบันทึกการตั้งค่าภาษา: {error}",
2371
+ "noActiveReadlineInterface": "ไม่มีอินเทอร์เฟซบรรทัดอ่านที่ใช้งานอยู่",
2372
+ "uiLanguageUpdated": "ภาษา UI อัปเดตเป็น: {language}",
2373
+ "selectOptionPrompt": "เลือกตัวเลือก:",
2374
+ "pressEnterToReturn": "กด Enter เพื่อกลับสู่เมนูหลัก...",
2375
+ "detectedSourceDirectory": "ไดเรกทอรีต้นทางที่ตรวจพบ: {sourceDir}",
2376
+ "detectedI18nDirectory": "ตรวจพบไดเร็กทอรี i18n: {directory}",
2377
+ "toolkitTitle": "i18ntk - ชุดเครื่องมือการจัดการ Enterprise i18n",
2378
+ "versionInfo": "เวอร์ชัน: {version}",
2379
+ "releaseDate": "วันที่วางจำหน่าย: {date}",
2380
+ "maintainer": "ผู้ดูแล: {maintainer}",
2381
+ "nodeVersion": "โหนด js: {version}",
2382
+ "license": "ใบอนุญาต: {license}",
2383
+ "whatsNew": "✨ มีอะไรใหม่ใน v{version}:",
2384
+ "changeItem": "{change}",
2385
+ "documentation": "📚 เอกสารประกอบ: {url}",
2386
+ "issues": "🐛 ปัญหา: {url}",
2387
+ "versionInfoUnavailable": "ไม่มีข้อมูลเวอร์ชัน i18ntk",
2388
+ "versionInfoError": "ข้อผิดพลาด: {error}"
2389
+ },
2390
+ "validateLanguagePurity": {
2391
+ "phrase_debug_tools": "เครื่องมือแก้ไขข้อบกพร่อง",
2392
+ "phrase_settings": "การตั้งค่า",
2393
+ "phrase_configuration": "การกำหนดค่า",
2394
+ "phrase_invalid_choice": "ตัวเลือกที่ไม่ถูกต้อง",
2395
+ "phrase_please_select": "กรุณาเลือก",
2396
+ "phrase_back_to_main_menu": "กลับสู่เมนูหลัก",
2397
+ "phrase_error": "ข้อผิดพลาด",
2398
+ "phrase_warning": "คำเตือน",
2399
+ "phrase_success": "ความสำเร็จ",
2400
+ "phrase_failed": "ล้มเหลว",
2401
+ "phrase_loading": "กำลังโหลด",
2402
+ "phrase_saving": "ประหยัด",
2403
+ "phrase_full_system_debug": "การแก้ปัญหาระบบเต็มรูปแบบ",
2404
+ "phrase_configuration_debug": "ดีบักการกำหนดค่า",
2405
+ "phrase_translation_debug": "การแก้ไขข้อบกพร่องการแปล",
2406
+ "phrase_performance_debug": "การแก้ไขข้อบกพร่องด้านประสิทธิภาพ",
2407
+ "phrase_admin_pin_setup": "การตั้งค่าพินผู้ดูแลระบบ",
2408
+ "phrase_enter_admin_pin": "ใส่พินผู้ดูแลระบบ",
2409
+ "phrase_confirm_admin_pin": "ยืนยันพินผู้ดูแลระบบ",
2410
+ "phrase_authentication_failed": "การรับรองความถูกต้องล้มเหลว",
2411
+ "phrase_access_denied": "การเข้าถึงถูกปฏิเสธ",
2412
+ "phrase_security_log": "บันทึกความปลอดภัย",
2413
+ "language_german": "เยอรมัน",
2414
+ "language_french": "ภาษาฝรั่งเศส",
2415
+ "language_spanish": "สเปน",
2416
+ "language_russian": "ภาษารัสเซีย",
2417
+ "language_japanese": "ญี่ปุ่น",
2418
+ "language_chinese": "ชาวจีน",
2419
+ "validator_title": "🔍 เครื่องมือตรวจสอบความบริสุทธิ์ของภาษา",
2420
+ "validating_file": "📄 กำลังตรวจสอบ {language}.json ({name})...",
2421
+ "valid_file_message": "✅ถูกต้อง - ไม่มีการละเมิดความบริสุทธิ์ของภาษา",
2422
+ "invalid_file_message": "❌ไม่ถูกต้อง - {count} พบการละเมิด",
2423
+ "no_validation_rules": "ไม่มีกฎการตรวจสอบที่กำหนดไว้สำหรับภาษา: {language}",
2424
+ "error_reading_file": "เกิดข้อผิดพลาดในการอ่านไฟล์: {errorMessage}",
2425
+ "issue_forbidden_marker": "มีเครื่องหมายต้องห้าม: {marker}",
2426
+ "issue_english_phrase": "มีวลีภาษาอังกฤษ: \"{phrase}\"",
2427
+ "issue_english_words": "ประกอบด้วยคำภาษาอังกฤษ: {words}",
2428
+ "issue_missing_cyrillic": "ข้อความแบบยาวควรมีอักขระซีริลลิกสำหรับภาษารัสเซีย",
2429
+ "issue_missing_japanese": "ข้อความแบบยาวควรมีอักขระภาษาญี่ปุ่น",
2430
+ "issue_missing_chinese": "ข้อความยาวควรมีตัวอักษรจีน",
2431
+ "summary_title": "📊 สรุปการตรวจสอบ",
2432
+ "overall_results_header": "📋 ผลลัพธ์โดยรวม:",
2433
+ "total_files_validated": "ตรวจสอบไฟล์ทั้งหมดแล้ว: {count}",
2434
+ "valid_files": "ไฟล์ที่ถูกต้อง: {count}",
2435
+ "invalid_files": "ไฟล์ไม่ถูกต้อง: {count}",
2436
+ "total_violations": "การละเมิดทั้งหมด: {count}",
2437
+ "violations_by_file_header": "❌ การละเมิดตามไฟล์:"
2438
+ },
2439
+ "workflow": {
2440
+ "title": "การจัดการเวิร์กโฟลว์",
2441
+ "description": "จัดการเวิร์กโฟลว์ i18n",
2442
+ "select_workflow_file": "เลือกไฟล์เวิร์กโฟลว์ที่จะรัน:",
2443
+ "no_workflow_files": "ไม่พบไฟล์เวิร์กโฟลว์ในไดเร็กทอรีเวิร์กโฟลว์",
2444
+ "invalid_selection": "การเลือกไม่ถูกต้อง โปรดป้อนตัวเลขที่สอดคล้องกับไฟล์เวิร์กโฟลว์",
2445
+ "workflow_execution_started": "เริ่มต้นเวิร์กโฟลว์: {workflowName}",
2446
+ "workflow_execution_completed": "ขั้นตอนการทำงานเสร็จสมบูรณ์: {workflowName}",
2447
+ "workflow_execution_failed": "เวิร์กโฟลว์ล้มเหลว: {workflowName} - {error}",
2448
+ "workflow_cancelled": "การดำเนินการเวิร์กโฟลว์ถูกยกเลิก",
2449
+ "press_enter_to_continue": "กด Enter เพื่อดำเนินการต่อ!",
2450
+ "starting": "🚀 กำลังเริ่มเวิร์กโฟลว์...",
2451
+ "completed": "✅ ขั้นตอนการทำงานสำเร็จลุล่วงไปด้วยดี!",
2452
+ "checkReports": "📄 ตรวจสอบรายงานเพื่อดูรายละเอียด",
2453
+ "exitingCompleted": "📝 ขั้นตอนการทำงานเสร็จสมบูรณ์ กำลังออก...",
2454
+ "summary": {
2455
+ "title": "📋 WORKFLOW SUMMARY",
2456
+ "separator": "===================",
2457
+ "completedAt": "🕐 ขั้นตอนการทำงานเสร็จสิ้นเมื่อ: {timestamp}",
2458
+ "initialViolations": "📊 การละเมิดครั้งแรก: {count}",
2459
+ "finalViolations": "📉 การละเมิดขั้นสุดท้าย: {count}",
2460
+ "totalFixes": "🏽 แก้ไขทั้งหมดที่ใช้: {count}",
2461
+ "improvement": "📈 การปรับปรุง: {percentage}%",
2462
+ "stepResults": "📝 STEP RESULTS:",
2463
+ "stepDetail": "{number}. {status} {stepName}",
2464
+ "violations": "การละเมิด: {count}",
2465
+ "fixesApplied": "ใช้การแก้ไข: {count}",
2466
+ "nextSteps": "💡 NEXT STEPS:",
2467
+ "congratulations": "🎉 ขอแสดงความยินดีด้วย! ไฟล์โลแคลทั้งหมดมีความบริสุทธิ์ของภาษาที่สมบูรณ์แบบแล้ว!",
2468
+ "cicdIntegration": "✅ พิจารณารวมเครื่องมือตรวจสอบความถูกต้องเข้ากับไปป์ไลน์ CI/CD ของคุณ",
2469
+ "automatedChecks": "✅ ตั้งค่าการตรวจสอบอัตโนมัติสำหรับการแปลใหม่",
2470
+ "greatProgress": "🎯 ก้าวหน้ายิ่งใหญ่! ปัญหาส่วนใหญ่ได้รับการแก้ไขแล้ว",
2471
+ "manualReview": "🔍 ตรวจสอบการละเมิดที่เหลือด้วยตนเอง",
2472
+ "addMappings": "🌐 พิจารณาเพิ่มการแมปการแปลเพิ่มเติมสำหรับเคส Edge",
2473
+ "goodProgress": "📈 มีความก้าวหน้าไปด้วยดี แต่จำเป็นต้องมีการทำงานเพิ่มเติม",
2474
+ "expandMappings": "🏽 ขยายการแมปการแปลอัตโนมัติ",
2475
+ "professionalReview": "👥 พิจารณาการตรวจสอบการแปลที่ซับซ้อนด้วยตนเอง",
2476
+ "runAgain": "🔄 เรียกใช้เวิร์กโฟลว์อีกครั้งหลังจากเพิ่มการแมปเพิ่มเติม",
2477
+ "limitedProgress": "⚠️ ความคืบหน้ามีจำกัด อาจจำเป็นต้องมีการแทรกแซงด้วยตนเอง",
2478
+ "reviewMappings": "🔍 ตรวจสอบการแมปการแปลและเพิ่มรายการที่ขาดหายไป",
2479
+ "professionalServices": "👥 พิจารณาบริการแปลโดยมืออาชีพ",
2480
+ "checkIssues": "🏽 ตรวจสอบปัญหาที่เป็นระบบในไฟล์โลแคล",
2481
+ "success": "✅",
2482
+ "warning": "⚠️"
2483
+ }
2484
+ },
2485
+ "consoleI18nTester": {
2486
+ "found_target_file": "พบไฟล์เป้าหมาย",
2487
+ "scanning_files_for_console_statements": "กำลังสแกนไฟล์เพื่อหาคำสั่งคอนโซล",
2488
+ "found_javascript_files": "พบไฟล์จาวาสคริปต์",
2489
+ "console_i18n_analysis_results": "ผลการวิเคราะห์คอนโซล i18n",
2490
+ "total_console_statements": "คำสั่งคอนโซลทั้งหมด",
2491
+ "translated_statements": "ข้อความที่แปลแล้ว",
2492
+ "hardcoded_statements": "คำสั่งฮาร์ดโค้ด",
2493
+ "translation_coverage": "ครอบคลุมการแปล",
2494
+ "coverage_by_file": "ความคุ้มครองตามไฟล์",
2495
+ "file_coverage_stats": "สถิติความครอบคลุมของไฟล์",
2496
+ "hardcoded_console_statements": "คำสั่งคอนโซลแบบฮาร์ดโค้ด",
2497
+ "file_header": "ส่วนหัวของไฟล์",
2498
+ "line_statement": "คำสั่งบรรทัด",
2499
+ "suggested_key": "คีย์แนะนำ",
2500
+ "suggested_replacement": "แนะนำให้เปลี่ยน",
2501
+ "recommendations": "ข้อแนะนำ",
2502
+ "recommendation_1": "คำแนะนำ 1",
2503
+ "recommendation_2": "คำแนะนำ 2",
2504
+ "recommendation_3": "คำแนะนำ 3",
2505
+ "recommendation_4": "คำแนะนำ 4",
2506
+ "translation_keys_to_add": "คีย์การแปลที่จะเพิ่ม",
2507
+ "add_keys_instruction": "เพิ่มคำสั่งคีย์",
2508
+ "perfect_translation_coverage": "ความครอบคลุมการแปลที่สมบูรณ์แบบ",
2509
+ "all_statements_using_translation": "ข้อความทั้งหมดที่ใช้การแปล",
2510
+ "i18n_console_translation_checker": "เครื่องมือตรวจสอบการแปลคอนโซล I18n",
2511
+ "script_description_line1": "บรรทัดคำอธิบายสคริปต์1",
2512
+ "script_description_line2": "คำอธิบายสคริปต์บรรทัดที่ 2",
2513
+ "analysis_completed_in_duration": "การวิเคราะห์เสร็จสิ้นภายในระยะเวลา",
2514
+ "report_saved_to_path": "บันทึกรายงานไปยังเส้นทางแล้ว",
2515
+ "found_hardcoded_messages": "พบข้อความฮาร์ดโค้ด",
2516
+ "all_console_messages_use_translation": "ข้อความคอนโซลทั้งหมดใช้การแปล"
2517
+ },
2518
+ "exportTranslations": {
2519
+ "createdDirectory": "สร้างไดเรกทอรีแล้ว",
2520
+ "foundFiles": "พบไฟล์",
2521
+ "createdTemplate": "สร้างเทมเพลตแล้ว",
2522
+ "skippedExisting": "ข้ามที่มีอยู่",
2523
+ "title": "ชื่อ",
2524
+ "creatingTemplates": "การสร้างเทมเพลต",
2525
+ "summary": "สรุป",
2526
+ "summaryLanguages": "ภาษาสรุป",
2527
+ "summaryFilesPerLanguage": "ไฟล์สรุปต่อภาษา",
2528
+ "summaryTotalFiles": "สรุปไฟล์ทั้งหมด",
2529
+ "success": "ความสำเร็จ",
2530
+ "location": "ที่ตั้ง",
2531
+ "nextSteps": "ขั้นตอนต่อไป"
2532
+ },
2533
+ "dashboard": {
2534
+ "title": "ชื่อ",
2535
+ "overview": "ภาพรวม"
2536
+ },
2537
+ "auth": {
2538
+ "title": "ชื่อ",
2539
+ "email": "อีเมล",
2540
+ "password": "รหัสผ่าน",
2541
+ "signIn": "เข้าสู่ระบบ",
2542
+ "forgotPassword": "ลืมรหัสผ่าน",
2543
+ "signUp": "ลงทะเบียน"
2544
+ },
2545
+ "checkUsage": {
2546
+ "usage_analysis_failed": "การวิเคราะห์การใช้งานล้มเหลว"
2547
+ },
2548
+ "completeTranslations": {
2549
+ "warning_could_not_parse_filepa": "คำเตือน: ไม่สามารถแยกวิเคราะห์เส้นทางของไฟล์: {filePath}"
2550
+ },
2551
+ "pressEnterToContinue": "กด Enter เพื่อดำเนินการต่อ...",
2552
+ "status": {
2553
+ "exitingCompleted": "ขั้นตอนการทำงานเสร็จสมบูรณ์ กำลังออก..."
2554
+ },
2555
+ "prompt": {
2556
+ "yesTokens": [
2557
+ "ย",
2558
+ "ใช่"
2559
+ ],
2560
+ "noTokens": [
2561
+ "n",
2562
+ "เลขที่"
2563
+ ]
2564
+ },
2565
+ "translate": {
2566
+ "title": "แปลอัตโนมัติ",
2567
+ "sourceDirectory": {
2568
+ "title": "ไดเรกทอรีสถานที่ต้นทาง",
2569
+ "currentProject": "โครงการปัจจุบัน: {dir}",
2570
+ "accepted": "ยอมรับแล้ว: เส้นทางสัมบูรณ์ หรือเส้นทางที่เกี่ยวข้องกับโครงการปัจจุบัน",
2571
+ "localeRootExample": "./locales (จากนั้นเลือกภาษาต้นฉบับ: en)",
2572
+ "folderHint": "โฟลเดอร์นี้สามารถมีไฟล์ JSON ได้โดยตรง หรือโฟลเดอร์ภาษา เช่น ./locales/en",
2573
+ "defaultNotFound": "ไม่พบไดเรกทอรีเริ่มต้น: {dir}",
2574
+ "enterExisting": "โปรดป้อนไดเรกทอรีที่มีอยู่ด้วยไฟล์ภาษา JSON",
2575
+ "directoryNotFound": "ไม่พบไดเรกทอรี: {dir}",
2576
+ "enterFolderExample": "ป้อนโฟลเดอร์ที่มีอยู่ เช่น ./locales/en",
2577
+ "notDirectory": "ไม่ใช่ไดเรกทอรี: {dir}",
2578
+ "using": "การใช้ไดเร็กทอรีต้นทาง: {dir}"
2579
+ },
2580
+ "targetLanguages": {
2581
+ "title": "ภาษาเป้าหมาย",
2582
+ "allConfigured": "ก) ภาษาเป้าหมายที่กำหนดค่าทั้งหมด: {languages}",
2583
+ "noneConfigured": "ก) ภาษาเป้าหมายที่กำหนดค่าทั้งหมด: ไม่มีการกำหนดค่า",
2584
+ "enterCodes": "หรือป้อนรหัสภาษาที่คั่นด้วยเครื่องหมายจุลภาค/ช่องว่างอย่างน้อยหนึ่งรหัส",
2585
+ "sourceExcluded": "ภาษาต้นทาง \"{lang}\" จะถูกยกเว้นโดยอัตโนมัติ",
2586
+ "noneSelected": "ไม่ได้เลือกภาษาเป้าหมายที่ถูกต้อง กำลังยกเลิก",
2587
+ "configureHint": "กำหนดค่า defaultLanguages ​​ใน .i18ntk-config หรือป้อนรหัสเป้าหมายด้วยตนเอง",
2588
+ "selected": "ภาษาเป้าหมาย: {languages}"
2589
+ },
2590
+ "protection": {
2591
+ "title": "ข้อกำหนดและกุญแจที่ได้รับการคุ้มครอง"
2592
+ },
2593
+ "common": {
2594
+ "default": "ค่าเริ่มต้น: {value}",
2595
+ "examples": "ตัวอย่าง:",
2596
+ "exampleValue": "ตัวอย่าง: {value}",
2597
+ "examplesInline": "ตัวอย่าง: {examples}",
2598
+ "pressEnterDefault": "กด Enter เพื่อใช้ค่าเริ่มต้น",
2599
+ "usingDefault": "ใช้ค่าเริ่มต้น: {value}"
2600
+ },
2601
+ "sourceLanguage": {
2602
+ "title": "รหัสภาษาต้นฉบับ",
2603
+ "hint": "ซึ่งควรตรงกับภาษาของค่า JSON ต้นทาง",
2604
+ "using": "การใช้ภาษาต้นฉบับ: {lang}",
2605
+ "invalid": "รหัสภาษาไม่ถูกต้อง ใช้อักขระ 2 ตัวขึ้นไป (เช่น en, de, fr)"
2606
+ },
2607
+ "files": {
2608
+ "title": "ไฟล์ใดที่จะแปล?",
2609
+ "all": "ก) ไฟล์ JSON ทั้งหมด ({count}: {files})",
2610
+ "choicePrompt": "ตัวเลือก [a/all หรือหมายเลขไฟล์]:",
2611
+ "invalidChoice": "ตัวเลือกไม่ถูกต้อง กำลังยกเลิก"
2612
+ },
2613
+ "dryRun": {
2614
+ "previewFor": "การแสดงตัวอย่างการทดลองเรียกใช้สำหรับ \"{lang}\"..."
2615
+ },
2616
+ "confirm": {
2617
+ "proceed": "ดำเนินการแปลจริงต่อหรือไม่?",
2618
+ "yesNoPrompt": "[y]es / [n]o:",
2619
+ "cancelled": "การแปลถูกยกเลิก"
2620
+ },
2621
+ "run": {
2622
+ "translatingTo": "แปลเป็น \"{lang}\"...",
2623
+ "failedFor": "ล้มเหลวสำหรับ \"{lang}\": {error}"
2624
+ },
2625
+ "summary": {
2626
+ "title": "สรุป:",
2627
+ "complete": "แปลเสร็จแล้ว!"
2628
+ },
2629
+ "nonInteractive": {
2630
+ "useDirect": "โหมดไม่โต้ตอบ ใช้ direct CLI แทน:"
2631
+ },
2632
+ "errors": {
2633
+ "sourceDirectoryNotFound": "ไม่พบไดเรกทอรีสถานที่ต้นทาง: {dir}"
2634
+ }
2635
+ }
2636
+ }