i18ntk 2.0.4 → 2.2.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.
Files changed (57) hide show
  1. package/README.md +38 -60
  2. package/main/i18ntk-analyze.js +49 -44
  3. package/main/i18ntk-complete.js +75 -74
  4. package/main/i18ntk-fixer.js +3 -3
  5. package/main/i18ntk-init.js +5 -5
  6. package/main/i18ntk-scanner.js +2 -2
  7. package/main/i18ntk-sizing.js +35 -35
  8. package/main/i18ntk-summary.js +4 -4
  9. package/main/i18ntk-ui.js +54 -8
  10. package/main/i18ntk-usage.js +14 -14
  11. package/main/i18ntk-validate.js +6 -5
  12. package/main/manage/commands/AnalyzeCommand.js +40 -35
  13. package/main/manage/commands/FixerCommand.js +2 -2
  14. package/main/manage/commands/ScannerCommand.js +2 -2
  15. package/main/manage/commands/ValidateCommand.js +9 -9
  16. package/main/manage/index.js +147 -75
  17. package/main/manage/managers/LanguageMenu.js +7 -2
  18. package/main/manage/services/UsageService.js +7 -7
  19. package/package.json +269 -290
  20. package/settings/settings-cli.js +3 -3
  21. package/ui-locales/de.json +161 -166
  22. package/ui-locales/en.json +13 -18
  23. package/ui-locales/es.json +171 -184
  24. package/ui-locales/fr.json +155 -161
  25. package/ui-locales/ja.json +192 -243
  26. package/ui-locales/ru.json +145 -196
  27. package/ui-locales/zh.json +179 -185
  28. package/utils/cli-helper.js +26 -98
  29. package/utils/extractors/regex.js +39 -12
  30. package/utils/i18n-helper.js +88 -40
  31. package/{scripts → utils}/locale-optimizer.js +61 -60
  32. package/utils/security-check-improved.js +16 -13
  33. package/utils/security.js +6 -4
  34. package/main/i18ntk-go.js +0 -283
  35. package/main/i18ntk-java.js +0 -380
  36. package/main/i18ntk-js.js +0 -512
  37. package/main/i18ntk-manage.js +0 -1694
  38. package/main/i18ntk-php.js +0 -462
  39. package/main/i18ntk-py.js +0 -379
  40. package/main/i18ntk-settings.js +0 -23
  41. package/main/manage/index-fixed.js +0 -1447
  42. package/main/manage/services/ConfigurationService-fixed.js +0 -449
  43. package/scripts/build-lite.js +0 -279
  44. package/scripts/deprecate-versions.js +0 -317
  45. package/scripts/export-translations.js +0 -84
  46. package/scripts/fix-all-i18n.js +0 -215
  47. package/scripts/fix-and-purify-i18n.js +0 -213
  48. package/scripts/fix-locale-control-chars.js +0 -110
  49. package/scripts/lint-locales.js +0 -80
  50. package/scripts/prepublish.js +0 -348
  51. package/scripts/security-check.js +0 -117
  52. package/scripts/sync-translations.js +0 -151
  53. package/scripts/sync-ui-locales.js +0 -20
  54. package/scripts/validate-all-translations.js +0 -139
  55. package/scripts/verify-deprecations.js +0 -157
  56. package/scripts/verify-translations.js +0 -63
  57. package/utils/security-fixed.js +0 -607
@@ -27,7 +27,7 @@
27
27
  "debug": "Depuración",
28
28
  "progress": "Progreso:",
29
29
  "remaining": "Restante:",
30
- "total": "Total:",
30
+ "total": "Total general:",
31
31
  "completed": "7. Completado con éxito!",
32
32
  "missing": "Faltante",
33
33
  "partial": "Parcial",
@@ -49,12 +49,12 @@
49
49
  "workflowCompleted": "Flujo de trabajo completado.",
50
50
  "checkReports": "Revisa los informes para más detalles.",
51
51
  "errorExecutingCommand": "Error al ejecutar el comando: {error}",
52
- "genericError": " Error: {error}",
52
+ "genericError": "? Se produjo un error: {error}",
53
53
  "errors": {
54
54
  "errors": "Errores:",
55
- "genericError": " Error: {error}",
56
- "initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
55
+ "genericError": "? Se produjo un error: {error}",
57
56
  "initializationFailed": "❌ Inicialización fallida: {error}",
57
+ "initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
58
58
  "translationKeyNotFound": "Traducción no encontrada: {key}",
59
59
  "sourceDirectoryNotFound": "Directorio fuente no encontrado: {directory}",
60
60
  "configLoadingFailed": "Carga de configuración fallida",
@@ -101,16 +101,67 @@
101
101
  "settings": "Configuración",
102
102
  "startingSettings": "🎛️ Iniciando CLI de Configuración...",
103
103
  "confirm": "Confirmar",
104
- "errorExiting": "Error while exiting."
104
+ "errorExiting": "Error al salir."
105
105
  },
106
106
  "errors": {
107
- "readlineClosed": "Flujo de entrada cerrado; ejecutando en modo no interactivo.",
108
- "initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
109
107
  "invalidOption": "❌ Opción inválida: {option}. Por favor, inténtelo de nuevo.",
108
+ "readlineClosed": "Flujo de entrada cerrado; ejecutando en modo no interactivo.",
110
109
  "noPackageJson": "No se encontró package.json. No se puede autodetectar el framework i18n.",
111
110
  "noI18nDir": "No se encontró directorio i18n en la raíz del proyecto.",
112
111
  "noI18nConfig": "No se encontró archivo de configuración i18n en la raíz del proyecto.",
113
- "errorReadingDebugLogs": "Error reading debug logs: {error}"
112
+ "errorReadingDebugLogs": "Error al leer los registros de depuración: {error}"
113
+ },
114
+ "scanner": {
115
+ "help_message": "Escáner de Texto i18n Uso: node i18ntk-scanner.js [opciones] Opciones: --source-dir <dir> Directorio fuente para escanear (por defecto: ./src) --output <file> Archivo de salida para resultados (por defecto: ./i18ntk-scanner-report.json) --framework <nombre> Framework a analizar (react, vue, angular, vanilla) --patterns <patrones> Patrones regex personalizados (separados por comas) --include-tests Incluir archivos de prueba en el escaneo --exclude-dirs <dirs> Directorios a excluir (separados por comas) --help Mostrar esta ayuda Ejemplos: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console\\.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./resultados-escaneo.json",
116
+ "help_options": {
117
+ "source_dir": "Directorio fuente para escanear",
118
+ "output_dir": "Archivo de salida para resultados",
119
+ "framework": "Framework a analizar (react, vue, angular, vanilla)",
120
+ "patterns": "Patrones regex personalizados (separados por comas)",
121
+ "exclude": "Directorios a excluir (separados por comas)",
122
+ "output_report": "Archivo de salida para el informe",
123
+ "min_length": "Longitud mínima del texto para incluir",
124
+ "max_length": "Longitud máxima del texto para incluir",
125
+ "include_tests": "Incluir archivos de prueba en el escaneo"
126
+ },
127
+ "starting": "🔍 Iniciando escáner de texto para framework: {framework}",
128
+ "sourceDirectory": "📁 Escaneando directorio: {sourceDir}",
129
+ "frameworkDetected": "🎯 Framework detectado: {framework}",
130
+ "scanningFiles": "📊 Escaneando {fileCount} archivos...",
131
+ "foundTexts": "📝 Encontrados {textCount} textos que requieren traducción",
132
+ "generatingReport": "📊 Generando informe detallado...",
133
+ "reportSaved": "💾 Informe de escaneo guardado en: {reportPath}",
134
+ "noTextsFound": "✅ No se encontraron textos en inglés hardcodeados",
135
+ "scanComplete": "🎉 ¡Escaneo completado exitosamente!",
136
+ "analysisTitle": "🔍 ANÁLISIS DE ESCÁNER DE TRADUCCIÓN",
137
+ "fileSummary": "📄 {file}: {count} textos encontrados",
138
+ "textLocation": "📍 Línea {line}: {text}",
139
+ "foundText": "Encontrado {count} instancias de texto potencialmente codificado",
140
+ "context": "📝 Contexto: {context}",
141
+ "severity": "⚠️ Severidad: {severity}",
142
+ "recommendation": "💡 Recomendación: {recommendation}",
143
+ "welcome": {
144
+ "title": "🎯 ¡Bienvenido al Escáner de Texto!",
145
+ "description": "Esta herramienta escanea tu código fuente en busca de textos en inglés hardcodeados que puedan necesitar traducción."
146
+ },
147
+ "frameworkPrompt": {
148
+ "title": "🎯 Seleccionar Framework",
149
+ "available": "Frameworks disponibles: react, vue, angular, vanilla",
150
+ "description": "Ingrese el tipo de framework (o presione Enter para detección automática):",
151
+ "input": "Estructura:"
152
+ },
153
+ "directoryPrompt": {
154
+ "title": "📁 Seleccionar Directorio Fuente",
155
+ "current": "Directorio actual: {dir}",
156
+ "description": "Ingrese el directorio a escanear (o presione Enter para el actual):",
157
+ "input": "Directorio:"
158
+ },
159
+ "options": {
160
+ "includeTests": "¿Incluir archivos de prueba?",
161
+ "excludeDirs": "Directorios a excluir (separados por comas):",
162
+ "customPatterns": "Patrones personalizados a escanear (regex):"
163
+ },
164
+ "reportGenerated": "Informe de escaneo generado: {path}"
114
165
  },
115
166
  "fixer": {
116
167
  "help_message": "Corrector de Traducciones I18n Uso: node i18ntk-fixer.js [opciones] Opciones: --source-dir <dir> Directorio fuente a escanear (predeterminado: ./locales) --languages <langs> Lista de idiomas a corregir separados por comas --markers <markers> Marcadores separados por comas para tratar como no traducido --no-backup Omitir creación automática de respaldo --help Mostrar esta ayuda Ejemplos: node i18ntk-fixer.js --languages de,fr node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED node i18ntk-fixer.js --no-backup",
@@ -147,7 +198,7 @@
147
198
  "choicePrompt": "Tu elección (y/n/s):",
148
199
  "nonInteractiveMode": "⚡ Modo no interactivo detectado - aplicando correcciones automáticamente...",
149
200
  "reportGenerated": "📊 Informe del corrector generado: {path}",
150
- "summary": "Fixer summary:",
201
+ "summary": "Resumen del reparador:",
151
202
  "welcome": {
152
203
  "title": "🎯 ¡Bienvenido al Corrector de Traducciones!",
153
204
  "description": "Esta herramienta te ayudará a corregir traducciones rotas y marcadores provisionales en tus archivos de localización."
@@ -171,16 +222,16 @@
171
222
  "description": "Ingresa el directorio que contiene tus archivos de localización (o presiona Enter para el actual):",
172
223
  "input": "Directorio:"
173
224
  },
174
- "backupLocation": "Backup location: {dir}",
175
- "completed": "Fixing completed.",
176
- "creatingBackup": "Creating backup in {dir}...",
177
- "dryRunMode": "Dry run mode: {mode}",
178
- "error": "Fixer failed: {error}",
179
- "fixing": "Fixing {language}...",
180
- "foundLanguages": "Found {count} languages: {languages}",
181
- "languageFixed": "{language}: fixed {fixed} key(s), skipped {skipped}.",
182
- "running": "Running translation fixer...",
183
- "totalFixed": "Total fixed: {count}"
225
+ "backupLocation": "Ubicación de la copia de seguridad: {dir}",
226
+ "completed": "Reparación completada.",
227
+ "creatingBackup": "Creando copia de seguridad en {dir}...",
228
+ "dryRunMode": "Modo de funcionamiento en seco: {mode}",
229
+ "error": "El reparador falló: {error}",
230
+ "fixing": "Arreglando {language}...",
231
+ "foundLanguages": "Encontrados {count} idiomas: {languages}",
232
+ "languageFixed": "{language}: clave(s) {fixed} fija, omitida {skipped}.",
233
+ "running": "Ejecutando el reparador de traducción...",
234
+ "totalFixed": "Total fijo: {count}"
184
235
  },
185
236
  "autorun": {
186
237
  "stepAnalyzeTranslations": "Analizar traducciones",
@@ -193,9 +244,9 @@
193
244
  "autoRunScriptTitle": "🧪 Flujo de Ejecución Automática",
194
245
  "usageTitle": "Uso",
195
246
  "runAllSteps": "Ejecutar: node i18ntk-autorun.js",
196
- "configureSettingsFirst": "Config: i18ntk-config.json or CLI flags",
197
- "runSpecificSteps": "Use --steps=1,3 or --list to show steps",
198
- "showHelp": "--help for more info",
247
+ "configureSettingsFirst": "Configuración: i18ntk-config.json o indicadores CLI",
248
+ "runSpecificSteps": "Utilice --steps=1,3 o --list para mostrar los pasos",
249
+ "showHelp": "--ayuda para más información",
199
250
  "examplesTitle": "Ejemplos",
200
251
  "configExample": "node i18ntk-autorun.js --ui-language=zh",
201
252
  "stepsExample1": "node i18ntk-autorun.js --steps=analyze,validate",
@@ -231,8 +282,8 @@
231
282
  "requiredFailedSteps": "Pasos requeridos fallidos: {count}",
232
283
  "stepDetails": "Detalles del paso:",
233
284
  "reportSavedTo": "Informe guardado en: {path}",
234
- "overallStatusSuccess": "SUCCESS",
235
- "overallStatusFailed": "FAILED",
285
+ "overallStatusSuccess": "ÉXITO",
286
+ "overallStatusFailed": "FALLIDO",
236
287
  "overallStatus": "Estado general: {status}",
237
288
  "pressEnterForDefaults": "Presiona Enter para usar configuraciones predeterminadas para cualquier prompt.",
238
289
  "sourceDirPrompt": "Ingresa directorio fuente (predeterminado: {default}):",
@@ -404,14 +455,14 @@
404
455
  "sizing_analysis_results": "Resultados del análisis de tamaño i18n",
405
456
  "file_sizes_title": "Tamaños de archivo",
406
457
  "file_sizes_header": "Idioma Tamaño(KB) Líneas Caracteres",
407
- "file_size_row": "{lang} {sizeKB} {lines} {characters}",
458
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
408
459
  "language_statistics_title": "Estadísticas de idioma",
409
460
  "language_stats_header": "Idioma Claves Caracteres Longitud Promedio Longitud Máxima Vacías Largas",
410
- "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
461
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
411
462
  "size_variations_title": "Variaciones de tamaño",
412
463
  "size_variations_header": "Idioma Char Diff % Diff Problematic",
413
- "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
414
- "problematic_yes": "Yes",
464
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
465
+ "problematic_yes": "",
415
466
  "problematic_no": "No",
416
467
  "recommendations_title": "Recommendaciones",
417
468
  "recommendation_item": "{index}. {recommendation}",
@@ -428,7 +479,7 @@
428
479
  "human_report_saved": "Informe legible guardado en: {reportPath}",
429
480
  "folder_summary_title": "Resumen de Carpeta",
430
481
  "folder_summary_table_header": "Idioma Tamaño(KB) Claves Long. Promedio Caracteres Totales",
431
- "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
482
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
432
483
  "language_comparison_title": "Comparación de Idiomas",
433
484
  "language_comparison_row": "{lang}: {diff} caracteres ({percent}%) {status}",
434
485
  "summary_stats": "📊 Resumen: {totalLanguages} idiomas, {totalKeys} claves - Informes guardados en {reportPath}",
@@ -445,12 +496,12 @@
445
496
  "consider_reviewing_translations": "Considere revisar las traducciones de {lang} - son {percentageDifference}% {comparison} que la línea base",
446
497
  "long_translations_detected": "{lang} tiene {longKeys} traducciones más largas que {threshold} caracteres - considere dividirlas"
447
498
  },
448
- "detailed_key_analysis_title": "Detailed Key Analysis",
449
- "key_analysis_detail": "{lang}: {length} chars ({status}) - {translation}",
450
- "key_analysis_header": "Key: {key}",
451
- "status_empty": "empty",
452
- "status_long": "long",
453
- "status_ok": "ok"
499
+ "detailed_key_analysis_title": "Análisis clave detallado",
500
+ "key_analysis_detail": "{lang}: {length} caracteres ({status}) - {translation}",
501
+ "key_analysis_header": "Clave: {key}",
502
+ "status_empty": "vacío",
503
+ "status_long": "largo",
504
+ "status_ok": "OK"
454
505
  },
455
506
  "usage": {
456
507
  "help_message": "Analizador de Uso I18n Uso: node i18ntk-usage.js [opciones] Opciones: --source-dir <dir> Directorio fuente a escanear (predeterminado: ./src) --i18n-dir <dir> Directorio i18n (predeterminado: ./src/locales) --output-report Generar informe detallado --output-dir <dir> Directorio de salida para informes (predeterminado: ./reports) --help Mostrar esta ayuda Ejemplos: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analysis --output-report",
@@ -500,7 +551,7 @@
500
551
  "i18nDirectoryNotFound": "⚠️ Directorio i18n no encontrado. Por favor verifica la ruta.",
501
552
  "sourceDirectoryNotFound": "⚠️ Directorio fuente no encontrado: {dir}",
502
553
  "checkUsage": {
503
- "title": "🔍 I18NTK USAGE ANALYSIS",
554
+ "title": "?? AN?LISIS DE USO DE I18NTK",
504
555
  "analyzing_source_files": "🔍 Analizando archivos fuente...",
505
556
  "source_directory_thissourcedir": "📁 Directorio fuente: {sourceDir}",
506
557
  "i18n_directory_thisi18ndir": "📁 Directorio i18n: {i18nDir}",
@@ -547,7 +598,7 @@
547
598
  "failedToAnalyzeFile": "Error al analizar archivo {filePath}: {error}",
548
599
  "failedToAnalyzeLanguage": "Error al analizar el idioma {language}: {error}",
549
600
  "translationCompletenessAnalysisFailed": "El análisis de completitud de traducción falló: {error}",
550
- "n": ""
601
+ "n": "\\n"
551
602
  },
552
603
  "complete": {
553
604
  "configLoadedSuccessfully": "Configuración cargada correctamente",
@@ -569,11 +620,11 @@
569
620
  "languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
570
621
  "missingKeysAdded": "➕ Claves faltantes agregadas: {missingKeysAdded}",
571
622
  "nextStepsTitle": "📋 SIGUIENTES PASOS",
572
- "nextStep1": "1. Run usage analysis:",
623
+ "nextStep1": "1. Ejecute el análisis de uso:",
573
624
  "nextStep2": "node i18ntk-usage.js --output-report",
574
- "nextStep3": "2. Validate translations:",
625
+ "nextStep3": "2. Validar traducciones:",
575
626
  "nextStep4": "node i18ntk-validate.js",
576
- "nextStep5": "3. Analyze patterns:",
627
+ "nextStep5": "3. Analizar patrones:",
577
628
  "nextStep6": "node i18ntk-analyze.js",
578
629
  "allKeysAvailable": "🎉 ¡Todas las claves de traducción están disponibles!",
579
630
  "runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
@@ -587,11 +638,11 @@
587
638
  "noTranslationLanguagesFound": "No se encontraron idiomas de traducción.",
588
639
  "failedToAnalyzeLanguage": "Error al analizar el idioma {language}: {error}",
589
640
  "translationCompletenessAnalysisFailed": "El análisis de completitud de traducción falló: {error}",
590
- "failedToProcessFile": "Failed to process file:",
591
- "failedToSaveReport": "Failed to save usage report: {error}",
592
- "i18nDirectoryDoesNotExist": "I18n directory does not exist: {dir}",
593
- "reportSavedTo": "Usage report saved to: {reportPath}",
594
- "sourceDirectoryDoesNotExist": "Source directory does not exist: {dir}"
641
+ "failedToProcessFile": "No se pudo procesar el archivo:",
642
+ "failedToSaveReport": "No se pudo guardar el informe de uso: {error}",
643
+ "i18nDirectoryDoesNotExist": "El directorio I18n no existe: {dir}",
644
+ "reportSavedTo": "Informe de uso guardado en: {reportPath}",
645
+ "sourceDirectoryDoesNotExist": "El directorio de origen no existe: {dir}"
595
646
  },
596
647
  "validate": {
597
648
  "help_message": "Validador de Traducciones I18n Uso: node i18ntk-validate.js [opciones] Opciones: --source-dir <dir> Directorio fuente a escanear (predeterminado: ./src) --i18n-dir <dir> Directorio i18n (predeterminado: ./src/locales) --output-report Generar informe detallado --output-dir <dir> Directorio de salida para informes (predeterminado: ./reports) --help Mostrar esta ayuda Ejemplos: node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analysis --output-report",
@@ -674,7 +725,7 @@
674
725
  "summaryHeader": "📋 RESUMEN GENERAL",
675
726
  "progressIndicator": "⏳ Procesando...",
676
727
  "completedIndicator": "✅ Completado",
677
- "errorIndicator": "❌ Error",
728
+ "errorIndicator": "❌Error",
678
729
  "warningIndicator": "⚠️ Advertencia",
679
730
  "infoIndicator": "ℹ️ Información",
680
731
  "sourceDirNotConfigured": "Directorio fuente no configurado",
@@ -689,8 +740,8 @@
689
740
  "failedToCreateSampleTranslationFile": "Falló al crear archivo de traducción de ejemplo",
690
741
  "invalidFilePathDetected": "Ruta de archivo inválida detectada",
691
742
  "failedToWriteFile": "Falló al escribir archivo: {filePath}",
692
- "invalidSourceDirectory": "Invalid source directory: {sourceDir}",
693
- "invalidSourceLanguageDirectory": "Invalid source language directory: {sourceDir}"
743
+ "invalidSourceDirectory": "Directorio de origen no válido: {sourceDir}",
744
+ "invalidSourceLanguageDirectory": "Directorio de idioma de origen no válido: {sourceDir}"
694
745
  },
695
746
  "adminCli": {
696
747
  "setupPinProtectionTitle": "🔐 Configurando Protección PIN de Administrador",
@@ -837,7 +888,7 @@
837
888
  "fix_details": "{file}: {key} Anterior: \"{old}\" Nuevo: \"{new}\"",
838
889
  "more_fixes": "... y {count} correcciones más",
839
890
  "run_with_apply_fixes": "💡 Ejecutar con --apply para aplicar estas correcciones",
840
- "error_general": "❌ Error:",
891
+ "error_general": "❌Error:",
841
892
  "mainDebuggerSystemDiagnostics": "Diagnóstico Principal del Sistema / Depurador",
842
893
  "exportMissingKeys": "Exportar Claves Faltantes",
843
894
  "replaceHardcodedConsole": "Reemplazar Consola Codificada",
@@ -937,19 +988,19 @@
937
988
  },
938
989
  "init": {
939
990
  "initializationTitle": "🚀 Kit de Gestión i18n - Inicialización del Proyecto",
991
+ "initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
940
992
  "sourceDirectoryLabel": "📁 Directorio Fuente: {dir}",
941
- "createdSourceLanguageDirectory": "✅ Directorio de idioma fuente creado: {dir}",
942
993
  "requiredTitle": "Inicialización Requerida",
943
994
  "requiredBody": "Este proyecto debe ser inicializado antes de ejecutar este comando.",
944
995
  "promptRunNow": "¿Deseas ejecutar la inicialización ahora? (y/N):",
945
996
  "sourceLanguageLabel": "🌍 Idioma Fuente: {language}",
946
997
  "detectedI18nFrameworks": "🔍 Marco(s) i18n detectado(s): {frameworks}",
998
+ "pinMustBe4Digits": "🔐 PIN debe tener 4 dígitos.",
947
999
  "existingDirectoriesFound": "📁 Directorios de traducción existentes encontrados:",
948
1000
  "useExistingDirectoryPrompt": "¿Deseas usar el directorio existente? (y/n)",
949
1001
  "selectDirectoryPrompt": "Selecciona un directorio ingresando el número (o elige 'Crear nuevo directorio')",
950
1002
  "enterNewDirectoryName": "Ingresa el nombre para tu nuevo directorio de traducción",
951
1003
  "createdNewDirectory": "✅ Nuevo directorio creado: {dir}",
952
- "pinMustBe4Digits": "🔐 PIN debe tener 4 dígitos.",
953
1004
  "directoryAlreadyExists": "⚠️ El directorio ya existe: {dir}",
954
1005
  "invalidDirectoryName": "❌ Nombre de directorio inválido proporcionado.",
955
1006
  "usingExistingDirectory": "Usando directorio existente: {dir}",
@@ -993,8 +1044,8 @@
993
1044
  "nextStep3": "3. Ejecuta 'npm run i18ntk' nuevamente para validar traducciones",
994
1045
  "detectedFrameworks": "✅ Framework(s) i18n detectado(s): {frameworks}",
995
1046
  "setup": {
996
- "título": "Configuración",
997
- "pregunta": "Pregunta de configuración",
1047
+ "title": "Configuración",
1048
+ "question": "Pregunta de configuración",
998
1049
  "opt_single": "Archivo único",
999
1050
  "opt_modular": "Modular",
1000
1051
  "opt_existing": "Existente",
@@ -1004,9 +1055,7 @@
1004
1055
  "apply_all_prompt": "¿Aplicar esta estructura a todos los idiomas? (s/N):",
1005
1056
  "per_language_intro": "Has elegido configurar los idiomas individualmente. Estos son los idiomas disponibles:",
1006
1057
  "available_languages": "Idiomas disponibles: {languages}",
1007
- "include_prompt": "Ingresa los códigos de idioma separados por comas (ej. 'de,fr,es'):",
1008
- "title": "Setup",
1009
- "question": "Setup question"
1058
+ "include_prompt": "Ingresa los códigos de idioma separados por comas (ej. 'de,fr,es'):"
1010
1059
  },
1011
1060
  "warnings": {
1012
1061
  "noPackageJson": "No se encontró package.json. No se puede auto-detectar el framework i18n."
@@ -1018,11 +1067,11 @@
1018
1067
  "installFramework": "Para instalar un framework, ejecuta: npm install <package-name>"
1019
1068
  },
1020
1069
  "frameworks": {
1021
- "react": "- React i18next (react-i18next)",
1070
+ "react": "- Reaccionar i18next (reaccionar-i18next)",
1022
1071
  "vue": "- Vue i18n (vue-i18n)",
1023
- "i18next": "- i18next (i18next)",
1024
- "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
1025
- "svelte": "- Svelte i18n (svelte-i18n)"
1072
+ "i18next": "- i18siguiente (i18siguiente)",
1073
+ "nuxt": "-Nuxt i18n (@nuxtjs/i18n)",
1074
+ "svelte": "- Esbelto i18n (esbelto-i18n)"
1026
1075
  },
1027
1076
  "continueWithoutI18nPrompt": "No se detectó framework i18n. ¿Deseas continuar sin uno? (s/N):",
1028
1077
  "detectedI18nFramework": "Framework i18n detectado: {frameworks}",
@@ -1037,35 +1086,36 @@
1037
1086
  "noJsonFilesInSourceDirectory": "No se encontraron archivos JSON en el directorio fuente: {dir}",
1038
1087
  "invalidFilePathDetected": "Ruta de archivo inválida detectada",
1039
1088
  "initializationFailed": "Falló la inicialización: {error}",
1040
- "noFramework": "No i18n framework detected. Continue with generic mode.",
1041
- "packageJsonRead": "Error reading package.json."
1089
+ "noFramework": "No se detectó ningún marco i18n. Continúe con el modo genérico.",
1090
+ "packageJsonRead": "Error al leer el paquete.json."
1042
1091
  },
1043
1092
  "processingFile": "Procesando {file} para {language}...",
1044
1093
  "fileAlreadyExistsMerging": "El archivo {file} ya existe. Fusionando nuevas claves.",
1045
1094
  "createdNewFile": "Archivo nuevo creado: {file}",
1046
1095
  "updatedFile": "Archivo actualizado: {file}",
1047
1096
  "skippingExcludedFile": "Omitiendo {file} para {language} ya que está excluido.",
1048
- "continuingWithoutAdminPin": "Continuing without admin PIN setup.",
1049
- "errorSettingUpAdminPin": "Error setting up admin PIN: {error}",
1050
- "noTargetLanguagesSpecified": "No target languages specified.",
1051
- "translationFilesCreatedWarning": "Translation files were created with placeholders; review before production use.",
1052
- "warningCannotReadSourceDir": "Warning: cannot read source directory {dir}: {error}",
1053
- "warningInvalidLanguageCodes": "Warning: invalid language codes ignored: {languages}",
1054
- "warningProceedingWithoutFramework": "Proceeding without detected i18n framework.",
1055
- "initializationCancelled": "🚫 Initialization cancelled by user."
1097
+ "continuingWithoutAdminPin": "Continuar sin configurar el PIN de administrador.",
1098
+ "createdSourceLanguageDirectory": "✅ Directorio de idioma fuente creado: {dir}",
1099
+ "errorSettingUpAdminPin": "Error al configurar el PIN de administrador: {error}",
1100
+ "noTargetLanguagesSpecified": "No se han especificado idiomas de destino.",
1101
+ "translationFilesCreatedWarning": "Los archivos de traducción se crearon con marcadores de posición; revisión antes del uso en producción.",
1102
+ "warningCannotReadSourceDir": "Advertencia: no se puede leer el directorio fuente {dir}: {error}",
1103
+ "warningInvalidLanguageCodes": "Advertencia: se ignoran códigos de idioma no válidos: {languages}",
1104
+ "warningProceedingWithoutFramework": "Procediendo sin marco i18n detectado."
1056
1105
  },
1057
1106
  "language": {
1058
- "title": "🌍 Cambiar Idioma",
1059
- "separator": "============================================================",
1060
- "current": "Idioma actual: {language}",
1061
- "available": "Idiomas Disponibles:",
1062
- "languageOption": "{index}. {displayName}{current}",
1063
- "backToMainMenu": "Volver al Menú Principal",
1064
- "prompt": "Selecciona un idioma (0-8):",
1065
- "cancelled": "Cambio de idioma cancelado.",
1066
- "invalid": "Opción inválida. Por favor intenta de nuevo.",
1067
- "changed": "Idioma cambiado a: {language}",
1068
- "pressEnterToContinue": "Presiona Enter para continuar..."
1107
+ "title": "🌍 Cambiar Idioma",
1108
+ "separator": "============================================================",
1109
+ "current": "Idioma actual: {language}",
1110
+ "available": "Idiomas Disponibles:",
1111
+ "languageOption": "{index}. {displayName}{current}",
1112
+ "backToMainMenu": "Volver al Menú Principal",
1113
+ "prompt": "Selecciona un idioma (0-8):",
1114
+ "cancelled": "Cambio de idioma cancelado.",
1115
+ "invalid": "Opción inválida. Por favor intenta de nuevo.",
1116
+ "changed": "Idioma cambiado a: {language}",
1117
+ "changeFailed": "Error al cambiar el idioma: {error}",
1118
+ "pressEnterToContinue": "Presiona Enter para continuar..."
1069
1119
  },
1070
1120
  "maintainLanguagePurity": {
1071
1121
  "workflow_title": "🚀 Flujo de Trabajo de Mantenimiento de Pureza de Idioma",
@@ -1344,7 +1394,7 @@
1344
1394
  "relativePathHint": "Usa rutas relativas desde este directorio (ej., ./src/i18n/locales)",
1345
1395
  "currentDirectory": "Directorio actual del proyecto",
1346
1396
  "startingSettings": "Iniciando Configuración:",
1347
- "pin": "PIN:",
1397
+ "pin": "ALFILER:",
1348
1398
  "reportBug": {
1349
1399
  "title": "Reportar Error",
1350
1400
  "description": "Reporta cualquier problema o error que encuentres",
@@ -1407,8 +1457,8 @@
1407
1457
  "promptDesc": "Nota: Esto actualizará el paquete i18ntk a la última versión.",
1408
1458
  "confirm": "s",
1409
1459
  "cancelled": "Actualización cancelada.",
1410
- "error": "Failed to update package",
1411
- "updating": "Updating package..."
1460
+ "error": "No se pudo actualizar el paquete",
1461
+ "updating": "Actualizando paquete..."
1412
1462
  },
1413
1463
  "admin": {
1414
1464
  "selectOption": "Selecciona opción:",
@@ -1465,11 +1515,11 @@
1465
1515
  "importFailed": "Error al importar configuración: {error}",
1466
1516
  "backupSuccess": "Respaldo creado: {file}",
1467
1517
  "backupFailed": "Error al crear respaldo: {error}",
1468
- "exportFilenamePrompt": "Enter export filename:",
1469
- "importConfirm": "Import this settings file? (y/N):",
1470
- "importFilenamePrompt": "Enter import filename:",
1471
- "manageBackups": "Manage backups",
1472
- "restore": "Restore settings"
1518
+ "exportFilenamePrompt": "Ingrese el nombre del archivo de exportación:",
1519
+ "importConfirm": "¿Importar este archivo de configuración? (sí/no):",
1520
+ "importFilenamePrompt": "Ingrese el nombre del archivo de importación:",
1521
+ "manageBackups": "Administrar copias de seguridad",
1522
+ "restore": "Restaurar configuración"
1473
1523
  },
1474
1524
  "selectOption": "Selecciona opción:",
1475
1525
  "resetToDefaultsTitle": "Restablecer Configuraciones a Valores Predeterminados",
@@ -1481,11 +1531,11 @@
1481
1531
  "resetDone": "Configuraciones restablecidas a valores predeterminados exitosamente.",
1482
1532
  "resetScriptDirsDone": "Directorios de scripts restablecidos a valores predeterminados exitosamente.",
1483
1533
  "saveSuccess": "Configuraciones guardadas exitosamente.",
1484
- "saveFailed": "Failed to save settings.",
1485
- "saveError": "Invalid settings provided",
1486
- "pressEnter": "Press Enter to continue...",
1487
- "initFailed": "Failed to initialize settings: {error}",
1488
- "invalidValueFormat": "Invalid value format.",
1534
+ "saveFailed": "No se pudo guardar la configuración.",
1535
+ "saveError": "Se proporcionaron configuraciones no válidas",
1536
+ "pressEnter": "Presione Entrar para continuar...",
1537
+ "initFailed": "No se pudo inicializar la configuración: {error}",
1538
+ "invalidValueFormat": "Formato de valor no válido.",
1489
1539
  "help": {
1490
1540
  "title": "Ayuda de Configuración",
1491
1541
  "navigationTitle": "Navegación",
@@ -1499,13 +1549,13 @@
1499
1549
  "categoryProcessing": "• Configuración de Procesamiento: Procesamiento por lotes, límites de archivos y ajuste de rendimiento",
1500
1550
  "categoryAdvanced": "• Configuración Avanzada: Modo de depuración, registro de auditoría y opciones de seguridad",
1501
1551
  "envVarsTitle": "Variables de Entorno",
1502
- "envVar1": "• I18N_SOURCE_DIR: Override default source directory path",
1503
- "envVar2": "• I18N_OUTPUT_DIR: Override default output directory path",
1504
- "envVar3": "• I18N_DEBUG: Enable debug mode (true/false)",
1552
+ "envVar1": "• I18N_SOURCE_DIR: anula la ruta del directorio de origen predeterminado",
1553
+ "envVar2": "• I18N_OUTPUT_DIR: anula la ruta del directorio de salida predeterminada",
1554
+ "envVar3": "• I18N_DEBUG: Habilitar el modo de depuración (verdadero/falso)",
1505
1555
  "cliUsageTitle": "Ejemplos de Uso de la CLI",
1506
- "cliUsage1": " npx i18ntk --settings: Open interactive settings menu",
1507
- "cliUsage2": " npx i18ntk --settings --lang de: Open settings in German",
1508
- "cliUsage3": " npx i18ntk --reset-settings: Reset all settings to defaults",
1556
+ "cliUsage1": "? npx i18ntk --settings: Abrir el men? interactivo de configuraci?n",
1557
+ "cliUsage2": "? npx i18ntk --settings --lang de: Abrir la configuraci?n en alem?n",
1558
+ "cliUsage3": "? npx i18ntk --reset-settings: Restablecer toda la configuraci?n a valores predeterminados",
1509
1559
  "navigation": "Usa números para seleccionar opciones, 'b' para regresar",
1510
1560
  "editing": "Ingresa nuevos valores cuando se te solicite, o presiona Enter para mantener el actual",
1511
1561
  "saving": "Usa 's' para guardar cambios antes de salir",
@@ -1841,11 +1891,8 @@
1841
1891
  "description": "Eliminar idiomas de la interfaz no instalados",
1842
1892
  "help": "Eliminar idiomas de la interfaz no instalados en el sistema"
1843
1893
  },
1844
- "pinProtection_${helperKey}": {
1845
- "help": "Ayuda"
1846
- },
1847
1894
  "${helperKey}": {
1848
- "help": "Help"
1895
+ "help": "Ayuda"
1849
1896
  }
1850
1897
  },
1851
1898
  "actions": {
@@ -1918,18 +1965,16 @@
1918
1965
  "singleBackupFileHelp": "Ruta al archivo de respaldo único",
1919
1966
  "retentionDays": "Días de Retención",
1920
1967
  "retentionDaysHelp": "Número de días para retener archivos de respaldo antiguos",
1921
- "maxBackups": "Max Backups",
1968
+ "maxBackups": "Copias de seguridad máximas",
1922
1969
  "maxBackupsHelp": "mero máximo de archivos de respaldo a mantener",
1923
1970
  "confirmHelp": "Confirmar operación de respaldo",
1924
1971
  "confirmYes": "Sí",
1925
- "confirmNo": "No",
1926
- "backupFile": "Archivo de Respaldo",
1927
- "backupFileHelp": "Ruta al archivo de respaldo"
1972
+ "confirmNo": "No"
1928
1973
  },
1929
1974
  "validation": {
1930
- "valid": "Valid",
1931
- "validatingPaths": "Validating configured paths...",
1932
- "validationComplete": "Path validation complete: {valid}/{total} valid."
1975
+ "valid": "Válido",
1976
+ "validatingPaths": "Validando rutas configuradas...",
1977
+ "validationComplete": "Validación de ruta completa: {valid}/{total} válida."
1933
1978
  }
1934
1979
  },
1935
1980
  "summary": {
@@ -2091,7 +2136,7 @@
2091
2136
  "success_message": "✅ {message}",
2092
2137
  "failure_message": "❌ {message}",
2093
2138
  "failure_error_message": "{errorMessage}",
2094
- "warning_message": "⚠️ {message}",
2139
+ "warning_message": "⚠️ {message}",
2095
2140
  "test_runner_failed": "❌ Ejecutor de pruebas falló:",
2096
2141
  "recommendations": {
2097
2142
  "add_missing_translation_keys": "Agregar claves de traducción faltantes para mantener consistencia",
@@ -2161,69 +2206,17 @@
2161
2206
  "untranslated_markers": "Marcadores sin traducir: {untranslated}",
2162
2207
  "contains_english": "Contiene inglés: {hasEnglish}",
2163
2208
  "coverage_percentage": "Cobertura: {coverage}%",
2164
- "error_general": "❌ Error:",
2209
+ "error_general": "❌Error:",
2165
2210
  "use_help": "Use --help para ver información de uso"
2166
2211
  },
2167
- "cleaningUpReportFiles": "Cleaning up old report files...",
2168
- "couldNotDelete": "Could not delete {file}: {error}",
2169
- "deletedOldReportFiles": "Deleted {count} old report file(s).",
2170
- "errorCleaningUpReports": "Error cleaning up reports: {error}",
2171
- "noOldReportFilesToDelete": "No old report files to delete.",
2172
- "reportFilesPreserved": "Report files preserved.",
2173
- "reportSaveFailed": "Failed to save report to: {reportPath}",
2174
- "reportSaved": "Report saved to: {reportPath}"
2175
- },
2176
- "scanner": {
2177
- "help_message": "Escáner de Texto i18n Uso: node i18ntk-scanner.js [opciones] Opciones: --source-dir <dir> Directorio fuente para escanear (por defecto: ./src) --output <file> Archivo de salida para resultados (por defecto: ./i18ntk-scanner-report.json) --framework <nombre> Framework a analizar (react, vue, angular, vanilla) --patterns <patrones> Patrones regex personalizados (separados por comas) --include-tests Incluir archivos de prueba en el escaneo --exclude-dirs <dirs> Directorios a excluir (separados por comas) --help Mostrar esta ayuda Ejemplos: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console\\.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./resultados-escaneo.json",
2178
- "help_options": {
2179
- "source_dir": "Directorio fuente para escanear",
2180
- "output_dir": "Archivo de salida para resultados",
2181
- "framework": "Framework a analizar (react, vue, angular, vanilla)",
2182
- "patterns": "Patrones regex personalizados (separados por comas)",
2183
- "exclude": "Directorios a excluir (separados por comas)",
2184
- "output_report": "Archivo de salida para el informe",
2185
- "min_length": "Longitud mínima del texto para incluir",
2186
- "max_length": "Longitud máxima del texto para incluir",
2187
- "include_tests": "Incluir archivos de prueba en el escaneo"
2188
- },
2189
- "starting": "🔍 Iniciando escáner de texto para framework: {framework}",
2190
- "sourceDirectory": "📁 Escaneando directorio: {sourceDir}",
2191
- "frameworkDetected": "🎯 Framework detectado: {framework}",
2192
- "scanningFiles": "📊 Escaneando {fileCount} archivos...",
2193
- "foundTexts": "📝 Encontrados {textCount} textos que requieren traducción",
2194
- "generatingReport": "📊 Generando informe detallado...",
2195
- "foundText": "Encontrado {count} instancias de texto potencialmente codificado",
2196
- "reportSaved": "💾 Informe de escaneo guardado en: {reportPath}",
2197
- "noTextsFound": "✅ No se encontraron textos en inglés hardcodeados",
2198
- "scanComplete": "🎉 ¡Escaneo completado exitosamente!",
2199
- "analysisTitle": "🔍 ANÁLISIS DE ESCÁNER DE TRADUCCIÓN",
2200
- "fileSummary": "📄 {file}: {count} textos encontrados",
2201
- "textLocation": "📍 Línea {line}: {text}",
2202
- "context": "📝 Contexto: {context}",
2203
- "severity": "⚠️ Severidad: {severity}",
2204
- "recommendation": "💡 Recomendación: {recommendation}",
2205
- "welcome": {
2206
- "title": "🎯 ¡Bienvenido al Escáner de Texto!",
2207
- "description": "Esta herramienta escanea tu código fuente en busca de textos en inglés hardcodeados que puedan necesitar traducción."
2208
- },
2209
- "frameworkPrompt": {
2210
- "title": "🎯 Seleccionar Framework",
2211
- "available": "Frameworks disponibles: react, vue, angular, vanilla",
2212
- "description": "Ingrese el tipo de framework (o presione Enter para detección automática):",
2213
- "input": "Framework:"
2214
- },
2215
- "directoryPrompt": {
2216
- "title": "📁 Seleccionar Directorio Fuente",
2217
- "current": "Directorio actual: {dir}",
2218
- "description": "Ingrese el directorio a escanear (o presione Enter para el actual):",
2219
- "input": "Directorio:"
2220
- },
2221
- "options": {
2222
- "includeTests": "¿Incluir archivos de prueba?",
2223
- "excludeDirs": "Directorios a excluir (separados por comas):",
2224
- "customPatterns": "Patrones personalizados a escanear (regex):"
2225
- },
2226
- "reportGenerated": "Scan report generated: {path}"
2212
+ "cleaningUpReportFiles": "Limpiando archivos de informes antiguos...",
2213
+ "couldNotDelete": "No se pudo eliminar {file}: {error}",
2214
+ "deletedOldReportFiles": "Se eliminaron {count} archivos de informes antiguos.",
2215
+ "errorCleaningUpReports": "Error al limpiar informes: {error}",
2216
+ "noOldReportFilesToDelete": "No hay archivos de informes antiguos que eliminar.",
2217
+ "reportFilesPreserved": "Archivos de informes conservados.",
2218
+ "reportSaveFailed": "No se pudo guardar el informe en: {reportPath}",
2219
+ "reportSaved": "Informe guardado en: {reportPath}"
2227
2220
  },
2228
2221
  "ui": {
2229
2222
  "autoDetectedI18nDirectory": "Directorio i18n autodetectado: {path}",
@@ -2249,7 +2242,7 @@
2249
2242
  "documentation": "📚 Documentación: {url}",
2250
2243
  "issues": "🐛 Problemas: {url}",
2251
2244
  "versionInfoUnavailable": "Información de versión de i18ntk no disponible",
2252
- "versionInfoError": "Error: {error}"
2245
+ "versionInfoError": "Se produjo un error: {error}"
2253
2246
  },
2254
2247
  "validateLanguagePurity": {
2255
2248
  "phrase_debug_tools": "herramientas de depuración",
@@ -2379,9 +2372,6 @@
2379
2372
  "found_hardcoded_messages": "Mensajes hardcodeados encontrados",
2380
2373
  "all_console_messages_use_translation": "Todos los mensajes de consola usan traducción"
2381
2374
  },
2382
- "\\nSelect directory to clean (0-${availableDirs": {
2383
- "length + 1}): ": "Seleccione directorio para limpiar (0-${availableDirs"
2384
- },
2385
2375
  "exportTranslations": {
2386
2376
  "createdDirectory": "Directorio creado",
2387
2377
  "foundFiles": "Archivos encontrados",
@@ -2397,9 +2387,6 @@
2397
2387
  "location": "Ubicación",
2398
2388
  "nextSteps": "Siguientes pasos"
2399
2389
  },
2400
- ")) {\n console": {
2401
- "log(": "Registro("
2402
- },
2403
2390
  "dashboard": {
2404
2391
  "title": "Tablero",
2405
2392
  "overview": "Vista general"
@@ -2413,13 +2400,13 @@
2413
2400
  "signUp": "Registrarse"
2414
2401
  },
2415
2402
  "checkUsage": {
2416
- "usage_analysis_failed": "Usage analysis failed."
2403
+ "usage_analysis_failed": "El análisis de uso falló."
2417
2404
  },
2418
2405
  "completeTranslations": {
2419
- "warning_could_not_parse_filepa": "Warning: could not parse file path: {filePath}"
2406
+ "warning_could_not_parse_filepa": "Advertencia: no se pudo analizar la ruta del archivo: {filePath}"
2420
2407
  },
2421
- "pressEnterToContinue": "Press Enter to continue...",
2408
+ "pressEnterToContinue": "Presione Entrar para continuar...",
2422
2409
  "status": {
2423
- "exitingCompleted": "Workflow completed. Exiting..."
2410
+ "exitingCompleted": "Flujo de trabajo completado. Saliendo..."
2424
2411
  }
2425
2412
  }