arbret/frontend/locales/es/admin.json
counterweight d838d1be96
Step 4: Add admin UI page for pricing configuration
- Add pricing API functions to admin.ts
- Create admin pricing page with form and validation
- Add MANAGE_PRICING permission to auth context
- Add pricing to admin navigation
- Add translations for pricing page (en, ca, es)
- Update PageLayout and Header types for new page
2025-12-26 20:17:48 +01:00

139 lines
4.8 KiB
JSON

{
"invites": {
"title": "Invitaciones",
"createInvite": "Crear invitación",
"godfatherLabel": "Padrino (usuario que puede compartir esta invitación)",
"selectUser": "Seleccionar un usuario...",
"noUsersHint": "Aún no hay usuarios cargados. Crea al menos una invitación para poblar la lista.",
"creating": "Creando...",
"allInvites": "Todas las invitaciones",
"allStatuses": "Todos los estados",
"statusReady": "Lista",
"statusSpent": "Usada",
"statusRevoked": "Revocada",
"invitesCount": "{count} invitaciones",
"tableHeaders": {
"code": "Código",
"godfather": "Padrino",
"status": "Estado",
"usedBy": "Usada Por",
"created": "Creada",
"actions": "Acciones"
},
"noInvites": "Aún no hay invitaciones",
"revoke": "Revocar",
"errors": {
"loadFailed": "Error al cargar invitaciones",
"revokeFailed": "Error al revocar invitación"
}
},
"trades": {
"title": "Intercambios",
"subtitle": "Gestionar intercambios de Bitcoin",
"tabs": {
"upcoming": "Próximos ({count})",
"history": "Historial ({count})"
},
"filters": {
"allStatuses": "Todos los estados",
"completed": "Completado",
"noShow": "No presentado",
"userCancelled": "Cancelado por usuario",
"adminCancelled": "Cancelado por admin"
},
"searchPlaceholder": "Buscar por email...",
"loading": "Cargando intercambios...",
"emptyStates": {
"upcoming": "No hay intercambios próximos.",
"past": "No se encontraron intercambios."
},
"tradeDetails": {
"rate": "Tasa:",
"market": "Mercado:",
"sellBtc": "VENDER BTC",
"buyBtc": "COMPRAR BTC",
"sendVia": "Enviar vía {method}",
"receiveVia": "Recibir vía {method}",
"onchain": "Onchain",
"lightning": "Lightning",
"signal": "Signal: {value}"
},
"actions": {
"complete": "Completar",
"noShow": "No presentado",
"cancel": "Cancelar"
},
"errors": {
"loadUpcomingFailed": "Error al cargar intercambios próximos",
"loadPastFailed": "Error al cargar historial de intercambios",
"actionFailed": "Error al {action} intercambio"
}
},
"priceHistory": {
"title": "Historial de precios de Bitcoin",
"recordsCount": "{count} registros",
"refresh": "Actualizar",
"fetching": "Obteniendo...",
"fetchNow": "Obtener ahora",
"tableHeaders": {
"source": "Fuente",
"pair": "Par",
"price": "Precio",
"timestamp": "Fecha y hora"
},
"loading": "Cargando...",
"emptyState": "Aún no hay registros de precios. Haz clic en \"Obtener Ahora\" para obtener el precio actual."
},
"availability": {
"title": "Disponibilidad",
"subtitle": "Configurar tus franjas horarias disponibles para los próximos {days} días",
"copyMode": {
"hint": "Selecciona los días a los que copiar, luego haz clic en Copiar",
"copyTo": "Copiar a {count} día(s)",
"copying": "Copiando...",
"cancel": "Cancelar"
},
"modal": {
"title": "Editar franjas horarias",
"startTime": "Hora de inicio",
"endTime": "Hora de fin",
"addSlot": "Añadir franja",
"removeSlot": "Eliminar",
"save": "Guardar",
"clear": "Limpiar",
"close": "Cerrar",
"noAvailability": "Sin disponibilidad"
},
"errors": {
"saveFailed": "Error al guardar",
"clearFailed": "Error al limpiar",
"copyFailed": "Error al copiar"
}
},
"pricing": {
"title": "Configuración de Precios",
"subtitle": "Configura los precios de prima y los límites de importe de las operaciones",
"premiumSettings": "Configuración de Prima",
"premiumBuy": "Prima para COMPRAR",
"premiumSell": "Prima para VENDER",
"smallTradeThreshold": "Umbral de Operaciones Pequeñas",
"smallTradeExtraPremium": "Prima Extra para Operaciones Pequeñas",
"tradeLimitsBuy": "Límites de Importe de Operaciones (COMPRAR)",
"tradeLimitsSell": "Límites de Importe de Operaciones (VENDER)",
"minAmount": "Importe Mínimo",
"maxAmount": "Importe Máximo",
"save": "Guardar Cambios",
"success": "Configuración de precios guardada correctamente",
"confirmSave": "¿Estás seguro de que quieres guardar estos cambios de precios? Esto afectará todas las nuevas operaciones inmediatamente.",
"validation": {
"premiumRange": "La prima debe estar entre -100% y 100%",
"positive": "El importe debe ser positivo",
"minMaxBuy": "El mínimo debe ser menor que el máximo para COMPRAR",
"minMaxSell": "El mínimo debe ser menor que el máximo para VENDER"
},
"errors": {
"loadFailed": "Error al cargar la configuración de precios",
"saveFailed": "Error al guardar la configuración de precios"
}
}
}