i18ntk 1.0.0
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.
- package/CHANGELOG.md +401 -0
- package/LICENSE +21 -0
- package/README.md +507 -0
- package/dev/README.md +37 -0
- package/dev/debug/README.md +30 -0
- package/dev/debug/complete-console-translations.js +295 -0
- package/dev/debug/console-key-checker.js +408 -0
- package/dev/debug/console-translations.js +335 -0
- package/dev/debug/debugger.js +408 -0
- package/dev/debug/export-missing-keys.js +432 -0
- package/dev/debug/final-normalize.js +236 -0
- package/dev/debug/find-extra-keys.js +68 -0
- package/dev/debug/normalize-locales.js +153 -0
- package/dev/debug/refactor-locales.js +240 -0
- package/dev/debug/reorder-locales.js +85 -0
- package/dev/debug/replace-hardcoded-console.js +378 -0
- package/docs/INSTALLATION.md +449 -0
- package/docs/README.md +222 -0
- package/docs/TODO_ROADMAP.md +279 -0
- package/docs/api/API_REFERENCE.md +377 -0
- package/docs/api/COMPONENTS.md +492 -0
- package/docs/api/CONFIGURATION.md +651 -0
- package/docs/api/NPM_PUBLISHING_GUIDE.md +434 -0
- package/docs/debug/DEBUG_README.md +30 -0
- package/docs/debug/DEBUG_TOOLS.md +494 -0
- package/docs/development/AGENTS.md +351 -0
- package/docs/development/DEVELOPMENT_RULES.md +165 -0
- package/docs/development/DEV_README.md +37 -0
- package/docs/release-notes/RELEASE_NOTES_v1.0.0.md +173 -0
- package/docs/release-notes/RELEASE_NOTES_v1.6.0.md +141 -0
- package/docs/release-notes/RELEASE_NOTES_v1.6.1.md +185 -0
- package/docs/release-notes/RELEASE_NOTES_v1.6.3.md +199 -0
- package/docs/reports/ANALYSIS_README.md +17 -0
- package/docs/reports/CONSOLE_MISMATCH_BUG_REPORT_v1.5.0.md +181 -0
- package/docs/reports/SIZING_README.md +18 -0
- package/docs/reports/SUMMARY_README.md +18 -0
- package/docs/reports/TRANSLATION_BUG_REPORT_v1.5.0.md +129 -0
- package/docs/reports/USAGE_README.md +18 -0
- package/docs/reports/VALIDATION_README.md +18 -0
- package/locales/de/auth.json +3 -0
- package/locales/de/common.json +16 -0
- package/locales/de/pagination.json +6 -0
- package/locales/en/auth.json +3 -0
- package/locales/en/common.json +16 -0
- package/locales/en/pagination.json +6 -0
- package/locales/es/auth.json +3 -0
- package/locales/es/common.json +16 -0
- package/locales/es/pagination.json +6 -0
- package/locales/fr/auth.json +3 -0
- package/locales/fr/common.json +16 -0
- package/locales/fr/pagination.json +6 -0
- package/locales/ru/auth.json +3 -0
- package/locales/ru/common.json +16 -0
- package/locales/ru/pagination.json +6 -0
- package/main/i18ntk-analyze.js +625 -0
- package/main/i18ntk-autorun.js +461 -0
- package/main/i18ntk-complete.js +494 -0
- package/main/i18ntk-init.js +686 -0
- package/main/i18ntk-manage.js +848 -0
- package/main/i18ntk-sizing.js +557 -0
- package/main/i18ntk-summary.js +671 -0
- package/main/i18ntk-usage.js +1282 -0
- package/main/i18ntk-validate.js +762 -0
- package/main/ui-i18n.js +332 -0
- package/package.json +152 -0
- package/scripts/fix-missing-translation-keys.js +214 -0
- package/scripts/verify-package.js +168 -0
- package/ui-locales/de.json +637 -0
- package/ui-locales/en.json +688 -0
- package/ui-locales/es.json +637 -0
- package/ui-locales/fr.json +637 -0
- package/ui-locales/ja.json +637 -0
- package/ui-locales/ru.json +637 -0
- package/ui-locales/zh.json +637 -0
- package/utils/admin-auth.js +317 -0
- package/utils/admin-cli.js +353 -0
- package/utils/admin-pin.js +409 -0
- package/utils/detect-language-mismatches.js +454 -0
- package/utils/i18n-helper.js +128 -0
- package/utils/maintain-language-purity.js +433 -0
- package/utils/native-translations.js +478 -0
- package/utils/security.js +384 -0
- package/utils/test-complete-system.js +356 -0
- package/utils/test-console-i18n.js +402 -0
- package/utils/translate-mismatches.js +571 -0
- package/utils/validate-language-purity.js +531 -0
|
@@ -0,0 +1,688 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": {
|
|
3
|
+
"title": "š Language Selection",
|
|
4
|
+
"separator": "============================================================",
|
|
5
|
+
"current": "Current language: {language}",
|
|
6
|
+
"available": "Available languages:",
|
|
7
|
+
"prompt": "Select language (0 to cancel): ",
|
|
8
|
+
"cancelled": "Language selection cancelled.",
|
|
9
|
+
"changed": "Language changed to: {language}",
|
|
10
|
+
"invalid": "Invalid selection. Please try again.",
|
|
11
|
+
"changeTitle": "š Change UI Language",
|
|
12
|
+
"invalidSelection": "ā Invalid selection. Please try again."
|
|
13
|
+
},
|
|
14
|
+
"menu": {
|
|
15
|
+
"title": "š I18N MANAGEMENT MENU",
|
|
16
|
+
"separator": "============================================================",
|
|
17
|
+
"options": {
|
|
18
|
+
"init": "š Initialize new languages",
|
|
19
|
+
"analyze": "š Analyze translations",
|
|
20
|
+
"validate": "ā
Validate translations",
|
|
21
|
+
"usage": "š Check key usage",
|
|
22
|
+
"complete": "šÆ Complete translations (100% coverage)",
|
|
23
|
+
"sizing": "š Analyze sizing",
|
|
24
|
+
"workflow": "š Run full workflow",
|
|
25
|
+
"status": "š Show project status",
|
|
26
|
+
"delete": "šļø Delete all reports",
|
|
27
|
+
"language": "š Change UI language",
|
|
28
|
+
"settings": "āļø Settings",
|
|
29
|
+
"help": "ā Help",
|
|
30
|
+
"debug": "š§ Debug Tools",
|
|
31
|
+
"exit": "šŖ Exit"
|
|
32
|
+
},
|
|
33
|
+
"goodbye": "š Goodbye!",
|
|
34
|
+
"invalidChoice": "ā Invalid choice. Please select 0-13.",
|
|
35
|
+
"returning": "š Returning to main menu...",
|
|
36
|
+
"invalidOption": "ā Invalid option. Please try again."
|
|
37
|
+
},
|
|
38
|
+
"init": {
|
|
39
|
+
"warnings": {
|
|
40
|
+
"noPackageJson": "ā ļø No package.json found in current directory"
|
|
41
|
+
},
|
|
42
|
+
"suggestions": {
|
|
43
|
+
"noFramework": "š” No i18n framework detected. Consider installing:",
|
|
44
|
+
"installFramework": "š” Install a framework: npm install react-i18next"
|
|
45
|
+
},
|
|
46
|
+
"frameworks": {
|
|
47
|
+
"react": " - React: react-i18next",
|
|
48
|
+
"vue": " - Vue: vue-i18n",
|
|
49
|
+
"i18next": " - i18next: i18next",
|
|
50
|
+
"nuxt": " - Nuxt: @nuxtjs/i18n",
|
|
51
|
+
"svelte": " - Svelte: svelte-i18n"
|
|
52
|
+
},
|
|
53
|
+
"errors": {
|
|
54
|
+
"packageJsonRead": "ā Error reading package.json",
|
|
55
|
+
"noFramework": "ā No supported i18n framework found"
|
|
56
|
+
},
|
|
57
|
+
"creatingSourceDirectory": "š Creating source directory: {dir}",
|
|
58
|
+
"creatingSourceLanguageDirectory": "š Creating source language directory: {dir}",
|
|
59
|
+
"createdSampleTranslationFile": "ā
Created sample translation file: {file}",
|
|
60
|
+
"adminPinSeparator": "==================================================",
|
|
61
|
+
"adminPinDescription1": "Admin PIN protection adds security for sensitive operations like:",
|
|
62
|
+
"adminPinDescription2": "⢠Deleting translation files",
|
|
63
|
+
"adminPinDescription3": "⢠Modifying project configuration",
|
|
64
|
+
"adminPinDescription4": "⢠Running administrative commands",
|
|
65
|
+
"settingUpAdminPin": "š Setting up admin PIN...",
|
|
66
|
+
"pinMustBe4To8Digits": "ā PIN must be 4-8 digits only. Please try again.",
|
|
67
|
+
"pinsDoNotMatch": "ā PINs do not match. Please try again.",
|
|
68
|
+
"adminPinSetupSuccess": "ā
Admin PIN has been set up successfully!",
|
|
69
|
+
"adminProtectionEnabled": "š Admin protection is now enabled for sensitive operations.",
|
|
70
|
+
"errorSettingUpAdminPin": "ā Error setting up admin PIN: {error}",
|
|
71
|
+
"continuingWithoutAdminPin": "ā ļø Continuing without admin PIN protection.",
|
|
72
|
+
"skippingAdminPinSetup": "āļø Skipping admin PIN setup. You can set it up later using the settings.",
|
|
73
|
+
"adminPinSetupOptional": "š ADMIN PIN SETUP (OPTIONAL)",
|
|
74
|
+
"adminPinSetupPrompt": "Would you like to set up an admin PIN? (y/N): ",
|
|
75
|
+
"enterAdminPin": "Enter admin PIN (4-8 digits): ",
|
|
76
|
+
"confirmAdminPin": "Confirm admin PIN: ",
|
|
77
|
+
"languageSelectionTitle": "š I18N LANGUAGE SELECTION",
|
|
78
|
+
"defaultLanguages": "š Default languages: {languages}",
|
|
79
|
+
"enterLanguageCodes": "Enter language codes (comma-separated) or press Enter for defaults: ",
|
|
80
|
+
"warningInvalidLanguageCodes": "ā ļø Warning: Invalid language codes ignored: {languages}",
|
|
81
|
+
"initializationTitle": "š I18N INITIALIZATION",
|
|
82
|
+
"sourceDirectoryLabel": "š Source directory: {dir}",
|
|
83
|
+
"sourceLanguageLabel": "š¤ Source language: {language}",
|
|
84
|
+
"initializingProject": "š Initializing i18n project...",
|
|
85
|
+
"warningProceedingWithoutFramework": "ā ļø Warning: Proceeding without proper i18n framework.",
|
|
86
|
+
"translationFilesCreatedWarning": "š§ Translation files will be created but may not work without proper i18n setup.",
|
|
87
|
+
"noTargetLanguagesSpecified": "ā No target languages specified. Exiting.",
|
|
88
|
+
"targetLanguages": "šÆ Target languages: {languages}",
|
|
89
|
+
"foundSourceFiles": "š Found {count} source files: {files}",
|
|
90
|
+
"processingLanguage": "š Processing {language} ({name})...",
|
|
91
|
+
"fileProcessingResult": " ā
{file}: {translated}/{total} ({percentage}%)",
|
|
92
|
+
"overallProgress": " š Overall: {translated}/{total} ({percentage}%)",
|
|
93
|
+
"initializationSummaryTitle": "š INITIALIZATION SUMMARY",
|
|
94
|
+
"languageSummary": "{icon} {name} ({code}): {percentage}% complete",
|
|
95
|
+
"languageFiles": " š Files: {count}",
|
|
96
|
+
"languageKeys": " š¤ Keys: {translated}/{total}",
|
|
97
|
+
"languageMissing": " ā ļø Missing: {count}",
|
|
98
|
+
"initializationCompletedSuccessfully": "š Initialization completed successfully!",
|
|
99
|
+
"nextStepsTitle": "š Next steps:",
|
|
100
|
+
"nextStep1": "1. Run: npm run i18n:analyze",
|
|
101
|
+
"nextStep2": "2. Translate missing values in language files",
|
|
102
|
+
"nextStep3": "3. Run: npm run i18n:validate",
|
|
103
|
+
"detectedI18nFrameworks": "ā
Detected i18n framework(s): {{frameworks}}",
|
|
104
|
+
"continueWithoutI18nPrompt": "š¤ Continue without i18n framework? (y/N): ",
|
|
105
|
+
"creatingSourceDirectory": "š Creating source directory: {{dir}}",
|
|
106
|
+
"creatingSourceLanguageDirectory": "š Creating source language directory: {{dir}}",
|
|
107
|
+
"createdSampleTranslationFile": "š Created sample translation file: {{file}}",
|
|
108
|
+
"warnings": {
|
|
109
|
+
"noPackageJson": "ā ļø No package.json found in current directory."
|
|
110
|
+
},
|
|
111
|
+
"suggestions": {
|
|
112
|
+
"noFramework": "š” No i18n framework detected. Consider installing one:",
|
|
113
|
+
"installFramework": "š” Install an i18n framework and run this script again."
|
|
114
|
+
},
|
|
115
|
+
"frameworks": {
|
|
116
|
+
"react": " npm install react-i18next i18next",
|
|
117
|
+
"vue": " npm install vue-i18n",
|
|
118
|
+
"i18next": " npm install i18next",
|
|
119
|
+
"nuxt": " npm install @nuxtjs/i18n",
|
|
120
|
+
"svelte": " npm install svelte-i18n"
|
|
121
|
+
},
|
|
122
|
+
"errors": {
|
|
123
|
+
"packageJsonRead": "ā Error reading package.json",
|
|
124
|
+
"noFramework": "ā No i18n framework found and user chose not to continue."
|
|
125
|
+
},
|
|
126
|
+
"initializationFailed": "ā Initialization failed: {{error}}"
|
|
127
|
+
},
|
|
128
|
+
"workflow": {
|
|
129
|
+
"starting": "š Starting workflow...",
|
|
130
|
+
"completed": "ā
Workflow completed successfully!",
|
|
131
|
+
"checkReports": "š Check reports for details",
|
|
132
|
+
"exitingCompleted": "š Workflow completed. Exiting..."
|
|
133
|
+
},
|
|
134
|
+
"operations": {
|
|
135
|
+
"completed": "ā
Operation completed successfully!",
|
|
136
|
+
"cancelled": "ā Operation cancelled.",
|
|
137
|
+
"init": {
|
|
138
|
+
"title": "š Initialize New Language"
|
|
139
|
+
},
|
|
140
|
+
"analyze": {
|
|
141
|
+
"title": "š Analyze Translations"
|
|
142
|
+
},
|
|
143
|
+
"validate": {
|
|
144
|
+
"title": "ā
Validate Translations"
|
|
145
|
+
},
|
|
146
|
+
"settings": {
|
|
147
|
+
"title": "āļø Settings Management",
|
|
148
|
+
"separator": "============================================================"
|
|
149
|
+
},
|
|
150
|
+
"complete": {
|
|
151
|
+
"deletingOldReport": "šļø Deleting old usage report for fresh analysis",
|
|
152
|
+
"generatingFreshAnalysis": "š Generating fresh usage analysis...",
|
|
153
|
+
"couldNotGenerate": "ā ļø Could not generate usage analysis. Using common missing keys.",
|
|
154
|
+
"reportNotFound": "ā ļø Usage report not found. Generating fresh analysis...",
|
|
155
|
+
"foundMissingKeys": "š Found {count} missing keys from usage analysis",
|
|
156
|
+
"couldNotParse": "ā ļø Could not parse usage report. Using common missing keys.",
|
|
157
|
+
"title": "šÆ COMPLETING TRANSLATIONS",
|
|
158
|
+
"separator": "============================================================",
|
|
159
|
+
"sourceDir": "š Source directory: {sourceDir}",
|
|
160
|
+
"sourceLanguage": "š¤ Source language: {sourceLanguage}",
|
|
161
|
+
"dryRunMode": "š§Ŗ DRY RUN MODE - No files will be modified",
|
|
162
|
+
"languages": "šÆ Target languages: {languages}",
|
|
163
|
+
"addingMissingKeys": "ā Adding missing keys to translation files...",
|
|
164
|
+
"processing": "š Processing {language}...",
|
|
165
|
+
"addedKeys": "ā
Added {count} keys",
|
|
166
|
+
"changeDetails": "š {file}: {key}",
|
|
167
|
+
"noChangesNeeded": "ā
No changes needed for {language}",
|
|
168
|
+
"summaryTitle": "š COMPLETION SUMMARY",
|
|
169
|
+
"totalChanges": "š Total changes: {totalChanges}",
|
|
170
|
+
"languagesProcessed": "š Languages processed: {languagesProcessed}",
|
|
171
|
+
"missingKeysAdded": "ā Missing keys added: {missingKeysAdded}",
|
|
172
|
+
"nextStepsTitle": "š NEXT STEPS",
|
|
173
|
+
"nextStep1": "1. Run usage analysis:",
|
|
174
|
+
"nextStep2": "2. Validate translations:",
|
|
175
|
+
"nextStep3": "3. Analyze completeness:",
|
|
176
|
+
"allKeysAvailable": "š All translation keys are now available!",
|
|
177
|
+
"runWithoutDryRun": "š” Run without --dry-run to apply changes"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"admin": {
|
|
181
|
+
"authRequired": "š Admin authentication required",
|
|
182
|
+
"invalidPin": "ā Invalid PIN. Access denied.",
|
|
183
|
+
"authSuccess": "ā
Authentication successful"
|
|
184
|
+
},
|
|
185
|
+
"status": {
|
|
186
|
+
"generating": "\nš Generating Status Summary...",
|
|
187
|
+
"completed": "ā
Status summary completed successfully!",
|
|
188
|
+
"exitingCompleted": "\nš Status summary completed. Exiting...",
|
|
189
|
+
"i18nSetup": "š I18n setup"
|
|
190
|
+
},
|
|
191
|
+
"common": {
|
|
192
|
+
"errorExiting": "\nš Error occurred. Exiting...",
|
|
193
|
+
"welcome": "š Welcome to I18n Management Toolkit!",
|
|
194
|
+
"success": "ā
Operation completed successfully!",
|
|
195
|
+
"error": "ā An error occurred!"
|
|
196
|
+
},
|
|
197
|
+
"delete": {
|
|
198
|
+
"options": {
|
|
199
|
+
"title": "šļø Delete Options",
|
|
200
|
+
"all": "1. Delete all reports",
|
|
201
|
+
"keepLast3": "2. Keep last 3 reports",
|
|
202
|
+
"cancel": "0. Cancel"
|
|
203
|
+
},
|
|
204
|
+
"noFiles": "š No files to delete."
|
|
205
|
+
},
|
|
206
|
+
"checkUsage": {
|
|
207
|
+
"help_message": "\nI18n Usage Analyzer\n\nUsage: node i18ntk-usage.js [options]\n\nOptions:\n --source-dir <dir> Source directory to scan (default: ./src)\n --i18n-dir <dir> I18n directory (default: ./src/locales)\n --output-report Generate detailed report\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\n node i18ntk-usage.js --output-report\n node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-usage.js --output-dir=./analysis --output-report\n",
|
|
208
|
+
"source_directory_thissourcedir": "š Source directory: {sourceDir}",
|
|
209
|
+
"i18n_directory_thisi18ndir": "š I18n directory: {i18nDir}",
|
|
210
|
+
"failed_to_parse_filename_error": "ā ļø Failed to parse {fileName}: {errorMessage}",
|
|
211
|
+
"analyzing_source_files": "š Analyzing source files...",
|
|
212
|
+
"found_files_in_source": "š Found {numFiles} files in source directory",
|
|
213
|
+
"found_thisusedkeyssize_unique_": "šÆ Found {usedKeysSize} unique used keys",
|
|
214
|
+
"total_key_usages_totalkeysfoun": "š Total key usages: {totalKeysFound}",
|
|
215
|
+
"loading_available_translation_": "š Loading available translation keys...",
|
|
216
|
+
"found_thisavailablekeyssize_av": "ā
Found {availableKeysSize} available keys",
|
|
217
|
+
"title": "š I18N USAGE ANALYSIS",
|
|
218
|
+
"message": "Starting usage analysis...",
|
|
219
|
+
"n": "\n",
|
|
220
|
+
"usage_analysis_results": "š USAGE ANALYSIS RESULTS",
|
|
221
|
+
"source_files_scanned_thisfileu": "š Source files scanned: {fileUsageSize}",
|
|
222
|
+
"available_translation_keys_thi": "š¤ Available translation keys: {availableKeysSize}",
|
|
223
|
+
"used_translation_keys_thisused": "šÆ Used translation keys: {usedKeysSize}",
|
|
224
|
+
"dynamic_keys_detected_dynamick": "š Dynamic keys detected: {dynamicKeysLength}",
|
|
225
|
+
"unused_keys_unusedkeyslength": "ā Unused keys: {unusedKeysLength}",
|
|
226
|
+
"missing_keys_missingkeyslength": "ā ļø Missing keys: {missingKeysLength}",
|
|
227
|
+
"translation_completeness_title": "š Translation Completeness:",
|
|
228
|
+
"language_completeness_stats": " {language}: {completeness}% complete ({translated}/{total})",
|
|
229
|
+
"n_sample_unused_keys": "\nš Sample unused keys:",
|
|
230
|
+
"key": "ā {key}",
|
|
231
|
+
"and_unusedkeyslength_5_more": "... and {count} more",
|
|
232
|
+
"n_sample_missing_keys": "\nš Sample missing keys:",
|
|
233
|
+
"and_missingkeyslength_5_more": "... and {count} more missing keys",
|
|
234
|
+
"n_generating_detailed_report": "\nš Generating detailed report...",
|
|
235
|
+
"report_saved_reportpath": "š Report saved: {reportPath}",
|
|
236
|
+
"n_recommendations": "\nš” Recommendations:",
|
|
237
|
+
"consider_removing_unused_trans": "šļø Consider removing unused translation keys",
|
|
238
|
+
"add_missing_translation_keys_t": "ā ļø Add missing translation keys to avoid runtime errors",
|
|
239
|
+
"review_dynamic_keys_manually_t": "š Review dynamic keys manually to ensure all variations exist",
|
|
240
|
+
"all_translation_keys_are_prope": "š All translation keys are properly used!",
|
|
241
|
+
"n_next_steps": "\nš Next steps:",
|
|
242
|
+
"1_review_the_analysis_results": "1. Review the analysis results above",
|
|
243
|
+
"2_check_the_detailed_report_fo": "2. Check the detailed report for specific files and keys",
|
|
244
|
+
"2_run_with_outputreport_for_de": "2. Run with --output-report for detailed report",
|
|
245
|
+
"3_remove_unused_keys_or_add_mi": "3. Remove unused keys or add missing ones",
|
|
246
|
+
"4_rerun_analysis_to_verify_imp": "4. Rerun analysis to verify improvements",
|
|
247
|
+
"usage_analysis_failed": "ā Usage analysis failed:"
|
|
248
|
+
},
|
|
249
|
+
"validateTranslations": {
|
|
250
|
+
"help_message": "\nI18n Translation Validator\n\nUsage: node i18ntk-validate.js [options]\n\nOptions:\n --language <lang> Validate specific language (default: all)\n --source-dir <dir> Source directory (default: ./src/locales)\n --strict Enable strict mode (warnings become errors)\n --help Show this help\n\nAdmin Commands:\n --setup-admin Set up admin PIN protection\n --disable-admin Disable admin PIN protection\n --admin-status Show admin protection status\n\nExamples:\n node i18ntk-validate.js\n node i18ntk-validate.js --language=de\n node i18ntk-validate.js --source-dir=./locales --strict\n node i18ntk-validate.js --setup-admin\n",
|
|
251
|
+
"title": "š I18N TRANSLATION VALIDATION",
|
|
252
|
+
"message": "===========",
|
|
253
|
+
"deletedOldReport": "šļø Deleted old validation report",
|
|
254
|
+
"sourceDirectory": "š Source directory: {{dir}}",
|
|
255
|
+
"source_language_thisconfigsour": "š¤ Source language: {{sourceLanguage}}",
|
|
256
|
+
"strictMode": "āļø Strict mode: {{mode}}",
|
|
257
|
+
"noTargetLanguages": "ā No target languages found.",
|
|
258
|
+
"validatingLanguages": "šÆ Validating languages: {{langs}}",
|
|
259
|
+
"validatingLanguage": "\nš Validating {{lang}}...",
|
|
260
|
+
"filesCount": " š Files: {count}",
|
|
261
|
+
"keysCount": " š¤ Keys: {count}",
|
|
262
|
+
"missingFilesCount": " ā Missing files: {count}",
|
|
263
|
+
"syntaxErrorsCount": " š Syntax errors: {count}",
|
|
264
|
+
"translationPercentage": " š Translation: {{percentage}}% ({{translated}}/{{total}})",
|
|
265
|
+
"n_validation_summary": "\nš VALIDATION SUMMARY",
|
|
266
|
+
"total_errors": "ā Total errors: {count}",
|
|
267
|
+
"total_warnings": "ā ļø Total warnings: {count}",
|
|
268
|
+
"n_errors": "\nā ERRORS:",
|
|
269
|
+
"n_warnings": "\nā ļø WARNINGS:",
|
|
270
|
+
"n_recommendations": "\nš RECOMMENDATIONS",
|
|
271
|
+
"fix_errors_first": "š§ Fix errors first:",
|
|
272
|
+
"1_resolve_missing_files_and_sy": "1. Resolve missing files and syntax errors",
|
|
273
|
+
"2_fix_structural_inconsistenci": "2. Fix structural inconsistencies",
|
|
274
|
+
"3_complete_missing_translation": "3. Complete missing translations",
|
|
275
|
+
"4_rerun_validation": "4. Re-run validation",
|
|
276
|
+
"address_warnings": "ā ļø Address warnings:",
|
|
277
|
+
"review_warnings": "1. Review warnings above",
|
|
278
|
+
"2_consider_running_with_strict": "2. Consider running with --strict for stricter validation",
|
|
279
|
+
"all_validations_passed": "š All validations passed!",
|
|
280
|
+
"consider_running_usage_analysi": "š” Consider running usage analysis to find unused keys",
|
|
281
|
+
"validation_failed": "ā Validation failed:",
|
|
282
|
+
"invalidEmailFormat": "Invalid email format"
|
|
283
|
+
},
|
|
284
|
+
"analyzeTranslations": {
|
|
285
|
+
"keysToTranslate": "KEYS NEEDING TRANSLATION",
|
|
286
|
+
"help_message": "\nI18n Translation Analyzer\n\nUsage: node i18ntk-analyze.js [options]\n\nOptions:\n --language <lang> Analyze specific language (default: all)\n --source-dir <dir> Source directory (default: ./src/locales)\n --output-reports Generate detailed reports\n --output-dir <dir> Output directory for reports (default: ./reports)\n --help Show this help\n\nExamples:\n node i18ntk-analyze.js --output-reports\n node i18ntk-analyze.js --language=de --output-reports\n node i18ntk-analyze.js --source-dir=./locales --output-dir=./analysis\n",
|
|
287
|
+
"starting": "š Starting translation analysis...",
|
|
288
|
+
"noLanguages": "ā ļø No target languages found.",
|
|
289
|
+
"foundLanguages": "š Found languages: {languages}",
|
|
290
|
+
"referenceLanguageFiles": "Reference language files: {files}",
|
|
291
|
+
"analyzingLanguage": "Analyzing language: {language}",
|
|
292
|
+
"analyzing": "\nš Analyzing {{language}}...",
|
|
293
|
+
"completed": "ā
Analysis completed for {{language}}",
|
|
294
|
+
"progress": " Progress: {{percentage}}% ({{translatedKeys}}/{{totalKeys}} keys)",
|
|
295
|
+
"reportSaved": " Report saved: {{reportPath}}",
|
|
296
|
+
"finished": "\nā
Analysis completed successfully!",
|
|
297
|
+
"error": "ā Analysis failed",
|
|
298
|
+
"reportTitle": "TRANSLATION ANALYSIS REPORT FOR {language}",
|
|
299
|
+
"generated": "Generated: {timestamp}",
|
|
300
|
+
"status": "Status: {translated}/{total} translated ({percentage}%)",
|
|
301
|
+
"filesAnalyzed": "Files analyzed: {analyzed}/{total}",
|
|
302
|
+
"keysNeedingTranslation": "Keys needing translation: {count}",
|
|
303
|
+
"fileBreakdown": "FILE BREAKDOWN:",
|
|
304
|
+
"statusFileMissing": "Status: File missing",
|
|
305
|
+
"sourceKeys": "Source keys: {count}",
|
|
306
|
+
"translation": "Translation: {translated}/{total} ({percentage}%)",
|
|
307
|
+
"structure": "Structure: {status}",
|
|
308
|
+
"consistent": "Consistent",
|
|
309
|
+
"inconsistent": "Inconsistent",
|
|
310
|
+
"missingKeys": "Missing keys: {count}",
|
|
311
|
+
"extraKeys": "Extra keys: {count}",
|
|
312
|
+
"issues": "Issues: {count}",
|
|
313
|
+
"issueType": {
|
|
314
|
+
"not_translated": "Not translated: {count}",
|
|
315
|
+
"empty_value": "Empty value: {count}",
|
|
316
|
+
"partial_translation": "Partial translation: {count}",
|
|
317
|
+
"same_as_source": "Same as source: {count}" },
|
|
318
|
+
"key": "Key",
|
|
319
|
+
"english": "English",
|
|
320
|
+
"needsTranslation": "NEEDS TRANSLATION",
|
|
321
|
+
"andMoreKeys": "... and {count} more keys",
|
|
322
|
+
"problematic_no": "No sizing problems detected",
|
|
323
|
+
"problematic_yes": "Potential sizing issues detected",
|
|
324
|
+
"summary": "\nš ANALYSIS SUMMARY"
|
|
325
|
+
},
|
|
326
|
+
"completeTranslations": {
|
|
327
|
+
"warning_could_not_parse_filepa": "ā ļø Could not parse file: {filePath}"
|
|
328
|
+
},
|
|
329
|
+
"sizing": {
|
|
330
|
+
"analyzing_file_sizes": "Analyzing file sizes...",
|
|
331
|
+
"analyzing_translation_content": "Analyzing translation content...",
|
|
332
|
+
"failed_to_parse_language_error": "Failed to parse {{language}}: {{errorMessage}}",
|
|
333
|
+
"generating_size_comparisons": "Generating size comparisons...",
|
|
334
|
+
"no_languages_found_for_comparison": "No languages found for comparison",
|
|
335
|
+
"sizing_analysis_results": "\nš Sizing Analysis Results",
|
|
336
|
+
"file_sizes_title": "š File Sizes",
|
|
337
|
+
"file_sizes_header": "Language\t\tSize (KB)\t\tLines\t\tCharacters",
|
|
338
|
+
"file_size_row": "{{lang}}\t\t{{sizeKB}} KB\t\t{{lines}} lines\t\t{{characters}} chars",
|
|
339
|
+
"language_statistics_title": "š Language Statistics",
|
|
340
|
+
"language_stats_header": "Language\t\tKeys\t\tTotal Chars\t\tAvg Length\t\tMax Length\t\tEmpty Keys",
|
|
341
|
+
"language_stats_row": "{{lang}}\t\t{{totalKeys}} keys\t\t{{totalCharacters}} chars\t\t{{averageKeyLength}} avg\t\t{{maxKeyLength}} max\t\t{{emptyKeys}} empty",
|
|
342
|
+
"size_variations_title": "āļø Size Variations",
|
|
343
|
+
"size_variations_header": "Language\t\tChar Diff\t\tPercentage\t\tProblematic",
|
|
344
|
+
"size_variation_row": "{{lang}}\t\t{{characterDifference}}\t\t{{percentageDifference}}%\t\t{{problematic}}",
|
|
345
|
+
"recommendations_title": "š” Recommendations",
|
|
346
|
+
"recommendation_item": "{{index}}. {{recommendation}}",
|
|
347
|
+
"generating_detailed_report": "\nš Generating detailed sizing report...",
|
|
348
|
+
"report_saved_to": "Report saved to: {{reportPath}}",
|
|
349
|
+
"csv_report_saved_to": "CSV report saved to: {{csvPath}}",
|
|
350
|
+
"starting_i18n_sizing_analysis": "š Starting I18n Sizing Analysis...",
|
|
351
|
+
"source_directory": "Source directory: {{sourceDir}}",
|
|
352
|
+
"no_translation_files_found": "ā No translation files found",
|
|
353
|
+
"found_languages": "Found languages: {{languages}}",
|
|
354
|
+
"analysis_completed": "ā
Analysis completed in {{duration}}ms",
|
|
355
|
+
"analysis_failed": "ā Sizing analysis failed: {{errorMessage}}",
|
|
356
|
+
"problematic_no": "No sizing problems detected",
|
|
357
|
+
"problematic_yes": "Potential sizing issues detected"
|
|
358
|
+
},
|
|
359
|
+
"summary": {
|
|
360
|
+
"i18nSummaryReportGenerator": "š§ I18N SUMMARY REPORT GENERATOR",
|
|
361
|
+
"keysInFiles": " š {keys} keys in {files} files",
|
|
362
|
+
"checkingInconsistentKeys": "š Checking for inconsistent keys across languages...",
|
|
363
|
+
"reportTitle": "I18N SUMMARY REPORT",
|
|
364
|
+
"generated": "Generated: {timestamp}",
|
|
365
|
+
"sourceDirectory": "Source directory: {dir}",
|
|
366
|
+
"analyzingFolder": "Analyzing folder: {folder}",
|
|
367
|
+
"foundLanguages": "š Found languages: {languages}",
|
|
368
|
+
"referenceLanguageFiles": "Reference language files: {files}",
|
|
369
|
+
"analyzingLanguage": "Analyzing language: {language}",
|
|
370
|
+
"overview": "OVERVIEW",
|
|
371
|
+
"languagesCount": "š Languages: {count}",
|
|
372
|
+
"totalFiles": "š Total files: {count}",
|
|
373
|
+
"totalKeys": "š¤ Total keys: {count}",
|
|
374
|
+
"avgKeysPerLanguage": "š Average keys per language: {count}",
|
|
375
|
+
"languagesBreakdown": "LANGUAGES BREAKDOWN",
|
|
376
|
+
"languageBreakdown": "š {language}: {files} files, {keys} keys",
|
|
377
|
+
"fileStructure": "FILE STRUCTURE",
|
|
378
|
+
"fileKeys": "š {file}: {keys} keys",
|
|
379
|
+
"missingInLanguages": " ā ļø Missing in: {languages}",
|
|
380
|
+
"noIssuesFound": "ā
No issues found ā your i18n configuration looks great!",
|
|
381
|
+
"noIssuesConsole": "ā
No issues found ā your i18n configuration looks great!",
|
|
382
|
+
"allFilesConsistent": "All translation files are consistent across all languages.",
|
|
383
|
+
"recommendations": "Recommendations:",
|
|
384
|
+
"nextSteps": "Next steps:",
|
|
385
|
+
"nextStep1": "1. Review the analysis results above",
|
|
386
|
+
"nextStep2": "2. Check the detailed report for specific files and keys",
|
|
387
|
+
"nextStep3": "3. Remove unused keys or add missing ones",
|
|
388
|
+
"nextStep4": "4. Rerun analysis to verify improvements",
|
|
389
|
+
"inconsistentKeys": "Inconsistent keys found:",
|
|
390
|
+
"missingKeys": " Missing keys: {keys}{more}",
|
|
391
|
+
"extraKeys": " Extra keys: {keys}{more}",
|
|
392
|
+
"createMissingFiles": "Create missing files for all languages.",
|
|
393
|
+
"addContentToEmptyFiles": "Add content to empty translation files.",
|
|
394
|
+
"fixMalformedFiles": "Fix malformed translation files.",
|
|
395
|
+
"removeDuplicateKeys": "Remove duplicate keys from translation files.",
|
|
396
|
+
"synchronizeKeys": "Synchronize keys across all languages.",
|
|
397
|
+
"splitLargeFiles": "Split large translation files for better maintainability.",
|
|
398
|
+
"addMoreLanguages": "Add more languages to your project.",
|
|
399
|
+
"reportSaved": "š Summary report saved: {reportPath}",
|
|
400
|
+
"reportSaveFailed": "ā Failed to save summary report: {reportPath}",
|
|
401
|
+
"couldNotReadFile": "ā ļø Could not read file: {filePath}",
|
|
402
|
+
"couldNotParseJSFile": "ā ļø Could not parse JS/TS file: {filePath}",
|
|
403
|
+
"errorReadingFile": "ā ļø Error reading file {filePath}: {error}",
|
|
404
|
+
"noLanguageDirectoriesFound": "ā No language directories found!",
|
|
405
|
+
"issuesFound": "šØ ISSUES FOUND",
|
|
406
|
+
"missingFiles": "ā Missing Files:",
|
|
407
|
+
"emptyFiles": "š Empty Files:",
|
|
408
|
+
"malformedFiles": "š„ Malformed Files:",
|
|
409
|
+
"duplicateKeys": "š Duplicate Keys:",
|
|
410
|
+
"couldNotFindI18nDirectory": "ā Could not find i18n directory. Please specify with --source-dir",
|
|
411
|
+
"sourceDirectoryDoesNotExist": "ā Source directory does not exist: {sourceDir}",
|
|
412
|
+
"generatingSummaryReport": "\nš Generating summary report...",
|
|
413
|
+
"cleaningUpReportFiles": "\nšļø Cleaning up report files...",
|
|
414
|
+
"couldNotDelete": "ā ļø Could not delete {file}: {error}",
|
|
415
|
+
"noOldReportFilesToDelete": "š No old report files to delete.",
|
|
416
|
+
"errorCleaningUpReports": "ā ļø Error cleaning up reports: {error}",
|
|
417
|
+
"reportFilesPreserved": "\nš Report files preserved as requested.",
|
|
418
|
+
"analysisComplete": "š ANALYSIS COMPLETE",
|
|
419
|
+
"analyzedLanguages": "ā
Analyzed {count} languages",
|
|
420
|
+
"processedFiles": "ā
Processed {count} files",
|
|
421
|
+
"foundTranslationKeys": "ā
Found {count} translation keys",
|
|
422
|
+
"errorDuringAnalysis": "ā Error during analysis: {error}",
|
|
423
|
+
"deletedOldReportFiles": "ā
Deleted {count} old report files.",
|
|
424
|
+
"helpTitle": "š§ I18N SUMMARY REPORT GENERATOR",
|
|
425
|
+
"helpDescription": "Analyzes i18n folder structure and generates comprehensive reports",
|
|
426
|
+
"helpUsage": "Usage: i18ntk summary [options]",
|
|
427
|
+
"helpOptions": "Options:",
|
|
428
|
+
"helpSourceDir": " -s, --source-dir <path> Path to i18n locales directory",
|
|
429
|
+
"helpOutput": " -o, --output <file> Output file for the report",
|
|
430
|
+
"helpVerbose": " -v, --verbose Show detailed output",
|
|
431
|
+
"helpKeepReports": " --keep-reports Keep all existing report files",
|
|
432
|
+
"helpDeleteReports": " --delete-reports Delete old report files after generation",
|
|
433
|
+
"helpHelp": " -h, --help Show this help message",
|
|
434
|
+
"helpExamples": "Examples:",
|
|
435
|
+
"helpExample1": " i18ntk summary",
|
|
436
|
+
"helpExample2": " i18ntk summary --source-dir ./src/i18n/locales",
|
|
437
|
+
"helpExample3": " i18ntk summary --output summary.txt --verbose",
|
|
438
|
+
"helpExample4": " i18ntk summary --output summary.txt --delete-reports",
|
|
439
|
+
"helpExample5": " i18ntk summary --keep-reports",
|
|
440
|
+
"usageReportTitle": "I18N USAGE ANALYSIS REPORT - Version 1.4.3",
|
|
441
|
+
"usageReportGenerated": "Generated: {timestamp}",
|
|
442
|
+
"usageReportSourceDir": "Source directory: {sourceDir}",
|
|
443
|
+
"usageReportI18nDir": "I18n directory: {i18nDir}",
|
|
444
|
+
"usageReportSummary": "SUMMARY",
|
|
445
|
+
"usageReportSourceFilesScanned": "š Source files scanned: {count}",
|
|
446
|
+
"usageReportTranslationFilesFound": "š Translation files found: {count}",
|
|
447
|
+
"usageReportAvailableKeys": "š¤ Available translation keys: {count}",
|
|
448
|
+
"usageReportUsedKeys": "šÆ Used translation keys: {count}",
|
|
449
|
+
"usageReportDynamicKeys": "š Dynamic keys detected: {count}",
|
|
450
|
+
"usageReportUnusedKeys": "ā Unused keys: {count}",
|
|
451
|
+
"usageReportMissingKeys": "ā ļø Missing keys: {count}",
|
|
452
|
+
"usageReportNotTranslatedKeys": "š NOT_TRANSLATED keys: {count}",
|
|
453
|
+
"usageReportTranslationCompleteness": "TRANSLATION COMPLETENESS",
|
|
454
|
+
"usageReportLanguageCompleteness": "š {language}: {completeness}% complete ({translated}/{total})",
|
|
455
|
+
"usageReportNotTranslatedInLanguage": " š NOT_TRANSLATED: {count} keys",
|
|
456
|
+
"usageReportTranslationFilesDiscovered": "TRANSLATION FILES DISCOVERED",
|
|
457
|
+
"usageReportFileInfo": "š {relativePath} ({namespace}, {type})",
|
|
458
|
+
"usageReportUnusedKeysSection": "UNUSED TRANSLATION KEYS",
|
|
459
|
+
"usageReportUnusedKeysDescription": "These keys exist in translation files but are not used in source code:",
|
|
460
|
+
"usageReportMoreUnusedKeys": "... and {count} more unused keys",
|
|
461
|
+
"usageReportMissingKeysSection": "MISSING TRANSLATION KEYS",
|
|
462
|
+
"usageReportMissingKeysDescription": "These keys are used in source code but missing from translation files:",
|
|
463
|
+
"usageReportUsedIn": " š Used in: {filePath}",
|
|
464
|
+
"usageReportMoreFiles": " ... and {count} more files",
|
|
465
|
+
"usageReportDynamicKeysSection": "DYNAMIC TRANSLATION KEYS",
|
|
466
|
+
"usageReportDynamicKeysDescription": "These keys use dynamic patterns and need manual verification:",
|
|
467
|
+
"usageReportFileUsageBreakdown": "FILE USAGE BREAKDOWN",
|
|
468
|
+
"usageReportFileUsage": "š {filePath} ({count} keys)",
|
|
469
|
+
"usageReportMoreFileUsage": "... and {count} more files",
|
|
470
|
+
"usageReportSaved": "š Report saved to: {filepath}",
|
|
471
|
+
"usageReportSaveFailed": "ā Failed to save report: {error}",
|
|
472
|
+
"analysisCompletedSuccessfully": "ā
Analysis completed successfully",
|
|
473
|
+
"analysisFailed": "ā Analysis failed: {error}",
|
|
474
|
+
"analysisFailedError": "ā Analysis failed",
|
|
475
|
+
"usageReportUnusedTranslationKeys": "UNUSED TRANSLATION KEYS",
|
|
476
|
+
"usageReportUnusedKeysDescription": "These keys exist in translation files but are not used in source code:",
|
|
477
|
+
"usageReportUnusedKey": "ā {key}",
|
|
478
|
+
"usageReportMissingTranslationKeys": "MISSING TRANSLATION KEYS",
|
|
479
|
+
"usageReportMissingKeysDescription": "These keys are used in source code but missing from translation files:",
|
|
480
|
+
"usageReportMissingKey": "ā ļø {key}",
|
|
481
|
+
"usageReportDynamicTranslationKeys": "DYNAMIC TRANSLATION KEYS",
|
|
482
|
+
"usageReportDynamicKeysDescription": "These keys use dynamic patterns and need manual verification:",
|
|
483
|
+
"usageReportDynamicKey": "š {key}",
|
|
484
|
+
"usageReportTranslationCompleteness": "TRANSLATION COMPLETENESS",
|
|
485
|
+
"usageReportLanguageCompleteness": "š {language}: {completeness}% complete ({translated}/{total})",
|
|
486
|
+
"usageReportNotTranslatedInLanguage": " š NOT_TRANSLATED: {count} keys",
|
|
487
|
+
"usageReportTranslationFilesDiscovered": "TRANSLATION FILES DISCOVERED",
|
|
488
|
+
"usageReportFileInfo": "š {relativePath} ({namespace}, {type})",
|
|
489
|
+
"usageReportUsedIn": "š Used in: {filePath}",
|
|
490
|
+
"usageReportMoreFiles": "... and {count} more files",
|
|
491
|
+
"usageReportFileUsageBreakdown": "FILE USAGE BREAKDOWN",
|
|
492
|
+
"usageReportFileUsage": "š {filePath} ({count} keys)",
|
|
493
|
+
"usageReportMoreUnusedKeys": "... and {count} more unused keys",
|
|
494
|
+
"unusedKeysCount": " ā Unused keys: {count}",
|
|
495
|
+
"missingKeysCount": " ā ļø Missing keys: {count}",
|
|
496
|
+
"translationCompletenessTitle": "\nš Translation Completeness:",
|
|
497
|
+
"languageCompletenessStats": " {language}: {completeness}% complete ({translated}/{total})",
|
|
498
|
+
"noLanguageDirectoriesFound": "ā No language directories found!",
|
|
499
|
+
"couldNotReadFile": "ā ļø Could not read file: {filePath}",
|
|
500
|
+
"couldNotParseJSFile": "ā ļø Could not parse JS/TS file: {filePath}",
|
|
501
|
+
"errorReadingFile": "ā ļø Error reading file {filePath}: {error}",
|
|
502
|
+
"couldNotFindI18nDirectory": "ā Could not find i18n directory. Please specify with --source-dir",
|
|
503
|
+
"sourceDirectoryDoesNotExist": "ā Source directory does not exist: {sourceDir}",
|
|
504
|
+
"configuration": "š§ Configuration:",
|
|
505
|
+
"sourceLanguage": " Source language: {sourceLanguage}",
|
|
506
|
+
"supportedExtensions": " Supported extensions: {extensions}",
|
|
507
|
+
"excludedFiles": " Excluded files: {files}",
|
|
508
|
+
"generatingSummaryReport": "š Generating summary report...",
|
|
509
|
+
"cleaningUpReportFiles": "šļø Cleaning up report files...",
|
|
510
|
+
"couldNotDelete": "ā ļø Could not delete {file}: {error}",
|
|
511
|
+
"deletedOldReportFiles": "ā
Deleted {count} old report files.",
|
|
512
|
+
"noOldReportFilesToDelete": "š No old report files to delete.",
|
|
513
|
+
"errorCleaningUpReports": "ā ļø Error cleaning up reports: {error}",
|
|
514
|
+
"reportFilesPreserved": "š Report files preserved as requested.",
|
|
515
|
+
"analysisComplete": "š ANALYSIS COMPLETE",
|
|
516
|
+
"analyzedLanguages": "ā
Analyzed {count} languages",
|
|
517
|
+
"processedFiles": "ā
Processed {count} files",
|
|
518
|
+
"foundTranslationKeys": "ā
Found {count} translation keys",
|
|
519
|
+
"foundIssues": "ā ļø Found {count} issues that need attention",
|
|
520
|
+
"errorDuringAnalysis": "ā Error during analysis: {error}",
|
|
521
|
+
"fatalError": "ā Fatal error: {error}",
|
|
522
|
+
"issuesFoundTitle": "ISSUES FOUND",
|
|
523
|
+
"missingFilesTitle": "ā Missing Files:",
|
|
524
|
+
"emptyFilesTitle": "š Empty Files:",
|
|
525
|
+
"malformedFilesTitle": "š„ Malformed Files:",
|
|
526
|
+
"duplicateKeysTitle": "š Duplicate Keys:"
|
|
527
|
+
},
|
|
528
|
+
"hardcodedTexts": {
|
|
529
|
+
"securityUnknownCommandArg": "Security: Unknown command argument",
|
|
530
|
+
"securityUnknownConfigKey": "Security: Unknown config key",
|
|
531
|
+
"translationNotFound": "Translation not found for key",
|
|
532
|
+
"noSourceFilesFound": "No source files found to analyze.",
|
|
533
|
+
"usageAnalysisCompleted": "ā
Usage analysis completed successfully",
|
|
534
|
+
"analyzingTranslationCompleteness": "š Analyzing translation completeness...",
|
|
535
|
+
"analysisCompletedSuccessfully": "Analysis completed successfully",
|
|
536
|
+
"foundTranslationFiles": "š Found {count} translation files",
|
|
537
|
+
"processedFiles": "š Processed {processedFiles}/{totalFiles} files...",
|
|
538
|
+
"i18nDirectoryNotFound": "I18n directory not found: {i18nDir}",
|
|
539
|
+
"noTranslationLanguagesFound": "No translation languages found.",
|
|
540
|
+
"failedToAnalyzeFile": "Failed to analyze {filePath}: {error}",
|
|
541
|
+
"failedToAnalyzeLanguage": "Failed to analyze language {language}: {error}",
|
|
542
|
+
"translationCompletenessAnalysisFailed": "Translation completeness analysis failed: {error}",
|
|
543
|
+
"invalidChoiceSelectRange": "ā Invalid choice. Please select 0-6.",
|
|
544
|
+
"errorGeneratingStatusSummary": "ā Error generating status summary: {error}",
|
|
545
|
+
"debugToolNotFound": "ā Debug tool not found: {toolName}",
|
|
546
|
+
"errorRunningDebugTool": "ā Error running {displayName}: {error}",
|
|
547
|
+
"autoDetectedI18nDirectory": "š Auto-detected i18n directory: {path}",
|
|
548
|
+
"executingCommand": "š Executing command: {command}",
|
|
549
|
+
"unknownCommand": "ā Unknown command: {command}",
|
|
550
|
+
"errorExecutingCommand": "ā Error executing command: {error}",
|
|
551
|
+
"mainDebuggerSystemDiagnostics": "š Main Debugger - System diagnostics and analysis",
|
|
552
|
+
"consoleTranslationsCheck": "š Console Translations - Check console message translations",
|
|
553
|
+
"exportMissingKeys": "š Export Missing Keys - Export missing translation keys",
|
|
554
|
+
"replaceHardcodedConsole": "š Replace Hardcoded Console - Convert hardcoded messages",
|
|
555
|
+
"consoleKeyChecker": "ā
Console Key Checker - Validate console translation keys",
|
|
556
|
+
"debugLogs": "š Debug Logs - View recent debug logs",
|
|
557
|
+
"backToMainMenu": "ā Back to Main Menu",
|
|
558
|
+
"runningDebugTool": "š§ Running {displayName}...",
|
|
559
|
+
"recentDebugLogs": "š Recent Debug Logs",
|
|
560
|
+
"noDebugLogsFound": "š No debug logs found.",
|
|
561
|
+
"debugLogsDirectoryNotFound": "š Debug logs directory not found.",
|
|
562
|
+
"errorReadingDebugLogs": "ā Error reading debug logs: {error}",
|
|
563
|
+
"debugLogSelectPrompt": "Select log to view (1-{count}) or 0 to go back: ",
|
|
564
|
+
"debugLogError": "Error reading debug logs:",
|
|
565
|
+
"missingRequiredFile": "ā Missing required file/directory: {file}",
|
|
566
|
+
"runInitializationFirst": "š§ Please run initialization first: node i18ntk-init.js",
|
|
567
|
+
"initializationCheckPassed": "ā
Initialization check passed",
|
|
568
|
+
"runningStep": "š Running: {stepName}",
|
|
569
|
+
"commandStep": " Command: {command}",
|
|
570
|
+
"stepCompleted": "ā
{stepName} completed",
|
|
571
|
+
"stepCompletedWithDuration": "ā
{stepName} completed in {duration}ms",
|
|
572
|
+
"stepFailed": "ā {stepName} failed: {error}",
|
|
573
|
+
"stepFailedWithDetails": "ā {stepName} failed:\n Error: {error}",
|
|
574
|
+
"requiredStepFailed": "š Required step failed. Stopping execution.",
|
|
575
|
+
"optionalStepFailed": "ā ļø Optional step failed. Continuing...",
|
|
576
|
+
"startingAutoRunWorkflow": "š Starting Auto-Run Workflow",
|
|
577
|
+
"workflowIncludes": "š Workflow includes {stepCount} steps:",
|
|
578
|
+
"stepListItem": " {index}. {stepName} {required}",
|
|
579
|
+
"startingExecution": "ā±ļø Starting execution...",
|
|
580
|
+
"workflowStopped": "š Workflow stopped due to required step failure.",
|
|
581
|
+
"workflowCompleted": "š Workflow completed!",
|
|
582
|
+
"runningSelectedSteps": "šÆ Running Selected Steps",
|
|
583
|
+
"invalidStepNumber": "ā Invalid step number: {stepNum}",
|
|
584
|
+
"executionReport": "š EXECUTION REPORT",
|
|
585
|
+
"successfulSteps": "ā
Successful: {successful}",
|
|
586
|
+
"failedSteps": "ā Failed: {failed}",
|
|
587
|
+
"requiredFailedSteps": "š“ Required Failed: {requiredFailed}",
|
|
588
|
+
"stepDetails": "š Step Details:",
|
|
589
|
+
"stepResult": " {status} {required} {step}{duration}",
|
|
590
|
+
"stepError": " Error: {error}",
|
|
591
|
+
"reportSaved": "š¾ Report saved to: {reportPath}",
|
|
592
|
+
"overallStatus": "š Overall Status: {status}",
|
|
593
|
+
"customSettingsConfiguration": "š§ Custom Settings Configuration",
|
|
594
|
+
"pressEnterForDefaults": "Press Enter to use default values or type new values:",
|
|
595
|
+
"settingsUpdatedSuccessfully": "ā
Settings updated successfully!",
|
|
596
|
+
"errorConfiguringSettings": "ā Error configuring settings: {error}",
|
|
597
|
+
"autoRunScriptTitle": "š¤ I18N Auto-Run Script",
|
|
598
|
+
"usageInstructions": "Usage:",
|
|
599
|
+
"runAllSteps": " node auto-run.js # Run all steps",
|
|
600
|
+
"configureFirst": " node auto-run.js --config # Configure settings first",
|
|
601
|
+
"runSpecificSteps": " node auto-run.js --steps 1,2,3 # Run specific steps",
|
|
602
|
+
"showHelp": " node auto-run.js --help # Show this help",
|
|
603
|
+
"availableSteps": "Available Steps:",
|
|
604
|
+
"stepListHelp": " {index}. {stepName} {required}",
|
|
605
|
+
"examplesTitle": "Examples:",
|
|
606
|
+
"configurationComplete": "š Configuration complete! You can now run the auto-runner with:",
|
|
607
|
+
"runAutoRunner": " node auto-run.js",
|
|
608
|
+
"configurationFailed": "ā Configuration failed: {error}",
|
|
609
|
+
"noValidStepNumbers": "ā No valid step numbers provided",
|
|
610
|
+
"autoRunFailed": "ā Auto-run failed: {error}",
|
|
611
|
+
"stepRunning": "š Running step: {stepName}",
|
|
612
|
+
"selectOptionPrompt": "Select an option (0-13): ",
|
|
613
|
+
"selectDebugToolPrompt": "Select debug tool (0-6): ",
|
|
614
|
+
"pressEnterToContinue": "š Press Enter to continue...",
|
|
615
|
+
"selectLogPrompt": "Select log to view (1-{count}) or 0 to go back: "
|
|
616
|
+
},
|
|
617
|
+
"help": {
|
|
618
|
+
"usage": "\nUsage:",
|
|
619
|
+
"interactiveMode": " npm run i18ntk:manage # Interactive mode",
|
|
620
|
+
"initProject": " npm run i18ntk:manage -- --command=init # Initialize project",
|
|
621
|
+
"analyzeTranslations": " npm run i18ntk:manage -- --command=analyze # Analyze translations",
|
|
622
|
+
"validateTranslations": " npm run i18ntk:manage -- --command=validate # Validate translations",
|
|
623
|
+
"checkUsage": " npm run i18ntk:manage -- --command=usage # Check usage",
|
|
624
|
+
"showHelp": " npm run i18ntk:manage -- --help # Show this help",
|
|
625
|
+
"availableCommands": "\nAvailable Commands:",
|
|
626
|
+
"initCommand": " init - Initialize i18n structure",
|
|
627
|
+
"analyzeCommand": " analyze - Analyze translation completeness",
|
|
628
|
+
"validateCommand": " validate - Validate translation files",
|
|
629
|
+
"usageCommand": " usage - Check translation key usage",
|
|
630
|
+
"sizingCommand": " sizing - Analyze translation sizing",
|
|
631
|
+
"completeCommand": " complete - Complete missing translations",
|
|
632
|
+
"summaryCommand": " summary - Generate summary report",
|
|
633
|
+
"debugCommand": "debug - Run debug analysis"
|
|
634
|
+
},
|
|
635
|
+
"complete": {
|
|
636
|
+
"nextStep1": "1. Check usage analysis:",
|
|
637
|
+
"nextStep2": "2. Validate translations:",
|
|
638
|
+
"nextStep3": "3. Analyze completeness:",
|
|
639
|
+
"andMore": "... and {count} more"
|
|
640
|
+
},
|
|
641
|
+
"usage": {
|
|
642
|
+
"title": "I18N USAGE ANALYSIS REPORT",
|
|
643
|
+
"generatedAt": "Generated at: {timestamp}",
|
|
644
|
+
"sourceDirectory": "Source Directory: {sourceDir}",
|
|
645
|
+
"i18nDirectory": "I18n Directory: {i18nDir}",
|
|
646
|
+
"sourceFilesScanned": "Source files scanned: {count}",
|
|
647
|
+
"translationFilesFound": "Translation files found: {count}",
|
|
648
|
+
"availableKeys": "Available translation keys: {count}",
|
|
649
|
+
"usedKeys": "Used translation keys: {count}",
|
|
650
|
+
"dynamicKeys": "Dynamic keys detected: {count}",
|
|
651
|
+
"unusedKeys": "Unused translation keys: {count}",
|
|
652
|
+
"missingKeys": "Missing translation keys: {count}",
|
|
653
|
+
"notTranslatedKeys": "NOT_TRANSLATED keys: {count}",
|
|
654
|
+
"translationCompleteness": "TRANSLATION COMPLETENESS",
|
|
655
|
+
"translationFilesDiscovered": "TRANSLATION FILES DISCOVERED",
|
|
656
|
+
"unusedKeysSection": "UNUSED TRANSLATION KEYS",
|
|
657
|
+
"unusedKeysDescription": "These keys exist in translation files but are not used in the source code:",
|
|
658
|
+
"missingKeysSection": "MISSING TRANSLATION KEYS",
|
|
659
|
+
"missingKeysDescription": "These keys are used in source code but missing from translation files:",
|
|
660
|
+
"dynamicKeysSection": "DYNAMIC TRANSLATION KEYS",
|
|
661
|
+
"dynamicKeysDescription": "These keys are generated dynamically and may need manual verification:",
|
|
662
|
+
"fileUsageBreakdown": "FILE USAGE BREAKDOWN",
|
|
663
|
+
"fileUsageDescription": "Translation key usage by source file:",
|
|
664
|
+
"reportSavedTo": "š Report saved to: {reportPath}",
|
|
665
|
+
"failedToSaveReport": "ā Failed to save report: {error}",
|
|
666
|
+
"analysisCompletedSuccessfully": "ā
Usage analysis completed successfully",
|
|
667
|
+
"analysisFailed": "ā Usage analysis failed",
|
|
668
|
+
"analysisFailedError": "ā Usage analysis failed:",
|
|
669
|
+
"detectedSourceDirectory": "š Detected source directory:",
|
|
670
|
+
"detectedI18nDirectory": "š Detected i18n directory:",
|
|
671
|
+
"foundTranslationFiles": "š Found {count} translation files",
|
|
672
|
+
"invalidPattern": "ā ļø Invalid regex pattern:",
|
|
673
|
+
"patternMatchLimitReached": "ā ļø Pattern match limit reached for file:",
|
|
674
|
+
"patternExecutionFailed": "ā ļø Pattern execution failed for file:",
|
|
675
|
+
"failedToExtractKeys": "ā ļø Failed to extract keys from file:",
|
|
676
|
+
"failedToProcessFile": "Failed to process file",
|
|
677
|
+
"errorReadingI18nDirectory": "Error reading i18n directory:",
|
|
678
|
+
"notTranslatedKeysTotal": "š NOT_TRANSLATED keys: {total}",
|
|
679
|
+
"reviewNotTranslatedKeys": "š Review {total} NOT_TRANSLATED keys across all languages",
|
|
680
|
+
"analysisCompletedSuccessfullySimple": "\nā
Analysis completed successfully",
|
|
681
|
+
"analysisFailedResult": "\nā Analysis failed:",
|
|
682
|
+
"analysisFailedGeneral": "\nā Analysis failed:",
|
|
683
|
+
"unusedKeysCount": "ā Unused keys: {count}",
|
|
684
|
+
"missingKeysCount": "ā ļø Missing keys: {count}",
|
|
685
|
+
"translationCompletenessTitle": "š Translation Completeness:",
|
|
686
|
+
"languageCompletenessStats": " {language}: {completeness}% complete ({translated}/{total})"
|
|
687
|
+
}
|
|
688
|
+
}
|