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,637 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": {
|
|
3
|
+
"title": "🌍 Selección de idioma",
|
|
4
|
+
"separator": "============================================================",
|
|
5
|
+
"current": "Idioma actual: {language}",
|
|
6
|
+
"available": "Idiomas disponibles:",
|
|
7
|
+
"prompt": "Seleccione idioma (0 para cancelar): ",
|
|
8
|
+
"cancelled": "Selección de idioma cancelada.",
|
|
9
|
+
"changed": "Idioma cambiado a: {language}",
|
|
10
|
+
"invalid": "Selección inválida. Por favor, inténtelo de nuevo.",
|
|
11
|
+
"changeTitle": "🌍 Cambiar idioma de la interfaz",
|
|
12
|
+
"invalidSelection": "❌ Selección inválida. Por favor, inténtelo de nuevo."
|
|
13
|
+
},
|
|
14
|
+
"menu": {
|
|
15
|
+
"title": "🌐 MENÚ DE GESTIÓN I18N",
|
|
16
|
+
"separator": "============================================================",
|
|
17
|
+
"options": {
|
|
18
|
+
"init": "🚀 Inicializar nuevos idiomas",
|
|
19
|
+
"analyze": "🔍 Analizar traducciones",
|
|
20
|
+
"validate": "✅ Validar traducciones",
|
|
21
|
+
"usage": "📊 Comprobar uso de claves",
|
|
22
|
+
"complete": "🎯 Completar traducciones (100% de cobertura)",
|
|
23
|
+
"sizing": "📏 Analizar tamaño",
|
|
24
|
+
"workflow": "🔄 Ejecutar flujo completo",
|
|
25
|
+
"status": "📋 Mostrar estado del proyecto",
|
|
26
|
+
"delete": "🗑️ Eliminar todos los informes",
|
|
27
|
+
"language": "🌍 Cambiar idioma de la interfaz",
|
|
28
|
+
"settings": "⚙️ Configuraciones",
|
|
29
|
+
"debug": "🔧 Herramientas de depuración",
|
|
30
|
+
"help": "❓ Ayuda",
|
|
31
|
+
"exit": "🚪 Salir"
|
|
32
|
+
},
|
|
33
|
+
"goodbye": "👋 ¡Adiós!",
|
|
34
|
+
"invalidChoice": "❌ Elección inválida. Por favor seleccione entre 0 y 13.",
|
|
35
|
+
"returning": "🔄 Regresando al menú principal...",
|
|
36
|
+
"invalidOption": "❌ Opción inválida. Por favor, inténtelo de nuevo."
|
|
37
|
+
},
|
|
38
|
+
"init": {
|
|
39
|
+
"warnings": {
|
|
40
|
+
"noPackageJson": "⚠️ No se encontró package.json en el directorio actual"
|
|
41
|
+
},
|
|
42
|
+
"suggestions": {
|
|
43
|
+
"noFramework": "💡 No se detectó framework i18n. Considere instalar:",
|
|
44
|
+
"installFramework": "💡 Instale un 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 al leer package.json",
|
|
55
|
+
"noFramework": "❌ No se encontró framework i18n soportado"
|
|
56
|
+
},
|
|
57
|
+
"creatingSourceDirectory": "📁 Creando directorio fuente: {{dir}}",
|
|
58
|
+
"creatingSourceLanguageDirectory": "📁 Creando directorio de idioma fuente: {{dir}}",
|
|
59
|
+
"createdSampleTranslationFile": "📄 Archivo de traducción de muestra creado: {{file}}",
|
|
60
|
+
"adminPinSeparator": "==================================================",
|
|
61
|
+
"adminPinDescription1": "La protección con PIN de administrador añade seguridad para operaciones sensibles como:",
|
|
62
|
+
"adminPinDescription2": "• Eliminar archivos de traducción",
|
|
63
|
+
"adminPinDescription3": "• Modificar configuración del proyecto",
|
|
64
|
+
"adminPinDescription4": "• Ejecutar comandos administrativos",
|
|
65
|
+
"settingUpAdminPin": "📝 Configurando PIN de administrador...",
|
|
66
|
+
"pinMustBe4To8Digits": "❌ El PIN debe tener solo 4-8 dígitos. Por favor, inténtelo de nuevo.",
|
|
67
|
+
"pinsDoNotMatch": "❌ Los PINs no coinciden. Por favor, inténtelo de nuevo.",
|
|
68
|
+
"adminPinSetupSuccess": "✅ ¡El PIN de administrador se ha configurado exitosamente!",
|
|
69
|
+
"adminProtectionEnabled": "🔒 La protección de administrador está ahora habilitada para operaciones sensibles.",
|
|
70
|
+
"errorSettingUpAdminPin": "❌ Error configurando PIN de administrador: {error}",
|
|
71
|
+
"continuingWithoutAdminPin": "⚠️ Continuando sin protección de PIN de administrador.",
|
|
72
|
+
"skippingAdminPinSetup": "⏭️ Omitiendo configuración de PIN de administrador. Puede configurarlo más tarde usando la configuración.",
|
|
73
|
+
"adminPinSetupOptional": "🔐 CONFIGURACIÓN DE PIN DE ADMINISTRADOR (OPCIONAL)",
|
|
74
|
+
"adminPinSetupPrompt": "¿Le gustaría configurar un PIN de administrador? (s/N): ",
|
|
75
|
+
"enterAdminPin": "Ingrese PIN de administrador (4-8 dígitos): ",
|
|
76
|
+
"confirmAdminPin": "Confirme PIN de administrador: ",
|
|
77
|
+
"languageSelectionTitle": "🌍 SELECCIÓN DE IDIOMA I18N",
|
|
78
|
+
"defaultLanguages": "📋 Idiomas predeterminados: {languages}",
|
|
79
|
+
"enterLanguageCodes": "Ingrese códigos de idioma (separados por comas) o presione Enter para usar los predeterminados: ",
|
|
80
|
+
"warningInvalidLanguageCodes": "⚠️ Advertencia: Códigos de idioma inválidos ignorados: {languages}",
|
|
81
|
+
"initializationTitle": "🚀 INICIALIZACIÓN I18N",
|
|
82
|
+
"sourceDirectoryLabel": "📁 Directorio fuente: {dir}",
|
|
83
|
+
"sourceLanguageLabel": "🔤 Idioma fuente: {language}",
|
|
84
|
+
"initializingProject": "🚀 Inicializando proyecto i18n...",
|
|
85
|
+
"warningProceedingWithoutFramework": "⚠️ Advertencia: Procediendo sin framework i18n apropiado.",
|
|
86
|
+
"translationFilesCreatedWarning": "🔧 Los archivos de traducción se crearán pero pueden no funcionar sin configuración i18n apropiada.",
|
|
87
|
+
"noTargetLanguagesSpecified": "❌ No se especificaron idiomas objetivo. Saliendo.",
|
|
88
|
+
"targetLanguages": "🎯 Idiomas objetivo: {languages}",
|
|
89
|
+
"foundSourceFiles": "📄 Se encontraron {count} archivos fuente: {files}",
|
|
90
|
+
"processingLanguage": "🔄 Procesando {language} ({name})...",
|
|
91
|
+
"fileProcessingResult": " ✅ {file}: {translated}/{total} ({percentage}%)",
|
|
92
|
+
"overallProgress": " 📊 General: {translated}/{total} ({percentage}%)",
|
|
93
|
+
"initializationSummaryTitle": "📊 RESUMEN DE INICIALIZACIÓN",
|
|
94
|
+
"languageSummary": "{icon} {name} ({code}): {percentage}% completo",
|
|
95
|
+
"languageFiles": " 📄 Archivos: {count}",
|
|
96
|
+
"languageKeys": " 🔤 Claves: {translated}/{total}",
|
|
97
|
+
"languageMissing": " ⚠️ Faltantes: {count}",
|
|
98
|
+
"initializationCompletedSuccessfully": "🎉 ¡Inicialización completada exitosamente!",
|
|
99
|
+
"nextStepsTitle": "📋 Próximos pasos:",
|
|
100
|
+
"nextStep1": "1. Ejecutar: npm run i18n:analyze",
|
|
101
|
+
"nextStep2": "2. Traducir valores faltantes en archivos de idioma",
|
|
102
|
+
"nextStep3": "3. Ejecutar: npm run i18n:validate",
|
|
103
|
+
"detectedI18nFrameworks": "✅ Framework(s) i18n detectado(s): {{frameworks}}",
|
|
104
|
+
"continueWithoutI18nPrompt": "🤔 ¿Continuar sin framework i18n? (s/N): ",
|
|
105
|
+
"initializationFailed": "❌ Inicialización falló: {{error}}"
|
|
106
|
+
},
|
|
107
|
+
"workflow": {
|
|
108
|
+
"starting": "🚀 Iniciando flujo de trabajo...",
|
|
109
|
+
"completed": "✅ Flujo de trabajo completado con éxito!",
|
|
110
|
+
"checkReports": "📋 Consulte los informes para más detalles",
|
|
111
|
+
"exitingCompleted": "📝 Flujo de trabajo completado. Saliendo..."
|
|
112
|
+
},
|
|
113
|
+
"operations": {
|
|
114
|
+
"completed": "✅ ¡Operación completada con éxito!",
|
|
115
|
+
"cancelled": "❌ Operación cancelada.",
|
|
116
|
+
"init": {
|
|
117
|
+
"title": "🚀 Inicializar nuevo idioma"
|
|
118
|
+
},
|
|
119
|
+
"analyze": {
|
|
120
|
+
"title": "🔍 Analizar traducciones"
|
|
121
|
+
},
|
|
122
|
+
"validate": {
|
|
123
|
+
"title": "✅ Validar traducciones"
|
|
124
|
+
},
|
|
125
|
+
"settings": {
|
|
126
|
+
"title": "⚙️ Gestión de configuración",
|
|
127
|
+
"separator": "============================================================"
|
|
128
|
+
},
|
|
129
|
+
"complete": {
|
|
130
|
+
"deletingOldReport": "🗑️ Eliminando informe antiguo para análisis fresco",
|
|
131
|
+
"generatingFreshAnalysis": "🔄 Generando análisis fresco de uso...",
|
|
132
|
+
"couldNotGenerate": "⚠️ No se pudo generar el análisis de uso. Usando claves faltantes comunes.",
|
|
133
|
+
"reportNotFound": "⚠️ Informe de uso no encontrado. Generando análisis fresco...",
|
|
134
|
+
"foundMissingKeys": "🔍 Se encontraron {count} claves faltantes en el análisis de uso",
|
|
135
|
+
"couldNotParse": "⚠️ No se pudo analizar el informe de uso. Usando claves faltantes comunes.",
|
|
136
|
+
"title": "🎯 COMPLETANDO TRADUCCIONES",
|
|
137
|
+
"separator": "============================================================",
|
|
138
|
+
"sourceDir": "📁 Directorio fuente: {sourceDir}",
|
|
139
|
+
"sourceLanguage": "🔤 Idioma fuente: {sourceLanguage}",
|
|
140
|
+
"dryRunMode": "🧪 MODO PRUEBA - No se modificarán archivos",
|
|
141
|
+
"languages": "🎯 Idiomas objetivo: {languages}",
|
|
142
|
+
"addingMissingKeys": "➕ Añadiendo claves faltantes a los archivos de traducción...",
|
|
143
|
+
"processing": "🔄 Procesando {language}...",
|
|
144
|
+
"addedKeys": "✅ Añadidas {count} claves",
|
|
145
|
+
"changeDetails": "📝 {file}: {key}",
|
|
146
|
+
"noChangesNeeded": "✅ No se necesitan cambios para {language}",
|
|
147
|
+
"summaryTitle": "📊 RESUMEN DE COMPLETADO",
|
|
148
|
+
"totalChanges": "📝 Cambios totales: {totalChanges}",
|
|
149
|
+
"languagesProcessed": "🌐 Idiomas procesados: {languagesProcessed}",
|
|
150
|
+
"missingKeysAdded": "➕ Claves faltantes añadidas: {missingKeysAdded}",
|
|
151
|
+
"nextStepsTitle": "📋 PRÓXIMOS PASOS",
|
|
152
|
+
"nextStep1": "1. Ejecutar análisis de uso:",
|
|
153
|
+
"nextStep2": "2. Validar traducciones:",
|
|
154
|
+
"nextStep3": "3. Analizar completitud:",
|
|
155
|
+
"allKeysAvailable": "🎉 ¡Todas las claves de traducción están ahora disponibles!",
|
|
156
|
+
"runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"admin": {
|
|
160
|
+
"authRequired": "🔐 Autenticación de administrador requerida",
|
|
161
|
+
"invalidPin": "❌ PIN inválido. Acceso denegado.",
|
|
162
|
+
"authSuccess": "✅ Autenticación exitosa"
|
|
163
|
+
},
|
|
164
|
+
"status": {
|
|
165
|
+
"generating": "\n📊 Generando resumen de estado...",
|
|
166
|
+
"completed": "✅ Resumen de estado completado con éxito!",
|
|
167
|
+
"exitingCompleted": "\n📝 Resumen de estado completado. Saliendo...",
|
|
168
|
+
"i18nSetup": "🌐 Configuración I18n"
|
|
169
|
+
},
|
|
170
|
+
"common": {
|
|
171
|
+
"errorExiting": "\n📝 Ocurrió un error. Saliendo...",
|
|
172
|
+
"welcome": "👋 ¡Bienvenido a la Herramienta de Gestión I18n!",
|
|
173
|
+
"success": "✅ ¡Operación completada con éxito!",
|
|
174
|
+
"error": "❌ ¡Ha ocurrido un error!"
|
|
175
|
+
},
|
|
176
|
+
"delete": {
|
|
177
|
+
"options": {
|
|
178
|
+
"title": "🗑️ Opciones de eliminación",
|
|
179
|
+
"all": "1. Eliminar todos los informes",
|
|
180
|
+
"keepLast3": "2. Conservar los últimos 3 informes",
|
|
181
|
+
"cancel": "0. Cancelar"
|
|
182
|
+
},
|
|
183
|
+
"noFiles": "📂 No hay archivos para eliminar."
|
|
184
|
+
},
|
|
185
|
+
"checkUsage": {
|
|
186
|
+
"help_message": "\nAnalizador de uso I18n\n\nUso: node i18ntk-usage.js [opciones]\n\nOpciones:\n --source-dir <dir> Directorio fuente para escanear (predeterminado: ./src)\n --i18n-dir <dir> Directorio I18n (predeterminado: ./src/locales)\n --output-report Generar reporte detallado\n --output-dir <dir> Directorio de salida para reportes (predeterminado: ./reports)\n --help Mostrar esta ayuda\n\nEjemplos:\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",
|
|
187
|
+
"source_directory_thissourcedir": "📁 Directorio fuente: {sourceDir}",
|
|
188
|
+
"i18n_directory_thisi18ndir": "🌐 Directorio I18n: {i18nDir}",
|
|
189
|
+
"failed_to_parse_filename_error": "⚠️ No se pudo analizar {fileName}: {errorMessage}",
|
|
190
|
+
"analyzing_source_files": "🔍 Analizando archivos fuente...",
|
|
191
|
+
"found_files_in_source": "📂 Encontrados {numFiles} archivos en el directorio fuente",
|
|
192
|
+
"found_thisusedkeyssize_unique_": "🎯 Encontradas {usedKeysSize} claves únicas usadas",
|
|
193
|
+
"total_key_usages_totalkeysfoun": "📊 Uso total de claves: {totalKeysFound}",
|
|
194
|
+
"loading_available_translation_": "📋 Cargando claves de traducción disponibles...",
|
|
195
|
+
"found_thisavailablekeyssize_av": "✅ Encontradas {availableKeysSize} claves disponibles",
|
|
196
|
+
"title": "🔍 ANÁLISIS DE USO I18N",
|
|
197
|
+
"message": "Iniciando análisis de uso...",
|
|
198
|
+
"n": "\n",
|
|
199
|
+
"usage_analysis_results": "📊 RESULTADOS DEL ANÁLISIS DE USO",
|
|
200
|
+
"source_files_scanned_thisfileu": "📄 Archivos fuente escaneados: {fileUsageSize}",
|
|
201
|
+
"available_translation_keys_thi": "🔤 Claves de traducción disponibles: {availableKeysSize}",
|
|
202
|
+
"used_translation_keys_thisused": "🎯 Claves de traducción usadas: {usedKeysSize}",
|
|
203
|
+
"dynamic_keys_detected_dynamick": "🔄 Claves dinámicas detectadas: {dynamicKeysLength}",
|
|
204
|
+
"unused_keys_unusedkeyslength": "❌ Claves no usadas: {unusedKeysLength}",
|
|
205
|
+
"missing_keys_missingkeyslength": "⚠️ Claves faltantes: {missingKeysLength}",
|
|
206
|
+
"translation_completeness_title": "🌍 Completitud de la traducción:",
|
|
207
|
+
"language_completeness_stats": " {language}: {completeness}% completo ({translated}/{total})",
|
|
208
|
+
"n_sample_unused_keys": "\n📋 Muestra de claves no usadas:",
|
|
209
|
+
"key": "❌ {key}",
|
|
210
|
+
"and_unusedkeyslength_5_more": "... y {count} más",
|
|
211
|
+
"n_sample_missing_keys": "\n📋 Muestra de claves faltantes:",
|
|
212
|
+
"and_missingkeyslength_5_more": "... y {count} más faltantes",
|
|
213
|
+
"n_generating_detailed_report": "\n📄 Generando reporte detallado...",
|
|
214
|
+
"report_saved_reportpath": "📄 Reporte guardado: {reportPath}",
|
|
215
|
+
"n_recommendations": "\n💡 Recomendaciones:",
|
|
216
|
+
"consider_removing_unused_trans": "🗑️ Considere eliminar claves de traducción no utilizadas",
|
|
217
|
+
"add_missing_translation_keys_t": "⚠️ Agregue claves de traducción faltantes para evitar errores en tiempo de ejecución",
|
|
218
|
+
"review_dynamic_keys_manually_t": "🔄 Revise las claves dinámicas manualmente para asegurar que existan todas las variaciones",
|
|
219
|
+
"all_translation_keys_are_prope": "🎉 ¡Todas las claves de traducción se usan correctamente!",
|
|
220
|
+
"n_next_steps": "\n📋 Próximos pasos:",
|
|
221
|
+
"1_review_the_analysis_results": "1. Revise los resultados del análisis anterior",
|
|
222
|
+
"2_check_the_detailed_report_fo": "2. Verifique el reporte detallado para archivos y claves específicos",
|
|
223
|
+
"2_run_with_outputreport_for_de": "2. Ejecute con --output-report para un reporte detallado",
|
|
224
|
+
"3_remove_unused_keys_or_add_mi": "3. Elimine claves no utilizadas o agregue las faltantes",
|
|
225
|
+
"4_rerun_analysis_to_verify_imp": "4. Vuelva a ejecutar el análisis para verificar las mejoras",
|
|
226
|
+
"usage_analysis_failed": "❌ Análisis de uso falló:"
|
|
227
|
+
},
|
|
228
|
+
"validateTranslations": {
|
|
229
|
+
"help_message": "\nValidador de traducción I18n\n\nUso: node i18ntk-validate.js [opciones]\n\nOpciones:\n --language <lang> Validar idioma específico (predeterminado: todos)\n --source-dir <dir> Directorio fuente (predeterminado: ./src/locales)\n --strict Activar modo estricto (advertencias se vuelven errores)\n --help Mostrar ayuda\n\nComandos admin:\n --setup-admin Configurar protección PIN admin\n --disable-admin Desactivar protección PIN admin\n --admin-status Mostrar estado de protección admin\n\nEjemplos:\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",
|
|
230
|
+
"invalidEmailFormat": "❌ Formato de correo electrónico inválido: {email}",
|
|
231
|
+
"title": "🔍 VALIDACIÓN DE TRADUCCIÓN I18N",
|
|
232
|
+
"message": "=",
|
|
233
|
+
"deletedOldReport": "🗑️ Informe de validación antiguo eliminado",
|
|
234
|
+
"sourceDirectory": "📁 Directorio fuente: {{dir}}",
|
|
235
|
+
"source_language_thisconfigsour": "🔤 Idioma fuente: {{sourceLanguage}}",
|
|
236
|
+
"strictMode": "⚙️ Modo estricto: {{mode}}",
|
|
237
|
+
"noTargetLanguages": "❌ No se encontraron idiomas objetivo.",
|
|
238
|
+
"validatingLanguages": "🎯 Validando idiomas: {{langs}}",
|
|
239
|
+
"validatingLanguage": "\n🔄 Validando {{lang}}...",
|
|
240
|
+
"filesCount": " 📄 Archivos: {count}",
|
|
241
|
+
"keysCount": " 🔤 Claves: {count}",
|
|
242
|
+
"missingFilesCount": " ❌ Archivos faltantes: {count}",
|
|
243
|
+
"syntaxErrorsCount": " 🐛 Errores de sintaxis: {count}",
|
|
244
|
+
"translationPercentage": " 📊 Traducción: {{percentage}}% ({{translated}}/{{total}})",
|
|
245
|
+
"n_validation_summary": "\n📊 RESUMEN DE VALIDACIÓN",
|
|
246
|
+
"total_errors": "❌ Total de errores: {count}",
|
|
247
|
+
"total_warnings": "⚠️ Total de advertencias: {count}",
|
|
248
|
+
"n_errors": "\n❌ ERRORES:",
|
|
249
|
+
"n_warnings": "\n⚠️ ADVERTENCIAS:",
|
|
250
|
+
"n_recommendations": "\n📋 RECOMENDACIONES",
|
|
251
|
+
"fix_errors_first": "🔧 Corrija primero los errores:",
|
|
252
|
+
"1_resolve_missing_files_and_sy": "1. Resuelva archivos faltantes y errores de sintaxis",
|
|
253
|
+
"2_fix_structural_inconsistenci": "2. Corrija inconsistencias estructurales",
|
|
254
|
+
"3_complete_missing_translation": "3. Complete las traducciones faltantes",
|
|
255
|
+
"4_rerun_validation": "4. Reejecute la validación",
|
|
256
|
+
"address_warnings": "⚠️ Aborde las advertencias:",
|
|
257
|
+
"review_warnings": "1. Revise las advertencias anteriores",
|
|
258
|
+
"2_consider_running_with_strict": "2. Considere ejecutar con --strict para una validación más estricta",
|
|
259
|
+
"all_validations_passed": "🎉 ¡Todas las validaciones pasaron!",
|
|
260
|
+
"consider_running_usage_analysi": "💡 Considere ejecutar análisis de uso para encontrar claves no usadas",
|
|
261
|
+
"validation_failed": "❌ Validación fallida:"
|
|
262
|
+
},
|
|
263
|
+
"analyzeTranslations": {
|
|
264
|
+
"referenceLanguageFiles": "📁 Archivos de idioma de referencia: {files}",
|
|
265
|
+
"analyzingLanguage": "🔍 Analizando idioma: {language}",
|
|
266
|
+
"reportTitle": "📊 Informe de análisis de traducción para {language}",
|
|
267
|
+
"generated": "📅 Generado: {timestamp}",
|
|
268
|
+
"status": "Estado: {translated}/{total} traducidas ({percentage}%)",
|
|
269
|
+
"filesAnalyzed": "Archivos analizados: {analyzed}/{total}",
|
|
270
|
+
"keysNeedingTranslation": "Claves que necesitan traducción: {count}",
|
|
271
|
+
"fileBreakdown": "DESGLOSE DE ARCHIVOS:",
|
|
272
|
+
"statusFileMissing": "Estado: Archivo faltante",
|
|
273
|
+
"sourceKeys": "Claves fuente: {count}",
|
|
274
|
+
"translation": "Traducción: {translated}/{total} ({percentage}%)",
|
|
275
|
+
"structure": "Estructura: {status}",
|
|
276
|
+
"consistent": "Consistente",
|
|
277
|
+
"inconsistent": "Inconsistente",
|
|
278
|
+
"missingKeys": "Claves faltantes: {count}",
|
|
279
|
+
"extraKeys": "Claves adicionales: {count}",
|
|
280
|
+
"issues": "Problemas: {count}",
|
|
281
|
+
"issueType": {
|
|
282
|
+
"not_translated": "No traducido: {count}",
|
|
283
|
+
"empty_value": "Valor vacío: {count}",
|
|
284
|
+
"partial_translation": "Traducción parcial: {count}",
|
|
285
|
+
"same_as_source": "Igual que la fuente: {count}"
|
|
286
|
+
},
|
|
287
|
+
"key": "Clave",
|
|
288
|
+
"english": "Inglés",
|
|
289
|
+
"needsTranslation": "NECESITA TRADUCCIÓN",
|
|
290
|
+
"andMoreKeys": "... y {count} claves más",
|
|
291
|
+
"problematic_no": "No se detectaron problemas de tamaño",
|
|
292
|
+
"problematic_yes": "Problemas potenciales de tamaño detectados",
|
|
293
|
+
"keysToTranslate": "CLAVES QUE REQUIEREN TRADUCCIÓN",
|
|
294
|
+
"summary": "\n📊 RESUMEN DEL ANÁLISIS",
|
|
295
|
+
"help_message": "\nAnalizador de traducción I18n\n\nUso: node i18ntk-analyze.js [opciones]\n\nOpciones:\n --language <lang> Analizar idioma específico (predeterminado: todos)\n --source-dir <dir> Directorio fuente (predeterminado: ./src/locales)\n --output-reports Generar reportes detallados\n --output-dir <dir> Directorio de salida para reportes (predeterminado: ./reports)\n --help Mostrar esta ayuda\n\nEjemplos:\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",
|
|
296
|
+
"starting": "🔍 Iniciando análisis de traducción...",
|
|
297
|
+
"noLanguages": "⚠️ No se encontraron idiomas objetivo.",
|
|
298
|
+
"foundLanguages": "📋 {count} idiomas encontrados para analizar: {{languages}}",
|
|
299
|
+
"analyzing": "\n🔄 Analizando {{language}}...",
|
|
300
|
+
"completed": "✅ Análisis completado para {{language}}",
|
|
301
|
+
"progress": " Progreso: {{percentage}}% ({{translatedKeys}}/{{totalKeys}} claves)",
|
|
302
|
+
"reportSaved": " Reporte guardado: {{reportPath}}",
|
|
303
|
+
"finished": "\n✅ Análisis completado con éxito!",
|
|
304
|
+
"error": "❌ Análisis fallido"
|
|
305
|
+
},
|
|
306
|
+
"completeTranslations": {
|
|
307
|
+
"warning_could_not_parse_filepa": "⚠️ No se pudo analizar el archivo: {filePath}"
|
|
308
|
+
},
|
|
309
|
+
"sizing": {
|
|
310
|
+
"analyzing_file_sizes": "Analizando tamaños de archivo...",
|
|
311
|
+
"analyzing_translation_content": "Analizando contenido de traducciones...",
|
|
312
|
+
"failed_to_parse_language_error": "No se pudo analizar {{language}}: {{errorMessage}}",
|
|
313
|
+
"generating_size_comparisons": "Generando comparaciones de tamaño...",
|
|
314
|
+
"no_languages_found_for_comparison": "No se encontraron idiomas para comparación",
|
|
315
|
+
"sizing_analysis_results": "\n📊 Resultados del análisis de tamaño",
|
|
316
|
+
"file_sizes_title": "📁 Tamaños de archivo",
|
|
317
|
+
"file_sizes_header": "Idioma\t\tTamaño (KB)\t\tLíneas\t\tCaracteres",
|
|
318
|
+
"file_size_row": "{{lang}}\t\t{{sizeKB}} KB\t\t{{lines}} líneas\t\t{{characters}} caracteres",
|
|
319
|
+
"language_statistics_title": "📈 Estadísticas de idioma",
|
|
320
|
+
"language_stats_header": "Idioma\t\tClaves\t\tCaracteres totales\t\tLongitud promedio\t\tLongitud máxima\t\tClaves vacías",
|
|
321
|
+
"language_stats_row": "{{lang}}\t\t{{totalKeys}} claves\t\t{{totalCharacters}} caracteres\t\t{{averageKeyLength}} promedio\t\t{{maxKeyLength}} máx\t\t{{emptyKeys}} vacías",
|
|
322
|
+
"size_variations_title": "⚖️ Variaciones de tamaño",
|
|
323
|
+
"size_variations_header": "Idioma\t\tDiferencia de caracteres\t\tPorcentaje\t\tProblemático",
|
|
324
|
+
"size_variation_row": "{{lang}}\t\t{{characterDifference}}\t\t{{percentageDifference}}%\t\t{{problematic}}",
|
|
325
|
+
"recommendations_title": "💡 Recomendaciones",
|
|
326
|
+
"recommendation_item": "{{index}}. {{recommendation}}",
|
|
327
|
+
"generating_detailed_report": "\n📄 Generando reporte detallado de tamaño...",
|
|
328
|
+
"report_saved_to": "Reporte guardado en: {{reportPath}}",
|
|
329
|
+
"csv_report_saved_to": "Reporte CSV guardado en: {{csvPath}}",
|
|
330
|
+
"starting_i18n_sizing_analysis": "🔍 Iniciando análisis de tamaño de internacionalización...",
|
|
331
|
+
"source_directory": "Directorio fuente: {{sourceDir}}",
|
|
332
|
+
"no_translation_files_found": "❌ No se encontraron archivos de traducción",
|
|
333
|
+
"found_languages": "Idiomas encontrados: {{languages}}",
|
|
334
|
+
"analysis_completed": "✅ Análisis completado en {{duration}} ms",
|
|
335
|
+
"analysis_failed": "❌ Análisis de tamaño falló: {{errorMessage}}",
|
|
336
|
+
"problematic_no": "No se detectaron problemas de tamaño",
|
|
337
|
+
"problematic_yes": "Problemas potenciales de tamaño detectados"
|
|
338
|
+
},
|
|
339
|
+
"summary": {
|
|
340
|
+
"i18nSummaryReportGenerator": "🔧 GENERADOR DE REPORTE DE RESUMEN I18N",
|
|
341
|
+
"keysInFiles": " 📝 {keys} claves en {files} archivos",
|
|
342
|
+
"checkingInconsistentKeys": "🔍 Verificando claves inconsistentes entre idiomas...",
|
|
343
|
+
"reportTitle": "REPORTE DE RESUMEN I18N",
|
|
344
|
+
"generated": "Generado: {timestamp}",
|
|
345
|
+
"sourceDirectory": "Directorio fuente: {dir}",
|
|
346
|
+
"analyzingFolder": "Analizando carpeta: {folder}",
|
|
347
|
+
"foundLanguages": "📋 Idiomas encontrados: {languages}",
|
|
348
|
+
"referenceLanguageFiles": "Archivos de idioma de referencia: {files}",
|
|
349
|
+
"analyzingLanguage": "Analizando idioma: {language}",
|
|
350
|
+
"overview": "RESUMEN",
|
|
351
|
+
"languagesCount": "🌍 Idiomas: {count}",
|
|
352
|
+
"totalFiles": "📁 Archivos totales: {count}",
|
|
353
|
+
"totalKeys": "🔤 Claves totales: {count}",
|
|
354
|
+
"avgKeysPerLanguage": "📊 Claves promedio por idioma: {count}",
|
|
355
|
+
"languagesBreakdown": "DESGLOSE DE IDIOMAS",
|
|
356
|
+
"languageBreakdown": "📍 {language}: {files} archivos, {keys} claves",
|
|
357
|
+
"fileStructure": "ESTRUCTURA DE ARCHIVOS",
|
|
358
|
+
"fileKeys": "📄 {file}: {keys} claves",
|
|
359
|
+
"missingInLanguages": " ⚠️ Falta en: {languages}",
|
|
360
|
+
"noIssuesConsole": "✅ No se encontraron problemas: ¡su configuración i18n se ve genial! (Consola)",
|
|
361
|
+
"noIssuesFound": "No se encontraron problemas: ¡su configuración i18n se ve genial!",
|
|
362
|
+
"allFilesConsistent": "Todos los archivos de traducción son consistentes en todos los idiomas.",
|
|
363
|
+
"recommendations": "Recomendaciones",
|
|
364
|
+
"nextSteps": "Próximos pasos",
|
|
365
|
+
"nextStep1": "Revise el reporte de resumen para inconsistencias o claves faltantes.",
|
|
366
|
+
"nextStep2": "Corrija cualquier problema destacado en el reporte.",
|
|
367
|
+
"nextStep3": "Valide las traducciones para pureza del idioma y completitud.",
|
|
368
|
+
"nextStep4": "Vuelva a ejecutar el reporte de resumen después de hacer cambios.",
|
|
369
|
+
"inconsistentKeys": "Claves inconsistentes encontradas:",
|
|
370
|
+
"missingKeys": " Claves faltantes: {keys}{more}",
|
|
371
|
+
"extraKeys": " Claves adicionales: {keys}{more}",
|
|
372
|
+
"createMissingFiles": "Crear archivos faltantes para todos los idiomas.",
|
|
373
|
+
"addContentToEmptyFiles": "Agregar contenido a archivos de traducción vacíos.",
|
|
374
|
+
"fixMalformedFiles": "Corregir archivos de traducción malformados.",
|
|
375
|
+
"removeDuplicateKeys": "Eliminar claves duplicadas de archivos de traducción.",
|
|
376
|
+
"synchronizeKeys": "Sincronizar claves en todos los idiomas.",
|
|
377
|
+
"splitLargeFiles": "Dividir archivos de traducción grandes para mejor mantenibilidad.",
|
|
378
|
+
"addMoreLanguages": "Agregar más idiomas a su proyecto.",
|
|
379
|
+
"reportSaved": "📄 Reporte de resumen guardado: {reportPath}",
|
|
380
|
+
"reportSaveFailed": "❌ No se pudo guardar el reporte de resumen: {reportPath}",
|
|
381
|
+
"couldNotReadFile": "⚠️ No se pudo leer el archivo: {filePath}",
|
|
382
|
+
"couldNotParseJSFile": "⚠️ No se pudo analizar el archivo JS/TS: {filePath}",
|
|
383
|
+
"errorReadingFile": "⚠️ Error leyendo archivo {filePath}: {error}",
|
|
384
|
+
"noLanguageDirectoriesFound": "❌ ¡No se encontraron directorios de idioma!",
|
|
385
|
+
"issuesFound": "🚨 PROBLEMAS ENCONTRADOS",
|
|
386
|
+
"missingFiles": "❌ Archivos Faltantes:",
|
|
387
|
+
"emptyFiles": "📭 Archivos Vacíos:",
|
|
388
|
+
"malformedFiles": "💥 Archivos Malformados:",
|
|
389
|
+
"duplicateKeys": "🔄 Claves Duplicadas:",
|
|
390
|
+
"couldNotFindI18nDirectory": "❌ No se pudo encontrar el directorio i18n. Por favor especifique con --source-dir",
|
|
391
|
+
"sourceDirectoryDoesNotExist": "❌ El directorio fuente no existe: {sourceDir}",
|
|
392
|
+
"generatingSummaryReport": "📄 Generando reporte de resumen...",
|
|
393
|
+
"cleaningUpReportFiles": "🗑️ Limpiando archivos de reporte...",
|
|
394
|
+
"couldNotDelete": "⚠️ No se pudo eliminar {file}: {error}",
|
|
395
|
+
"noOldReportFilesToDelete": "📄 No hay archivos de reporte antiguos para eliminar.",
|
|
396
|
+
"errorCleaningUpReports": "⚠️ Error limpiando reportes: {error}",
|
|
397
|
+
"reportFilesPreserved": "📁 Archivos de reporte preservados como se solicitó.",
|
|
398
|
+
"analysisComplete": "📊 ANÁLISIS COMPLETO",
|
|
399
|
+
"analyzedLanguages": "✅ Se analizaron {count} idiomas",
|
|
400
|
+
"processedFiles": "✅ Se procesaron {count} archivos",
|
|
401
|
+
"foundTranslationKeys": "✅ Se encontraron {count} claves de traducción",
|
|
402
|
+
"errorDuringAnalysis": "❌ Error durante el análisis: {error}",
|
|
403
|
+
"deletedOldReportFiles": "✅ Se eliminaron {count} archivos de reporte antiguos.",
|
|
404
|
+
"helpTitle": "🔧 GENERADOR DE REPORTE DE RESUMEN I18N",
|
|
405
|
+
"helpDescription": "Analiza la estructura de carpetas i18n y genera reportes comprensivos",
|
|
406
|
+
"helpUsage": "Uso: i18ntk summary [opciones]",
|
|
407
|
+
"helpOptions": "Opciones:",
|
|
408
|
+
"helpSourceDir": " -s, --source-dir <ruta> Ruta al directorio de locales i18n",
|
|
409
|
+
"helpOutput": " -o, --output <archivo> Archivo de salida para el reporte",
|
|
410
|
+
"helpVerbose": " -v, --verbose Mostrar salida detallada",
|
|
411
|
+
"helpKeepReports": " --keep-reports Mantener todos los archivos de reporte existentes",
|
|
412
|
+
"helpDeleteReports": " --delete-reports Eliminar archivos de reporte antiguos después de la generación",
|
|
413
|
+
"helpHelp": " -h, --help Mostrar este mensaje de ayuda",
|
|
414
|
+
"helpExamples": "Ejemplos:",
|
|
415
|
+
"helpExample1": " i18ntk summary",
|
|
416
|
+
"helpExample2": " i18ntk summary --source-dir ./src/i18n/locales",
|
|
417
|
+
"helpExample3": " i18ntk summary --output summary.txt --verbose",
|
|
418
|
+
"helpExample4": " i18ntk summary --output summary.txt --delete-reports",
|
|
419
|
+
"helpExample5": " i18ntk summary --keep-reports",
|
|
420
|
+
"usageReportTitle": "REPORTE DE ANÁLISIS DE USO I18N - Versión 1.4.3",
|
|
421
|
+
"usageReportGenerated": "Generado: {timestamp}",
|
|
422
|
+
"usageReportSourceDir": "Directorio fuente: {sourceDir}",
|
|
423
|
+
"usageReportI18nDir": "Directorio I18n: {i18nDir}",
|
|
424
|
+
"usageReportSummary": "RESUMEN",
|
|
425
|
+
"usageReportSourceFilesScanned": "📄 Archivos fuente escaneados: {count}",
|
|
426
|
+
"usageReportTranslationFilesFound": "📄 Archivos de traducción encontrados: {count}",
|
|
427
|
+
"usageReportAvailableKeys": "🔤 Claves de traducción disponibles: {count}",
|
|
428
|
+
"usageReportUsedKeys": "🎯 Claves de traducción usadas: {count}",
|
|
429
|
+
"usageReportDynamicKeys": "🔄 Claves dinámicas detectadas: {count}",
|
|
430
|
+
"usageReportUnusedKeys": "❌ Claves no usadas: {count}",
|
|
431
|
+
"usageReportMissingKeys": "⚠️ Claves faltantes: {count}",
|
|
432
|
+
"usageReportNotTranslatedKeys": "🔄 Claves NO_TRADUCIDAS: {count}",
|
|
433
|
+
"usageReportTranslationCompleteness": "COMPLETITUD DE TRADUCCIÓN",
|
|
434
|
+
"usageReportLanguageCompleteness": "🌍 {language}: {completeness}% completo ({translated}/{total})",
|
|
435
|
+
"usageReportNotTranslatedInLanguage": " 🔄 NO_TRADUCIDAS: {count} claves",
|
|
436
|
+
"usageReportTranslationFilesDiscovered": "ARCHIVOS DE TRADUCCIÓN DESCUBIERTOS",
|
|
437
|
+
"usageReportFileInfo": "📄 {relativePath} ({namespace}, {type})",
|
|
438
|
+
"usageReportUnusedKeysSection": "CLAVES DE TRADUCCIÓN NO USADAS",
|
|
439
|
+
"usageReportUnusedKeysDescription": "Estas claves existen en archivos de traducción pero no se usan en el código fuente:",
|
|
440
|
+
"usageReportMoreUnusedKeys": "... y {count} claves no usadas más",
|
|
441
|
+
"usageReportMissingKeysSection": "CLAVES DE TRADUCCIÓN FALTANTES",
|
|
442
|
+
"usageReportMissingKeysDescription": "Estas claves se usan en el código fuente pero faltan en los archivos de traducción:",
|
|
443
|
+
"usageReportUsedIn": "📄 Usado en: {filePath}",
|
|
444
|
+
"usageReportMoreFiles": "... y {count} archivos más",
|
|
445
|
+
"usageReportDynamicKeysSection": "CLAVES DE TRADUCCIÓN DINÁMICAS",
|
|
446
|
+
"usageReportDynamicKeysDescription": "Estas claves usan patrones dinámicos y necesitan verificación manual:",
|
|
447
|
+
"usageReportFileUsageBreakdown": "DESGLOSE DE USO POR ARCHIVO",
|
|
448
|
+
"usageReportFileUsage": "📄 {filePath} ({count} claves)",
|
|
449
|
+
"usageReportMoreFileUsage": "... y {count} archivos más",
|
|
450
|
+
"usageReportSaved": "📄 Reporte guardado en: {filepath}",
|
|
451
|
+
"usageReportSaveFailed": "❌ Error al guardar reporte: {error}",
|
|
452
|
+
"analysisCompletedSuccessfully": "✅ Análisis completado exitosamente",
|
|
453
|
+
"analysisFailed": "❌ Análisis falló: {error}",
|
|
454
|
+
"analysisFailedError": "❌ Análisis falló",
|
|
455
|
+
"usageReportUnusedTranslationKeys": "CLAVES DE TRADUCCIÓN NO USADAS",
|
|
456
|
+
"usageReportUnusedKey": "❌ {key}",
|
|
457
|
+
"usageReportMissingTranslationKeys": "CLAVES DE TRADUCCIÓN FALTANTES",
|
|
458
|
+
"usageReportMissingKey": "⚠️ {key}",
|
|
459
|
+
"usageReportDynamicTranslationKeys": "CLAVES DE TRADUCCIÓN DINÁMICAS",
|
|
460
|
+
"usageReportDynamicKey": "🔄 {key}",
|
|
461
|
+
"unusedKeysCount": " ❌ Claves no usadas: {count}",
|
|
462
|
+
"missingKeysCount": " ⚠️ Claves faltantes: {count}",
|
|
463
|
+
"translationCompletenessTitle": "\n🌍 Completitud de Traducción:",
|
|
464
|
+
"languageCompletenessStats": " {language}: {completeness}% completo ({translated}/{total})",
|
|
465
|
+
"configuration": "🔧 Configuración:",
|
|
466
|
+
"sourceLanguage": " Idioma fuente: {sourceLanguage}",
|
|
467
|
+
"supportedExtensions": " Extensiones soportadas: {extensions}",
|
|
468
|
+
"excludedFiles": " Archivos excluidos: {files}",
|
|
469
|
+
"foundIssues": "⚠️ Se encontraron {count} problemas que necesitan atención",
|
|
470
|
+
"fatalError": "❌ Error fatal: {error}",
|
|
471
|
+
"issuesFoundTitle": "PROBLEMAS ENCONTRADOS",
|
|
472
|
+
"missingFilesTitle": "❌ Archivos Faltantes:",
|
|
473
|
+
"emptyFilesTitle": "📭 Archivos Vacíos:",
|
|
474
|
+
"malformedFilesTitle": "💥 Archivos Malformados:",
|
|
475
|
+
"duplicateKeysTitle": "🔄 Claves Duplicadas:"
|
|
476
|
+
},
|
|
477
|
+
"hardcodedTexts": {
|
|
478
|
+
"securityUnknownCommandArg": "Seguridad: Argumento de comando desconocido: {key}",
|
|
479
|
+
"securityUnknownConfigKey": "Seguridad: Clave de configuración desconocida: {key}",
|
|
480
|
+
"translationNotFound": "Traducción no encontrada para la clave: {key}",
|
|
481
|
+
"noSourceFilesFound": "No se encontraron archivos fuente para analizar.",
|
|
482
|
+
"usageAnalysisCompleted": "✅ Análisis de uso completado con éxito",
|
|
483
|
+
"analyzingTranslationCompleteness": "🔍 Analizando completitud de traducción...",
|
|
484
|
+
"analysisCompletedSuccessfully": "✅ Análisis completado con éxito",
|
|
485
|
+
"foundTranslationFiles": "🔍 {count} archivos de traducción encontrados",
|
|
486
|
+
"processedFiles": "📊 Procesados {processedFiles}/{totalFiles} archivos...",
|
|
487
|
+
"i18nDirectoryNotFound": "Directorio i18n no encontrado: {i18nDir}",
|
|
488
|
+
"noTranslationLanguagesFound": "No se encontraron idiomas de traducción.",
|
|
489
|
+
"failedToAnalyzeFile": "Error al analizar {filePath}: {error}",
|
|
490
|
+
"failedToAnalyzeLanguage": "Error al analizar el idioma {language}: {error}",
|
|
491
|
+
"translationCompletenessAnalysisFailed": "Falló el análisis de completitud de traducciones: {error}",
|
|
492
|
+
"invalidChoiceSelectRange": "Selección inválida. Por favor seleccione un rango de {range}.",
|
|
493
|
+
"errorGeneratingStatusSummary": "Error al generar resumen de estado: {error}",
|
|
494
|
+
"debugToolNotFound": "Herramienta de depuración no encontrada: {tool}",
|
|
495
|
+
"errorRunningDebugTool": "Error al ejecutar herramienta de depuración: {error}",
|
|
496
|
+
"autoDetectedI18nDirectory": "Directorio i18n detectado automáticamente: {directory}",
|
|
497
|
+
"executingCommand": "Ejecutando comando: {command}",
|
|
498
|
+
"unknownCommand": "Comando desconocido: {command}",
|
|
499
|
+
"errorExecutingCommand": "Error al ejecutar comando: {error}",
|
|
500
|
+
"mainDebuggerSystemDiagnostics": "Diagnósticos del sistema del depurador principal",
|
|
501
|
+
"consoleTranslationsCheck": "Verificación de traducciones de consola",
|
|
502
|
+
"exportMissingKeys": "🔑 Exportar Claves Faltantes - Exportar claves de traducción faltantes",
|
|
503
|
+
"replaceHardcodedConsole": "🔄 Reemplazar Consola Codificada - Convertir mensajes codificados",
|
|
504
|
+
"consoleKeyChecker": "✅ Verificador de Claves de Consola - Validar claves de traducción de consola",
|
|
505
|
+
"debugLogs": "📝 Registros de Depuración - Ver registros de depuración recientes",
|
|
506
|
+
"backToMainMenu": "← Volver al Menú Principal",
|
|
507
|
+
"runningDebugTool": "🔧 Ejecutando {displayName}...",
|
|
508
|
+
"recentDebugLogs": "📝 Registros de depuración recientes",
|
|
509
|
+
"noDebugLogsFound": "📭 No se encontraron registros de depuración.",
|
|
510
|
+
"debugLogsDirectoryNotFound": "📭 Directorio de registros de depuración no encontrado.",
|
|
511
|
+
"errorReadingDebugLogs": "❌ Error al leer registros de depuración: {error}",
|
|
512
|
+
"debugLogSelectPrompt": "Seleccionar registro para ver (1-{count}) o 0 para volver: ",
|
|
513
|
+
"debugLogError": "Error al leer registros de depuración:",
|
|
514
|
+
"missingRequiredFile": "❌ Archivo/directorio requerido faltante: {file}",
|
|
515
|
+
"runInitializationFirst": "🔧 Por favor ejecute la inicialización primero: node i18ntk-init.js",
|
|
516
|
+
"initializationCheckPassed": "✅ Verificación de inicialización pasada",
|
|
517
|
+
"runningStep": "🔄 Ejecutando: {stepName}",
|
|
518
|
+
"commandStep": " Comando: {command}",
|
|
519
|
+
"stepCompleted": "✅ {stepName} completado",
|
|
520
|
+
"stepCompletedWithDuration": "✅ {stepName} completado en {duration}ms",
|
|
521
|
+
"stepFailed": "❌ {stepName} falló: {error}",
|
|
522
|
+
"stepFailedWithDetails": "❌ {stepName} falló:\n Error: {error}",
|
|
523
|
+
"requiredStepFailed": "🛑 Paso requerido falló. Deteniendo ejecución.",
|
|
524
|
+
"optionalStepFailed": "⚠️ Paso opcional falló. Continuando...",
|
|
525
|
+
"startingAutoRunWorkflow": "🚀 Iniciando Flujo de Trabajo Auto-Run",
|
|
526
|
+
"workflowIncludes": "📋 El flujo de trabajo incluye {stepCount} pasos:",
|
|
527
|
+
"stepListItem": " {index}. {stepName} {required}",
|
|
528
|
+
"startingExecution": "⏱️ Iniciando ejecución...",
|
|
529
|
+
"workflowStopped": "🛑 Flujo de trabajo detenido debido a falla de paso requerido.",
|
|
530
|
+
"runningSelectedSteps": "🎯 Ejecutando Pasos Seleccionados",
|
|
531
|
+
"invalidStepNumber": "❌ Número de paso inválido: {stepNum}",
|
|
532
|
+
"executionReport": "📊 REPORTE DE EJECUCIÓN",
|
|
533
|
+
"successfulSteps": "✅ Exitosos: {successful}",
|
|
534
|
+
"failedSteps": "❌ Fallidos: {failed}",
|
|
535
|
+
"requiredFailedSteps": "🔴 Requeridos Fallidos: {requiredFailed}",
|
|
536
|
+
"stepDetails": "📋 Detalles del Paso:",
|
|
537
|
+
"stepResult": " {status} {required} {step}{duration}",
|
|
538
|
+
"stepError": " Error: {error}",
|
|
539
|
+
"reportSaved": "💾 Reporte guardado en: {reportPath}",
|
|
540
|
+
"overallStatus": "📊 Estado General: {status}",
|
|
541
|
+
"customSettingsConfiguration": "🔧 Configuración de Ajustes Personalizados",
|
|
542
|
+
"pressEnterForDefaults": "Presiona Enter para usar valores predeterminados o escribe nuevos valores:",
|
|
543
|
+
"settingsUpdatedSuccessfully": "✅ ¡Ajustes actualizados exitosamente!",
|
|
544
|
+
"errorConfiguringSettings": "❌ Error configurando ajustes: {error}",
|
|
545
|
+
"autoRunScriptTitle": "🤖 Script de Auto-Ejecución I18N",
|
|
546
|
+
"usageInstructions": "Uso:",
|
|
547
|
+
"runAllSteps": " node auto-run.js # Ejecutar todos los pasos",
|
|
548
|
+
"configureFirst": " node auto-run.js --config # Configurar ajustes primero",
|
|
549
|
+
"runSpecificSteps": " node auto-run.js --steps 1,2,3 # Ejecutar pasos específicos",
|
|
550
|
+
"showHelp": " node auto-run.js --help # Mostrar esta ayuda",
|
|
551
|
+
"availableSteps": "Pasos Disponibles:",
|
|
552
|
+
"stepListHelp": " {index}. {stepName} {required}",
|
|
553
|
+
"examplesTitle": "Ejemplos:",
|
|
554
|
+
"configurationComplete": "🚀 ¡Configuración completa! Ahora puedes ejecutar el auto-runner con:",
|
|
555
|
+
"runAutoRunner": " node auto-run.js",
|
|
556
|
+
"configurationFailed": "❌ Configuración falló: {error}",
|
|
557
|
+
"noValidStepNumbers": "❌ No se proporcionaron números de paso válidos",
|
|
558
|
+
"autoRunFailed": "❌ Auto-ejecución falló: {error}",
|
|
559
|
+
"stepRunning": "🔄 Ejecutando paso: {stepName}",
|
|
560
|
+
"selectOptionPrompt": "Selecciona una opción (0-13): ",
|
|
561
|
+
"selectDebugToolPrompt": "Selecciona herramienta de depuración (0-6): ",
|
|
562
|
+
"pressEnterToContinue": "📝 Presiona Enter para continuar...",
|
|
563
|
+
"selectLogPrompt": "Selecciona log para ver (1-{count}) o 0 para volver: ",
|
|
564
|
+
"workflowCompleted": "🎉 ¡Flujo de trabajo completado!"
|
|
565
|
+
},
|
|
566
|
+
"help": {
|
|
567
|
+
"usage": "Uso:",
|
|
568
|
+
"interactiveMode": " node i18ntk-manage.js # Modo interactivo",
|
|
569
|
+
"initProject": " node i18ntk-manage.js init # Inicializar proyecto",
|
|
570
|
+
"analyzeTranslations": " node i18ntk-manage.js analyze # Analizar traducciones",
|
|
571
|
+
"validateTranslations": " node i18ntk-manage.js validate # Validar traducciones",
|
|
572
|
+
"checkUsage": " node i18ntk-manage.js usage # Verificar uso",
|
|
573
|
+
"showHelp": " node i18ntk-manage.js help # Mostrar ayuda",
|
|
574
|
+
"availableCommands": "\nComandos Disponibles:",
|
|
575
|
+
"initCommand": " init - Inicializar estructura i18n",
|
|
576
|
+
"analyzeCommand": " analyze - Analizar completitud de traducción",
|
|
577
|
+
"validateCommand": " validate - Validar archivos de traducción",
|
|
578
|
+
"usageCommand": " usage - Verificar uso de claves de traducción",
|
|
579
|
+
"sizingCommand": " sizing - Analizar tamaño de traducciones",
|
|
580
|
+
"completeCommand": " complete - Completar traducciones faltantes",
|
|
581
|
+
"summaryCommand": " summary - Generar reporte de resumen",
|
|
582
|
+
"debugCommand": "debug - Ejecutar análisis de depuración"
|
|
583
|
+
},
|
|
584
|
+
"complete": {
|
|
585
|
+
"nextStep1": "1. Verificar análisis de uso:",
|
|
586
|
+
"nextStep2": "2. Validar traducciones:",
|
|
587
|
+
"nextStep3": "3. Analizar completitud:",
|
|
588
|
+
"andMore": "... y {count} más"
|
|
589
|
+
},
|
|
590
|
+
"usage": {
|
|
591
|
+
"analysisCompletedSuccessfully": "✅ Análisis de uso completado exitosamente",
|
|
592
|
+
"analysisFailedError": "❌ Análisis de uso falló:",
|
|
593
|
+
"detectedSourceDirectory": "🔍 Directorio fuente detectado:",
|
|
594
|
+
"detectedI18nDirectory": "🔍 Directorio i18n detectado:",
|
|
595
|
+
"foundTranslationFiles": "🔍 Se encontraron {count} archivos de traducción",
|
|
596
|
+
"invalidPattern": "Patrón inválido:",
|
|
597
|
+
"patternMatchLimitReached": "Límite de coincidencias de patrón alcanzado para archivo:",
|
|
598
|
+
"patternExecutionFailed": "Ejecución de patrón falló para",
|
|
599
|
+
"failedToExtractKeys": "Error al extraer claves de",
|
|
600
|
+
"failedToProcessFile": "Error al procesar archivo",
|
|
601
|
+
"errorReadingI18nDirectory": "Error leyendo directorio i18n:",
|
|
602
|
+
"notTranslatedKeysTotal": "🔄 Claves NO_TRADUCIDAS: {total}",
|
|
603
|
+
"reviewNotTranslatedKeys": "🔄 Revisar {total} claves NO_TRADUCIDAS en todos los idiomas",
|
|
604
|
+
"analysisCompletedSuccessfullySimple": "\n✅ Análisis completado exitosamente",
|
|
605
|
+
"analysisFailedResult": "\n❌ Análisis falló:",
|
|
606
|
+
"analysisFailedGeneral": "\n❌ Análisis falló:",
|
|
607
|
+
"title": "INFORME DE ANÁLISIS DE USO I18N",
|
|
608
|
+
"generatedAt": "Generado en: {timestamp}",
|
|
609
|
+
"sourceDirectory": "Directorio fuente: {sourceDir}",
|
|
610
|
+
"i18nDirectory": "Directorio I18n: {i18nDir}",
|
|
611
|
+
"sourceFilesScanned": "Archivos fuente escaneados: {count}",
|
|
612
|
+
"translationFilesFound": "Archivos de traducción encontrados: {count}",
|
|
613
|
+
"availableKeys": "Claves de traducción disponibles: {count}",
|
|
614
|
+
"usedKeys": "Claves de traducción usadas: {count}",
|
|
615
|
+
"dynamicKeys": "Claves dinámicas detectadas: {count}",
|
|
616
|
+
"unusedKeys": "Claves de traducción no usadas: {count}",
|
|
617
|
+
"missingKeys": "Claves de traducción faltantes: {count}",
|
|
618
|
+
"notTranslatedKeys": "Claves NO_TRADUCIDAS: {count}",
|
|
619
|
+
"translationCompleteness": "COMPLETITUD DE TRADUCCIÓN",
|
|
620
|
+
"translationFilesDiscovered": "ARCHIVOS DE TRADUCCIÓN DESCUBIERTOS",
|
|
621
|
+
"unusedKeysSection": "CLAVES DE TRADUCCIÓN NO USADAS",
|
|
622
|
+
"unusedKeysDescription": "Estas claves existen en archivos de traducción pero no se usan en el código fuente:",
|
|
623
|
+
"missingKeysSection": "CLAVES DE TRADUCCIÓN FALTANTES",
|
|
624
|
+
"missingKeysDescription": "Estas claves se usan en el código fuente pero faltan en los archivos de traducción:",
|
|
625
|
+
"dynamicKeysSection": "CLAVES DE TRADUCCIÓN DINÁMICAS",
|
|
626
|
+
"dynamicKeysDescription": "Estas claves se generan dinámicamente y pueden necesitar verificación manual:",
|
|
627
|
+
"fileUsageBreakdown": "DESGLOSE DE USO POR ARCHIVO",
|
|
628
|
+
"fileUsageDescription": "Uso de claves de traducción por archivo fuente:",
|
|
629
|
+
"reportSavedTo": "📄 Reporte guardado en: {reportPath}",
|
|
630
|
+
"failedToSaveReport": "❌ Error al guardar reporte: {error}",
|
|
631
|
+
"analysisFailed": "❌ Análisis de uso falló",
|
|
632
|
+
"unusedKeysCount": "❌ Claves no usadas: {count}",
|
|
633
|
+
"missingKeysCount": "⚠️ Claves faltantes: {count}",
|
|
634
|
+
"translationCompletenessTitle": "🌍 Completitud de Traducción:",
|
|
635
|
+
"languageCompletenessStats": " {language}: {completeness}% completo ({translated}/{total})"
|
|
636
|
+
}
|
|
637
|
+
}
|