i18ntk
Version:
🚀 The fastest i18n toolkit with 97% performance boost! Zero-dependency, enterprise-grade internationalization for React, Vue, Angular, Python, Java, PHP & more. Features PIN protection, auto framework detection, 7+ UI languages, and comprehensive transla
729 lines • 151 kB
JSON
{
"meta": {
"version": "1.10.0",
"updated": "2025-08-16"
},
"common": {
"welcome": "Bienvenido",
"hello": "Hola",
"goodbye": "Adiós",
"yes": "Sí",
"no": "No",
"save": "Guardar",
"cancel": "Cancelar",
"delete": "Eliminar",
"edit": "Editar",
"loading": "Cargando...",
"offlineTitle": "Estás fuera de línea",
"offlineMessage": "Por favor, verifica tu conexión a internet",
"tryReconnect": "Intentar reconectar",
"logout": "Cerrar sesión",
"login": "Iniciar sesión",
"amount": "Cantidad",
"success": "Éxito",
"error": "Error",
"warning": "Advertencia",
"info": "Información:",
"debug": "Depuración",
"progress": "Progreso:",
"remaining": "Restante:",
"total": "Total:",
"completed": "7. Completado con éxito!",
"missing": "Faltante",
"partial": "Parcial",
"sameAsSource": "Mismo que fuente:",
"formatMismatch": "Desformateado:",
"typeMismatch": "Tipo no coincidente:",
"structureMismatch": "Estructura no coincidente:",
"invalidOption": "Opción inválida",
"separator": "==================================================",
"initializationFailed": "❌ Inicialización fallida: {error}",
"stackTrace": "Pila de llamadas: {stack}",
"pressEnterToContinue": "Presiona Enter para continuar...",
"pressEnterToReturn": "Presiona Enter para regresar al menú principal...",
"stepCompleted": "Paso '{stepName}' completado.",
"stepFailed": "Paso '{stepName}' fallido.",
"runningStep": "Ejecutando paso: {stepName}",
"command": "Comando: {command}",
"startingWorkflow": "Iniciando flujo de trabajo...",
"workflowCompleted": "Flujo de trabajo completado.",
"checkReports": "Revisa los informes para más detalles.",
"errorExecutingCommand": "Error al ejecutar el comando: {error}",
"genericError": "❌ Error: {error}",
"errors": {
"errors": "Errores:",
"genericError": "❌ Error: {error}",
"initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
"initializationFailed": "❌ Inicialización fallida: {error}",
"translationKeyNotFound": "Traducción no encontrada: {key}",
"sourceDirectoryNotFound": "Directorio fuente no encontrado: {directory}",
"configLoadingFailed": "Carga de configuración fallida",
"invalidSourceDirectory": "Directorio fuente inválido: {directory}",
"securityViolation": "Violación de seguridad detectada",
"authenticationFailed": "Autenticación fallida",
"sourceEqualsI18nWarn": "⚠️ El directorio fuente es igual al directorio i18n ({sourceDir}). Usando {fallback} para escaneo de fuentes."
},
"errorGeneratingStatusSummary": "Error al generar resumen de estado: {error}",
"errorRunningDebugTool": "Error al ejecutar herramienta de depuración '{displayName}': {error}",
"errorReadingDebugLogs": "Error al leer registros de depuración: {error}",
"errorAnalyzingLogFile": "Error al analizar archivo de registro: {error}",
"errorAnalyzingTranslationKeys": "Error al analizar claves de traducción: {error}",
"errorAnalyzingTranslationCompleteness": "Error al analizar completitud de traducciones: {error}",
"analyzingTranslationCompleteness": "Analizando completitud de traducciones en todos los idiomas...",
"i18nDirectoryNotFound": "⚠️ Directorio i18n no encontrado: {i18nDir}",
"translationCompletenessAnalysisFailed": "⚠️ Análisis de completitud de traducciones fallido: {error}",
"failedToAnalyzeLanguage": "❌ Error al analizar idioma {language}: {error}",
"errorReadingI18nDirectory": "❌ Error al leer directorio i18n: ",
"languageCompletenessTitle": "📈 COMPLETITUD DE TRADUCCIONES POR IDIOMA",
"errorAnalyzingTranslationFormat": "Error al analizar formato de traducción: {error}",
"errorAnalyzingTranslationType": "Error al analizar tipo de traducción: {error}",
"errorAnalyzingTranslationStructure": "Error al analizar estructura de traducción: {error}",
"errorAnalyzingTranslationFormatMismatch": "Error al analizar desajuste de formato de traducción: {error}",
"errorAnalyzingTranslationTypeMismatch": "Error al analizar desajuste de tipo de traducción: {error}",
"errorAnalyzingTranslationStructureMismatch": "Error al analizar desajuste de estructura de traducción: {error}",
"errorAnalyzingTranslationSameAsSource": "Error al analizar traducción igual a la fuente: {error}",
"title": "Estado",
"nextStep1": "1. Verificar análisis de uso:",
"nextStep2": "2. Validar traducciones:",
"nextStep3": "3. Analizar completitud:",
"nextStep4": "4. Completar traducciones faltantes:",
"nextStep5": "5. Generar informe resumen:",
"nextStep6": "6. Revisar y finalizar traducciones:",
"generating": "Generando informe resumen...",
"review": "Revisando traducciones...",
"finalizing": "Finalizando traducciones...",
"finalized": "¡Finalizado exitosamente!",
"warnings": "Advertencias:",
"completedKeys": "Claves completadas:",
"missingKeys": "Claves faltantes:",
"partialKeys": "Claves parciales:",
"home": "Inicio",
"settings": "Configuración",
"startingSettings": "🎛️ Iniciando CLI de Configuración...",
"confirm": "Confirmar"
},
"errors": {
"readlineClosed": "Flujo de entrada cerrado; ejecutando en modo no interactivo.",
"initializationCancelled": "🚫 Inicialización cancelada por el usuario.",
"invalidOption": "❌ Opción inválida: {option}. Por favor, inténtelo de nuevo.",
"noPackageJson": "No se encontró package.json. No se puede autodetectar el framework i18n.",
"noI18nDir": "No se encontró directorio i18n en la raíz del proyecto.",
"noI18nConfig": "No se encontró archivo de configuración i18n en la raíz del proyecto."
},
"fixer": {
"help_message": "\nCorrector de Traducciones I18n\n\nUso: node i18ntk-fixer.js [opciones]\n\nOpciones:\n --source-dir <dir> Directorio fuente a escanear (predeterminado: ./locales)\n --languages <langs> Lista de idiomas a corregir separados por comas\n --markers <markers> Marcadores separados por comas para tratar como no traducido\n --no-backup Omitir creación automática de respaldo\n --help Mostrar esta ayuda\n\nEjemplos:\n node i18ntk-fixer.js --languages de,fr\n node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED\n node i18ntk-fixer.js --no-backup\n",
"starting": "🚀 Iniciando corrección de traducciones para idiomas: {languages}",
"sourceDirectory": "📁 Directorio fuente: {sourceDir}",
"sourceLanguage": "🔤 Idioma fuente: {sourceLanguage}",
"markers": "🏷️ Marcadores a corregir: {markers}",
"scanningLanguage": "📊 Escaneando {language}...",
"noLanguages": "❌ No se especificaron idiomas para corregir.",
"allComplete": "🎉 ¡Todas las traducciones ya están completas!",
"fullReportSaved": "📊 Informe completo guardado en: {reportPath}",
"reviewReport": "Por favor revisa el informe antes de continuar.",
"backupCreated": "💾 Respaldo creado exitosamente.",
"applyingFixes": "🔄 Aplicando correcciones...",
"fixingComplete": "✅ ¡Corrección de traducciones completa!",
"operationCancelled": "❌ Operación cancelada por el usuario.",
"analysisTitle": "🔍 ANÁLISIS DE CORRECCIÓN DE TRADUCCIONES",
"analysisSeparator": "==================================================",
"totalIssues": "Total de problemas encontrados: {totalIssues}",
"missingTranslations": "Traducciones faltantes: {missing}",
"placeholderTranslations": "Traducciones provisionales: {placeholder}",
"noIssues": "✅ No se encontraron problemas. Todas las traducciones están completas.",
"detailedIssues": "📋 PROBLEMAS DETALLADOS:",
"detailedSeparator": "--------------------------------------------------",
"filePath": "📄 {file} → {path}",
"missingKey": "❌ FALTANTE: {source} → {new}",
"placeholderKey": "⚠️ PROVISIONAL: \"{target}\" → \"{new}\"",
"moreIssues": "... y {count} problemas más. Revisa el archivo de informe para detalles completos.",
"confirmationTitle": "🤔 ¿Deseas proceder 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 (y/n/s): ",
"nonInteractiveMode": "⚡ Modo no interactivo detectado - aplicando correcciones automáticamente...",
"reportGenerated": "📊 Informe del corrector generado: {path}",
"summary": {
"totalIssues": "Total de problemas: {total}",
"missingKeys": "Claves faltantes: {missing}",
"placeholderKeys": "Claves provisionales: {placeholder}",
"languages": "Idiomas: {languages}"
},
"welcome": {
"title": "🎯 ¡Bienvenido al Corrector de Traducciones!",
"description": "Esta herramienta te ayudará a corregir traducciones rotas y marcadores provisionales en tus archivos de localización."
},
"markerPrompt": {
"title": "🏷️ Configurar Marcadores Provisionales",
"description": "Ingresa los marcadores que indican texto no traducido (separados por comas):",
"currentDefaults": "Marcadores predeterminados: {markers}",
"input": "Marcadores (o presiona Enter para usar predeterminados): "
},
"languagePrompt": {
"title": "🌍 Seleccionar Idiomas a Corregir",
"available": "Idiomas disponibles: {languages}",
"description": "Ingresa los idiomas a corregir (separados por comas) o presiona Enter para todos:",
"input": "Idiomas: ",
"noLanguages": "No se encontraron idiomas para corregir."
},
"directoryPrompt": {
"title": "📁 Seleccionar Directorio",
"current": "Directorio actual: {dir}",
"description": "Ingresa el directorio que contiene tus archivos de localización (o presiona Enter para el actual):",
"input": "Directorio: "
}
},
"autorun": {
"stepAnalyzeTranslations": "Analizar traducciones",
"stepCompletedWithIcon": "✅ Completado: {stepName}",
"stepValidateTranslations": "Validar traducciones",
"stepRunning": "▶️ Paso {stepNumber}/{totalSteps}: {stepName}",
"separator": "==================================================",
"stepFailed": "❌ Fallido: {stepName}",
"errorLabel": "Error",
"autoRunScriptTitle": "🧪 Flujo de Ejecución Automática",
"usageTitle": "Uso",
"runAllSteps": "Ejecutar: node i18ntk-autorun.js",
"configureSettingsFirst": "Config: i18ntk-config.json or CLI flags",
"runSpecificSteps": "Use --steps=1,3 or --list to show steps",
"showHelp": "--help for more info",
"examplesTitle": "Ejemplos",
"configExample": "node i18ntk-autorun.js --ui-language=zh",
"stepsExample1": "node i18ntk-autorun.js --steps=analyze,validate",
"stepsExample2": "node i18ntk-autorun.js --list",
"customSettingsConfiguration": "Configuración de autorun personalizada",
"availableSteps": "Pasos disponibles",
"startingAutoRunWorkflow": "🚀 Iniciando Flujo de Ejecución Automática...",
"workflowIncludesSteps": "Flujo incluye {count} pasos:",
"missingRequiredFile": "Falta archivo requerido: {file}",
"workflowStopped": "Workflow detenido debido a un fallo.",
"workflowCompleted": "🎉 Workflow completado!",
"successfulSteps": "Pasos exitosos: {count}",
"failedSteps": "Pasos fallidos: {count}",
"stepInitializeProject": "Inicializar proyecto",
"stepCheckUsage": "Verificar uso de claves",
"stepGenerateSummary": "Generar informe de resumen",
"runInitializationFirst": "Por favor, ejecuta la inicialización primero.",
"initializationCheckPassed": "Comprobación de inicialización pasada.",
"runningStep": "Ejecutando paso: {stepName}",
"commandLabel": "Comando: {command}",
"stepCompletedWithTime": "Paso '{stepName}' completado en {duration}ms.",
"stepCompleted": "Paso '{stepName}' completado.",
"stepFailedWithError": "Paso '{stepName}' fallado con error: {error}",
"requiredStepFailed": "Paso requerido fallado. Deteniendo flujo.",
"optionalStepFailed": "Paso opcional fallado. Continuando flujo.",
"stepRequired": "(Requerido)",
"stepOptional": "(Opcional)",
"startingExecution": "Iniciando ejecución...",
"pressEnterToContinue": "Presiona Enter para continuar...",
"runningSelectedSteps": "Ejecutando pasos seleccionados...",
"invalidStepNumber": "Número de paso inválido: {stepNum}",
"executionReport": "Informe de ejecución:",
"requiredFailedSteps": "Pasos requeridos fallidos: {count}",
"stepDetails": "Detalles del paso:",
"reportSavedTo": "Informe guardado en: {path}",
"overallStatusSuccess": "SUCCESS",
"overallStatusFailed": "FAILED",
"overallStatus": "Estado general: {status}",
"pressEnterForDefaults": "Presiona Enter para usar configuraciones predeterminadas para cualquier prompt.",
"sourceDirPrompt": "Ingresa directorio fuente (predeterminado: {default}): ",
"sourceLangPrompt": "Ingresa idioma fuente (predeterminado: {default}): ",
"targetLangsPrompt": "Ingresa idiomas objetivo (separados por comas, predeterminado: {default}): ",
"translationMarkerPrompt": "Ingresa marcador de traducción (predeterminado: {default}): ",
"outputDirPrompt": "Ingresa directorio de salida para informes (predeterminado: {default}): ",
"settingsUpdatedSuccessfully": "Configuraciones actualizadas con éxito!",
"errorConfiguringSettings": "Error al configurar configuraciones: {error}",
"configurationComplete": "Configuración completada.",
"runAutoRunCommand": "Ahora puedes ejecutar el comando de auto-run.",
"configurationFailed": "Configuración fallida: {error}",
"noValidStepNumbers": "No se proporcionaron números de paso válidos.",
"autoRunFailed": "Auto-run fallido: {error}",
"stepCompleteTranslations": "Completar traducciones",
"stepAnalyzeSizing": "Analizar-sizing",
"stepCompletedIcon": "✅",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Paso '{stepName}' en ejecución...",
"stepFailedIcon": "❌",
"translationLoadWarning": "Advertencia: No se pudieron cargar traducciones {lang}",
"configReadError": "Error al leer {file}"
},
"analyze": {
"help_message": "\nAnalizador de Traducciones I18n\n\nUso: node i18ntk-analyze.js [opciones]\n\nOpciones:\n --source-dir <dir> Directorio fuente a escanear (predeterminado: ./src)\n --i18n-dir <dir> Directorio i18n (predeterminado: ./src/locales)\n --output-report Generar informe detallado\n --output-dir <dir> Directorio de salida para informes (predeterminado: ./reports)\n --help Mostrar esta ayuda\n\nEjemplos:\n node i18ntk-analyze.js --output-report\n node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-analyze.js --output-dir=./analysis --output-report\n",
"source_directory": "📁 Directorio fuente: {sourceDir}",
"i18n_directory": "🌐 Directorio i18n: {i18nDir}",
"loading_translation_files": "📋 Cargando archivos de traducción...",
"sourceDirectoryLabel": "📁 Directorio Fuente: {sourceDir}",
"sourceLanguageLabel": "🌍 Idioma Fuente: {sourceLanguage}",
"strictModeLabel": "⚙️ Modo Estricto: {mode}\n",
"found_translation_files_count": "✅ Encontrados {count} archivos de traducción",
"analyzing_translations": "🔍 Analizando traducciones...",
"analysis_completed_successfully": "🎉 ¡Análisis completado exitosamente!",
"analysis_results": "📊 RESULTADOS DEL ANÁLISIS",
"language_analysis_stats": " {language}: {translatedKeys}/{totalKeys} ({percentage}% traducido)",
"sample_missing_keys": "\nEjemplo de claves faltantes:",
"missing_key": "- {key}",
"and_more_missing": "...y {count} más.",
"sample_unused_keys": "\nEjemplo de claves no utilizadas:",
"unused_key": "- {key}",
"and_more_unused": "...y {count} más.",
"recommendations": "\n📋 RECOMENDACIONES",
"add_missing_translations": "💡 Agrega traducciones faltantes para mejorar la cobertura.",
"remove_unused_translations": "💡 Elimina traducciones no utilizadas para mantener tu proyecto limpio.",
"next_steps": "\n📋 SIGUIENTES PASOS",
"review_analysis_results": "1. Revisa los resultados del análisis en la consola o en el informe generado.",
"run_with_output_report": "2. Ejecuta con --output-report para un informe detallado.",
"add_or_remove_translations": "3. Agrega traducciones faltantes o elimina las no utilizadas.",
"rerun_analysis": "4. Vuelve 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 verificados: {translationFileCount}",
"total_keys": "Total de claves: {totalKeys}",
"translated_keys": "Claves traducidas: {translatedKeys}",
"missing_keys": "Claves 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": "❌ Análisis fallido para {language} ({missingKeys} faltantes, {unusedKeys} no utilizadas)",
"starting": "🔍 Iniciando análisis de traducción...",
"foundLanguages": "📋 Encontrados {count} idiomas para analizar: {languages}",
"analyzing": "🔄 Analizando {language}...",
"reportTitle": "📊 INFORME DE ANÁLISIS DE TRADUCCIÓN",
"generated": "Generado: {timestamp}",
"status": "Estado: {translated}/{total} claves ({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 exitosamente!",
"statusFileMissing": "❌ Archivo de traducción faltante",
"sourceKeys": "📊 Claves fuente: {count}",
"translation": "📊 Traducción: {translated}/{total} ({percentage}%)",
"structure": "🗂️ Estructura: {status}",
"consistent": "Consistente",
"inconsistent": "Inconsistente",
"missingKeys": "Claves faltantes: {count}",
"extraKeys": "Claves extra: {count}",
"issues": "⚠️ Problemas encontrados: {count}",
"issueType": {
"not_translated": "No traducido: {count}",
"empty_value": "Valores vacíos: {count}",
"partial_translation": "Traducciones parciales: {count}",
"format_mismatch": "Desajustes de formato: {count}",
"type_mismatch": "Desajustes de tipo: {count}",
"structure_mismatch": "Desajustes de estructura: {count}",
"same_as_source": "Igual que la fuente: {count}"
},
"keysToTranslate": "📋 CLAVES PARA TRADUCIR",
"key": "Clave",
"english": "Inglés",
"needsTranslation": "NECESITA TRADUCCIÓN",
"andMoreKeys": "...y {count} claves más.",
"noLanguages": "⚠️ No se encontraron idiomas objetivo.",
"languageStats": "{language}: {percentage}% completo ({translated}/{total} claves)",
"invalidReportFilePath": "Ruta de archivo de informe inválida",
"failedToWriteReportFile": "Error al escribir el archivo de informe de forma segura"
},
"complete": {
"configLoadedSuccessfully": "Configuración cargada exitosamente",
"configLoadingFailed": "Falló la carga de la configuración",
"sourceLanguageNotFound": "No se encontró el directorio del idioma fuente: {sourceLanguage}",
"couldNotParseTarget": "No se pudo analizar el archivo objetivo: {file}",
"couldNotParseSource": "No se pudo analizar el archivo fuente: {file}",
"reportGenerated": "Informe generado: {path}",
"generateReportPrompt": "¿Deseas generar un informe?",
"title": "🌍 COMPLETADO DE TRADUCCIÓN I18NTK",
"separator": "============================================================",
"sourceDir": "📁 Directorio fuente: {sourceDir}",
"sourceLanguage": "🌐 Idioma fuente: {sourceLanguage}",
"dryRunMode": "🧪 Modo de prueba - no se realizarán cambios",
"languages": "🌍 Idiomas disponibles: {languages}",
"addingMissingKeys": "➕ Agregando claves faltantes a los archivos de traducción...",
"processing": "🔄 Procesando {language}...",
"addedKeys": "✅ Se agregaron {count} claves faltantes",
"noChangesNeeded": "✅ No se necesitan cambios para {language}",
"summaryTitle": "📊 RESUMEN DE COMPLETADO",
"totalChanges": "📝 Cambios totales: {totalChanges}",
"languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
"missingKeysAdded": "➕ Claves faltantes agregadas: {missingKeysAdded}",
"nextStepsTitle": "📋 SIGUIENTES PASOS",
"nextStep1": "1. Ejecutar análisis de uso:",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. Validar traducciones:",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. Analizar patrones:",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 ¡Todas las claves de traducción están ahora disponibles!",
"runWithoutDryRun": "💡 Ejecutar sin --dry-run para aplicar cambios",
"deletingOldReport": "🗑️ Eliminando informe antiguo...",
"generatingFreshAnalysis": "📊 Generando nuevo análisis de uso...",
"couldNotGenerate": "❌ No se pudo generar el análisis de uso",
"reportNotFound": "📋 Informe de uso no encontrado. Usando claves comunes...",
"foundMissingKeys": "📋 Se encontraron {count} claves faltantes del análisis de uso",
"couldNotParse": "❌ No se pudo analizar el informe de uso. Usando claves comunes...",
"errorDuringCompletion": "❌ Error durante la completación: {error}",
"fatalError": "❌ Error fatal: {error}",
"configurationValidationFailed": "Falló la validación de configuración: faltan campos requeridos"
},
"sizing": {
"separator": "================================================================================",
"lineSeparator": " --------------------------------------------------------------------------------",
"analysisStats": "{stats}",
"sourceDirectoryLabel": "📁 Directorio fuente: {sourceDir}",
"sourceLanguageLabel": "🌍 Idioma fuente: {sourceLanguage}",
"strictModeLabel": "⚙️ Modo estricto: {mode}",
"invalidSourceDirectoryError": "Ruta de directorio fuente inválida: {sourceDir}",
"sourceDirectoryNotFoundError": "Directorio fuente no encontrado: {sourceDir}",
"invalidOutputDirectoryError": "Ruta de directorio de salida inválida: {outputDir}",
"invalidReportFileError": "Ruta de archivo de informe inválida",
"problematic_keys": "Claves problemáticas: {problematicKeys}",
"problematicKeysLabel": "Claves problemáticas: {problematicKeys}",
"long_translations": "Traducciones largas: {longTranslations}",
"failedToSaveReportError": "Error al guardar el informe de forma segura",
"invalidCsvFileError": "Ruta de archivo CSV inválida",
"failedToSaveCsvError": "Error al guardar el informe CSV de forma segura",
"fatalError": "❌ Error fatal: {error}",
"starting_i18n_sizing_analysis": "Iniciando análisis de tamaño i18n...",
"source_directory": "Directorio fuente: {sourceDir}",
"found_languages": "Idiomas encontrados: {languages}",
"analyzing_file_sizes": "Analizando tamaños de archivo...",
"analyzing_translation_content": "Analizando contenido de traducción...",
"generating_size_comparisons": "Generando comparaciones de tamaño...",
"no_languages_found_for_comparison": "No se encontraron idiomas para comparación",
"sizing_analysis_results": "Resultados del análisis de tamaño 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 idioma",
"language_stats_header": "Idioma Claves Caracteres Longitud Promedio Longitud Máxima Vacías Largas",
"language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
"size_variations_title": "Variaciones de tamaño",
"size_variations_header": "Idioma Char Diff % Diff Problematic",
"size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
"problematic_yes": "Yes",
"problematic_no": "No",
"recommendations_title": "Recommendaciones",
"recommendation_item": "{index}. {recommendation}",
"problematic_key_detail": " {index}. Clave: '{key}' - Variaciones: {variations}",
"generating_detailed_report": "Generando informe detallado...",
"keysHaveSignificantSizeVariations": "las claves tienen variaciones significativas de tamaño",
"longTranslationsDetected": "${lang} tiene ${data.longKeys} traducciones más largas que 100 caracteres - considere dividirlas",
"longer": "más largo",
"shorter": "más corto",
"review_translations": "Considere revisar las traducciones de {lang} - son {percentageDifference}% {comparison} que la línea base",
"report_saved_to": "Informe guardado en: {reportPath}",
"considerReviewingTranslations": "Considere revisar las traducciones de ${lang} - son ${data.percentageDifference}% más largas que la línea base",
"csv_report_saved_to": "Informe CSV guardado en: {csvPath}",
"human_report_saved": "Informe legible guardado en: {reportPath}",
"folder_summary_title": "Resumen de Carpeta",
"folder_summary_table_header": "Idioma Tamaño(KB) Claves Long. 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 de claves en consola",
"too_many_keys_warning": "⚠️ Demasiadas claves para mostrar en consola - revise el archivo de informe detallado para análisis completo",
"no_translation_files_found": "No se encontraron archivos de traducción",
"analysis_completed": "Análisis completado en {duration}ms",
"analysis_failed": "Análisis fallido: {errorMessage}",
"starting_analysis": "Iniciando análisis...",
"found_files": "Encontrados {count} archivos",
"failed_to_parse_language_error": "Error al analizar traducciones de {language}: {errorMessage}",
"recommendations": {
"keys_have_significant_size_variations": "las claves tienen variaciones significativas de tamaño",
"consider_reviewing_translations": "Considere revisar las traducciones de {lang} - son {percentageDifference}% {comparison} que la línea base",
"long_translations_detected": "{lang} tiene {longKeys} traducciones más largas que {threshold} caracteres - considere dividirlas"
}
},
"usage": {
"help_message": "\nAnalizador de Uso I18n\n\nUso: node i18ntk-usage.js [opciones]\n\nOpciones:\n --source-dir <dir> Directorio fuente a escanear (predeterminado: ./src)\n --i18n-dir <dir> Directorio i18n (predeterminado: ./src/locales)\n --output-report Generar informe detallado\n --output-dir <dir> Directorio de salida para informes (predeterminado: ./reports)\n --help Mostrar esta ayuda\n\nEjemplos:\n node i18ntk-usage.js --output-report\n node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-usage.js --output-dir=./analysis --output-report\n",
"source_directory_thissourcedir": "📁 Directorio fuente: {sourceDir}",
"translationCompletenessTitle": "🌍 Completitud de Traducción:",
"i18n_directory_thisi18ndir": "🌐 Directorio i18n: {i18nDir}",
"failed_to_parse_filename_error": "⚠️ Error al analizar {fileName}: {errorMessage}",
"analyzing_source_files": "🔍 Analizando archivos fuente...",
"found_files_in_source": "📂 Encontrados {numFiles} archivos en el directorio fuente",
"found_thisusedkeyssize_unique_": "🎯 Encontradas {usedKeysSize} claves únicas usadas",
"total_key_usages_totalkeysfoun": "📊 Total de usos de claves: {totalKeysFound}",
"loading_available_translation_": "📋 Cargando claves de traducción disponibles...",
"found_thisavailablekeyssize_av": "✅ Encontradas {availableKeysSize} claves disponibles",
"foundTranslationFiles": "✅ Encontrados {count} archivos de traducción",
"errorReadingI18nDirectory": "⚠️ Error al leer directorio i18n: {error}",
"pressEnterToReturnToMenu": "📝 Presiona Enter para volver al menú principal...",
"notTranslatedKeysTotal": "⚠️ Claves no traducidas: {total}",
"noSourceFilesFound": "⚠️ No se encontraron archivos fuente en el directorio fuente.",
"reviewNotTranslatedKeys": "💡 Revisar claves no traducidas",
"analysisCompletedSuccessfully": "🎉 ¡Análisis completado exitosamente!",
"detectedSourceDirectory": "Directorio fuente detectado: {sourceDir}",
"detectedI18nDirectory": "Directorio i18n detectado: {i18nDir}",
"fileInfo": " 📄 {namespace}: {keys} claves",
"failedToAnalyzeUsage": "❌ Error al analizar uso: {error}",
"failedToAnalyzeFile": "❌ Error al analizar archivo: {error}",
"failedToExtractKeys": "❌ Error al extraer claves de {filePath}: {error}",
"analysisFailedError": "❌ Error de análisis: {error}",
"analyzerInitialized": "Analizador inicializado",
"analyzerInitFailed": "Error al inicializar analizador: {error}",
"argsParsed": "Argumentos analizados",
"processedFiles": "Procesados {processedFiles} de {totalFiles} archivos.",
"argsParseFailed": "Error al analizar argumentos: {error}",
"translationDiscoveryError": "Error al descubrir traducción: {error}",
"fileTraversalError": "Error al recorrer archivo: {error}",
"sourceEqualsI18nWarn": "⚠️ El directorio fuente y el directorio i18n son el mismo. Esto puede causar problemas con el análisis.",
"i18nEqualsSourceWarn": "⚠️ El directorio i18n y el directorio fuente son el mismo. Esto puede causar problemas con el análisis.",
"usageAnalysisFailed": "⚠️ Error en el análisis de uso: {error}",
"translationFileParseError": "⚠️ Error al analizar archivo de traducción: {error}",
"translationKeysLoadError": "⚠️ Error al cargar claves de traducción: {error}",
"languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% traducido)",
"missingKeysCount": "⚠️ Claves faltantes: {count}",
"analyzingTranslationCompleteness": "Analizando completitud de traducción...",
"unusedKeysCount": "Claves no usadas: {count}",
"usedKeysCount": "Claves usadas: {count}",
"availableKeysCount": "Claves disponibles: {count}",
"analysisResults": "Resultados del análisis:",
"i18nDirectoryNotFound": "⚠️ Directorio i18n no encontrado. Por favor verifica la ruta.",
"sourceDirectoryNotFound": "⚠️ Directorio fuente no encontrado: {dir}",
"checkUsage": {
"title": "🔍 I18NTK USAGE ANALYSIS",
"analyzing_source_files": "🔍 Analizando archivos fuente...",
"source_directory_thissourcedir": "📁 Directorio fuente: {sourceDir}",
"i18n_directory_thisi18ndir": "📁 Directorio i18n: {i18nDir}",
"found_files_in_source": "✅ Encontrados {numFiles} archivos en el directorio fuente",
"no_source_files_found": "⚠️ No se encontraron archivos fuente en el directorio fuente",
"processedFiles": "📊 Procesados {processedFiles} de {totalFiles} archivos",
"failedToProcessFile": "❌ Error al procesar archivo",
"found_thisusedkeyssize_unique_": "🔍 Encontradas {usedKeysSize} claves únicas usadas",
"total_key_usages_totalkeysfoun": "📊 Total de usos de claves: {totalKeysFound}",
"loading_available_translation_": "📂 Cargando claves de traducción disponibles...",
"found_thisavailablekeyssize_av": "✅ Encontradas {availableKeysSize} claves disponibles",
"message": "Analizando uso de claves de traducción en tu 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 usadas: {usedKeysSize}",
"dynamic_keys_detected_dynamick": "⚡ Claves dinámicas detectadas: {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "🗑️ Claves no usadas: {unusedKeysLength}",
"missing_keys_missingkeyslength": "❌ Claves faltantes: {missingKeysLength}",
"translation_completeness_title": "📈 COMPLETENESS OF TRANSLATION",
"language_completeness_stats": "{language}: {translated}/{total} ({completeness}% traducido)",
"n_sample_unused_keys": "🗑️ EJEMPLO DE CLAVES NO UTILIZADAS (primeras 5):",
"key": " 🔑 {key}",
"and_unusedkeyslength_5_more": "... y {count} claves no utilizadas más",
"n_sample_missing_keys": "\n❌ EJEMPLO DE CLAVES FALTANTES (primeras 5):",
"and_missingkeyslength_5_more": "... y {count} claves faltantes más",
"n_generating_detailed_report": "\n📊 Generando informe detallado...",
"report_saved_reportpath": "📄 Informe guardado: {reportPath}",
"n_recommendations": "\n💡 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 faltantes para mantener la consistencia",
"review_dynamic_keys_manually_t": " 🔍 Revise manualmente las claves dinámicas (pueden ser válidas)",
"all_translation_keys_are_prope": "✅ ¡Todas las claves de traducción se utilizan correctamente!",
"n_next_steps": "\n🎯 SIGUIENTES PASOS:",
"2_check_the_detailed_report_fo": " 2. Verifique el informe detallado para problemas específicos",
"help_message": "\nAnalizador de Uso i18ntk\n\nUso: node i18ntk-usage.js [opciones]\n\nOpciones:\n --source-dir <dir> Directorio fuente a escanear (predeterminado: ./src)\n --i18n-dir <dir> Directorio i18n (predeterminado: ./src/locales)\n --output-report Generar informe detallado\n --output-dir <dir> Directorio de salida para informes (predeterminado: ./reports)\n --help Mostrar esta ayuda\n\nEjemplos:\n node i18ntk-usage.js --output-report\n node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-usage.js --output-dir=./analysis --output-report\n",
"1_review_the_analysis_results": "1. Revise los resultados del análisis en la consola o informe generado.",
"2_run_with_outputreport_for_de": "2. Ejecute con --output-report para informe detallado.",
"3_remove_unused_keys_or_add_mi": "3. Elimine claves no utilizadas o agregue claves faltantes al código fuente.",
"4_rerun_analysis_to_verify_imp": "4. Re-ejecute el análisis para verificar mejoras.",
"noSourceFilesFound": "No se encontraron archivos fuente para analizar.",
"i18nDirectoryNotFound": "No se encontró el directorio i18n: {i18nDir}",
"noTranslationLanguagesFound": "No se encontraron idiomas de traducción.",
"failedToAnalyzeFile": "Error al analizar archivo {filePath}: {error}",
"failedToAnalyzeLanguage": "Error al analizar el idioma {language}: {error}",
"translationCompletenessAnalysisFailed": "El análisis de completitud de traducción falló: {error}",
"n": ""
},
"complete": {
"configLoadedSuccessfully": "Configuración cargada correctamente",
"configLoadingFailed": "Error al cargar la configuración",
"title": "🌍 COMPLETADO DE TRADUCCIÓN I18NTK",
"separator": "============================================================",
"sourceDir": "📁 Directorio fuente: {sourceDir}",
"sourceLanguage": "🌐 Idioma fuente: {sourceLanguage}",
"dryRunMode": "🧪 Modo de prueba - no se realizarán cambios",
"languages": "🌍 Idiomas disponibles: {languages}",
"addingMissingKeys": "➕ Agregando claves faltantes a archivos de traducción...",
"processing": "🔄 Procesando {language}...",
"addedKeys": "✅ Se agregaron {count} claves faltantes",
"changeDetails": "📝 {file}: {key}",
"andMore": "...y {count} más",
"noChangesNeeded": "✅ No se necesitan cambios para {language}",
"summaryTitle": "📊 RESUMEN DE COMPLETADO",
"totalChanges": "📝 Cambios totales: {totalChanges}",
"languagesProcessed": "🌍 Idiomas procesados: {languagesProcessed}",
"missingKeysAdded": "➕ Claves faltantes agregadas: {missingKeysAdded}",
"nextStepsTitle": "📋 SIGUIENTES PASOS",
"nextStep1": "1. Run usage analysis:",
"nextStep2": " node i18ntk-usage.js --output-report",
"nextStep3": "2. Validate translations:",
"nextStep4": " node i18ntk-validate.js",
"nextStep5": "3. Analyze patterns:",
"nextStep6": " node i18ntk-analyze.js",
"allKeysAvailable": "🎉 ¡Todas las claves de traducción están disponibles!",
"runWithoutDryRun": "💡 Ejecute sin --dry-run para aplicar cambios",
"deletingOldReport": "🗑️ Eliminando informe antiguo...",
"generatingFreshAnalysis": "📊 Generando análisis de uso fresco...",
"couldNotGenerate": "❌ No se pudo generar el análisis de uso",
"reportNotFound": "📋 Informe de uso no encontrado. Usando claves comunes...",
"foundMissingKeys": "📋 Encontradas {count} claves faltantes del 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": "Error al analizar el idioma {language}: {error}",
"translationCompletenessAnalysisFailed": "El análisis de completitud de traducción falló: {error}"
},
"validate": {
"help_message": "\nValidador de Traducciones I18n\n\nUso: node i18ntk-validate.js [opciones]\n\nOpciones:\n --source-dir <dir> Directorio fuente a escanear (predeterminado: ./src)\n --i18n-dir <dir> Directorio i18n (predeterminado: ./src/locales)\n --output-report Generar informe detallado\n --output-dir <dir> Directorio de salida para informes (predeterminado: ./reports)\n --help Mostrar esta ayuda\n\nEjemplos:\n node i18ntk-validate.js --output-report\n node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales\n node i18ntk-validate.js --output-dir=./analysis --output-report\n",
"title": "🔍 Validador de Traducciones I18n",
"message": "Iniciando proceso de validación...",
"sourceDirectory": "📁 Directorio fuente: {dir}",
"sourceLanguage": "🌍 Idioma fuente: {sourceLanguage}",
"strictMode": "⚙️ Modo estricto: {mode}",
"noTargetLanguages": "No hay idiomas objetivo configurados; omitiendo validación de objetivos. Agregue idiomas mediante \"i18ntk init --languages=de,fr\".",
"validatingLanguages": "🌍 Validando idiomas: {langs}",
"validatingLanguage": "🔍 Validando idioma: {lang}",
"filesCount": "📄 Archivos: {count}",
"keysCount": "🔑 Claves: {count}",
"missingFilesCount": "📁 Archivos faltantes: {count}",
"syntaxErrorsCount": "❌ Errores de sintaxis: {count}",
"translationPercentage": "🎯 Traducción: {percentage}% ({translated}/{total} claves)",
"validationSummary": "📊 RESUMEN DE VALIDACIÓN",
"validation_failed": "❌ Validación fallida: {error}",
"totalErrors": "❌ Errores totales: {count}",
"totalWarnings": "⚠️ Advertencias totales: {count}",
"errorsSection": "❌ ERRORES",
"warningsSection": "⚠️ ADVERTENCIAS",
"recommendationsSection": "💡 RECOMENDACIONES",
"fixErrorsFirst": "1. Corregir todos los errores primero",
"resolveMissingFilesAndSyntaxErrors": "1. Resolver archivos faltantes y errores de sintaxis",
"fixStructuralInconsistencies": "2. Corregir inconsistencias estructurales",
"completeMissingTranslations": "3. Completar traducciones faltantes",
"rerunValidation": "4. Volver a ejecutar validación para verificar correcciones",
"addressWarnings": "Abordar advertencias para mejorar la calidad",
"reviewWarnings": "Revisar advertencias y corregir donde sea apropiado",
"considerRunningWithStrict": "2. Considerar ejecutar con bandera --strict para validación más estricta",
"allValidationsPassed": "🎉 ¡Todas las validaciones pasaron!",
"considerRunningUsageAnalysis": "Considerar ejecutar análisis de uso: node i18ntk-usage.js",
"deletedOldReport": "🗑️ Informe de validación antiguo eliminado",
"sourceDir": "📁 Directorio fuente: {sourceDir}",
"i18nDir": "🌐 Directorio i18n: {i18nDir}",
"loadingTranslationFiles": "📋 Cargando archivos de traducción...",
"foundTranslationFilesCount": "✅ Encontrados {count} archivos de traducción",
"analyzingTranslations": "🔍 Analizando traducciones...",
"validationCompletedSuccessfully": "🎉 ¡Validación completada exitosamente!",
"validationErrorsFound": "⚠️ Errores de validación encontrados: {count}",
"validationWarningsFound": "⚠️ Advertencias de validación encontradas: {count}",
"validationPassed": "✅ Validación pasada sin errores",
"validationFailed": "Validación fallida: {error}",
"startingValidationProcess": "🔍 Iniciando proceso de validación...",
"validationProcessCompletedSuccessfully": "✅ Proceso de validación completado exitosamente",
"stackTrace": "Rastro de pila: {stack}",
"authenticationFailed": "❌ Autenticación fallida. Acceso denegado.",
"fatalValidationError": "❌ Error de validación fatal: {error}",
"configAccess": "Accediendo a configuración para validación",
"configValidated": "Configuración validada exitosamente",
"configError": "Error de configuración: {error}",
"validatorInit": "Inicializando validador I18n",
"validatorInitialized": "Validador I18n inicializado exitosamente",
"validatorInitError": "Error de inicialización del validador: {error}",
"argsParsing": "Analizando argumentos de línea de comandos",
"argsParsed": "Argumentos de línea de comandos analizados exitosamente",
"argsParseError": "Error de análisis de argumentos: {error}",
"languagesScan": "Escaneando idiomas disponibles",
"languagesFound": "Encontrados {count} idiomas",
"languagesScanError": "Error de escaneo de idiomas: {error}",
"filesScan": "Encontrados {count} archivos en {language}",
"filesScanError": "Error de escaneo de archivos: {error}",
"jsonValidated": "Sintaxis JSON validada: {filePath}",
"jsonValidationError": "Error de validación JSON: {error}",
"languageValidation": "Validando idioma: {language}",
"languageValidationError": "Error de validación de idioma: {error}",
"fileDeleted": "Archivo eliminado",
"runStarted": "Iniciando ejecución de validación",
"runCompleted": "Ejecución de validación completada exitosamente",
"runError": "Ejecución de validación fallida: {error}",
"scriptExecution": "Ejecución de script",
"validationCompleted": "Validación completada",
"validationError": "Error de validación: {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 Idioma: {language}",
"validationResults": "📊 Resultados de Validación",
"noErrors": "✅ No se encontraron errores",
"noWarnings": "✅ No se encontraron advertencias",
"summaryHeader": "📋 RESUMEN GENERAL",
"progressIndicator": "⏳ Procesando...",
"completedIndicator": "✅ Completado",
"errorIndicator": "❌ Error",
"warningIndicator": "⚠️ Advertencia",
"infoIndicator": "ℹ️ Información",
"sourceDirNotConfigured": "Directorio fuente no configurado",
"sourceLanguageNotConfigured": "Idioma fuente no configurado",
"translationFunctionNotInitialized": "Función de traducción no inicializada correctamente",
"sourceLanguageDirectoryNotFound": "Directorio de idioma fuente 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": "Rutas de directorio inválidas detectadas",
"invalidSampleFilePath": "Ruta de archivo de ejemplo inválida",
"failedToCreateSampleTranslationFile": "Falló al crear archivo de traducción de ejemplo",
"invalidFilePathDetected": "Ruta de archivo inválida detectada",
"failedToWriteFile": "Falló al escribir archivo: {filePath}"
},
"adminCli": {
"setupPinProtectionTitle": "\n🔐 Configurando Protección PIN de Administrador",
"setupPinProtectionDescription": "Esto requerirá un PIN de 4-6 dígitos para operaciones administrativas.",
"enablePinProtectionPrompt": "¿Deseas habilitar la protección PIN de administrador?",
"setupCancelled": "Configuración de protección PIN de administrador cancelada.",
"enterPinPrompt": "Ingresa un PIN de 4-6 dígitos: ",
"pinFormatError": "❌ El PIN debe tener 4-6 dígitos. Por favor intenta de nuevo.",
"confirmPinPrompt": "Confirma el PIN: ",
"pinMismatchError": "❌ Los PINs no coinciden. Por favor intenta de nuevo.",
"pinProtectionEnabledSuccess": "✅ ¡Protección PIN de administrador habilitada exitosamente!",
"pinRecoveryWarning": "⚠️ Recuerda tu PIN - no podrá ser recuperado si lo pierdes.",
"setupPinProtectionFailed": "❌ Falló la configuración de protección PIN de administrador.",
"errorSettingUpPin": "❌ Error configurando PIN de administrador: {message}",
"authRequiredForOperation": "\n🔐 Autenticación de administrador requerida para: {operation}",
"invalidPinFormat": "❌ Formato de PIN inválido. El PIN debe tener 4-6 dígitos.",
"authenticationSuccess": "✅ ¡Autenticación exitosa!",
"invalidPinAttemptsRemaining": "❌ PIN inválido. {remaining} intentos restantes.",
"authenticationFailedAccessDenied": "❌ Autenticación fallida. Acceso denegado.",
"authenticationError": "❌ Error de autenticación: {message}",
"pinProtectionNotEnabled": "La protección PIN de administrador no está habilitada actualmente.",
"disablingPinProtectionTitle": "\n🔓 Deshabilitando Protección PIN de Administrador",
"confirmDisablePinProtection": "¿Estás seguro de que deseas deshabilitar la protección PIN de administrador?",
"operationCancelled": "Operación cancelada.",
"pinProtectionDisabledSuccess": "✅ Protección PIN de administrador deshabilitada.",
"disablePinProtectionFailed": "❌ Falló al deshabilitar la protección PIN de administrador.",
"errorDisablingPinProtection": "❌ Error deshabilitando protección de administrador: {message}",
"adminProtectionStatusTitle": "\n🔐 Estado de Protección de Administrador",
"statusEnabled": "Estado: ✅ HABILITADO",
"protectionDetails": "Protección: PIN de 4-6 dígitos requerido para operaciones de administrador",
"lockoutDetails": "Bloqueo: 3 intentos fallidos = 15 minutos de bloqueo",
"statusDisabled": "Estado: ❌ DESHABILITADO",
"noAuthRequired": "Protección: No se requiere autenticación",
"unprotectedRisk": "Riesgo: Las operaciones administrativas están desprotegidas",
"errorCheckingAdminStatus": "❌ Error verificando estado de administrador: {message}",
"authRequired": "🔐 Se requiere autenticación de administrador.",
"invalidPin": "❌ PIN inválido.",
"authSuccess": "✅ ¡Autenticación exitosa!",
"adminPinSetupCli": "configuracion_pin_admin_cli",
"adminAuthFailedCli": "autenticacion_admin_fallida_cli",
"adminAuthDisabledCli": "autenticacion_admin_deshabilitada_cli",
"protectedAccess": "Acceso protegido: Se requiere autenticación de administrador para operaciones sensibles.",
"enterPin": "Ingresa el PIN de administrador: ",
"accessGranted": "Acceso concedido."
},
"adminPin": {
"setup_title": "🔐 Configuración de PIN de Administrador",
"setup_separator": "============================================================",
"setup_description": "Crea un PIN de 4-6 dígitos para acceso administrativo a configuraciones sensibles.",
"required_for_title": "Este PIN será requerido para:",
"required_for_1": " • Cambiar configuraciones de seguridad",
"required_for_2": " • Modificar configuraciones avanzadas",
"required_for_3": " • Acceder a herramientas de depuración",
"required_for_4": " • Restablecer configuraciones",
"setup_note": "💡 Nota: Verás asteriscos (*) mientras escribes - son solo caracteres de enmascaramiento.",
"setup_digits_only": " Solo se aceptan números del 0-9 como d