/** * Batch 3 — Sasquatch AI panel translations (`sasquatchUi.*`). * * Filled by the Sasquatch translation pass; keys must exist in BOTH languages. * * NOT translated here (deliberately): the LLM system prompt / language * directive, the static FAQ answer bodies and the locally-formatted chat * responses — those are AI/conversational content, not UI chrome. */ const sasquatchUi = { en: { // ── Connection status ── live: 'live', offline: 'offline', // ── Panel default content ── genericTitle: 'SkateSpots Assistant 🦧', genericGreeting: "Yo! I'm The Sasquatch. Ask me anything about spots, events, coaches, gear, or how the app works. I've got live data from the SkateSpots relay!", q1: 'Plan me 3 days in Lisbon', q2: 'Find spots near me', q3: 'Any upcoming events?', q4: 'What are crews?', q5: 'How do zaps work?', q6: 'What is Nostr?', q7: 'What is My Stash?', q8: 'Is this free?', // ── Bubble + header ── bubbleTitle: 'Press and drag to move · Tap to open', openGuideAria: 'Open Sasquatch guide', activeUntil: 'Active until {{date}}', platformOwner: 'Platform owner', upgradeTitle: 'Upgrade to Sasquatch Pro', goPro: 'Go Pro', aiBalanceTitle: 'Sasquatch AI credit balance (owner-only) — top up at {{provider}}', aiChip: '⚡ AI {{balance}}', minimizeToBubbleAria: 'Minimize to bubble', minimize: 'Minimize', closePanelAria: 'Close panel', close: 'Close', // ── Chat chrome ── askLab: 'Ask about Coaching & Filming', askMap: 'Ask about Spots, Shops & Gear', askAnything: 'Ask me anything 🛹', quickQuestions: 'Quick questions:', you: '🧑 You', thinking: 'thinking...', inputPlaceholder: 'Ask about spots, events, coaches...', liveDataFrom: 'Live data from', nostrRelays: 'Nostr relays', clear: 'clear', // ── Loading / streaming states ── gettingLocation: '📍 Getting your location…', findingClosest: '🔍 Finding the closest spots…', checkingLive: '🔍 Checking live data…', planningTrip: '🗺️ Planning your {{destination}} trip...', searchingRelays: '🔍 Searching the relays for {{tool}}...', // ── Sasquatch Pro dialog ── perk1: 'Personal assistant — Sasquatch reads your own Stash, crews, spots & listings', perk2: 'Action drafts: list gear, post a skate status, plan a trip — you confirm before anything publishes', perk3: 'Answers use your personal context, not just public data', perk4: '⚡ Directly support SkateSpots & keep it free and ad-free', welcomeTitle: 'Thanks for supporting Sasquatch Pro! 🦧⚡', welcomeDesc: 'Payment sent — your pass activates once the provider confirms it (usually within a minute). Thanks for keeping the streets free.', invoiceCopied: 'Invoice copied', dialogDesc: 'Supercharge your AI skate guide. 100% funds a free, no-ads community app.', proSupporter: "You're a Pro supporter ⚡", extendPrompt: 'Want to extend? Pick a tier below to add more time.', scanToPayPre: 'Scan to pay', scanToPayAmount: '{{sats}} sats', scanToPayPost: 'for {{label}} of Pro', invoiceQrAlt: 'Lightning invoice QR', copyInvoice: 'Copy invoice', ivePaid: "I've paid", ivePaidHint: 'Tap "I\'ve paid" after your wallet confirms — this records your pass to your Nostr identity.', freeStaysPre: 'Free Sasquatch stays free — public spot/event/coach search, trip planning + the full trick glossary. Pro adds the ', freeStaysEmphasis: 'personal + action', freeStaysPost: ' layer.', loginFirst: 'Log in first to upgrade.', paysTo: 'Pays to', overLightning: 'over Lightning. Bound to your npub.', popular: 'Popular', sats: 'sats', extend: 'Extend', // ── Draft action card ── done: 'Done!', cancelledNothing: 'Cancelled — nothing was published.', draftReview: 'Draft — review & confirm', statusTextPlaceholder: 'Status text', titlePlaceholder: 'Title', priceSatsPlaceholder: 'Price (sats)', conditionPlaceholder: 'Condition', cancel: 'Cancel', // ── Owner AI balance card ── aiTitle: 'Sasquatch AI', owner: 'Owner', notConfigured: 'not configured', unavailable: 'unavailable', satsValue: '{{balance}} sats', theNode: 'the node', lowBalance: 'Running low — top up at {{provider}} or AI will fall back to the keyless provider.', aiDesc: 'Pay-per-request AI, funded in sats via Routstr. Tops up when low.', // ── Pro tier labels & badges (PRO_TIERS) ── tier7d: '7 days', tier1m: '1 month', tier3m: '3 months', tier1y: '1 year', badgeTry: 'Try it', badgeOff20: '20% off', badgeBest: 'Best value · 40% off', // ── Draft action summary ── draftPostStatusTitle: 'Post a skating status', draftAutoExpires: 'Auto-expires in {{count}} min', draftPostStatusCta: 'Post status', draftCategory: 'Category: {{value}}', draftSize: 'Size: {{value}}', draftCondition: 'Condition: {{value}}', draftMaxPrice: 'Max price: {{price}} {{currency}}', draftPriceOpen: 'Price: open', draftLookingForTitle: 'Looking for "{{title}}"', draftWantedCta: 'Post wanted ad', draftPrice: 'Price: {{price}} {{currency}}', draftPriceOffer: 'Price: make offer', draftListTitle: 'List "{{title}}" for sale', draftPublishCta: 'Publish listing', statusPosted: 'Status posted 🛹', wantedPublished: 'Wanted ad published 🔎', listingPublished: 'Listing published 💸', mustBeLoggedIn: 'You must be logged in.', }, es: { // ── Connection status ── live: 'en vivo', offline: 'sin conexión', // ── Panel default content ── genericTitle: 'Asistente de SkateSpots 🦧', genericGreeting: '¡Hola! Soy el Sasquatch. Pregúntame lo que quieras sobre spots, eventos, entrenadores, material o cómo funciona la app. ¡Tengo datos en vivo del relé de SkateSpots!', q1: 'Planifícame 3 días en Lisboa', q2: 'Encuentra spots cerca de mí', q3: '¿Próximos eventos?', q4: '¿Qué son los crews?', q5: '¿Cómo funcionan los zaps?', q6: '¿Qué es Nostr?', q7: '¿Qué es Mi Stash?', q8: '¿Es gratis?', // ── Bubble + header ── bubbleTitle: 'Pulsa y arrastra para mover · Toca para abrir', openGuideAria: 'Abrir la guía del Sasquatch', activeUntil: 'Activo hasta el {{date}}', platformOwner: 'Propietario de la plataforma', upgradeTitle: 'Mejora a Sasquatch Pro', goPro: 'Hazte Pro', aiBalanceTitle: 'Saldo de crédito de la IA del Sasquatch (solo propietario) — recarga en {{provider}}', aiChip: '⚡ IA {{balance}}', minimizeToBubbleAria: 'Minimizar a la burbuja', minimize: 'Minimizar', closePanelAria: 'Cerrar el panel', close: 'Cerrar', // ── Chat chrome ── askLab: 'Pregunta sobre entrenamiento y grabación', askMap: 'Pregunta sobre spots, tiendas y material', askAnything: 'Pregúntame lo que quieras 🛹', quickQuestions: 'Preguntas rápidas:', you: '🧑 Tú', thinking: 'pensando...', inputPlaceholder: 'Pregunta sobre spots, eventos, entrenadores...', liveDataFrom: 'Datos en vivo de', nostrRelays: 'relés de Nostr', clear: 'borrar', // ── Loading / streaming states ── gettingLocation: '📍 Obteniendo tu ubicación…', findingClosest: '🔍 Buscando los spots más cercanos…', checkingLive: '🔍 Comprobando datos en vivo…', planningTrip: '🗺️ Planificando tu viaje a {{destination}}...', searchingRelays: '🔍 Buscando en los relés: {{tool}}...', // ── Sasquatch Pro dialog ── perk1: 'Asistente personal — el Sasquatch lee tu propio Stash, crews, spots y anuncios', perk2: 'Borradores de acciones: publica material, comparte tu estado de skate, planifica un viaje — tú confirmas antes de que se publique nada', perk3: 'Las respuestas usan tu contexto personal, no solo datos públicos', perk4: '⚡ Apoya directamente a SkateSpots y ayúdanos a mantenerla gratis y sin anuncios', welcomeTitle: '¡Gracias por apoyar Sasquatch Pro! 🦧⚡', welcomeDesc: 'Pago enviado: tu pase se activa cuando el proveedor lo confirme (normalmente en un minuto). Gracias por mantener las calles libres.', invoiceCopied: 'Factura copiada', dialogDesc: 'Potencia tu guía de skate con IA. El 100 % financia una app comunitaria gratis y sin anuncios.', proSupporter: 'Eres un colaborador Pro ⚡', extendPrompt: '¿Quieres ampliar? Elige una tarifa abajo para añadir más tiempo.', scanToPayPre: 'Escanea para pagar', scanToPayAmount: '{{sats}} sats', scanToPayPost: 'por {{label}} de Pro', invoiceQrAlt: 'QR de la factura Lightning', copyInvoice: 'Copiar factura', ivePaid: 'He pagado', ivePaidHint: 'Toca "He pagado" cuando tu cartera lo confirme — esto registra tu pase en tu identidad de Nostr.', freeStaysPre: 'El Sasquatch gratis sigue siendo gratis — búsqueda pública de spots, eventos y entrenadores, planificación de viajes + el glosario completo de trucos. Pro añade la ', freeStaysEmphasis: 'capa personal y de acciones', freeStaysPost: '.', loginFirst: 'Inicia sesión primero para mejorar.', paysTo: 'Paga a', overLightning: 'por Lightning. Vinculado a tu npub.', popular: 'Popular', sats: 'sats', extend: 'Ampliar', // ── Draft action card ── done: '¡Hecho!', cancelledNothing: 'Cancelado — no se publicó nada.', draftReview: 'Borrador — revisa y confirma', statusTextPlaceholder: 'Texto del estado', titlePlaceholder: 'Título', priceSatsPlaceholder: 'Precio (sats)', conditionPlaceholder: 'Estado', cancel: 'Cancelar', // ── Owner AI balance card ── aiTitle: 'Sasquatch IA', owner: 'Propietario', notConfigured: 'sin configurar', unavailable: 'no disponible', satsValue: '{{balance}} sats', theNode: 'el nodo', lowBalance: 'Saldo bajo — recarga en {{provider}} o la IA recurrirá al proveedor sin clave.', aiDesc: 'IA de pago por uso, financiada en sats vía Routstr. Se recarga cuando baja.', // ── Pro tier labels & badges (PRO_TIERS) ── tier7d: '7 días', tier1m: '1 mes', tier3m: '3 meses', tier1y: '1 año', badgeTry: 'Pruébalo', badgeOff20: '20 % dto.', badgeBest: 'Mejor precio · 40 % dto.', // ── Draft action summary ── draftPostStatusTitle: 'Publicar un estado de skate', draftAutoExpires: 'Se borra automáticamente en {{count}} min', draftPostStatusCta: 'Publicar estado', draftCategory: 'Categoría: {{value}}', draftSize: 'Talla: {{value}}', draftCondition: 'Estado: {{value}}', draftMaxPrice: 'Precio máx.: {{price}} {{currency}}', draftPriceOpen: 'Precio: abierto', draftLookingForTitle: 'Buscando "{{title}}"', draftWantedCta: 'Publicar anuncio', draftPrice: 'Precio: {{price}} {{currency}}', draftPriceOffer: 'Precio: aceptar ofertas', draftListTitle: 'Vender "{{title}}"', draftPublishCta: 'Publicar anuncio', statusPosted: 'Estado publicado 🛹', wantedPublished: 'Anuncio de búsqueda publicado 🔎', listingPublished: 'Anuncio publicado 💸', mustBeLoggedIn: 'Tienes que iniciar sesión.', }, }; export default sasquatchUi;