feat(frontend): i18n expansion, admin/profile i18n, grid/list view fix, empty state

- Add 5 new locales (hi, ar, ru, ja, ko) — now 14 total
- Admin panel: 117 i18n keys, confirm modal, animated tabs, no inline handlers
- Profile page: 58 i18n keys with data-i18n attributes
- Fix i18n safeT() shadowing bug and translationsLoaded timing
- Fix grid/list view: list header no longer shows in grid mode on login
- Fix classList.toggle hidden sync for view switching across all nav functions
- Revert .hidden important that broke login page rendering
- Add files empty state (no_files + empty_hint) with translations
- Fix language selector dropdown scroll and styling
- Fix admin panel scroll with sticky tabs
This commit is contained in:
Diocrafts
2026-03-09 00:08:34 +01:00
parent f409a9edd7
commit df336da679
43 changed files with 6645 additions and 2043 deletions
+183 -3
View File
@@ -182,6 +182,7 @@
"size": "Tamaño",
"modified": "Modificado",
"no_files": "No hay archivos en esta carpeta",
"empty_hint": "Sube archivos o crea carpetas para comenzar",
"loading": "Cargando archivos…",
"view_grid": "Vista de cuadrícula",
"view_list": "Vista de lista",
@@ -320,8 +321,8 @@
"zoom_reset": "Restablecer zoom"
},
"language_selector": {
"title": "Bienvenido a OxiCloud",
"subtitle": "Por favor, selecciona tu idioma",
"title": "¡Bienvenido!",
"subtitle": "Selecciona tu idioma para continuar",
"continue": "Continuar",
"languages": {
"en": "English",
@@ -370,5 +371,184 @@
"move_title": "Mover {{count}} elemento(s)",
"add_favorites": "Añadir a favoritos",
"move_copy": "Mover o copiar"
},
"admin": {
"page_title": "Panel de Administración",
"back_to_app": "Volver a OxiCloud",
"loading": "Cargando…",
"access_denied": "Acceso Denegado",
"access_denied_desc": "Se requieren privilegios de administrador para acceder a este panel.",
"sign_in": "Iniciar sesión",
"tab_dashboard": "Panel",
"tab_users": "Usuarios",
"tab_oidc": "SSO / OIDC",
"total_users": "Usuarios Totales",
"active_users": "Usuarios Activos",
"admins": "Administradores",
"version": "Versión",
"storage_overview": "Resumen de Almacenamiento",
"used": "Usado",
"total_quota": "Cuota Total",
"usage_pct": "Uso %",
"users_over_80": "Usuarios >80% cuota",
"users_over_quota": "Usuarios sobre cuota",
"system": "Sistema",
"auth_label": "Auth",
"oidc_label": "OIDC",
"quotas_label": "Cuotas",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"active": "Activo",
"off": "Inactivo",
"allow_registration": "Permitir registro público",
"registration_warning": "El registro público está deshabilitado. Solo los administradores pueden crear nuevos usuarios.",
"user_management": "Gestión de Usuarios",
"create_user": "Crear Usuario",
"col_user": "Usuario",
"col_role": "Rol",
"col_auth": "Auth",
"col_status": "Estado",
"col_storage": "Almacenamiento",
"col_last_login": "Último Acceso",
"col_actions": "Acciones",
"loading_users": "Cargando usuarios…",
"failed_load_users": "Error al cargar usuarios",
"no_users_found": "No se encontraron usuarios",
"showing_users": "Mostrando {{from}}-{{to}} de {{total}}",
"prev": "Anterior",
"next": "Siguiente",
"inactive": "Inactivo",
"you_badge": "(tú)",
"local": "Local",
"never": "Nunca",
"just_now": "Ahora mismo",
"minutes_ago": "hace {{n}}m",
"hours_ago": "hace {{n}}h",
"days_ago": "hace {{n}}d",
"edit_quota_title": "Editar cuota",
"reset_password_title": "Restablecer contraseña",
"toggle_role_title": "Cambiar rol",
"deactivate_title": "Desactivar",
"activate_title": "Activar",
"delete_title": "Eliminar",
"sso_title": "Inicio de Sesión Único (OIDC / SSO)",
"enable_sso": "Habilitar autenticación SSO",
"provider_name": "Nombre del Proveedor",
"issuer_url": "URL del Emisor",
"issuer_url_hint": "URL del emisor OpenID Connect de tu proveedor de identidad",
"auto_discover": "Auto-descubrir",
"discovering": "Descubriendo…",
"client_id": "Client ID",
"client_secret": "Client Secret",
"client_secret_placeholder": "Dejar vacío para mantener el valor actual",
"secret_configured": "Ya hay un client secret configurado",
"callback_url": "URL de Callback",
"callback_url_hint": "(registrar en tu IdP)",
"advanced_settings": "Configuración Avanzada",
"scopes": "Scopes",
"auto_provision": "Auto-provisionar usuarios en el primer inicio de sesión",
"admin_groups": "Grupos de Admin",
"admin_groups_hint": "Nombres de grupos OIDC separados por comas que mapean al rol de admin",
"disable_password": "Desactivar inicio de sesión con contraseña (solo OIDC)",
"password_warning": "¡Esto impedirá TODOS los inicios de sesión con contraseña!",
"test_btn": "Probar",
"save_btn": "Guardar",
"saving": "Guardando…",
"settings_saved": "Configuración guardada — OIDC ahora está {{status}}",
"quota_modal_title": "Actualizar Cuota de Almacenamiento",
"quota_user_label": "Usuario:",
"new_quota": "Nueva Cuota",
"quota_unlimited_hint": "Establecer 0 para ilimitado",
"cancel": "Cancelar",
"create_user_title": "Crear Nuevo Usuario",
"username_label": "Nombre de usuario",
"username_placeholder": "juanperez",
"username_hint": "3–32 caracteres",
"password_label": "Contraseña",
"password_placeholder": "Mín 8 caracteres",
"email_label": "Correo",
"email_optional": "(opcional)",
"email_placeholder": "usuario@ejemplo.com (auto-generado si vacío)",
"role_label": "Rol",
"role_user": "Usuario",
"role_admin": "Admin",
"quota_label": "Cuota",
"creating": "Creando…",
"reset_pw_title": "Restablecer Contraseña",
"new_password_label": "Nueva Contraseña",
"resetting": "Restableciendo…",
"reset_btn": "Restablecer",
"confirm_role_change": "¿Cambiar rol a {{role}}?",
"confirm_deactivate": "¿Estás seguro de que quieres desactivar este usuario?",
"confirm_activate": "¿Estás seguro de que quieres activar este usuario?",
"confirm_delete_user": "¿ELIMINAR usuario \"{{name}}\"? ¡Esto no se puede deshacer!",
"confirm_action": "Confirmar Acción",
"confirm_yes": "Confirmar",
"confirm_no": "Cancelar",
"error_username_short": "El nombre de usuario debe tener al menos 3 caracteres",
"error_password_short": "La contraseña debe tener al menos 8 caracteres",
"error_generic": "Error",
"error_network": "Error de red: {{message}}",
"error_create_user": "Error al crear usuario"
},
"profile": {
"page_title": "Perfil",
"back_to_app": "Volver a OxiCloud",
"loading": "Cargando…",
"not_authenticated": "No Autenticado",
"not_authenticated_desc": "Inicia sesión para ver tu perfil.",
"sign_in": "Iniciar sesión",
"role_admin": "Administrador",
"role_user": "Usuario",
"account_details": "Detalles de la Cuenta",
"username": "Nombre de usuario",
"email": "Correo electrónico",
"role": "Rol",
"last_login": "Último acceso",
"storage": "Almacenamiento",
"used": "Usado",
"quota": "Cuota",
"usage": "Uso",
"unlimited": "Ilimitado",
"app_passwords": "Contraseñas de Aplicación",
"app_pw_desc": "Genera contraseñas para clientes WebDAV, CalDAV y CardDAV. Cada contraseña se muestra solo una vez.",
"app_pw_label_placeholder": "Etiqueta (ej. Thunderbird, macOS)",
"generate": "Generar",
"generating": "Generando…",
"new_password_for": "Nueva contraseña para",
"copy_warning": "Copia esta contraseña ahora. No podrás verla de nuevo.",
"copy_to_clipboard": "Copiar al portapapeles",
"col_label": "Etiqueta",
"col_created": "Creado",
"col_last_used": "Último uso",
"col_status": "Estado",
"active": "Activa",
"revoked": "Revocada",
"revoke_title": "Revocar",
"no_app_passwords": "Aún no hay contraseñas de aplicación.",
"client_sessions": "Sesiones de cliente",
"client_sessions_desc": "Generadas automáticamente al conectar un cliente compatible con Nextcloud.",
"col_client": "Cliente",
"never": "Nunca",
"just_now": "Ahora mismo",
"minutes_ago": "hace {{n}} min",
"hours_ago": "hace {{n}}h",
"days_ago": "hace {{n}} días",
"change_password": "Cambiar Contraseña",
"current_password": "Contraseña Actual",
"new_password": "Nueva Contraseña",
"min_8_chars": "Al menos 8 caracteres",
"confirm_password": "Confirmar Nueva Contraseña",
"update_password": "Actualizar Contraseña",
"updating": "Actualizando…",
"password_updated": "Contraseña actualizada correctamente",
"passwords_no_match": "Las contraseñas no coinciden",
"password_too_short": "La contraseña debe tener al menos 8 caracteres",
"password_change_failed": "Error al cambiar la contraseña",
"error_network": "Error de red: {{message}}",
"error_label_required": "Introduce una etiqueta",
"error_create_pw": "Error al crear contraseña de aplicación",
"confirm_revoke": "¿Revocar contraseña \"{{label}}\"? Los clientes que la usen dejarán de funcionar.",
"error_revoke": "Error al revocar contraseña"
}
}
}