i18ntk 3.2.0 → 3.3.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.
@@ -9,217 +9,217 @@
9
9
  "goodbye": "Adiós",
10
10
  "yes": "Sí",
11
11
  "no": "No",
12
- "save": "Guardar",
12
+ "save": "Ahorrar",
13
13
  "cancel": "Cancelar",
14
- "delete": "Eliminar",
14
+ "delete": "Borrar",
15
15
  "edit": "Editar",
16
16
  "loading": "Cargando...",
17
- "offlineTitle": "Estás fuera de línea",
18
- "offlineMessage": "Por favor, verifica tu conexión a internet",
19
- "tryReconnect": "Intentar reconectar",
17
+ "offlineTitle": "Estás desconectado",
18
+ "offlineMessage": "Por favor revisa tu conexión a internet",
19
+ "tryReconnect": "Intenta volver a conectarte",
20
20
  "logout": "Cerrar sesión",
21
- "login": "Iniciar sesión",
21
+ "login": "Acceso",
22
22
  "amount": "Cantidad",
23
23
  "success": "Éxito",
24
24
  "error": "Error",
25
25
  "warning": "Advertencia",
26
26
  "info": "Información:",
27
- "debug": "Depuración",
27
+ "debug": "Depurar",
28
28
  "progress": "Progreso:",
29
29
  "remaining": "Restante:",
30
- "total": "Total general:",
31
- "completed": "7. Completado con éxito!",
32
- "missing": "Faltante",
30
+ "total": "Total:",
31
+ "completed": "7. ¡Completado con éxito!",
32
+ "missing": "Desaparecido",
33
33
  "partial": "Parcial",
34
- "sameAsSource": "Mismo que fuente:",
35
- "formatMismatch": "Desformateado:",
34
+ "sameAsSource": "Igual que la fuente:",
35
+ "formatMismatch": "El formato no coincide:",
36
36
  "typeMismatch": "Tipo no coincidente:",
37
- "structureMismatch": "Estructura no coincidente:",
38
- "invalidOption": "Opción inválida",
39
- "separator": "==================================================",
40
- "initializationFailed": "❌ Inicialización fallida: {error}",
41
- "stackTrace": "Pila de llamadas: {stack}",
42
- "pressEnterToContinue": "Presiona Enter para continuar...",
43
- "pressEnterToReturn": "Presiona Enter para regresar al menú principal...",
37
+ "structureMismatch": "Desajuste de estructura:",
38
+ "invalidOption": "Opción no válida",
39
+ "separator": "====================================================",
40
+ "initializationFailed": "❌ Falló la inicialización: {error}",
41
+ "stackTrace": "Seguimiento de pila: {stack}",
42
+ "pressEnterToContinue": "Presione Entrar para continuar...",
43
+ "pressEnterToReturn": "Presione Enter para regresar al menú principal...",
44
44
  "stepCompleted": "Paso '{stepName}' completado.",
45
45
  "stepFailed": "Paso '{stepName}' fallido.",
46
- "runningStep": "Ejecutando paso: {stepName}",
47
- "command": "Comando: {command}",
46
+ "runningStep": "Paso de carrera: {stepName}",
47
+ "command": "Dominio: {command}",
48
48
  "startingWorkflow": "Iniciando flujo de trabajo...",
49
49
  "workflowCompleted": "Flujo de trabajo completado.",
50
- "checkReports": "Revisa los informes para más detalles.",
50
+ "checkReports": "Consulte los informes para obtener más detalles.",
51
51
  "errorExecutingCommand": "Error al ejecutar el comando: {error}",
52
- "genericError": "? Se produjo un error: {error}",
52
+ "genericError": "❌Error: {error}",
53
53
  "errors": {
54
54
  "errors": "Errores:",
55
- "genericError": "? Se produjo un error: {error}",
56
- "initializationFailed": "❌ Inicialización fallida: {error}",
57
- "initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
58
- "translationKeyNotFound": "Traducción no encontrada: {key}",
55
+ "genericError": "❌Error: {error}",
56
+ "initializationFailed": "❌ Falló la inicialización: {error}",
57
+ "initializationCancelled": " Inicialización cancelada por el usuario.",
58
+ "translationKeyNotFound": "Clave de traducción no encontrada: {key}",
59
59
  "sourceDirectoryNotFound": "Directorio fuente no encontrado: {directory}",
60
- "configLoadingFailed": "Carga de configuración fallida",
61
- "invalidSourceDirectory": "Directorio fuente inválido: {directory}",
60
+ "configLoadingFailed": "Error al cargar la configuración",
61
+ "invalidSourceDirectory": "Directorio fuente no válido: {directory}",
62
62
  "securityViolation": "Violación de seguridad detectada",
63
- "authenticationFailed": "Autenticación fallida",
64
- "sourceEqualsI18nWarn": "⚠️ El directorio fuente es igual al directorio i18n ({sourceDir}). Usando {fallback} para escaneo de fuentes."
63
+ "authenticationFailed": "Error de autenticación",
64
+ "sourceEqualsI18nWarn": "⚠️ sourceDir es igual a i18nDir ({sourceDir}). Volviendo a {fallback} para escanear el origen."
65
65
  },
66
- "errorGeneratingStatusSummary": "Error al generar resumen de estado: {error}",
67
- "errorRunningDebugTool": "Error al ejecutar herramienta de depuración '{displayName}': {error}",
68
- "errorReadingDebugLogs": "Error al leer registros de depuración: {error}",
69
- "errorAnalyzingLogFile": "Error al analizar archivo de registro: {error}",
70
- "errorAnalyzingTranslationKeys": "Error al analizar claves de traducción: {error}",
71
- "errorAnalyzingTranslationCompleteness": "Error al analizar completitud de traducciones: {error}",
72
- "analyzingTranslationCompleteness": "Analizando completitud de traducciones en todos los idiomas...",
73
- "i18nDirectoryNotFound": "⚠️ Directorio i18n no encontrado: {i18nDir}",
74
- "translationCompletenessAnalysisFailed": "⚠️ Análisis de completitud de traducciones fallido: {error}",
75
- "failedToAnalyzeLanguage": "❌ Error al analizar idioma {language}: {error}",
76
- "errorReadingI18nDirectory": "❌ Error al leer directorio i18n:",
77
- "languageCompletenessTitle": "📈 COMPLETITUD DE TRADUCCIONES POR IDIOMA",
78
- "errorAnalyzingTranslationFormat": "Error al analizar formato de traducción: {error}",
79
- "errorAnalyzingTranslationType": "Error al analizar tipo de traducción: {error}",
80
- "errorAnalyzingTranslationStructure": "Error al analizar estructura de traducción: {error}",
81
- "errorAnalyzingTranslationFormatMismatch": "Error al analizar desajuste de formato de traducción: {error}",
82
- "errorAnalyzingTranslationTypeMismatch": "Error al analizar desajuste de tipo de traducción: {error}",
83
- "errorAnalyzingTranslationStructureMismatch": "Error al analizar desajuste de estructura de traducción: {error}",
84
- "errorAnalyzingTranslationSameAsSource": "Error al analizar traducción igual a la fuente: {error}",
66
+ "errorGeneratingStatusSummary": "Error al generar el resumen de estado: {error}",
67
+ "errorRunningDebugTool": "Error al ejecutar la herramienta de depuración '{displayName}': {error}",
68
+ "errorReadingDebugLogs": "Error al leer los registros de depuración: {error}",
69
+ "errorAnalyzingLogFile": "Error al analizar el archivo de registro: {error}",
70
+ "errorAnalyzingTranslationKeys": "Error al analizar las claves de traducción: {error}",
71
+ "errorAnalyzingTranslationCompleteness": "Error al analizar la integridad de la traducción: {error}",
72
+ "analyzingTranslationCompleteness": "Analizando la integridad de la traducción en todos los idiomas...",
73
+ "i18nDirectoryNotFound": "⚠️ directorio i18n no encontrado: {i18nDir}",
74
+ "translationCompletenessAnalysisFailed": "⚠️ Error en el análisis de integridad de la traducción: {error}",
75
+ "failedToAnalyzeLanguage": "❌ No se pudo analizar el idioma {language}: {error}",
76
+ "errorReadingI18nDirectory": "❌ Error al leer el directorio i18n:",
77
+ "languageCompletenessTitle": "📈 INTEGRIDAD DE LA TRADUCCIÓN POR IDIOMA",
78
+ "errorAnalyzingTranslationFormat": "Error al analizar el formato de traducción: {error}",
79
+ "errorAnalyzingTranslationType": "Error al analizar el tipo de traducción: {error}",
80
+ "errorAnalyzingTranslationStructure": "Error al analizar la estructura de traducción: {error}",
81
+ "errorAnalyzingTranslationFormatMismatch": "Error al analizar la falta de coincidencia del formato de traducción: {error}",
82
+ "errorAnalyzingTranslationTypeMismatch": "Error al analizar la discrepancia del tipo de traducción: {error}",
83
+ "errorAnalyzingTranslationStructureMismatch": "Error al analizar la estructura de traducción que no coincide: {error}",
84
+ "errorAnalyzingTranslationSameAsSource": "Error al analizar la traducción igual que la fuente: {error}",
85
85
  "title": "Estado",
86
- "nextStep1": "1. Verificar análisis de uso:",
86
+ "nextStep1": "1. Verifique el análisis de uso:",
87
87
  "nextStep2": "2. Validar traducciones:",
88
- "nextStep3": "3. Analizar completitud:",
89
- "nextStep4": "4. Completar traducciones faltantes:",
90
- "nextStep5": "5. Generar informe resumen:",
91
- "nextStep6": "6. Revisar y finalizar traducciones:",
92
- "generating": "Generando informe resumen...",
88
+ "nextStep3": "3. Analizar la integridad:",
89
+ "nextStep4": "4. Complete las traducciones que faltan:",
90
+ "nextStep5": "5. Generar informe resumido:",
91
+ "nextStep6": "6. Revisar y finalizar las traducciones:",
92
+ "generating": "Generando informe resumido...",
93
93
  "review": "Revisando traducciones...",
94
94
  "finalizing": "Finalizando traducciones...",
95
- "finalized": "¡Finalizado exitosamente!",
95
+ "finalized": "¡Finalizado con éxito!",
96
96
  "warnings": "Advertencias:",
97
97
  "completedKeys": "Claves completadas:",
98
- "missingKeys": "Claves faltantes:",
98
+ "missingKeys": "Teclas faltantes:",
99
99
  "partialKeys": "Claves parciales:",
100
- "home": "Inicio",
101
- "settings": "Configuración",
102
- "startingSettings": "🎛️ Iniciando CLI de Configuración...",
100
+ "home": "Hogar",
101
+ "settings": "Ajustes",
102
+ "startingSettings": "🎛️ Iniciando configuración CLI...",
103
103
  "confirm": "Confirmar",
104
104
  "errorExiting": "Error al salir."
105
105
  },
106
106
  "errors": {
107
- "invalidOption": "❌ Opción inválida: {option}. Por favor, inténtelo de nuevo.",
108
- "readlineClosed": "Flujo de entrada cerrado; ejecutando en modo no interactivo.",
109
- "noPackageJson": "No se encontró package.json. No se puede autodetectar el framework i18n.",
110
- "noI18nDir": "No se encontró directorio i18n en la raíz del proyecto.",
111
- "noI18nConfig": "No se encontró archivo de configuración i18n en la raíz del proyecto.",
107
+ "invalidOption": "❌ Opción no válida: {option}. Por favor inténtalo de nuevo.",
108
+ "readlineClosed": "El flujo de entrada está cerrado; ejecutándose en modo no interactivo.",
109
+ "noPackageJson": "No se encontró ningún paquete.json. No se puede detectar automáticamente el marco i18n.",
110
+ "noI18nDir": "No se encontró ningún directorio i18n en la raíz del proyecto.",
111
+ "noI18nConfig": "No se encontró ningún archivo de configuración de i18n en la raíz del proyecto.",
112
112
  "errorReadingDebugLogs": "Error al leer los registros de depuración: {error}"
113
113
  },
114
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",
115
+ "help_message": "Uso del escáner de texto I18n: nodo i18ntk-scanner.js [opciones] Opciones: --source-dir <dir> Directorio de origen para escanear (predeterminado: ./src) --salida <file> Archivo de salida para los resultados del análisis (predeterminado: ./i18ntk-scanner-report.json) --framework <name> Marco de destino (react, vue, angular, vanilla) --patrones <patterns> Patrones de expresiones regulares personalizados (separados por comas) --include-tests Incluir archivos de prueba en el análisis --exclude-dirs <dirs> Directorios para 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=./scan-results.json",
116
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"
117
+ "source_dir": "Directorio de origen para buscar problemas con i18n",
118
+ "output_dir": "Directorio de informes y resultados de escaneo",
119
+ "framework": "Marco de destino (react, vue, angular, vanilla)",
120
+ "patterns": "Patrones de expresiones regulares personalizados para la detección de texto",
121
+ "exclude": "Patrones de archivos para excluir del escaneo",
122
+ "output_report": "Generar informe de escaneo detallado",
123
+ "min_length": "Longitud mínima del texto a considerar para la traducción",
124
+ "max_length": "Longitud máxima del texto a considerar para la traducción",
125
+ "include_tests": "Incluir archivos de prueba en el proceso de escaneo"
126
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",
127
+ "starting": "🔍 Iniciar el escáner de texto para framework: {framework}",
128
+ "sourceDirectory": "📁 Directorio de escaneo: {sourceDir}",
129
+ "frameworkDetected": "🎯 Marco detectado: {framework}",
130
+ "scanningFiles": "📊 Escaneo {fileCount} archivos...",
131
+ "foundTexts": "📝 Encontrado {textCount} textos que requieren traducción",
132
132
  "generatingReport": "📊 Generando informe detallado...",
133
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",
134
+ "noTextsFound": "✅ No se encontraron textos en inglés codificados",
135
+ "scanComplete": "🎉 ¡El escaneo se completó con éxito!",
136
+ "analysisTitle": "🔍 ANÁLISIS DE ESCANEO DE TRADUCCIÓN",
137
137
  "fileSummary": "📄 {file}: {count} textos encontrados",
138
138
  "textLocation": "📍 Línea {line}: {text}",
139
- "foundText": "Encontrado {count} instancias de texto potencialmente codificado",
139
+ "foundText": "Encontró {count} posibles instancias de texto codificado",
140
140
  "context": "📝 Contexto: {context}",
141
- "severity": "⚠️ Severidad: {severity}",
141
+ "severity": "⚠️ Gravedad: {severity}",
142
142
  "recommendation": "💡 Recomendación: {recommendation}",
143
143
  "welcome": {
144
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."
145
+ "description": "Esta herramienta escanea su código fuente en busca de texto codificado en inglés que pueda necesitar traducción."
146
146
  },
147
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):",
148
+ "title": "🎯 Seleccionar marco",
149
+ "available": "Marcos disponibles: reaccionar, vue, angular, vainilla",
150
+ "description": "Ingrese el tipo de marco (o presione Enter para la detección automática):",
151
151
  "input": "Estructura:"
152
152
  },
153
153
  "directoryPrompt": {
154
- "title": "📁 Seleccionar Directorio Fuente",
154
+ "title": "📁 Seleccionar directorio de origen",
155
155
  "current": "Directorio actual: {dir}",
156
- "description": "Ingrese el directorio a escanear (o presione Enter para el actual):",
156
+ "description": "Ingrese el directorio para escanear (o presione Enter para obtener el actual):",
157
157
  "input": "Directorio:"
158
158
  },
159
159
  "options": {
160
160
  "includeTests": "¿Incluir archivos de prueba?",
161
161
  "excludeDirs": "Directorios a excluir (separados por comas):",
162
- "customPatterns": "Patrones personalizados a escanear (regex):"
162
+ "customPatterns": "Patrones personalizados para buscar (regex):"
163
163
  },
164
164
  "reportGenerated": "Informe de escaneo generado: {path}"
165
165
  },
166
166
  "fixer": {
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",
168
- "starting": "🚀 Iniciando corrección de traducciones para idiomas: {languages}",
169
- "sourceDirectory": "📁 Directorio fuente: {sourceDir}",
170
- "sourceLanguage": "🔤 Idioma fuente: {sourceLanguage}",
171
- "markers": "🏷️ Marcadores a corregir: {markers}",
172
- "scanningLanguage": "📊 Escaneando {language}...",
173
- "noLanguages": "❌ No se especificaron idiomas para corregir.",
167
+ "help_message": "Uso de I18n Translation Fixer: nodo i18ntk-fixer.js [opciones] Opciones: --source-dir <dir> Directorio de origen para escanear (predeterminado: ./locales) --idiomas <langs> Lista separada por comas de idiomas para corregir: marcadores <markers> Marcadores separados por comas para tratarlos como no traducidos --no-backup Omitir la creación automática de copias de seguridad --help Mostrar esta ayuda Ejemplos: nodo i18ntk-fixer.js --languages ​​de,fr nodo i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED nodo i18ntk-fixer.js --no-backup",
168
+ "starting": "🚀 Inicio de corrección de traducción para idiomas: {languages}",
169
+ "sourceDirectory": "📁 Directorio de fuentes: {sourceDir}",
170
+ "sourceLanguage": "🔤 Idioma de origen: {sourceLanguage}",
171
+ "markers": "🏷️ Marcadores para arreglar: {markers}",
172
+ "scanningLanguage": "📊 Escaneo {language}...",
173
+ "noLanguages": "❌ No se han especificado idiomas para la corrección.",
174
174
  "allComplete": "🎉 ¡Todas las traducciones ya están completas!",
175
175
  "fullReportSaved": "📊 Informe completo guardado en: {reportPath}",
176
- "reviewReport": "Por favor revisa el informe antes de continuar.",
177
- "backupCreated": "💾 Respaldo creado exitosamente.",
176
+ "reviewReport": "Revise el informe antes de continuar.",
177
+ "backupCreated": "💾 Copia de seguridad creada exitosamente.",
178
178
  "applyingFixes": "🔄 Aplicando correcciones...",
179
- "fixingComplete": "✅ ¡Corrección de traducciones completa!",
179
+ "fixingComplete": "✅ ¡Arreglo de traducción completo!",
180
180
  "operationCancelled": "❌ Operación cancelada por el usuario.",
181
- "analysisTitle": "🔍 ANÁLISIS DE CORRECCIÓN DE TRADUCCIONES",
182
- "analysisSeparator": "==================================================",
181
+ "analysisTitle": "🔍 ANÁLISIS DE FIJACIÓN DE TRADUCCIÓN",
182
+ "analysisSeparator": "====================================================",
183
183
  "totalIssues": "Total de problemas encontrados: {totalIssues}",
184
184
  "missingTranslations": "Traducciones faltantes: {missing}",
185
- "placeholderTranslations": "Traducciones provisionales: {placeholder}",
185
+ "placeholderTranslations": "Traducciones de marcadores de posición: {placeholder}",
186
186
  "noIssues": "✅ No se encontraron problemas. Todas las traducciones están completas.",
187
- "detailedIssues": "📋 PROBLEMAS DETALLADOS:",
187
+ "detailedIssues": "📋 CUESTIONES DETALLADAS:",
188
188
  "detailedSeparator": "--------------------------------------------------",
189
189
  "filePath": "📄 {file} → {path}",
190
- "missingKey": "❌ FALTANTE: {source} → {new}",
191
- "placeholderKey": "⚠️ PROVISIONAL: \"{target}\" → \"{new}\"",
192
- "moreIssues": "... y {count} problemas más. Revisa el archivo de informe para detalles completos.",
193
- "confirmationTitle": "🤔 ¿Deseas proceder con estas correcciones?",
190
+ "missingKey": "❌ FALTA: {source} → {new}",
191
+ "placeholderKey": "⚠️ MARCADOR DE LUGAR: \"{target}\" → \"{new}\"",
192
+ "moreIssues": "... y {count} más problemas. Consulte el archivo del informe para obtener detalles completos.",
193
+ "confirmationTitle": "🤔 ¿Quieres continuar con estas correcciones?",
194
194
  "confirmationOptions": "Opciones:",
195
195
  "optionYes": "y - Sí, aplicar todas las correcciones",
196
196
  "optionNo": "n - No, cancelar operación",
197
197
  "optionShow": "s - Mostrar problemas detallados",
198
- "choicePrompt": "Tu elección (y/n/s):",
199
- "nonInteractiveMode": "⚡ Modo no interactivo detectado - aplicando correcciones automáticamente...",
200
- "reportGenerated": "📊 Informe del corrector generado: {path}",
198
+ "choicePrompt": "Tu elección (s/n/s):",
199
+ "nonInteractiveMode": "⚡ Se detectó modo no interactivo: se aplican correcciones automáticamente...",
200
+ "reportGenerated": "📊 Informe de reparación generado: {path}",
201
201
  "summary": "Resumen del reparador:",
202
202
  "welcome": {
203
- "title": "🎯 ¡Bienvenido al Corrector de Traducciones!",
204
- "description": "Esta herramienta te ayudará a corregir traducciones rotas y marcadores provisionales en tus archivos de localización."
203
+ "title": "🎯 ¡Bienvenido a Translation Fixer!",
204
+ "description": "Esta herramienta le ayudará a corregir traducciones y marcadores de posición rotos en sus archivos locales."
205
205
  },
206
206
  "markerPrompt": {
207
- "title": "🏷️ Configurar Marcadores Provisionales",
208
- "description": "Ingresa los marcadores que indican texto no traducido (separados por comas):",
207
+ "title": "🏷️ Configurar marcadores de posición",
208
+ "description": "Ingrese los marcadores que indican texto no traducido (separados por comas):",
209
209
  "currentDefaults": "Marcadores predeterminados: {markers}",
210
- "input": "Marcadores (o presiona Enter para usar predeterminados):"
210
+ "input": "Marcadores (o presione Enter para ver los valores predeterminados):"
211
211
  },
212
212
  "languagePrompt": {
213
- "title": "🌍 Seleccionar Idiomas a Corregir",
213
+ "title": "🌍 Seleccione idiomas para corregir",
214
214
  "available": "Idiomas disponibles: {languages}",
215
- "description": "Ingresa los idiomas a corregir (separados por comas) o presiona Enter para todos:",
215
+ "description": "Ingrese los idiomas a corregir (separados por comas) o presione Entrar para todos:",
216
216
  "input": "Idiomas:",
217
217
  "noLanguages": "No se encontraron idiomas para corregir."
218
218
  },
219
219
  "directoryPrompt": {
220
- "title": "📁 Seleccionar Directorio",
220
+ "title": "📁 Seleccionar directorio",
221
221
  "current": "Directorio actual: {dir}",
222
- "description": "Ingresa el directorio que contiene tus archivos de localización (o presiona Enter para el actual):",
222
+ "description": "Ingrese el directorio que contiene sus archivos locales (o presione Enter para ver los actuales):",
223
223
  "input": "Directorio:"
224
224
  },
225
225
  "backupLocation": "Ubicación de la copia de seguridad: {dir}",
@@ -227,9 +227,9 @@
227
227
  "creatingBackup": "Creando copia de seguridad en {dir}...",
228
228
  "dryRunMode": "Modo de funcionamiento en seco: {mode}",
229
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}.",
230
+ "fixing": "Fijación {language}...",
231
+ "foundLanguages": "Encontró {count} idiomas: {languages}",
232
+ "languageFixed": "{language}: fijado {fixed} clave(s), omitida {skipped}.",
233
233
  "running": "Ejecutando el reparador de traducción...",
234
234
  "totalFixed": "Total fijo: {count}"
235
235
  },
@@ -237,118 +237,118 @@
237
237
  "stepAnalyzeTranslations": "Analizar traducciones",
238
238
  "stepCompletedWithIcon": "✅ Completado: {stepName}",
239
239
  "stepValidateTranslations": "Validar traducciones",
240
- "stepRunning": "▶️ Paso {stepNumber}/{totalSteps}: {stepName}",
241
- "separator": "==================================================",
240
+ "stepRunning": "▶️ Paso {stepNumber}/{totalSteps}: {stepName}",
241
+ "separator": "====================================================",
242
242
  "stepFailed": "❌ Fallido: {stepName}",
243
243
  "errorLabel": "Error",
244
- "autoRunScriptTitle": "🧪 Flujo de Ejecución Automática",
244
+ "autoRunScriptTitle": "🧪 Flujo de trabajo de ejecución automática",
245
245
  "usageTitle": "Uso",
246
- "runAllSteps": "Ejecutar: node i18ntk-autorun.js",
246
+ "runAllSteps": "Ejecutar: nodo i18ntk-autorun.js",
247
247
  "configureSettingsFirst": "Configuración: i18ntk-config.json o indicadores CLI",
248
248
  "runSpecificSteps": "Utilice --steps=1,3 o --list para mostrar los pasos",
249
249
  "showHelp": "--ayuda para más información",
250
250
  "examplesTitle": "Ejemplos",
251
- "configExample": "node i18ntk-autorun.js --ui-language=zh",
252
- "stepsExample1": "node i18ntk-autorun.js --steps=analyze,validate",
253
- "stepsExample2": "node i18ntk-autorun.js --list",
254
- "customSettingsConfiguration": "Configuración de autorun personalizada",
251
+ "configExample": "nodo i18ntk-autorun.js --ui-language=zh",
252
+ "stepsExample1": "nodo i18ntk-autorun.js --steps=analizar,validar",
253
+ "stepsExample2": "nodo i18ntk-autorun.js --lista",
254
+ "customSettingsConfiguration": "Configuración de ejecución automática personalizada",
255
255
  "availableSteps": "Pasos disponibles",
256
- "startingAutoRunWorkflow": "🚀 Iniciando Flujo de Ejecución Automática...",
257
- "workflowIncludesSteps": "Flujo incluye {count} pasos:",
258
- "missingRequiredFile": "Falta archivo requerido: {file}",
259
- "workflowStopped": "Workflow detenido debido a un fallo.",
260
- "workflowCompleted": "🎉 Workflow completado!",
256
+ "startingAutoRunWorkflow": "🚀 Iniciando flujo de trabajo de ejecución automática...",
257
+ "workflowIncludesSteps": "El flujo de trabajo incluye {count} pasos:",
258
+ "missingRequiredFile": "Falta el archivo requerido: {file}",
259
+ "workflowStopped": "El flujo de trabajo se detuvo debido a una falla.",
260
+ "workflowCompleted": "🎉 ¡Flujo de trabajo completado!",
261
261
  "successfulSteps": "Pasos exitosos: {count}",
262
262
  "failedSteps": "Pasos fallidos: {count}",
263
263
  "stepInitializeProject": "Inicializar proyecto",
264
- "stepCheckUsage": "Verificar uso de claves",
265
- "stepGenerateSummary": "Generar informe de resumen",
266
- "runInitializationFirst": "Por favor, ejecuta la inicialización primero.",
267
- "initializationCheckPassed": "Comprobación de inicialización pasada.",
268
- "runningStep": "Ejecutando paso: {stepName}",
269
- "commandLabel": "Comando: {command}",
270
- "stepCompletedWithTime": "Paso '{stepName}' completado en {duration}ms.",
264
+ "stepCheckUsage": "Verificar el uso de claves",
265
+ "stepGenerateSummary": "Generar informe resumido",
266
+ "runInitializationFirst": "Ejecute primero la inicialización.",
267
+ "initializationCheckPassed": "Se pasó la verificación de inicialización.",
268
+ "runningStep": "Paso de carrera: {stepName}",
269
+ "commandLabel": "Dominio: {command}",
270
+ "stepCompletedWithTime": "Paso '{stepName}' completado en {duration}EM.",
271
271
  "stepCompleted": "Paso '{stepName}' completado.",
272
- "stepFailedWithError": "Paso '{stepName}' fallado con error: {error}",
273
- "requiredStepFailed": "Paso requerido fallado. Deteniendo flujo.",
274
- "optionalStepFailed": "Paso opcional fallado. Continuando flujo.",
272
+ "stepFailedWithError": "Paso '{stepName}'falló con error: {error}",
273
+ "requiredStepFailed": "El paso requerido falló. Deteniendo el flujo de trabajo.",
274
+ "optionalStepFailed": "El paso opcional falló. Flujo de trabajo continuo.",
275
275
  "stepRequired": "(Requerido)",
276
276
  "stepOptional": "(Opcional)",
277
277
  "startingExecution": "Iniciando ejecución...",
278
- "pressEnterToContinue": "Presiona Enter para continuar...",
279
- "runningSelectedSteps": "Ejecutando pasos seleccionados...",
280
- "invalidStepNumber": "Número de paso inválido: {stepNum}",
281
- "executionReport": "Informe de ejecución:",
282
- "requiredFailedSteps": "Pasos requeridos fallidos: {count}",
278
+ "pressEnterToContinue": "Presione Entrar para continuar...",
279
+ "runningSelectedSteps": "Ejecutando los pasos seleccionados...",
280
+ "invalidStepNumber": "Número de paso no válido: {stepNum}",
281
+ "executionReport": "Informe de Ejecución:",
282
+ "requiredFailedSteps": "Los pasos requeridos fallaron: {count}",
283
283
  "stepDetails": "Detalles del paso:",
284
284
  "reportSavedTo": "Informe guardado en: {path}",
285
285
  "overallStatusSuccess": "ÉXITO",
286
286
  "overallStatusFailed": "FALLIDO",
287
287
  "overallStatus": "Estado general: {status}",
288
- "pressEnterForDefaults": "Presiona Enter para usar configuraciones predeterminadas para cualquier prompt.",
289
- "sourceDirPrompt": "Ingresa directorio fuente (predeterminado: {default}):",
290
- "sourceLangPrompt": "Ingresa idioma fuente (predeterminado: {default}):",
291
- "targetLangsPrompt": "Ingresa idiomas objetivo (separados por comas, predeterminado: {default}):",
292
- "translationMarkerPrompt": "Ingresa marcador de traducción (predeterminado: {default}):",
293
- "outputDirPrompt": "Ingresa directorio de salida para informes (predeterminado: {default}):",
294
- "settingsUpdatedSuccessfully": "Configuraciones actualizadas con éxito!",
295
- "errorConfiguringSettings": "Error al configurar configuraciones: {error}",
296
- "configurationComplete": "Configuración completada.",
297
- "runAutoRunCommand": "Ahora puedes ejecutar el comando de auto-run.",
298
- "configurationFailed": "Configuración fallida: {error}",
299
- "noValidStepNumbers": "No se proporcionaron números de paso válidos.",
300
- "autoRunFailed": "Auto-run fallido: {error}",
301
- "stepCompleteTranslations": "Completar traducciones",
302
- "stepAnalyzeSizing": "Analizar-sizing",
288
+ "pressEnterForDefaults": "Presione Entrar para usar la configuración predeterminada para cualquier mensaje.",
289
+ "sourceDirPrompt": "Ingrese el directorio de origen (predeterminado: {default}):",
290
+ "sourceLangPrompt": "Ingrese el idioma de origen (predeterminado: {default}):",
291
+ "targetLangsPrompt": "Introduzca los idiomas de destino (separados por comas, predeterminado: {default}):",
292
+ "translationMarkerPrompt": "Ingrese el marcador de traducción (predeterminado: {default}):",
293
+ "outputDirPrompt": "Ingrese el directorio de salida para los informes (predeterminado: {default}):",
294
+ "settingsUpdatedSuccessfully": "¡La configuración se actualizó correctamente!",
295
+ "errorConfiguringSettings": "Error al configurar los ajustes: {error}",
296
+ "configurationComplete": "Configuración completa.",
297
+ "runAutoRunCommand": "Ahora puede ejecutar el comando de ejecución automática.",
298
+ "configurationFailed": "Error de configuración: {error}",
299
+ "noValidStepNumbers": "No se han proporcionado números de paso válidos.",
300
+ "autoRunFailed": "Error de ejecución automática: {error}",
301
+ "stepCompleteTranslations": "Traducciones completas",
302
+ "stepAnalyzeSizing": "Analizar tallas",
303
303
  "stepCompletedIcon": "✅",
304
- "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Paso '{stepName}' en ejecución...",
304
+ "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Paso '{stepName}' correr...",
305
305
  "stepFailedIcon": "❌",
306
- "translationLoadWarning": "Advertencia: No se pudieron cargar traducciones {lang}",
306
+ "translationLoadWarning": "Advertencia: No se pudo cargar {lang} traducciones",
307
307
  "configReadError": "Error al leer {file}"
308
308
  },
309
309
  "analyze": {
310
- "help_message": "Analizador de Traducciones I18n Uso: node i18ntk-analyze.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-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./analysis --output-report",
311
- "source_directory": "📁 Directorio fuente: {sourceDir}",
312
- "i18n_directory": "🌐 Directorio i18n: {i18nDir}",
310
+ "help_message": "Uso del analizador de traducción I18n: nodo i18ntk-analyze.js [opciones] Opciones: --source-dir <dir> Directorio de origen para 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: nodo i18ntk-analyze.js --output-report nodo i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales nodo i18ntk-analyze.js --output-dir=./analysis --output-report",
311
+ "source_directory": "📁 Directorio de fuentes: {sourceDir}",
312
+ "i18n_directory": "🌐 Directorio I18n: {i18nDir}",
313
313
  "loading_translation_files": "📋 Cargando archivos de traducción...",
314
- "sourceDirectoryLabel": "📁 Directorio Fuente: {sourceDir}",
315
- "sourceLanguageLabel": "🌍 Idioma Fuente: {sourceLanguage}",
316
- "strictModeLabel": "⚙️ Modo Estricto: {mode}",
317
- "found_translation_files_count": "✅ Encontrados {count} archivos de traducción",
318
- "analyzing_translations": "🔍 Analizando traducciones...",
319
- "analysis_completed_successfully": "🎉 ¡Análisis completado exitosamente!",
314
+ "sourceDirectoryLabel": "📁 Directorio de fuentes: {sourceDir}",
315
+ "sourceLanguageLabel": "🌍 Idioma de origen: {sourceLanguage}",
316
+ "strictModeLabel": "⚙️ Modo estricto: {mode}",
317
+ "found_translation_files_count": "✅ Encontrado {count} archivos de traducción",
318
+ "analyzing_translations": "🔍Analizando traducciones...",
319
+ "analysis_completed_successfully": "🎉 ¡Análisis completado con éxito!",
320
320
  "analysis_results": "📊 RESULTADOS DEL ANÁLISIS",
321
321
  "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% traducido)",
322
- "sample_missing_keys": "Ejemplo de claves faltantes:",
322
+ "sample_missing_keys": "Ejemplos de claves faltantes:",
323
323
  "missing_key": "- {key}",
324
324
  "and_more_missing": "...y {count} más.",
325
- "sample_unused_keys": "Ejemplo de claves no utilizadas:",
325
+ "sample_unused_keys": "Ejemplos de claves no utilizadas:",
326
326
  "unused_key": "- {key}",
327
327
  "and_more_unused": "...y {count} más.",
328
328
  "recommendations": "📋 RECOMENDACIONES",
329
- "add_missing_translations": "💡 Agrega traducciones faltantes para mejorar la cobertura.",
330
- "remove_unused_translations": "💡 Elimina traducciones no utilizadas para mantener tu proyecto limpio.",
331
- "next_steps": "📋 SIGUIENTES PASOS",
332
- "review_analysis_results": "1. Revisa los resultados del análisis en la consola o en el informe generado.",
333
- "run_with_output_report": "2. Ejecuta con --output-report para un informe detallado.",
334
- "add_or_remove_translations": "3. Agrega traducciones faltantes o elimina las no utilizadas.",
335
- "rerun_analysis": "4. Vuelve a ejecutar el análisis para verificar las mejoras.",
329
+ "add_missing_translations": "💡 Agregue traducciones faltantes para mejorar la cobertura.",
330
+ "remove_unused_translations": "💡 Elimina las traducciones no utilizadas para mantener limpio tu proyecto.",
331
+ "next_steps": "📋 PRÓXIMOS PASOS",
332
+ "review_analysis_results": "1. Revise los resultados del análisis en la consola o en el informe generado.",
333
+ "run_with_output_report": "2. Ejecute con --output-report para obtener un informe detallado.",
334
+ "add_or_remove_translations": "3. Agregue las traducciones que faltan o elimine las que no se utilicen.",
335
+ "rerun_analysis": "4. Vuelva a ejecutar el análisis para verificar las mejoras.",
336
336
  "analysis_summary": "📊 RESUMEN DEL ANÁLISIS",
337
337
  "source_files_scanned": "Archivos fuente escaneados: {fileCount}",
338
- "translation_files_checked": "Archivos de traducción verificados: {translationFileCount}",
339
- "total_keys": "Total de claves: {totalKeys}",
338
+ "translation_files_checked": "Archivos de traducción comprobados: {translationFileCount}",
339
+ "total_keys": "Claves totales: {totalKeys}",
340
340
  "translated_keys": "Claves traducidas: {translatedKeys}",
341
- "missing_keys": "Claves faltantes: {missingKeys}",
341
+ "missing_keys": "Teclas faltantes: {missingKeys}",
342
342
  "unused_keys": "Claves no utilizadas: {unusedKeys}",
343
343
  "translation_coverage": "Cobertura de traducción: {coverage}%",
344
344
  "analysis_passed_for_language": "✅ Análisis aprobado para {language}",
345
- "analysis_failed_for_language": "❌ Análisis fallido para {language} ({missingKeys} faltantes, {unusedKeys} no utilizadas)",
345
+ "analysis_failed_for_language": "❌ El análisis falló para {language} ({missingKeys} desaparecido, {unusedKeys} no usado)",
346
346
  "starting": "🔍 Iniciando análisis de traducción...",
347
- "foundLanguages": "📋 Encontrados {count} idiomas para analizar: {languages}",
347
+ "foundLanguages": "📋 Encontrado {count} Idiomas a analizar: {languages}",
348
348
  "analyzing": "🔄 Analizando {language}...",
349
349
  "reportTitle": "📊 INFORME DE ANÁLISIS DE TRADUCCIÓN",
350
350
  "generated": "Generado: {timestamp}",
351
- "status": "Estado: {translated}/{total} claves ({percentage}% traducido)",
351
+ "status": "Estado: {translated}/{total} llaves ({percentage}% traducido)",
352
352
  "filesAnalyzed": "Archivos analizados: {analyzed}/{total}",
353
353
  "keysNeedingTranslation": "Claves que necesitan traducción: {count}",
354
354
  "fileBreakdown": "📋 DESGLOSE DE ARCHIVOS",
@@ -357,287 +357,287 @@
357
357
  "progress": "📊 Progreso general: {translated}/{total} idiomas procesados",
358
358
  "reportSaved": "Informe guardado: {reportPath}",
359
359
  "summary": "📊 RESUMEN DEL ANÁLISIS",
360
- "finished": "✅ ¡Análisis completado exitosamente!",
361
- "statusFileMissing": "❌ Archivo de traducción faltante",
362
- "sourceKeys": "📊 Claves fuente: {count}",
360
+ "finished": "✅ ¡Análisis completado con éxito!",
361
+ "statusFileMissing": "❌ Falta el archivo de traducción",
362
+ "sourceKeys": "📊 Claves de origen: {count}",
363
363
  "translation": "📊 Traducción: {translated}/{total} ({percentage}%)",
364
- "structure": "🗂️ Estructura: {status}",
365
- "consistent": "Consistente",
364
+ "structure": "🗂️ Estructura: {status}",
365
+ "consistent": "Coherente",
366
366
  "inconsistent": "Inconsistente",
367
- "missingKeys": "Claves faltantes: {count}",
368
- "extraKeys": "Claves extra: {count}",
369
- "issues": "⚠️ Problemas encontrados: {count}",
367
+ "missingKeys": "Teclas faltantes: {count}",
368
+ "extraKeys": "Claves adicionales: {count}",
369
+ "issues": "⚠️ Problemas encontrados: {count}",
370
370
  "issueType": {
371
371
  "not_translated": "No traducido: {count}",
372
372
  "empty_value": "Valores vacíos: {count}",
373
373
  "partial_translation": "Traducciones parciales: {count}",
374
- "format_mismatch": "Desajustes de formato: {count}",
375
- "type_mismatch": "Desajustes de tipo: {count}",
376
- "structure_mismatch": "Desajustes de estructura: {count}",
374
+ "format_mismatch": "El formato no coincide: {count}",
375
+ "type_mismatch": "Los tipos no coinciden: {count}",
376
+ "structure_mismatch": "Desajustes estructurales: {count}",
377
377
  "same_as_source": "Igual que la fuente: {count}"
378
378
  },
379
379
  "keysToTranslate": "📋 CLAVES PARA TRADUCIR",
380
- "key": "Clave",
380
+ "key": "Llave",
381
381
  "english": "Inglés",
382
382
  "needsTranslation": "NECESITA TRADUCCIÓN",
383
- "andMoreKeys": "...y {count} claves más.",
384
- "noLanguages": "⚠️ No se encontraron idiomas objetivo.",
385
- "languageStats": "{language}: {percentage}% completo ({translated}/{total} claves)",
386
- "invalidReportFilePath": "Ruta de archivo de informe inválida",
387
- "failedToWriteReportFile": "Error al escribir el archivo de informe de forma segura"
383
+ "andMoreKeys": "...y {count} más llaves.",
384
+ "noLanguages": "⚠️ No se encontraron idiomas de destino.",
385
+ "languageStats": "{language}: {percentage}% completo ({translated}/{total} llaves)",
386
+ "invalidReportFilePath": "Ruta de archivo de informe no válida",
387
+ "failedToWriteReportFile": "No se pudo escribir el archivo del informe de forma segura"
388
388
  },
389
389
  "complete": {
390
390
  "configLoadedSuccessfully": "Configuración cargada exitosamente",
391
- "configLoadingFailed": "Falló la carga de la configuración",
392
- "sourceLanguageNotFound": "No se encontró el directorio del idioma fuente: {sourceLanguage}",
393
- "couldNotParseTarget": "No se pudo analizar el archivo objetivo: {file}",
391
+ "configLoadingFailed": "Error al cargar la configuración",
392
+ "sourceLanguageNotFound": "Directorio del idioma de origen no encontrado: {sourceLanguage}",
393
+ "couldNotParseTarget": "No se pudo analizar el archivo de destino: {file}",
394
394
  "couldNotParseSource": "No se pudo analizar el archivo fuente: {file}",
395
395
  "reportGenerated": "Informe generado: {path}",
396
- "generateReportPrompt": "¿Deseas generar un informe?",
397
- "title": "🌍 COMPLETADO DE TRADUCCIÓN I18NTK",
398
- "separator": "============================================================",
399
- "sourceDir": "📁 Directorio fuente: {sourceDir}",
400
- "sourceLanguage": "🌐 Idioma fuente: {sourceLanguage}",
401
- "dryRunMode": "🧪 Modo de prueba - no se realizarán cambios",
396
+ "generateReportPrompt": "¿Le gustaría generar un informe?",
397
+ "title": "🌍 TERMINACIÓN DE LA TRADUCCIÓN I18NTK",
398
+ "separator": "===============================================================",
399
+ "sourceDir": "📁 Directorio de fuentes: {sourceDir}",
400
+ "sourceLanguage": "🌐 Idioma de origen: {sourceLanguage}",
401
+ "dryRunMode": "🧪 Modo de ejecución en seco: no se realizarán cambios",
402
402
  "languages": "🌍 Idiomas disponibles: {languages}",
403
- "addingMissingKeys": "➕ Agregando claves faltantes a los archivos de traducción...",
404
- "processing": "🔄 Procesando {language}...",
405
- "addedKeys": "✅ Se agregaron {count} claves faltantes",
403
+ "addingMissingKeys": "➕ Agregar claves faltantes a los archivos de traducción...",
404
+ "processing": "🔄 Procesamiento {language}...",
405
+ "addedKeys": "✅ Agregado {count} llaves faltantes",
406
406
  "noChangesNeeded": "✅ No se necesitan cambios para {language}",
407
- "summaryTitle": "📊 RESUMEN DE COMPLETADO",
407
+ "summaryTitle": "📊 RESUMEN DE FINALIZACIÓN",
408
408
  "totalChanges": "📝 Cambios totales: {totalChanges}",
409
409
  "languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
410
- "missingKeysAdded": "➕ Claves faltantes agregadas: {missingKeysAdded}",
411
- "nextStepsTitle": "📋 SIGUIENTES PASOS",
412
- "nextStep1": "1. Ejecutar análisis de uso:",
413
- "nextStep2": "node i18ntk-usage.js --output-report",
410
+ "missingKeysAdded": "➕ Se agregaron claves faltantes: {missingKeysAdded}",
411
+ "nextStepsTitle": "📋 PRÓXIMOS PASOS",
412
+ "nextStep1": "1. Ejecute el análisis de uso:",
413
+ "nextStep2": "nodo i18ntk-usage.js --informe de salida",
414
414
  "nextStep3": "2. Validar traducciones:",
415
- "nextStep4": "node i18ntk-validate.js",
415
+ "nextStep4": "nodo i18ntk-validate.js",
416
416
  "nextStep5": "3. Analizar patrones:",
417
- "nextStep6": "node i18ntk-analyze.js",
418
- "allKeysAvailable": "🎉 ¡Todas las claves de traducción están ahora disponibles!",
419
- "runWithoutDryRun": "💡 Ejecutar sin --dry-run para aplicar cambios",
417
+ "nextStep6": "nodo i18ntk-analyze.js",
418
+ "allKeysAvailable": "🎉 ¡Todas las claves de traducción ya están disponibles!",
419
+ "runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
420
420
  "deletingOldReport": "🗑️ Eliminando informe antiguo...",
421
- "generatingFreshAnalysis": "📊 Generando nuevo análisis de uso...",
421
+ "generatingFreshAnalysis": "📊 Generando nuevos análisis de uso...",
422
422
  "couldNotGenerate": "❌ No se pudo generar el análisis de uso",
423
423
  "reportNotFound": "📋 Informe de uso no encontrado. Usando claves comunes...",
424
- "foundMissingKeys": "📋 Se encontraron {count} claves faltantes del análisis de uso",
424
+ "foundMissingKeys": "📋 Encontrado {count} claves faltantes en el análisis de uso",
425
425
  "couldNotParse": "❌ No se pudo analizar el informe de uso. Usando claves comunes...",
426
- "errorDuringCompletion": "❌ Error durante la completación: {error}",
426
+ "errorDuringCompletion": "❌ Error durante la finalización: {error}",
427
427
  "fatalError": "❌ Error fatal: {error}",
428
- "configurationValidationFailed": "Falló la validación de configuración: faltan campos requeridos"
428
+ "configurationValidationFailed": "Falló la validación de la configuración: faltan campos obligatorios"
429
429
  },
430
430
  "sizing": {
431
- "separator": "================================================================================",
431
+ "separator": "====================================================================================",
432
432
  "lineSeparator": "--------------------------------------------------------------------------------",
433
433
  "analysisStats": "{stats}",
434
- "sourceDirectoryLabel": "📁 Directorio fuente: {sourceDir}",
435
- "sourceLanguageLabel": "🌍 Idioma fuente: {sourceLanguage}",
434
+ "sourceDirectoryLabel": "📁 Directorio de fuentes: {sourceDir}",
435
+ "sourceLanguageLabel": "🌍 Idioma de origen: {sourceLanguage}",
436
436
  "strictModeLabel": "⚙️ Modo estricto: {mode}",
437
- "invalidSourceDirectoryError": "Ruta de directorio fuente inválida: {sourceDir}",
437
+ "invalidSourceDirectoryError": "Ruta del directorio de origen no válida: {sourceDir}",
438
438
  "sourceDirectoryNotFoundError": "Directorio fuente no encontrado: {sourceDir}",
439
- "invalidOutputDirectoryError": "Ruta de directorio de salida inválida: {outputDir}",
440
- "invalidReportFileError": "Ruta de archivo de informe inválida",
439
+ "invalidOutputDirectoryError": "Ruta del directorio de salida no válida: {outputDir}",
440
+ "invalidReportFileError": "Ruta de archivo de informe no válida",
441
441
  "problematic_keys": "Claves problemáticas: {problematicKeys}",
442
442
  "problematicKeysLabel": "Claves problemáticas: {problematicKeys}",
443
443
  "long_translations": "Traducciones largas: {longTranslations}",
444
- "failedToSaveReportError": "Error al guardar el informe de forma segura",
445
- "invalidCsvFileError": "Ruta de archivo CSV inválida",
446
- "failedToSaveCsvError": "Error al guardar el informe CSV de forma segura",
447
- "fatalError": "❌ Error fatal: {error}",
448
- "starting_i18n_sizing_analysis": "Iniciando análisis de tamaño i18n...",
449
- "source_directory": "Directorio fuente: {sourceDir}",
444
+ "failedToSaveReportError": "No se pudo guardar el informe de forma segura",
445
+ "invalidCsvFileError": "Ruta del archivo CSV no válida",
446
+ "failedToSaveCsvError": "No se pudo guardar el informe CSV de forma segura",
447
+ "fatalError": "❌ Error en el análisis de tallas: {error}",
448
+ "starting_i18n_sizing_analysis": "Iniciando análisis de tamaño de i18n...",
449
+ "source_directory": "Directorio de origen: {sourceDir}",
450
450
  "found_languages": "Idiomas encontrados: {languages}",
451
- "analyzing_file_sizes": "Analizando tamaños de archivo...",
452
- "analyzing_translation_content": "Analizando contenido de traducción...",
451
+ "analyzing_file_sizes": "Analizando tamaños de archivos...",
452
+ "analyzing_translation_content": "Analizando el contenido de la traducción...",
453
453
  "generating_size_comparisons": "Generando comparaciones de tamaño...",
454
- "no_languages_found_for_comparison": "No se encontraron idiomas para comparación",
455
- "sizing_analysis_results": "Resultados del análisis de tamaño i18n",
454
+ "no_languages_found_for_comparison": "No se encontraron idiomas para comparar",
455
+ "sizing_analysis_results": "Resultados del análisis de tamaño del I18n",
456
456
  "file_sizes_title": "Tamaños de archivo",
457
- "file_sizes_header": "Idioma Tamaño(KB) Líneas Caracteres",
458
- "file_size_row": "{lang} {sizeKB} {lines} {characters}",
459
- "language_statistics_title": "Estadísticas de idioma",
460
- "language_stats_header": "Idioma Claves Caracteres Longitud Promedio Longitud Máxima Vacías Largas",
461
- "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
457
+ "file_sizes_header": "Idioma Tamaño (KB) Líneas Caracteres",
458
+ "file_size_row": "{lang} {sizeKB} {lines} {characters}",
459
+ "language_statistics_title": "Estadísticas de idiomas",
460
+ "language_stats_header": "Idioma Teclas Caracteres Longitud promedio Longitud máxima Vacío Largo",
461
+ "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
462
462
  "size_variations_title": "Variaciones de tamaño",
463
- "size_variations_header": "Idioma Char Diff % Diff Problematic",
464
- "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
463
+ "size_variations_header": "Idioma Char Diff % Diff Problema",
464
+ "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
465
465
  "problematic_yes": "Sí",
466
466
  "problematic_no": "No",
467
- "recommendations_title": "Recommendaciones",
467
+ "recommendations_title": "Recomendaciones",
468
468
  "recommendation_item": "{index}. {recommendation}",
469
- "problematic_key_detail": "{index}. Clave: '{key}' - Variaciones: {variations}",
469
+ "problematic_key_detail": "{index}. Llave: '{key}' - Variaciones: {variations}",
470
470
  "generating_detailed_report": "Generando informe detallado...",
471
- "keysHaveSignificantSizeVariations": "las claves tienen variaciones significativas de tamaño",
472
- "longTranslationsDetected": "${lang} tiene ${data.longKeys} traducciones más largas que 100 caracteres - considere dividirlas",
473
- "longer": "más largo",
471
+ "keysHaveSignificantSizeVariations": "Las claves tienen variaciones significativas de tamaño.",
472
+ "longTranslationsDetected": "${lang} tiene traducciones ${data.longKeys} de más de 100 caracteres; considere dividirlas",
473
+ "longer": "más extenso",
474
474
  "shorter": "más corto",
475
- "review_translations": "Considere revisar las traducciones de {lang} - son {percentageDifference}% {comparison} que la línea base",
475
+ "review_translations": "Considere revisar {lang} traducciones - son {percentageDifference}% {comparison} que la línea de base",
476
476
  "report_saved_to": "Informe guardado en: {reportPath}",
477
- "considerReviewingTranslations": "Considere revisar las traducciones de ${lang} - son ${data.percentageDifference}% más largas que la línea base",
477
+ "considerReviewingTranslations": "Considere revisar ${lang} traducciones: son ${data.percentageDifference}% más largas que el valor inicial",
478
478
  "csv_report_saved_to": "Informe CSV guardado en: {csvPath}",
479
- "human_report_saved": "Informe legible guardado en: {reportPath}",
480
- "folder_summary_title": "Resumen de Carpeta",
481
- "folder_summary_table_header": "Idioma Tamaño(KB) Claves Long. Promedio Caracteres Totales",
482
- "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
483
- "language_comparison_title": "Comparación de Idiomas",
479
+ "human_report_saved": "Informe legible guardado: {reportPath}",
480
+ "folder_summary_title": "Resumen de carpeta",
481
+ "folder_summary_table_header": "Idioma Tamaño (KB) Claves Longitud promedio Caracteres totales",
482
+ "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
483
+ "language_comparison_title": "Comparación de idiomas",
484
484
  "language_comparison_row": "{lang}: {diff} caracteres ({percent}%) {status}",
485
485
  "summary_stats": "📊 Resumen: {totalLanguages} idiomas, {totalKeys} claves - Informes guardados en {reportPath}",
486
- "detailedKeysDescription": "Mostrar análisis detallado de claves en consola",
487
- "too_many_keys_warning": "⚠️ Demasiadas claves para mostrar en consola - revise el archivo de informe detallado para análisis completo",
486
+ "detailedKeysDescription": "Mostrar análisis detallado a nivel de clave en la consola",
487
+ "too_many_keys_warning": "⚠️ Demasiadas claves para mostrar en la consola: consulte el archivo del informe detallado para obtener un análisis completo",
488
488
  "no_translation_files_found": "No se encontraron archivos de traducción",
489
- "analysis_completed": "Análisis completado en {duration}ms",
490
- "analysis_failed": "Análisis fallido: {errorMessage}",
489
+ "analysis_completed": "Análisis completado en {duration}EM",
490
+ "analysis_failed": "El análisis falló: {errorMessage}",
491
491
  "starting_analysis": "Iniciando análisis...",
492
- "found_files": "Encontrados {count} archivos",
493
- "failed_to_parse_language_error": "Error al analizar traducciones de {language}: {errorMessage}",
492
+ "found_files": "Encontró {count} archivos",
493
+ "failed_to_parse_language_error": "No se pudo analizar {language} traducciones: {errorMessage}",
494
494
  "recommendations": {
495
- "keys_have_significant_size_variations": "las claves tienen variaciones significativas de tamaño",
496
- "consider_reviewing_translations": "Considere revisar las traducciones de {lang} - son {percentageDifference}% {comparison} que la línea base",
497
- "long_translations_detected": "{lang} tiene {longKeys} traducciones más largas que {threshold} caracteres - considere dividirlas"
495
+ "keys_have_significant_size_variations": "Las claves tienen variaciones significativas de tamaño.",
496
+ "consider_reviewing_translations": "Considere revisar {lang} traducciones - son {percentageDifference}% {comparison} que la línea de base",
497
+ "long_translations_detected": "{lang} tiene {longKeys} traducciones más largo que {threshold} personajes: considere dividirlos"
498
498
  },
499
499
  "detailed_key_analysis_title": "Análisis clave detallado",
500
500
  "key_analysis_detail": "{lang}: {length} caracteres ({status}) - {translation}",
501
- "key_analysis_header": "Clave: {key}",
501
+ "key_analysis_header": "Llave: {key}",
502
502
  "status_empty": "vacío",
503
503
  "status_long": "largo",
504
504
  "status_ok": "OK"
505
505
  },
506
506
  "usage": {
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",
508
- "source_directory_thissourcedir": "📁 Directorio fuente: {sourceDir}",
509
- "translationCompletenessTitle": "🌍 Completitud de Traducción:",
510
- "i18n_directory_thisi18ndir": "🌐 Directorio i18n: {i18nDir}",
511
- "failed_to_parse_filename_error": "⚠️ Error al analizar {fileName}: {errorMessage}",
507
+ "help_message": "Uso del analizador de uso I18n: nodo i18ntk-usage.js [opciones] Opciones: --source-dir <dir> Directorio de origen para 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: nodo i18ntk-usage.js --output-report nodo i18ntk-usage.js --source-dir=./app --i18n-dir=./locales nodo i18ntk-usage.js --output-dir=./analysis --output-report",
508
+ "source_directory_thissourcedir": "📁 Directorio de fuentes: {sourceDir}",
509
+ "translationCompletenessTitle": "🌍 Integridad de la traducción:",
510
+ "i18n_directory_thisi18ndir": "🌐 Directorio I18n: {i18nDir}",
511
+ "failed_to_parse_filename_error": "⚠️ No se pudo analizar {fileName}: {errorMessage}",
512
512
  "analyzing_source_files": "🔍 Analizando archivos fuente...",
513
- "found_files_in_source": "📂 Encontrados {numFiles} archivos en el directorio fuente",
514
- "found_thisusedkeyssize_unique_": "🎯 Encontradas {usedKeysSize} claves únicas usadas",
515
- "total_key_usages_totalkeysfoun": "📊 Total de usos de claves: {totalKeysFound}",
513
+ "found_files_in_source": "📂 Encontrado {numFiles} archivos en el directorio fuente",
514
+ "found_thisusedkeyssize_unique_": "🎯 Encontrado {usedKeysSize} llaves usadas únicas",
515
+ "total_key_usages_totalkeysfoun": "📊 Usos totales de claves: {totalKeysFound}",
516
516
  "loading_available_translation_": "📋 Cargando claves de traducción disponibles...",
517
- "found_thisavailablekeyssize_av": "✅ Encontradas {availableKeysSize} claves disponibles",
518
- "foundTranslationFiles": "✅ Encontrados {count} archivos de traducción",
519
- "errorReadingI18nDirectory": "⚠️ Error al leer directorio i18n: {error}",
520
- "pressEnterToReturnToMenu": "📝 Presiona Enter para volver al menú principal...",
517
+ "found_thisavailablekeyssize_av": "✅ Encontrado {availableKeysSize} llaves disponibles",
518
+ "foundTranslationFiles": "✅ Encontrado {count} archivos de traducción",
519
+ "errorReadingI18nDirectory": "⚠️ Error al leer el directorio i18n: {error}",
520
+ "pressEnterToReturnToMenu": "📝 Pulsa Enter para volver al menú principal...",
521
521
  "notTranslatedKeysTotal": "⚠️ Claves no traducidas: {total}",
522
522
  "noSourceFilesFound": "⚠️ No se encontraron archivos fuente en el directorio fuente.",
523
- "reviewNotTranslatedKeys": "💡 Revisar claves no traducidas",
524
- "analysisCompletedSuccessfully": "🎉 ¡Análisis completado exitosamente!",
525
- "detectedSourceDirectory": "Directorio fuente detectado: {sourceDir}",
523
+ "reviewNotTranslatedKeys": "💡 Reseña de claves no traducidas",
524
+ "analysisCompletedSuccessfully": "🎉 ¡Análisis completado con éxito!",
525
+ "detectedSourceDirectory": "Directorio de origen detectado: {sourceDir}",
526
526
  "detectedI18nDirectory": "Directorio i18n detectado: {i18nDir}",
527
- "fileInfo": "📄 {namespace}: {keys} claves",
528
- "failedToAnalyzeUsage": "❌ Error al analizar uso: {error}",
529
- "failedToAnalyzeFile": "❌ Error al analizar archivo: {error}",
530
- "failedToExtractKeys": "❌ Error al extraer claves de {filePath}: {error}",
531
- "analysisFailedError": "❌ Error de análisis: {error}",
527
+ "fileInfo": "📄 {namespace}: {keys} llaves",
528
+ "failedToAnalyzeUsage": "❌ No se pudo analizar el uso: {error}",
529
+ "failedToAnalyzeFile": "❌ No se pudo analizar el archivo: {error}",
530
+ "failedToExtractKeys": "❌ No se pudieron extraer las claves de {filePath}: {error}",
531
+ "analysisFailedError": "❌ El análisis falló: {error}",
532
532
  "analyzerInitialized": "Analizador inicializado",
533
- "analyzerInitFailed": "Error al inicializar analizador: {error}",
533
+ "analyzerInitFailed": "La inicialización del analizador falló: {error}",
534
534
  "argsParsed": "Argumentos analizados",
535
- "processedFiles": "Procesados {processedFiles} de {totalFiles} archivos.",
536
- "argsParseFailed": "Error al analizar argumentos: {error}",
537
- "translationDiscoveryError": "Error al descubrir traducción: {error}",
538
- "fileTraversalError": "Error al recorrer archivo: {error}",
539
- "sourceEqualsI18nWarn": "⚠️ El directorio fuente y el directorio i18n son el mismo. Esto puede causar problemas con el análisis.",
540
- "i18nEqualsSourceWarn": "⚠️ El directorio i18n y el directorio fuente son el mismo. Esto puede causar problemas con el análisis.",
535
+ "processedFiles": "Procesado {processedFiles} de {totalFiles} archivos.",
536
+ "argsParseFailed": "Error al analizar el argumento: {error}",
537
+ "translationDiscoveryError": "Error de descubrimiento de traducción: {error}",
538
+ "fileTraversalError": "Error de recorrido de archivo: {error}",
539
+ "sourceEqualsI18nWarn": "⚠️ El directorio fuente y el directorio i18n son los mismos. Esto puede causar problemas con el análisis.",
540
+ "i18nEqualsSourceWarn": "⚠️ El directorio I18n y el directorio fuente son los mismos. Esto puede causar problemas con el análisis.",
541
541
  "usageAnalysisFailed": "⚠️ Error en el análisis de uso: {error}",
542
- "translationFileParseError": "⚠️ Error al analizar archivo de traducción: {error}",
543
- "translationKeysLoadError": "⚠️ Error al cargar claves de traducción: {error}",
542
+ "translationFileParseError": "⚠️ Error de análisis del archivo de traducción: {error}",
543
+ "translationKeysLoadError": "⚠️ Error al cargar las claves de traducción: {error}",
544
544
  "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% traducido)",
545
- "missingKeysCount": "⚠️ Claves faltantes: {count}",
546
- "analyzingTranslationCompleteness": "Analizando completitud de traducción...",
547
- "unusedKeysCount": "Claves no usadas: {count}",
548
- "usedKeysCount": "Claves usadas: {count}",
545
+ "missingKeysCount": "⚠️ Teclas faltantes: {count}",
546
+ "analyzingTranslationCompleteness": "Analizando la integridad de la traducción...",
547
+ "unusedKeysCount": "Claves no utilizadas: {count}",
548
+ "usedKeysCount": "Llaves usadas: {count}",
549
549
  "availableKeysCount": "Claves disponibles: {count}",
550
550
  "analysisResults": "Resultados del análisis:",
551
- "i18nDirectoryNotFound": "⚠️ Directorio i18n no encontrado. Por favor verifica la ruta.",
551
+ "i18nDirectoryNotFound": "⚠️ No se encontró el directorio I18n. Por favor revisa la ruta.",
552
552
  "sourceDirectoryNotFound": "⚠️ Directorio fuente no encontrado: {dir}",
553
553
  "checkUsage": {
554
- "title": "?? AN?LISIS DE USO DE I18NTK",
554
+ "title": "🔍 ANÁLISIS DE USO DE I18NTK",
555
555
  "analyzing_source_files": "🔍 Analizando archivos fuente...",
556
- "source_directory_thissourcedir": "📁 Directorio fuente: {sourceDir}",
557
- "i18n_directory_thisi18ndir": "📁 Directorio i18n: {i18nDir}",
558
- "found_files_in_source": "✅ Encontrados {numFiles} archivos en el directorio fuente",
559
- "no_source_files_found": "⚠️ No se encontraron archivos fuente en el directorio fuente",
560
- "processedFiles": "📊 Procesados {processedFiles} de {totalFiles} archivos",
561
- "failedToProcessFile": "❌ Error al procesar archivo",
562
- "found_thisusedkeyssize_unique_": "🔍 Encontradas {usedKeysSize} claves únicas usadas",
563
- "total_key_usages_totalkeysfoun": "📊 Total de usos de claves: {totalKeysFound}",
556
+ "source_directory_thissourcedir": "📁 Directorio de fuentes: {sourceDir}",
557
+ "i18n_directory_thisi18ndir": "📁 directorio i18n: {i18nDir}",
558
+ "found_files_in_source": "✅ Encontrado {numFiles} archivos en el directorio fuente",
559
+ "no_source_files_found": "⚠️ No se encontraron archivos fuente en el directorio especificado",
560
+ "processedFiles": "📊 Procesado {processedFiles} de {totalFiles} archivos",
561
+ "failedToProcessFile": "❌ No se pudo procesar",
562
+ "found_thisusedkeyssize_unique_": "🔍 Encontrado {usedKeysSize} llaves usadas únicas",
563
+ "total_key_usages_totalkeysfoun": "📊 Usos totales de claves: {totalKeysFound}",
564
564
  "loading_available_translation_": "📂 Cargando claves de traducción disponibles...",
565
- "found_thisavailablekeyssize_av": "✅ Encontradas {availableKeysSize} claves disponibles",
566
- "message": "Analizando uso de claves de traducción en tu proyecto...",
565
+ "found_thisavailablekeyssize_av": "✅ Encontrado {availableKeysSize} llaves disponibles",
566
+ "message": "Analizando el uso de claves de traducción en todo su proyecto...",
567
567
  "usage_analysis_results": "📊 RESULTADOS DEL ANÁLISIS DE USO",
568
568
  "source_files_scanned_thisfileu": "📁 Archivos fuente escaneados: {fileUsageSize}",
569
569
  "available_translation_keys_thi": "✅ Claves de traducción disponibles: {availableKeysSize}",
570
- "used_translation_keys_thisused": "🔍 Claves de traducción usadas: {usedKeysSize}",
571
- "dynamic_keys_detected_dynamick": "⚡ Claves dinámicas detectadas: {dynamicKeysLength}",
572
- "unused_keys_unusedkeyslength": "🗑️ Claves no usadas: {unusedKeysLength}",
573
- "missing_keys_missingkeyslength": "❌ Claves faltantes: {missingKeysLength}",
574
- "translation_completeness_title": "📈 COMPLETENESS OF TRANSLATION",
575
- "language_completeness_stats": "{language}: {translated}/{total} ({completeness}% traducido)",
576
- "n_sample_unused_keys": "🗑️ EJEMPLO DE CLAVES NO UTILIZADAS (primeras 5):",
570
+ "used_translation_keys_thisused": "🔍 Claves de traducción utilizadas: {usedKeysSize}",
571
+ "dynamic_keys_detected_dynamick": "⚡ Teclas dinámicas detectadas: {dynamicKeysLength}",
572
+ "unused_keys_unusedkeyslength": "🗑️ Claves no utilizadas: {unusedKeysLength}",
573
+ "missing_keys_missingkeyslength": "❌ Teclas faltantes: {missingKeysLength}",
574
+ "translation_completeness_title": "📈 INTEGRIDAD DE LA TRADUCCIÓN",
575
+ "language_completeness_stats": "{language}: {translated}/{total} llaves ({percentage}%)",
576
+ "n_sample_unused_keys": "🗑️ MUESTRAS DE LLAVES NO UTILIZADAS (primeras 5):",
577
577
  "key": "🔑 {key}",
578
- "and_unusedkeyslength_5_more": "... y {count} claves no utilizadas más",
579
- "n_sample_missing_keys": "❌ EJEMPLO DE CLAVES FALTANTES (primeras 5):",
580
- "and_missingkeyslength_5_more": "... y {count} claves faltantes más",
578
+ "and_unusedkeyslength_5_more": "... y {count} más llaves sin usar",
579
+ "n_sample_missing_keys": "❌ MUESTRA DE TECLAS FALTANTES (primeras 5):",
580
+ "and_missingkeyslength_5_more": "... y {count} más llaves faltantes",
581
581
  "n_generating_detailed_report": "📊 Generando informe detallado...",
582
582
  "report_saved_reportpath": "📄 Informe guardado: {reportPath}",
583
583
  "n_recommendations": "💡 RECOMENDACIONES:",
584
- "consider_removing_unused_trans": "🗑️ Considere eliminar las traducciones no utilizadas para reducir el tamaño del paquete",
585
- "add_missing_translation_keys_t": "➕ Agregue las claves de traducción faltantes para mantener la consistencia",
586
- "review_dynamic_keys_manually_t": "🔍 Revise manualmente las claves dinámicas (pueden ser válidas)",
584
+ "consider_removing_unused_trans": "🗑️ Considere eliminar las traducciones no utilizadas para reducir el tamaño del paquete",
585
+ "add_missing_translation_keys_t": "➕ Agregue las claves de traducción que faltan para mantener la coherencia",
586
+ "review_dynamic_keys_manually_t": "🔍 Revisar las claves dinámicas manualmente (pueden ser válidas)",
587
587
  "all_translation_keys_are_prope": "✅ ¡Todas las claves de traducción se utilizan correctamente!",
588
- "n_next_steps": "🎯 SIGUIENTES PASOS:",
589
- "2_check_the_detailed_report_fo": "2. Verifique el informe detallado para problemas específicos",
590
- "help_message": "Analizador de Uso i18ntk 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",
591
- "1_review_the_analysis_results": "1. Revise los resultados del análisis en la consola o informe generado.",
592
- "2_run_with_outputreport_for_de": "2. Ejecute con --output-report para informe detallado.",
593
- "3_remove_unused_keys_or_add_mi": "3. Elimine claves no utilizadas o agregue claves faltantes al código fuente.",
594
- "4_rerun_analysis_to_verify_imp": "4. Re-ejecute el análisis para verificar mejoras.",
588
+ "n_next_steps": "🎯 PRÓXIMOS PASOS:",
589
+ "2_check_the_detailed_report_fo": "2. Consulte el informe detallado para conocer problemas específicos.",
590
+ "help_message": "Uso del analizador de uso I18n: nodo i18ntk-usage.js [opciones] Opciones: --source-dir <dir> Directorio de origen para 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: nodo i18ntk-usage.js --output-report nodo i18ntk-usage.js --source-dir=./app --i18n-dir=./locales nodo i18ntk-usage.js --output-dir=./analysis --output-report",
591
+ "1_review_the_analysis_results": "1. Revise los resultados del análisis en la consola o en el informe generado.",
592
+ "2_run_with_outputreport_for_de": "2. Ejecute con --output-report para obtener un informe detallado.",
593
+ "3_remove_unused_keys_or_add_mi": "3. Elimine las claves no utilizadas o agregue las claves que faltan a su código fuente.",
594
+ "4_rerun_analysis_to_verify_imp": "4. Vuelva a ejecutar el análisis para verificar las mejoras.",
595
595
  "noSourceFilesFound": "No se encontraron archivos fuente para analizar.",
596
- "i18nDirectoryNotFound": "No se encontró el directorio i18n: {i18nDir}",
596
+ "i18nDirectoryNotFound": "Directorio I18n no encontrado: {i18nDir}",
597
597
  "noTranslationLanguagesFound": "No se encontraron idiomas de traducción.",
598
- "failedToAnalyzeFile": "Error al analizar archivo {filePath}: {error}",
599
- "failedToAnalyzeLanguage": "Error al analizar el idioma {language}: {error}",
600
- "translationCompletenessAnalysisFailed": "El análisis de completitud de traducción falló: {error}",
601
- "n": "\\n"
598
+ "failedToAnalyzeFile": "No se pudo analizar el archivo {filePath}: {error}",
599
+ "failedToAnalyzeLanguage": "No se pudo analizar el idioma {language}: {error}",
600
+ "translationCompletenessAnalysisFailed": "El análisis de integridad de la traducción falló: {error}",
601
+ "n": "\\norte"
602
602
  },
603
603
  "complete": {
604
- "configLoadedSuccessfully": "Configuración cargada correctamente",
604
+ "configLoadedSuccessfully": "Configuración cargada exitosamente",
605
605
  "configLoadingFailed": "Error al cargar la configuración",
606
- "title": "🌍 COMPLETADO DE TRADUCCIÓN I18NTK",
607
- "separator": "============================================================",
608
- "sourceDir": "📁 Directorio fuente: {sourceDir}",
609
- "sourceLanguage": "🌐 Idioma fuente: {sourceLanguage}",
610
- "dryRunMode": "🧪 Modo de prueba - no se realizarán cambios",
606
+ "title": "🌍 TERMINACIÓN DE LA TRADUCCIÓN I18NTK",
607
+ "separator": "===============================================================",
608
+ "sourceDir": "📁 Directorio de fuentes: {sourceDir}",
609
+ "sourceLanguage": "🌐 Idioma de origen: {sourceLanguage}",
610
+ "dryRunMode": "🧪 Modo de ejecución en seco: no se realizarán cambios",
611
611
  "languages": "🌍 Idiomas disponibles: {languages}",
612
- "addingMissingKeys": "➕ Agregando claves faltantes a archivos de traducción...",
613
- "processing": "🔄 Procesando {language}...",
614
- "addedKeys": "✅ Se agregaron {count} claves faltantes",
612
+ "addingMissingKeys": "➕ Agregar claves faltantes a los archivos de traducción...",
613
+ "processing": "🔄 Procesamiento {language}...",
614
+ "addedKeys": "✅ Agregado {count} llaves faltantes",
615
615
  "changeDetails": "📝 {file}: {key}",
616
616
  "andMore": "...y {count} más",
617
617
  "noChangesNeeded": "✅ No se necesitan cambios para {language}",
618
- "summaryTitle": "📊 RESUMEN DE COMPLETADO",
618
+ "summaryTitle": "📊 RESUMEN DE FINALIZACIÓN",
619
619
  "totalChanges": "📝 Cambios totales: {totalChanges}",
620
620
  "languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
621
- "missingKeysAdded": "➕ Claves faltantes agregadas: {missingKeysAdded}",
622
- "nextStepsTitle": "📋 SIGUIENTES PASOS",
621
+ "missingKeysAdded": "➕ Se agregaron claves faltantes: {missingKeysAdded}",
622
+ "nextStepsTitle": "📋 PRÓXIMOS PASOS",
623
623
  "nextStep1": "1. Ejecute el análisis de uso:",
624
- "nextStep2": "node i18ntk-usage.js --output-report",
624
+ "nextStep2": "nodo i18ntk-usage.js --informe de salida",
625
625
  "nextStep3": "2. Validar traducciones:",
626
- "nextStep4": "node i18ntk-validate.js",
626
+ "nextStep4": "nodo i18ntk-validate.js",
627
627
  "nextStep5": "3. Analizar patrones:",
628
- "nextStep6": "node i18ntk-analyze.js",
629
- "allKeysAvailable": "🎉 ¡Todas las claves de traducción están disponibles!",
628
+ "nextStep6": "nodo i18ntk-analyze.js",
629
+ "allKeysAvailable": "🎉 ¡Todas las claves de traducción ya están disponibles!",
630
630
  "runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
631
- "deletingOldReport": "🗑️ Eliminando informe antiguo...",
632
- "generatingFreshAnalysis": "📊 Generando análisis de uso fresco...",
631
+ "deletingOldReport": "🗑️ Eliminando informe antiguo...",
632
+ "generatingFreshAnalysis": "📊 Generando nuevos análisis de uso...",
633
633
  "couldNotGenerate": "❌ No se pudo generar el análisis de uso",
634
634
  "reportNotFound": "📋 Informe de uso no encontrado. Usando claves comunes...",
635
- "foundMissingKeys": "📋 Encontradas {count} claves faltantes del análisis de uso",
635
+ "foundMissingKeys": "📋 Encontrado {count} claves faltantes en el análisis de uso",
636
636
  "couldNotParse": "❌ No se pudo analizar el informe de uso. Usando claves comunes..."
637
637
  },
638
- "noTranslationLanguagesFound": "No se encontraron idiomas de traducción.",
639
- "failedToAnalyzeLanguage": "Error al analizar el idioma {language}: {error}",
640
- "translationCompletenessAnalysisFailed": "El análisis de completitud de traducción falló: {error}",
638
+ "noTranslationLanguagesFound": "No se encontraron idiomas de traducción",
639
+ "failedToAnalyzeLanguage": "No se pudo analizar el idioma",
640
+ "translationCompletenessAnalysisFailed": "Error en el análisis de integridad de la traducción",
641
641
  "failedToProcessFile": "No se pudo procesar el archivo:",
642
642
  "failedToSaveReport": "No se pudo guardar el informe de uso: {error}",
643
643
  "i18nDirectoryDoesNotExist": "El directorio I18n no existe: {dir}",
@@ -645,571 +645,571 @@
645
645
  "sourceDirectoryDoesNotExist": "El directorio de origen no existe: {dir}"
646
646
  },
647
647
  "validate": {
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",
649
- "title": "🔍 Validador de Traducciones I18n",
648
+ "help_message": "Uso del validador de traducción I18n: nodo i18ntk-validate.js [opciones] Opciones: --source-dir <dir> Directorio de origen para 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: nodo i18ntk-validate.js --output-report nodo i18ntk-validate.js --source-dir=./app --i18n-dir=./locales nodo i18ntk-validate.js --output-dir=./analysis --output-report",
649
+ "title": "🔍 Validador de traducción I18n",
650
650
  "message": "Iniciando proceso de validación...",
651
- "sourceDirectory": "📁 Directorio fuente: {dir}",
652
- "sourceLanguage": "🌍 Idioma fuente: {sourceLanguage}",
653
- "strictMode": "⚙️ Modo estricto: {mode}",
654
- "noTargetLanguages": "No hay idiomas objetivo configurados; omitiendo validación de objetivos. Agregue idiomas mediante \"i18ntk init --languages=de,fr\".",
655
- "validatingLanguages": "🌍 Validando idiomas: {langs}",
656
- "validatingLanguage": "🔍 Validando idioma: {lang}",
651
+ "sourceDirectory": "📁 Directorio de fuentes: {dir}",
652
+ "sourceLanguage": "🌍 Idioma de origen: {sourceLanguage}",
653
+ "strictMode": "⚙️ Modo estricto: {mode}",
654
+ "noTargetLanguages": "No hay idiomas de destino configurados; omitiendo la validación del objetivo. Agregue idiomas a través de \"i18ntk init --languages=de,fr\".",
655
+ "validatingLanguages": "🌍 Idiomas de validación: {langs}",
656
+ "validatingLanguage": "🔍 Idioma de validación: {lang}",
657
657
  "filesCount": "📄 Archivos: {count}",
658
658
  "keysCount": "🔑 Claves: {count}",
659
659
  "missingFilesCount": "📁 Archivos faltantes: {count}",
660
660
  "syntaxErrorsCount": "❌ Errores de sintaxis: {count}",
661
- "translationPercentage": "🎯 Traducción: {percentage}% ({translated}/{total} claves)",
661
+ "translationPercentage": "🎯 Traducción: {percentage}% ({translated}/{total} llaves)",
662
662
  "validationSummary": "📊 RESUMEN DE VALIDACIÓN",
663
- "validation_failed": "❌ Validación fallida: {error}",
663
+ "validation_failed": "❌ La validación falló: {error}",
664
664
  "totalErrors": "❌ Errores totales: {count}",
665
- "totalWarnings": "⚠️ Advertencias totales: {count}",
665
+ "totalWarnings": "⚠️ Advertencias totales: {count}",
666
666
  "errorsSection": "❌ ERRORES",
667
- "warningsSection": "⚠️ ADVERTENCIAS",
667
+ "warningsSection": "⚠️ ADVERTENCIAS",
668
668
  "recommendationsSection": "💡 RECOMENDACIONES",
669
- "fixErrorsFirst": "1. Corregir todos los errores primero",
669
+ "fixErrorsFirst": "1. Primero solucione todos los errores",
670
670
  "resolveMissingFilesAndSyntaxErrors": "1. Resolver archivos faltantes y errores de sintaxis",
671
- "fixStructuralInconsistencies": "2. Corregir inconsistencias estructurales",
672
- "completeMissingTranslations": "3. Completar traducciones faltantes",
673
- "rerunValidation": "4. Volver a ejecutar validación para verificar correcciones",
674
- "addressWarnings": "Abordar advertencias para mejorar la calidad",
675
- "reviewWarnings": "Revisar advertencias y corregir donde sea apropiado",
676
- "considerRunningWithStrict": "2. Considerar ejecutar con bandera --strict para validación más estricta",
671
+ "fixStructuralInconsistencies": "2. Solucionar inconsistencias estructurales",
672
+ "completeMissingTranslations": "3. Completa las traducciones que faltan",
673
+ "rerunValidation": "4. Vuelva a ejecutar la validación para verificar las correcciones.",
674
+ "addressWarnings": "Abordar las advertencias para mejorar la calidad.",
675
+ "reviewWarnings": "Revisar las advertencias y corregirlas cuando corresponda",
676
+ "considerRunningWithStrict": "2. Considere ejecutar con el indicador --strict para una validación más estricta",
677
677
  "allValidationsPassed": "🎉 ¡Todas las validaciones pasaron!",
678
- "considerRunningUsageAnalysis": "Considerar ejecutar análisis de uso: node i18ntk-usage.js",
679
- "deletedOldReport": "🗑️ Informe de validación antiguo eliminado",
680
- "sourceDir": "📁 Directorio fuente: {sourceDir}",
681
- "i18nDir": "🌐 Directorio i18n: {i18nDir}",
678
+ "considerRunningUsageAnalysis": "Considere ejecutar un análisis de uso: nodo i18ntk-usage.js",
679
+ "deletedOldReport": "🗑️ Informe de validación antiguo eliminado",
680
+ "sourceDir": "📁 Directorio de fuentes: {sourceDir}",
681
+ "i18nDir": "🌐 Directorio I18n: {i18nDir}",
682
682
  "loadingTranslationFiles": "📋 Cargando archivos de traducción...",
683
- "foundTranslationFilesCount": "✅ Encontrados {count} archivos de traducción",
684
- "analyzingTranslations": "🔍 Analizando traducciones...",
685
- "validationCompletedSuccessfully": "🎉 ¡Validación completada exitosamente!",
686
- "validationErrorsFound": "⚠️ Errores de validación encontrados: {count}",
687
- "validationWarningsFound": "⚠️ Advertencias de validación encontradas: {count}",
688
- "validationPassed": "✅ Validación pasada sin errores",
689
- "validationFailed": "Validación fallida: {error}",
690
- "startingValidationProcess": "🔍 Iniciando proceso de validación...",
691
- "validationProcessCompletedSuccessfully": "✅ Proceso de validación completado exitosamente",
692
- "stackTrace": "Rastro de pila: {stack}",
693
- "authenticationFailed": "❌ Autenticación fallida. Acceso denegado.",
694
- "fatalValidationError": "❌ Error de validación fatal: {error}",
695
- "configAccess": "Accediendo a configuración para validación",
683
+ "foundTranslationFilesCount": "✅ Encontrado {count} archivos de traducción",
684
+ "analyzingTranslations": "🔍Analizando traducciones...",
685
+ "validationCompletedSuccessfully": "🎉 ¡La validación se completó con éxito!",
686
+ "validationErrorsFound": "⚠️ Errores de validación encontrados: {count}",
687
+ "validationWarningsFound": "⚠️ Advertencias de validación encontradas: {count}",
688
+ "validationPassed": "✅ Validación aprobada sin errores",
689
+ "validationFailed": "La validación falló: {error}",
690
+ "startingValidationProcess": "🔍Iniciando proceso de validación...",
691
+ "validationProcessCompletedSuccessfully": "✅ Proceso de validación completado con éxito",
692
+ "stackTrace": "Seguimiento de pila: {stack}",
693
+ "authenticationFailed": "❌ Error de autenticación. Acceso denegado.",
694
+ "fatalValidationError": "❌ Error fatal de validación: {error}",
695
+ "configAccess": "Accediendo a la configuración para su validación",
696
696
  "configValidated": "Configuración validada exitosamente",
697
697
  "configError": "Error de configuración: {error}",
698
- "validatorInit": "Inicializando validador I18n",
698
+ "validatorInit": "Inicializando el validador I18n",
699
699
  "validatorInitialized": "Validador I18n inicializado exitosamente",
700
700
  "validatorInitError": "Error de inicialización del validador: {error}",
701
- "argsParsing": "Analizando argumentos de línea de comandos",
702
- "argsParsed": "Argumentos de línea de comandos analizados exitosamente",
701
+ "argsParsing": "Analizando argumentos de línea de comando",
702
+ "argsParsed": "Argumentos de la línea de comando analizados correctamente",
703
703
  "argsParseError": "Error de análisis de argumentos: {error}",
704
704
  "languagesScan": "Escaneando idiomas disponibles",
705
- "languagesFound": "Encontrados {count} idiomas",
706
- "languagesScanError": "Error de escaneo de idiomas: {error}",
707
- "filesScan": "Encontrados {count} archivos en {language}",
705
+ "languagesFound": "Encontró {count} idiomas",
706
+ "languagesScanError": "Error de escaneo de idioma: {error}",
707
+ "filesScan": "Encontró {count} archivos en {language}",
708
708
  "filesScanError": "Error de escaneo de archivos: {error}",
709
709
  "jsonValidated": "Sintaxis JSON validada: {filePath}",
710
710
  "jsonValidationError": "Error de validación JSON: {error}",
711
- "languageValidation": "Validando idioma: {language}",
711
+ "languageValidation": "Idioma de validación: {language}",
712
712
  "languageValidationError": "Error de validación de idioma: {error}",
713
713
  "fileDeleted": "Archivo eliminado",
714
714
  "runStarted": "Iniciando ejecución de validación",
715
- "runCompleted": "Ejecución de validación completada exitosamente",
716
- "runError": "Ejecución de validación fallida: {error}",
715
+ "runCompleted": "La ejecución de validación se completó con éxito",
716
+ "runError": "La ejecución de validación falló: {error}",
717
717
  "scriptExecution": "Ejecución de script",
718
718
  "validationCompleted": "Validación completada",
719
719
  "validationError": "Error de validación: {error}",
720
- "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
720
+ "separator": "━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━",
721
721
  "languageHeader": "🌐 Idioma: {language}",
722
- "validationResults": "📊 Resultados de Validación",
722
+ "validationResults": "📊 Resultados de la validación",
723
723
  "noErrors": "✅ No se encontraron errores",
724
724
  "noWarnings": "✅ No se encontraron advertencias",
725
725
  "summaryHeader": "📋 RESUMEN GENERAL",
726
- "progressIndicator": "⏳ Procesando...",
726
+ "progressIndicator": "⏳ Procesamiento...",
727
727
  "completedIndicator": "✅ Completado",
728
728
  "errorIndicator": "❌Error",
729
- "warningIndicator": "⚠️ Advertencia",
730
- "infoIndicator": "ℹ️ Información",
731
- "sourceDirNotConfigured": "Directorio fuente no configurado",
732
- "sourceLanguageNotConfigured": "Idioma fuente no configurado",
733
- "translationFunctionNotInitialized": "Función de traducción no inicializada correctamente",
734
- "sourceLanguageDirectoryNotFound": "Directorio de idioma fuente no encontrado",
729
+ "warningIndicator": "⚠️ Advertencia",
730
+ "infoIndicator": "ℹ️ Información",
731
+ "sourceDirNotConfigured": "Directorio de origen no configurado",
732
+ "sourceLanguageNotConfigured": "Idioma de origen no configurado",
733
+ "translationFunctionNotInitialized": "La función de traducción no se inicializó correctamente",
734
+ "sourceLanguageDirectoryNotFound": "Directorio del idioma de origen no encontrado",
735
735
  "specifiedLanguageNotFound": "Idioma especificado no encontrado",
736
736
  "noJsonFilesFound": "No se encontraron archivos JSON en el directorio fuente: {sourceDir}",
737
- "i18nDirectoryNotFound": "Directorio i18n no encontrado: {i18nDir}",
738
- "invalidDirectoryPaths": "Rutas de directorio inválidas detectadas",
739
- "invalidSampleFilePath": "Ruta de archivo de ejemplo inválida",
740
- "failedToCreateSampleTranslationFile": "Falló al crear archivo de traducción de ejemplo",
741
- "invalidFilePathDetected": "Ruta de archivo inválida detectada",
742
- "failedToWriteFile": "Falló al escribir archivo: {filePath}",
743
- "invalidSourceDirectory": "Directorio de origen no válido: {sourceDir}",
737
+ "i18nDirectoryNotFound": "Directorio I18n no encontrado: {i18nDir}",
738
+ "invalidDirectoryPaths": "Se detectaron rutas de directorio no válidas",
739
+ "invalidSampleFilePath": "Ruta de archivo de muestra no válida",
740
+ "failedToCreateSampleTranslationFile": "No se pudo crear el archivo de traducción de muestra",
741
+ "invalidFilePathDetected": "Se detectó una ruta de archivo no válida",
742
+ "failedToWriteFile": "No se pudo escribir el archivo: {filePath}",
743
+ "invalidSourceDirectory": "Directorio fuente no válido: {sourceDir}",
744
744
  "invalidSourceLanguageDirectory": "Directorio de idioma de origen no válido: {sourceDir}"
745
745
  },
746
746
  "adminCli": {
747
- "setupPinProtectionTitle": "🔐 Configurando Protección PIN de Administrador",
748
- "setupPinProtectionDescription": "Esto requerirá un PIN de 4-6 dígitos para operaciones administrativas.",
749
- "enablePinProtectionPrompt": "¿Deseas habilitar la protección PIN de administrador?",
750
- "setupCancelled": "Configuración de protección PIN de administrador cancelada.",
751
- "enterPinPrompt": "Ingresa un PIN de 4-6 dígitos:",
752
- "pinFormatError": "❌ El PIN debe tener 4-6 dígitos. Por favor intenta de nuevo.",
753
- "confirmPinPrompt": "Confirma el PIN:",
754
- "pinMismatchError": "❌ Los PINs no coinciden. Por favor intenta de nuevo.",
755
- "pinProtectionEnabledSuccess": "✅ ¡Protección PIN de administrador habilitada exitosamente!",
756
- "pinRecoveryWarning": "⚠️ Recuerda tu PIN - no podrá ser recuperado si lo pierdes.",
757
- "setupPinProtectionFailed": "❌ Falló la configuración de protección PIN de administrador.",
758
- "errorSettingUpPin": "❌ Error configurando PIN de administrador: {message}",
759
- "authRequiredForOperation": "🔐 Autenticación de administrador requerida para: {operation}",
760
- "invalidPinFormat": "❌ Formato de PIN inválido. El PIN debe tener 4-6 dígitos.",
747
+ "setupPinProtectionTitle": "🔐 Configuración de la protección con PIN de administrador",
748
+ "setupPinProtectionDescription": "Esto requerirá un PIN de 4 a 6 dígitos para operaciones administrativas.",
749
+ "enablePinProtectionPrompt": "¿Quieres habilitar la protección con PIN de administrador?",
750
+ "setupCancelled": "Se canceló la configuración de protección del PIN de administrador.",
751
+ "enterPinPrompt": "Ingrese un PIN de 4 a 6 dígitos:",
752
+ "pinFormatError": "❌ El PIN debe tener entre 4 y 6 dígitos. Por favor inténtalo de nuevo.",
753
+ "confirmPinPrompt": "Confirmar PIN:",
754
+ "pinMismatchError": "❌ Los PIN no coinciden. Por favor inténtalo de nuevo.",
755
+ "pinProtectionEnabledSuccess": "✅ ¡La protección con PIN de administrador se habilitó correctamente!",
756
+ "pinRecoveryWarning": "⚠️ Recuerde su PIN: no podrá recuperarlo si lo pierde.",
757
+ "setupPinProtectionFailed": "❌ No se pudo configurar la protección con PIN de administrador.",
758
+ "errorSettingUpPin": "❌ Error al configurar el PIN de administrador: {message}",
759
+ "authRequiredForOperation": "🔐 Se requiere autenticación de administrador para: {operation}",
760
+ "invalidPinFormat": "❌ Formato de PIN no válido. El PIN debe tener entre 4 y 6 dígitos.",
761
761
  "authenticationSuccess": "✅ ¡Autenticación exitosa!",
762
- "invalidPinAttemptsRemaining": "❌ PIN inválido. {remaining} intentos restantes.",
763
- "authenticationFailedAccessDenied": "❌ Autenticación fallida. Acceso denegado.",
762
+ "invalidPinAttemptsRemaining": "❌ PIN no válido. {remaining} intentos restantes.",
763
+ "authenticationFailedAccessDenied": "❌ Error de autenticación. Acceso denegado.",
764
764
  "authenticationError": "❌ Error de autenticación: {message}",
765
- "pinProtectionNotEnabled": "La protección PIN de administrador no está habilitada actualmente.",
766
- "disablingPinProtectionTitle": "🔓 Deshabilitando Protección PIN de Administrador",
767
- "confirmDisablePinProtection": "¿Estás seguro de que deseas deshabilitar la protección PIN de administrador?",
765
+ "pinProtectionNotEnabled": "La protección con PIN de administrador no está habilitada actualmente.",
766
+ "disablingPinProtectionTitle": "🔓 Deshabilitar la protección con PIN de administrador",
767
+ "confirmDisablePinProtection": "¿Está seguro de que desea desactivar la protección con PIN de administrador?",
768
768
  "operationCancelled": "Operación cancelada.",
769
- "pinProtectionDisabledSuccess": "✅ Protección PIN de administrador deshabilitada.",
770
- "disablePinProtectionFailed": "❌ Falló al deshabilitar la protección PIN de administrador.",
771
- "errorDisablingPinProtection": "❌ Error deshabilitando protección de administrador: {message}",
772
- "adminProtectionStatusTitle": "🔐 Estado de Protección de Administrador",
769
+ "pinProtectionDisabledSuccess": "✅ Protección con PIN de administrador deshabilitada.",
770
+ "disablePinProtectionFailed": "❌ No se pudo desactivar la protección con PIN de administrador.",
771
+ "errorDisablingPinProtection": "❌ Error al desactivar la protección de administrador: {message}",
772
+ "adminProtectionStatusTitle": "🔐 Estado de protección del administrador",
773
773
  "statusEnabled": "Estado: ✅ HABILITADO",
774
- "protectionDetails": "Protección: PIN de 4-6 dígitos requerido para operaciones de administrador",
775
- "lockoutDetails": "Bloqueo: 3 intentos fallidos = 15 minutos de bloqueo",
774
+ "protectionDetails": "Protección: Se requiere PIN de 4 a 6 dígitos para operaciones de administración",
775
+ "lockoutDetails": "Bloqueo: 3 intentos fallidos = bloqueo de 15 minutos",
776
776
  "statusDisabled": "Estado: ❌ DESHABILITADO",
777
777
  "noAuthRequired": "Protección: No se requiere autenticación",
778
778
  "unprotectedRisk": "Riesgo: Las operaciones administrativas están desprotegidas",
779
- "errorCheckingAdminStatus": "❌ Error verificando estado de administrador: {message}",
779
+ "errorCheckingAdminStatus": "❌ Error al verificar el estado del administrador: {message}",
780
780
  "authRequired": "🔐 Se requiere autenticación de administrador.",
781
- "invalidPin": "❌ PIN inválido.",
781
+ "invalidPin": "❌ PIN no válido.",
782
782
  "authSuccess": "✅ ¡Autenticación exitosa!",
783
- "adminPinSetupCli": "configuracion_pin_admin_cli",
784
- "adminAuthFailedCli": "autenticacion_admin_fallida_cli",
785
- "adminAuthDisabledCli": "autenticacion_admin_deshabilitada_cli",
786
- "protectedAccess": "Acceso protegido: Se requiere autenticación de administrador para operaciones sensibles.",
787
- "enterPin": "Ingresa el PIN de administrador:",
783
+ "adminPinSetupCli": "admin_pin_setup_cli",
784
+ "adminAuthFailedCli": "admin_auth_failed_cli",
785
+ "adminAuthDisabledCli": "admin_auth_disabled_cli",
786
+ "protectedAccess": "Acceso protegido: se requiere autenticación de administrador para operaciones confidenciales.",
787
+ "enterPin": "Ingrese el PIN de administrador:",
788
788
  "accessGranted": "Acceso concedido."
789
789
  },
790
790
  "adminPin": {
791
- "setup_title": "🔐 Configuración de PIN de Administrador",
792
- "setup_separator": "============================================================",
793
- "setup_description": "Crea un PIN de 4-6 dígitos para acceso administrativo a configuraciones sensibles.",
794
- "required_for_title": "Este PIN será requerido para:",
795
- "required_for_1": "• Cambiar configuraciones de seguridad",
796
- "required_for_2": "• Modificar configuraciones avanzadas",
791
+ "setup_title": "🔐 Configuración del PIN de administrador",
792
+ "setup_separator": "===============================================================",
793
+ "setup_description": "Cree un PIN de 4 a 6 dígitos para el acceso de administrador a configuraciones confidenciales.",
794
+ "required_for_title": "Este PIN será necesario para:",
795
+ "required_for_1": "• Cambiar la configuración de seguridad",
796
+ "required_for_2": "• Modificación de configuraciones avanzadas",
797
797
  "required_for_3": "• Acceder a herramientas de depuración",
798
- "required_for_4": "• Restablecer configuraciones",
799
- "setup_note": "💡 Nota: Verás asteriscos (*) mientras escribes - son solo caracteres de enmascaramiento.",
800
- "setup_digits_only": "Solo se aceptan números del 0-9 como dígitos del PIN.",
801
- "invalid_pin_length": "❌ PIN inválido. Debe tener 4-6 dígitos (solo números 0-9).",
798
+ "required_for_4": "• Restablecer la configuración",
799
+ "setup_note": "💡 Nota: Verás asteriscos (*) a medida que escribes; estos son solo caracteres enmascarantes.",
800
+ "setup_digits_only": "Sólo se aceptan los números del 0 al 9 como dígitos del PIN.",
801
+ "invalid_pin_length": "❌ PIN no válido. Debe tener entre 4 y 6 dígitos (solo números del 0 al 9).",
802
802
  "invalid_pin_example": "Ejemplo: 1234 o 567890",
803
- "pins_do_not_match": "❌ Los PINs no coinciden.",
804
- "setup_success": "✅ ¡El PIN de administrador ha sido configurado exitosamente!",
805
- "setup_warning": "⚠️ Mantén este PIN seguro. No podrá ser recuperado si se pierde.",
806
- "setup_error": "❌ Error configurando PIN:",
807
- "session_expired": "⏰ Sesión de administrador expirada por inactividad.",
808
- "no_pin_set_setting_up": "⚠️ No hay PIN de administrador configurado. Configurando PIN...",
809
- "no_pin_configured_access_denied": "⚠️ No hay PIN de administrador configurado. Acceso denegado.",
810
- "use_admin_settings_to_set_pin": "💡 Usa la configuración de administrador para establecer un PIN primero.",
811
- "locked_out": "🔒 Acceso de administrador bloqueado debido a demasiados intentos fallidos.",
812
- "wait_before_retry": "Por favor espera 5 minutos antes de intentar nuevamente.",
803
+ "pins_do_not_match": "❌ Los PIN no coinciden.",
804
+ "setup_success": "✅ ¡El PIN de administrador se ha configurado correctamente!",
805
+ "setup_warning": "⚠️ Mantenga este PIN seguro. No se puede recuperar si se pierde.",
806
+ "setup_error": "❌ Error al configurar el PIN:",
807
+ "session_expired": "⏰ La sesión de administrador expiró por inactividad.",
808
+ "no_pin_set_setting_up": "⚠️ No se ha establecido ningún PIN de administrador. Configurando PIN...",
809
+ "no_pin_configured_access_denied": "⚠️ No hay PIN de administrador configurado. Acceso denegado.",
810
+ "use_admin_settings_to_set_pin": "💡 Utilice la configuración de administrador para configurar un PIN primero.",
811
+ "locked_out": "🔒 El acceso de administrador está bloqueado debido a demasiados intentos fallidos.",
812
+ "wait_before_retry": "Espere 5 minutos antes de volver a intentarlo.",
813
813
  "access_granted": "✅ Acceso de administrador concedido.",
814
814
  "incorrect_pin": "❌ PIN incorrecto. {attempts} intentos restantes.",
815
- "verify_pin_error": "❌ Error verificando PIN:",
815
+ "verify_pin_error": "❌ Error al verificar el PIN:",
816
816
  "already_configured": "✅ El PIN de administrador ya está configurado.",
817
- "optional_setup_title": "🔐 Configuración de PIN de Administrador (Opcional)",
818
- "optional_setup_description": "La protección PIN de administrador añade seguridad para operaciones sensibles como:",
819
- "setup_prompt": "¿Deseas configurar un PIN de administrador? (s/N):",
820
- "skipping_setup": "⏭️ Omitiendo configuración de PIN de administrador. Puedes configurarlo más tarde en ajustes.",
821
- "setup_prompt_error": "❌ Error durante el prompt de configuración de PIN:",
822
- "protectedAccess": "Acceso protegido: Se requiere autenticación de administrador para operaciones sensibles.",
823
- "enterPin": "Ingresa el PIN de administrador:",
817
+ "optional_setup_title": "🔐 Configuración del PIN de administrador (opcional)",
818
+ "optional_setup_description": "La protección con PIN de administrador agrega seguridad para operaciones confidenciales como:",
819
+ "setup_prompt": "¿Le gustaría configurar un PIN de administrador? (sí/no):",
820
+ "skipping_setup": "⏭️ Omitir la configuración del PIN de administrador. Puedes configurarlo más tarde en la configuración.",
821
+ "setup_prompt_error": "❌ Error durante el mensaje de configuración del PIN:",
822
+ "protectedAccess": "Acceso protegido: se requiere autenticación de administrador para operaciones confidenciales.",
823
+ "enterPin": "Ingrese el PIN de administrador:",
824
824
  "accessGranted": "Acceso concedido.",
825
- "invalidPin": "❌ PIN inválido. Por favor intenta de nuevo.",
826
- "weak_pin_warning": "⚠️ ADVERTENCIA: Este PIN parece ser débil o común.",
827
- "weak_pin_suggestion": "💡 Considera usar un PIN más fuerte con dígitos variados.",
828
- "use_anyway_prompt": "Escribe \"si\" para usar de todos modos, o presiona Enter para elegir un PIN diferente:",
829
- "enter_new_pin": "Ingresa nuevo PIN de administrador (4-6 dígitos):",
830
- "confirm_pin": "Confirma el PIN de administrador:",
831
- "not_set": "No Configurado",
825
+ "invalidPin": "❌ PIN no válido. Por favor inténtalo de nuevo.",
826
+ "weak_pin_warning": "⚠️ ADVERTENCIA: Este PIN parece ser débil o común.",
827
+ "weak_pin_suggestion": "💡 Considere utilizar un PIN más seguro con dígitos variados.",
828
+ "use_anyway_prompt": "Escriba \"sí\" para usarlo de todos modos o presione Entrar para elegir un PIN diferente:",
829
+ "enter_new_pin": "Ingrese el nuevo PIN de administrador (4-6 dígitos):",
830
+ "confirm_pin": "Confirmar PIN de administrador:",
831
+ "not_set": "No establecido",
832
832
  "pin_display_mask": "####"
833
833
  },
834
834
  "debug": {
835
- "title": "🔧 Herramientas de Depuración",
836
- "separator": "============================================================",
837
- "mainDebuggerSystemDiagnostics": "1. Diagnósticos del Sistema",
838
- "_consoleTranslationsCheck": "// 2. Verificación de Traducciones de Consola",
839
- "_exportMissingKeys": "// 3. Exportar Claves de Traducción Faltantes",
840
- "_replaceHardcodedConsole": "// 4. Reemplazar Cadenas Codificadas de Consola",
841
- "_consoleKeyChecker": "// 5. Verificador de Claves de Consola",
842
- "debugLogs": "2. Registros de Depuración",
843
- "backToMainMenu": "0. Volver al Menú Principal",
844
- "selectOption": "Selecciona una herramienta de depuración:",
845
- "runningDebugTool": "Ejecutando {displayName}...",
835
+ "title": "🔧 Herramientas de depuración",
836
+ "separator": "===============================================================",
837
+ "mainDebuggerSystemDiagnostics": "1. Diagnóstico del sistema",
838
+ "_consoleTranslationsCheck": "// 2. Verificación de traducciones de la consola",
839
+ "_exportMissingKeys": "// 3. Exportar claves de traducción faltantes",
840
+ "_replaceHardcodedConsole": "// 4. Reemplazar cadenas de consola codificadas",
841
+ "_consoleKeyChecker": "// 5. Comprobador de claves de consola",
842
+ "debugLogs": "2. Registros de depuración",
843
+ "backToMainMenu": "0. Volver al menú principal",
844
+ "selectOption": "Seleccione una herramienta de depuración:",
845
+ "runningDebugTool": "Correr {displayName}...",
846
846
  "debugToolNotFound": "❌ Herramienta de depuración no encontrada: {toolName}",
847
- "errorRunningDebugTool": "Error ejecutando herramienta de depuración '{displayName}': {error}",
848
- "recentDebugLogs": "📄 Registros de Depuración Recientes",
847
+ "errorRunningDebugTool": "Error al ejecutar la herramienta de depuración '{displayName}': {error}",
848
+ "recentDebugLogs": "📄 Registros de depuración recientes",
849
849
  "noDebugLogsFound": "❌ No se encontraron registros de depuración.",
850
- "debugLogsDirectoryNotFound": "❌ Directorio de registros de depuración no encontrado.",
851
- "selectLogPrompt": "Selecciona archivo de registro para ver (1-{count}):",
852
- "invalidChoiceSelectRange": "Opción inválida. Por favor selecciona del rango disponible.",
850
+ "debugLogsDirectoryNotFound": "❌ No se encontró el directorio de registros de depuración.",
851
+ "selectLogPrompt": "Seleccione el archivo de registro para ver (1-{count}):",
852
+ "invalidChoiceSelectRange": "Elección no válida. Seleccione entre el rango disponible.",
853
853
  "contentOf": "📄 Contenido de {filename}:",
854
- "pressEnterToContinue": "Presiona Enter para continuar..."
854
+ "pressEnterToContinue": "Presione Entrar para continuar..."
855
855
  },
856
856
  "detect_language_mismatches": {
857
- "tool_title": "🔍 Herramienta de Detección de Discrepancias de Idioma",
858
- "separator": "=====================================",
857
+ "tool_title": "🔍 Herramienta de detección de discrepancias de idioma",
858
+ "separator": "=======================================",
859
859
  "analyzing_file": "📄 Analizando {language}.json...",
860
860
  "error_analyzing_file": "❌ Error al analizar {filename}: {errorMessage}",
861
- "results_title": "📊 RESULTADOS DE DETECCIÓN DE DISCREPANCIAS DE IDIOMA",
862
- "results_separator": "========================================",
861
+ "results_title": "📊 RESULTADOS DE LA DETECCIÓN DE DISCORDANCIA DE IDIOMA",
862
+ "results_separator": "==========================================",
863
863
  "summary_title": "📋 RESUMEN:",
864
- "total_files_analyzed": "Total de archivos analizados: {totalFiles}",
864
+ "total_files_analyzed": "Archivos totales analizados: {totalFiles}",
865
865
  "files_with_mismatches": "Archivos con discrepancias: {filesWithMismatches}",
866
866
  "total_mismatches_found": "Total de discrepancias encontradas: {totalMismatches}",
867
- "no_mismatches_found": "✅ ¡No se encontraron discrepancias de idioma! Todas las traducciones parecen estar en sus idiomas correctos.",
867
+ "no_mismatches_found": "✅ ¡No se encontraron diferencias de idioma! Todas las traducciones parecen estar en sus idiomas correctos.",
868
868
  "detailed_results_title": "🔍 RESULTADOS DETALLADOS:",
869
869
  "file_mismatch_header": "📄 {filename} ({language})",
870
- "mismatches_count": "Se encontraron {count} discrepancia(s):",
871
- "mismatch_details": "{index}. Clave: {key}",
870
+ "mismatches_count": "Encontró {count} discrepancias:",
871
+ "mismatch_details": "{index}. Llave: {key}",
872
872
  "mismatch_value": "Valor: \"{value}\"",
873
- "mismatch_issue": "Problema: {description}",
873
+ "mismatch_issue": "Asunto: {description}",
874
874
  "recommendations_title": "💡 RECOMENDACIONES:",
875
- "recommendation_1": "1. Revisar y traducir todas las entradas marcadas con [TRADUCIR]",
876
- "recommendation_2": "2. Reemplazar prefijos de idioma (ej., [DE], [FR]) con traducciones apropiadas",
877
- "recommendation_3": "3. Traducir texto en inglés al idioma objetivo correspondiente",
878
- "recommendation_4": "4. Usar equivalentes en idioma nativo para todo el texto visible al usuario",
879
- "recommendation_5": "5. Ejecutar esta herramienta nuevamente después de hacer correcciones para verificar las soluciones",
875
+ "recommendation_1": "1. Revisa y traduce todas las entradas marcadas con [TRADUCIR]",
876
+ "recommendation_2": "2. Reemplace los prefijos de idioma (por ejemplo, [DE], [FR]) con traducciones adecuadas",
877
+ "recommendation_3": "3. Traducir el texto en inglés al idioma de destino apropiado.",
878
+ "recommendation_4": "4. Utilice equivalentes en el idioma nativo para todo el texto de cara al usuario.",
879
+ "recommendation_5": "5. Ejecute esta herramienta nuevamente después de realizar correcciones para verificar las correcciones.",
880
880
  "detailed_report_saved": "📄 Informe detallado guardado en: {reportPath}",
881
881
  "error_saving_report": "❌ Error al guardar informe: {errorMessage}",
882
- "auto_fix_mode": "🔧 Modo de auto-corrección {dryRun}",
883
- "auto_fix_separator": "=====================================",
884
- "fixed_file": "✅ Corregido {filename}",
885
- "auto_fix_summary_title": "📊 Resumen de auto-corrección:",
886
- "total_fixes_applied": "Total de correcciones aplicadas: {count}",
882
+ "auto_fix_mode": "🔧 Modo de reparación automática {dryRun}",
883
+ "auto_fix_separator": "=======================================",
884
+ "fixed_file": "✅ Fijo {filename}",
885
+ "auto_fix_summary_title": "📊 Resumen de reparación automática:",
886
+ "total_fixes_applied": "Correcciones totales aplicadas: {count}",
887
887
  "preview_fixes_title": "🔍 Vista previa de correcciones:",
888
- "fix_details": "{file}: {key} Anterior: \"{old}\" Nuevo: \"{new}\"",
889
- "more_fixes": "... y {count} correcciones más",
890
- "run_with_apply_fixes": "💡 Ejecutar con --apply para aplicar estas correcciones",
888
+ "fix_details": "{file}: {key} Viejo: \"{old}\" Nuevo: \"{new}\"",
889
+ "more_fixes": "... y {count} más correcciones",
890
+ "run_with_apply_fixes": "💡 Ejecute con --apply para aplicar estas correcciones",
891
891
  "error_general": "❌Error:",
892
- "mainDebuggerSystemDiagnostics": "Diagnóstico Principal del Sistema / Depurador",
893
- "exportMissingKeys": "Exportar Claves Faltantes",
894
- "replaceHardcodedConsole": "Reemplazar Consola Codificada",
895
- "consoleKeyChecker": "Verificador de Claves de Consola",
896
- "debugLogs": "Registros de Depuración",
897
- "backToMainMenu": "Volver al Menú Principal",
898
- "invalidChoiceSelectRange": "❌ Opción inválida. Por favor selecciona un número dentro del rango mostrado.",
899
- "runningDebugTool": "Ejecutando herramienta de depuración: {displayName}",
900
- "debugToolNotFound": "Herramienta de depuración '{toolName}' no encontrada.",
901
- "recentDebugLogs": "Registros de Depuración Recientes",
892
+ "mainDebuggerSystemDiagnostics": "Depurador principal/Diagnóstico del sistema",
893
+ "exportMissingKeys": "Exportar claves faltantes",
894
+ "replaceHardcodedConsole": "Reemplazar la consola codificada",
895
+ "consoleKeyChecker": "Comprobador de claves de consola",
896
+ "debugLogs": "Registros de depuración",
897
+ "backToMainMenu": "Volver al menú principal",
898
+ "invalidChoiceSelectRange": "❌ Elección no válida. Seleccione un número dentro del rango mostrado.",
899
+ "runningDebugTool": "Ejecutando la herramienta de depuración: {displayName}",
900
+ "debugToolNotFound": "Herramienta de depuración '{toolName}' extraviado.",
901
+ "recentDebugLogs": "Registros de depuración recientes",
902
902
  "noDebugLogsFound": "No se encontraron registros de depuración.",
903
903
  "logEntry": "Entrada de registro: {timestamp} - {message}",
904
- "debugLogsDirectoryNotFound": "Directorio de registros de depuración no encontrado."
904
+ "debugLogsDirectoryNotFound": "No se encontró el directorio de registros de depuración."
905
905
  },
906
906
  "help": {
907
907
  "title": "📊 AYUDA DE GESTIÓN I18NTK",
908
- "usage": "Uso: node i18ntk-manage.js [opciones]",
909
- "interactiveMode": "💡 Usar: node i18ntk-manage.js --command=<comando> para ejecución directa",
910
- "showHelp": "📖 Usar: node i18ntk-manage.js --help para ver comandos disponibles",
911
- "availableCommands": "📖 Comandos Disponibles:",
908
+ "usage": "Uso: nodo principal/manage/index.js [opciones]",
909
+ "interactiveMode": "💡 Utilice: nodo principal/manage/index.js --command=<command> para ejecución directa",
910
+ "showHelp": "📖 Utilice: node main/manage/index.js --ayuda para los comandos disponibles",
911
+ "availableCommands": "📖 Comandos disponibles:",
912
912
  "initProject": "🚀 Inicializar nuevos idiomas",
913
913
  "analyzeTranslations": "🔍 Analizar traducciones",
914
914
  "validateTranslations": "✅ Validar traducciones",
915
- "checkUsage": "📊 Verificar uso de claves",
916
- "initCommand": "init - Inicializar nuevos idiomas",
917
- "analyzeCommand": "analyze - Analizar traducciones",
918
- "validateCommand": "validate - Validar traducciones",
919
- "usageCommand": "usage - Verificar uso de claves",
920
- "sizingCommand": "sizing - Analizar dimensionamiento",
921
- "completeCommand": "complete - Completar traducciones (100% cobertura)",
922
- "summaryCommand": "summary - Mostrar estado del proyecto",
923
- "debugCommand": "debug - Depurar problemas de traducción",
924
- "scannerCommand": "scanner - Escanear proyecto para claves i18n",
925
- "translateCommand": "translate - Traducción automática (Beta)",
915
+ "checkUsage": "📊 Verifique el uso de claves",
916
+ "initCommand": "init - Inicializar nuevos idiomas",
917
+ "analyzeCommand": "analizar - Analizar traducciones",
918
+ "validateCommand": "validar - Validar traducciones",
919
+ "usageCommand": "uso - Verificar el uso de claves",
920
+ "sizingCommand": "dimensionamiento - Analizar dimensionamiento",
921
+ "completeCommand": "complete - Traducciones completas (100% de cobertura)",
922
+ "summaryCommand": "resumen - Mostrar el estado del proyecto",
923
+ "debugCommand": "debug - Problemas de traducción de depuración",
924
+ "scannerCommand": "escáner - Escanear en busca de llaves",
925
+ "translateCommand": "traducir: traducción automática de archivos locales (Beta)",
926
926
  "menu": {
927
- "pressEnterToContinue": "Presiona Enter para continuar...",
927
+ "pressEnterToContinue": "Presione Entrar para continuar...",
928
928
  "title": "🌐 MENÚ DE GESTIÓN I18NTK",
929
- "description": "Menú interactivo para gestionar internacionalización",
929
+ "description": "Menú interactivo para gestionar la internacionalización",
930
930
  "exit": "🚪 Salir"
931
931
  },
932
932
  "commands": {
933
- "init": "init - Inicializar nuevos idiomas",
934
- "analyze": "analyze - Analizar traducciones",
935
- "validate": "validate - Validar traducciones",
936
- "usage": "usage - Verificar uso de claves",
937
- "sizing": "sizing - Analizar dimensionamiento",
938
- "complete": "complete - Completar traducciones (100% cobertura)",
939
- "summary": "summary - Mostrar estado del proyecto",
940
- "debug": "debug - Depurar problemas de traducción"
933
+ "init": "init - Inicializar nuevos idiomas",
934
+ "analyze": "analizar - Analizar traducciones",
935
+ "validate": "validar - Validar traducciones",
936
+ "usage": "uso - Verificar el uso de claves",
937
+ "sizing": "dimensionamiento - Analizar dimensionamiento",
938
+ "complete": "complete - Traducciones completas (100% de cobertura)",
939
+ "summary": "resumen - Mostrar el estado del proyecto",
940
+ "debug": "debug - Problemas de traducción de depuración"
941
941
  },
942
942
  "options": {
943
- "sourceDir": "--source-dir <dir> Directorio fuente a analizar",
944
- "output": "--output <file> Archivo de salida para el informe",
945
- "verbose": "--verbose, -v Mostrar información detallada",
946
- "keepReports": "--keep-reports Mantener informes existentes",
947
- "deleteReports": "--delete-reports Eliminar informes existentes",
948
- "help": "--help, -h Mostrar esta ayuda"
943
+ "sourceDir": "--directorio-fuente <dir> Directorio fuente para analizar",
944
+ "output": "--producción <file> Archivo de salida para el informe.",
945
+ "verbose": "--verbose, -v Mostrar información detallada",
946
+ "keepReports": "--keep-reports Conserva los informes existentes",
947
+ "deleteReports": "--delete-reports Eliminar informes existentes",
948
+ "help": "--help, -h Mostrar esta ayuda"
949
949
  },
950
950
  "examples": {
951
951
  "title": "Ejemplos:",
952
- "example1": "node i18ntk-manage.js",
953
- "example2": "node i18ntk-manage.js --source-dir ./locales",
954
- "example3": "node i18ntk-manage.js --output informe-resumen.txt",
955
- "example4": "node i18ntk-manage.js --verbose",
956
- "example5": "node i18ntk-manage.js --source-dir ./locales --output informe.json"
952
+ "example1": "nodo i18ntk-manage.js",
953
+ "example2": "nodo i18ntk-manage.js --source-dir ./locales",
954
+ "example3": "nodo i18ntk-manage.js --resumen de salida-report.txt",
955
+ "example4": "nodo i18ntk-manage.js --detallado",
956
+ "example5": "nodo i18ntk-manage.js --source-dir ./locales --output report.json"
957
957
  },
958
958
  "features": {
959
959
  "initProject": "🚀 Inicializar nuevos idiomas",
960
960
  "analyzeTranslations": "🔍 Analizar traducciones",
961
961
  "validateTranslations": "✅ Validar traducciones",
962
- "checkUsage": "📊 Verificar uso de claves",
963
- "completeTranslations": "🎯 Completar traducciones (100% cobertura)",
964
- "showSizing": "📏 Analizar dimensionamiento",
965
- "runWorkflow": "🔄 Ejecutar flujo completo",
962
+ "checkUsage": "📊 Verifique el uso de claves",
963
+ "completeTranslations": "🎯 Traducciones completas (100% de cobertura)",
964
+ "showSizing": "📏 Analizar tallas",
965
+ "runWorkflow": "🔄 Ejecute el flujo de trabajo completo",
966
966
  "showStatus": "📋 Mostrar estado del proyecto",
967
- "deleteReports": "🗑️ Eliminar todos los informes",
968
- "changeLanguage": "🌍 Cambiar idioma de interfaz",
969
- "settings": "⚙️ Configuración",
967
+ "deleteReports": "🗑️ Eliminar todos los informes",
968
+ "changeLanguage": "🌍 Cambiar idioma de la interfaz de usuario",
969
+ "settings": "⚙️ Configuración",
970
970
  "showHelp": "❓ Ayuda",
971
971
  "debugTools": "🔧 Herramientas de depuración"
972
972
  },
973
973
  "messages": {
974
- "selectOption": "Selecciona una opción:",
975
- "invalidOption": "Opción inválida. Por favor intenta nuevamente.",
976
- "operationCompleted": "✅ ¡Operación completada exitosamente!",
977
- "pressEnter": "Presiona Enter para continuar...",
974
+ "selectOption": "Seleccione una opción:",
975
+ "invalidOption": "Opción no válida. Por favor inténtalo de nuevo.",
976
+ "operationCompleted": "✅ ¡Operación finalizada con éxito!",
977
+ "pressEnter": "Presione Entrar para continuar...",
978
978
  "goodbye": "👋 ¡Adiós!",
979
979
  "unknownCommand": "Comando desconocido: {command}",
980
- "nonInteractive": "⚠️ Modo no interactivo detectado. Menú mostrado solo como referencia."
980
+ "nonInteractive": "⚠️ Se detectó modo no interactivo. Menú mostrado solo como referencia."
981
981
  },
982
982
  "i18n_helper": {
983
983
  "translation_file_not_found": "Archivo de traducción no encontrado: {translationFile}",
984
- "error_loading_translations": "Error cargando traducciones: {errorMessage}",
985
- "translation_not_found": "Traducción no encontrada para la clave: {key}",
986
- "translation_key_not_string": "La clave de traducción no se resuelve a una cadena: {key}",
987
- "error_reading_locales_directory": "Error leyendo directorio de locales: {errorMessage}"
984
+ "error_loading_translations": "Error al cargar traducciones: {errorMessage}",
985
+ "translation_not_found": "Traducción no encontrada para clave: {key}",
986
+ "translation_key_not_string": "La clave de traducción no se resuelve en una cadena: {key}",
987
+ "error_reading_locales_directory": "Error al leer el directorio local: {errorMessage}"
988
988
  }
989
989
  },
990
990
  "init": {
991
- "initializationTitle": "🚀 Kit de Gestión i18n - Inicialización del Proyecto",
991
+ "initializationTitle": "🚀 Kit de herramientas de gestión i18n: inicialización de proyectos",
992
992
  "initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
993
- "sourceDirectoryLabel": "📁 Directorio Fuente: {dir}",
994
- "requiredTitle": "Inicialización Requerida",
995
- "requiredBody": "Este proyecto debe ser inicializado antes de ejecutar este comando.",
996
- "promptRunNow": "¿Deseas ejecutar la inicialización ahora? (y/N):",
997
- "sourceLanguageLabel": "🌍 Idioma Fuente: {language}",
993
+ "sourceDirectoryLabel": "📁 Directorio de fuentes: {dir}",
994
+ "requiredTitle": "Inicialización requerida",
995
+ "requiredBody": "Este proyecto debe inicializarse antes de ejecutar este comando.",
996
+ "promptRunNow": "¿Le gustaría ejecutar la inicialización ahora? (sí/no):",
997
+ "sourceLanguageLabel": "🌍 Idioma de origen: {language}",
998
998
  "detectedI18nFrameworks": "🔍 Marco(s) i18n detectado(s): {frameworks}",
999
- "pinMustBe4Digits": "🔐 PIN debe tener 4 dígitos.",
999
+ "pinMustBe4Digits": "🔐 El PIN debe tener 4 dígitos.",
1000
1000
  "existingDirectoriesFound": "📁 Directorios de traducción existentes encontrados:",
1001
- "useExistingDirectoryPrompt": "¿Deseas usar el directorio existente? (y/n)",
1002
- "selectDirectoryPrompt": "Selecciona un directorio ingresando el número (o elige 'Crear nuevo directorio')",
1003
- "enterNewDirectoryName": "Ingresa el nombre para tu nuevo directorio de traducción",
1001
+ "useExistingDirectoryPrompt": "¿Quiere utilizar el directorio existente? (t/n)",
1002
+ "selectDirectoryPrompt": "Seleccione un directorio ingresando el número (o elija 'Crear nuevo directorio')",
1003
+ "enterNewDirectoryName": "Ingrese el nombre de su nuevo directorio de traducción",
1004
1004
  "createdNewDirectory": "✅ Nuevo directorio creado: {dir}",
1005
1005
  "directoryAlreadyExists": "⚠️ El directorio ya existe: {dir}",
1006
- "invalidDirectoryName": "❌ Nombre de directorio inválido proporcionado.",
1007
- "usingExistingDirectory": "Usando directorio existente: {dir}",
1008
- "adminPinSetupOptional": "🔐 Configuración de PIN de administrador opcional (recomendado por seguridad)",
1006
+ "invalidDirectoryName": "❌ Se proporcionó un nombre de directorio no válido.",
1007
+ "usingExistingDirectory": "Usando el directorio existente: {dir}",
1008
+ "adminPinSetupOptional": "🔐 Configuración del PIN de administrador opcional (recomendado por seguridad)",
1009
1009
  "adminPinSeparator": "------------------------------",
1010
1010
  "adminPinDescription1": "PIN de administrador: número de 4 dígitos para acceso seguro",
1011
- "adminPinDescription2": "Dejar en blanco para omitir la configuración del PIN",
1012
- "adminPinDescription3": "Si configuras un PIN, será requerido para todas las acciones seguras futuras.",
1013
- "adminPinDescription4": "Encriptación AES-256-GCM utilizada para el almacenamiento seguro del PIN.",
1014
- "adminPinSetupPrompt": "Ingresa el PIN de administrador (4 dígitos) o deja en blanco para omitir:",
1015
- "skippingAdminPinSetup": "Omitiendo configuración del PIN de administrador...",
1016
- "settingUpAdminPin": "🔐 Configurando PIN de administrador...",
1017
- "enterAdminPin": "Ingresa el PIN de administrador:",
1018
- "confirmAdminPin": "Confirma el PIN de administrador:",
1019
- "pinMismatch": "Los PINs no coinciden. Por favor intenta de nuevo.",
1020
- "adminPinSetupSuccess": "🔐 ¡Configuración del PIN de administrador exitosa!",
1021
- "adminPinSetupFailure": "🔐 Falló la configuración del PIN de administrador. Por favor intenta de nuevo.",
1022
- "adminProtectionEnabled": "🔐 Protección de administrador activada. Todas las acciones requieren autenticación PIN.",
1023
- "adminProtectionDisabled": "🔐 Protección de administrador desactivada. Todas las acciones están disponibles sin PIN.",
1024
- "autoDetectedI18nDirectory": "📂 Directorio i18n auto-detectado: {directory}",
1025
- "initializingProject": "⚙️ Inicializando configuración del proyecto...",
1026
- "createdSampleTranslationFile": "✅ Archivo de traducción de ejemplo creado: {file}",
1027
- "languageSelectionTitle": "🌐 Configuración de Idioma",
1011
+ "adminPinDescription2": "Déjelo en blanco para omitir la configuración del PIN",
1012
+ "adminPinDescription3": "Si configura un PIN, será necesario para todas las acciones seguras futuras.",
1013
+ "adminPinDescription4": "Cifrado AES-256-GCM utilizado para el almacenamiento seguro del PIN.",
1014
+ "adminPinSetupPrompt": "Ingrese el PIN de administrador (4 dígitos) o déjelo en blanco para omitir:",
1015
+ "skippingAdminPinSetup": "Saltando la configuración del PIN de administrador...",
1016
+ "settingUpAdminPin": "🔐 Configurando el PIN de administrador...",
1017
+ "enterAdminPin": "Ingrese el PIN de administrador:",
1018
+ "confirmAdminPin": "Confirmar PIN de administrador:",
1019
+ "pinMismatch": "Los PIN no coinciden. Por favor inténtalo de nuevo.",
1020
+ "adminPinSetupSuccess": "🔐 ¡La configuración del PIN de administrador fue exitosa!",
1021
+ "adminPinSetupFailure": "🔐 Error al configurar el PIN de administrador. Por favor inténtalo de nuevo.",
1022
+ "adminProtectionEnabled": "🔐 Protección de administrador habilitada. Todas las acciones requieren autenticación con PIN.",
1023
+ "adminProtectionDisabled": "🔐 Protección de administrador deshabilitada. Todas las acciones ahora están disponibles sin PIN.",
1024
+ "autoDetectedI18nDirectory": "Directorio i18n detectado automáticamente: {directory}",
1025
+ "initializingProject": "⚙️ Inicializando la configuración del proyecto...",
1026
+ "createdSampleTranslationFile": "✅ Archivo de traducción de muestra creado: {file}",
1027
+ "languageSelectionTitle": "🌐 Configuración de idioma",
1028
1028
  "available": "Disponible",
1029
1029
  "defaultLanguages": "📝 Idiomas predeterminados: {languages}",
1030
- "enterLanguageCodes": "🎯 Ingresa códigos de idioma objetivo (separados por comas, ej. de, es, fr, ru):",
1031
- "targetLanguages": "🌍 Idiomas Objetivo",
1032
- "foundSourceFiles": "📄 Encontrados {count} archivos fuente para analizar",
1033
- "processingLanguage": "🔄 Procesando idioma: {language}",
1034
- "fileProcessingResult": "✅ Procesado {file}: {translated}/{total} claves ({percentage}%)",
1035
- "overallProgress": "📊 Progreso General: {translated}/{total} claves procesadas ({percentage}%)",
1036
- "initializationSummaryTitle": "📋 Resumen de Inicialización",
1030
+ "enterLanguageCodes": "🎯 Introduzca los códigos del idioma de destino (separados por comas, por ejemplo, de, es, fr, ru):",
1031
+ "targetLanguages": "🌍 Idiomas de destino",
1032
+ "foundSourceFiles": "📄 Encontrado {count} archivos fuente para analizar",
1033
+ "processingLanguage": "🔄 Idioma de procesamiento: {language}",
1034
+ "fileProcessingResult": "✅ Procesado {file}: {translated}/{total} llaves ({percentage}%)",
1035
+ "overallProgress": "📊 Progreso general: {translated}/{total} claves procesadas ({percentage}%)",
1036
+ "initializationSummaryTitle": "📋 Resumen de inicialización",
1037
1037
  "languageSummary": "{icon} {name} ({code}): {percentage}% completo",
1038
1038
  "languageFiles": "📄 Archivos: {count}",
1039
1039
  "languageKeys": "🔤 Claves: {translated}/{total}",
1040
- "languageMissing": "⚠️ Faltantes: {count}",
1041
- "initializationCompletedSuccessfully": "🎉 ¡Inicialización del proyecto completada exitosamente!",
1042
- "nextStepsTitle": "🚀 Siguientes Pasos",
1043
- "nextStep1": "1. Revisa los archivos de traducción generados en tu directorio locales/",
1044
- "nextStep2": "2. Agrega traducciones para cada idioma objetivo",
1045
- "nextStep3": "3. Ejecuta 'npm run i18ntk' nuevamente para validar traducciones",
1046
- "detectedFrameworks": "✅ Framework(s) i18n detectado(s): {frameworks}",
1040
+ "languageMissing": "⚠️ Falta: {count}",
1041
+ "initializationCompletedSuccessfully": "🎉 ¡La inicialización del proyecto se completó con éxito!",
1042
+ "nextStepsTitle": "🚀 Próximos pasos",
1043
+ "nextStep1": "1. Revise los archivos de traducción generados en su directorio local/",
1044
+ "nextStep2": "2. Agregue traducciones para cada idioma de destino.",
1045
+ "nextStep3": "3. Ejecute 'npm run i18ntk' nuevamente para validar las traducciones.",
1046
+ "detectedFrameworks": "✅ Marco(s) i18n detectado(s): {frameworks}",
1047
1047
  "setup": {
1048
1048
  "title": "Configuración",
1049
1049
  "question": "Pregunta de configuración",
1050
- "opt_single": "Archivo único",
1050
+ "opt_single": "Fila india",
1051
1051
  "opt_modular": "Modular",
1052
1052
  "opt_existing": "Existente",
1053
1053
  "choice_prompt": "Elige una opción:",
1054
1054
  "opt_confirm": "Confirmar",
1055
1055
  "opt_cancel": "Cancelar",
1056
- "apply_all_prompt": "¿Aplicar esta estructura a todos los idiomas? (s/N):",
1057
- "per_language_intro": "Has elegido configurar los idiomas individualmente. Estos son los idiomas disponibles:",
1056
+ "apply_all_prompt": "¿Aplicar esta estructura a todos los idiomas? (sí/no):",
1057
+ "per_language_intro": "Ha elegido configurar los idiomas individualmente. Estos son los idiomas disponibles:",
1058
1058
  "available_languages": "Idiomas disponibles: {languages}",
1059
- "include_prompt": "Ingresa los códigos de idioma separados por comas (ej. 'de,fr,es'):"
1059
+ "include_prompt": "Ingrese códigos de idioma separados por comas para incluir (por ejemplo, 'de,fr,es'):"
1060
1060
  },
1061
1061
  "warnings": {
1062
- "noPackageJson": "No se encontró package.json. No se puede auto-detectar el framework i18n."
1062
+ "noPackageJson": "No se encontró ningún paquete.json. No se puede detectar automáticamente el marco i18n."
1063
1063
  },
1064
- "errorsPackageJsonRead": "Error al leer package.json: {error}",
1065
- "errorsNoFramework": "No se detectó framework i18n. Por favor instala uno o especifica manualmente.",
1064
+ "errorsPackageJsonRead": "Error al leer paquete.json: {error}",
1065
+ "errorsNoFramework": "No se detectó ningún marco i18n. Instale uno o especifíquelo manualmente.",
1066
1066
  "suggestions": {
1067
- "noFramework": "No se detectó framework i18n. Considera usar uno de los siguientes:",
1068
- "installFramework": "Para instalar un framework, ejecuta: npm install <package-name>"
1067
+ "noFramework": "No se detectó ningún marco i18n. Considere usar uno de los siguientes:",
1068
+ "installFramework": "Para instalar un marco, ejecute: npm install <nombre-paquete>"
1069
1069
  },
1070
1070
  "frameworks": {
1071
1071
  "react": "- Reaccionar i18next (reaccionar-i18next)",
1072
1072
  "vue": "- Vue i18n (vue-i18n)",
1073
1073
  "i18next": "- i18siguiente (i18siguiente)",
1074
- "nuxt": "-Nuxt i18n (@nuxtjs/i18n)",
1074
+ "nuxt": "- Nuxt i18n (@nuxtjs/i18n)",
1075
1075
  "svelte": "- Esbelto i18n (esbelto-i18n)"
1076
1076
  },
1077
- "continueWithoutI18nPrompt": "No se detectó framework i18n. ¿Deseas continuar sin uno? (s/N):",
1078
- "detectedI18nFramework": "Framework i18n detectado: {frameworks}",
1077
+ "continueWithoutI18nPrompt": "No se detectó ningún marco i18n. ¿Quieres seguir sin uno? (sí/no):",
1078
+ "detectedI18nFramework": "Marco i18n detectado: {frameworks}",
1079
1079
  "existingDirectoryItem": "{index}. {location}",
1080
- "usingExistingStructure": "Usando estructura existente: {dir}",
1080
+ "usingExistingStructure": "Usando la estructura existente: {dir}",
1081
1081
  "creatingSourceDirectory": "Creando directorio fuente: {dir}",
1082
- "creatingSourceLanguageDirectory": "Creando directorio de idioma fuente: {dir}",
1082
+ "creatingSourceLanguageDirectory": "Creando el directorio del idioma de origen: {dir}",
1083
1083
  "errors": {
1084
- "errorExecutingCommand": "Error al ejecutar comando: {error}",
1084
+ "errorExecutingCommand": "Error al ejecutar el comando: {error}",
1085
1085
  "sourceDirectoryNotFound": "Directorio fuente no encontrado: {dir}",
1086
- "sourceLanguageDirectoryNotFound": "Directorio de idioma fuente no encontrado: {dir}",
1086
+ "sourceLanguageDirectoryNotFound": "Directorio del idioma de origen no encontrado: {dir}",
1087
1087
  "noJsonFilesInSourceDirectory": "No se encontraron archivos JSON en el directorio fuente: {dir}",
1088
- "invalidFilePathDetected": "Ruta de archivo inválida detectada",
1089
- "initializationFailed": "Falló la inicialización: {error}",
1088
+ "invalidFilePathDetected": "Se detectó una ruta de archivo no válida",
1089
+ "initializationFailed": "La inicialización falló: {error}",
1090
1090
  "noFramework": "No se detectó ningún marco i18n. Continúe con el modo genérico.",
1091
1091
  "packageJsonRead": "Error al leer el paquete.json."
1092
1092
  },
1093
- "processingFile": "Procesando {file} para {language}...",
1094
- "fileAlreadyExistsMerging": "El archivo {file} ya existe. Fusionando nuevas claves.",
1095
- "createdNewFile": "Archivo nuevo creado: {file}",
1093
+ "processingFile": "Tratamiento {file} para {language}...",
1094
+ "fileAlreadyExistsMerging": "Archivo {file} ya existe. Fusionando nuevas claves.",
1095
+ "createdNewFile": "Nuevo archivo creado: {file}",
1096
1096
  "updatedFile": "Archivo actualizado: {file}",
1097
- "skippingExcludedFile": "Omitiendo {file} para {language} ya que está excluido.",
1097
+ "skippingExcludedFile": "Salto a la comba {file} para {language} ya que está excluido.",
1098
1098
  "continuingWithoutAdminPin": "Continuar sin configurar el PIN de administrador.",
1099
- "createdSourceLanguageDirectory": "Directorio de idioma fuente creado: {dir}",
1099
+ "createdSourceLanguageDirectory": "Directorio de idioma de origen creado: {dir}",
1100
1100
  "errorSettingUpAdminPin": "Error al configurar el PIN de administrador: {error}",
1101
1101
  "noTargetLanguagesSpecified": "No se han especificado idiomas de destino.",
1102
1102
  "translationFilesCreatedWarning": "Los archivos de traducción se crearon con marcadores de posición; revisión antes del uso en producción.",
1103
1103
  "warningCannotReadSourceDir": "Advertencia: no se puede leer el directorio fuente {dir}: {error}",
1104
- "warningInvalidLanguageCodes": "Advertencia: se ignoran códigos de idioma no válidos: {languages}",
1104
+ "warningInvalidLanguageCodes": "Advertencia: se ignoran los códigos de idioma no válidos: {languages}",
1105
1105
  "warningProceedingWithoutFramework": "Procediendo sin marco i18n detectado."
1106
1106
  },
1107
1107
  "language": {
1108
- "title": "🌍 Cambiar Idioma",
1109
- "separator": "============================================================",
1108
+ "title": "🌍 Cambiar idioma",
1109
+ "separator": "===============================================================",
1110
1110
  "current": "Idioma actual: {language}",
1111
- "available": "Idiomas Disponibles:",
1111
+ "available": "Idiomas disponibles:",
1112
1112
  "languageOption": "{index}. {displayName}{current}",
1113
- "backToMainMenu": "Volver al Menú Principal",
1114
- "prompt": "Selecciona un idioma (0-8):",
1113
+ "backToMainMenu": "Volver al menú principal",
1114
+ "prompt": "Seleccione un idioma (0-8):",
1115
1115
  "cancelled": "Cambio de idioma cancelado.",
1116
- "invalid": "Opción inválida. Por favor intenta de nuevo.",
1117
- "changed": "Idioma cambiado a: {language}",
1118
- "changeFailed": "Error al cambiar el idioma: {error}",
1119
- "pressEnterToContinue": "Presiona Enter para continuar..."
1116
+ "invalid": "Elección no válida. Por favor inténtalo de nuevo.",
1117
+ "changed": "El idioma cambió a: {language}",
1118
+ "changeFailed": "No se pudo cambiar el idioma: {error}",
1119
+ "pressEnterToContinue": "Presione Entrar para continuar..."
1120
1120
  },
1121
1121
  "maintainLanguagePurity": {
1122
- "workflow_title": "🚀 Flujo de Trabajo de Mantenimiento de Pureza de Idioma",
1123
- "step1_title": "📊 PASO 1: Evaluación Inicial de Pureza de Idioma",
1124
- "step2_title": "🔧 PASO 2: Detectar y Auto-Corregir Desajustes de Idioma",
1125
- "step3_title": "🌐 PASO 3: Aplicar Traducciones Automáticas",
1126
- "step4_title": "✅ PASO 4: Evaluación Final de Pureza de Idioma",
1127
- "workflow_error": "❌ Error en el Flujo de Trabajo: {errorMessage}",
1128
- "running_initial_validation": "Ejecutando validación inicial de pureza de idioma...",
1122
+ "workflow_title": "🚀 Flujo de trabajo de mantenimiento de la pureza del lenguaje",
1123
+ "step1_title": "📊 PASO 1: Evaluación inicial de la pureza del lenguaje",
1124
+ "step2_title": "🔧 PASO 2: Detectar y corregir automáticamente discrepancias de idioma",
1125
+ "step3_title": "🌐 PASO 3: Aplicar traducciones automáticas",
1126
+ "step4_title": "✅ PASO 4: Evaluación final de la pureza del lenguaje",
1127
+ "workflow_error": "❌ Error de flujo de trabajo: {errorMessage}",
1128
+ "running_initial_validation": "Ejecutando la validación inicial de pureza del lenguaje...",
1129
1129
  "initial_assessment_complete": "✅ Evaluación inicial completa: {count} violaciones encontradas",
1130
1130
  "initial_assessment_warnings": "⚠️ Evaluación inicial completada con advertencias",
1131
- "detecting_fixing_mismatches": "Detectando y corrigiendo desajustes de idioma...",
1132
- "detection_complete_applying_fixes": "Detección completa. Aplicando auto-correcciones...",
1133
- "mismatch_fixes_complete": "✅ Correcciones de desajustes de idioma completas: {count} correcciones aplicadas",
1134
- "mismatch_fixes_warnings": "⚠️ Correcciones de desajustes de idioma completadas con advertencias",
1131
+ "detecting_fixing_mismatches": "Detectar y corregir discrepancias de idioma...",
1132
+ "detection_complete_applying_fixes": "Detección completa. Aplicando correcciones automáticas...",
1133
+ "mismatch_fixes_complete": "✅ Corrección de discrepancias de idioma completadas: {count} correcciones aplicadas",
1134
+ "mismatch_fixes_warnings": "⚠️ Correcciones de discrepancias de idioma completadas con advertencias",
1135
1135
  "applying_automatic_translations": "Aplicando traducciones automáticas...",
1136
- "translation_preview_complete": "Vista previa de traducción completa. Aplicando traducciones..."
1136
+ "translation_preview_complete": "Vista previa de la traducción completa. Aplicando traducciones..."
1137
1137
  },
1138
1138
  "menu": {
1139
1139
  "title": "🌐 MENÚ DE GESTIÓN I18NTK",
1140
- "separator": "============================================================",
1140
+ "separator": "===============================================================",
1141
1141
  "options": {
1142
1142
  "init": "🚀 Inicializar nuevos idiomas",
1143
1143
  "analyze": "🔍 Analizar traducciones",
1144
1144
  "validate": "✅ Validar traducciones",
1145
- "usage": "📊 Verificar uso de claves",
1146
- "complete": "🎯 Completar traducciones (100% cobertura)",
1147
- "sizing": "📏 Analizar dimensionamiento",
1148
- "fix": "🛠️ Corregir traducciones provisionales",
1149
- "scanner": "🔍 Buscar problemas de i18n",
1150
- "translate": "🌐 Traducción Automática (Beta)",
1151
- "workflow": "🔄 Ejecutar flujo completo",
1145
+ "usage": "📊 Verifique el uso de claves",
1146
+ "complete": "🎯 Traducciones completas (100% de cobertura)",
1147
+ "sizing": "📏 Analizar tallas",
1148
+ "fix": "🛠️ Corregir traducciones de marcadores de posición",
1149
+ "scanner": "🔍 Escanee en busca de problemas con i18n",
1150
+ "translate": "🌐 Traducción automática (Beta)",
1151
+ "workflow": "🔄 Ejecute el flujo de trabajo completo",
1152
1152
  "status": "📋 Mostrar estado del proyecto",
1153
- "delete": "🗑️ Eliminar todos los informes",
1154
- "language": "🌍 Cambiar idioma de interfaz",
1155
- "settings": "⚙️ Configuración",
1153
+ "delete": "🗑️ Eliminar todos los informes",
1154
+ "language": "🌍 Cambiar idioma de la interfaz de usuario",
1155
+ "settings": "⚙️ Configuración",
1156
1156
  "help": "❓ Ayuda",
1157
1157
  "debug": "🔧 Herramientas de depuración",
1158
1158
  "exit": "🚪 Salir"
1159
1159
  },
1160
- "update": "📦 Actualizar paquete",
1160
+ "update": "📦 Paquete de actualización",
1161
1161
  "goodbye": "👋 ¡Adiós!",
1162
- "invalidChoice": " Opción inválida. Por favor seleccione 0-15.",
1163
- "returning": "🔄 Volviendo al menú principal...",
1164
- "invalidOption": "Opción inválida. Por favor intente de nuevo.",
1165
- "nonInteractiveModeWarning": "⚠️ Modo no interactivo detectado. Menú mostrado solo como referencia.",
1166
- "useDirectExecution": "💡 Use: node main/i18ntk-manage.js --command=<comando> para ejecución directa.",
1167
- "useHelpForCommands": "📖 Use: node main/i18ntk-manage.js --help para ver comandos disponibles.",
1168
- "returnToMainMenu": "Presione Enter para volver al Menú Principal.",
1169
- "pressEnterToContinue": "Presione Enter para continuar...",
1162
+ "invalidChoice": "Elección no válida. Seleccione 0-15.",
1163
+ "returning": "Volviendo al menú principal...",
1164
+ "invalidOption": "Opción no válida. Por favor inténtalo de nuevo.",
1165
+ "nonInteractiveModeWarning": "Modo no interactivo detectado. Menú mostrado solo como referencia.",
1166
+ "useDirectExecution": "Uso: nodo principal/manage/index.js --command=<command> para ejecución directa.",
1167
+ "useHelpForCommands": "Utilice: node main/manage/index.js --ayuda para los comandos disponibles.",
1168
+ "returnToMainMenu": "Presione Entrar para regresar al Menú principal.",
1169
+ "pressEnterToContinue": "Presione Entrar para continuar...",
1170
1170
  "selectOptionPrompt": "Seleccione una opción:",
1171
1171
  "selectDebugToolPrompt": "Seleccione una herramienta de depuración:",
1172
1172
  "selectLogPrompt": "Seleccione un archivo de registro (1-{count}):",
1173
- "autoDetectedI18nDirectory": "📂 Directorio i18n auto-detectado: {directory}",
1173
+ "autoDetectedI18nDirectory": "Directorio i18n detectado automáticamente: {directory}",
1174
1174
  "executingCommand": "Ejecutando comando: {command}",
1175
1175
  "unknownCommand": "Comando desconocido: {command}",
1176
1176
  "languageOption": "{index}. {displayName}{current}",
1177
1177
  "debugTools": {
1178
- "1": "Análisis de archivo de registro",
1178
+ "1": "Análisis de archivos de registro",
1179
1179
  "2": "Análisis de uso de claves de traducción",
1180
- "3": "Análisis de completitud de traducciones",
1181
- "4": "Análisis de formato de traducción",
1182
- "5": "Análisis de tipo de traducción",
1183
- "6": "Análisis de estructura de traducción"
1180
+ "3": "Análisis de integridad de la traducción",
1181
+ "4": "Análisis del formato de traducción.",
1182
+ "5": "Análisis del tipo de traducción",
1183
+ "6": "Análisis de la estructura de traducción."
1184
1184
  },
1185
1185
  "native_translations": {
1186
1186
  "exact_translation_found": "✅ {keyPath}: {value}",
1187
- "no_exact_translation": "⚠️ No se encontró traducción exacta para '{keyPath}', claves similares encontradas:",
1188
- "similar_key": "- {key} ({similarity}% coincidencia)",
1189
- "processing_language_files": "🔄 Procesando {count} archivos de idioma...",
1187
+ "no_exact_translation": "⚠️ No hay traducción exacta para '{keyPath}', se encontraron claves similares:",
1188
+ "similar_key": "- {key} ({similarity}% fósforo)",
1189
+ "processing_language_files": "🔄 Procesamiento {count} archivos de idioma...",
1190
1190
  "file_not_found": "⚠️ Archivo no encontrado: {file}",
1191
- "processing_translations": "🌍 Procesando traducciones de {code}...",
1192
- "backup_created": "📋 Respaldo creado: {filename}",
1191
+ "processing_translations": "🌍 Procesamiento {code} traducciones...",
1192
+ "backup_created": "📋 Copia de seguridad creada: {filename}",
1193
1193
  "error_parsing_json": "❌ Error al analizar {code}.json: {errorMessage}",
1194
- "existing_keys_found": "📊 {code}: Encontradas {count} claves existentes",
1194
+ "existing_keys_found": "📊 {code}: Encontró {count} claves existentes",
1195
1195
  "error_writing_json": "❌ Error al escribir {code}.json: {errorMessage}",
1196
- "translations_replaced": "📊 {code}: {count} traducciones reemplazadas",
1197
- "translation_replacement_complete": "✅ ¡Reemplazo de traducciones completado!",
1198
- "total_replacements": "📊 Total de reemplazos: {count}",
1199
- "dry_run_mode": "⚠️ MODO PRUEBA - No se modificaron archivos",
1200
- "tool_title": "🌍 Reemplazador de Traducciones Nativas v1.10.1",
1201
- "tool_separator": "======================================",
1202
- "dry_run_warning": "⚠️ Ejecutando en modo PRUEBA - no se modificarán archivos",
1203
- "error_during_replacement": "❌ Error durante el reemplazo de traducción:"
1196
+ "translations_replaced": "📊 {code}: {count} traducciones reemplazado",
1197
+ "translation_replacement_complete": "✅ ¡Reemplazo de traducción completo!",
1198
+ "total_replacements": "📊 Reemplazos totales: {count}",
1199
+ "dry_run_mode": "⚠️ MODO DE FUNCIONAMIENTO EN SECO: no se modificaron archivos",
1200
+ "tool_title": "🌍 Reemplazo de traducción nativo v1.9.1",
1201
+ "tool_separator": "========================================",
1202
+ "dry_run_warning": "⚠️ Ejecutando en modo DRY RUN: no se modificarán archivos",
1203
+ "error_during_replacement": "❌ Error durante el reemplazo de la traducción:"
1204
1204
  }
1205
1205
  },
1206
1206
  "config": {
1207
- "dirFallbackWarning": "⚠️ Directorio {dir} no encontrado. Usando {fallback}.",
1208
- "dirInvalidError": "❌ Directorio inválido: {dir}"
1207
+ "dirFallbackWarning": "⚠️ Directorio {dir} extraviado. Usando {fallback}.",
1208
+ "dirInvalidError": "❌ Directorio no válido: {dir}"
1209
1209
  },
1210
1210
  "operations": {
1211
- "completed": "✅ ¡Operación completada exitosamente!",
1212
- "deleteReportsTitle": "🗑️ Eliminar Informes y Registros",
1211
+ "completed": "✅ ¡Operación finalizada con éxito!",
1212
+ "deleteReportsTitle": "🗑️ Eliminar informes y registros",
1213
1213
  "scanningForFiles": "🔍 Buscando archivos para eliminar...",
1214
1214
  "noFilesFoundToDelete": "✅ No se encontraron archivos para eliminar.",
1215
1215
  "availableDirectories": "📁 Directorios disponibles:",
@@ -1217,25 +1217,25 @@
1217
1217
  "andMore": "y más...",
1218
1218
  "cancelOption": "Cancelar",
1219
1219
  "cancelReportOption": "Cancelar / Volver al Menú",
1220
- "invalidSelection": "❌ Selección inválida.",
1221
- "foundFilesInSelectedDirectories": "📊 Encontrados {count} archivos en directorios seleccionados:",
1220
+ "invalidSelection": "❌ Selección no válida.",
1221
+ "foundFilesInSelectedDirectories": "📊 Encontrado {count} archivos en directorios seleccionados:",
1222
1222
  "deletionOptions": "🗑️ Opciones de eliminación:",
1223
1223
  "deleteAllFiles": "Eliminar todos los archivos",
1224
- "keepLast3Files": "Mantener últimos 3 archivos (por fecha)",
1225
- "keepLast5Files": "Mantener últimos 5 archivos (por fecha)",
1224
+ "keepLast3Files": "Conservar los últimos 3 archivos (por fecha)",
1225
+ "keepLast5Files": "Conservar los últimos 5 archivos (por fecha)",
1226
1226
  "noFilesToDelete": "✅ No hay archivos para eliminar.",
1227
- "filesToDeleteCount": "📋 Archivos a eliminar: {count}",
1228
- "filesToKeepCount": "📋 Archivos a mantener: {count}",
1229
- "confirmDeletion": "⚠️ ¿Está seguro de que desea eliminar estos archivos? (s/N):",
1227
+ "filesToDeleteCount": "📋 Archivos para eliminar: {count}",
1228
+ "filesToKeepCount": "📋 Archivos para conservar: {count}",
1229
+ "confirmDeletion": "⚠️ ¿Estás seguro de que deseas eliminar estos archivos? (sí/no):",
1230
1230
  "deletedFile": "✅ Eliminado: {filename}",
1231
- "failedToDeleteFile": "❌ Error al eliminar {filename}: {error}",
1231
+ "failedToDeleteFile": "❌ No se pudo eliminar {filename}: {error}",
1232
1232
  "cancelled": "❌ Operación cancelada.",
1233
1233
  "init": {
1234
- "title": "🚀 Inicializar Nuevo Idioma"
1234
+ "title": "🚀 Inicializar nuevo idioma"
1235
1235
  },
1236
1236
  "usage": {
1237
- "title": "📊 Verificar Uso de Claves",
1238
- "noUsedKeysHint": "Se encontraron traducciones pero sin uso en el código fuente. Verifique --source-dir y translationPatterns."
1237
+ "title": "📊 Verificar uso de claves",
1238
+ "noUsedKeysHint": "Traducciones encontradas pero sin uso en la fuente. Verifique --source-dir y TranslationPatterns."
1239
1239
  },
1240
1240
  "analyze": {
1241
1241
  "title": "🔍 Analizar Traducciones"
@@ -1244,687 +1244,717 @@
1244
1244
  "title": "✅ Validar Traducciones"
1245
1245
  },
1246
1246
  "settings": {
1247
- "title": "⚙️ Gestión de Configuración",
1248
- "separator": "============================================================"
1247
+ "title": "⚙️ Gestión de configuración",
1248
+ "separator": "==============================================================="
1249
1249
  },
1250
1250
  "complete": {
1251
- "deletingOldReport": "🗑️ Eliminando informe de uso antiguo para análisis nuevo",
1252
- "generatingFreshAnalysis": "🔄 Generando nuevo análisis de uso...",
1253
- "couldNotGenerate": "⚠️ No se pudo generar análisis de uso. Usando claves faltantes comunes.",
1254
- "reportNotFound": "⚠️ Informe de uso no encontrado. Generando nuevo análisis...",
1255
- "foundMissingKeys": "🔍 Encontradas {count} claves faltantes del análisis de uso",
1256
- "couldNotParse": "⚠️ No se pudo analizar el informe de uso. Usando claves faltantes comunes.",
1257
- "title": "🎯 COMPLETANDO TRADUCCIONES",
1258
- "separator": "============================================================",
1259
- "sourceDir": "📁 Directorio fuente: {sourceDir}",
1260
- "sourceLanguage": "🔤 Idioma fuente: {sourceLanguage}",
1261
- "dryRunMode": "🧪 MODO PRUEBA - No se modificarán archivos",
1262
- "languages": "🎯 Idiomas objetivo: {languages}",
1263
- "addingMissingKeys": "➕ Agregando claves faltantes a archivos de traducción...",
1264
- "processing": "🔄 Procesando {language}...",
1265
- "addedKeys": "✅ Agregadas {count} claves",
1251
+ "deletingOldReport": "🗑️ Eliminación del informe de uso anterior para realizar análisis nuevos",
1252
+ "generatingFreshAnalysis": "🔄 Generando nuevos análisis de uso...",
1253
+ "couldNotGenerate": "⚠️ No se pudo generar el análisis de uso. Usando claves faltantes comunes.",
1254
+ "reportNotFound": "⚠️ No se encontró el informe de uso. Generando nuevos análisis...",
1255
+ "foundMissingKeys": "🔍 Encontrado {count} claves faltantes en el análisis de uso",
1256
+ "couldNotParse": "⚠️ No se pudo analizar el informe de uso. Usando claves faltantes comunes.",
1257
+ "title": "🎯 COMPLETAR TRADUCCIONES",
1258
+ "separator": "===============================================================",
1259
+ "sourceDir": "📁 Directorio de fuentes: {sourceDir}",
1260
+ "sourceLanguage": "🔤 Idioma de origen: {sourceLanguage}",
1261
+ "dryRunMode": "🧪 MODO DE FUNCIONAMIENTO EN SECO: no se modificarán archivos",
1262
+ "languages": "🎯 Idiomas de destino: {languages}",
1263
+ "addingMissingKeys": "➕ Agregar claves faltantes a los archivos de traducción...",
1264
+ "processing": "🔄 Procesamiento {language}...",
1265
+ "addedKeys": "✅ Agregado {count} llaves",
1266
1266
  "changeDetails": "📝 {file}: {key}",
1267
1267
  "noChangesNeeded": "✅ No se necesitan cambios para {language}",
1268
- "summaryTitle": "📊 RESUMEN DE COMPLETADO",
1268
+ "summaryTitle": "📊 RESUMEN DE FINALIZACIÓN",
1269
1269
  "totalChanges": "📝 Cambios totales: {totalChanges}",
1270
1270
  "languagesProcessed": "🌐 Idiomas procesados: {languagesProcessed}",
1271
- "missingKeysAdded": "➕ Claves faltantes agregadas: {missingKeysAdded}",
1272
- "nextStepsTitle": "📋 SIGUIENTES PASOS",
1273
- "nextStep1": "1. Ejecutar análisis de uso:",
1271
+ "missingKeysAdded": "➕ Se agregaron claves faltantes: {missingKeysAdded}",
1272
+ "nextStepsTitle": "📋 PRÓXIMOS PASOS",
1273
+ "nextStep1": "1. Ejecute el análisis de uso:",
1274
1274
  "nextStep2": "2. Validar traducciones:",
1275
- "nextStep3": "3. Analizar completitud:",
1276
- "allKeysAvailable": "🎉 ¡Todas las claves de traducción están ahora disponibles!",
1275
+ "nextStep3": "3. Analizar la integridad:",
1276
+ "allKeysAvailable": "🎉 ¡Todas las claves de traducción ya están disponibles!",
1277
1277
  "runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
1278
- "pressEnterToContinue": "Presione Enter para continuar..."
1278
+ "pressEnterToContinue": "Presione Entrar para continuar..."
1279
1279
  },
1280
1280
  "updatePackage": {
1281
- "title": "📦 Actualizar Paquete i18n-toolkit",
1281
+ "title": "📦 Actualización del paquete i18n-toolkit",
1282
1282
  "description": "Esto actualizará el paquete i18n-toolkit a la última versión disponible en npm.",
1283
- "command": "Comando a ejecutar",
1284
- "confirm": "¿Está seguro de que desea proceder con la actualización? (s/N):",
1285
- "updating": "Actualizando paquete... Esto puede tomar un momento.",
1286
- "success": "✅ ¡i18n-toolkit actualizado exitosamente!",
1287
- "error": "❌ Error al actualizar i18n-toolkit",
1283
+ "command": "Comando para ejecutar",
1284
+ "confirm": "¿Está seguro de que desea continuar con la actualización? (sí/no):",
1285
+ "updating": "Actualizando paquete... Esto puede tardar un momento.",
1286
+ "success": "✅ ¡i18n-toolkit actualizado con éxito!",
1287
+ "error": "❌ No se pudo actualizar el kit de herramientas i18n",
1288
1288
  "cancelled": "❌ Actualización cancelada."
1289
1289
  }
1290
1290
  },
1291
1291
  "security": {
1292
- "pathValidationFailed": "validación_de_ruta_fallida",
1293
- "invalidInputType": "tipo_de_entrada_inválido",
1294
- "pathTraversalAttempt": "intento_de_atravesamiento_de_ruta",
1292
+ "pathValidationFailed": "ruta_validación_fallida",
1293
+ "invalidInputType": "tipo_entrada_inválida",
1294
+ "pathTraversalAttempt": "intento_trazado_ruta",
1295
1295
  "pathValidated": "✅ Ruta validada exitosamente",
1296
- "pathValidationError": "error_de_validación_de_ruta",
1296
+ "pathValidationError": "ruta_validación_error",
1297
1297
  "fileTooLarge": "Seguridad: Archivo demasiado grande: {filePath}",
1298
1298
  "fileReadError": "Seguridad: Error de lectura de archivo: {errorMessage}",
1299
- "contentTooLargeForFile": "Seguridad: Contenido demasiado grande para archivo: {filePath}",
1299
+ "contentTooLargeForFile": "Seguridad: Contenido demasiado grande para el archivo: {filePath}",
1300
1300
  "fileWriteError": "Seguridad: Error de escritura de archivo: {errorMessage}",
1301
- "jsonStringTooLarge": "Seguridad: Cadena JSON demasiado grande",
1302
- "jsonParseError": "Seguridad: Error al analizar JSON: {errorMessage}",
1303
- "inputContainsDisallowedCharacters": "Seguridad: La entrada contiene caracteres no permitidos",
1301
+ "jsonStringTooLarge": "Seguridad: cadena JSON demasiado grande",
1302
+ "jsonParseError": "Seguridad: error de análisis JSON: {errorMessage}",
1303
+ "inputContainsDisallowedCharacters": "Seguridad: la entrada contiene caracteres no permitidos",
1304
1304
  "unknownCommandArgument": "Seguridad: Argumento de comando desconocido: {key}",
1305
1305
  "unknown_command_argument": "Seguridad: Argumento de comando desconocido: {key}",
1306
1306
  "unknownConfigKey": "Seguridad: Clave de configuración desconocida: {key}",
1307
1307
  "unknown_config_key": "Seguridad: Clave de configuración desconocida: {key}",
1308
1308
  "securityAlert": "[ALERTA DE SEGURIDAD] {timestamp}: {event}",
1309
- "contentTooLarge": "Seguridad: Contenido demasiado grande para archivo: {validatedPath}",
1310
- "inputDisallowedCharacters": "Seguridad: La entrada contiene caracteres no permitidos",
1309
+ "contentTooLarge": "Seguridad: Contenido demasiado grande para el archivo: {validatedPath}",
1310
+ "inputDisallowedCharacters": "Seguridad: la entrada contiene caracteres no permitidos",
1311
1311
  "unknownCommandArg": "Argumento de comando desconocido",
1312
1312
  "logMessage": "[SEGURIDAD {level}] {timestamp}: {event}",
1313
1313
  "alertMessage": "[ALERTA DE SEGURIDAD] {timestamp}: {event}",
1314
1314
  "securityWarning": "[ADVERTENCIA DE SEGURIDAD] {timestamp}: {event}",
1315
- "json_parse_error": "Seguridad: Error al analizar JSON: {errorMessage}",
1315
+ "json_parse_error": "Seguridad: error de análisis JSON: {errorMessage}",
1316
1316
  "file_too_large": "Archivo demasiado grande",
1317
- "file_read_error": "Error de lectura de archivo",
1318
- "content_too_large_for_file": "Contenido demasiado grande para archivo",
1317
+ "file_read_error": "error de lectura de archivo",
1318
+ "content_too_large_for_file": "Contenido demasiado grande para el archivo",
1319
1319
  "file_write_error": "Error de escritura de archivo",
1320
- "json_string_too_large": "Cadena JSON demasiado grande",
1320
+ "json_string_too_large": "Cadena Json demasiado grande",
1321
1321
  "recursion_detected": "Recursión detectada en {operation}",
1322
- "operation_timeout": "Tiempo de espera de la operación: {operation}",
1323
- "operation_error": "Error en la operación {operation}: {error}",
1324
- "directory_read_error": "Error de lectura de directorio: {errorMessage}",
1322
+ "operation_timeout": "Tiempo de espera de operación: {operation}",
1323
+ "operation_error": "Error de operación en {operation}: {error}",
1324
+ "directory_read_error": "Error de lectura del directorio: {errorMessage}",
1325
1325
  "security_alert": "Alerta de seguridad"
1326
1326
  },
1327
1327
  "settings-cli": {
1328
1328
  "settings": {
1329
1329
  "mainMenu": {
1330
- "title": "Menú Principal:",
1331
- "uiSettings": "Configuración de Interfaz",
1330
+ "title": "Menú principal:",
1331
+ "uiSettings": "Configuración de la interfaz de usuario",
1332
1332
  "uiSettingsDesc": "Opciones de idioma, tema e interfaz",
1333
- "directorySettings": "Configuración de Directorios",
1334
- "directorySettingsDesc": "Rutas de directorios de origen y salida",
1335
- "scriptDirectorySettings": "Configuración de Directorios de Scripts",
1336
- "scriptDirectorySettingsDesc": "Rutas de directorios para operaciones de scripts individuales",
1337
- "processingSettings": "Configuración de Procesamiento",
1338
- "processingSettingsDesc": "Tamaño de lote, concurrencia y rendimiento",
1339
- "advancedSettings": "Configuración Avanzada",
1340
- "advancedSettingsDesc": "Validación, registro y opciones avanzadas",
1341
- "viewAllSettings": "Ver Todas las Configuraciones",
1342
- "viewAllSettingsDesc": "Mostrar configuración actual",
1333
+ "directorySettings": "Configuración del directorio",
1334
+ "directorySettingsDesc": "Rutas del directorio de origen y salida",
1335
+ "scriptDirectorySettings": "Configuración del directorio de secuencias de comandos",
1336
+ "scriptDirectorySettingsDesc": "Rutas de directorio para operaciones de script individuales",
1337
+ "processingSettings": "Configuración de procesamiento",
1338
+ "processingSettingsDesc": "Tamaño de lote, simultaneidad y rendimiento",
1339
+ "advancedSettings": "Configuración avanzada",
1340
+ "advancedSettingsDesc": "Validación, registro y opciones de expertos",
1341
+ "viewAllSettings": "Ver todas las configuraciones",
1342
+ "viewAllSettingsDesc": "Mostrar la configuración actual",
1343
1343
  "importExport": "Importar/Exportar",
1344
- "importExportDesc": "Respaldar y restaurar configuraciones",
1345
- "resetToDefaults": "Restablecer a Valores Predeterminados",
1346
- "resetToDefaultsDesc": "Restaurar configuración de fábrica",
1347
- "reportBug": "Reportar Error",
1348
- "reportBugDesc": "Enviar reporte de problema en GitHub",
1349
- "saveChanges": "Guardar Cambios",
1350
- "saveChangesDesc": "Guardar configuración actual en archivo",
1351
- "updatePackage": "Actualizar Paquete",
1352
- "updatePackageDesc": "Actualizar el paquete i18n-toolkit vía npm",
1344
+ "importExportDesc": "Configuración de copia de seguridad y restauración",
1345
+ "resetToDefaults": "Restablecer los valores predeterminados",
1346
+ "resetToDefaultsDesc": "Restaurar la configuración de fábrica",
1347
+ "reportBug": "Informar error",
1348
+ "reportBugDesc": "Enviar un informe de problema en GitHub",
1349
+ "saveChanges": "Guardar cambios",
1350
+ "saveChangesDesc": "Guardar la configuración actual en un archivo",
1351
+ "updatePackage": "Paquete de actualización",
1352
+ "updatePackageDesc": "Actualice el paquete i18n-toolkit a través de npm",
1353
1353
  "help": "Ayuda",
1354
1354
  "helpDesc": "Mostrar información de ayuda detallada",
1355
- "quit": "Salir",
1356
- "quitDesc": "Salir de configuración (con aviso de guardado si es necesario)",
1357
- "unsavedChangesWarning": "⚠️ Tienes cambios sin guardar",
1358
- "saveChangesBeforeQuit": "¿Deseas guardar los cambios antes de salir? (s/N):",
1359
- "selectOption": "Selecciona una opción:",
1360
- "goodbyeMessage": "¡Gracias por usar el administrador de configuración i18n!"
1355
+ "quit": "Abandonar",
1356
+ "quitDesc": "Salir de la configuración (con mensaje de guardar si es necesario)",
1357
+ "unsavedChangesWarning": "⚠️ Tienes cambios sin guardar",
1358
+ "saveChangesBeforeQuit": "¿Quieres guardar los cambios antes de salir? (sí/no):",
1359
+ "selectOption": "Seleccione una opción:",
1360
+ "goodbyeMessage": "¡Gracias por utilizar el administrador de configuración del i18n!"
1361
1361
  },
1362
- "goodbyeMessage": "¡Gracias por usar el administrador de configuración i18n!",
1363
- "relativePathHint": "Usa rutas relativas desde este directorio (ej., ./src/i18n/locales)",
1364
- "currentDirectory": "Directorio actual del proyecto"
1362
+ "goodbyeMessage": "¡Gracias por utilizar el administrador de configuración del i18n!",
1363
+ "relativePathHint": "Utilice rutas relativas desde este directorio (por ejemplo, ./src/i18n/locales)",
1364
+ "currentDirectory": "Directorio del proyecto actual"
1365
1365
  },
1366
1366
  "settings_manager": {
1367
- "error_loading_settings": "❌ Error al cargar configuración:",
1368
- "error_saving_settings": "❌ Error al guardar configuración:",
1369
- "error_setting_value": "❌ Error al establecer valor:",
1370
- "missing_required_setting": "❌ Falta configuración requerida: {prop}",
1371
- "invalid_language": "❌ Idioma inválido: {language}",
1372
- "invalid_source_language": "❌ Idioma fuente inválido: {sourceLanguage}",
1373
- "default_languages_must_be_array": "❌ defaultLanguages debe ser un array",
1374
- "invalid_date_format": "❌ Formato de fecha inválido: {dateFormat}. Formatos válidos: {validFormats}",
1375
- "invalid_time_format": "❌ Formato de hora inválido: {timeFormat}. Formatos válidos: {validFormats}",
1376
- "notifications_types_must_be_object": "❌ notifications.types debe ser un objeto",
1377
- "exclude_files_must_be_array": "❌ excludeFiles debe ser un array",
1378
- "exclude_dirs_must_be_array": "❌ excludeDirs debe ser un array",
1379
- "include_extensions_must_be_array": "❌ includeExtensions debe ser un array",
1380
- "invalid_batch_size": "❌ Tamaño de lote inválido. Debe ser un número positivo",
1381
- "invalid_max_concurrent_files": "❌ Máximo de archivos concurrentes inválido. Debe ser un número positivo",
1382
- "invalid_sizing_threshold": "❌ Umbral de tamaño inválido. Debe ser un número positivo",
1383
- "invalid_timeout": "❌ Tiempo de espera inválido. Debe ser al menos 1000ms",
1384
- "invalid_sizing_format": "❌ Formato de tamaño inválido: {sizingFormat}. Formatos válidos: {validFormats}",
1385
- "error_validating_settings": "❌ Error al validar configuración:",
1386
- "backup_created": "📋 Respaldo creado: {backupPath}",
1387
- "error_creating_backup": "❌ Error al crear respaldo:",
1388
- "language_not_supported": "El idioma '{language}' no está soportado. Disponibles: {availableLanguages}",
1389
- "ui_language_set": "🌍 Idioma de interfaz establecido a: {language}"
1367
+ "error_loading_settings": "❌ Error al cargar la configuración:",
1368
+ "error_saving_settings": "❌ Error al guardar la configuración:",
1369
+ "error_setting_value": "❌ Error al configurar el valor:",
1370
+ "missing_required_setting": "❌ Falta la configuración requerida: {prop}",
1371
+ "invalid_language": "❌ Idioma no válido: {language}",
1372
+ "invalid_source_language": "❌ Idioma de origen no válido: {sourceLanguage}",
1373
+ "default_languages_must_be_array": "❌ defaultLanguages ​​debe ser una matriz",
1374
+ "invalid_date_format": "❌ Formato de fecha no válido: {dateFormat}. Formatos válidos: {validFormats}",
1375
+ "invalid_time_format": "❌ Formato de hora no válido: {timeFormat}. Formatos válidos: {validFormats}",
1376
+ "notifications_types_must_be_object": "❌ Notificaciones.tipos debe ser un objeto.",
1377
+ "exclude_files_must_be_array": "❌ excluirFiles debe ser una matriz",
1378
+ "exclude_dirs_must_be_array": "❌ excluirDirs debe ser una matriz",
1379
+ "include_extensions_must_be_array": "❌ includeExtensions debe ser una matriz",
1380
+ "invalid_batch_size": "❌ Tamaño de lote no válido. debe ser un numero positivo",
1381
+ "invalid_max_concurrent_files": "❌ Archivos concurrentes máximos no válidos. debe ser un numero positivo",
1382
+ "invalid_sizing_threshold": "❌ Umbral de tamaño no válido. debe ser un numero positivo",
1383
+ "invalid_timeout": "❌ Tiempo de espera no válido. Debe ser al menos 1000 ms",
1384
+ "invalid_sizing_format": "❌ Formato de talla no válido: {sizingFormat}. Formatos válidos: {validFormats}",
1385
+ "error_validating_settings": "❌ Error al validar la configuración:",
1386
+ "backup_created": "📋 Copia de seguridad creada: {backupPath}",
1387
+ "error_creating_backup": "❌ Error al crear la copia de seguridad:",
1388
+ "language_not_supported": "Idioma '{language}' no es compatible. Disponible: {availableLanguages}",
1389
+ "ui_language_set": "🌍 Idioma de la interfaz de usuario configurado en: {language}"
1390
1390
  }
1391
1391
  },
1392
1392
  "settings": {
1393
- "title": "⚙️ Administración de Configuración",
1394
- "separator": "============================================================",
1395
- "goodbyeMessage": "¡Gracias por usar el administrador de configuración i18ntk!",
1396
- "relativePathHint": "Usa rutas relativas desde este directorio (ej., ./src/i18n/locales)",
1397
- "currentDirectory": "Directorio actual del proyecto",
1398
- "startingSettings": "Iniciando Configuración:",
1393
+ "title": "⚙️ Gestión de configuración",
1394
+ "separator": "===============================================================",
1395
+ "goodbyeMessage": "¡Gracias por utilizar el administrador de configuración de i18ntk!",
1396
+ "relativePathHint": "Utilice rutas relativas desde este directorio (por ejemplo, ./src/i18n/locales)",
1397
+ "currentDirectory": "Directorio del proyecto actual",
1398
+ "startingSettings": "Configuración inicial:",
1399
1399
  "pin": "ALFILER:",
1400
1400
  "reportBug": {
1401
- "title": "Reportar Error",
1402
- "description": "Reporta cualquier problema o error que encuentres",
1403
- "guidance": "Para reportar problemas efectivamente:",
1404
- "checkLogs": "1. Revisa los registros de depuración en tu directorio de proyecto",
1405
- "documentIssue": "2. Documenta el problema con pasos para reproducirlo",
1406
- "contactSupport": "3. Contacta a tu administrador de sistema o equipo de soporte",
1407
- "completed": "Guía de reporte de errores mostrada",
1408
- "instructions": "Sigue las instrucciones anteriores para reportar el error."
1401
+ "title": "Informar error",
1402
+ "description": "Informe cualquier problema o error que encuentre",
1403
+ "guidance": "Para informar problemas de manera efectiva:",
1404
+ "checkLogs": "1. Verifique los registros de depuración en el directorio de su proyecto",
1405
+ "documentIssue": "2. Documente el problema con pasos para reproducirlo.",
1406
+ "contactSupport": "3. Póngase en contacto con el administrador del sistema o el equipo de soporte.",
1407
+ "completed": "Se muestra una guía para informar errores",
1408
+ "instructions": "Siga las instrucciones anteriores para informar el error."
1409
1409
  },
1410
1410
  "mainMenu": {
1411
- "title": "Menú Principal:",
1412
- "uiSettings": "Configuración de Interfaz",
1411
+ "title": "Menú principal:",
1412
+ "uiSettings": "Configuración de la interfaz de usuario",
1413
1413
  "uiSettingsDesc": "Opciones de idioma, tema e interfaz",
1414
- "directorySettings": "Configuración de Directorios",
1415
- "directorySettingsDesc": "Rutas de directorios de origen y salida",
1416
- "processingSettings": "Configuración de Procesamiento",
1417
- "processingSettingsDesc": "Tamaño de lote, concurrencia y rendimiento",
1418
- "advancedSettings": "Configuración Avanzada",
1419
- "advancedSettingsDesc": "Validación, registro y opciones avanzadas",
1420
- "viewAllSettings": "Ver Todas las Configuraciones",
1421
- "viewAllSettingsDesc": "Mostrar configuración actual",
1414
+ "directorySettings": "Configuración del directorio",
1415
+ "directorySettingsDesc": "Rutas del directorio de origen y salida",
1416
+ "processingSettings": "Configuración de procesamiento",
1417
+ "processingSettingsDesc": "Tamaño de lote, simultaneidad y rendimiento",
1418
+ "advancedSettings": "Configuración avanzada",
1419
+ "advancedSettingsDesc": "Validación, registro y opciones de expertos",
1420
+ "viewAllSettings": "Ver todas las configuraciones",
1421
+ "viewAllSettingsDesc": "Mostrar la configuración actual",
1422
1422
  "importExport": "Importar/Exportar",
1423
- "updatePackage": "Actualizar Paquete",
1424
- "updatePackageDesc": "Actualizar el paquete i18n-toolkit vía npm",
1425
- "importExportDesc": "Respaldar y restaurar configuraciones",
1426
- "resetToDefaults": "Restablecer a Valores Predeterminados",
1427
- "resetToDefaultsDesc": "Restaurar configuración de fábrica",
1428
- "reportBug": "Reportar Error",
1429
- "reportBugDesc": "Enviar reporte de problema en GitHub",
1430
- "saveChanges": "Guardar Cambios",
1431
- "saveChangesDesc": "Guardar configuración actual en archivo",
1423
+ "updatePackage": "Paquete de actualización",
1424
+ "updatePackageDesc": "Actualice el paquete i18n-toolkit a través de npm",
1425
+ "importExportDesc": "Configuración de copia de seguridad y restauración",
1426
+ "resetToDefaults": "Restablecer los valores predeterminados",
1427
+ "resetToDefaultsDesc": "Restaurar la configuración de fábrica",
1428
+ "reportBug": "Informar error",
1429
+ "reportBugDesc": "Enviar un informe de problema en GitHub",
1430
+ "saveChanges": "Guardar cambios",
1431
+ "saveChangesDesc": "Guardar la configuración actual en un archivo",
1432
1432
  "help": "Ayuda",
1433
1433
  "helpDesc": "Mostrar información de ayuda detallada",
1434
- "quit": "Salir",
1435
- "quitDesc": "Salir de configuración (con aviso de guardado si es necesario)",
1436
- "unsavedChangesWarning": "⚠️ Tienes cambios sin guardar",
1437
- "saveChangesBeforeQuit": "¿Deseas guardar los cambios antes de salir? (s/N):",
1438
- "selectOption": "Selecciona una opción:",
1439
- "goodbyeMessage": "¡Gracias por usar el administrador de configuración i18n!",
1440
- "selectSettingPrompt": "Selecciona una configuración para editar (o 'b' para volver):",
1441
- "enterNewValue": "Ingresa nuevo valor:",
1442
- "updatedSuccessfully": "¡{setting} actualizado exitosamente!",
1443
- "scriptDirectorySettings": "Configuración de Directorios de Scripts",
1444
- "scriptDirectoryDesc": "Especifica directorios personalizados para cada script",
1445
- "scriptDirectorySettingsDesc": "Puedes establecer directorios personalizados para cada script. Si no se establece, se usará la configuración global.",
1446
- "currentDirectory": "Directorio actual del proyecto",
1447
- "securitySettings": "Configuración de Seguridad",
1434
+ "quit": "Abandonar",
1435
+ "quitDesc": "Salir de la configuración (con mensaje de guardar si es necesario)",
1436
+ "unsavedChangesWarning": "⚠️ Tienes cambios sin guardar",
1437
+ "saveChangesBeforeQuit": "¿Quieres guardar los cambios antes de salir? (sí/no):",
1438
+ "selectOption": "Seleccione una opción:",
1439
+ "goodbyeMessage": "¡Gracias por utilizar el administrador de configuración del i18n!",
1440
+ "selectSettingPrompt": "Seleccione una configuración para editar (o 'b' para regresar):",
1441
+ "enterNewValue": "Ingrese un nuevo valor:",
1442
+ "updatedSuccessfully": "{setting} actualizado exitosamente!",
1443
+ "scriptDirectorySettings": "Configuración del directorio de secuencias de comandos",
1444
+ "scriptDirectoryDesc": "Especificar directorios personalizados para cada script",
1445
+ "scriptDirectorySettingsDesc": "Puede configurar directorios personalizados para cada script. Si no se establece, se utilizarán las configuraciones globales.",
1446
+ "currentDirectory": "Directorio del proyecto actual",
1447
+ "securitySettings": "Configuración de seguridad",
1448
1448
  "securitySettingsDesc": "PIN de administrador y otras opciones de seguridad",
1449
- "backupSettings": "Configuración de Respaldo",
1450
- "backupSettingsDesc": "Configuración de respaldo y restauración"
1449
+ "backupSettings": "Configuración de copia de seguridad",
1450
+ "backupSettingsDesc": "Copia de seguridad y restauración de los ajustes de configuración"
1451
1451
  },
1452
1452
  "updatePackage": {
1453
- "title": "Actualizar Paquete",
1454
- "description": "Actualizar el paquete i18n-toolkit vía npm",
1455
- "command": "npm update i18ntk -g",
1453
+ "title": "Paquete de actualización",
1454
+ "description": "Actualice el paquete i18n-toolkit a través de npm",
1455
+ "command": "actualización de npm i18ntk -g",
1456
1456
  "success": "Actualización completada exitosamente.",
1457
- "failed": "Actualización fallida.",
1458
- "prompt": "¿Deseas actualizar el paquete ahora? (s/N):",
1457
+ "failed": "La actualización falló.",
1458
+ "prompt": "¿Quieres actualizar el paquete ahora? (sí/no):",
1459
1459
  "promptDesc": "Nota: Esto actualizará el paquete i18ntk a la última versión.",
1460
- "confirm": "s",
1460
+ "confirm": "y",
1461
1461
  "cancelled": "Actualización cancelada.",
1462
1462
  "error": "No se pudo actualizar el paquete",
1463
1463
  "updating": "Actualizando paquete..."
1464
1464
  },
1465
1465
  "admin": {
1466
- "selectOption": "Selecciona opción:",
1466
+ "selectOption": "Seleccionar opción:",
1467
1467
  "updateSuccess": "¡PIN de administrador actualizado exitosamente!",
1468
- "updateFailed": "Error al actualizar PIN de administrador.",
1469
- "protectionRemoved": "Protección de PIN de administrador eliminada.",
1468
+ "updateFailed": "No se pudo actualizar el PIN de administrador.",
1469
+ "protectionRemoved": "Se eliminó la protección del PIN de administrador.",
1470
1470
  "configSuccess": "¡PIN de administrador configurado exitosamente!",
1471
- "configFailed": "Error al configurar PIN de administrador.",
1472
- "setupPinPrompt": "¿Deseas configurar un PIN de administrador? (s/N):",
1471
+ "configFailed": "No se pudo configurar el PIN de administrador.",
1472
+ "setupPinPrompt": "¿Le gustaría configurar un PIN de administrador? (sí/no):",
1473
1473
  "pinUpdatedSuccess": "¡PIN de administrador actualizado exitosamente!",
1474
- "pinUpdatedFailed": "Error al actualizar PIN de administrador.",
1475
- "pinRemoved": "Protección de PIN de administrador eliminada.",
1474
+ "pinUpdatedFailed": "No se pudo actualizar el PIN de administrador.",
1475
+ "pinRemoved": "Se eliminó la protección del PIN de administrador.",
1476
1476
  "pinConfiguredSuccess": "¡PIN de administrador configurado exitosamente!",
1477
- "pinConfiguredFailed": "Error al configurar PIN de administrador.",
1477
+ "pinConfiguredFailed": "No se pudo configurar el PIN de administrador.",
1478
1478
  "accessDenied": "❌ Acceso denegado. Volviendo al menú.",
1479
1479
  "setupPin": "🔐 Configurando PIN de administrador...",
1480
- "setupFailed": "❌ Error al configurar PIN de administrador. Configuración no cambiada.",
1481
- "pinConfigured": "📌 El PIN de administrador está actualmente configurado.",
1480
+ "setupFailed": "❌ No se pudo configurar el PIN de administrador. La configuración no ha cambiado.",
1481
+ "pinConfigured": "📌 El PIN de administrador está configurado actualmente.",
1482
1482
  "options": "Opciones:",
1483
1483
  "changePin": "1) Cambiar PIN existente",
1484
- "removePin": "2) Eliminar protección de PIN",
1484
+ "removePin": "2) Eliminar la protección PIN",
1485
1485
  "cancel": "3) Cancelar",
1486
- "verifyCurrentPin": "🔐 Verifica el PIN actual primero:",
1487
- "settingNewPin": "🔄 Configurando nuevo PIN...",
1488
- "verifyToRemove": "🔐 Verifica el PIN actual para eliminar protección:",
1489
- "noPinConfigured": "🔓 No hay PIN de administrador configurado actualmente.",
1490
- "pinBenefits": "Configurar PIN de administrador agregará seguridad para:",
1491
- "benefitSecurity": "• Cambiar configuraciones de seguridad",
1492
- "benefitAdvanced": "• Modificar configuraciones avanzadas",
1486
+ "verifyCurrentPin": "🔐 Primero verifique el PIN actual:",
1487
+ "settingNewPin": "🔄 Configurando un nuevo PIN...",
1488
+ "verifyToRemove": "🔐 Verifique el PIN actual para eliminar la protección:",
1489
+ "noPinConfigured": "🔓 Actualmente no hay ningún PIN de administrador configurado.",
1490
+ "pinBenefits": "Configurar el PIN de administrador agregará seguridad para:",
1491
+ "benefitSecurity": "• Cambiar la configuración de seguridad",
1492
+ "benefitAdvanced": "• Modificación de configuraciones avanzadas",
1493
1493
  "benefitDebug": "• Acceder a herramientas de depuración",
1494
- "benefitReset": "• Restablecer configuraciones",
1495
- "setupCancelled": "⏭️ Configuración de PIN de administrador cancelada.",
1494
+ "benefitReset": "• Restablecer la configuración",
1495
+ "setupCancelled": "⏭️ Se canceló la configuración del PIN de administrador.",
1496
1496
  "operationCancelled": "❌ Operación cancelada.",
1497
- "startingSettings": "🎛️ Iniciando CLI de Configuración...",
1498
- "authRequired": "🔒 Autenticación de administrador requerida para: {label}",
1499
- "pinSetupTitle": "Configuración de PIN de Administrador",
1500
- "browserOpenFailed": "No se pudo abrir el navegador automáticamente.",
1501
- "manualVisit": "Por favor visita manualmente: {url}",
1502
- "browserOpened": "✅ ¡Navegador abierto exitosamente!"
1497
+ "startingSettings": "🎛️ Iniciando configuración CLI...",
1498
+ "authRequired": "🔒 Se requiere autenticación de administrador para: {label}",
1499
+ "pinSetupTitle": "Configuración del PIN de administrador",
1500
+ "browserOpenFailed": "No se pudo abrir automáticamente el navegador.",
1501
+ "manualVisit": "Por favor visite manualmente: {url}",
1502
+ "browserOpened": "✅ ¡El navegador se abrió correctamente!"
1503
1503
  },
1504
1504
  "importExport": {
1505
- "title": "Importar/Exportar Configuración",
1506
- "export": "Exportar Configuración",
1507
- "import": "Importar Configuración",
1508
- "backup": "Crear Respaldo",
1509
- "enterFilename": "Ingresa nombre de archivo (o presiona Enter para predeterminado):",
1510
- "exportSuccess": "Configuración exportada a {file}",
1511
- "exportFailed": "Error al exportar configuración: {error}",
1512
- "importFilename": "Ingresa nombre de archivo para importar:",
1505
+ "title": "Configuración de importación/exportación",
1506
+ "export": "Configuración de exportación",
1507
+ "import": "Importar configuración",
1508
+ "backup": "Crear copia de seguridad",
1509
+ "enterFilename": "Ingrese el nombre del archivo (o presione Enter para el valor predeterminado):",
1510
+ "exportSuccess": "Configuraciones exportadas a {file}",
1511
+ "exportFailed": "No se pudo exportar la configuración: {error}",
1512
+ "importFilename": "Ingrese el nombre del archivo para importar:",
1513
1513
  "fileNotFound": "Archivo no encontrado.",
1514
- "invalidFormat": "Formato de archivo de configuración inválido.",
1515
- "confirmImport": "Esto reemplazará todas las configuraciones actuales. Continuar? (y/N):",
1516
- "importSuccess": "Configuración importada exitosamente.",
1517
- "importFailed": "Error al importar configuración: {error}",
1518
- "backupSuccess": "Respaldo creado: {file}",
1519
- "backupFailed": "Error al crear respaldo: {error}",
1514
+ "invalidFormat": "Formato de archivo de configuración no válido.",
1515
+ "confirmImport": "Esto reemplazará todas las configuraciones actuales. ¿Continuar? (sí/no):",
1516
+ "importSuccess": "La configuración se importó correctamente.",
1517
+ "importFailed": "No se pudo importar la configuración: {error}",
1518
+ "backupSuccess": "Copia de seguridad creada: {file}",
1519
+ "backupFailed": "No se pudo crear la copia de seguridad: {error}",
1520
1520
  "exportFilenamePrompt": "Ingrese el nombre del archivo de exportación:",
1521
1521
  "importConfirm": "¿Importar este archivo de configuración? (sí/no):",
1522
1522
  "importFilenamePrompt": "Ingrese el nombre del archivo de importación:",
1523
1523
  "manageBackups": "Administrar copias de seguridad",
1524
1524
  "restore": "Restaurar configuración"
1525
1525
  },
1526
- "selectOption": "Selecciona opción:",
1527
- "resetToDefaultsTitle": "Restablecer Configuraciones a Valores Predeterminados",
1528
- "resetWarning1": "⚠️ Este restablecimiento restablecerá todas las configuraciones a sus valores predeterminados.",
1526
+ "selectOption": "Seleccione una opción:",
1527
+ "resetToDefaultsTitle": "Restablecer la configuración a los valores predeterminados",
1528
+ "resetWarning1": "⚠️ Esto restablecerá TODAS las configuraciones a sus valores predeterminados.",
1529
1529
  "resetWarning2": "Esta acción no se puede deshacer.",
1530
- "resetConfirm": "¿Estás seguro de que deseas continuar? (y/N):",
1531
- "resetSuccess": "Configuraciones restablecidas a valores predeterminados exitosamente.",
1532
- "resetFailed": "Error al restablecer configuraciones: {error}",
1533
- "resetDone": "Configuraciones restablecidas a valores predeterminados exitosamente.",
1534
- "resetScriptDirsDone": "Directorios de scripts restablecidos a valores predeterminados exitosamente.",
1535
- "saveSuccess": "Configuraciones guardadas exitosamente.",
1530
+ "resetConfirm": "¿Estás seguro de que quieres continuar? (sí/no):",
1531
+ "resetSuccess": "La configuración se restableció correctamente a los valores predeterminados.",
1532
+ "resetFailed": "No se pudo restablecer la configuración: {error}",
1533
+ "resetDone": "La configuración se restableció correctamente a los valores predeterminados.",
1534
+ "resetScriptDirsDone": "Los directorios de scripts se restablecieron correctamente a los valores predeterminados del sistema.",
1535
+ "saveSuccess": "La configuración se guardó correctamente.",
1536
1536
  "saveFailed": "No se pudo guardar la configuración.",
1537
1537
  "saveError": "Se proporcionaron configuraciones no válidas",
1538
1538
  "pressEnter": "Presione Entrar para continuar...",
1539
1539
  "initFailed": "No se pudo inicializar la configuración: {error}",
1540
1540
  "invalidValueFormat": "Formato de valor no válido.",
1541
1541
  "help": {
1542
- "title": "Ayuda de Configuración",
1542
+ "title": "Ayuda de configuración",
1543
1543
  "navigationTitle": "Navegación",
1544
- "navigation1": "1. Configuración General - Configura idioma de la interfaz, tema y preferencias básicas",
1545
- "navigation2": "2. Configuración de Directorios - Establece directorios de origen y salida para archivos de traducción",
1546
- "navigation3": "3. Configuración de Procesamiento - Configura tamaño de lote, concurrencia y opciones de rendimiento",
1547
- "navigation4": "4. Configuración Avanzada - Acceso a validación, registro y opciones de configuración experta",
1548
- "categoriesTitle": "Categorías de Configuración",
1549
- "categoryUI": "• Configuración de Interfaz: Idioma de la interfaz, tema de color y preferencias de visualización",
1550
- "categoryDirectory": "• Configuración de Directorios: Ubicación de archivos fuente y directorios de reporte de salida",
1551
- "categoryProcessing": "• Configuración de Procesamiento: Procesamiento por lotes, límites de archivos y ajuste de rendimiento",
1552
- "categoryAdvanced": "• Configuración Avanzada: Modo de depuración, registro de auditoría y opciones de seguridad",
1553
- "envVarsTitle": "Variables de Entorno",
1544
+ "navigation1": "1. Configuración general: configure el idioma, el tema y las preferencias básicas de la interfaz de usuario",
1545
+ "navigation2": "2. Configuración de directorio: establezca directorios de origen y de salida para archivos de traducción",
1546
+ "navigation3": "3. Configuración de procesamiento: configure el tamaño del lote, la simultaneidad y las opciones de rendimiento",
1547
+ "navigation4": "4. Configuración avanzada: acceda a opciones de validación, registro y configuración experta",
1548
+ "categoriesTitle": "Categorías de configuración",
1549
+ "categoryUI": "• Configuración de la interfaz de usuario: idioma de la interfaz, tema de color y preferencias de visualización",
1550
+ "categoryDirectory": "• Configuración del directorio: ubicación de los archivos de origen y directorios de informes de salida",
1551
+ "categoryProcessing": "• Configuración de procesamiento: procesamiento por lotes, límites de archivos y ajuste del rendimiento",
1552
+ "categoryAdvanced": "• Configuración avanzada: modo de depuración, registro de auditoría y opciones de seguridad",
1553
+ "envVarsTitle": "Variables de entorno",
1554
1554
  "envVar1": "• I18N_SOURCE_DIR: anula la ruta del directorio de origen predeterminado",
1555
1555
  "envVar2": "• I18N_OUTPUT_DIR: anula la ruta del directorio de salida predeterminada",
1556
1556
  "envVar3": "• I18N_DEBUG: Habilitar el modo de depuración (verdadero/falso)",
1557
- "cliUsageTitle": "Ejemplos de Uso de la CLI",
1558
- "cliUsage1": "? npx i18ntk --settings: Abrir el men? interactivo de configuraci?n",
1559
- "cliUsage2": "? npx i18ntk --settings --lang de: Abrir la configuraci?n en alem?n",
1560
- "cliUsage3": "? npx i18ntk --reset-settings: Restablecer toda la configuraci?n a valores predeterminados",
1561
- "navigation": "Usa números para seleccionar opciones, 'b' para regresar",
1562
- "editing": "Ingresa nuevos valores cuando se te solicite, o presiona Enter para mantener el actual",
1563
- "saving": "Usa 's' para guardar cambios antes de salir",
1564
- "reset": "Usa la opción 7 para restablecer todas las configuraciones a valores predeterminados"
1557
+ "cliUsageTitle": "Ejemplos de uso de CLI",
1558
+ "cliUsage1": " npx i18ntk --settings: abre el menú de configuración interactivo",
1559
+ "cliUsage2": " npx i18ntk --settings --lang de: Abrir configuración en alemán",
1560
+ "cliUsage3": " npx i18ntk --reset-settings: restablece todas las configuraciones a los valores predeterminados",
1561
+ "navigation": "Utilice las teclas numéricas para seleccionar opciones, 'b' para regresar",
1562
+ "editing": "Ingrese nuevos valores cuando se le solicite o presione Entrar para mantenerlos actualizados",
1563
+ "saving": "Utilice 's' para guardar los cambios antes de salir",
1564
+ "reset": "Utilice la opción 7 para restablecer todas las configuraciones a los valores predeterminados"
1565
1565
  },
1566
1566
  "categories": {
1567
- "uiSettings": "Configuración de Interfaz",
1568
- "directorySettings": "Configuración de Directorios",
1569
- "processingSettings": "Configuración de Procesamiento",
1570
- "advancedSettings": "Configuración Avanzada",
1571
- "scriptDirectorySettings": "Configuración de Directorios de Script",
1572
- "securitySettings": "Configuración de Seguridad"
1567
+ "uiSettings": "Configuración de la interfaz de usuario",
1568
+ "directorySettings": "Configuración del directorio",
1569
+ "processingSettings": "Configuración de procesamiento",
1570
+ "advancedSettings": "Configuración avanzada",
1571
+ "scriptDirectorySettings": "Configuración del directorio de secuencias de comandos",
1572
+ "securitySettings": "Configuración de seguridad"
1573
1573
  },
1574
1574
  "security": {
1575
- "title": "🔐 Configuración de Seguridad",
1576
- "description": "Configure protección de PIN de administrador y opciones de seguridad",
1577
- "currentPin": "PIN Actual:",
1575
+ "title": "🔐 Configuración de seguridad",
1576
+ "description": "Configurar las opciones de seguridad y protección del PIN de administrador",
1577
+ "currentPin": "PIN actual:",
1578
1578
  "pinConfigured": "✅ Configurado",
1579
1579
  "pinNotConfigured": "❌ No configurado",
1580
- "pinDisplay": "PIN Mostrado:",
1580
+ "pinDisplay": "Pantalla de PIN:",
1581
1581
  "menu": {
1582
- "enableDisable": "1) Habilitar/Deshabilitar Protección de PIN de Administrador",
1583
- "setupChange": "2) Configurar/Cambiar PIN de Administrador",
1584
- "sessionTimeout": "3) Tiempo de Sesión",
1585
- "maxAttempts": "4) Máximo Intentos Fallidos",
1586
- "lockoutDuration": "5) Duración de Bloqueo",
1587
- "back": "b) Volver al Menú Principal"
1582
+ "enableDisable": "1) Activar/Desactivar PIN de administrador",
1583
+ "setupChange": "2) Configurar/Cambiar PIN de administrador",
1584
+ "sessionTimeout": "3) Tiempo de espera de la sesión",
1585
+ "maxAttempts": "4) Máximo de intentos fallidos",
1586
+ "lockoutDuration": "5) Duración del bloqueo",
1587
+ "back": "b) Volver al menú principal"
1588
1588
  },
1589
1589
  "prompts": {
1590
- "enablePin": "¿Habilitar protección de PIN de administrador? (y/N):",
1591
- "disablePin": "¿Deshabilitar protección de PIN de administrador? (y/N):",
1592
- "enterTimeout": "Ingresa tiempo de sesión (en minutos):",
1593
- "enterMaxAttempts": "Ingresa máximo intentos fallidos:",
1594
- "enterLockoutDuration": "Ingresa duración de bloqueo (en minutos):"
1590
+ "enablePin": "¿Habilitar la protección con PIN de administrador? (sí/no):",
1591
+ "disablePin": "¿Desactivar la protección con PIN de administrador? (sí/no):",
1592
+ "enterTimeout": "Ingrese el tiempo de espera de la sesión (minutos):",
1593
+ "enterMaxAttempts": "Ingrese el máximo de intentos fallidos:",
1594
+ "enterLockoutDuration": "Ingrese la duración del bloqueo (minutos):"
1595
1595
  },
1596
1596
  "messages": {
1597
- "pinEnabled": "Protección de PIN de administrador habilitada",
1598
- "pinDisabled": "Protección de PIN de administrador deshabilitada",
1599
- "timeoutUpdated": "Tiempo de sesión actualizado a {minutes} minutos",
1600
- "maxAttemptsUpdated": "Máximo intentos fallidos actualizado a {attempts}",
1601
- "lockoutDurationUpdated": "Duración de bloqueo actualizada a {minutes} minutos"
1597
+ "pinEnabled": "Protección con PIN de administrador habilitada",
1598
+ "pinDisabled": "Protección con PIN de administrador deshabilitada",
1599
+ "timeoutUpdated": "Tiempo de espera de sesión actualizado a {minutes} minutos",
1600
+ "maxAttemptsUpdated": "Máximo de intentos fallidos actualizado a {attempts}",
1601
+ "lockoutDurationUpdated": "Duración del bloqueo actualizada a {minutes} minutos"
1602
1602
  }
1603
1603
  },
1604
1604
  "fields": {
1605
- "backup": {
1606
- "enabled": {
1607
- "label": "Habilitar Copia de Seguridad",
1608
- "description": "Habilitar copia de seguridad automática de configuraciones",
1609
- "help": "Habilitar/deshabilitar función de copia de seguridad"
1610
- },
1611
- "singleFileMode": {
1612
- "label": "Modo de Archivo Único",
1613
- "description": "ar archivo único para copias de seguridad",
1614
- "help": "ardar configuraciones en un archivo único"
1615
- },
1616
- "singleBackupFile": {
1617
- "label": "ta de Archivo de Copia de Seguridad",
1618
- "description": "Ruta al archivo de copia de seguridad",
1619
- "help": "ta al archivo de copia de seguridad único"
1620
- },
1621
- "retentionDays": {
1622
- "label": "Período de Retención",
1623
- "description": "Días para mantener archivos de copia de seguridad",
1624
- "help": "Número de días para retener archivos de copia de seguridad antiguos"
1625
- },
1626
- "maxBackups": {
1627
- "label": "Máximo de Copias de Seguridad",
1628
- "description": "Máximo número de archivos de copia de seguridad a mantener",
1629
- "help": "Máximo número de archivos de copia de seguridad a mantener"
1630
- },
1631
- "confirm": {
1632
- "label": "Confirmar Copia de Seguridad",
1633
- "description": "Requerir confirmación para operaciones de copia de seguridad",
1634
- "help": "Confirmar operación de copia de seguridad"
1635
- }
1605
+ "backup.enabled": {
1606
+ "label": "Enable Backup",
1607
+ "description": "Enable automatic backup of settings",
1608
+ "help": "Enable/disable backup feature"
1609
+ },
1610
+ "backup.singleFileMode": {
1611
+ "label": "Single File Mode",
1612
+ "description": "Use single file for backups",
1613
+ "help": "Backup settings in a single file"
1614
+ },
1615
+ "backup.singleBackupFile": {
1616
+ "label": "Backup File Path",
1617
+ "description": "Path to the backup file",
1618
+ "help": "Path to the single backup file"
1619
+ },
1620
+ "backup.retentionDays": {
1621
+ "label": "Retention Period",
1622
+ "description": "Days to keep backup files",
1623
+ "help": "Number of days to retain old backup files"
1624
+ },
1625
+ "backup.maxBackups": {
1626
+ "label": "Maximum Backups",
1627
+ "description": "Maximum backup files to keep",
1628
+ "help": "Maximum number of backup files to keep"
1629
+ },
1630
+ "backup.confirm": {
1631
+ "label": "Confirm Backup",
1632
+ "description": "Require confirmation for backup operations",
1633
+ "help": "Confirm backup operation"
1636
1634
  },
1637
1635
  "i18nDir": {
1638
- "label": "Directorio de Traducciones",
1636
+ "label": "Directorio I18n",
1639
1637
  "description": "Directorio que contiene archivos de traducción",
1640
1638
  "current": "Actual: {value}",
1641
- "help": "Ruta al directorio con archivos de traducción"
1639
+ "help": "Ruta al directorio con archivos de traducción."
1642
1640
  },
1643
1641
  "projectRoot": {
1644
- "label": "Directorio de Proyecto",
1645
- "description": "Directorio raíz del proyecto",
1642
+ "label": "Raíz del proyecto",
1643
+ "description": "Directorio raíz del proyecto.",
1646
1644
  "current": "Actual: {value}",
1647
1645
  "help": "Ruta al directorio raíz del proyecto"
1648
1646
  },
1649
1647
  "checkUsage": {
1650
- "usage_analysis_failed": "Análisis de uso fallido",
1651
- "usage_analysis_success": "álisis de uso exitoso",
1652
- "usage_analysis_complete": "álisis de uso completado",
1653
- "usage_analysis_in_progress": "álisis de uso en curso",
1654
- "usage_analysis_started": "Análisis de uso iniciado",
1648
+ "usage_analysis_failed": "Error en el análisis de uso",
1649
+ "usage_analysis_success": "Análisis de uso exitoso",
1650
+ "usage_analysis_complete": "Análisis de uso completo",
1651
+ "usage_analysis_in_progress": "Análisis de uso en curso",
1652
+ "usage_analysis_started": "Se inició el análisis de uso",
1655
1653
  "usage_analysis_skipped": "Análisis de uso omitido"
1656
1654
  },
1657
1655
  "language": {
1658
- "label": "Idioma de Interfaz",
1659
- "description": "Idioma para la interfaz de usuario",
1656
+ "label": "Idioma de la interfaz",
1657
+ "description": "Idioma de la interfaz de usuario",
1660
1658
  "current": "Actual: {value}",
1661
- "help": "Selecciona tu idioma preferido para la interfaz"
1659
+ "help": "Seleccione su idioma de interfaz preferido"
1662
1660
  },
1663
1661
  "scriptDirectories": {
1664
- "analyzeLabel": "alizar Directorios de Script",
1665
- "analyzeHelp": "Analizar directorios de script para problemas",
1666
- "completeLabel": "Completar Configuración de Directorios",
1667
- "initLabel": "Inicializar Directorios de Script",
1668
- "manageLabel": "Gestionar Directorios de Script",
1669
- "sizingLabel": "Tamaño de Directorios de Script",
1670
- "summaryLabel": "Resumen de Directorios de Script",
1671
- "usageLabel": "Uso de Directorios de Script",
1672
- "validateLabel": "Validar Directorios de Script"
1662
+ "analyzeLabel": "Analizar directorios de scripts",
1663
+ "analyzeHelp": "Analizar directorios de scripts para detectar problemas",
1664
+ "completeLabel": "Directorios de configuración completos",
1665
+ "initLabel": "Inicializar directorios de scripts",
1666
+ "manageLabel": "Administrar directorios de scripts",
1667
+ "sizingLabel": "Dimensionamiento de directorios de scripts",
1668
+ "summaryLabel": "Directorios de informes resumidos",
1669
+ "usageLabel": "Directorios de informes de uso",
1670
+ "validateLabel": "Validar directorios de scripts"
1673
1671
  },
1674
1672
  "theme": {
1675
- "label": "ma de Color",
1676
- "description": "eferencia de tema de interfaz",
1677
- "current": "tual: {value}",
1673
+ "label": "Tema de color",
1674
+ "description": "Preferencia de tema de interfaz de usuario",
1675
+ "current": "Actual: {value}",
1678
1676
  "help": "Elige entre temas claros y oscuros"
1679
1677
  },
1680
1678
  "dateFormat": {
1681
- "label": "rmato de Fecha",
1682
- "description": "rmato para mostrar fechas",
1679
+ "label": "Formato de fecha",
1680
+ "description": "Formato para mostrar fechas.",
1683
1681
  "current": "Actual: {value}",
1684
- "help": "Elige cómo se muestran las fechas en los informes"
1682
+ "help": "Elija cómo se muestran las fechas en los informes"
1685
1683
  },
1686
1684
  "notifications": {
1687
1685
  "enabled": {
1688
- "label": "Habilitar Notificaciones",
1689
- "description": "Mostrar notificaciones en escritorio",
1686
+ "label": "Habilitar notificaciones",
1687
+ "description": "Mostrar notificaciones de escritorio",
1690
1688
  "current": "Actual: {value}",
1691
- "help": "Habilitar notificaciones en escritorio para operaciones completadas"
1689
+ "help": "Habilite las notificaciones de escritorio para operaciones completadas"
1692
1690
  }
1693
1691
  },
1694
1692
  "sourceDir": {
1695
- "label": "Directorio de Código Fuente",
1696
- "description": "Directorio que contiene archivos de código fuente",
1693
+ "label": "Directorio de origen",
1694
+ "description": "Directorio que contiene archivos de traducción",
1697
1695
  "current": "Actual: {value}",
1698
- "help": "Ruta al directorio con archivos de código fuente"
1696
+ "help": "Ruta al directorio con archivos de traducción fuente"
1699
1697
  },
1700
1698
  "sourceLanguage": {
1701
- "label": "Idioma de Código Fuente",
1702
- "description": "Idioma principal para traducciones",
1699
+ "label": "Idioma de origen",
1700
+ "description": "Idioma principal para las traducciones",
1703
1701
  "current": "Actual: {value}",
1704
- "help": "El idioma principal utilizado como fuente para traducciones"
1702
+ "help": "El idioma principal utilizado como fuente para las traducciones."
1705
1703
  },
1706
1704
  "outputDir": {
1707
- "label": "Directorio de Salida",
1708
- "description": "Directorio para informes generados",
1705
+ "label": "Directorio de salida",
1706
+ "description": "Directorio de informes generados",
1709
1707
  "current": "Actual: {value}",
1710
- "help": "Donde se guardarán los informes y archivos procesados"
1708
+ "help": "Dónde se guardarán los informes y archivos procesados"
1711
1709
  },
1712
1710
  "batchSize": {
1713
- "label": "Tamaño de Lote",
1714
- "description": "mero de elementos procesados por lote",
1711
+ "label": "Tamaño del lote",
1712
+ "description": "Número de artículos procesados ​​por lote",
1715
1713
  "current": "Actual: {value}",
1716
- "help": "Número de archivos a procesar en cada lote"
1714
+ "help": "¿Cuántos archivos procesar en cada lote?"
1717
1715
  },
1718
1716
  "maxConcurrentFiles": {
1719
- "label": "Máximo de Archivos Concurrentes",
1720
- "description": "Máximo número de archivos procesados simultáneamente",
1717
+ "label": "Máximo de archivos simultáneos",
1718
+ "description": "Máximo de archivos procesados ​​simultáneamente",
1721
1719
  "current": "Actual: {value}",
1722
- "help": "Máximo número de archivos a procesar simultáneamente"
1720
+ "help": "Número máximo de archivos para procesar al mismo tiempo"
1723
1721
  },
1724
1722
  "sizingThreshold": {
1725
- "label": "bral de Tamaño (%)",
1726
- "description": "bral para advertencias de variación de tamaño",
1723
+ "label": "Umbral de tamaño (%)",
1724
+ "description": "Umbral para advertencias de variación de tamaño",
1727
1725
  "current": "Actual: {value}%",
1728
- "help": "bral porcentual para detectar desviaciones de tamaño"
1726
+ "help": "Umbral porcentual para detectar discrepancias de tamaño"
1729
1727
  },
1730
1728
  "strictMode": {
1731
- "label": "do de Validación Estricta",
1732
- "description": "bilitar modo de validación estricta",
1733
- "current": "tual: {value}",
1729
+ "label": "Modo de validación estricto",
1730
+ "description": "Habilitar el modo de validación estricta",
1731
+ "current": "Actual: {value}",
1734
1732
  "help": "Habilitar validación estricta para archivos de traducción"
1735
1733
  },
1736
1734
  "enableAuditLog": {
1737
- "label": "Habilitar Registro de Auditoría",
1738
- "description": "rastrear todos los cambios en traducciones",
1735
+ "label": "Habilitar registro de auditoría",
1736
+ "description": "Seguimiento de todos los cambios de traducción",
1739
1737
  "current": "Actual: {value}",
1740
- "help": "Registrar todos los cambios realizados en archivos de traducción"
1738
+ "help": "Registre todos los cambios realizados en los archivos de traducción"
1741
1739
  },
1742
1740
  "backupBeforeChanges": {
1743
- "label": "Habilitar Copia de Seguridad",
1744
- "description": "Crear copias de seguridad antes de modificaciones",
1741
+ "label": "Copia de seguridad automática",
1742
+ "description": "Crear copias de seguridad antes de las modificaciones.",
1745
1743
  "current": "Actual: {value}",
1746
- "help": "Crear copias de seguridad automáticas antes de realizar cambios"
1744
+ "help": "Cree copias de seguridad automáticamente antes de realizar cambios"
1747
1745
  },
1748
1746
  "advanced_maxConcurrentFiles": {
1749
- "label": "Máximo de Archivos Concurrentes",
1750
- "description": "Máximo número de archivos procesados simultáneamente",
1747
+ "label": "Máximo de archivos simultáneos",
1748
+ "description": "Máximo de archivos procesados ​​simultáneamente",
1751
1749
  "current": "Actual: {value}",
1752
- "help": "Máximo número de archivos a procesar simultáneamente"
1750
+ "help": "Número máximo de archivos para procesar al mismo tiempo"
1753
1751
  },
1754
1752
  "advanced_strictMode": {
1755
- "label": "Modo de Validación Estricta",
1756
- "description": "bilitar modo de validación estricta",
1753
+ "label": "Modo de validación estricto",
1754
+ "description": "Habilitar el modo de validación estricta",
1757
1755
  "current": "Actual: {value}",
1758
- "help": "bilitar validación estricta para archivos de traducción"
1756
+ "help": "Habilitar validación estricta para archivos de traducción"
1759
1757
  },
1760
1758
  "adminPinEnabled": {
1761
- "label": "Protección con PIN de Administrador",
1762
- "description": "Habilitar autenticación con PIN para configuraciones sensibles",
1759
+ "label": "Protección PIN de administrador",
1760
+ "description": "Habilite la autenticación de PIN de administrador para configuraciones confidenciales",
1763
1761
  "current": "Actual: {value}",
1764
- "help": "Requiere PIN de administrador para cambiar configuraciones de seguridad y avanzadas"
1762
+ "help": "Requerir PIN de administrador para cambiar la seguridad y la configuración avanzada"
1765
1763
  },
1766
1764
  "sessionTimeout": {
1767
- "label": "Tiempo de Expiración de Sesión",
1768
- "description": "empo de expiración de sesión en minutos",
1769
- "current": "tual: {value} minutos",
1770
- "help": "Duración de tiempo de sesión antes de requerir re-autenticación"
1765
+ "label": "Tiempo de espera de sesión",
1766
+ "description": "Tiempo de espera de la sesión de administrador en minutos",
1767
+ "current": "Actual: {value} minutos",
1768
+ "help": "Cuánto tiempo permanecen activas las sesiones de administración antes de requerir una nueva autenticación"
1771
1769
  },
1772
1770
  "maxFailedAttempts": {
1773
- "label": "Máximo de Intentos Fallidos",
1774
- "description": "Máximo número de intentos fallidos antes de bloqueo",
1771
+ "label": "Intentos fallidos máximos",
1772
+ "description": "Máximo de intentos fallidos de PIN antes del bloqueo",
1775
1773
  "current": "Actual: {value} intentos",
1776
- "help": "Número de intentos fallidos permitidos antes de bloqueo temporal"
1774
+ "help": "Número de intentos fallidos de PIN permitidos antes del bloqueo temporal"
1777
1775
  },
1778
1776
  "lockoutDuration": {
1779
- "label": "Duración de Bloqueo",
1780
- "description": "Duración de bloqueo después de intentos fallidos",
1777
+ "label": "Duración del bloqueo",
1778
+ "description": "Duración del bloqueo después de intentos fallidos",
1781
1779
  "current": "Actual: {value} minutos",
1782
- "help": "Duración de tiempo de bloqueo después de intentos fallidos"
1780
+ "help": "¿Cuánto tiempo permanece bloqueado el sistema después del máximo de intentos fallidos?"
1783
1781
  },
1784
1782
  "scriptDirectories_analyze": {
1785
- "label": "Directorios de Análisis",
1786
- "description": "Directorios personalizados para el script de análisis",
1783
+ "label": "Analizar directorios de scripts",
1784
+ "description": "Directorios personalizados para analizar script",
1787
1785
  "current": "Actual: {value}",
1788
- "help": "Especificar directorio personalizado para el script de análisis. Dejar en blanco para usar la configuración global."
1786
+ "help": "Especifique el directorio de origen personalizado para el script de análisis. Déjelo vacío para usar la configuración global."
1789
1787
  },
1790
1788
  "scriptDirectories_complete": {
1791
- "label": "Directorios de Completado",
1792
- "description": "Directorios personalizados para el script de completado",
1789
+ "label": "Directorios de configuración completos",
1790
+ "description": "Directorios personalizados para un script de configuración completo",
1793
1791
  "current": "Actual: {value}",
1794
- "help": "Especificar directorio personalizado para el script de completado. Dejar en blanco para usar la configuración global."
1792
+ "help": "Especifique el directorio de origen personalizado para el script de instalación completo. Déjelo vacío para usar la configuración global."
1795
1793
  },
1796
1794
  "scriptDirectories_init": {
1797
- "label": "Directorios de Inicialización",
1798
- "description": "Directorios personalizados para el script de inicialización",
1795
+ "label": "Inicializar directorios de scripts",
1796
+ "description": "Directorios personalizados para inicializar script",
1799
1797
  "current": "Actual: {value}",
1800
- "help": "Especificar directorio personalizado para el script de inicialización. Dejar en blanco para usar la configuración global."
1798
+ "help": "Especifique el directorio de origen personalizado para el script de inicialización. Déjelo vacío para usar la configuración global."
1801
1799
  },
1802
1800
  "scriptDirectories_manage": {
1803
- "label": "Directorios de Gestión",
1804
- "description": "Directorios personalizados para el script de gestión",
1801
+ "label": "Administrar directorios de scripts",
1802
+ "description": "Directorios personalizados para administrar scripts",
1805
1803
  "current": "Actual: {value}",
1806
- "help": "Especificar directorio personalizado para el script de gestión. Dejar en blanco para usar la configuración global."
1804
+ "help": "Especifique el directorio de origen personalizado para el script de administración. Déjelo vacío para usar la configuración global."
1807
1805
  },
1808
1806
  "scriptDirectories_sizing": {
1809
- "label": "Directorios de Tamaño",
1810
- "description": "Directorios personalizados para el script de tamaño",
1807
+ "label": "Dimensionamiento de directorios de scripts",
1808
+ "description": "Directorios personalizados para dimensionar scripts",
1811
1809
  "current": "Actual: {value}",
1812
- "help": "Especificar directorio personalizado para el script de tamaño. Dejar en blanco para usar la configuración global."
1810
+ "help": "Especifique el directorio de origen personalizado para el script de dimensionamiento. Déjelo vacío para usar la configuración global."
1813
1811
  },
1814
1812
  "scriptDirectories_summary": {
1815
- "label": "Directorios de Resumen",
1816
- "description": "Directorios personalizados para el script de resumen",
1813
+ "label": "Directorios de informes resumidos",
1814
+ "description": "Directorios personalizados para script de informe resumido",
1817
1815
  "current": "Actual: {value}",
1818
- "help": "Especificar directorio personalizado para el script de resumen. Dejar en blanco para usar la configuración global."
1816
+ "help": "Especifique el directorio de origen personalizado para el script del informe resumido. Déjelo vacío para usar la configuración global."
1819
1817
  },
1820
1818
  "scriptDirectories_usage": {
1821
- "label": "Directorios de Uso",
1822
- "description": "Directorios personalizados para el script de uso",
1819
+ "label": "Directorios de informes de uso",
1820
+ "description": "Directorios personalizados para script de informe de uso",
1823
1821
  "current": "Actual: {value}",
1824
- "help": "Especificar directorio personalizado para el script de uso. Dejar en blanco para usar la configuración global."
1822
+ "help": "Especifique el directorio de origen personalizado para el script del informe de uso. Déjelo vacío para usar la configuración global."
1825
1823
  },
1826
1824
  "scriptDirectories_validate": {
1827
- "label": "Directorios de Validación",
1828
- "description": "Directorios personalizados para el script de validación",
1825
+ "label": "Validar directorios de scripts",
1826
+ "description": "Directorios personalizados para validar script",
1829
1827
  "current": "Actual: {value}",
1830
- "help": "Especificar directorio personalizado para el script de validación. Dejar en blanco para usar la configuración global."
1828
+ "help": "Especifique el directorio de origen personalizado para el script de validación. Déjelo vacío para usar la configuración global."
1831
1829
  },
1832
1830
  "security_adminPinEnabled": {
1833
- "label": "Protección con PIN de Administrador",
1834
- "description": "Habilitar autenticación con PIN para configuraciones sensibles",
1831
+ "label": "Protección PIN de administrador",
1832
+ "description": "Habilite la autenticación de PIN de administrador para configuraciones confidenciales",
1835
1833
  "current": "Actual: {value}",
1836
- "help": "Requiere PIN de administrador para cambiar configuraciones de seguridad y avanzadas"
1834
+ "help": "Requerir PIN de administrador para cambiar la seguridad y la configuración avanzada"
1837
1835
  },
1838
1836
  "fields": {
1839
1837
  "adminPinEnabled": {
1840
- "label": "Protección con PIN de Administrador",
1841
- "description": "bilitar autenticación con PIN para configuraciones sensibles",
1842
- "help": "Requiere PIN de administrador para cambiar configuraciones de seguridad y avanzadas"
1838
+ "label": "Protección PIN de administrador",
1839
+ "description": "Habilite la autenticación de PIN de administrador para configuraciones confidenciales",
1840
+ "help": "Requerir PIN de administrador para cambiar la seguridad y la configuración avanzada"
1843
1841
  }
1844
1842
  },
1845
1843
  "security_pinProtection_enabled": {
1846
- "label": "otección con PIN",
1847
- "description": "Habilitar protección con PIN para configuraciones sensibles",
1848
- "current": "tual: {value}",
1849
- "help": "Requiere PIN para cambiar configuraciones de seguridad y avanzadas"
1844
+ "label": "Protección PIN",
1845
+ "description": "Habilite la protección con PIN para configuraciones confidenciales",
1846
+ "current": "Actual: {value}",
1847
+ "help": "Requerir PIN para cambiar la seguridad y la configuración avanzada"
1850
1848
  },
1851
1849
  "pinProtection_configure": {
1852
- "label": "Configurar Scripts Protegidos con PIN",
1850
+ "label": "Configurar scripts protegidos con PIN",
1853
1851
  "description": "Configurar qué scripts requieren protección con PIN",
1854
- "help": "Seleccionar scripts individuales que requieren autenticación con PIN"
1852
+ "help": "Seleccione scripts individuales que requieran autenticación de PIN"
1855
1853
  },
1856
1854
  "pinProtection_debugMenu": {
1857
- "label": "Menú de Herramientas de Depuración",
1858
- "description": "Requiere PIN para acceder al menú de herramientas de depuración",
1855
+ "label": "Menú de herramientas de depuración",
1856
+ "description": "Requerir PIN para el menú de herramientas de depuración",
1859
1857
  "current": "Actual: {value}",
1860
- "help": "Habilitar protección con PIN para acceder a las herramientas de depuración"
1858
+ "help": "Habilite la protección PIN para acceder a las herramientas de depuración"
1861
1859
  },
1862
1860
  "pinProtection_deleteReports": {
1863
- "label": "Eliminar Reportes",
1864
- "description": "Requiere PIN para eliminar reportes",
1861
+ "label": "Eliminar informes",
1862
+ "description": "Requerir PIN para eliminar informes",
1865
1863
  "current": "Actual: {value}",
1866
- "help": "Habilitar protección con PIN para eliminar reportes"
1864
+ "help": "Habilite la protección PIN para eliminar informes"
1867
1865
  },
1868
1866
  "pinProtection_summaryReports": {
1869
- "label": "Resumen de Reportes",
1870
- "description": "Requiere PIN para generar resúmenes de reportes",
1871
- "current": "tual: {value}",
1872
- "help": "bilitar protección con PIN para generar resúmenes de reportes"
1867
+ "label": "Informes resumidos",
1868
+ "description": "Requerir PIN para informes resumidos",
1869
+ "current": "Actual: {value}",
1870
+ "help": "Habilite la protección PIN para generar informes resumidos"
1873
1871
  },
1874
1872
  "pinProtection_settingsMenu": {
1875
- "label": "Menú de Configuración",
1876
- "description": "quiere PIN para acceder al menú de configuración",
1873
+ "label": "Menú de configuración",
1874
+ "description": "Requerir PIN para el menú de configuración",
1877
1875
  "current": "Actual: {value}",
1878
- "help": "Habilitar protección con PIN para acceder al menú de configuración"
1876
+ "help": "Habilite la protección PIN para acceder a la configuración"
1879
1877
  },
1880
1878
  "pinProtection_initScript": {
1881
- "label": "Inicializar Script",
1882
- "description": "Requiere PIN para inicializar el script",
1879
+ "label": "Inicializar secuencia de comandos",
1880
+ "description": "Requerir PIN para inicializar script",
1883
1881
  "current": "Actual: {value}",
1884
- "help": "Habilitar protección con PIN para inicializar el script"
1882
+ "help": "Habilite la protección PIN para ejecutar el script de inicialización"
1885
1883
  },
1886
1884
  "pinProtection_resetDefaults": {
1887
- "label": "Restablecer Protección con PIN",
1888
- "description": "Restablecer todas las configuraciones de protección con PIN a valores predeterminados",
1889
- "help": "Restablecer todas las configuraciones individuales de protección con PIN a valores predeterminados"
1885
+ "label": "Restablecer protección PIN",
1886
+ "description": "Restablecer todas las configuraciones de protección de PIN a los valores predeterminados",
1887
+ "help": "Restablecer todas las protecciones de PIN de scripts individuales a los valores predeterminados"
1890
1888
  },
1891
1889
  "removeUiLanguages": {
1892
- "label": "Eliminar Idiomas de la Interfaz",
1893
- "description": "Eliminar idiomas de la interfaz no instalados",
1894
- "help": "Eliminar idiomas de la interfaz no instalados en el sistema"
1890
+ "label": "Eliminar idiomas de la interfaz de usuario",
1891
+ "description": "Eliminar idiomas de UI que no están instalados",
1892
+ "help": "Eliminar idiomas de UI que no están instalados en el sistema"
1895
1893
  },
1896
1894
  "${helperKey}": {
1897
1895
  "help": "Ayuda"
1896
+ },
1897
+ "backup": {
1898
+ "enabled": {
1899
+ "label": "Habilitar copia de seguridad",
1900
+ "description": "Habilitar copia de seguridad automática de la configuración",
1901
+ "help": "Activar/desactivar la función de copia de seguridad"
1902
+ },
1903
+ "singleFileMode": {
1904
+ "label": "Modo de archivo único",
1905
+ "description": "Utilice un solo archivo para las copias de seguridad",
1906
+ "help": "Configuración de copia de seguridad en un solo archivo"
1907
+ },
1908
+ "singleBackupFile": {
1909
+ "label": "Ruta del archivo de respaldo",
1910
+ "description": "Ruta al archivo de copia de seguridad",
1911
+ "help": "Ruta al archivo de copia de seguridad único"
1912
+ },
1913
+ "retentionDays": {
1914
+ "label": "Período de retención",
1915
+ "description": "Días para guardar archivos de respaldo",
1916
+ "help": "Número de días para conservar los archivos de copia de seguridad antiguos"
1917
+ },
1918
+ "maxBackups": {
1919
+ "label": "Copias de seguridad máximas",
1920
+ "description": "Archivos de copia de seguridad máximos para conservar",
1921
+ "help": "Número máximo de archivos de copia de seguridad para conservar"
1922
+ },
1923
+ "confirm": {
1924
+ "label": "Confirmar copia de seguridad",
1925
+ "description": "Requerir confirmación para operaciones de respaldo",
1926
+ "help": "Confirmar operación de copia de seguridad"
1927
+ }
1898
1928
  }
1899
1929
  },
1900
1930
  "actions": {
1901
1931
  "editSetting": "Editar {setting}:",
1902
- "settingUpdated": "✅ {setting} actualizado con éxito!",
1903
- "invalidValue": "❌ Valor inválido. Por favor, inténtalo de nuevo.",
1904
- "pressEnter": "Presiona Enter para continuar...",
1932
+ "settingUpdated": "✅ {setting} actualizado exitosamente!",
1933
+ "invalidValue": "❌ Valor no válido. Por favor inténtalo de nuevo.",
1934
+ "pressEnter": "Presione Entrar para continuar...",
1905
1935
  "backToMenu": "Volver al menú principal",
1906
- "saveSuccess": "✅ Configuraciones guardadas con éxito!",
1907
- "saveFailed": "❌ Error al guardar las configuraciones: {error}",
1908
- "resetConfirm": "¿Estás seguro de que quieres restablecer todas las configuraciones a valores predeterminados? (y/N):",
1909
- "resetSuccess": "✅ Configuraciones restablecidas a valores predeterminados con éxito!",
1910
- "importSuccess": "✅ Configuraciones importadas con éxito!",
1911
- "exportSuccess": "✅ Configuraciones exportadas con éxito!",
1936
+ "saveSuccess": "✅ ¡La configuración se guardó correctamente!",
1937
+ "saveFailed": "❌ No se pudo guardar la configuración: {error}",
1938
+ "resetConfirm": "¿Está seguro de que desea restablecer todas las configuraciones a los valores predeterminados? (sí/no):",
1939
+ "resetSuccess": "✅ ¡La configuración se restablece a los valores predeterminados con éxito!",
1940
+ "importSuccess": "✅ ¡Configuración importada exitosamente!",
1941
+ "exportSuccess": "✅ ¡Configuración exportada exitosamente!",
1912
1942
  "fileNotFound": "❌ Archivo no encontrado: {path}",
1913
- "invalidFormat": "❌ Formato de archivo de configuraciones inválido",
1914
- "pinProtectionUpdated": "✅ Protección con PIN para {script} actualizada con éxito!",
1915
- "pinProtectionReset": "✅ Todas las configuraciones de protección con PIN restablecidas a valores predeterminados!",
1916
- "pinProtectionConfigure": "Configurar protección con PIN para scripts individuales",
1917
- "pinProtectionSelectScript": "Seleccionar un script para alternar la protección con PIN:",
1943
+ "invalidFormat": "❌ Formato de archivo de configuración no válido",
1944
+ "pinProtectionUpdated": "✅ Protección PIN para {script} actualizado exitosamente!",
1945
+ "pinProtectionReset": "✅ ¡Todas las configuraciones de protección de PIN se restablecen a sus valores predeterminados!",
1946
+ "pinProtectionConfigure": "Configurar la protección PIN para scripts individuales",
1947
+ "pinProtectionSelectScript": "Seleccione una secuencia de comandos para alternar la protección con PIN:",
1918
1948
  "pinProtectionCurrentStatus": "Estado actual: {status}",
1919
- "pinProtectionEnabled": "bilitado",
1920
- "pinProtectionDisabled": "shabilitado",
1921
- "pinProtectionToggle": "ternar Protección con PIN",
1922
- "pinProtectionResetAll": "Restablecer Todo a Valores Predeterminados",
1923
- "pinProtectionBack": "lver a Configuraciones de Seguridad"
1949
+ "pinProtectionEnabled": "Activado",
1950
+ "pinProtectionDisabled": "Desactivado",
1951
+ "pinProtectionToggle": "Alternar protección mediante PIN",
1952
+ "pinProtectionResetAll": "Restablecer todo a los valores predeterminados",
1953
+ "pinProtectionBack": "Volver a la configuración de seguridad"
1924
1954
  },
1925
1955
  "themes": {
1926
- "light": "Claro",
1927
- "dark": "curo",
1956
+ "light": "Luz",
1957
+ "dark": "Oscuro",
1928
1958
  "system": "Sistema"
1929
1959
  },
1930
1960
  "languages": {
@@ -1937,284 +1967,284 @@
1937
1967
  "zh": "Chino"
1938
1968
  },
1939
1969
  "viewAll": {
1940
- "title": "Ver Todas las Configuraciones"
1970
+ "title": "Ver todas las configuraciones"
1941
1971
  },
1942
1972
  "current": "Actual",
1943
1973
  "back": "Volver al menú principal",
1944
- "selectSettingPrompt": "Seleccionar configuración para editar (o b para volver, r para restablecer):",
1945
- "invalidOption": "Opción inválida.",
1946
- "editing": "Editando",
1947
- "enterNewValue": "Ingresar nuevo valor (o presionar Enter para mantener el actual, tipo 'default' para usar el valor predeterminado del sistema):",
1974
+ "selectSettingPrompt": "Seleccione la configuración para editar (ob para retroceder, r para restablecer):",
1975
+ "invalidOption": "Opción no válida.",
1976
+ "editing": "Edición",
1977
+ "enterNewValue": "Ingrese un nuevo valor (o presione Entrar para mantenerlo actualizado, escriba 'predeterminado' para usar el valor predeterminado del sistema):",
1948
1978
  "validOptions": "Opciones válidas",
1949
- "updatedSuccessfully": "actualizado con éxito!",
1950
- "noHelp": "No ayuda disponible para esta configuración",
1951
- "resetScriptDirectories": "Restablecer a Valores Predeterminados",
1952
- "resetScriptDirectoriesTitle": "Restablecer Directorios de Script a Valores Predeterminados",
1953
- "resetScriptDirectoriesWarning1": "Esto restablecerá todas las configuraciones de directorios de script a sus valores predeterminados del sistema.",
1954
- "resetScriptDirectoriesWarning2": "borrarán todos los caminos de directorio personalizados. Esta acción no se puede deshacer.",
1955
- "resetScriptDirectoriesConfirm": "stás seguro de que quieres restablecer todos los directorios de script a sus valores predeterminados? (y/N):",
1979
+ "updatedSuccessfully": "actualizado exitosamente!",
1980
+ "noHelp": "No hay ayuda disponible para esta configuración",
1981
+ "resetScriptDirectories": "Restablecer los valores predeterminados",
1982
+ "resetScriptDirectoriesTitle": "Restablecer directorios de secuencias de comandos a los valores predeterminados",
1983
+ "resetScriptDirectoriesWarning1": "Esto restablecerá todas las configuraciones del directorio de scripts a los valores predeterminados del sistema.",
1984
+ "resetScriptDirectoriesWarning2": "Se borrarán todas las rutas de directorio personalizadas. Esta acción no se puede deshacer.",
1985
+ "resetScriptDirectoriesConfirm": "¿Está seguro de que desea restablecer todos los directorios de scripts a sus valores predeterminados? (sí/no):",
1956
1986
  "backup": {
1957
- "title": "Respaldar Configuraciones",
1958
- "description": "Respaldar configuraciones actuales a un archivo",
1959
- "confirm": "¿Estás seguro de que quieres respaldar las configuraciones actuales? (y/N):",
1960
- "success": "✅ Configuraciones respaldadas con éxito a {backupFile}",
1961
- "failed": "❌ Error al respaldar las configuraciones: {error}",
1962
- "enabled": "Habilitar Respaldos",
1963
- "enabledHelp": "Habilitar/deshabilitar la característica de respaldo",
1964
- "singleFileMode": "Modo de Archivo Único",
1965
- "singleFileModeHelp": "spaldar configuraciones en un solo archivo",
1966
- "singleBackupFile": "Archivo de Respaldo Único",
1967
- "singleBackupFileHelp": "Ruta al archivo de respaldo único",
1968
- "retentionDays": "Días de Retención",
1969
- "retentionDaysHelp": "Número de días para retener archivos de respaldo antiguos",
1987
+ "title": "Configuración de copia de seguridad",
1988
+ "description": "Copia de seguridad de la configuración actual en un archivo",
1989
+ "confirm": "¿Está seguro de que desea hacer una copia de seguridad de la configuración actual? (sí/no):",
1990
+ "success": "✅ Configuración respaldada exitosamente para {backupFile}",
1991
+ "failed": "❌ No se pudo realizar la copia de seguridad de la configuración: {error}",
1992
+ "enabled": "Habilitar copia de seguridad",
1993
+ "enabledHelp": "Activar/desactivar la función de copia de seguridad",
1994
+ "singleFileMode": "Modo de archivo único",
1995
+ "singleFileModeHelp": "Configuración de copia de seguridad en un solo archivo",
1996
+ "singleBackupFile": "Archivo de copia de seguridad único",
1997
+ "singleBackupFileHelp": "Ruta al archivo de copia de seguridad único",
1998
+ "retentionDays": "Días de retención",
1999
+ "retentionDaysHelp": "Número de días para conservar los archivos de copia de seguridad antiguos",
1970
2000
  "maxBackups": "Copias de seguridad máximas",
1971
- "maxBackupsHelp": "mero máximo de archivos de respaldo a mantener",
1972
- "confirmHelp": "Confirmar operación de respaldo",
2001
+ "maxBackupsHelp": "Número máximo de archivos de copia de seguridad para conservar",
2002
+ "confirmHelp": "Confirmar operación de copia de seguridad",
1973
2003
  "confirmYes": "Sí",
1974
2004
  "confirmNo": "No"
1975
2005
  },
1976
2006
  "validation": {
1977
2007
  "valid": "Válido",
1978
2008
  "validatingPaths": "Validando rutas configuradas...",
1979
- "validationComplete": "Validación de ruta completa: {valid}/{total} válida."
2009
+ "validationComplete": "Validación de ruta completa: {valid}/{total} válido."
1980
2010
  }
1981
2011
  },
1982
2012
  "summary": {
1983
- "separator": "============================================================",
2013
+ "separator": "===============================================================",
1984
2014
  "configurationTitle": "🔧 Configuración:",
1985
- "sourceLanguage": "Idioma Fuente: {sourceLanguage}",
1986
- "supportedExtensions": "Extensiones Soportadas: {extensions}",
1987
- "excludedFiles": "Archivos Excluidos: {files}",
2015
+ "sourceLanguage": "Idioma de origen: {sourceLanguage}",
2016
+ "supportedExtensions": "Extensiones compatibles: {extensions}",
2017
+ "excludedFiles": "Archivos excluidos: {files}",
1988
2018
  "reportContent": "{report}",
1989
- "fatalError": "Error Fatal: {error}",
1990
- "helpTitle": "Generador de Reporte Resumen I18NTK",
1991
- "helpDescription": "Analiza la estructura de carpetas i18n y genera un informe resumen detallado que incluye estadísticas clave, análisis de estructura de archivos y comprobaciones de validación.",
1992
- "helpUsage": "Uso: node i18ntk-summary.js [opciones]",
1993
- "helpOptions": "--source-dir <dir> Directorio fuente para analizar",
1994
- "helpSourceDir": "--source-dir <dir> Directorio fuente para analizar",
1995
- "helpOutput": "--output <file> Archivo de salida para el informe",
1996
- "helpVerbose": "--verbose, -v Mostrar información detallada",
1997
- "helpKeepReports": "--keep-reports Mantener informes existentes",
1998
- "helpDeleteReports": "--delete-reports Eliminar informes existentes",
1999
- "helpHelp": "--help, -h Mostrar esta ayuda",
2019
+ "fatalError": "Error fatal: {error}",
2020
+ "helpTitle": "📊 GENERADOR DE INFORMES RESUMEN I18NTK",
2021
+ "helpDescription": "Analiza la estructura de carpetas de i18n y genera un informe resumido completo que incluye estadísticas clave, análisis de la estructura de archivos y comprobaciones de validación.",
2022
+ "helpUsage": "Uso: nodo i18ntk-summary.js [opciones]",
2023
+ "helpOptions": "--directorio-fuente <dir> Directorio fuente para analizar",
2024
+ "helpSourceDir": "--directorio-fuente <dir> Directorio fuente para analizar",
2025
+ "helpOutput": "--producción <file> Archivo de salida para el informe.",
2026
+ "helpVerbose": "--verbose, -v Mostrar información detallada",
2027
+ "helpKeepReports": "--keep-reports Conserva los informes existentes",
2028
+ "helpDeleteReports": "--delete-reports Eliminar informes existentes",
2029
+ "helpHelp": "--help, -h Mostrar esta ayuda",
2000
2030
  "helpExamples": "Ejemplos:",
2001
2031
  "helpExample1": "node i18ntk-summary.js",
2002
2032
  "helpExample2": "node i18ntk-summary.js --source-dir ./locales",
2003
- "helpExample3": "node i18ntk-summary.js --output summary-report.txt",
2033
+ "helpExample3": "node i18ntk-summary.js --resumen de salida-report.txt",
2004
2034
  "helpExample4": "node i18ntk-summary.js --verbose",
2005
2035
  "helpExample5": "node i18ntk-summary.js --source-dir ./locales --output report.json",
2006
- "couldNotReadFile": "⚠️ No se pudo leer el archivo: {filePath}",
2007
- "couldNotParseJSFile": "⚠️ No se pudo analizar el archivo JS/TS: {filePath}",
2008
- "errorReadingFile": "⚠️ Error al leer el archivo {filePath}: {error}",
2009
- "analyzingFolder": "🔍 Analizando estructura de carpetas...",
2010
- "noLanguageDirectoriesFound": "❌ No se encontraron directorios de idiomas en el directorio fuente especificado.",
2011
- "foundLanguages": "✅ Encontrados {count} idiomas: {languages}",
2012
- "referenceLanguageFiles": "📁 Idioma de referencia '{language}' tiene {count} archivos",
2013
- "analyzingLanguage": "🌍 Analizando idioma: {language}",
2014
- "keysInFiles": "📊 Encontradas {keys} claves en {files} archivos",
2015
- "checkingInconsistentKeys": "🔍 Buscando claves inconsistentes entre idiomas...",
2016
- "generatingSummaryReport": "📝 Generando informe resumen...",
2017
- "reportTitle": "📊 I18NTK RESUMEN DE INFORMACIÓN",
2036
+ "couldNotReadFile": "⚠️ No se pudo leer el archivo: {filePath}",
2037
+ "couldNotParseJSFile": "⚠️ No se pudo analizar el archivo JS/TS: {filePath}",
2038
+ "errorReadingFile": "⚠️ Error al leer el archivo {filePath}: {error}",
2039
+ "analyzingFolder": "🔍 Analizando la estructura de carpetas...",
2040
+ "noLanguageDirectoriesFound": "❌ No se encontraron directorios de idiomas en el directorio de origen especificado.",
2041
+ "foundLanguages": "✅ Encontrado {count} idiomas: {languages}",
2042
+ "referenceLanguageFiles": "📁 Idioma de referencia'{language}' tiene {count} archivos",
2043
+ "analyzingLanguage": "🌍 Analizando el lenguaje: {language}",
2044
+ "keysInFiles": "📊 Encontrado {keys} llaves a través {files} archivos",
2045
+ "checkingInconsistentKeys": "🔍 Comprobando claves inconsistentes en todos los idiomas...",
2046
+ "generatingSummaryReport": "📝 Generando informe resumido...",
2047
+ "reportTitle": "📊 INFORME RESUMEN I18NTK",
2018
2048
  "generated": "Generado: {timestamp}",
2019
- "sourceDirectory": "Directorio fuente: {dir}",
2020
- "overview": "Resumen General",
2021
- "languagesCount": "iomas: {count}",
2022
- "totalFiles": "tal archivos: {count}",
2023
- "totalKeys": "Total claves: {count}",
2024
- "avgKeysPerLanguage": "s promedio por idioma: {count}",
2025
- "languagesBreakdown": "🌍 Desglose de Idiomas",
2026
- "languageBreakdown": "anguage}: {files} archivos, {keys} claves",
2027
- "fileStructure": "📁 Estructura de Archivos",
2028
- "fileKeys": "{file}: {keys} claves",
2029
- "missingInLanguages": "⚠️ Faltan en: {languages}",
2049
+ "sourceDirectory": "Directorio de origen: {dir}",
2050
+ "overview": "📈 RESUMEN",
2051
+ "languagesCount": "Idiomas: {count}",
2052
+ "totalFiles": "Archivos totales: {count}",
2053
+ "totalKeys": "Claves totales: {count}",
2054
+ "avgKeysPerLanguage": "Claves promedio por idioma: {count}",
2055
+ "languagesBreakdown": "🌍 DESGLOSE DE IDIOMAS",
2056
+ "languageBreakdown": "{language}: {files} archivos, {keys} llaves",
2057
+ "fileStructure": "📁 ESTRUCTURA DEL ARCHIVO",
2058
+ "fileKeys": "{file}: {keys} llaves",
2059
+ "missingInLanguages": "⚠️ Desaparecido en: {languages}",
2030
2060
  "issuesFound": "❌ PROBLEMAS ENCONTRADOS",
2031
- "missingFiles": "Archivos Faltantes:",
2032
- "emptyFiles": "📄 Archivos Vacíos:",
2033
- "malformedFiles": "⚠️ Archivos Malformados:",
2034
- "duplicateKeys": "🔑 Claves Duplicadas:",
2035
- "inconsistentKeys": "🔍 Claves Inconsistentes:",
2036
- "missingKeys": "Faltantes: {keys}{more}",
2037
- "extraKeys": "Extras: {keys}{more}",
2038
- "noIssuesFound": "✅ NO PROBLEMAS ENCONTRADOS",
2039
- "allFilesConsistent": "Todos los archivos de traducción son consistentes entre idiomas.",
2061
+ "missingFiles": "📁 Archivos faltantes:",
2062
+ "emptyFiles": "📄 Archivos vacíos:",
2063
+ "malformedFiles": "⚠️ Archivos con formato incorrecto:",
2064
+ "duplicateKeys": "🔑 Claves duplicadas:",
2065
+ "inconsistentKeys": "🔍 Claves inconsistentes:",
2066
+ "missingKeys": "Desaparecido: {keys}{more}",
2067
+ "extraKeys": "Extra: {keys}{more}",
2068
+ "noIssuesFound": "✅ NO SE ENCONTRARON PROBLEMAS",
2069
+ "allFilesConsistent": "Todos los archivos de traducción son consistentes en todos los idiomas.",
2040
2070
  "recommendations": "💡 RECOMENDACIONES",
2041
2071
  "createMissingFiles": "• Crear archivos de traducción faltantes",
2042
- "addContentToEmptyFiles": "• Añadir contenido a archivos vacíos",
2043
- "fixMalformedFiles": "• Corregir archivos JSON/JS malformados",
2044
- "removeDuplicateKeys": "• Eliminar claves duplicadas de archivos",
2045
- "synchronizeKeys": "• Sincronizar claves entre todos los idiomas",
2046
- "splitLargeFiles": "• Considerar dividir archivos grandes en espacios de nombres más pequeños",
2047
- "addMoreLanguages": "• Considerar agregar más idiomas",
2048
- "nextSteps": "🎯 PASOS SIGUIENTES",
2049
- "nextStep1": "1. Corregir cualquier problema identificado anteriormente",
2050
- "nextStep2": "2. Ejecutar validación para garantizar consistencia",
2051
- "nextStep3": "3. Considerar usar i18ntk-validate para validación detallada",
2052
- "nextStep4": "4. Monitoreo regular recomendado",
2053
- "couldNotFindI18nDirectory": "❌ No se pudo encontrar el directorio i18n. Por favor, especifique --source-dir.",
2054
- "sourceDirectoryDoesNotExist": "❌ El directorio fuente no existe: {dir}",
2055
- "i18nSummaryReportGenerator": "📊 Generador de Informe Resumen I18N",
2056
- "analysisComplete": "✅ Análisis Completado",
2057
- "analyzedLanguages": "📊 Idiomas Analizados: {count}",
2058
- "processedFiles": "📁 Archivos Procesados: {count}",
2059
- "foundTranslationKeys": "🔑 Claves de Traducción Encontradas: {count}",
2060
- "foundIssues": "❌ Encontrados {count} problemas",
2061
- "noIssuesConsole": "✅ No problemas encontrados - todos los archivos son consistentes!",
2072
+ "addContentToEmptyFiles": "• Agregar contenido a archivos de traducción vacíos",
2073
+ "fixMalformedFiles": "• Reparar archivos JSON/JS con formato incorrecto",
2074
+ "removeDuplicateKeys": "• Eliminar claves duplicadas de los archivos",
2075
+ "synchronizeKeys": "• Sincronizar claves en todos los idiomas",
2076
+ "splitLargeFiles": "• Considere dividir archivos grandes en espacios de nombres más pequeños",
2077
+ "addMoreLanguages": "• Considere agregar más idiomas",
2078
+ "nextSteps": "🎯 PRÓXIMOS PASOS",
2079
+ "nextStep1": "1. Solucione cualquier problema identificado anteriormente",
2080
+ "nextStep2": "2. Ejecute la validación para garantizar la coherencia.",
2081
+ "nextStep3": "3. Considere utilizar i18ntk-validate para una validación detallada",
2082
+ "nextStep4": "4. Se recomienda un seguimiento regular",
2083
+ "couldNotFindI18nDirectory": "❌ No se pudo encontrar el directorio i18n. Por favor especifique --source-dir.",
2084
+ "sourceDirectoryDoesNotExist": "❌ El directorio de origen no existe: {dir}",
2085
+ "i18nSummaryReportGenerator": "📊 Generador de informes resumidos I18N",
2086
+ "analysisComplete": "✅ Análisis completo",
2087
+ "analyzedLanguages": "📊 Idiomas analizados: {count}",
2088
+ "processedFiles": "📁 Archivos procesados: {count}",
2089
+ "foundTranslationKeys": "🔑 Claves de traducción encontradas: {count}",
2090
+ "foundIssues": "❌ Encontrado {count} asuntos",
2091
+ "noIssuesConsole": "✅ No se encontraron problemas: ¡todos los archivos son consistentes!",
2062
2092
  "errorDuringAnalysis": "❌ Error durante el análisis: {error}",
2063
- "usageReportTitle": "📊 INFORME DE USO I18NTK",
2093
+ "usageReportTitle": "📊 INFORME DE USO DE I18NTK",
2064
2094
  "usageReportGenerated": "Generado: {timestamp}",
2065
- "usageReportSourceDir": "Directorio fuente: {sourceDir}",
2066
- "usageReportI18nDir": "Directorio i18n: {i18nDir}",
2095
+ "usageReportSourceDir": "Directorio de origen: {sourceDir}",
2096
+ "usageReportI18nDir": "Directorio I18n: {i18nDir}",
2067
2097
  "usageReportSummary": "📈 RESUMEN",
2068
2098
  "usageReportSourceFilesScanned": "Archivos fuente escaneados: {count}",
2069
2099
  "usageReportTranslationFilesFound": "Archivos de traducción encontrados: {count}",
2070
2100
  "usageReportAvailableKeys": "Claves de traducción disponibles: {count}",
2071
- "usageReportUsedKeys": "Claves de traducción usadas: {count}",
2072
- "usageReportDynamicKeys": "Claves de traducción dinámicas: {count}",
2073
- "usageReportUnusedKeys": "Claves de traducción no usadas: {count}",
2101
+ "usageReportUsedKeys": "Claves de traducción utilizadas: {count}",
2102
+ "usageReportDynamicKeys": "Claves de traducción dinámica: {count}",
2103
+ "usageReportUnusedKeys": "Claves de traducción no utilizadas: {count}",
2074
2104
  "usageReportMissingKeys": "Claves de traducción faltantes: {count}",
2075
- "usageReportNotTranslatedKeys": "Claves de traducción no traducidas: {count}",
2076
- "usageReportTranslationCompleteness": "🌍 COMPLETITUD DE TRADUCCIONES",
2105
+ "usageReportNotTranslatedKeys": "Claves no traducidas: {count}",
2106
+ "usageReportTranslationCompleteness": "🌍 INTEGRIDAD DE LA TRADUCCIÓN",
2077
2107
  "usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
2078
- "usageReportNotTranslatedInLanguage": "No traducido: {count} claves",
2108
+ "usageReportNotTranslatedInLanguage": "No traducido: {count} llaves",
2079
2109
  "usageReportTranslationFilesDiscovered": "📁 ARCHIVOS DE TRADUCCIÓN",
2080
2110
  "usageReportFileInfo": "{relativePath} (espacio de nombres: {namespace}, tipo: {type})",
2081
2111
  "usageReportUnusedTranslationKeys": "🗑️ CLAVES DE TRADUCCIÓN NO UTILIZADAS",
2082
- "usageReportUnusedKeysDescription": "Estas claves existen en archivos de traducción pero no se usan en el código fuente:",
2112
+ "usageReportUnusedKeysDescription": "Estas claves existen en los archivos de traducción pero no se utilizan en el código fuente:",
2083
2113
  "usageReportUnusedKey": "• {key}",
2084
- "usageReportMoreUnusedKeys": "... y {count} claves no utilizadas más",
2085
- "usageReportMissingTranslationKeys": "❌ CLAVES DE TRADUCCIÓN FALTANTES",
2086
- "usageReportMissingKeysDescription": "Estas claves se usan en el código fuente pero faltan en los archivos de traducción:",
2114
+ "usageReportMoreUnusedKeys": "... y {count} más llaves sin usar",
2115
+ "usageReportMissingTranslationKeys": "❌ FALTAN TECLAS DE TRADUCCIÓN",
2116
+ "usageReportMissingKeysDescription": "Estas claves se utilizan en el código fuente pero faltan en los archivos de traducción:",
2087
2117
  "usageReportMissingKey": "• {key}",
2088
- "usageReportUsedIn": "Usado en: {filePath}",
2089
- "usageReportMoreFiles": "... y {count} archivos más",
2090
- "usageReportDynamicTranslationKeys": "⚡ CLAVES DE TRADUCCIÓN DINÁMICAS",
2118
+ "usageReportUsedIn": "Utilizado en: {filePath}",
2119
+ "usageReportMoreFiles": "... y {count} más archivos",
2120
+ "usageReportDynamicTranslationKeys": "⚡ CLAVES DE TRADUCCIÓN DINÁMICA",
2091
2121
  "usageReportDynamicKeysDescription": "Estas claves se usan dinámicamente (construidas en tiempo de ejecución):",
2092
2122
  "usageReportDynamicKey": "• {key}",
2093
- "usageReportFileUsageBreakdown": "📊 DESGLOSE DE USO DE ARCHIVOS",
2094
- "usageReportFileUsage": "{filePath}: {count} claves",
2123
+ "usageReportFileUsageBreakdown": "📊 DESGLOSE DEL USO DE ARCHIVOS",
2124
+ "usageReportFileUsage": "{filePath}: {count} llaves",
2095
2125
  "status": {
2096
2126
  "generating": "⏳ Generando...",
2097
2127
  "completed": "✅ Completado"
2098
2128
  },
2099
2129
  "help": {
2100
- "usage": "Uso: node i18ntk-manage.js [opciones]",
2101
- "interactiveMode": "💡 Usar: node i18ntk-manage.js --command=<comando> para ejecución directa",
2130
+ "usage": "Uso: nodo principal/manage/index.js [opciones]",
2131
+ "interactiveMode": "💡 Utilice: nodo principal/manage/index.js --command=<command> para ejecución directa",
2102
2132
  "initProject": "🚀 Inicializar nuevos idiomas",
2103
2133
  "analyzeTranslations": "🔍 Analizar traducciones",
2104
2134
  "validateTranslations": "✅ Validar traducciones",
2105
- "checkUsage": "📊 Verificar uso de claves",
2106
- "showHelp": "📖 Usar: node i18ntk-manage.js --help para ver comandos disponibles",
2107
- "availableCommands": "📖 Comandos Disponibles:",
2108
- "initCommand": "init - Inicializar nuevos idiomas",
2109
- "analyzeCommand": "analyze - Analizar traducciones",
2110
- "validateCommand": "validate - Validar traducciones",
2111
- "usageCommand": "usage - Verificar uso de claves",
2112
- "sizingCommand": "sizing - Analizar dimensionamiento",
2113
- "completeCommand": "complete - Completar traducciones (100% cobertura)",
2114
- "summaryCommand": "summary - Mostrar estado del proyecto",
2115
- "scannerCommand": "scanner - Escanear problemas i18n",
2116
- "translateCommand": "translate - Traducción automática (Beta)",
2117
- "debugCommand": "debug - Depurar problemas de traducción"
2135
+ "checkUsage": "📊 Verifique el uso de claves",
2136
+ "showHelp": "📖 Utilice: node main/manage/index.js --ayuda para los comandos disponibles",
2137
+ "availableCommands": "📖 Comandos disponibles:",
2138
+ "initCommand": "init - Inicializar nuevos idiomas",
2139
+ "analyzeCommand": "analizar - Analizar traducciones",
2140
+ "validateCommand": "validar - Validar traducciones",
2141
+ "usageCommand": "uso - Verificar el uso de claves",
2142
+ "sizingCommand": "dimensionamiento - Analizar dimensionamiento",
2143
+ "completeCommand": "complete - Traducciones completas (100% de cobertura)",
2144
+ "summaryCommand": "resumen - Mostrar el estado del proyecto",
2145
+ "scannerCommand": "escáner - Escanear en busca de problemas con i18n",
2146
+ "translateCommand": "traducir: traducción automática de archivos locales (Beta)",
2147
+ "debugCommand": "debug - Problemas de traducción de depuración"
2118
2148
  },
2119
2149
  "test_complete_system": {
2120
- "starting_test": "🧪 Iniciando Prueba Completa del Sistema",
2150
+ "starting_test": "🧪 Iniciar la prueba completa del sistema",
2121
2151
  "separator": "=",
2122
- "testing_ui_translations": "📝 Probando Traducciones de UI...",
2123
- "testing_settings_manager": "⚙️ Probando Gestor de Configuración...",
2124
- "testing_main_scripts": "🔧 Probando Scripts Principales...",
2125
- "checking_translation_consistency": "🌐 Verificando Consistencia de Traducción...",
2126
- "non_critical_missing_keys": "ℹ️ {file}: {count} claves no críticas faltantes",
2127
- "extra_keys": "ℹ️ {file}: {count} claves extra",
2152
+ "testing_ui_translations": "📝 Probando traducciones de la interfaz de usuario...",
2153
+ "testing_settings_manager": "⚙️ Administrador de configuración de prueba...",
2154
+ "testing_main_scripts": "🔧 Probando guiones principales...",
2155
+ "checking_translation_consistency": "🌐 Comprobando la coherencia de la traducción...",
2156
+ "non_critical_missing_keys": "ℹ️ {file}: {count} claves faltantes no críticas",
2157
+ "extra_keys": "ℹ️ {file}: {count} llaves extra",
2128
2158
  "generating_report": "📊 Generando Informe...",
2129
- "final_test_report_title": "📋 INFORME FINAL DE PRUEBA",
2159
+ "final_test_report_title": "📋 INFORME DE PRUEBA FINAL",
2130
2160
  "passed": "✅ Aprobado: {passed}",
2131
2161
  "failed": "❌ Fallido: {failed}",
2132
- "warnings": "⚠️ Advertencias: {warnings}",
2133
- "missing_translations_title": "🔍 Traducciones Faltantes ({count}):",
2162
+ "warnings": "⚠️ Advertencias: {warnings}",
2163
+ "missing_translations_title": "🔍 Traducciones faltantes ({count}):",
2134
2164
  "missing_translation_key": "- {key}",
2135
2165
  "missing_translations_more": "... y {count} más",
2136
2166
  "errors_title": "❌ Errores:",
2137
2167
  "error_message": "- {error}",
2138
- "overall_status": "📊 Estado General: {status}",
2168
+ "overall_status": "📊 Estado general: {status}",
2139
2169
  "success_message": "✅ {message}",
2140
2170
  "failure_message": "❌ {message}",
2141
2171
  "failure_error_message": "{errorMessage}",
2142
- "warning_message": "⚠️ {message}",
2143
- "test_runner_failed": "❌ Ejecutor de pruebas falló:",
2172
+ "warning_message": "⚠️ {message}",
2173
+ "test_runner_failed": "❌ El corredor de prueba falló:",
2144
2174
  "recommendations": {
2145
- "add_missing_translation_keys": "Agregar claves de traducción faltantes para mantener consistencia",
2146
- "fix_failing_scripts": "Corregir scripts fallidos antes del despliegue",
2147
- "review_warning_messages": "Revisar y atender mensajes de advertencia",
2148
- "system_ready_for_deployment": "El sistema está listo para despliegue"
2175
+ "add_missing_translation_keys": "Agregue las claves de traducción que faltan para mantener la coherencia",
2176
+ "fix_failing_scripts": "Corregir scripts fallidos antes de la implementación",
2177
+ "review_warning_messages": "Revisar y abordar mensajes de advertencia",
2178
+ "system_ready_for_deployment": "El sistema está listo para su implementación."
2149
2179
  },
2150
2180
  "hardcodedTexts": {
2151
- "addMissingTranslationKeys": "Agregar claves de traducción faltantes para mantener consistencia",
2152
- "fixFailingScripts": "Corregir scripts fallidos antes del despliegue",
2153
- "reviewWarningMessages": "Revisar y atender mensajes de advertencia",
2154
- "systemReadyForDeployment": "El sistema está listo para despliegue"
2181
+ "addMissingTranslationKeys": "Agregue las claves de traducción que faltan para mantener la coherencia",
2182
+ "fixFailingScripts": "Corregir scripts fallidos antes de la implementación",
2183
+ "reviewWarningMessages": "Revisar y abordar mensajes de advertencia",
2184
+ "systemReadyForDeployment": "El sistema está listo para su implementación."
2155
2185
  }
2156
2186
  },
2157
2187
  "testConsoleI18n": {
2158
- "found_target_file": "Archivo objetivo encontrado: {fileName}",
2159
- "scanning_files_for_console_statements": "Escaneando archivos para declaraciones de consola...",
2160
- "found_javascript_files": "Encontrados {count} archivos JavaScript.",
2161
- "console_i18n_analysis_results": "Resultados del Análisis de Consola I18n",
2162
- "total_console_statements": "Total de declaraciones de consola: {count}",
2188
+ "found_target_file": "Archivo de destino encontrado: {fileName}",
2189
+ "scanning_files_for_console_statements": "Escaneando archivos en busca de declaraciones de consola...",
2190
+ "found_javascript_files": "Encontró {count} Archivos JavaScript.",
2191
+ "console_i18n_analysis_results": "Resultados del análisis de la consola I18n",
2192
+ "total_console_statements": "Declaraciones totales de la consola: {count}",
2163
2193
  "translated_statements": "Declaraciones traducidas: {count}",
2164
- "hardcoded_statements": "Declaraciones hardcodeadas: {count}",
2165
- "translation_coverage": "Cobertura de Traducción: {percentage}%",
2166
- "coverage_by_file": "Cobertura por Archivo:",
2194
+ "hardcoded_statements": "Declaraciones codificadas: {count}",
2195
+ "translation_coverage": "Cobertura de traducción: {percentage}%",
2196
+ "coverage_by_file": "Cobertura por Expediente:",
2167
2197
  "file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
2168
- "hardcoded_console_statements": "Declaraciones de Consola Hardcodeadas:",
2198
+ "hardcoded_console_statements": "Declaraciones de consola codificadas:",
2169
2199
  "file_header": "Archivo: {file}",
2170
2200
  "line_statement": "Línea {line}: {statement}",
2171
- "suggested_key": "Clave Sugerida: {key}",
2172
- "suggested_replacement": "Reemplazo Sugerido: {replacement}",
2201
+ "suggested_key": "Clave sugerida: {key}",
2202
+ "suggested_replacement": "Reemplazo sugerido: {replacement}",
2173
2203
  "recommendations": "Recomendaciones:",
2174
- "recommendation_1": "1. Reemplazar cadenas hardcodeadas con llamadas i18n.t().",
2175
- "recommendation_2": "2. Agregar nuevas claves a los archivos JSON de traducción relevantes.",
2176
- "recommendation_3": "3. Asegurar que todos los mensajes de consola sean visibles al usuario y requieran traducción.",
2177
- "recommendation_4": "4. Usar literales de plantilla o concatenación de cadenas para mensajes dinámicos, pasando variables a i18n.t().",
2178
- "translation_keys_to_add": "Claves de Traducción Sugeridas para Agregar:",
2179
- "add_keys_instruction": "Copiar la siguiente estructura JSON en tus archivos de traducción:",
2180
- "perfect_translation_coverage": "¡Cobertura de Traducción Perfecta!",
2181
- "all_statements_using_translation": "Todas las declaraciones de consola están usando el sistema de traducción.",
2182
- "i18n_console_translation_checker": "Verificador de Traducción de Consola I18n",
2183
- "script_description_line1": "Este script escanea todos los archivos JavaScript para declaraciones de consola",
2184
- "script_description_line2": "y verifica si están usando el sistema de traducción.",
2185
- "analysis_completed_in_duration": "Análisis completado en {duration} segundos.",
2204
+ "recommendation_1": "1. Reemplace las cadenas codificadas con llamadas i18n.t().",
2205
+ "recommendation_2": "2. Agregue nuevas claves a los archivos JSON de traducción relevantes.",
2206
+ "recommendation_3": "3. Asegúrese de que todos los mensajes de la consola sean de cara al usuario y requieran traducción.",
2207
+ "recommendation_4": "4. Utilice literales de plantilla o concatenación de cadenas para mensajes dinámicos, pasando variables a i18n.t().",
2208
+ "translation_keys_to_add": "Claves de traducción sugeridas para agregar:",
2209
+ "add_keys_instruction": "Copie la siguiente estructura JSON en sus archivos de traducción:",
2210
+ "perfect_translation_coverage": "¡Cobertura de traducción perfecta!",
2211
+ "all_statements_using_translation": "Todas las declaraciones de la consola utilizan el sistema de traducción.",
2212
+ "i18n_console_translation_checker": "Comprobador de traducción de la consola I18n",
2213
+ "script_description_line1": "Este script escanea todos los archivos JavaScript en busca de declaraciones de consola.",
2214
+ "script_description_line2": "y comprueba si están utilizando el sistema de traducción.",
2215
+ "analysis_completed_in_duration": "Análisis completado en {duration} artículos de segunda clase.",
2186
2216
  "report_saved_to_path": "Informe guardado en: {path}",
2187
- "found_hardcoded_messages": "Encontrados {count} mensajes hardcodeados. Saliendo con código de error 1.",
2188
- "all_console_messages_use_translation": "Todos los mensajes de consola usan traducción. Saliendo con código 0.",
2189
- "consoleTranslationsCheck": "Verificación de Traducciones de Consola"
2217
+ "found_hardcoded_messages": "Encontró {count} mensajes codificados. Saliendo con el código de error 1.",
2218
+ "all_console_messages_use_translation": "Todos los mensajes de la consola utilizan traducción. Saliendo con código 0.",
2219
+ "consoleTranslationsCheck": "Verificación de traducciones de la consola"
2190
2220
  },
2191
2221
  "translate_mismatches": {
2192
- "title": "🌐 Ayudante de Traducción {dryRun}",
2193
- "separator": "=====================================",
2194
- "processing_file": "📄 Procesando {language}.json...",
2195
- "translation_summary_title": "📊 Resumen de Traducciones:",
2196
- "total_translations_applied": "Total traducciones aplicadas: {totalTranslations}",
2197
- "run_with_apply_instruction": "💡 Ejecutar con --apply para aplicar estas traducciones",
2198
- "no_translation_mappings": "⚠️ No hay mapeos de traducción disponibles para {language}",
2222
+ "title": "🌐 Ayudante de traducción {dryRun}",
2223
+ "separator": "=======================================",
2224
+ "processing_file": "📄 Procesamiento {language}.json...",
2225
+ "translation_summary_title": "📊 Resumen de traducción:",
2226
+ "total_translations_applied": "Total de traducciones aplicadas: {totalTranslations}",
2227
+ "run_with_apply_instruction": "💡 Ejecute con --apply para aplicar estas traducciones",
2228
+ "no_translation_mappings": "⚠️ No hay asignaciones de traducción disponibles para {language}",
2199
2229
  "translation_applied": "✅ {key}: \"{oldValue}\" → \"{newValue}\"",
2200
- "saved_translations": "💾 Guardadas {count} traducciones en {filename}",
2201
- "found_translatable_items": "🔍 Encontrados {count} elementos traducibles",
2230
+ "saved_translations": "💾 Guardado {count} traducciones a {filename}",
2231
+ "found_translatable_items": "🔍 Encontrado {count} elementos traducibles",
2202
2232
  "no_automatic_translations": "✨ No hay traducciones automáticas disponibles",
2203
- "error_processing_file": "❌ Error procesando {filename}: {errorMessage}",
2204
- "coverage_report_title": "📊 Reporte de Cobertura de Traducción",
2205
- "coverage_report_separator": "===============================",
2233
+ "error_processing_file": "❌ Error al procesar {filename}: {errorMessage}",
2234
+ "coverage_report_title": "📊 Informe de cobertura de traducción",
2235
+ "coverage_report_separator": "=================================",
2206
2236
  "file_header": "📄 {filename}:",
2207
- "total_keys": "Total de claves: {total}",
2208
- "translated_keys": "Traducidas: {translated}",
2237
+ "total_keys": "Claves totales: {total}",
2238
+ "translated_keys": "Traducido: {translated}",
2209
2239
  "untranslated_markers": "Marcadores sin traducir: {untranslated}",
2210
2240
  "contains_english": "Contiene inglés: {hasEnglish}",
2211
2241
  "coverage_percentage": "Cobertura: {coverage}%",
2212
2242
  "error_general": "❌Error:",
2213
- "use_help": "Use --help para ver información de uso"
2243
+ "use_help": "Utilice --help para obtener información de uso"
2214
2244
  },
2215
2245
  "cleaningUpReportFiles": "Limpiando archivos de informes antiguos...",
2216
2246
  "couldNotDelete": "No se pudo eliminar {file}: {error}",
2217
- "deletedOldReportFiles": "Se eliminaron {count} archivos de informes antiguos.",
2247
+ "deletedOldReportFiles": "Eliminado {count} archivos de informes antiguos.",
2218
2248
  "errorCleaningUpReports": "Error al limpiar informes: {error}",
2219
2249
  "noOldReportFilesToDelete": "No hay archivos de informes antiguos que eliminar.",
2220
2250
  "reportFilesPreserved": "Archivos de informes conservados.",
@@ -2222,36 +2252,36 @@
2222
2252
  "reportSaved": "Informe guardado en: {reportPath}"
2223
2253
  },
2224
2254
  "ui": {
2225
- "autoDetectedI18nDirectory": "Directorio i18n autodetectado: {path}",
2226
- "executingCommand": "🔄 Ejecutando comando: {command}",
2227
- "unknownCommand": "Comando desconocido: {command}",
2228
- "errorExecutingCommand": "Error al ejecutar comando: {error}",
2229
- "errorLoadingTranslationFile": "Error al cargar archivo de traducción para '{language}': {error}",
2230
- "errorSavingLanguagePreference": "Error al guardar preferencia de idioma: {error}",
2231
- "noActiveReadlineInterface": "No hay interfaz readline activa disponible",
2232
- "uiLanguageUpdated": "🌍 Idioma de interfaz actualizado a: {language}",
2255
+ "autoDetectedI18nDirectory": "Directorio i18n detectado automáticamente: {path}",
2256
+ "executingCommand": "Ejecutando comando: {command}",
2257
+ "unknownCommand": "Comando desconocido: {command}",
2258
+ "errorExecutingCommand": "Error al ejecutar el comando: {error}",
2259
+ "errorLoadingTranslationFile": "Error al cargar el archivo de traducción para '{language}': {error}",
2260
+ "errorSavingLanguagePreference": "Error al guardar la preferencia de idioma: {error}",
2261
+ "noActiveReadlineInterface": "No hay ninguna interfaz de línea de lectura activa disponible",
2262
+ "uiLanguageUpdated": "Idioma de la interfaz de usuario actualizado a: {language}",
2233
2263
  "selectOptionPrompt": "Seleccione una opción:",
2234
- "pressEnterToReturn": "Presione Enter para volver al menú principal...",
2235
- "detectedSourceDirectory": "Directorio fuente detectado: {sourceDir}",
2264
+ "pressEnterToReturn": "Presione Enter para regresar al menú principal...",
2265
+ "detectedSourceDirectory": "Directorio de origen detectado: {sourceDir}",
2236
2266
  "detectedI18nDirectory": "Directorio i18n detectado: {directory}",
2237
- "toolkitTitle": "🌍 i18ntk - Kit de Herramientas de Gestión i18n Empresarial",
2238
- "versionInfo": "📦 Versión: {version}",
2239
- "releaseDate": "📅 Fecha de lanzamiento: {date}",
2240
- "maintainer": "👤 Mantenedor: {maintainer}",
2241
- "nodeVersion": "🔧 Node.js: {version}",
2242
- "license": "📄 Licencia: {license}",
2267
+ "toolkitTitle": "i18ntk - Kit de herramientas de gestión empresarial i18n",
2268
+ "versionInfo": "Versión: {version}",
2269
+ "releaseDate": "Fecha de lanzamiento: {date}",
2270
+ "maintainer": "Mantenedor: {maintainer}",
2271
+ "nodeVersion": "Nodo.js: {version}",
2272
+ "license": "Licencia: {license}",
2243
2273
  "whatsNew": "✨ Novedades en v{version}:",
2244
2274
  "changeItem": "{change}",
2245
2275
  "documentation": "📚 Documentación: {url}",
2246
2276
  "issues": "🐛 Problemas: {url}",
2247
- "versionInfoUnavailable": "Información de versión de i18ntk no disponible",
2248
- "versionInfoError": "Se produjo un error: {error}"
2277
+ "versionInfoUnavailable": "Información de la versión i18ntk no disponible",
2278
+ "versionInfoError": "Error: {error}"
2249
2279
  },
2250
2280
  "validateLanguagePurity": {
2251
2281
  "phrase_debug_tools": "herramientas de depuración",
2252
- "phrase_settings": "configuración",
2282
+ "phrase_settings": "ajustes",
2253
2283
  "phrase_configuration": "configuración",
2254
- "phrase_invalid_choice": "opción inválida",
2284
+ "phrase_invalid_choice": "elección inválida",
2255
2285
  "phrase_please_select": "por favor seleccione",
2256
2286
  "phrase_back_to_main_menu": "volver al menú principal",
2257
2287
  "phrase_error": "error",
@@ -2259,102 +2289,102 @@
2259
2289
  "phrase_success": "éxito",
2260
2290
  "phrase_failed": "fallido",
2261
2291
  "phrase_loading": "cargando",
2262
- "phrase_saving": "guardando",
2292
+ "phrase_saving": "ahorro",
2263
2293
  "phrase_full_system_debug": "depuración completa del sistema",
2264
2294
  "phrase_configuration_debug": "depuración de configuración",
2265
2295
  "phrase_translation_debug": "depuración de traducción",
2266
2296
  "phrase_performance_debug": "depuración de rendimiento",
2267
- "phrase_admin_pin_setup": "configuración de PIN de administrador",
2268
- "phrase_enter_admin_pin": "ingrese PIN de administrador",
2269
- "phrase_confirm_admin_pin": "confirme PIN de administrador",
2270
- "phrase_authentication_failed": "autenticación fallida",
2271
- "phrase_access_denied": "acceso denegado",
2297
+ "phrase_admin_pin_setup": "configuración del pin de administrador",
2298
+ "phrase_enter_admin_pin": "introduce el pin de administrador",
2299
+ "phrase_confirm_admin_pin": "confirmar pin de administrador",
2300
+ "phrase_authentication_failed": "la autenticación falló",
2301
+ "phrase_access_denied": "Acceso denegado",
2272
2302
  "phrase_security_log": "registro de seguridad",
2273
2303
  "language_german": "Alemán",
2274
2304
  "language_french": "Francés",
2275
2305
  "language_spanish": "Español",
2276
- "language_russian": "Ruso",
2277
- "language_japanese": "Japonés",
2306
+ "language_russian": "ruso",
2307
+ "language_japanese": "japonés",
2278
2308
  "language_chinese": "Chino",
2279
- "validator_title": "🔍 Validador de Pureza de Idioma",
2309
+ "validator_title": "🔍 Validador de pureza del lenguaje",
2280
2310
  "validating_file": "📄 Validando {language}.json ({name})...",
2281
- "valid_file_message": "✅ Válido - Sin violaciones de pureza de idioma",
2282
- "invalid_file_message": "❌ Inválido - {count} violación(es) encontrada(s)",
2311
+ "valid_file_message": "✅ Válido: sin violaciones de pureza del idioma",
2312
+ "invalid_file_message": "❌ Inválido - {count} violaciones encontradas",
2283
2313
  "no_validation_rules": "No hay reglas de validación definidas para el idioma: {language}",
2284
- "error_reading_file": "Error al leer archivo: {errorMessage}",
2314
+ "error_reading_file": "Error al leer el archivo: {errorMessage}",
2285
2315
  "issue_forbidden_marker": "Contiene marcador prohibido: {marker}",
2286
2316
  "issue_english_phrase": "Contiene frase en inglés: \"{phrase}\"",
2287
2317
  "issue_english_words": "Contiene palabras en inglés: {words}",
2288
- "issue_missing_cyrillic": "El texto largo debe contener caracteres cirílicos para Ruso",
2289
- "issue_missing_japanese": "El texto largo debe contener caracteres japoneses",
2290
- "issue_missing_chinese": "El texto largo debe contener caracteres chinos",
2318
+ "issue_missing_cyrillic": "El texto largo debe contener caracteres cirílicos para el ruso.",
2319
+ "issue_missing_japanese": "El texto largo debe contener caracteres japoneses.",
2320
+ "issue_missing_chinese": "El texto largo debe contener caracteres chinos.",
2291
2321
  "summary_title": "📊 RESUMEN DE VALIDACIÓN",
2292
- "overall_results_header": "📋 Resultados Generales:",
2322
+ "overall_results_header": "📋 Resultados generales:",
2293
2323
  "total_files_validated": "Total de archivos validados: {count}",
2294
2324
  "valid_files": "Archivos válidos: {count}",
2295
- "invalid_files": "Archivos inválidos: {count}",
2296
- "total_violations": "Total de violaciones: {count}",
2297
- "violations_by_file_header": "❌ VIOLACIONES POR ARCHIVO:"
2325
+ "invalid_files": "Archivos no válidos: {count}",
2326
+ "total_violations": "Infracciones totales: {count}",
2327
+ "violations_by_file_header": "❌ VIOLACIONES POR EXPEDIENTE:"
2298
2328
  },
2299
2329
  "workflow": {
2300
- "title": "Gestión de Flujos de Trabajo",
2301
- "description": "Gestionar flujos de trabajo i18n.",
2330
+ "title": "Gestión del flujo de trabajo",
2331
+ "description": "Administre los flujos de trabajo de i18n.",
2302
2332
  "select_workflow_file": "Seleccione un archivo de flujo de trabajo para ejecutar:",
2303
- "no_workflow_files": "No se encontraron archivos de flujo de trabajo en el directorio de flujos.",
2304
- "invalid_selection": "Selección inválida. Por favor ingrese un número correspondiente a un archivo de flujo de trabajo.",
2305
- "workflow_execution_started": "Iniciando flujo de trabajo: {workflowName}",
2333
+ "no_workflow_files": "No se encontraron archivos de flujo de trabajo en el directorio de flujos de trabajo.",
2334
+ "invalid_selection": "Selección no válida. Introduzca un número correspondiente a un archivo de flujo de trabajo.",
2335
+ "workflow_execution_started": "Flujo de trabajo inicial: {workflowName}",
2306
2336
  "workflow_execution_completed": "Flujo de trabajo completado: {workflowName}",
2307
- "workflow_execution_failed": "Flujo de trabajo fallido: {workflowName} - {error}",
2308
- "workflow_cancelled": "Ejecución de flujo de trabajo cancelada.",
2309
- "press_enter_to_continue": "¡Presione Enter para continuar!",
2337
+ "workflow_execution_failed": "Error en el flujo de trabajo: {workflowName} - {error}",
2338
+ "workflow_cancelled": "Se canceló la ejecución del flujo de trabajo.",
2339
+ "press_enter_to_continue": "¡Presiona Enter para continuar!",
2310
2340
  "starting": "🚀 Iniciando flujo de trabajo...",
2311
- "completed": "✅ ¡Flujo de trabajo completado exitosamente!",
2312
- "checkReports": "📄 Revise los informes para más detalles.",
2341
+ "completed": "✅ ¡Flujo de trabajo completado con éxito!",
2342
+ "checkReports": "📄 Consulta los informes para más detalles.",
2313
2343
  "exitingCompleted": "📝 Flujo de trabajo completado. Saliendo...",
2314
2344
  "summary": {
2315
- "title": "📋 RESUMEN DE FLUJO DE TRABAJO",
2316
- "separator": "===================",
2345
+ "title": "📋 RESUMEN DEL FLUJO DE TRABAJO",
2346
+ "separator": "====================",
2317
2347
  "completedAt": "🕐 Flujo de trabajo completado en: {timestamp}",
2318
- "initialViolations": "📊 Violaciones iniciales: {count}",
2319
- "finalViolations": "📉 Violaciones finales: {count}",
2320
- "totalFixes": "🔧 Total de correcciones aplicadas: {count}",
2348
+ "initialViolations": "📊 Infracciones iniciales: {count}",
2349
+ "finalViolations": "📉 Infracciones finales: {count}",
2350
+ "totalFixes": "🔧 Correcciones totales aplicadas: {count}",
2321
2351
  "improvement": "📈 Mejora: {percentage}%",
2322
- "stepResults": "📝 RESULTADOS POR PASO:",
2352
+ "stepResults": "📝 RESULTADOS DEL PASO:",
2323
2353
  "stepDetail": "{number}. {status} {stepName}",
2324
2354
  "violations": "Violaciones: {count}",
2325
2355
  "fixesApplied": "Correcciones aplicadas: {count}",
2326
2356
  "nextSteps": "💡 PRÓXIMOS PASOS:",
2327
- "congratulations": "🎉 ¡Felicitaciones! ¡Todos los archivos de localización tienen ahora pureza perfecta de idioma!",
2328
- "cicdIntegration": "✅ Considere integrar el validador en su pipeline CI/CD",
2329
- "automatedChecks": "✅ Configure verificaciones automatizadas para nuevas traducciones",
2330
- "greatProgress": "🎯 ¡Gran progreso! La mayoría de los problemas han sido resueltos.",
2331
- "manualReview": "🔍 Revise manualmente las violaciones restantes",
2332
- "addMappings": "🌐 Considere agregar más mapeos de traducción para casos especiales",
2333
- "goodProgress": "📈 Buen progreso realizado, pero se necesita más trabajo.",
2334
- "expandMappings": "🔧 Amplíe los mapeos de traducción automática",
2335
- "professionalReview": "👥 Considere la revisión manual de traducciones complejas",
2336
- "runAgain": "🔄 Ejecute el flujo de trabajo nuevamente después de agregar más mapeos",
2337
- "limitedProgress": "⚠️ Progreso limitado. Puede ser necesaria intervención manual.",
2338
- "reviewMappings": "🔍 Revise los mapeos de traducción y agregue los faltantes",
2339
- "professionalServices": "👥 Considere servicios de traducción profesional",
2340
- "checkIssues": "🔧 Verifique problemas sistemáticos en archivos de localización",
2357
+ "congratulations": "🎉 ¡Felicidades! ¡Todos los archivos locales ahora tienen una pureza de lenguaje perfecta!",
2358
+ "cicdIntegration": "✅ Considere integrar el validador en su proceso de CI/CD",
2359
+ "automatedChecks": "✅ Configure comprobaciones automáticas para nuevas traducciones",
2360
+ "greatProgress": "🎯 ¡Gran progreso! La mayoría de los problemas se han resuelto.",
2361
+ "manualReview": "🔍 Revisar las infracciones restantes manualmente",
2362
+ "addMappings": "🌐 Considere agregar más asignaciones de traducción para casos extremos",
2363
+ "goodProgress": "📈 Se han logrado buenos avances, pero se necesita más trabajo.",
2364
+ "expandMappings": "🔧 Ampliar asignaciones de traducción automática",
2365
+ "professionalReview": "👥 Considere la posibilidad de revisar manualmente traducciones complejas",
2366
+ "runAgain": "🔄 Ejecute el flujo de trabajo nuevamente después de agregar más asignaciones",
2367
+ "limitedProgress": "⚠️ Progreso limitado. Puede ser necesaria una intervención manual.",
2368
+ "reviewMappings": "🔍 Revise las asignaciones de traducción y agregue las que faltan",
2369
+ "professionalServices": "👥 Considere servicios de traducción profesionales",
2370
+ "checkIssues": "🔧 Verifique si hay problemas sistemáticos en los archivos locales",
2341
2371
  "success": "✅",
2342
2372
  "warning": "⚠️"
2343
2373
  }
2344
2374
  },
2345
2375
  "consoleI18nTester": {
2346
- "found_target_file": "Archivo objetivo encontrado",
2347
- "scanning_files_for_console_statements": "Escaneando archivos para declaraciones de consola",
2348
- "found_javascript_files": "Archivos JavaScript encontrados",
2349
- "console_i18n_analysis_results": "Resultados del análisis de i18n en consola",
2350
- "total_console_statements": "Total de declaraciones de consola",
2376
+ "found_target_file": "Archivo de destino encontrado",
2377
+ "scanning_files_for_console_statements": "Escaneando archivos en busca de declaraciones de consola",
2378
+ "found_javascript_files": "Archivos javascript encontrados",
2379
+ "console_i18n_analysis_results": "Resultados del análisis de la consola i18n",
2380
+ "total_console_statements": "Declaraciones totales de consola",
2351
2381
  "translated_statements": "Declaraciones traducidas",
2352
- "hardcoded_statements": "Declaraciones hardcodeadas",
2382
+ "hardcoded_statements": "Declaraciones codificadas",
2353
2383
  "translation_coverage": "Cobertura de traducción",
2354
- "coverage_by_file": "Cobertura por archivo",
2355
- "file_coverage_stats": "Estadísticas de cobertura de archivo",
2356
- "hardcoded_console_statements": "Declaraciones de consola hardcodeadas",
2357
- "file_header": "Encabezado de archivo",
2384
+ "coverage_by_file": "Cobertura por expediente",
2385
+ "file_coverage_stats": "Estadísticas de cobertura de archivos",
2386
+ "hardcoded_console_statements": "Declaraciones de consola codificadas",
2387
+ "file_header": "encabezado de archivo",
2358
2388
  "line_statement": "Declaración de línea",
2359
2389
  "suggested_key": "Clave sugerida",
2360
2390
  "suggested_replacement": "Reemplazo sugerido",
@@ -2364,43 +2394,43 @@
2364
2394
  "recommendation_3": "Recomendación 3",
2365
2395
  "recommendation_4": "Recomendación 4",
2366
2396
  "translation_keys_to_add": "Claves de traducción para agregar",
2367
- "add_keys_instruction": "Instrucción para agregar claves",
2397
+ "add_keys_instruction": "Agregar instrucciones de claves",
2368
2398
  "perfect_translation_coverage": "Cobertura de traducción perfecta",
2369
- "all_statements_using_translation": "Todas las declaraciones usando traducción",
2370
- "i18n_console_translation_checker": "Verificador de traducción de consola i18n",
2371
- "script_description_line1": "Descripción del script línea 1",
2372
- "script_description_line2": "Descripción del script línea 2",
2399
+ "all_statements_using_translation": "Todas las declaraciones usando traducción.",
2400
+ "i18n_console_translation_checker": "Comprobador de traducción de consola I18n",
2401
+ "script_description_line1": "Línea de descripción del guión 1",
2402
+ "script_description_line2": "Línea de descripción del guión 2",
2373
2403
  "analysis_completed_in_duration": "Análisis completado en duración",
2374
- "report_saved_to_path": "Informe guardado en ruta",
2375
- "found_hardcoded_messages": "Mensajes hardcodeados encontrados",
2376
- "all_console_messages_use_translation": "Todos los mensajes de consola usan traducción"
2404
+ "report_saved_to_path": "Informe guardado en la ruta",
2405
+ "found_hardcoded_messages": "Mensajes codificados encontrados",
2406
+ "all_console_messages_use_translation": "Todos los mensajes de la consola usan traducción."
2377
2407
  },
2378
2408
  "exportTranslations": {
2379
2409
  "createdDirectory": "Directorio creado",
2380
2410
  "foundFiles": "Archivos encontrados",
2381
2411
  "createdTemplate": "Plantilla creada",
2382
- "skippedExisting": "Existente omitido",
2412
+ "skippedExisting": "Omitido existente",
2383
2413
  "title": "Título",
2384
- "creatingTemplates": "Creando plantillas",
2414
+ "creatingTemplates": "Crear plantillas",
2385
2415
  "summary": "Resumen",
2386
- "summaryLanguages": "Resumen de idiomas",
2387
- "summaryFilesPerLanguage": "Archivos por idioma",
2388
- "summaryTotalFiles": "Total de archivos",
2416
+ "summaryLanguages": "Idiomas de resumen",
2417
+ "summaryFilesPerLanguage": "Archivos de resumen por idioma",
2418
+ "summaryTotalFiles": "Resumen total de archivos",
2389
2419
  "success": "Éxito",
2390
2420
  "location": "Ubicación",
2391
- "nextSteps": "Siguientes pasos"
2421
+ "nextSteps": "Próximos pasos"
2392
2422
  },
2393
2423
  "dashboard": {
2394
- "title": "Tablero",
2395
- "overview": "Vista general"
2424
+ "title": "Título",
2425
+ "overview": "Descripción general"
2396
2426
  },
2397
2427
  "auth": {
2398
- "title": "Autenticación",
2428
+ "title": "Título",
2399
2429
  "email": "Correo electrónico",
2400
2430
  "password": "Contraseña",
2401
2431
  "signIn": "Iniciar sesión",
2402
- "forgotPassword": "Olvidé mi contraseña",
2403
- "signUp": "Registrarse"
2432
+ "forgotPassword": "Has olvidado tu contraseña",
2433
+ "signUp": "Inscribirse"
2404
2434
  },
2405
2435
  "checkUsage": {
2406
2436
  "usage_analysis_failed": "El análisis de uso falló."