mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-10 10:36:35 +00:00
fix(i18n): localize sidebar, settings tabs, and settings section titles
Three connected bugs where the Label/SettingsSection APIs took a `String`, which routes through the StringProtocol overloads and bypasses localization entirely. Identified by the user after testing zh-Hans / de / fr — the sidebar menu items, Settings tab bar, and Settings section headers all remained English under any App Language override. - SidebarSection now exposes displayName: LocalizedStringResource; SidebarView builds Label via the Text/Image builders so the catalog key is actually used. - SettingsTab gets the same displayName treatment; the .tabItem Label builds through the Text/Image builder too. - SettingsSection.title changes from String → LocalizedStringKey so literal call sites (all ~20 of them) now extract into the catalog. Two call sites that were passing String variables (PlatformsView, CredentialPoolsView) are wrapped via LocalizedStringKey(...) — brand/provider names fall through to English as before. AuxiliaryTab's static task list gets a LocalizedStringKey column so its section titles extract too. This change newly extracts 65 previously-invisible section-title keys into the catalog; translations added for all six locales. Catalog: 575 → 644 source keys, each locale translated for 583 of them (brand names / protocol names / format-only keys intentionally fall through). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,11 +20,14 @@
|
||||
"%lld tools": "%lld herramientas",
|
||||
"30 Days": "30 días",
|
||||
"7 Days": "7 días",
|
||||
"90 Days": "90 días",
|
||||
"A QR code will appear below. Scan it with WhatsApp on your phone. The session is saved to ~/.hermes/platforms/whatsapp/ so you won't need to scan again after restarts.": "Aparecerá un código QR abajo. Escanéalo con WhatsApp en tu teléfono. La sesión se guarda en ~/.hermes/platforms/whatsapp/ para no tener que volver a escanearla tras reiniciar.",
|
||||
"API Key": "Clave de API",
|
||||
"API keys are never displayed in full. Scarf only shows the last 4 characters for identification. Full key values are stored by hermes in ~/.hermes/auth.json.": "Las claves de API nunca se muestran completas. Scarf solo muestra los últimos 4 caracteres para identificación. Los valores completos los guarda hermes en ~/.hermes/auth.json.",
|
||||
"Access Control": "Control de acceso",
|
||||
"Actions": "Acciones",
|
||||
"Active": "Activo",
|
||||
"Active Personality": "Personalidad activa",
|
||||
"Active profile": "Perfil activo",
|
||||
"Activity": "Actividad",
|
||||
"Activity Patterns": "Patrones de actividad",
|
||||
@@ -42,6 +45,7 @@
|
||||
"Add from Preset": "Añadir desde preajuste",
|
||||
"Add rotation credentials so hermes can failover between keys when one hits rate limits.": "Añade credenciales de rotación para que hermes pueda cambiar entre claves cuando una alcance el límite de tasa.",
|
||||
"Add your first command": "Añade tu primer comando",
|
||||
"Advanced": "Avanzado",
|
||||
"After approving in your browser, the provider shows a code. Paste it below and submit.": "Tras aprobar en tu navegador, el proveedor muestra un código. Pégalo abajo y envíalo.",
|
||||
"Agent": "Agent",
|
||||
"All": "Todos",
|
||||
@@ -49,25 +53,34 @@
|
||||
"All Sessions": "Todas las sesiones",
|
||||
"All Time": "Todo el tiempo",
|
||||
"All installed hub skills are up to date.": "Todas las habilidades instaladas desde el hub están al día.",
|
||||
"App Credentials": "Credenciales de la aplicación",
|
||||
"Approval": "Aprobación",
|
||||
"Approvals": "Aprobaciones",
|
||||
"Approve": "Aprobar",
|
||||
"Archive": "Archivar",
|
||||
"Args (one per line)": "Argumentos (uno por línea)",
|
||||
"Arguments": "Argumentos",
|
||||
"Assistant Message": "Mensaje del asistente",
|
||||
"Auth": "Auth",
|
||||
"Authentication": "Autenticación",
|
||||
"Authentication uses ssh-agent": "La autenticación usa ssh-agent",
|
||||
"Authorization Code": "Código de autorización",
|
||||
"Authorization URL": "URL de autorización",
|
||||
"Aux Models": "Modelos auxiliares",
|
||||
"Auxiliary tasks use separate, typically cheaper models. Leave Provider as `auto` to inherit the main provider.": "Las tareas auxiliares usan modelos separados, normalmente más baratos. Deja Proveedor en `auto` para heredar el proveedor principal.",
|
||||
"Back": "Atrás",
|
||||
"Back to Catalog": "Volver al catálogo",
|
||||
"Backend": "Backend",
|
||||
"Backup & Restore": "Copia de seguridad y restauración",
|
||||
"Backup Now": "Copia de seguridad ahora",
|
||||
"Becomes the key under mcp_servers: in config.yaml.": "Se convierte en la clave bajo mcp_servers: en config.yaml.",
|
||||
"Behavior": "Comportamiento",
|
||||
"Browse": "Examinar",
|
||||
"Browse Hub": "Examinar el hub",
|
||||
"Browse the Hub": "Examinar el hub",
|
||||
"Browse...": "Examinar...",
|
||||
"Browser": "Navegador",
|
||||
"Built-in Memory": "Memoria integrada",
|
||||
"By Day": "Por día",
|
||||
"By Hour": "Por hora",
|
||||
"Call timeout": "Tiempo de espera de llamada",
|
||||
@@ -81,6 +94,7 @@
|
||||
"Check for Updates": "Buscar actualizaciones",
|
||||
"Check for Updates…": "Buscar actualizaciones…",
|
||||
"Checking…": "Comprobando…",
|
||||
"Checkpoints": "Puntos de control",
|
||||
"Choose a cron job from the list": "Elige una tarea cron de la lista",
|
||||
"Choose a profile to inspect.": "Elige un perfil para inspeccionar.",
|
||||
"Choose a project from the sidebar to view its dashboard.": "Elige un proyecto en la barra lateral para ver su panel.",
|
||||
@@ -98,16 +112,21 @@
|
||||
"Close Window": "Cerrar ventana",
|
||||
"Code: %@": "Código: %@",
|
||||
"Command": "Comando",
|
||||
"Command Allowlist": "Lista de comandos permitidos",
|
||||
"Command looks destructive. Double-check before saving.": "El comando parece destructivo. Revísalo antes de guardar.",
|
||||
"Component": "Componente",
|
||||
"Compress": "Comprimir",
|
||||
"Compress Conversation": "Comprimir conversación",
|
||||
"Compress conversation (/compress)": "Comprimir conversación (/compress)",
|
||||
"Compression": "Compresión",
|
||||
"Config Diagnostics": "Diagnóstico de configuración",
|
||||
"Configure": "Configurar",
|
||||
"Connect timeout": "Tiempo de espera de conexión",
|
||||
"Connected": "Conectado",
|
||||
"Connected — can't read Hermes state": "Conectado — no se puede leer el estado de Hermes",
|
||||
"Connection": "Conexión",
|
||||
"Container Limits": "Límites del contenedor",
|
||||
"Context & Compression": "Contexto y compresión",
|
||||
"Continue Last Session": "Continuar última sesión",
|
||||
"Copied": "Copiado",
|
||||
"Copy": "Copiar",
|
||||
@@ -132,21 +151,26 @@
|
||||
"Cron Jobs": "Tareas cron",
|
||||
"Current: %@": "Actual: %@",
|
||||
"Custom…": "Personalizado…",
|
||||
"Daemon Endpoint": "Endpoint del demonio",
|
||||
"Daemon running": "Demonio en ejecución",
|
||||
"Dashboard": "Panel",
|
||||
"Default": "Predeterminado",
|
||||
"Default: ~/.hermes": "Predeterminado: ~/.hermes",
|
||||
"Defaults to ~/.ssh/config or current user": "Por defecto ~/.ssh/config o el usuario actual",
|
||||
"Defined Personalities": "Personalidades definidas",
|
||||
"Delegation": "Delegación",
|
||||
"Delete": "Eliminar",
|
||||
"Delete %@?": "¿Eliminar %@?",
|
||||
"Delete Session?": "¿Eliminar sesión?",
|
||||
"Delete profile '%@'?": "¿Eliminar perfil '%@'?",
|
||||
"Delete...": "Eliminar...",
|
||||
"Deliver: %@": "Entregar: %@",
|
||||
"Details": "Detalles",
|
||||
"Diagnostic Output": "Salida de diagnóstico",
|
||||
"Diagnostics": "Diagnósticos",
|
||||
"Disable": "Desactivar",
|
||||
"Disabled": "Desactivado",
|
||||
"Display": "Pantalla",
|
||||
"Docs": "Docs",
|
||||
"Done": "Listo",
|
||||
"Edit": "Editar",
|
||||
@@ -160,10 +184,13 @@
|
||||
"Enable 2FA on your email account and generate an app password. Regular account passwords will fail. Always set allowed senders — otherwise anyone knowing the address can message the agent.": "Activa 2FA en tu cuenta de correo y genera una contraseña de aplicación. Las contraseñas normales no funcionarán. Establece siempre remitentes permitidos — de lo contrario, cualquiera que conozca la dirección podrá enviar mensajes al agente.",
|
||||
"Enable the webhook platform to accept event-driven agent triggers. The HMAC secret is used as a fallback when individual routes don't provide their own.": "Activa la plataforma de webhooks para aceptar disparadores de agente dirigidos por eventos. El secreto HMAC se usa como respaldo cuando las rutas individuales no aportan el suyo.",
|
||||
"Enabled": "Activado",
|
||||
"End-to-End Encryption (experimental)": "Cifrado de extremo a extremo (experimental)",
|
||||
"Entity Filters (config.yaml only)": "Filtros de entidades (solo config.yaml)",
|
||||
"Env vars, headers, and tool filters can be edited after the server is added.": "Las variables de entorno, cabeceras y filtros de herramientas se pueden editar después de añadir el servidor.",
|
||||
"Environment Variables": "Variables de entorno",
|
||||
"Error": "Error",
|
||||
"Errors": "Errores",
|
||||
"Event Filters": "Filtros de eventos",
|
||||
"Exclude": "Excluir",
|
||||
"Execute": "Ejecutar",
|
||||
"Expected at %@": "Esperado en %@",
|
||||
@@ -172,18 +199,23 @@
|
||||
"Export…": "Exportar…",
|
||||
"Expose prompts": "Exponer prompts",
|
||||
"Expose resources": "Exponer recursos",
|
||||
"External Provider": "Proveedor externo",
|
||||
"Feedback": "Comentarios",
|
||||
"Fetch": "Obtener",
|
||||
"Files": "Archivos",
|
||||
"Filter logs...": "Filtrar registros...",
|
||||
"Filter servers...": "Filtrar servidores...",
|
||||
"Filter skills...": "Filtrar habilidades...",
|
||||
"Filter to session %@": "Filtrar a la sesión %@",
|
||||
"Flush Memories": "Vaciar memorias",
|
||||
"Focus topic (optional)": "Tema de enfoque (opcional)",
|
||||
"Full copy of active profile (all state)": "Copia completa del perfil activo (todo el estado)",
|
||||
"Gateway": "Gateway",
|
||||
"Gateway Running": "Gateway en ejecución",
|
||||
"Gateway Stopped": "Gateway detenido",
|
||||
"Gateway restart required": "Se requiere reiniciar el gateway",
|
||||
"General": "General",
|
||||
"Global Settings": "Ajustes globales",
|
||||
"Header": "Cabecera",
|
||||
"Headers": "Cabeceras",
|
||||
"Health": "Salud",
|
||||
@@ -195,7 +227,10 @@
|
||||
"Hide": "Ocultar",
|
||||
"Hide Output": "Ocultar salida",
|
||||
"Hide details": "Ocultar detalles",
|
||||
"Home Channel": "Canal principal",
|
||||
"Homeserver": "Homeserver",
|
||||
"Host key changed": "Clave de host cambiada",
|
||||
"Human Delay": "Retraso humano",
|
||||
"ID: %@": "ID: %@",
|
||||
"If this is the first connection, ensure your key is loaded with `ssh-add` and that the remote accepts it.": "Si es la primera conexión, asegúrate de que tu clave esté cargada con `ssh-add` y de que el remoto la acepte.",
|
||||
"If you trust the change, remove the stale entry and reconnect:": "Si confías en el cambio, elimina la entrada obsoleta y reconéctate:",
|
||||
@@ -217,6 +252,7 @@
|
||||
"Last probe: %@": "Última comprobación: %@",
|
||||
"Last run: %@": "Última ejecución: %@",
|
||||
"Last updated: %@": "Última actualización: %@",
|
||||
"Layout": "Diseño",
|
||||
"Leave blank to infer from the model ID's prefix (\"openai/...\" → openai).": "Déjalo vacío para deducirlo del prefijo del ID del modelo (\"openai/...\" → openai).",
|
||||
"Leave blank unless Hermes is installed at a non-default path (systemd services often live at /var/lib/hermes/.hermes; Docker sidecars vary). Test Connection auto-suggests a value when it detects one of the known alternates.": "Déjalo vacío salvo que Hermes esté instalado en una ruta no predeterminada (los servicios systemd suelen estar en /var/lib/hermes/.hermes; los sidecars Docker varían). Probar conexión sugiere un valor automáticamente si detecta una alternativa conocida.",
|
||||
"Level": "Nivel",
|
||||
@@ -227,7 +263,9 @@
|
||||
"Loading session…": "Cargando sesión…",
|
||||
"Local": "Local",
|
||||
"Local (stdio)": "Local (stdio)",
|
||||
"Locale": "Configuración regional",
|
||||
"Log File": "Archivo de registro",
|
||||
"Logging": "Registro",
|
||||
"Logs": "Registros",
|
||||
"MCP Servers": "Servidores MCP",
|
||||
"MCP Servers (%lld)": "Servidores MCP (%lld)",
|
||||
@@ -241,11 +279,14 @@
|
||||
"Messages will appear here as the conversation progresses.": "Los mensajes aparecerán aquí a medida que avance la conversación.",
|
||||
"Migrate": "Migrar",
|
||||
"Missing required config:": "Falta configuración requerida:",
|
||||
"Modal": "Modal",
|
||||
"Model": "Modelo",
|
||||
"Model ID": "ID del modelo",
|
||||
"Models": "Modelos",
|
||||
"Monitor": "Monitor",
|
||||
"Name": "Nombre",
|
||||
"Name (no leading slash)": "Nombre (sin barra inicial)",
|
||||
"Network": "Red",
|
||||
"New Session": "Nueva sesión",
|
||||
"New Webhook Subscription": "Nueva suscripción de webhook",
|
||||
"New name for '%@'": "Nuevo nombre para '%@'",
|
||||
@@ -283,6 +324,7 @@
|
||||
"None": "Ninguno",
|
||||
"Notable Sessions": "Sesiones destacadas",
|
||||
"OAuth login for %@": "Inicio de sesión OAuth para %@",
|
||||
"OK": "Aceptar",
|
||||
"Open BotFather": "Abrir BotFather",
|
||||
"Open Developer Portal": "Abrir Developer Portal",
|
||||
"Open Local": "Abrir local",
|
||||
@@ -294,6 +336,7 @@
|
||||
"Open in Editor": "Abrir en el editor",
|
||||
"Open in new window": "Abrir en nueva ventana",
|
||||
"Open session": "Abrir sesión",
|
||||
"Optional": "Opcional",
|
||||
"Optional — defaults to hostname": "Opcional — por defecto el nombre de host",
|
||||
"Optionally focus the summary on a specific topic. Leave blank to compress evenly.": "Opcionalmente, enfoca el resumen en un tema específico. Déjalo vacío para comprimir uniformemente.",
|
||||
"Other": "Otro",
|
||||
@@ -304,11 +347,13 @@
|
||||
"Pair Device": "Emparejar dispositivo",
|
||||
"Paired Users": "Usuarios emparejados",
|
||||
"Paste code here…": "Pega el código aquí…",
|
||||
"Paths": "Rutas",
|
||||
"Pause": "Pausar",
|
||||
"Pending Approvals": "Aprobaciones pendientes",
|
||||
"Per-route subscriptions (events, prompt template, delivery target) are managed in the Webhooks sidebar — not here. This panel only controls whether the webhook platform is listening at all.": "Las suscripciones por ruta (eventos, plantilla de prompt, destino de entrega) se gestionan en la barra lateral de Webhooks — no aquí. Este panel solo controla si la plataforma de webhooks está escuchando.",
|
||||
"Period": "Período",
|
||||
"Personalities": "Personalidades",
|
||||
"Personality": "Personalidad",
|
||||
"Pick an MCP server to add.": "Elige un servidor MCP para añadir.",
|
||||
"Pick one from the list, or add a new server from the toolbar.": "Elige uno de la lista o añade un nuevo servidor desde la barra de herramientas.",
|
||||
"Platforms": "Plataformas",
|
||||
@@ -327,6 +372,7 @@
|
||||
"Provider": "Proveedor",
|
||||
"Push to Talk": "Pulsar para hablar",
|
||||
"Push to talk (Ctrl+B)": "Pulsar para hablar (Ctrl+B)",
|
||||
"Push-to-Talk": "Pulsar para hablar",
|
||||
"Quick Commands": "Comandos rápidos",
|
||||
"Quick commands are shell shortcuts hermes exposes in chat as `/command_name`. They live under `quick_commands:` in config.yaml.": "Los comandos rápidos son atajos de shell que hermes expone en el chat como `/command_name`. Viven bajo `quick_commands:` en config.yaml.",
|
||||
"Quit Scarf": "Salir de Scarf",
|
||||
@@ -338,6 +384,7 @@
|
||||
"Recent Sessions": "Sesiones recientes",
|
||||
"Reconnect": "Reconectar",
|
||||
"Recording…": "Grabando…",
|
||||
"Redaction": "Censura",
|
||||
"Refresh": "Actualizar",
|
||||
"Reload": "Recargar",
|
||||
"Remote (HTTP)": "Remoto (HTTP)",
|
||||
@@ -353,6 +400,8 @@
|
||||
"Rename Profile": "Renombrar perfil",
|
||||
"Rename Session": "Renombrar sesión",
|
||||
"Rename...": "Renombrar...",
|
||||
"Required": "Obligatorio",
|
||||
"Required Tokens": "Tokens requeridos",
|
||||
"Requires: %@": "Requiere: %@",
|
||||
"Reset Cooldowns": "Restablecer enfriamientos",
|
||||
"Restart": "Reiniciar",
|
||||
@@ -391,6 +440,7 @@
|
||||
"Search or browse skills published to registries like skills.sh, GitHub, and the official hub.": "Busca o examina habilidades publicadas en registros como skills.sh, GitHub y el hub oficial.",
|
||||
"Search registries": "Buscar en registros",
|
||||
"Search…": "Buscar…",
|
||||
"Security": "Seguridad",
|
||||
"Select": "Seleccionar",
|
||||
"Select Model": "Seleccionar modelo",
|
||||
"Select a Job": "Seleccionar una tarea",
|
||||
@@ -402,12 +452,14 @@
|
||||
"Select an MCP Server": "Seleccionar un servidor MCP",
|
||||
"Send message (Enter)": "Enviar mensaje (Intro)",
|
||||
"Series": "Serie",
|
||||
"Server": "Servidor",
|
||||
"Server No Longer Exists": "El servidor ya no existe",
|
||||
"Server name": "Nombre del servidor",
|
||||
"Servers": "Servidores",
|
||||
"Service": "Servicio",
|
||||
"Service definition stale": "Definición de servicio obsoleta",
|
||||
"Session": "Sesión",
|
||||
"Session Search": "Búsqueda de sesiones",
|
||||
"Session title": "Título de sesión",
|
||||
"Sessions": "Sesiones",
|
||||
"Settings": "Ajustes",
|
||||
@@ -424,7 +476,9 @@
|
||||
"Site": "Sitio",
|
||||
"Skills": "Habilidades",
|
||||
"Skills (%lld)": "Habilidades (%lld)",
|
||||
"Skills Hub": "Hub de habilidades",
|
||||
"Source": "Origen",
|
||||
"Speech-to-Text": "Voz a texto",
|
||||
"Start": "Iniciar",
|
||||
"Start Daemon": "Iniciar demonio",
|
||||
"Start Hermes": "Iniciar Hermes",
|
||||
@@ -449,6 +503,7 @@
|
||||
"Test Connection": "Probar conexión",
|
||||
"Test failed": "Prueba fallida",
|
||||
"Test passed": "Prueba superada",
|
||||
"Text-to-Speech": "Texto a voz",
|
||||
"The agent hasn't advertised any slash commands yet. Keep typing to send as a message, or press Esc.": "El agente aún no ha anunciado comandos slash. Sigue escribiendo para enviar como mensaje, o pulsa Esc.",
|
||||
"The remote's SSH fingerprint no longer matches what your `~/.ssh/known_hosts` file expected. This usually means the remote was reinstalled — or, less commonly, that someone is intercepting the connection.": "La huella SSH del remoto ya no coincide con lo que tu archivo `~/.ssh/known_hosts` esperaba. Normalmente significa que el remoto se reinstaló — o, con menos frecuencia, que alguien intercepta la conexión.",
|
||||
"The server this window was opened with has been removed from your registry.": "El servidor con el que se abrió esta ventana se ha eliminado de tu registro.",
|
||||
@@ -465,14 +520,17 @@
|
||||
"This will permanently delete the session and all its messages.": "Esto eliminará permanentemente la sesión y todos sus mensajes.",
|
||||
"Timeout: %llds (%@)": "Tiempo de espera: %1$lld s (%2$@)",
|
||||
"Timeouts": "Tiempos de espera",
|
||||
"Tirith Sandbox": "Sandbox Tirith",
|
||||
"To skip the passphrase prompt at every reboot, add `--apple-use-keychain` to cache it in macOS Keychain.": "Para evitar que pida la frase de contraseña en cada reinicio, añade `--apple-use-keychain` para almacenarla en el llavero de macOS.",
|
||||
"Toggle text-to-speech (/voice tts)": "Alternar texto a voz (/voice tts)",
|
||||
"Toggle voice mode (/voice)": "Alternar modo de voz (/voice)",
|
||||
"Token on disk. Clear to re-authenticate next time the gateway connects.": "Token en disco. Bórralo para que se vuelva a autenticar en la próxima conexión del gateway.",
|
||||
"Tool Approval Required": "Se requiere aprobación de herramienta",
|
||||
"Tool Filters": "Filtros de herramientas",
|
||||
"Tool Progress": "Progreso de herramientas",
|
||||
"Tools": "Herramientas",
|
||||
"Top Tools": "Herramientas principales",
|
||||
"Turns & Reasoning": "Turnos y razonamiento",
|
||||
"Uninstall": "Desinstalar",
|
||||
"Unknown: %@": "Desconocido: %@",
|
||||
"Update": "Actualizar",
|
||||
@@ -489,14 +547,21 @@
|
||||
"Used as the YAML key. Lowercase, no spaces.": "Se usa como clave YAML. Minúsculas, sin espacios.",
|
||||
"View": "Ver",
|
||||
"View All": "Ver todo",
|
||||
"Vision": "Visión",
|
||||
"Voice": "Voz",
|
||||
"Voice Off": "Voz desactivada",
|
||||
"Voice On": "Voz activada",
|
||||
"Waiting for authorization URL…": "Esperando URL de autorización…",
|
||||
"Waiting for first probe": "Esperando primera comprobación",
|
||||
"Waiting for hermes to prompt for the code…": "Esperando a que hermes pida el código…",
|
||||
"Web Extract": "Extracción web",
|
||||
"Webhook (advanced)": "Webhook (avanzado)",
|
||||
"Webhook (hermes side)": "Webhook (lado hermes)",
|
||||
"Webhook Security": "Seguridad de webhook",
|
||||
"Webhook platform not enabled": "Plataforma de webhooks no activada",
|
||||
"Webhooks": "Webhooks",
|
||||
"Webhooks let external services trigger agent responses. Each subscription gets its own URL endpoint.": "Los webhooks permiten que servicios externos disparen respuestas del agente. Cada suscripción obtiene su propio endpoint de URL.",
|
||||
"Website Blocklist": "Lista de bloqueo de sitios",
|
||||
"WhatsApp uses the Baileys library to emulate a WhatsApp Web session. Pair this Mac as a linked device by running the pairing wizard and scanning the QR code with your phone (Settings → Linked Devices → Link a Device).": "WhatsApp usa la biblioteca Baileys para emular una sesión de WhatsApp Web. Empareja este Mac como dispositivo vinculado ejecutando el asistente y escaneando el código QR con tu teléfono (Ajustes → Dispositivos vinculados → Vincular dispositivo).",
|
||||
"Working": "Trabajando",
|
||||
"e.g. anthropic": "p. ej. anthropic",
|
||||
|
||||
Reference in New Issue
Block a user