i18ntk
Version:
i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.
741 lines • 164 kB
JSON
{
"meta": {
"version": "3.1.2",
"updated": "2026-05-07"
},
"common": {
"welcome": "Bienvenido",
"hello": "Hola",
"goodbye": "Adiós",
"yes": "Sí",
"no": "No",
"save": "Ahorrar",
"cancel": "Cancelar",
"delete": "Borrar",
"edit": "Editar",
"loading": "Cargando...",
"offlineTitle": "Estás desconectado",
"offlineMessage": "Por favor revisa tu conexión a internet",
"tryReconnect": "Intenta volver a conectarte",
"logout": "Cerrar sesión",
"login": "Acceso",
"amount": "Cantidad",
"success": "Éxito",
"error": "Error",
"warning": "Advertencia",
"info": "Información:",
"debug": "Depurar",
"progress": "Progreso:",
"remaining": "Restante:",
"total": "Total:",
"completed": "7. ¡Completado con éxito!",
"missing": "Desaparecido",
"partial": "Parcial",
"sameAsSource": "Igual que la fuente:",
"formatMismatch": "El formato no coincide:",
"typeMismatch": "Tipo no coincidente:",
"structureMismatch": "Desajuste de estructura:",
"invalidOption": "Opción no válida",
"separator": "====================================================",
"initializationFailed": "❌ Falló la inicialización: {error}",
"stackTrace": "Seguimiento de pila: {stack}",
"pressEnterToContinue": "Presione Entrar para continuar...",
"pressEnterToReturn": "Presione Enter para regresar al menú principal...",
"stepCompleted": "Paso '{stepName}' completado.",
"stepFailed": "Paso '{stepName}' fallido.",
"runningStep": "Paso de carrera: {stepName}",
"command": "Dominio: {command}",
"startingWorkflow": "Iniciando flujo de trabajo...",
"workflowCompleted": "Flujo de trabajo completado.",
"checkReports": "Consulte los informes para obtener más detalles.",
"errorExecutingCommand": "Error al ejecutar el comando: {error}",
"genericError": "❌Error: {error}",
"errors": {
"errors": "Errores:",
"genericError": "❌Error: {error}",
"initializationFailed": "❌ Falló la inicialización: {error}",
"initializationCancelled": "❌ Inicialización cancelada por el usuario.",
"translationKeyNotFound": "Clave de traducción no encontrada: {key}",
"sourceDirectoryNotFound": "Directorio fuente no encontrado: {directory}",
"configLoadingFailed": "Error al cargar la configuración",
"invalidSourceDirectory": "Directorio fuente no válido: {directory}",
"securityViolation": "Violación de seguridad detectada",
"authenticationFailed": "Error de autenticación",
"sourceEqualsI18nWarn": "⚠️ sourceDir es igual a i18nDir ({sourceDir}). Volviendo a {fallback} para escanear el origen."
},
"errorGeneratingStatusSummary": "Error al generar el resumen de estado: {error}",
"errorRunningDebugTool": "Error al ejecutar la herramienta de depuración '{displayName}': {error}",
"errorReadingDebugLogs": "Error al leer los registros de depuración: {error}",
"errorAnalyzingLogFile": "Error al analizar el archivo de registro: {error}",
"errorAnalyzingTranslationKeys": "Error al analizar las claves de traducción: {error}",
"errorAnalyzingTranslationCompleteness": "Error al analizar la integridad de la traducción: {error}",
"analyzingTranslationCompleteness": "Analizando la integridad de la traducción en todos los idiomas...",
"i18nDirectoryNotFound": "⚠️ directorio i18n no encontrado: {i18nDir}",
"translationCompletenessAnalysisFailed": "⚠️ Error en el análisis de integridad de la traducción: {error}",
"failedToAnalyzeLanguage": "❌ No se pudo analizar el idioma {language}: {error}",
"errorReadingI18nDirectory": "❌ Error al leer el directorio i18n:",
"languageCompletenessTitle": "📈 INTEGRIDAD DE LA TRADUCCIÓN POR IDIOMA",
"errorAnalyzingTranslationFormat": "Error al analizar el formato de traducción: {error}",
"errorAnalyzingTranslationType": "Error al analizar el tipo de traducción: {error}",
"errorAnalyzingTranslationStructure": "Error al analizar la estructura de traducción: {error}",
"errorAnalyzingTranslationFormatMismatch": "Error al analizar la falta de coincidencia del formato de traducción: {error}",
"errorAnalyzingTranslationTypeMismatch": "Error al analizar la discrepancia del tipo de traducción: {error}",
"errorAnalyzingTranslationStructureMismatch": "Error al analizar la estructura de traducción que no coincide: {error}",
"errorAnalyzingTranslationSameAsSource": "Error al analizar la traducción igual que la fuente: {error}",
"title": "Estado",
"nextStep1": "1. Verifique el análisis de uso:",
"nextStep2": "2. Validar traducciones:",
"nextStep3": "3. Analizar la integridad:",
"nextStep4": "4. Complete las traducciones que faltan:",
"nextStep5": "5. Generar informe resumido:",
"nextStep6": "6. Revisar y finalizar las traducciones:",
"generating": "Generando informe resumido...",
"review": "Revisando traducciones...",
"finalizing": "Finalizando traducciones...",
"finalized": "¡Finalizado con éxito!",
"warnings": "Advertencias:",
"completedKeys": "Claves completadas:",
"missingKeys": "Teclas faltantes:",
"partialKeys": "Claves parciales:",
"home": "Hogar",
"settings": "Ajustes",
"startingSettings": "🎛️ Iniciando configuración CLI...",
"confirm": "Confirmar",
"errorExiting": "Error al salir."
},
"errors": {
"invalidOption": "❌ Opción no válida: {option}. Por favor inténtalo de nuevo.",
"readlineClosed": "El flujo de entrada está cerrado; ejecutándose en modo no interactivo.",
"noPackageJson": "No se encontró ningún paquete.json. No se puede detectar automáticamente el marco i18n.",
"noI18nDir": "No se encontró ningún directorio i18n en la raíz del proyecto.",
"noI18nConfig": "No se encontró ningún archivo de configuración de i18n en la raíz del proyecto.",
"errorReadingDebugLogs": "Error al leer los registros de depuración: {error}"
},
"scanner": {
"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",
"help_options": {
"source_dir": "Directorio de origen para buscar problemas con i18n",
"output_dir": "Directorio de informes y resultados de escaneo",
"framework": "Marco de destino (react, vue, angular, vanilla)",
"patterns": "Patrones de expresiones regulares personalizados para la detección de texto",
"exclude": "Patrones de archivos para excluir del escaneo",
"output_report": "Generar informe de escaneo detallado",
"min_length": "Longitud mínima del texto a considerar para la traducción",
"max_length": "Longitud máxima del texto a considerar para la traducción",
"include_tests": "Incluir archivos de prueba en el proceso de escaneo"
},
"starting": "🔍 Iniciar el escáner de texto para framework: {framework}",
"sourceDirectory": "📁 Directorio de escaneo: {sourceDir}",
"frameworkDetected": "🎯 Marco detectado: {framework}",
"scanningFiles": "📊 Escaneo {fileCount} archivos...",
"foundTexts": "📝 Encontrado {textCount} textos que requieren traducción",
"generatingReport": "📊 Generando informe detallado...",
"reportSaved": "💾 Informe de escaneo guardado en: {reportPath}",
"noTextsFound": "✅ No se encontraron textos en inglés codificados",
"scanComplete": "🎉 ¡El escaneo se completó con éxito!",
"analysisTitle": "🔍 ANÁLISIS DE ESCANEO DE TRADUCCIÓN",
"fileSummary": "📄 {file}: {count} textos encontrados",
"textLocation": "📍 Línea {line}: {text}",
"foundText": "Encontró {count} posibles instancias de texto codificado",
"context": "📝 Contexto: {context}",
"severity": "⚠️ Gravedad: {severity}",
"recommendation": "💡 Recomendación: {recommendation}",
"welcome": {
"title": "🎯 ¡Bienvenido al Escáner de Texto!",
"description": "Esta herramienta escanea su código fuente en busca de texto codificado en inglés que pueda necesitar traducción."
},
"frameworkPrompt": {
"title": "🎯 Seleccionar marco",
"available": "Marcos disponibles: reaccionar, vue, angular, vainilla",
"description": "Ingrese el tipo de marco (o presione Enter para la detección automática):",
"input": "Estructura:"
},
"directoryPrompt": {
"title": "📁 Seleccionar directorio de origen",
"current": "Directorio actual: {dir}",
"description": "Ingrese el directorio para escanear (o presione Enter para obtener el actual):",
"input": "Directorio:"
},
"options": {
"includeTests": "¿Incluir archivos de prueba?",
"excludeDirs": "Directorios a excluir (separados por comas):",
"customPatterns": "Patrones personalizados para buscar (regex):"
},
"reportGenerated": "Informe de escaneo generado: {path}"
},
"fixer": {
"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",
"starting": "🚀 Inicio de corrección de traducción para idiomas: {languages}",
"sourceDirectory": "📁 Directorio de fuentes: {sourceDir}",
"sourceLanguage": "🔤 Idioma de origen: {sourceLanguage}",
"markers": "🏷️ Marcadores para arreglar: {markers}",
"scanningLanguage": "📊 Escaneo {language}...",
"noLanguages": "❌ No se han especificado idiomas para la corrección.",
"allComplete": "🎉 ¡Todas las traducciones ya están completas!",
"fullReportSaved": "📊 Informe completo guardado en: {reportPath}",
"reviewReport": "Revise el informe antes de continuar.",
"backupCreated": "💾 Copia de seguridad creada exitosamente.",
"applyingFixes": "🔄 Aplicando correcciones...",
"fixingComplete": "✅ ¡Arreglo de traducción completo!",
"operationCancelled": "❌ Operación cancelada por el usuario.",
"analysisTitle": "🔍 ANÁLISIS DE FIJACIÓN DE TRADUCCIÓN",
"analysisSeparator": "====================================================",
"totalIssues": "Total de problemas encontrados: {totalIssues}",
"missingTranslations": "Traducciones faltantes: {missing}",
"placeholderTranslations": "Traducciones de marcadores de posición: {placeholder}",
"noIssues": "✅ No se encontraron problemas. Todas las traducciones están completas.",
"detailedIssues": "📋 CUESTIONES DETALLADAS:",
"detailedSeparator": "--------------------------------------------------",
"filePath": "📄 {file} → {path}",
"missingKey": "❌ FALTA: {source} → {new}",
"placeholderKey": "⚠️ MARCADOR DE LUGAR: \"{target}\" → \"{new}\"",
"moreIssues": "... y {count} más problemas. Consulte el archivo del informe para obtener detalles completos.",
"confirmationTitle": "🤔 ¿Quieres continuar con estas correcciones?",
"confirmationOptions": "Opciones:",
"optionYes": "y - Sí, aplicar todas las correcciones",
"optionNo": "n - No, cancelar operación",
"optionShow": "s - Mostrar problemas detallados",
"choicePrompt": "Tu elección (s/n/s):",
"nonInteractiveMode": "⚡ Se detectó modo no interactivo: se aplican correcciones automáticamente...",
"reportGenerated": "📊 Informe de reparación generado: {path}",
"summary": "Resumen del reparador:",
"welcome": {
"title": "🎯 ¡Bienvenido a Translation Fixer!",
"description": "Esta herramienta le ayudará a corregir traducciones y marcadores de posición rotos en sus archivos locales."
},
"markerPrompt": {
"title": "🏷️ Configurar marcadores de posición",
"description": "Ingrese los marcadores que indican texto no traducido (separados por comas):",
"currentDefaults": "Marcadores predeterminados: {markers}",
"input": "Marcadores (o presione Enter para ver los valores predeterminados):"
},
"languagePrompt": {
"title": "🌍 Seleccione idiomas para corregir",
"available": "Idiomas disponibles: {languages}",
"description": "Ingrese los idiomas a corregir (separados por comas) o presione Entrar para todos:",
"input": "Idiomas:",
"noLanguages": "No se encontraron idiomas para corregir."
},
"directoryPrompt": {
"title": "📁 Seleccionar directorio",
"current": "Directorio actual: {dir}",
"description": "Ingrese el directorio que contiene sus archivos locales (o presione Enter para ver los actuales):",
"input": "Directorio:"
},
"backupLocation": "Ubicación de la copia de seguridad: {dir}",
"completed": "Reparación completada.",
"creatingBackup": "Creando copia de seguridad en {dir}...",
"dryRunMode": "Modo de funcionamiento en seco: {mode}",
"error": "El reparador falló: {error}",
"fixing": "Fijación {language}...",
"foundLanguages": "Encontró {count} idiomas: {languages}",
"languageFixed": "{language}: fijado {fixed} clave(s), omitida {skipped}.",
"running": "Ejecutando el reparador de traducción...",
"totalFixed": "Total fijo: {count}"
},
"autorun": {
"stepAnalyzeTranslations": "Analizar traducciones",
"stepCompletedWithIcon": "✅ Completado: {stepName}",
"stepValidateTranslations": "Validar traducciones",
"stepRunning": "▶️ Paso {stepNumber}/{totalSteps}: {stepName}",
"separator": "====================================================",
"stepFailed": "❌ Fallido: {stepName}",
"errorLabel": "Error",
"autoRunScriptTitle": "🧪 Flujo de trabajo de ejecución automática",
"usageTitle": "Uso",
"runAllSteps": "Ejecutar: nodo i18ntk-autorun.js",
"configureSettingsFirst": "Configuración: i18ntk-config.json o indicadores CLI",
"runSpecificSteps": "Utilice --steps=1,3 o --list para mostrar los pasos",
"showHelp": "--ayuda para más información",
"examplesTitle": "Ejemplos",
"configExample": "nodo i18ntk-autorun.js --ui-language=zh",
"stepsExample1": "nodo i18ntk-autorun.js --steps=analizar,validar",
"stepsExample2": "nodo i18ntk-autorun.js --lista",
"customSettingsConfiguration": "Configuración de ejecución automática personalizada",
"availableSteps": "Pasos disponibles",
"startingAutoRunWorkflow": "🚀 Iniciando flujo de trabajo de ejecución automática...",
"workflowIncludesSteps": "El flujo de trabajo incluye {count} pasos:",
"missingRequiredFile": "Falta el archivo requerido: {file}",
"workflowStopped": "El flujo de trabajo se detuvo debido a una falla.",
"workflowCompleted": "🎉 ¡Flujo de trabajo completado!",
"successfulSteps": "Pasos exitosos: {count}",
"failedSteps": "Pasos fallidos: {count}",
"stepInitializeProject": "Inicializar proyecto",
"stepCheckUsage": "Verificar el uso de claves",
"stepGenerateSummary": "Generar informe resumido",
"runInitializationFirst": "Ejecute primero la inicialización.",
"initializationCheckPassed": "Se pasó la verificación de inicialización.",
"runningStep": "Paso de carrera: {stepName}",
"commandLabel": "Dominio: {command}",
"stepCompletedWithTime": "Paso '{stepName}' completado en {duration}EM.",
"stepCompleted": "Paso '{stepName}' completado.",
"stepFailedWithError": "Paso '{stepName}'falló con error: {error}",
"requiredStepFailed": "El paso requerido falló. Deteniendo el flujo de trabajo.",
"optionalStepFailed": "El paso opcional falló. Flujo de trabajo continuo.",
"stepRequired": "(Requerido)",
"stepOptional": "(Opcional)",
"startingExecution": "Iniciando ejecución...",
"pressEnterToContinue": "Presione Entrar para continuar...",
"runningSelectedSteps": "Ejecutando los pasos seleccionados...",
"invalidStepNumber": "Número de paso no válido: {stepNum}",
"executionReport": "Informe de Ejecución:",
"requiredFailedSteps": "Los pasos requeridos fallaron: {count}",
"stepDetails": "Detalles del paso:",
"reportSavedTo": "Informe guardado en: {path}",
"overallStatusSuccess": "ÉXITO",
"overallStatusFailed": "FALLIDO",
"overallStatus": "Estado general: {status}",
"pressEnterForDefaults": "Presione Entrar para usar la configuración predeterminada para cualquier mensaje.",
"sourceDirPrompt": "Ingrese el directorio de origen (predeterminado: {default}):",
"sourceLangPrompt": "Ingrese el idioma de origen (predeterminado: {default}):",
"targetLangsPrompt": "Introduzca los idiomas de destino (separados por comas, predeterminado: {default}):",
"translationMarkerPrompt": "Ingrese el marcador de traducción (predeterminado: {default}):",
"outputDirPrompt": "Ingrese el directorio de salida para los informes (predeterminado: {default}):",
"settingsUpdatedSuccessfully": "¡La configuración se actualizó correctamente!",
"errorConfiguringSettings": "Error al configurar los ajustes: {error}",
"configurationComplete": "Configuración completa.",
"runAutoRunCommand": "Ahora puede ejecutar el comando de ejecución automática.",
"configurationFailed": "Error de configuración: {error}",
"noValidStepNumbers": "No se han proporcionado números de paso válidos.",
"autoRunFailed": "Error de ejecución automática: {error}",
"stepCompleteTranslations": "Traducciones completas",
"stepAnalyzeSizing": "Analizar tallas",
"stepCompletedIcon": "✅",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Paso '{stepName}' correr...",
"stepFailedIcon": "❌",
"translationLoadWarning": "Advertencia: No se pudo cargar {lang} traducciones",
"configReadError": "Error al leer {file}"
},
"analyze": {
"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",
"source_directory": "📁 Directorio de fuentes: {sourceDir}",
"i18n_directory": "🌐 Directorio I18n: {i18nDir}",
"loading_translation_files": "📋 Cargando archivos de traducción...",
"sourceDirectoryLabel": "📁 Directorio de fuentes: {sourceDir}",
"sourceLanguageLabel": "🌍 Idioma de origen: {sourceLanguage}",
"strictModeLabel": "⚙️ Modo estricto: {mode}",
"found_translation_files_count": "✅ Encontrado {count} archivos de traducción",
"analyzing_translations": "🔍Analizando traducciones...",
"analysis_completed_successfully": "🎉 ¡Análisis completado con éxito!",
"analysis_results": "📊 RESULTADOS DEL ANÁLISIS",
"language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% traducido)",
"sample_missing_keys": "Ejemplos de claves faltantes:",
"missing_key": "- {key}",
"and_more_missing": "...y {count} más.",
"sample_unused_keys": "Ejemplos de claves no utilizadas:",
"unused_key": "- {key}",
"and_more_unused": "...y {count} más.",
"recommendations": "📋 RECOMENDACIONES",
"add_missing_translations": "💡 Agregue traducciones faltantes para mejorar la cobertura.",
"remove_unused_translations": "💡 Elimina las traducciones no utilizadas para mantener limpio tu proyecto.",
"next_steps": "📋 PRÓXIMOS PASOS",
"review_analysis_results": "1. Revise los resultados del análisis en la consola o en el informe generado.",
"run_with_output_report": "2. Ejecute con --output-report para obtener un informe detallado.",
"add_or_remove_translations": "3. Agregue las traducciones que faltan o elimine las que no se utilicen.",
"rerun_analysis": "4. Vuelva a ejecutar el análisis para verificar las mejoras.",
"analysis_summary": "📊 RESUMEN DEL ANÁLISIS",
"source_files_scanned": "Archivos fuente escaneados: {fileCount}",
"translation_files_checked": "Archivos de traducción comprobados: {translationFileCount}",
"total_keys": "Claves totales: {totalKeys}",
"translated_keys": "Claves traducidas: {translatedKeys}",
"missing_keys": "Teclas faltantes: {missingKeys}",
"unused_keys": "Claves no utilizadas: {unusedKeys}",
"translation_coverage": "Cobertura de traducción: {coverage}%",
"analysis_passed_for_language": "✅ Análisis aprobado para {language}",
"analysis_failed_for_language": "❌ El análisis falló para {language} ({missingKeys} desaparecido, {unusedKeys} no usado)",
"starting": "🔍 Iniciando análisis de traducción...",
"foundLanguages": "📋 Encontrado {count} Idiomas a analizar: {languages}",
"analyzing": "🔄 Analizando {language}...",
"reportTitle": "📊 INFORME DE ANÁLISIS DE TRADUCCIÓN",
"generated": "Generado: {timestamp}",
"status": "Estado: {translated}/{total} llaves ({percentage}% traducido)",
"filesAnalyzed": "Archivos analizados: {analyzed}/{total}",
"keysNeedingTranslation": "Claves que necesitan traducción: {count}",
"fileBreakdown": "📋 DESGLOSE DE ARCHIVOS",
"error": "Error",
"completed": "✅ Análisis completado para {language}",
"progress": "📊 Progreso general: {translated}/{total} idiomas procesados",
"reportSaved": "Informe guardado: {reportPath}",
"summary": "📊 RESUMEN DEL ANÁLISIS",
"finished": "✅ ¡Análisis completado con éxito!",
"statusFileMissing": "❌ Falta el archivo de traducción",
"sourceKeys": "📊 Claves de origen: {count}",
"translation": "📊 Traducción: {translated}/{total} ({percentage}%)",
"structure": "🗂️ Estructura: {status}",
"consistent": "Coherente",
"inconsistent": "Inconsistente",
"missingKeys": "Teclas faltantes: {count}",
"extraKeys": "Claves adicionales: {count}",
"issues": "⚠️ Problemas encontrados: {count}",
"issueType": {
"not_translated": "No traducido: {count}",
"empty_value": "Valores vacíos: {count}",
"partial_translation": "Traducciones parciales: {count}",
"format_mismatch": "El formato no coincide: {count}",
"type_mismatch": "Los tipos no coinciden: {count}",
"structure_mismatch": "Desajustes estructurales: {count}",
"same_as_source": "Igual que la fuente: {count}"
},
"keysToTranslate": "📋 CLAVES PARA TRADUCIR",
"key": "Llave",
"english": "Inglés",
"needsTranslation": "NECESITA TRADUCCIÓN",
"andMoreKeys": "...y {count} más llaves.",
"noLanguages": "⚠️ No se encontraron idiomas de destino.",
"languageStats": "{language}: {percentage}% completo ({translated}/{total} llaves)",
"invalidReportFilePath": "Ruta de archivo de informe no válida",
"failedToWriteReportFile": "No se pudo escribir el archivo del informe de forma segura"
},
"complete": {
"configLoadedSuccessfully": "Configuración cargada exitosamente",
"configLoadingFailed": "Error al cargar la configuración",
"sourceLanguageNotFound": "Directorio del idioma de origen no encontrado: {sourceLanguage}",
"couldNotParseTarget": "No se pudo analizar el archivo de destino: {file}",
"couldNotParseSource": "No se pudo analizar el archivo fuente: {file}",
"reportGenerated": "Informe generado: {path}",
"generateReportPrompt": "¿Le gustaría generar un informe?",
"title": "🌍 TERMINACIÓN DE LA TRADUCCIÓN I18NTK",
"separator": "===============================================================",
"sourceDir": "📁 Directorio de fuentes: {sourceDir}",
"sourceLanguage": "🌐 Idioma de origen: {sourceLanguage}",
"dryRunMode": "🧪 Modo de ejecución en seco: no se realizarán cambios",
"languages": "🌍 Idiomas disponibles: {languages}",
"addingMissingKeys": "➕ Agregar claves faltantes a los archivos de traducción...",
"processing": "🔄 Procesamiento {language}...",
"addedKeys": "✅ Agregado {count} llaves faltantes",
"noChangesNeeded": "✅ No se necesitan cambios para {language}",
"summaryTitle": "📊 RESUMEN DE FINALIZACIÓN",
"totalChanges": "📝 Cambios totales: {totalChanges}",
"languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
"missingKeysAdded": "➕ Se agregaron claves faltantes: {missingKeysAdded}",
"nextStepsTitle": "📋 PRÓXIMOS PASOS",
"nextStep1": "1. Ejecute el análisis de uso:",
"nextStep2": "nodo i18ntk-usage.js --informe de salida",
"nextStep3": "2. Validar traducciones:",
"nextStep4": "nodo i18ntk-validate.js",
"nextStep5": "3. Analizar patrones:",
"nextStep6": "nodo i18ntk-analyze.js",
"allKeysAvailable": "🎉 ¡Todas las claves de traducción ya están disponibles!",
"runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
"deletingOldReport": "🗑️ Eliminando informe antiguo...",
"generatingFreshAnalysis": "📊 Generando nuevos análisis de uso...",
"couldNotGenerate": "❌ No se pudo generar el análisis de uso",
"reportNotFound": "📋 Informe de uso no encontrado. Usando claves comunes...",
"foundMissingKeys": "📋 Encontrado {count} claves faltantes en el análisis de uso",
"couldNotParse": "❌ No se pudo analizar el informe de uso. Usando claves comunes...",
"errorDuringCompletion": "❌ Error durante la finalización: {error}",
"fatalError": "❌ Error fatal: {error}",
"configurationValidationFailed": "Falló la validación de la configuración: faltan campos obligatorios"
},
"sizing": {
"separator": "====================================================================================",
"lineSeparator": "--------------------------------------------------------------------------------",
"analysisStats": "{stats}",
"sourceDirectoryLabel": "📁 Directorio de fuentes: {sourceDir}",
"sourceLanguageLabel": "🌍 Idioma de origen: {sourceLanguage}",
"strictModeLabel": "⚙️ Modo estricto: {mode}",
"invalidSourceDirectoryError": "Ruta del directorio de origen no válida: {sourceDir}",
"sourceDirectoryNotFoundError": "Directorio fuente no encontrado: {sourceDir}",
"invalidOutputDirectoryError": "Ruta del directorio de salida no válida: {outputDir}",
"invalidReportFileError": "Ruta de archivo de informe no válida",
"problematic_keys": "Claves problemáticas: {problematicKeys}",
"problematicKeysLabel": "Claves problemáticas: {problematicKeys}",
"long_translations": "Traducciones largas: {longTranslations}",
"failedToSaveReportError": "No se pudo guardar el informe de forma segura",
"invalidCsvFileError": "Ruta del archivo CSV no válida",
"failedToSaveCsvError": "No se pudo guardar el informe CSV de forma segura",
"fatalError": "❌ Error en el análisis de tallas: {error}",
"starting_i18n_sizing_analysis": "Iniciando análisis de tamaño de i18n...",
"source_directory": "Directorio de origen: {sourceDir}",
"found_languages": "Idiomas encontrados: {languages}",
"analyzing_file_sizes": "Analizando tamaños de archivos...",
"analyzing_translation_content": "Analizando el contenido de la traducción...",
"generating_size_comparisons": "Generando comparaciones de tamaño...",
"no_languages_found_for_comparison": "No se encontraron idiomas para comparar",
"sizing_analysis_results": "Resultados del análisis de tamaño del I18n",
"file_sizes_title": "Tamaños de archivo",
"file_sizes_header": "Idioma Tamaño (KB) Líneas Caracteres",
"file_size_row": "{lang} {sizeKB} {lines} {characters}",
"language_statistics_title": "Estadísticas de idiomas",
"language_stats_header": "Idioma Teclas Caracteres Longitud promedio Longitud máxima Vacío Largo",
"language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
"size_variations_title": "Variaciones de tamaño",
"size_variations_header": "Idioma Char Diff % Diff Problema",
"size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
"problematic_yes": "Sí",
"problematic_no": "No",
"recommendations_title": "Recomendaciones",
"recommendation_item": "{index}. {recommendation}",
"problematic_key_detail": "{index}. Llave: '{key}' - Variaciones: {variations}",
"generating_detailed_report": "Generando informe detallado...",
"keysHaveSignificantSizeVariations": "Las claves tienen variaciones significativas de tamaño.",
"longTranslationsDetected": "${lang} tiene traducciones ${data.longKeys} de más de 100 caracteres; considere dividirlas",
"longer": "más extenso",
"shorter": "más corto",
"review_translations": "Considere revisar {lang} traducciones - son {percentageDifference}% {comparison} que la línea de base",
"report_saved_to": "Informe guardado en: {reportPath}",
"considerReviewingTranslations": "Considere revisar ${lang} traducciones: son ${data.percentageDifference}% más largas que el valor inicial",
"csv_report_saved_to": "Informe CSV guardado en: {csvPath}",
"human_report_saved": "Informe legible guardado: {reportPath}",
"folder_summary_title": "Resumen de carpeta",
"folder_summary_table_header": "Idioma Tamaño (KB) Claves Longitud promedio Caracteres totales",
"folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
"language_comparison_title": "Comparación de idiomas",
"language_comparison_row": "{lang}: {diff} caracteres ({percent}%) {status}",
"summary_stats": "📊 Resumen: {totalLanguages} idiomas, {totalKeys} claves - Informes guardados en {reportPath}",
"detailedKeysDescription": "Mostrar análisis detallado a nivel de clave en la consola",
"too_many_keys_warning": "⚠️ Demasiadas claves para mostrar en la consola: consulte el archivo del informe detallado para obtener un análisis completo",
"no_translation_files_found": "No se encontraron archivos de traducción",
"analysis_completed": "Análisis completado en {duration}EM",
"analysis_failed": "El análisis falló: {errorMessage}",
"starting_analysis": "Iniciando análisis...",
"found_files": "Encontró {count} archivos",
"failed_to_parse_language_error": "No se pudo analizar {language} traducciones: {errorMessage}",
"recommendations": {
"keys_have_significant_size_variations": "Las claves tienen variaciones significativas de tamaño.",
"consider_reviewing_translations": "Considere revisar {lang} traducciones - son {percentageDifference}% {comparison} que la línea de base",
"long_translations_detected": "{lang} tiene {longKeys} traducciones más largo que {threshold} personajes: considere dividirlos"
},
"detailed_key_analysis_title": "Análisis clave detallado",
"key_analysis_detail": "{lang}: {length} caracteres ({status}) - {translation}",
"key_analysis_header": "Llave: {key}",
"status_empty": "vacío",
"status_long": "largo",
"status_ok": "OK"
},
"usage": {
"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",
"source_directory_thissourcedir": "📁 Directorio de fuentes: {sourceDir}",
"translationCompletenessTitle": "🌍 Integridad de la traducción:",
"i18n_directory_thisi18ndir": "🌐 Directorio I18n: {i18nDir}",
"failed_to_parse_filename_error": "⚠️ No se pudo analizar {fileName}: {errorMessage}",
"analyzing_source_files": "🔍 Analizando archivos fuente...",
"found_files_in_source": "📂 Encontrado {numFiles} archivos en el directorio fuente",
"found_thisusedkeyssize_unique_": "🎯 Encontrado {usedKeysSize} llaves usadas únicas",
"total_key_usages_totalkeysfoun": "📊 Usos totales de claves: {totalKeysFound}",
"loading_available_translation_": "📋 Cargando claves de traducción disponibles...",
"found_thisavailablekeyssize_av": "✅ Encontrado {availableKeysSize} llaves disponibles",
"foundTranslationFiles": "✅ Encontrado {count} archivos de traducción",
"errorReadingI18nDirectory": "⚠️ Error al leer el directorio i18n: {error}",
"pressEnterToReturnToMenu": "📝 Pulsa Enter para volver al menú principal...",
"notTranslatedKeysTotal": "⚠️ Claves no traducidas: {total}",
"noSourceFilesFound": "⚠️ No se encontraron archivos fuente en el directorio fuente.",
"reviewNotTranslatedKeys": "💡 Reseña de claves no traducidas",
"analysisCompletedSuccessfully": "🎉 ¡Análisis completado con éxito!",
"detectedSourceDirectory": "Directorio de origen detectado: {sourceDir}",
"detectedI18nDirectory": "Directorio i18n detectado: {i18nDir}",
"fileInfo": "📄 {namespace}: {keys} llaves",
"failedToAnalyzeUsage": "❌ No se pudo analizar el uso: {error}",
"failedToAnalyzeFile": "❌ No se pudo analizar el archivo: {error}",
"failedToExtractKeys": "❌ No se pudieron extraer las claves de {filePath}: {error}",
"analysisFailedError": "❌ El análisis falló: {error}",
"analyzerInitialized": "Analizador inicializado",
"analyzerInitFailed": "La inicialización del analizador falló: {error}",
"argsParsed": "Argumentos analizados",
"processedFiles": "Procesado {processedFiles} de {totalFiles} archivos.",
"argsParseFailed": "Error al analizar el argumento: {error}",
"translationDiscoveryError": "Error de descubrimiento de traducción: {error}",
"fileTraversalError": "Error de recorrido de archivo: {error}",
"sourceEqualsI18nWarn": "{reason}. El an?lisis de uso no escanear? archivos de idioma como c?digo fuente.",
"i18nEqualsSourceWarn": "⚠️ El directorio I18n y el directorio fuente son los mismos. Esto puede causar problemas con el análisis.",
"usageAnalysisFailed": "⚠️ Error en el análisis de uso: {error}",
"translationFileParseError": "⚠️ Error de análisis del archivo de traducción: {error}",
"translationKeysLoadError": "⚠️ Error al cargar las claves de traducción: {error}",
"languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% traducido)",
"missingKeysCount": "⚠️ Teclas faltantes: {count}",
"analyzingTranslationCompleteness": "Analizando la integridad de la traducción...",
"unusedKeysCount": "Claves no utilizadas: {count}",
"usedKeysCount": "Llaves usadas: {count}",
"availableKeysCount": "Claves disponibles: {count}",
"analysisResults": "Resultados del análisis:",
"i18nDirectoryNotFound": "⚠️ No se encontró el directorio I18n. Por favor revisa la ruta.",
"sourceDirectoryNotFound": "⚠️ Directorio fuente no encontrado: {dir}",
"checkUsage": {
"title": "🔍 ANÁLISIS DE USO DE I18NTK",
"analyzing_source_files": "🔍 Analizando archivos fuente...",
"source_directory_thissourcedir": "📁 Directorio de fuentes: {sourceDir}",
"i18n_directory_thisi18ndir": "📁 directorio i18n: {i18nDir}",
"found_files_in_source": "✅ Encontrado {numFiles} archivos en el directorio fuente",
"no_source_files_found": "⚠️ No se encontraron archivos fuente en el directorio especificado",
"processedFiles": "📊 Procesado {processedFiles} de {totalFiles} archivos",
"failedToProcessFile": "❌ No se pudo procesar",
"found_thisusedkeyssize_unique_": "🔍 Encontrado {usedKeysSize} llaves usadas únicas",
"total_key_usages_totalkeysfoun": "📊 Usos totales de claves: {totalKeysFound}",
"loading_available_translation_": "📂 Cargando claves de traducción disponibles...",
"found_thisavailablekeyssize_av": "✅ Encontrado {availableKeysSize} llaves disponibles",
"message": "Analizando el uso de claves de traducción en todo su proyecto...",
"usage_analysis_results": "📊 RESULTADOS DEL ANÁLISIS DE USO",
"source_files_scanned_thisfileu": "📁 Archivos fuente escaneados: {fileUsageSize}",
"available_translation_keys_thi": "✅ Claves de traducción disponibles: {availableKeysSize}",
"used_translation_keys_thisused": "🔍 Claves de traducción utilizadas: {usedKeysSize}",
"dynamic_keys_detected_dynamick": "⚡ Teclas dinámicas detectadas: {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "🗑️ Claves no utilizadas: {unusedKeysLength}",
"missing_keys_missingkeyslength": "❌ Teclas faltantes: {missingKeysLength}",
"translation_completeness_title": "📈 INTEGRIDAD DE LA TRADUCCIÓN",
"language_completeness_stats": "{language}: {translated}/{total} llaves ({percentage}%)",
"n_sample_unused_keys": "🗑️ MUESTRAS DE LLAVES NO UTILIZADAS (primeras 5):",
"key": "🔑 {key}",
"and_unusedkeyslength_5_more": "... y {count} más llaves sin usar",
"n_sample_missing_keys": "❌ MUESTRA DE TECLAS FALTANTES (primeras 5):",
"and_missingkeyslength_5_more": "... y {count} más llaves faltantes",
"n_generating_detailed_report": "📊 Generando informe detallado...",
"report_saved_reportpath": "📄 Informe guardado: {reportPath}",
"n_recommendations": "💡 RECOMENDACIONES:",
"consider_removing_unused_trans": "🗑️ Considere eliminar las traducciones no utilizadas para reducir el tamaño del paquete",
"add_missing_translation_keys_t": "➕ Agregue las claves de traducción que faltan para mantener la coherencia",
"review_dynamic_keys_manually_t": "🔍 Revisar las claves dinámicas manualmente (pueden ser válidas)",
"all_translation_keys_are_prope": "✅ ¡Todas las claves de traducción se utilizan correctamente!",
"n_next_steps": "🎯 PRÓXIMOS PASOS:",
"2_check_the_detailed_report_fo": "2. Consulte el informe detallado para conocer problemas específicos.",
"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",
"1_review_the_analysis_results": "1. Revise los resultados del análisis en la consola o en el informe generado.",
"2_run_with_outputreport_for_de": "2. Ejecute con --output-report para obtener un informe detallado.",
"3_remove_unused_keys_or_add_mi": "3. Elimine las claves no utilizadas o agregue las claves que faltan a su código fuente.",
"4_rerun_analysis_to_verify_imp": "4. Vuelva a ejecutar el análisis para verificar las mejoras.",
"noSourceFilesFound": "No se encontraron archivos fuente para analizar.",
"i18nDirectoryNotFound": "Directorio I18n no encontrado: {i18nDir}",
"noTranslationLanguagesFound": "No se encontraron idiomas de traducción.",
"failedToAnalyzeFile": "No se pudo analizar el archivo {filePath}: {error}",
"failedToAnalyzeLanguage": "No se pudo analizar el idioma {language}: {error}",
"translationCompletenessAnalysisFailed": "El análisis de integridad de la traducción falló: {error}",
"n": "\\norte"
},
"complete": {
"configLoadedSuccessfully": "Configuración cargada exitosamente",
"configLoadingFailed": "Error al cargar la configuración",
"title": "🌍 TERMINACIÓN DE LA TRADUCCIÓN I18NTK",
"separator": "===============================================================",
"sourceDir": "📁 Directorio de fuentes: {sourceDir}",
"sourceLanguage": "🌐 Idioma de origen: {sourceLanguage}",
"dryRunMode": "🧪 Modo de ejecución en seco: no se realizarán cambios",
"languages": "🌍 Idiomas disponibles: {languages}",
"addingMissingKeys": "➕ Agregar claves faltantes a los archivos de traducción...",
"processing": "🔄 Procesamiento {language}...",
"addedKeys": "✅ Agregado {count} llaves faltantes",
"changeDetails": "📝 {file}: {key}",
"andMore": "...y {count} más",
"noChangesNeeded": "✅ No se necesitan cambios para {language}",
"summaryTitle": "📊 RESUMEN DE FINALIZACIÓN",
"totalChanges": "📝 Cambios totales: {totalChanges}",
"languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
"missingKeysAdded": "➕ Se agregaron claves faltantes: {missingKeysAdded}",
"nextStepsTitle": "📋 PRÓXIMOS PASOS",
"nextStep1": "1. Ejecute el análisis de uso:",
"nextStep2": "nodo i18ntk-usage.js --informe de salida",
"nextStep3": "2. Validar traducciones:",
"nextStep4": "nodo i18ntk-validate.js",
"nextStep5": "3. Analizar patrones:",
"nextStep6": "nodo i18ntk-analyze.js",
"allKeysAvailable": "🎉 ¡Todas las claves de traducción ya están disponibles!",
"runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
"deletingOldReport": "🗑️ Eliminando informe antiguo...",
"generatingFreshAnalysis": "📊 Generando nuevos análisis de uso...",
"couldNotGenerate": "❌ No se pudo generar el análisis de uso",
"reportNotFound": "📋 Informe de uso no encontrado. Usando claves comunes...",
"foundMissingKeys": "📋 Encontrado {count} claves faltantes en el análisis de uso",
"couldNotParse": "❌ No se pudo analizar el informe de uso. Usando claves comunes..."
},
"noTranslationLanguagesFound": "No se encontraron idiomas de traducción",
"failedToAnalyzeLanguage": "No se pudo analizar el idioma",
"translationCompletenessAnalysisFailed": "Error en el análisis de integridad de la traducción",
"failedToProcessFile": "No se pudo procesar el archivo:",
"failedToSaveReport": "No se pudo guardar el informe de uso: {error}",
"i18nDirectoryDoesNotExist": "El directorio I18n no existe: {dir}",
"reportSavedTo": "Informe de uso guardado en: {reportPath}",
"sourceDirectoryDoesNotExist": "El directorio de origen no existe: {dir}",
"noSourceDirectoryConfigured": "(sin configurar)"
},
"validate": {
"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",
"title": "🔍 Validador de traducción I18n",
"message": "Iniciando proceso de validación...",
"sourceDirectory": "📁 Directorio de fuentes: {dir}",
"sourceLanguage": "🌍 Idioma de origen: {sourceLanguage}",
"strictMode": "⚙️ Modo estricto: {mode}",
"noTargetLanguages": "No hay idiomas de destino configurados; omitiendo la validación del objetivo. Agregue idiomas a través de \"i18ntk init --languages=de,fr\".",
"validatingLanguages": "🌍 Idiomas de validación: {langs}",
"validatingLanguage": "🔍 Idioma de validación: {lang}",
"filesCount": "📄 Archivos: {count}",
"keysCount": "🔑 Claves: {count}",
"missingFilesCount": "📁 Archivos faltantes: {count}",
"syntaxErrorsCount": "❌ Errores de sintaxis: {count}",
"translationPercentage": "🎯 Traducción: {percentage}% ({translated}/{total} llaves)",
"validationSummary": "📊 RESUMEN DE VALIDACIÓN",
"validation_failed": "❌ La validación falló: {error}",
"totalErrors": "❌ Errores totales: {count}",
"totalWarnings": "⚠️ Advertencias totales: {count}",
"errorsSection": "❌ ERRORES",
"warningsSection": "⚠️ ADVERTENCIAS",
"recommendationsSection": "💡 RECOMENDACIONES",
"fixErrorsFirst": "1. Primero solucione todos los errores",
"resolveMissingFilesAndSyntaxErrors": "1. Resolver archivos faltantes y errores de sintaxis",
"fixStructuralInconsistencies": "2. Solucionar inconsistencias estructurales",
"completeMissingTranslations": "3. Completa las traducciones que faltan",
"rerunValidation": "4. Vuelva a ejecutar la validación para verificar las correcciones.",
"addressWarnings": "Abordar las advertencias para mejorar la calidad.",
"reviewWarnings": "Revisar las advertencias y corregirlas cuando corresponda",
"considerRunningWithStrict": "2. Considere ejecutar con el indicador --strict para una validación más estricta",
"allValidationsPassed": "🎉 ¡Todas las validaciones pasaron!",
"considerRunningUsageAnalysis": "Considere ejecutar un análisis de uso: nodo i18ntk-usage.js",
"deletedOldReport": "🗑️ Informe de validación antiguo eliminado",
"sourceDir": "📁 Directorio de fuentes: {sourceDir}",
"i18nDir": "🌐 Directorio I18n: {i18nDir}",
"loadingTranslationFiles": "📋 Cargando archivos de traducción...",
"foundTranslationFilesCount": "✅ Encontrado {count} archivos de traducción",
"analyzingTranslations": "🔍Analizando traducciones...",
"validationCompletedSuccessfully": "🎉 ¡La validación se completó con éxito!",
"validationErrorsFound": "⚠️ Errores de validación encontrados: {count}",
"validationWarningsFound": "⚠️ Advertencias de validación encontradas: {count}",
"validationPassed": "✅ Validación aprobada sin errores",
"validationFailed": "La validación falló: {error}",
"startingValidationProcess": "🔍Iniciando proceso de validación...",
"validationProcessCompletedSuccessfully": "✅ Proceso de validación completado con éxito",
"stackTrace": "Seguimiento de pila: {stack}",
"authenticationFailed": "❌ Error de autenticación. Acceso denegado.",
"fatalValidationError": "❌ Error fatal de validación: {error}",
"configAccess": "Accediendo a la configuración para su validación",
"configValidated": "Configuración validada exitosamente",
"configError": "Error de configuración: {error}",
"validatorInit": "Inicializando el validador I18n",
"validatorInitialized": "Validador I18n inicializado exitosamente",
"validatorInitError": "Error de inicialización del validador: {error}",
"argsParsing": "Analizando argumentos de línea de comando",
"argsParsed": "Argumentos de la línea de comando analizados correctamente",
"argsParseError": "Error de análisis de argumentos: {error}",
"languagesScan": "Escaneando idiomas disponibles",
"languagesFound": "Encontró {count} idiomas",
"languagesScanError": "Error de escaneo de idioma: {error}",
"filesScan": "Encontró {count} archivos en {language}",
"filesScanError": "Error de escaneo de archivos: {error}",
"jsonValidated": "Sintaxis JSON validada: {filePath}",
"jsonValidationError": "Error de validación JSON: {error}",
"languageValidation": "Idioma de validación: {language}",
"languageValidationError": "Error de validación de idioma: {error}",
"fileDeleted": "Archivo eliminado",
"runStarted": "Iniciando ejecución de validación",
"runCompleted": "La ejecución de validación se completó con éxito",
"runError": "La ejecución de validación falló: {error}",
"scriptExecution": "Ejecución de script",
"validationCompleted": "Validación completada",
"validationError": "Error de validación: {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 Idioma: {language}",
"validationResults": "📊 Resultados de la validación",
"noErrors": "✅ No se encontraron errores",
"noWarnings": "✅ No se encontraron advertencias",
"summaryHeader": "📋 RESUMEN GENERAL",
"progressIndicator": "⏳ Procesamiento...",
"completedIndicator": "✅ Completado",
"errorIndicator": "❌Error",
"warningIndicator": "⚠️ Advertencia",
"infoIndicator": "ℹ️ Información",
"sourceDirNotConfigured": "Directorio de origen no configurado",
"sourceLanguageNotConfigured": "Idioma de origen no configurado",
"translationFunctionNotInitialized": "La función de traducción no se inicializó correctamente",
"sourceLanguageDirectoryNotFound": "Directorio del idioma de origen no encontrado",
"specifiedLanguageNotFound": "Idioma especificado no encontrado",
"noJsonFilesFound": "No se encontraron archivos JSON en el directorio fuente: {sourceDir}",
"i18nDirectoryNotFound": "Directorio I18n no encontrado: {i18nDir}",
"invalidDirectoryPaths": "Se detectaron rutas de directorio no válidas",
"invalidSampleFilePath": "Ruta de archivo de muestra no válida",
"failedToCreat