mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 06:04:22 +08:00
a2ec923788
- 新增check_url_protocol_status命令检测注册状态 - 新增unregister_url_protocol命令取消注册 - 改进register_url_protocol命令增加验证逻辑 - 前端增加状态检测、自动重试和操作日志功能 - 更新多语言翻译支持新功能
741 lines
33 KiB
JSON
741 lines
33 KiB
JSON
{
|
|
"common": {
|
|
"next": "Siguiente",
|
|
"prev": "Anterior",
|
|
"finish": "Finalizar",
|
|
"cancel": "Cancelar",
|
|
"save": "Guardar",
|
|
"loading": "Cargando...",
|
|
"confirm": "Confirmar",
|
|
"success": "Éxito",
|
|
"error": "Error",
|
|
"delete": "Eliminar",
|
|
"edit": "Editar",
|
|
"add": "Añadir",
|
|
"search": "Buscar",
|
|
"clear": "Borrar",
|
|
"close": "Cerrar",
|
|
"yes": "Sí",
|
|
"no": "No",
|
|
"submit": "Enviar",
|
|
"reset": "Reiniciar",
|
|
"import": "Importar",
|
|
"export": "Exportar",
|
|
"create": "Crear",
|
|
"update": "Actualizar",
|
|
"refresh": "Actualizar",
|
|
"view": "Ver",
|
|
"name": "Nombre",
|
|
"status": "Estado",
|
|
"operation": "Operación",
|
|
"description": "Descripción",
|
|
"total": "Total {{count}} elementos",
|
|
"noData": "Sin datos",
|
|
"pleaseSelect": "Por favor seleccione",
|
|
"pleaseEnter": "Por favor ingrese",
|
|
"readOnly": "Modo de solo lectura",
|
|
"none": "Ninguno",
|
|
"more": "Más"
|
|
},
|
|
"oobe": {
|
|
"title": "Bienvenido a SecScore",
|
|
"subtitle": "Experto en gestión de puntos educativos",
|
|
"step": "Paso {{current}}/{{total}}",
|
|
"skip": "Saltar",
|
|
"steps": {
|
|
"entry": {
|
|
"title": "Comenzar",
|
|
"description": "Elija el procedimiento a seguir",
|
|
"enterOobe": "Entrar en el OOBE",
|
|
"connectPostgresAutoSync": "Conectar PostgreSQL con sincronización automática",
|
|
"skipDirect": "Saltar OOBE y entrar directamente"
|
|
},
|
|
"postgresql": {
|
|
"title": "Conectar PostgreSQL",
|
|
"description": "Ingrese la cadena de conexión PostgreSQL. El sistema se conectará y sincronizará automáticamente.",
|
|
"connectionPlaceholder": "postgresql://user:password@host:port/database?sslmode=require",
|
|
"autoSyncAndEnter": "Conectar y sincronizar automáticamente"
|
|
},
|
|
"language": {
|
|
"title": "Elegir idioma",
|
|
"description": "Por favor elija su idioma preferido"
|
|
},
|
|
"theme": {
|
|
"title": "Configurar tema",
|
|
"description": "Elija la apariencia de la interfaz",
|
|
"mode": "Modo",
|
|
"lightMode": "Claro",
|
|
"darkMode": "Oscuro",
|
|
"primaryColor": "Color principal",
|
|
"backgroundGradient": "Degradado de fondo"
|
|
},
|
|
"password": {
|
|
"title": "Configurar contraseña",
|
|
"description": "Configure una contraseña para proteger sus datos (opcional)",
|
|
"adminPassword": "Contraseña de administrador",
|
|
"adminPasswordHint": "Acceso a todas las funciones, 6 dígitos",
|
|
"pointsPassword": "Contraseña de puntos",
|
|
"pointsPasswordHint": "Operaciones de puntos únicamente, 6 dígitos",
|
|
"passwordPlaceholder": "Ingrese 6 dígitos",
|
|
"hint": "Dejar vacío para omitir, configurar más tarde en configuraciones"
|
|
},
|
|
"students": {
|
|
"title": "Importar lista de estudiantes",
|
|
"description": "Agregue una lista de estudiantes para comenzar la gestión de puntos",
|
|
"import": "Importar lista",
|
|
"manual": "Añadir manualmente",
|
|
"importHint": "Soporta archivos Excel (.xlsx) o JSON",
|
|
"manualHint": "Pegue varias líneas, un nombre de estudiante por línea",
|
|
"dragDrop": "Arrastre y suelte archivos aquí o haga clic para seleccionar",
|
|
"supportedFormats": "Formatos soportados: .xlsx, .json",
|
|
"studentName": "Nombre del estudiante",
|
|
"addStudent": "Añadir estudiante",
|
|
"noStudents": "Sin estudiantes por el momento, por favor añada o importe",
|
|
"studentCount": "{{count}} estudiantes añadidos",
|
|
"studentExists": "El estudiante ya existe",
|
|
"importSuccess": "{{count}} estudiantes importados con éxito",
|
|
"noNewStudents": "Sin nuevos estudiantes para importar",
|
|
"parseFailed": "Fallo al analizar el archivo",
|
|
"unsupportedFormat": "Formato de archivo no soportado"
|
|
},
|
|
"reasons": {
|
|
"title": "Configurar razones",
|
|
"description": "Agregue las razones comunes de modificación de puntos",
|
|
"addReason": "Añadir razón",
|
|
"reasonName": "Nombre de la razón",
|
|
"points": "Puntos",
|
|
"positive": "Añadir puntos",
|
|
"negative": "Retirar puntos",
|
|
"noReasons": "Sin razones por el momento, por favor agregue razones comunes",
|
|
"reasonCount": "{{count}} razones añadidas",
|
|
"reasonExists": "La razón ya existe"
|
|
},
|
|
"start": {
|
|
"title": "Listo para usar",
|
|
"description": "Todo está listo. ¡Comencemos a usar SecScore!",
|
|
"features": {
|
|
"score": "Gestione fácilmente los puntos de los estudiantes",
|
|
"history": "Historial completo de modificaciones de puntos",
|
|
"settlement": "Soporta liquidación y archivado"
|
|
},
|
|
"startButton": "Comenzar"
|
|
}
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Configuraciones del sistema",
|
|
"tabs": {
|
|
"appearance": "Apariencia",
|
|
"security": "Seguridad",
|
|
"account": "Cuenta",
|
|
"database": "Sincronización en la nube",
|
|
"dataManagement": "Gestión de datos",
|
|
"urlProtocol": "Protocolo URL",
|
|
"about": "Acerca de"
|
|
},
|
|
"language": "Idioma",
|
|
"languageHint": "Elegir el idioma de visualización de la interfaz",
|
|
"fontFamily": "Fuente global",
|
|
"fontFamilyHint": "Elegir la fuente de la interfaz (requiere actualización)",
|
|
"theme": "Tema",
|
|
"password": "Configurar contraseña",
|
|
"themeMode": "Modo",
|
|
"lightMode": "Claro",
|
|
"darkMode": "Oscuro",
|
|
"primaryColor": "Color principal",
|
|
"backgroundGradient": "Degradado de fondo",
|
|
"searchKeyboard": {
|
|
"title": "Teclado de búsqueda",
|
|
"hint": "Elegir la disposición del teclado bajo el campo de búsqueda",
|
|
"disableToggle": "Desactivar teclado de búsqueda",
|
|
"disableHint": "El teclado ya no se mostrará bajo el campo de búsqueda",
|
|
"options": {
|
|
"qwerty26": "26 teclas (QWERTY)",
|
|
"t9": "9 teclas (T9)"
|
|
}
|
|
},
|
|
"interfaceZoom": "Zoom de la interfaz",
|
|
"zoomOptions": {
|
|
"small70": "Pequeño (70%)",
|
|
"default100": "Predeterminado (100%)",
|
|
"large150": "Grande (150%)"
|
|
},
|
|
"general": {
|
|
"saved": "Guardado",
|
|
"saveFailed": "Fallo al guardar"
|
|
},
|
|
"zoomHint": "Ajustar el tamaño global de la interfaz",
|
|
"mobile": {
|
|
"navigationTitle": "Entradas de página",
|
|
"bottomNav": {
|
|
"label": "Funciones de navegación inferior",
|
|
"hint": "Elegir las funciones a mostrar en la barra inferior del móvil. La barra muestra un máximo de 4 elementos, los demás van en «Más»."
|
|
},
|
|
"dragHint": "Arrastre para reorganizar. Los primeros 4 elementos aparecen en la barra inferior, los demás en «Más».",
|
|
"dropHere": "Suelte aquí",
|
|
"bottomSection": "Barra inferior (máx. 4)",
|
|
"moreSection": "Más",
|
|
"moveToMore": "Mover a Más",
|
|
"moveToBottom": "Mover abajo"
|
|
},
|
|
"zoomUpdated": "Zoom de la interfaz actualizado",
|
|
"updateFailed": "Fallo al actualizar",
|
|
"security": {
|
|
"title": "Sistema de protección por contraseña",
|
|
"adminPassword": "Contraseña de administrador",
|
|
"pointsPassword": "Contraseña de puntos",
|
|
"recoveryString": "Frase de recuperación",
|
|
"set": "Configurado",
|
|
"notSet": "No configurado",
|
|
"generated": "Generado",
|
|
"notGenerated": "No generado",
|
|
"enterPassword": "Ingrese 6 dígitos (dejar vacío para no modificar)",
|
|
"adminPasswordPlaceholder": "Ingrese 6 dígitos para la contraseña de administrador (dejar vacío para no modificar)",
|
|
"pointsPasswordPlaceholder": "Ingrese 6 dígitos para la contraseña de puntos (dejar vacío para no modificar)",
|
|
"recoveryPlaceholder": "Ingrese la frase de recuperación",
|
|
"savePassword": "Guardar contraseña",
|
|
"savePasswords": "Guardar contraseñas",
|
|
"generateRecovery": "Generar frase de recuperación",
|
|
"clearAllPasswords": "Borrar todas las contraseñas",
|
|
"recoveryReset": "Reiniciar frase de recuperación",
|
|
"enterRecovery": "Ingrese la frase de recuperación",
|
|
"resetPassword": "Reiniciar contraseña",
|
|
"resetHint": "El reinicio borrará las contraseñas de administrador y puntos, y generará una nueva frase de recuperación.",
|
|
"confirmClear": "¿Confirmar el borrado de todas las contraseñas?",
|
|
"clearHint": "Después del borrado, la protección se desactivará (sin contraseña = permiso de administrador por defecto).",
|
|
"saved": "Contraseña actualizada",
|
|
"saveFailed": "Fallo al actualizar",
|
|
"generateFailed": "Fallo al generar",
|
|
"resetFailed": "Fallo al reiniciar",
|
|
"cleared": "Borrado",
|
|
"clearFailed": "Fallo al borrar",
|
|
"passwordClearedNewRecovery": "Contraseña borrada, nueva frase de recuperación",
|
|
"newRecoveryString": "Nueva frase de recuperación (por favor guárdela)"
|
|
},
|
|
"account": {
|
|
"title": "Cuenta SECTL Auth",
|
|
"notLoggedIn": "No conectado a SECTL Auth",
|
|
"oauthHint": "Conéctese con su cuenta SECTL Auth para disfrutar de la autenticación unificada y la desconexión remota",
|
|
"loginButton": "Conectar con SECTL Auth",
|
|
"loginSuccess": "Conexión exitosa",
|
|
"logout": "Desconectar",
|
|
"userId": "ID de usuario",
|
|
"permission": "Nivel de permiso"
|
|
},
|
|
"database": {
|
|
"title": "Conexión a base de datos",
|
|
"currentStatus": "Estado actual de la base de datos",
|
|
"sqliteLocal": "Base de datos SQLite local",
|
|
"postgresqlRemote": "Base de datos PostgreSQL remota",
|
|
"connected": "Conectado",
|
|
"disconnected": "Desconectado",
|
|
"postgresqlConnection": "Conexión PostgreSQL remota",
|
|
"connectionHint": "Ingrese la cadena de conexión PostgreSQL para conectarse a una base de datos remota, soporta sincronización multiplataforma.",
|
|
"testConnection": "Probar conexión",
|
|
"switchToPostgreSQL": "Cambiar a PostgreSQL",
|
|
"switchToSQLite": "Cambiar a SQLite local",
|
|
"connectionTestSuccess": "Prueba de conexión exitosa",
|
|
"connectionTestFailed": "Fallo en la prueba de conexión",
|
|
"switchedTo": "Cambiado a la base de datos {{type}}",
|
|
"switchedToSQLite": "Cambiado a la base de datos SQLite local",
|
|
"switchFailed": "Fallo al cambiar",
|
|
"syncDescription": "Instrucciones de sincronización multiplataforma",
|
|
"syncPoint1": "El uso de una base de datos PostgreSQL remota permite la sincronización de datos multiplataforma.",
|
|
"syncPoint2": "Mecanismo de cola de operaciones integrado para garantizar la coherencia de los datos durante las operaciones simultáneas.",
|
|
"syncPoint3": "Es necesario reiniciar la aplicación después del cambio de base de datos.",
|
|
"syncPoint4": "Servicios de base de datos en la nube recomendados: Neon, Supabase, AWS RDS, etc.",
|
|
"enterConnectionString": "Por favor ingrese la cadena de conexión PostgreSQL",
|
|
"connectionExample": "Ejemplo: postgresql://xxxxxx_xxxxx:xxxxxxxx@xx-xxx.xxx.neon.xxxx/xxxxdxx?sslmode=require",
|
|
"uploadButton": "Cargar datos locales al servidor remoto",
|
|
"uploadHint": "Después de conectarse a la base de datos remota, cargue y fusione el historial SQLite local al servidor remoto.",
|
|
"uploadNeedRemote": "Por favor primero cambie y conecte a la base de datos PostgreSQL remota",
|
|
"noNeedUpload": "Los datos locales y remotos ya son coherentes",
|
|
"uploadConfirmTitle": "¿Confirmar la carga de datos locales al servidor remoto?",
|
|
"uploadConfirmContent": "La sincronización priorizará los datos locales. Detectado: local-solo {{localOnly}}, remoto-solo {{remoteOnly}}, conflictos {{conflicts}}.",
|
|
"uploadSuccess": "Datos locales cargados al servidor remoto",
|
|
"uploadFailed": "Fallo al cargar"
|
|
},
|
|
"cloudSync": {
|
|
"title": "Sincronización en la nube",
|
|
"selectMethod": "Seleccionar método de sincronización",
|
|
"selectMethodHint": "Elija un método de sincronización de datos. Los dos métodos son mutuamente excluyentes.",
|
|
"postgresql": "PostgreSQL auto-alojado",
|
|
"postgresqlDesc": "Conéctese a su propia base de datos PostgreSQL para control total. Ideal para usuarios con servidor propio.",
|
|
"sectlCloud": "SECTL Cloud Sync",
|
|
"sectlCloudDesc": "Sincronice datos a través de la plataforma cloud SECTL. Sin base de datos propia necesaria.",
|
|
"loginRequired": "Por favor, inicie sesión en SECTL Auth primero",
|
|
"loginHint": "La sincronización cloud SECTL requiere una cuenta SECTL Auth. Inicie sesión en la pestaña 'Cuenta'.",
|
|
"statusTitle": "Estado de sincronización",
|
|
"configured": "Listo",
|
|
"notConfigured": "No listo",
|
|
"syncing": "Sincronizando...",
|
|
"lastSync": "Última sincronización",
|
|
"never": "Nunca sincronizado",
|
|
"syncActions": "Acciones de sincronización",
|
|
"syncDirection": "Dirección de sincronización",
|
|
"bidirectional": "Bidireccional (Recomendado) — Fusionar automáticamente datos locales y en la nube",
|
|
"pushOnly": "Solo subir — Sobrescribir datos en la nube con datos locales",
|
|
"pullOnly": "Solo descargar — Sobrescribir datos locales con datos en la nube",
|
|
"startSync": "Iniciar sincronización",
|
|
"uploadToCloud": "Subir a la nube",
|
|
"downloadFromCloud": "Descargar de la nube",
|
|
"fullSync": "Sincronización bidireccional",
|
|
"syncInProgress": "Sincronización en progreso, por favor espere",
|
|
"syncConfirm": "¿Confirmar {{direction}}?",
|
|
"storageUsage": "Uso de almacenamiento",
|
|
"usedStorage": "Usado",
|
|
"table": "Tabla",
|
|
"records": "Registros",
|
|
"size": "Tamaño",
|
|
"clickToLoadStats": "Haga clic en actualizar para cargar estadísticas",
|
|
"description": "Guía de sincronización cloud SECTL",
|
|
"descriptionPoint1": "Sincronice datos a través del servicio cloud SECTL. Sin base de datos propia. Los datos se aíslan por cuenta SECTL Auth.",
|
|
"descriptionPoint2": "Basado en arquitectura de almacenamiento KV. Cada tabla se almacena como par clave-valor.",
|
|
"descriptionPoint3": "Soporta modos bidireccional, solo subida y solo descarga.",
|
|
"descriptionPoint4": "Los datos se transmiten por HTTPS con autenticación OAuth 2.0."
|
|
},
|
|
"data": {
|
|
"title": "Gestión de datos",
|
|
"settlement": "Liquidación",
|
|
"settlementAndRestart": "Liquidar y reiniciar",
|
|
"settlementHint": "Clasifica los registros no liquidados en una fase y restablece todos los puntos de los estudiantes a cero.",
|
|
"importExport": "Importar / Exportar",
|
|
"exportJson": "Exportar JSON",
|
|
"importJson": "Importar JSON",
|
|
"importHint": "La importación sobrescribirá los estudiantes/razones/registros/ajustes existentes (los ajustes de seguridad están excluidos).",
|
|
"logs": "Registros",
|
|
"logLevel": "Nivel de registro",
|
|
"logOperation": "Operación en registros",
|
|
"viewLogs": "Ver registros",
|
|
"exportLogs": "Exportar registros",
|
|
"clearLogs": "Borrar registros",
|
|
"logsCleared": "Registros borrados",
|
|
"systemLogs": "Registros del sistema (últimos 200)",
|
|
"noLogs": "Sin registros",
|
|
"logLevelUpdated": "Nivel de registro actualizado",
|
|
"readLogsFailed": "Fallo al leer los registros",
|
|
"logsExported": "Registros exportados",
|
|
"exportFailed": "Fallo al exportar",
|
|
"exportSuccess": "Exportación exitosa",
|
|
"importSuccess": "Importación exitosa, actualizando",
|
|
"importFailed": "Fallo al importar",
|
|
"clearFailed": "Fallo al borrar",
|
|
"confirmSettlement": "¿Confirmar la liquidación y reinicio?",
|
|
"settlementConfirm1": "Esto archivará los registros no liquidados en una fase y restablecerá todos los puntos de los estudiantes a cero.",
|
|
"settlementConfirm2": "La lista de estudiantes permanece sin cambios; el historial de liquidación es consultable en la página «Historial de liquidaciones».",
|
|
"settlementSuccess": "Liquidación exitosa, puntos reiniciados",
|
|
"settlementFailed": "Fallo en la liquidación",
|
|
"settle": "Liquidar",
|
|
"logLevels": {
|
|
"debug": "DEBUG (depuración)",
|
|
"info": "INFO (información)",
|
|
"warn": "WARN (advertencia)",
|
|
"error": "ERROR (error)"
|
|
}
|
|
},
|
|
"url": {
|
|
"title": "Protocolo URL (secscore://)",
|
|
"protocol": "Protocolo URL",
|
|
"description": "Puede invocar SecScore a través de una URL para realizar operaciones, por ejemplo:",
|
|
"register": "Registrar protocolo URL",
|
|
"registered": "Protocolo URL registrado",
|
|
"registerFailed": "Fallo al registrar",
|
|
"installerRequired": "Requiere la versión instalada de SecScore, puede no funcionar en modo desarrollo.",
|
|
"checkStatus": "Verificar estado",
|
|
"reRegister": "Re-registrar",
|
|
"unregister": "Anular registro",
|
|
"unregistered": "Registro del protocolo URL anulado",
|
|
"unregisterFailed": "Error al anular el registro",
|
|
"statusRegistered": "Registrado",
|
|
"statusNotRegistered": "No registrado",
|
|
"statusCheckFailed": "Error al verificar el estado",
|
|
"retrying": "Reintentando ({{current}}/{{max}})",
|
|
"retryFailed": "Se alcanzó el máximo de reintentos, fallo en el registro",
|
|
"retrySuccess": "Reintento #{{n}} exitoso",
|
|
"operationLog": "Registro de operaciones",
|
|
"logRegisterStart": "Iniciando registro del protocolo URL...",
|
|
"logRegisterVerify": "Comando de registro ejecutado, verificando...",
|
|
"logRegisterSuccess": "Registro verificado exitosamente",
|
|
"logRegisterFailed": "Error en la verificación del registro",
|
|
"logUnregisterStart": "Anulando registro...",
|
|
"logUnregisterSuccess": "Registro anulado exitosamente",
|
|
"logUnregisterFailed": "Error al anular el registro",
|
|
"logMaxRetries": "Se alcanzó el máximo de reintentos (7)"
|
|
},
|
|
"elevation": {
|
|
"title": "Privilegios de administrador",
|
|
"description": "Verificar si la aplicación se ejecuta con privilegios de administrador/root. Algunas funciones (escucha de puertos, operaciones de sistema) requieren privilegios elevados.",
|
|
"elevated": "Elevado",
|
|
"notElevated": "No elevado",
|
|
"request": "Solicitar privilegios de admin",
|
|
"requestSuccess": "Privilegios de admin solicitados, la aplicación se reiniciará",
|
|
"requestFailed": "Error al solicitar privilegios de admin",
|
|
"windowsHint": "Windows: Aparecerá un prompt UAC. Después de confirmar, la app se reiniciará como administrador.",
|
|
"macosHint": "macOS: Aparecerá un diálogo de autenticación del sistema. Ingrese la contraseña de admin para reiniciar.",
|
|
"linuxHint": "Linux: Usa pkexec para solicitar privilegios root. Ingrese la contraseña para reiniciar."
|
|
},
|
|
"mcp": {
|
|
"title": "Servicio MCP",
|
|
"description": "Gestionar el servicio HTTP MCP integrado para clientes MCP externos.",
|
|
"running": "En ejecución",
|
|
"stopped": "Detenido",
|
|
"noUrl": "Sin URL",
|
|
"host": "Host",
|
|
"port": "Puerto",
|
|
"start": "Iniciar",
|
|
"stop": "Detener",
|
|
"refresh": "Actualizar estado",
|
|
"hint": "Recomendado para vincular solo a 127.0.0.1; después del inicio, el punto final es http://host:port/mcp",
|
|
"hostRequired": "Por favor ingrese el host MCP",
|
|
"portInvalid": "Por favor ingrese un puerto válido (1-65535)",
|
|
"startSuccess": "Servidor MCP iniciado con éxito",
|
|
"startFailed": "Fallo al iniciar el servidor MCP",
|
|
"stopSuccess": "Servidor MCP detenido",
|
|
"stopFailed": "Fallo al detener el servidor MCP",
|
|
"startTimeout": "Tiempo de espera agotado al iniciar el servidor MCP, por favor inténtelo de nuevo",
|
|
"stopTimeout": "Tiempo de espera agotado al detener el servidor MCP, por favor inténtelo de nuevo"
|
|
},
|
|
"app": {
|
|
"title": "Controles de la aplicación",
|
|
"description": "Reiniciar o cerrar rápidamente la aplicación.",
|
|
"restart": "Reiniciar aplicación",
|
|
"quit": "Cerrar aplicación",
|
|
"confirmRestartTitle": "¿Confirmar el reinicio de la aplicación?",
|
|
"confirmRestartContent": "La aplicación se cerrará y reiniciará inmediatamente.",
|
|
"confirmQuitTitle": "¿Confirmar el cierre de la aplicación?",
|
|
"confirmQuitContent": "La aplicación se cerrará inmediatamente.",
|
|
"restartFailed": "Fallo al reiniciar",
|
|
"quitFailed": "Fallo al cerrar"
|
|
},
|
|
"about": {
|
|
"title": "Acerca de",
|
|
"appName": "Gestión de puntos educativos",
|
|
"version": "Versión",
|
|
"copyright": "Copyright",
|
|
"ipcStatus": "Estado IPC",
|
|
"ipcConnected": "Conectado",
|
|
"ipcDisconnected": "Desconectado (Preload fallido)",
|
|
"environment": "Entorno",
|
|
"toggleDevTools": "Activar/desactivar herramientas de desarrollo",
|
|
"license": "SecScore está bajo licencia GPL3.0",
|
|
"copyRightText": "CopyRight © 2025-{{year}} SECTL"
|
|
}
|
|
},
|
|
"sidebar": {
|
|
"home": "Inicio",
|
|
"students": "Gestión de estudiantes",
|
|
"score": "Operaciones de puntos",
|
|
"boards": "Tableros",
|
|
"leaderboard": "Clasificación",
|
|
"settlements": "Historial de liquidaciones",
|
|
"reasons": "Gestión de razones",
|
|
"autoScore": "Añadir puntos automáticamente",
|
|
"rewardExchange": "Intercambio de recompensas",
|
|
"rewardSettings": "Ajustes de recompensa",
|
|
"settings": "Configuraciones del sistema",
|
|
"remoteDb": "Base de datos remota",
|
|
"refreshStatus": "Actualizar estado",
|
|
"syncNow": "Sincronizar ahora",
|
|
"syncSuccess": "Sincronización exitosa",
|
|
"syncFailed": "Fallo en la sincronización",
|
|
"getDbStatusFailed": "Fallo al obtener el estado de la base de datos",
|
|
"notRemoteMode": "Modo base de datos remota no activado, por favor reinicie la aplicación",
|
|
"dbNotConnected": "Base de datos no conectada"
|
|
},
|
|
"auth": {
|
|
"unlock": "Desbloquear permiso",
|
|
"unlockHint": "Ingrese la contraseña de 6 dígitos: contraseña de administrador = acceso completo, contraseña de puntos = operaciones de puntos únicamente.",
|
|
"unlockButton": "Desbloquear",
|
|
"unlocked": "Permiso desbloqueado",
|
|
"logout": "Pasado a solo lectura",
|
|
"passwordPlaceholder": "ej. 123456",
|
|
"passwordError": "Contraseña incorrecta",
|
|
"enterPassword": "Ingresar contraseña",
|
|
"lock": "Bloquear"
|
|
},
|
|
"languages": {
|
|
"zh-CN": "简体中文",
|
|
"en-US": "English",
|
|
"ja-JP": "日本語",
|
|
"fr-FR": "Français",
|
|
"es-ES": "Español",
|
|
"ko-KR": "한국어",
|
|
"ru-RU": "Русский",
|
|
"de-DE": "Deutsch",
|
|
"pt-BR": "Português",
|
|
"ar-SA": "العربية"
|
|
},
|
|
"theme": {
|
|
"colorAndBackground": "Color y fondo",
|
|
"gradientLabels": {
|
|
"blue": "Azul fresco",
|
|
"pink": "Rosa suave",
|
|
"cyan": "Cian",
|
|
"purple": "Violeta"
|
|
},
|
|
"gradientDirections": {
|
|
"vertical": "Vertical",
|
|
"horizontal": "Horizontal",
|
|
"diagonal": "Diagonal"
|
|
},
|
|
"generate": "Generar",
|
|
"saved": "Guardado",
|
|
"saveFailed": "Fallo al guardar",
|
|
"mode": "Modo",
|
|
"myTheme": "Mi tema"
|
|
},
|
|
"permissions": {
|
|
"admin": "Permiso de administrador",
|
|
"points": "Permiso de puntos",
|
|
"view": "Solo lectura"
|
|
},
|
|
"home": {
|
|
"title": "Página de inicio de puntos de estudiantes",
|
|
"subtitle": "{{count}} estudiantes en total, haga clic en la tarjeta para realizar operaciones",
|
|
"searchPlaceholder": "Buscar nombre/pinyin...",
|
|
"sortBy": {
|
|
"alphabet": "Ordenar por nombre",
|
|
"surname": "Agrupar por apellido",
|
|
"group": "Ordenar por grupo",
|
|
"score": "Clasificación por puntos"
|
|
},
|
|
"layoutBy": {
|
|
"grouped": "Lista agrupada",
|
|
"squareGrid": "Cuadrícula cuadrada",
|
|
"largeAvatar": "Avatar grande"
|
|
},
|
|
"noStudents": "Sin datos de estudiantes, por favor añada en gestión de estudiantes",
|
|
"noMatch": "Sin estudiantes coincidentes encontrados",
|
|
"clearSearch": "Borrar búsqueda",
|
|
"points": "pts",
|
|
"currentScore": "Puntos actuales",
|
|
"quickOptions": "Opciones rápidas",
|
|
"adjustPoints": "Ajustar puntos",
|
|
"customPoints": "Puntos personalizados",
|
|
"customPointsHint": "Ingrese cualquier valor en el campo de entrada",
|
|
"reason": "Razón",
|
|
"reasonPlaceholder": "Ingrese la razón de la modificación de puntos (opcional)",
|
|
"preview": "Vista previa de la modificación",
|
|
"noReason": "(Sin razón)",
|
|
"ungrouped": "No agrupado",
|
|
"category": {
|
|
"others": "Otros"
|
|
},
|
|
"scoreAdded": "{{points}} puntos añadidos a {{name}}",
|
|
"scoreDeducted": "{{points}} puntos retirados a {{name}}",
|
|
"submitFailed": "Fallo al enviar",
|
|
"pleaseSelectPoints": "Por favor seleccione o ingrese puntos",
|
|
"reasonDefault": "{{action}} {{points}} puntos",
|
|
"studentCount": "{{count}} estudiantes",
|
|
"operationTitle": "Operación de puntos: {{name}}",
|
|
"submitOperation": "Enviar operación",
|
|
"operationTitleBatch": "Operación de puntos: {{count}} seleccionados",
|
|
"undoLastAction": "Deshacer",
|
|
"undoLastHint": "Deshacer último: {{name}} {{delta}}",
|
|
"undoUnavailable": "Sin operación de puntos para deshacer",
|
|
"undoLastSuccess": "Última operación de puntos deshecha",
|
|
"multiSelect": "Selección múltiple",
|
|
"batchMode": "Modo por lotes",
|
|
"selectAll": "Seleccionar todo",
|
|
"clearSelected": "Borrar selección",
|
|
"batchOperate": "Puntos por lotes",
|
|
"selected": "Seleccionado",
|
|
"selectedCount": "{{count}} seleccionados",
|
|
"batchSuccess": "Puntos enviados para {{count}} estudiantes",
|
|
"batchPartial": "{{success}}/{{total}} estudiantes enviados con éxito",
|
|
"selectStudentFirst": "Por favor primero seleccione uno o más estudiantes",
|
|
"addPoints": "Añadir puntos",
|
|
"deductPoints": "Retirar puntos",
|
|
"pointsChange": "Modificación de puntos",
|
|
"reasonLabel": "Razón: "
|
|
},
|
|
"students": {
|
|
"title": "Gestión de estudiantes",
|
|
"importList": "Importar lista",
|
|
"addStudent": "Añadir estudiante",
|
|
"name": "Nombre",
|
|
"group": "Grupo",
|
|
"avatar": "Avatar",
|
|
"currentScore": "Puntos actuales",
|
|
"tags": "Etiquetas",
|
|
"noTags": "Sin etiquetas",
|
|
"editTags": "Editar etiquetas",
|
|
"editAvatar": "Configurar avatar",
|
|
"deleteConfirm": "¿Confirmar la eliminación de este estudiante?",
|
|
"addTitle": "Añadir estudiante",
|
|
"addConfirm": "Añadir",
|
|
"namePlaceholder": "Ingrese el nombre del estudiante",
|
|
"groupPlaceholder": "Ingrese el nombre del grupo (opcional)",
|
|
"nameRequired": "Por favor ingrese el nombre",
|
|
"nameExists": "El nombre del estudiante ya existe",
|
|
"addSuccess": "Añadido con éxito",
|
|
"addFailed": "Fallo al añadir",
|
|
"deleteSuccess": "Eliminado con éxito",
|
|
"deleteFailed": "Fallo al eliminar",
|
|
"tagSaveSuccess": "Etiquetas guardadas con éxito",
|
|
"tagSaveFailed": "Fallo al guardar etiquetas",
|
|
"importTitle": "Importar lista",
|
|
"importTextHint": "Pegue varias líneas, un nombre de estudiante por línea",
|
|
"importTextPlaceholder": "Ejemplo:\nJuan\nMaría\nPablo",
|
|
"importByText": "Importar desde texto",
|
|
"importByXlsx": "Importar via xlsx",
|
|
"importByBanyou": "Importar desde BanYou",
|
|
"xlsxPreview": "Vista previa e importación xlsx",
|
|
"file": "Archivo",
|
|
"selectNameCol": "Haga clic en el encabezado para seleccionar la columna de nombre",
|
|
"previewRows": "Vista previa de las 50 primeras líneas",
|
|
"importConfirm": "Importar",
|
|
"importComplete": "Importación terminada: {{inserted}} añadidos, {{skipped}} ignorados",
|
|
"workerNotReady": "Worker no inicializado",
|
|
"parseXlsxFailed": "Fallo al analizar xlsx",
|
|
"selectNameColFirst": "Por favor primero seleccione la « Columna de nombre »",
|
|
"noNamesFound": "Sin nombres importables encontrados en la columna seleccionada",
|
|
"importFailed": "Fallo al importar",
|
|
"banyouCookieHint": "Después de iniciar sesión en BanYou Web, copie la cookie completa y péguela a continuación.",
|
|
"banyouCookiePlaceholder": "uid=...; accessToken=...; ...",
|
|
"banyouCookieRequired": "Por favor primero pegue la cookie",
|
|
"banyouFetch": "Obtener lista de clases",
|
|
"banyouFetchSuccess": "{{count}} clases obtenidas",
|
|
"banyouFetchFailed": "Fallo al obtener clases BanYou",
|
|
"banyouCreatedClasses": "Clases que he creado",
|
|
"banyouJoinedClasses": "Clases que he unido",
|
|
"banyouNoClasses": "Sin datos de clases por el momento"
|
|
},
|
|
"boards": {
|
|
"title": "Gestión de tableros",
|
|
"addBoard": "Añadir tablero",
|
|
"editBoard": "Editar tablero",
|
|
"deleteBoard": "Eliminar tablero",
|
|
"name": "Nombre del tablero",
|
|
"description": "Descripción",
|
|
"visibility": "Visibilidad",
|
|
"public": "Público",
|
|
"private": "Privado",
|
|
"studentsCount": "{{count}} estudiantes",
|
|
"noBoards": "Sin tableros por el momento",
|
|
"addTitle": "Añadir tablero",
|
|
"editTitle": "Editar tablero",
|
|
"namePlaceholder": "Ingrese el nombre del tablero",
|
|
"descriptionPlaceholder": "Ingrese la descripción",
|
|
"confirmDelete": "¿Confirmar la eliminación de este tablero?",
|
|
"saved": "Guardado",
|
|
"saveFailed": "Fallo al guardar",
|
|
"deleted": "Eliminado",
|
|
"deleteFailed": "Fallo al eliminar",
|
|
"boardExists": "El tablero ya existe"
|
|
},
|
|
"leaderboard": {
|
|
"title": "Clasificación",
|
|
"sortBy": "Ordenar por",
|
|
"score": "Puntos",
|
|
"name": "Nombre",
|
|
"rank": "Rango",
|
|
"student": "Estudiante",
|
|
"points": "Puntos",
|
|
"noData": "Sin datos de clasificación",
|
|
"topStudents": "Mejores estudiantes",
|
|
"rankChanged": "Rango: {{rank}}"
|
|
},
|
|
"settlements": {
|
|
"title": "Historial de liquidaciones",
|
|
"phase": "Fase",
|
|
"date": "Fecha",
|
|
"studentCount": "Número de estudiantes",
|
|
"totalPoints": "Puntos totales",
|
|
"actions": "Acciones",
|
|
"viewDetails": "Ver detalles",
|
|
"noSettlements": "Sin liquidaciones por el momento",
|
|
"phaseDetail": "Detalles de la fase {{phase}}",
|
|
"settlementDate": "Fecha de liquidación: {{date}}",
|
|
"totalStudents": "Total de estudiantes: {{count}}",
|
|
"totalPointsChange": "Modificación total de puntos: {{points}}"
|
|
},
|
|
"reasons": {
|
|
"title": "Gestión de razones",
|
|
"addReason": "Añadir razón",
|
|
"editReason": "Editar razón",
|
|
"name": "Nombre de la razón",
|
|
"points": "Puntos",
|
|
"positive": "Positivo",
|
|
"negative": "Negativo",
|
|
"noReasons": "Sin razones por el momento",
|
|
"addTitle": "Añadir razón",
|
|
"editTitle": "Editar razón",
|
|
"namePlaceholder": "Ingrese el nombre de la razón",
|
|
"pointsPlaceholder": "Ingrese los puntos",
|
|
"confirmDelete": "¿Confirmar la eliminación de esta razón?",
|
|
"saved": "Guardado",
|
|
"saveFailed": "Fallo al guardar",
|
|
"deleted": "Eliminado",
|
|
"deleteFailed": "Fallo al eliminar",
|
|
"reasonExists": "La razón ya existe"
|
|
},
|
|
"autoScore": {
|
|
"title": "Añadir puntos automáticamente",
|
|
"addRule": "Añadir regla",
|
|
"editRule": "Editar regla",
|
|
"deleteRule": "Eliminar regla",
|
|
"ruleName": "Nombre de la regla",
|
|
"trigger": "Disparador",
|
|
"action": "Acción",
|
|
"interval": "Intervalo",
|
|
"enabled": "Habilitado",
|
|
"noRules": "Sin reglas por el momento",
|
|
"addTitle": "Añadir regla",
|
|
"editTitle": "Editar regla",
|
|
"namePlaceholder": "Ingrese el nombre de la regla",
|
|
"triggerPlaceholder": "Seleccione el disparador",
|
|
"actionPlaceholder": "Seleccione la acción",
|
|
"intervalPlaceholder": "Seleccione el intervalo",
|
|
"confirmDelete": "¿Confirmar la eliminación de esta regla?",
|
|
"saved": "Guardado",
|
|
"saveFailed": "Fallo al guardar",
|
|
"deleted": "Eliminado",
|
|
"deleteFailed": "Fallo al eliminar",
|
|
"ruleExists": "La regla ya existe"
|
|
},
|
|
"rewardExchange": {
|
|
"title": "Intercambio de recompensas",
|
|
"rewards": "Recompensas",
|
|
"exchange": "Intercambiar",
|
|
"history": "Historial",
|
|
"noRewards": "Sin recompensas por el momento",
|
|
"noHistory": "Sin historial por el momento",
|
|
"rewardName": "Nombre de la recompensa",
|
|
"cost": "Costo",
|
|
"stock": "Stock",
|
|
"exchangeSuccess": "Intercambio exitoso",
|
|
"exchangeFailed": "Fallo al intercambiar",
|
|
"insufficientPoints": "Puntos insuficientes",
|
|
"outOfStock": "Agotado"
|
|
},
|
|
"rewardSettings": {
|
|
"title": "Ajustes de recompensa",
|
|
"addReward": "Añadir recompensa",
|
|
"editReward": "Editar recompensa",
|
|
"deleteReward": "Eliminar recompensa",
|
|
"name": "Nombre",
|
|
"cost": "Costo",
|
|
"stock": "Stock",
|
|
"noRewards": "Sin recompensas por el momento",
|
|
"addTitle": "Añadir recompensa",
|
|
"editTitle": "Editar recompensa",
|
|
"namePlaceholder": "Ingrese el nombre",
|
|
"costPlaceholder": "Ingrese el costo",
|
|
"stockPlaceholder": "Ingrese el stock",
|
|
"confirmDelete": "¿Confirmar la eliminación de esta recompensa?",
|
|
"saved": "Guardado",
|
|
"saveFailed": "Fallo al guardar",
|
|
"deleted": "Eliminado",
|
|
"deleteFailed": "Fallo al eliminar",
|
|
"rewardExists": "La recompensa ya existe"
|
|
},
|
|
"recovery": {
|
|
"title": "Frase de recuperación SecScore",
|
|
"saved": "He guardado",
|
|
"export": "Exportar archivo de texto",
|
|
"exportHint": "Se recomienda exportar y almacenar fuera de línea. En caso de pérdida, no podrá ser recuperado.",
|
|
"hint": "Se recomienda exportar y almacenar fuera de línea después de la exportación. En caso de pérdida, no podrá ser recuperado."
|
|
}
|
|
}
|