diff --git a/src/i18n/it/batch1.ts b/src/i18n/it/batch1.ts index ec296a7..e3d411d 100644 --- a/src/i18n/it/batch1.ts +++ b/src/i18n/it/batch1.ts @@ -1,4 +1,308 @@ -/** it — batch 1. Filled by the translation pass; empty until then. */ -const itBatch1 = {}; +const itBatch1 = { + common: { + loading: "Caricamento...", + error: "Errore", + save: "Salva", + cancel: "Annulla", + delete: "Elimina", + edit: "Modifica", + add: "Aggiungi", + remove: "Rimuovi", + create: "Crea", + submit: "Invia", + close: "Chiudi", + back: "Indietro", + next: "Avanti", + done: "Fatto", + search: "Cerca", + filter: "Filtra", + sort: "Ordina", + share: "Condividi", + more: "Altro", + copy: "Copia", + copied: "Copiato!", + viewAll: "Vedi tutto", + seeMore: "Vedi di più", + showMore: "Mostra di più", + showLess: "Mostra di meno", + noResults: "Nessun risultato trovato", + tryAgain: "Riprova", + learnMore: "Scopri di più", + getStarted: "Inizia", + yes: "Sì", + no: "No", + or: "o", + and: "e", + free: "Gratis", + new: "Nuovo", + popular: "Popolare", + featured: "In evidenza", + verified: "Verificato", + sats: "sats", + clear: "Cancella", + clearFilters: "Cancella filtri", + clearAll: "Cancella tutto", + hide: "Nascondi", + undo: "Annulla", + }, + nav: { + home: "Home", + map: "Spot", + lab: "The Lab", + events: "Eventi", + crews: "Crew", + wallet: "Wallet", + settings: "Impostazioni", + more: "Altro", + rewards: "Premi", + stats: "Statistiche della community", + about: "Informazioni", + food: "Cibo", + marketplace: "Mercato", + mints: "Mints", + appShop: "App Shop", + diy: "DIY", + trades: "Mercato", + stash: "Stash", + collections: "Collezioni", + contacts: "Contatti", + messages: "Messaggi", + skaters: "Skaters", + glossary: "Glossario", + riderCard: "Rider Card", + supporters: "Sostenitori ⚡", + newsletter: "Newsletter", + viewProfile: "Vedi profilo", + leaderboards: "Classifiche", + }, + chromeUi: { + skipToContent: "Vai al contenuto", + menu: "Menu", + inBadge: "In", + loggedIn: "Connesso", + profile: "Profilo", + logIn: "Accedi", + logOut: "Esci", + notLoggedIn: "Non connesso", + loggedOutPrompt: + "Accedi per aggiungere spot, zappare gli skater e salvare i tuoi preferiti", + accounts: "Account", + addAnotherAccount: "Aggiungi un altro account", + setStatus: "Imposta stato", + setYourStatus: "Imposta il tuo stato", + status: "Stato", + addSpot: "Aggiungi Spot", + myData: "I miei dati", + myStash: "Il mio Stash", + myCollections: "Le mie collezioni", + viewMyProfile: "Vedi il mio profilo", + customizeNavBar: "Personalizza la barra di navigazione", + ecash: "Ecash", + madeWith: "Creato con", + forSkateCommunity: "per la community dello skateboarding", + beta: "Beta", + license: "Licenza", + privacy: "Privacy", + collaborators: "Collaboratori e amici", + notSponsoredBy: "Non sponsorizzato da", + errorTitle: "Impossibile caricarlo", + errorDescription: + "La richiesta di rete non è riuscita. Controlla la connessione e riprova.", + tryAgain: "Riprova", + weatherOn: "Meteo attivo", + weatherOff: "Meteo disattivato", + trustFilter: "Filtro affidabilità", + filterByTrustLevel: "Filtra per livello di affidabilità", + trust: { + all: "Tutti gli utenti", + allDesc: "Mostra contenuti da tutti", + verified: "Verificato", + verifiedDesc: "Li segui o sono verificati (affidabilità ≥90)", + trusted: "Affidabile", + trustedDesc: "Amici di amici o verificati NIP-05 (affidabilità ≥60)", + following: "Solo seguiti", + followingDesc: "Mostra solo contenuti dalle persone che segui", + followingShort: "Seguiti", + }, + sort: { + recent: "Più recenti", + recentDesc: "Prima i più recenti", + trust: "Più affidabili", + trustDesc: "Creatori più affidabili", + proximity: "Più vicini a me", + proximityDesc: "Luoghi più vicini", + popular: "Più popolari", + popularDesc: "Più commenti/reazioni", + zaps: "Più zappati", + zapsDesc: "Valore ricevuto più alto", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + diy: "DIY", + bowl: "Bowl", + vert: "Vert", + indoor: "Indoor", + skatepark: "Skatepark", + miniramp: "Mini Ramp", + }, + }, + desktopNav: { + title: "Navigazione desktop", + desc: "Scegli quali schede appaiono nella barra in alto e il loro ordine. Le schede nascoste restano comunque nel menu \"Altro\".", + fixed: "Fisse", + shownInTopBar: "Mostrate nella barra in alto ({{count}})", + noExtraTabs: + "Nessuna scheda extra mostrata — tutto è nel menu \"Altro\". Aggiungine alcune qui sotto.", + inMoreMenu: "Nel menu \"Altro\" ({{count}})", + moveUp: "Sposta {{name}} in alto", + moveDown: "Sposta {{name}} in basso", + hide: "Nascondi {{name}}", + moveToMore: "Sposta nel menu Altro", + show: "Mostra", + showInTopBar: "Mostra {{name}} nella barra in alto", + showInTopBarTitle: "Mostra nella barra in alto", + reset: "Ripristina predefiniti", + }, + navSheet: { + title: "Personalizza la tua barra", + desc: "Scegli le {{count}} schede che usi di più. Tutto il resto resta nel menu.", + preview: "Anteprima", + empty: "Vuota", + order: "Ordine ({{done}}/{{total}})", + available: "Schede disponibili", + full: "Barra piena — rimuovine una per scambiare", + moveUp: "Sposta {{name}} in alto", + moveDown: "Sposta {{name}} in basso", + login: "Accedi", + profile: "Profilo", + reset: "Ripristina", + done: "Fatto", + }, + pwa: { + installTitle: "Installa SkateSpots", + installSubtitle: "Ottieni l'esperienza completa dell'app", + addToHomeScreen: "Aggiungi alla schermata Home", + installApp: "Installa l'app", + maybeLater: "Magari più tardi", + gotIt: "Capito!", + benefits: { + fast: "Velocissimo", + offline: "Funziona offline", + fullAccess: "Accesso completo", + }, + iosStep1: "Tocca il pulsante Condividi", + iosStep1Hint: "in fondo a Safari", + iosStep2: "Scorri e tocca \"Aggiungi alla schermata Home\"", + iosStep2Hint: "nel menu di condivisione", + iosStep3: "Tocca \"Aggiungi\" per installare", + iosStep3Hint: "L'app apparirà sulla schermata Home", + androidStep1: "Tocca il pulsante del menu", + androidStep1Hint: "(tre puntini) nel tuo browser", + androidStep2: "Seleziona \"Aggiungi alla schermata Home\"", + androidStep2Hint: "o \"Installa l'app\"", + androidStep3: "Conferma per installare", + androidStep3Hint: "L'app apparirà sulla schermata Home", + tagline: "Gratis • Funziona offline • Veloce e affidabile", + }, + home: { + tagline: "Guidato dalla community • Basato su Relay", + title: "SKATE SPOTS", + subtitle: "Scopri gli Spot • Incontra • Impara i trick • Sostieni i local", + description: + "Lo skateboarding vero accade offline - questo strumento ti aiuta a trovarlo.", + betaWarning: "BETA - In costruzione • Usa a tuo rischio", + pwaHint: "Progressive Web App - Installala sul tuo dispositivo", + exploreMap: "Esplora la mappa", + addSpot: "Aggiungi Spot", + globalSpots: "Spot globali", + openCommunity: "Community aperta", + lightningZaps: "Zap Lightning", + featuredSpots: "Spot in evidenza", + featuredSpotsDesc: "Spot di skate verificati dalla community da tutto il mondo", + upcomingEvents: "Prossimi eventi", + upcomingEventsDesc: "Contest, incontri e sessioni in arrivo", + noSpotsYet: "Nessuno spot trovato ancora", + noSpotsHint: "Sii il primo ad aggiungere uno skate spot!", + noEventsYet: "Nessun evento in arrivo", + noEventsHint: "Torna più tardi o creane uno!", + theLab: "The Lab", + theLabDesc: "Impara i trick, trova coach e fai salire di livello il tuo skate", + coaches: "Coach", + coachesDesc: "Impara da skater esperti che possono aiutarti a progredire", + filmers: "Filmer", + filmersDesc: "Connettiti con i filmer per catturare i tuoi clip migliori", + findCoach: "Trova un Coach", + becomeCoach: "Diventa Coach", + findFilmer: "Trova un Filmer", + becomeFilmer: "Diventa Filmer", + viewAllSpots: "Vedi tutti gli Spot", + viewAllEvents: "Vedi tutti gli eventi", + createEvent: "Crea evento", + readyToShare: "Pronto a condividere?", + readyToShareDesc: + "Aiuta la community dello skateboarding a crescere aggiungendo i tuoi spot preferiti. Ogni luogo che condividi aiuta altri skater a scoprire nuovi posti dove andare.", + }, + about: { + title: "Informazioni su SkateSpots", + subtitle: "Una community di skateboarding decentralizzata", + whatIs: "Cos'è SkateSpots?", + whatIsDesc: + "SkateSpots è una piattaforma guidata dalla community per scoprire luoghi per lo skateboarding in tutto il mondo. Costruita su Nostr, dà agli skater la vera proprietà dei propri dati.", + features: "Funzionalità", + featuresDesc: + "Trova spot, crea eventi, connettiti con i coach e sostieni i tuoi negozi di skate locali—tutto in un unico posto.", + nostr: "Costruito su Nostr", + nostrDesc: + "Nostr è un protocollo semplice e aperto che consente una comunicazione globale davvero resistente alla censura. Il tuo account e i tuoi dati appartengono a te.", + openSource: "Open Source", + openSourceDesc: + "SkateSpots è completamente open source. Contribuisci, forkalo o gestisci la tua istanza.", + lightning: "Pagamenti Lightning", + lightningDesc: + "Zappa gli skater, i coach e i creatori di contenuti che preferisci con pagamenti Bitcoin Lightning.", + }, + faq: { + title: "Domande frequenti", + subtitle: "Tutto ciò che devi sapere su SkateSpots", + whatIsNostr: "Cos'è Nostr?", + whatIsNostrAnswer: + "Nostr è un protocollo aperto per il social networking decentralizzato. A differenza delle piattaforme tradizionali, i tuoi dati e la tua identità sono tuoi.", + howToStart: "Come inizio?", + howToStartAnswer: + "Clicca su \"Registrati\" per creare un nuovo account Nostr, oppure \"Accedi\" se ne hai già uno. Puoi usare un'estensione del browser, un'app mobile o una chiave segreta.", + whatAreZaps: "Cosa sono gli Zap?", + whatAreZapsAnswer: + "Gli Zap sono mance Bitcoin Lightning che puoi inviare ad altri utenti. Sono un modo per mostrare apprezzamento per ottimi contenuti o sostenere i creatori.", + howToAddSpot: "Come aggiungo uno spot?", + howToAddSpotAnswer: + "Accedi al tuo account, clicca su \"Aggiungi Spot\" e compila i dettagli tra cui posizione, foto e descrizione.", + isItFree: "SkateSpots è gratis?", + isItFreeAnswer: + "Sì! SkateSpots è completamente gratis da usare. Puoi facoltativamente inviare Zap (mance Bitcoin) ad altri utenti.", + canIEditSpot: "Posso modificare o eliminare i miei spot?", + canIEditSpotAnswer: + "Sì, puoi modificare gli spot che hai creato. Data la natura decentralizzata di Nostr, le richieste di eliminazione vengono inviate ma alcuni relay potrebbero conservare i dati.", + }, + onboarding: { + welcome: "Benvenuto su SkateSpots!", + welcomeDesc: "Configuriamoci in pochi passaggi.", + step1Title: "Crea il tuo account", + step1Desc: + "Le tue chiavi Nostr vengono generate. È come una password che controlli tu.", + step2Title: "Esegui il backup delle tue chiavi", + step2Desc: + "Salva la tua frase di recupero in un posto sicuro. È l'unico modo per recuperare il tuo account!", + step3Title: "Configura il tuo profilo", + step3Desc: "Racconta alla community qualcosa di te.", + step4Title: "Sei pronto!", + step4Desc: + "Inizia a esplorare spot, eventi e a connetterti con altri skater.", + skipForNow: "Salta per ora", + continueToApp: "Continua verso l'app", + }, +}; export default itBatch1; diff --git a/src/i18n/it/batch2.ts b/src/i18n/it/batch2.ts index fdf94cd..94df6d9 100644 --- a/src/i18n/it/batch2.ts +++ b/src/i18n/it/batch2.ts @@ -1,4 +1,1652 @@ -/** it — batch 2. Filled by the translation pass; empty until then. */ -const itBatch2 = {}; +/** it — batch 2. Filled by the 2026-10-07 Italian translation pass. */ +const itBatch2 = { + mapUi: { + mapFooter: { + links: "Link", + hide: "Nascondi la barra dei link della mappa", + }, + findingSpots: "Ricerca degli spot", + loadingSpots: "Caricamento spot", + loadingMap: "Caricamento mappa...", + mapViewAria: "Vista mappa", + listViewAria: "Vista elenco", + layers: "Livelli", + mapLayers: "Livelli mappa", + showOnMap: "Mostra sulla mappa", + showResults: "Mostra risultati", + quickActions: "Azioni rapide", + spots: "Spot", + shops: "Skate shop", + gear: "Attrezzatura", + tours: "Tour", + events: "Eventi", + crews: "Crew", + spotType: "Tipo di spot", + sortBy: "Ordina per", + trustLevel: "Livello di fiducia", + weather: "Meteo", + buySellGear: "Compra/Vendi attrezzatura", + stash: "Stash", + more: "Altro", + newHere: "Nuovo qui?", + welcomeDesc: "Scopri spot, eventi e la community dello skate.", + getOnZapstore: "Scarica su Zapstore", + dismiss: "Ignora", + addedBy: "Aggiunto da", + directions: "Indicazioni", + viewDetails: "Vedi dettagli", + viewDetailsArrow: "Vedi dettagli →", + spotDetails: "Dettagli spot", + skateShop: "Skate shop", + skateSpot: "Spot di skate", + youAreHere: "Sei qui", + conditions: "Condizioni", + weatherScoreSuffix: "{{score}}/100 meteo", + wind: "Vento", + humidity: "Umidità", + airQuality: "Qualità dell'aria", + threeDayForecast: "Previsioni a 3 giorni", + gearForSale: "Attrezzatura in vendita ({{count}})", + viewItems: "Vedi articoli →", + viewAllItems: "Vedi tutti i {{count}} articoli →", + viewGear: "Vedi attrezzatura →", + localTour: "Tour locale", + meetAt: "Ritrovo: {{place}}", + hours: "{{count}} ore", + level: "livello {{level}}", + viewTour: "Vedi tour →", + upcomingEvent: "Evento in arrivo", + viewEvent: "Vedi evento →", + skateCrew: "Crew di skate", + members: "{{count}} membri", + since: "Dal {{year}}", + viewCrew: "Vedi crew →", + acceptsBitcoin: "Accetta Bitcoin", + boosted: "In evidenza", + website: "Sito web", + offlineSavedSpots: "Offline · spot salvati in visualizzazione", + cantReachRelays: "Impossibile raggiungere i relay", + relayOnlineNoAnswer: "Sei online, ma il relay della community non risponde in questo momento.", + youreOffline: "Sei offline.", + savedOnDevice: "Gli spot che hai già visto sono salvati su questo dispositivo e appariranno qui.", + noSpotsMatchTitle: "Nessuno spot corrisponde", + noSpotsMatchDesc: "Prova una ricerca diversa o cancella i filtri.", + noSpotsMappedYet: "Nessuno spot ancora mappato", + noSpotsMappedDesc: "Sii il primo a mappare il tuo park — ci vuole un minuto, è tuo, e il prossimo skater che passa ti ringrazierà.", + addFirstSpot: "Aggiungi il primo spot", + findSpotsNearMe: "Trova spot vicino a me", + locating: "Localizzazione…", + refiningLocation: "Affinamento della posizione…", + refiningLocationDesc: "Centrata sul tuo ultimo spot — in corso un nuovo fix GPS.", + locatingYou: "Localizzazione in corso…", + locatingDesc: "Recupero del fix GPS. La prima volta può richiedere fino a un minuto.", + foundYou: "Posizione trovata", + foundYouDesc: "Mappa centrata sulla tua posizione.", + locationPermissionNeeded: "Autorizzazione alla posizione necessaria", + permissionNeededDesc: "Consenti la posizione per SkateSpots in Impostazioni del dispositivo → App → SkateSpots → Autorizzazioni, poi tocca di nuovo Vicino a me.", + locationTimedOut: "Timeout della posizione", + timeoutNativeDesc: "Impossibile ottenere un fix della posizione in tempo. Se sei al chiuso, il GPS non vede i satelliti — attiva la posizione di rete (Impostazioni → Posizione) o esci all'aperto, poi riprova.", + timeoutWebDesc: "Impossibile ottenere la posizione in tempo. Controlla il segnale e riprova.", + noLocationProvider: "Nessun provider di posizione", + noProviderNativeDesc: "Il telefono non fornisce una posizione. Sulle ROM attente alla privacy (es. GrapheneOS) attiva la posizione di rete in Impostazioni → Posizione, oppure assicurati che il GPS sia attivo e prova all'aperto.", + noProviderWebDesc: "Nessun provider di posizione disponibile. Attiva i servizi di localizzazione e riprova.", + locationUnavailable: "Posizione non disponibile", + unavailableNativeDesc: "Attiva Posizione/GPS nelle impostazioni del telefono, consenti la posizione per SkateSpots (Impostazioni → App → SkateSpots → Autorizzazioni), poi riprova.", + unavailableWebDesc: "Impossibile determinare la tua posizione. Assicurati che i servizi di localizzazione siano attivi.", + locationBlocked: "Posizione bloccata", + locationBlockedDesc: "Il browser ha bloccato l'accesso alla posizione per questo sito. Ecco come riattivarlo:", + locationPlatformAndroid: "Chrome Android", + locationPlatformIos: "Safari iOS", + locationPlatformDesktop: "Chrome desktop", + locationPlatformFirefox: "Firefox", + locationStepsAndroid: "Tocca l'icona del lucchetto nella barra degli indirizzi → Impostazioni sito → Posizione → Consenti", + locationStepsIos: "App Impostazioni → Safari → Posizione → Consenti (oppure tocca il pulsante \"AA\" nella barra degli indirizzi di Safari)", + locationStepsDesktop: "Clicca l'icona del lucchetto → Impostazioni sito → Posizione → Consenti", + locationStepsFirefox: "Clicca l'icona del lucchetto → Connessione sicura → Altre informazioni → Autorizzazioni → Accedi alla tua posizione → Consenti", + gotIt: "Capito", + addSpot: "Aggiungi spot", + addShop: "Aggiungi skate shop", + addEvent: "Aggiungi evento", + addSpotHereTitle: "Aggiungere uno spot qui?", + addSpotHereDesc: "Posiziona un segnaposto dove hai toccato", + sellGear: "Vendi attrezzatura", + offerTour: "Proponi un tour", + closeAddMenu: "Chiudi menu di aggiunta", + addMenuAria: "Aggiungi spot, skate shop, evento, attrezzatura o tour", + localChat: "Chat locale", + localChatDesc: "Chat dal vivo per il punto in cui è centrata la mappa. Scegli l'ampiezza del canale.", + btcMapShowing: "{{count}} luoghi nelle vicinanze dove puoi Spedn i tuoi sats", + btcMapShow: "Mostra i luoghi dove puoi Spedn i tuoi sats (via BTC Map)", + yourPrivateStash: "Il tuo Stash privato", + stashIntro: "Tieni traccia della tua attrezzatura, imposta i prezzi e trova scambi con altri skater.", + encryptionRequired: "Crittografia necessaria", + encryptionRequiredDesc: "Usa un signer con supporto NIP-44 (Alby, nos2x, Amber).", + myStash: "Il mio Stash", + encrypted: "Crittografato", + itemsCount: "{{count}} articoli", + items: "Articoli", + wishlist: "Lista dei desideri", + types: "Tipi", + stashEmpty: "Il tuo Stash è vuoto", + addFirstItem: "Aggiungi il primo articolo", + wishlistCount: "Lista dei desideri ({{count}})", + myGearCount: "La mia attrezzatura ({{count}})", + openFullStash: "Apri Stash completo", + addItem: "Aggiungi articolo", + searchSpotsPlaceholder: "Cerca spot...", + selected: "Selezionato", + noSpotsFound: "Nessuno spot trovato. Prova una ricerca diversa.", + addingSpotsHint: "Aggiungere spot aiuta gli utenti a trovarti quando sfogliano località specifiche", + report: "Segnala", + spotSingular: "1 spot", + spotPlural: "{{count}} spot", + view: "Vedi", + myCollections: "Le mie raccolte", + collectionsSubtitle: "Organizza i tuoi spot preferiti in liste personalizzate", + newCollection: "Nuova raccolta", + loginToCreate: "Accedi per creare raccolte", + loginToCreateDesc: "Salva i tuoi spot preferiti in liste personalizzate come \"Viaggio a Barcellona 2024\" o \"I migliori rail di LA\"", + noCollections: "Ancora nessuna raccolta", + noCollectionsDesc: "Crea la tua prima raccolta per iniziare a organizzare gli spot", + createFirstCollection: "Crea la tua prima raccolta", + createNewCollection: "Crea nuova raccolta", + createCollectionDesc: "Dai un nome alla raccolta e una descrizione opzionale", + collectionName: "Nome della raccolta", + collectionNamePlaceholder: "Viaggio a Barcellona 2024", + descriptionOptional: "Descrizione (opzionale)", + descriptionPlaceholder: "I miei spot preferiti del viaggio a Barcellona...", + creating: "Creazione...", + createCollection: "Crea raccolta", + editCollection: "Modifica raccolta", + saving: "Salvataggio...", + saveChanges: "Salva modifiche", + deleteCollectionTitle: "Eliminare la raccolta?", + deleteCollectionDesc: "Questo eliminerà definitivamente \"{{title}}\". Gli spot stessi non saranno interessati.", + deleting: "Eliminazione...", + collectionCreated: "Raccolta creata!", + collectionCreatedDesc: "\"{{title}}\" è pronta per gli spot", + collectionCreateFailed: "Creazione della raccolta non riuscita", + collectionUpdated: "Raccolta aggiornata!", + changesSaved: "Le tue modifiche sono state salvate", + collectionUpdateFailed: "Aggiornamento della raccolta non riuscito", + collectionDeleted: "Raccolta eliminata", + collectionDeletedDesc: "\"{{title}}\" è stata rimossa", + collectionDeleteFailed: "Eliminazione della raccolta non riuscita", + somethingWentWrong: "Qualcosa è andato storto", + }, + mapPage: { + title: "Skate shop & spot", + spots: "Spot", + shops: "Skate shop", + filters: "Filtri", + listView: "Elenco", + mapView: "Mappa", + nearMe: "Vicino a me", + searchPlaceholder: "Cerca spot...", + noSpotsInArea: "Nessuno spot in questa zona", + zoomIn: "Ingrandisci", + zoomOut: "Riduci", + myLocation: "La mia posizione", + locationsFound: "{{count}} località trovate", + spotsOnly: "Solo spot", + shopsOnly: "Solo skate shop", + spotsAndShops: "Spot & skate shop", + noSpotsMatch: "Nessuno spot corrisponde ai tuoi filtri.", + noSpotsYet: "Non è stato ancora aggiunto nessuno spot.", + addFirstSpot: "Aggiungi il primo spot", + }, + spotUi: { + claim: { + areYouOwner: "È il tuo spot?", + privateDesc: "Questo spot è contrassegnato come privato. Se lo possiedi o lo gestisci, rivendicalo — un moderatore di SkateSpots conferma la proprietà, poi subentri nell'inserzione.", + claimSpot: "Rivendica questo spot", + nip05Required: "Ti serve un handle NIP-05 verificato per rivendicare uno spot privato (prova che controlli un'identità Nostr). Aggiungilo nel tuo profilo, poi torna qui.", + addNip05: "Aggiungi NIP-05 nelle Impostazioni", + pendingTitle: "Rivendicazione in attesa di revisione", + pendingDesc: "La tua rivendicazione è stata inviata. Un moderatore di SkateSpots la esaminerà — potrai completare la rivendicazione dello spot una volta approvata.", + approvedTitle: "Rivendicazione approvata", + approvedDesc: "Un moderatore ha approvato la tua rivendicazione. Completa per diventare proprietario di questo spot.", + complete: "Completa la rivendicazione", + submitted: "Rivendicazione inviata", + submittedDesc: "Un moderatore esaminerà la tua rivendicazione. Subentrerai nello spot una volta approvata.", + submitFailed: "Impossibile inviare la rivendicazione", + submit: "Invia rivendicazione", + submitting: "Invio…", + confirmTitle: "Rivendicare \"{{title}}\"?", + confirmIntro: "Stai chiedendo di diventare proprietario di questo spot privato.", + confirmBullet1: "Un moderatore di SkateSpots esamina la richiesta (non possiamo verificare la proprietà, solo le chiavi Nostr)", + confirmBullet2: "Se approvata, completi la rivendicazione per diventare proprietario e potrai modificare lo spot", + confirmBullet3: "Lo spot originale resta su Nostr — la rete è decentralizzata", + adminTitle: "Rivendicazioni di proprietà in sospeso", + adminApprove: "Approva", + adminApproved: "Approvata", + adminApprovedDesc: "Ora possono completare la rivendicazione dello spot.", + adminApproveFailed: "Impossibile approvare la rivendicazione", + loginRequired: "Accedi per rivendicare questo spot privato o per richiederne la proprietà.", + }, + abandonedDesc: "Ultimo aggiornamento {{time}}. Se il proprietario originale è inattivo, puoi rivendicare questo spot per mantenerlo e migliorarlo.", + claimedNotice: "Inserzione rivendicata", + claimedNoticeDesc: "Questo spot è stato ripubblicato da un nuovo proprietario dopo una rivendicazione. L'inserzione originale potrebbe esistere ancora separatamente.", + abandonedLoginDesc: "Ultimo aggiornamento {{time}}. Accedi per rivendicare e mantenere questo spot.", + accessDeniedDesc: "Puoi modificare solo gli spot che hai creato.", + accessDeniedTitle: "Accesso negato", + addAtLeastOneTag: "Aggiungi almeno un tag.", + additionalDetails: "Dettagli aggiuntivi (opzionale)", + additionalDetailsPlaceholder: "Fornisci eventuali informazioni aggiuntive che potrebbero aiutare...", + addNewTags: "Aggiungi nuovi tag:", + addNip05InSettings: "Aggiungi NIP-05 nelle Impostazioni", + addPhoto: "Aggiungi foto", + addPhotoDesc: "Contribuisci con una foto per aiutare gli altri a scoprire questo spot.", + addPhotoOrDescription: "Aggiungi una foto o una descrizione", + addPhotoOrDescriptionDesc: "Dai agli skater qualcosa su cui basarsi — una foto o due righe sul posto.", + addPhotos: "Aggiungi foto", + addPhotoToSpot: "Aggiungi foto allo spot", + adminDeleteDialogDesc: "Come admin di SkateSpots stai rimuovendo \"{{title}}\". Sarà nascosto in tutta l'app per tutti e una richiesta di eliminazione sarà inviata ai relay.", + adminDeleteReason: "L'admin di SkateSpots ha rimosso lo spot \"{{title}}\"", + airQuality: "Qualità dell'aria", + altSkateSpot: "Spot di skate: {{title}}", + areYouShopOwner: "Sei il proprietario dello skate shop?", + askBeforeSkating: "Chiedi prima di skatare", + backToSpot: "Torna allo spot", + beFirstToListGear: "Sii il primo a mettere in vendita attrezzatura in questo spot!", + beFirstToSay: "Sii il primo a dire qualcosa.", + byAuthor: "di {{name}}", + captionPlaceholder: "Aggiungi una didascalia (opzionale) - descrivi cosa c'è nella foto, quando è stata scattata, ecc.", + chatPublicNote: "Chiunque può leggerlo — i messaggi sono pubblici ed effimeri. Per chat private, usa i Messaggi diretti.", + checkPinBelow: "Controlla il segnaposto qui sotto prima di aggiungere un duplicato.", + claimBullet1: "Diventi proprietario e puoi modificare lo spot", + claimBullet2: "Lo spot originale resta (Nostr è decentralizzato)", + claimBullet3: "La tua versione può apparire accanto all'originale", + claimFailed: "Rivendicazione non riuscita", + claiming: "Rivendicazione...", + claimIntro: "Stai per rivendicare la proprietà di questo spot. Verrà creata una tua versione dello spot che potrai modificare e mantenere.", + claimSpot: "Rivendica spot", + claimThisSpot: "Rivendica questo spot", + claimTitle: "Rivendicare \"{{title}}\"?", + claimWhatHappens: "Cosa succede quando rivendichi:", + coachesAndFilmersAvailable: "Coach e filmer disponibili in questo spot", + coachesCount: "Coach ({{count}})", + coachHere: "Coach qui", + community: "Community", + communityVerified: "Verificato dalla community", + communityVerifiedTitle: "Un altro skater ha contribuito qui (foto o segnalazione di stato).", + conditions: "Condizioni", + contactForPermission: "Contatta per il permesso", + contactInfo: "Informazioni di contatto", + contributePhoto: "Contribuisci con una foto", + contributing: "Invio in corso...", + couldNotSendMessage: "Impossibile inviare il messaggio.", + couldNotSubmit: "Impossibile inviare", + couldNotUploadPhoto: "Impossibile caricare la foto. Puoi aggiungerne una qui sotto.", + crewsThatSkateHere: "I crew che skatano qui", + current: "Attuale:", + currentTags: "Tag attuali su questo spot:", + daysAgo: "{{count}} giorno fa", + daysAgoPlural: "{{count}} giorni fa", + deleteDialogDesc: "Questo eliminerà definitivamente \"{{title}}\" da tutti i relay. Questa azione non può essere annullata.", + deletedSpotReason: "Spot eliminato", + deleteFailed: "Eliminazione non riuscita", + deleteSpot: "Elimina spot", + deleteSpotTitle: "Eliminare lo spot?", + differentSpotPublishAnyway: "È uno spot diverso — pubblica comunque", + dragDropOrClick: "Trascina e rilascia o clicca", + dropPhotos: "Rilascia le foto", + duplicateOne: "C'è uno spot entro 60 m dal tuo segnaposto. Se è lo stesso posto, aggiungi lì la tua foto o una segnalazione di stato invece di creare un duplicato.", + duplicateOther: "Ci sono spot entro 60 m dal tuo segnaposto. Se è lo stesso posto, aggiungi lì la tua foto o una segnalazione di stato invece di creare un duplicato.", + editSpotSeoDesc: "Modifica il tuo spot di skate.", + failedToContribute: "Contributo non riuscito", + failedToPublish: "Pubblicazione non riuscita", + failedToPublishDesc: "Qualcosa è andato storto. Controlla la console per i dettagli.", + failedToSubmitReport: "Invio della segnalazione non riuscito", + failedToSuggestTags: "Suggerimento dei tag non riuscito", + failedToUpdate: "Aggiornamento non riuscito", + failedToUploadImage: "Caricamento dell'immagine non riuscito", + failedToUploadPhoto: "Caricamento della foto non riuscito", + feelsLikeTemp: "Percepita {{temp}}°C", + filmersCount: "Filmer ({{count}})", + filmHere: "Gira qui", + gearSwap: "Scambio attrezzatura", + geolocationNotSupported: "Geolocalizzazione non supportata", + geolocationNotSupportedDesc: "Il tuo browser non supporta la geolocalizzazione.", + getDirections: "Ottieni indicazioni", + hangTight: "Un attimo", + hangTightDesc: "La tua foto è ancora in caricamento. Sarà allegata tra un secondo.", + helpImproveSpot: "Aiuta a migliorare questo spot aggiungendo foto o suggerendo tag", + hiddenByModerator: "Nascosto da un moderatore", + hiddenByModeratorDesc: "Questo spot non è mostrato sulla mappa né nella ricerca. Puoi ancora vederlo perché è tuo. Modificarlo non lo renderà visibile — resta nascosto finché un moderatore non ritira il verdetto.", + humidity: "Umidità", + imageUploaded: "Immagine caricata", + imageUploadedDesc: "La tua immagine è stata caricata con successo.", + imHere: "Sono qui", + invalidCoordinates: "Coordinate non valide", + invalidCoordinatesDesc: "Inserisci una latitudine (-90 a 90) e una longitudine (-180 a 180) valide.", + invalidNpub: "npub non valido", + invalidNpubDesc: "Inserisci un indirizzo npub valido.", + lastReported: "ultima {{time}}", + listGear: "Metti in vendita attrezzatura", + listYourGearHere: "Metti qui in vendita la tua attrezzatura", + loadingChat: "Caricamento chat…", + locationError: "Errore di posizione", + locationFound: "Posizione trovata", + locationFoundDesc: "La tua posizione attuale è stata impostata.", + locationRequired: "Posizione richiesta", + locationRequiredDesc: "Inserisci le coordinate o usa la tua posizione attuale.", + loginRequiredTitle: "Accesso richiesto", + logInToChat: "Accedi per unirti alla chat locale.", + logInToContributePhotos: "Accedi per contribuire con foto", + loginToEditSpot: "Devi accedere per modificare questo spot.", + logInToReport: "Devi essere connesso per segnalare contenuti.", + logInToReportStatus: "Accedi per segnalare lo stato di questo spot.", + logInToSuggestTags: "Accedi per suggerire tag", + manageNip05ToClaim: "Gestisci NIP-05 per rivendicare", + meetAtSpotForPickup: "💡 Incontriamoci in questo spot per uno scambio sicuro", + memberOne: "{{count}} membro", + memberOther: "{{count}} membri", + messageFailed: "Messaggio non riuscito", + messageMapper: "Messaggia il mapper", + messagePlaceholder: "Scrivi a questo spot… (prova /me o /who)", + messagesHiddenOne: "{{count}} messaggio nascosto dal tuo filtro di fiducia. Abbassa il filtro per vederne di più.", + messagesHiddenOther: "{{count}} messaggi nascosti dal tuo filtro di fiducia. Abbassa il filtro per vederne di più.", + messagesHiddenShortOne: "{{count}} messaggio nascosto dal tuo filtro di fiducia", + messagesHiddenShortOther: "{{count}} messaggi nascosti dal tuo filtro di fiducia", + metresAway: "a {{distance}} m", + moderatorVouchedDesc: "Un moderatore ha esaminato questo spot e se ne è fatto garante. Bel lavoro.", + monthsAgo: "{{count}} mese fa", + monthsAgoPlural: "{{count}} mesi fa", + newOwnerNpub: "npub del nuovo proprietario", + newOwnerNpubHint: "Inserisci l'npub dell'utente a cui vuoi trasferire questo spot.", + nip05RequiredToClaim: "⚠️ Verifica NIP-05 necessaria per rivendicare gli skate shop", + noCommunitySignalTitle: "Ancora nessuna foto della community né segnalazione di stato — nessuno ha confermato questo posto.", + breakdownPhotos: "{{count}} foto", + breakdownStatus: "{{count}} segnalazioni di stato", + breakdownComments: "{{count}} commenti", + breakdownReactions: "{{count}} reazioni", + breakdownCollections: "{{count}} salvataggi", + breakdownZaps: "{{count}} zap", + breakdownTags: "{{count}} suggerimenti di tag", + breakdownCrews: "{{count}} crew", + breakdownLab: "{{count}} link pro", + verifyNudgeTitle: "Sii il primo a confermare questo spot", + verifyNudgeBody: "Una foto o un “ho skatato qui” è il modo in cui uno spot viene verificato — aiuta il prossimo skater.", + verifyNudgeStatus: "Ho skatato qui", + communityChip: "Community", + seenChip: "Visto", + noGearListedYet: "Ancora nessuna attrezzatura in vendita", + noMessagesYet: "Ancora nessun messaggio in questo canale locale. Saluta — \"qualcuno skata stasera?\"", + noPhoto: "Nessuna foto", + noReportsYet: "Ancora nessuna segnalazione", + noTags: "Nessun tag", + notASkateSpot: "Non è uno spot di skate", + offerServicesHere: "💡 Offri i tuoi servizi in questo spot", + photoCaptured: "Foto acquisita!", + photoCapturedDesc: "La tua foto è stata caricata con successo.", + photoContributed: "Foto inviata!", + photoContributedDesc: "La tua foto è stata aggiunta a questo spot.", + photosAdded: "Le tue foto sono state aggiunte.", + photosRecommended: "fortemente consigliata — gli spot senza foto restano contrassegnati come Non verificato", + photosUploaded: "{{count}} foto caricate", + photoUploaded: "Foto caricata", + photoUploadedDesc: "Aggiungi una didascalia e invia per contribuire!", + photoUploadFailed: "Caricamento della foto non riuscito", + pleaseTryAgain: "Riprova", + public: "Pubblico", + publicChatTitle: "Chiunque può leggere i messaggi in questo canale — è pubblico e non crittografato.", + recentReports: "Segnalazioni recenti", + recipientRequired: "Destinatario richiesto", + recipientRequiredDesc: "Inserisci l'npub del nuovo proprietario.", + removeAdmin: "Rimuovi (admin)", + removeSpot: "Rimuovi spot", + removeSpotAdminTitle: "Rimuovere questo spot? (admin)", + reportOne: "segnalazione", + reportContent: "Segnala contenuto", + reportContentDesc: "Aiuta a mantenere sicura la community segnalando contenuti inappropriati.", + reportedBySkaters: " da {{count}} skater — in revisione. Se questo è uno spot reale, aggiungi una foto o una segnalazione di stato per confermarlo.", + reportedNotASpot: "Segnalato come non uno spot di skate", + reportingType: "Segnalazione di {{type}}", + reports: "segnalazioni", + reportShop: "Segnala skate shop", + reportSpot: "Segnala spot", + reportStatus: "Segnala stato", + reportSubmitted: "Segnalazione inviata", + reportSubmittedDesc: "Grazie per aiutarci a mantenere SkateSpots sicuro.", + reportSubmittedLong: "Grazie per aiutarci a mantenere SkateSpots sicuro e accurato. La tua segnalazione sarà esaminata da membri fidati della community.", + reportSubmittedTitle: "Segnalazione inviata", + report: { + notASkateSpot: { + label: "Non è uno spot di skate", + description: "Una voce di prova o un luogo per nulla adatto allo skate", + }, + fakeSpot: { + label: "Spot falso/inesistente", + description: "Questo spot non esiste o la posizione è sbagliata", + }, + stolenPhotos: { + label: "Foto rubate/false", + description: "Le foto sono immagini stock o rubate altrove", + }, + spamAd: { + label: "Spam o pubblicità", + description: "Contenuto promozionale o inserzioni duplicate", + }, + dangerousLocation: { + label: "Luogo pericoloso", + description: "Proprietà privata, non sicuro o accesso illegale", + }, + inappropriateContent: { + label: "Contenuto inappropriato", + description: "Contiene contenuti offensivi o per adulti", + }, + impersonation: { + label: "Impersonificazione", + description: "Qualcuno che finge di essere qualcun altro", + }, + other: { + label: "Altro", + description: "Qualcos'altro non elencato sopra", + }, + }, + targetType: { + spot: "Spot", + event: "Evento", + tour: "Tour", + shop: "Skate shop", + user: "Utente", + listing: "Annuncio", + coach: "Coach", + filmer: "Filmer", + }, + sameOwner: "Stesso proprietario", + sameOwnerDesc: "Impossibile trasferire al proprietario attuale.", + saveChanges: "Salva modifiche", + saving: "Salvataggio...", + services: "Servizi", + shareSpotText: "Dai un'occhiata a questo spot di skate: {{title}}", + shelter: "Riparo", + shelterHint: "Questo spot è esposto alle intemperie? Aiuta gli skater a trovare spot asciutti quando piove.", + shopClaimDesc: "Se possiedi o gestisci questo skate shop, puoi rivendicarlo per verificare la proprietà e gestire l'inserzione.", + shopClaimNip05Hint: "Per rivendicare questo skate shop, aggiungi un identificatore NIP-05 che corrisponda al dominio del sito dello shop.", + skatersActiveDesc: "Persone che hanno pubblicato in questo canale nelle ultime 24 h.", + skatersActiveOne: "{{count}} skater attivo qui", + skatersActiveOther: "{{count}} skater attivi qui", + skatersSellingGear: "Gli skater in questo spot vendono attrezzatura", + skateSpot: "Spot di skate", + somethingWentWrong: "Qualcosa è andato storto", + spot: "Spot", + spotAdded: "Spot aggiunto!", + spotAddedDesc: "Il tuo spot di skate è stato pubblicato sulla rete.", + spotAddedNoPhoto: "Pubblicato — e contrassegnato come Non verificato finché qualcuno non aggiunge una foto. Una foto dello spot fa la differenza.", + spotChat: "Chat dello spot", + spotClaimed: "Spot rivendicato!", + spotClaimedDesc: "Ora sei il proprietario di questo spot. Puoi modificarlo dal tuo profilo.", + spotDeleted: "Spot eliminato", + spotDeletedDesc: "Richiesta di eliminazione inviata ai relay. La maggior parte dei relay rimuoverà questo contenuto.", + spotMayAlreadyBeOnMap: "Quello spot potrebbe già essere sulla mappa", + spotMayAlreadyExist: "Questo spot potrebbe già esistere", + spotMayBeAbandoned: "Lo spot potrebbe essere abbandonato", + spotPhotoAlt: "Spot", + spotRemoved: "Spot rimosso", + spotRemovedDesc: "Questo spot è stato rimosso e sarà nascosto in tutto SkateSpots.", + spotSeoDesc: "Vedi questo spot di skate su SkateSpots.", + spotStatus: "Stato dello spot", + spotStatusDesc: "\"{{title}}\" è ancora skatabile? Fai sapere alla community il suo stato attuale.", + spotTypeRequired: "Tipo di spot richiesto", + spotTypeRequiredDesc: "Scegli un tipo di spot così gli skater sanno cosa troveranno.", + spotUpdated: "Spot aggiornato!", + spotUpdatedDesc: "Le tue modifiche sono state pubblicate sulla rete.", + staffVerifiedTitle: "Un admin di SkateSpots ha esaminato e garantito questo spot.", + statusNotePlaceholder: "Opzionale: aggiungi dettagli (es. \"nuovi tappi sul ledge\", \"la sicurezza caccia dopo le 18\")", + statusReported: "Stato segnalato", + statusReportedDesc: "Grazie per mantenere la mappa aggiornata. La tua segnalazione è online.", + submitReport: "Invia segnalazione", + submitting: "Invio...", + suggestedByUser: "Suggerito da {{count}} utente", + suggestedByUsers: "Suggerito da {{count}} utenti", + suggestedTagsContent: "Tag suggeriti per {{title}}: {{tags}}", + suggestNTags: "Suggerisci {{count}} tag", + suggestOneTag: "Suggerisci 1 tag", + suggestTags: "Suggerisci tag", + suggestTagsDesc: "Aiuta a classificare questo spot suggerendo tag pertinenti.", + tags: "Tag", + tagsHint: "Aggiungi tag per caratteristiche, superfici, atmosfere (max {{max}})", + tagsSuggested: "Tag suggeriti!", + tagsSuggestedDesc: "I tuoi suggerimenti di tag sono stati inviati.", + takePhoto: "Scatta foto", + threeDayForecast: "Previsioni a 3 giorni", + tipTheMapper: "Offri una mancia al mapper", + tipTheMapperDesc: "Hai trovato utile questo spot? Invia uno zap per ringraziare il mapper!", + titleRequired: "Titolo richiesto", + titleRequiredDesc: "Inserisci un nome per questo spot.", + today: "Oggi", + tomorrow: "Domani", + transferDesc: "Trasferisci \"{{title}}\" a un altro utente. Questa azione non può essere annullata.", + transferFailed: "Trasferimento non riuscito", + transferOwnership: "Trasferisci proprietà", + transferRequestContent: "Richiesta di trasferimento di proprietà per lo spot \"{{title}}\"", + transferRequested: "Trasferimento richiesto", + transferRequestedDesc: "Il nuovo proprietario dovrà rivendicare lo spot per completare il trasferimento.", + transferring: "Trasferimento...", + transferSpotOwnership: "Trasferisci la proprietà dello spot", + transferWarningDesc: "Dopo il trasferimento, non potrai più modificare o eliminare questo spot.", + typeToSearchTags: "Digita per cercare o aggiungere tag...", + underReview: " — in revisione. Se questo è uno spot reale, aggiungi una foto o una segnalazione di stato per confermarlo.", + untitledSpot: "Spot senza titolo", + unverified: "Non verificato", + updateDetailsFor: "Aggiorna i dettagli di {{title}}", + updateSpotDesc: "Aggiorna le informazioni su questo spot. Tutti i campi contrassegnati con * sono obbligatori.", + uploadAPhoto: "Carica una foto", + uploadAPhotoHint: "Trascina e rilascia o clicca · JPG, PNG, WebP", + uploadedAlt: "Caricato", + uploadFailed: "Caricamento non riuscito", + uploadingPhoto: "Caricamento foto…", + uploadPhotoFirst: "Carica prima una foto.", + uvIndex: "Indice UV", + verifiedBySkateSpots: "Verificato da SkateSpots", + viewPhotoFullScreen: "Vedi foto a schermo intero", + viewPhotoOf: "Vedi foto {{n}} di {{total}}", + warning: "Avviso", + weatherConditions: "Condizioni meteo", + weatherOnly: "solo meteo", + weatherOnlyUnconfirmed: "Solo meteo. Nessuno ha ancora confermato che questo sia uno spot di skate, quindi non c'è un punteggio delle condizioni — aggiungi una foto o una segnalazione di stato per confermarlo.", + whyReporting: "Perché lo stai segnalando?", + wind: "Vento", + yearsAgo: "{{count}} anno fa", + yearsAgoPlural: "{{count}} anni fa", + }, + diyUi: { + title: "DIY — Fai da te", + tagline: "Guide, strumenti aperti e progetti per costruire i tuoi deck, ramp e spot in cemento — poi trova le persone, i luoghi e il mercato che li accompagnano.", + doItWithPeople: "Fallo con altre persone", + backToDiy: "Torna al DIY", + calc: { + title: "Calcolatore del costo del deck", + intro: "Quanto costa produrre un deck — manodopera, attrezzatura, materiali, tempo di lavorazione, imballaggio e margine — e un prezzo di vendita equo. Salvato su questo dispositivo.", + }, + designer: { + title: "Designer di deck", + intro: "Disegna il profilo di uno skateboard o longboard, poi esporta un template 1:1 stampabile, un SVG o un DXF per CNC. Salvato su questo dispositivo.", + presets: "Preset", + dimensions: "Dimensioni", + shape: "Forma", + kicks: "Kick", + hardware: "Fori dei truck", + width: "Larghezza max", + wheelbase: "Wheelbase", + nose: "Lunghezza nose", + tail: "Lunghezza tail", + length: "Lunghezza totale", + waist: "Vita", + endRound: "Arrotondamento estremità", + concave: "Concave", + thickness: "Spessore", + tailKick: "Kick della tail", + noseKick: "Kick del nose", + holeNew: "New school (2.125″)", + holeOld: "Old school (2.5″)", + holeSpacing: "Il new school è 2.125″ × 1.625″ (54 × 41 mm); l'old school è 2.5″ × 1.625″. Fori di montaggio da 3/16″.", + topView: "Vista dall'alto", + sideView: "Profilo laterale", + concaveSection: "Sezione concave", + export: "Esporta", + pdfA4: "PDF 1:1 · A4", + pdfLetter: "PDF 1:1 · Letter", + printNote: "Stampa il PDF al 100% (senza “adatta alla pagina”), poi unisci i fogli usando le croci agli angoli. Anche l'SVG è a grandezza reale.", + note: "Questo è il profilo 2D che tracci e tagli. Per forme 3D complete e progettazione di stampi, un vero strumento CAD resta la scelta giusta.", + }, + source: "Fonte", + comingSoon: "In arrivo", + footer: "Le guide passo passo sono in arrivo. Per ora: trova le persone che costruiscono in The Lab, mappa il tuo spot e compra o vendi nel Marketplace. Lavora in sicurezza — protezioni, guanti e occhiali.", + categories: { + boards: "Tavole", + ramps: "Ramp & ostacoli in legno", + concrete: "Cemento & spot DIY", + repairs: "Riparazioni & messa a punto", + tools: "Strumenti & progetti", + }, + cards: { + ossBuild: { + title: "Costruisci uno skateboard", + blurb: "Fabbricazione del deck passo passo — impiallacciatura, stampi, presse e finitura.", + }, + sk8cad: { + title: "SK8CAD", + blurb: "CAD open source per forme dei deck, concave e progettazione di stampi.", + }, + deckCost: { + title: "Costo & prezzo del deck", + blurb: "Calcola materiali, manodopera e un prezzo di vendita equo prima di costruire.", + }, + deckDesigner: { + title: "Designer di deck", + blurb: "Disegna un profilo e stampa un template 1:1 — oppure esporta SVG/DXF per CNC.", + }, + ledgeBox: { + title: "Costruisci un ledge o un box", + blurb: "Un ostacolo in legno adatto ai principianti, costruibile in un weekend.", + }, + quarterpipe: { + title: "Costruisci un quarterpipe", + blurb: "Progetti per ramp, transition e coping per un mini in giardino.", + }, + flatbar: { + title: "Costruisci una flatbar", + blurb: "Economica, portatile e il modo migliore per imparare i rail.", + }, + concreteBasics: { + title: "Basi del cemento", + blurb: "Miscelazione, casseforme e finitura di un ledge o una bank che dura.", + }, + coping: { + title: "Coping & spigoli", + blurb: "Come montare il coping e rifinire una transition per un grind fluido.", + }, + buyParts: { + title: "Compra componenti & attrezzatura", + blurb: "Trova deck, ferramenta e strumenti dai venditori nel Marketplace.", + }, + mapSpot: { + title: "Mappa il tuo spot DIY", + blurb: "Hai costruito qualcosa? Aggiungilo alla mappa così gli altri possono trovarlo e skatarlo.", + }, + regrip: { + title: "Ri-grippa una tavola", + blurb: "Rimuovi il vecchio grip e applica il nuovo con precisione.", + }, + tune: { + title: "Metti a punto bearings & trucks", + blurb: "Pulisci i bearings, sostituisci i bushing e regola la geometria dei truck.", + }, + printMolds: { + title: "Stampi stampati in 3D", + blurb: "File stampabili di stampi e basi di allineamento dalla community.", + }, + sk8cadTools: { + title: "Strumenti per stampi & allineamento", + blurb: "Progetta stampi con basi di allineamento integrate.", + }, + }, + actions: { + findBuilder: { + title: "Trova un builder", + blurb: "Builder di ramp e DIY in The Lab che possono progettarlo o colarlo per te.", + }, + findCrew: { + title: "Trova un crew DIY", + blurb: "Crew dediti alla costruzione — unisciti a quelli che trasformano gli spot in realtà.", + }, + mapSpot: { + title: "Mappa uno spot DIY", + blurb: "Aggiungi lo spot che hai costruito così vive sulla mappa.", + }, + sellBuilds: { + title: "Vendi le tue creazioni", + blurb: "Metti in vendita deck, ramp o componenti che produci nel Marketplace.", + }, + findCoach: { + title: "Trova un coach", + blurb: "Coach che insegnano moduli di skate DIY e costruzione di spot.", + }, + }, + }, + labelsUi: { + spotCategory: { + street: { + label: "Street", + description: "Spot trovati a caso, terreno urbano", + }, + transition: { + label: "Transition", + description: "Superfici curve/in ramp", + }, + park: { + label: "Park", + description: "Skatepark costruiti", + }, + plaza: { + label: "Plaza", + description: "Piazze urbane (come MACBA, Love Park)", + }, + }, + spotFeature: { + wallrides: "Wallride", + stairs: "Scale & handrail", + rails: "Rail", + ledges: "Ledge & cordoli", + gaps: "Gap", + flatground: "Flatground", + "manual-pads": "Manual Pad", + "half-pipes": "Half Pipe", + "quarter-pipes": "Quarter Pipe", + "mini-ramps": "Mini Ramp", + bowls: "Bowl", + vert: "Vert Ramp", + "mega-ramps": "Mega Ramp", + hubbas: "Hubba", + "euro-gaps": "Euro Gap", + banks: "Bank", + "spine-ramps": "Spine Ramp", + "roll-ins": "Roll-in", + hips: "Hip", + volcano: "Volcano", + pyramids: "Pyramid / Funbox", + "snake-runs": "Snake Run", + "pump-track": "Roller del pump track", + "flat-bars": "Flat Bar", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + wallrides: "Wallride", + stairs: "Scale & handrail", + rails: "Rail", + ledges: "Ledge & cordoli", + gaps: "Gap", + flatground: "Flatground", + "manual-pads": "Manual Pad", + "half-pipes": "Half Pipe", + "quarter-pipes": "Quarter Pipe", + "mini-ramps": "Mini Ramp", + bowls: "Bowl", + vert: "Vert Ramp", + "mega-ramps": "Mega Ramp", + hubbas: "Hubba", + "euro-gaps": "Euro Gap", + banks: "Bank", + "spine-ramps": "Spine Ramp", + "roll-ins": "Roll-in", + hips: "Hip", + volcano: "Volcano", + pyramids: "Pyramid / Funbox", + "snake-runs": "Snake Run", + "pump-track": "Roller del pump track", + "flat-bars": "Flat Bar", + diy: "DIY", + rail: "Rail", + ledge: "Ledge", + gap: "Gap", + bowl: "Bowl", + stall: "Stall", + slappy: "Slappy", + }, + access: { + public: { + label: "Pubblico - Aperto a tutti", + }, + private: { + label: "Proprietà privata - Permesso necessario", + }, + locals: { + label: "Chiedi prima ai local", + }, + }, + shelter: { + outdoor: { + label: "All'aperto", + short: "All'aperto", + description: "Completamente esposto — la pioggia ferma tutto", + }, + partial: { + label: "Parzialmente coperto", + short: "Parzialmente coperto", + description: "Alcuni ostacoli restano asciutti", + }, + covered: { + label: "Coperto / sotto tettoia", + short: "Coperto", + description: "All'aperto ma sotto un tetto", + }, + indoor: { + label: "Al chiuso", + short: "Al chiuso", + description: "Completamente chiuso — skata con qualsiasi tempo", + }, + }, + eventType: { + contest: "Contest", + demo: "Demo", + session: "Session", + workshop: "Workshop", + premiere: "Premiere", + tradeshow: "Fiera", + gameskate: "Game of Skate", + concert: "🎸 Concerto", + jam: "🎵 Jam", + festival: "🎪 Festival", + popup: "🎯 Pop-Up", + }, + gearCategory: { + deck: "Deck", + trucks: "Trucks", + wheels: "Wheels", + bearings: "Bearings", + shoes: "Scarpe da skate", + clothing: "Abbigliamento", + protective: "Protezioni", + stickers: "Sticker", + wax: "Wax", + tools: "Strumenti", + griptape: "Griptape", + rubbrick: "Rub Brick", + }, + gearCondition: { + new: { + label: "Nuovo", + description: "Mai usato, ancora nella confezione", + }, + like_new: { + label: "Come nuovo", + description: "Appena usato, condizioni eccellenti", + }, + good: { + label: "Buono", + description: "Usura normale, funziona perfettamente", + }, + well_used: { + label: "Molto usato", + description: "Mostra usura ma funziona ancora", + }, + }, + priceType: { + fixed: { + label: "Prezzo fisso", + description: "Prezzo impostato in USD o sats", + }, + free: { + label: "Gratis", + description: "Regalato", + }, + trade: { + label: "Scambio", + description: "Vuole scambiare", + }, + offer: { + label: "Fai un'offerta", + description: "Prezzo trattabile", + }, + }, + listingType: { + selling: { + label: "Vendita", + description: "Attrezzatura in vendita", + }, + wtb: { + label: "Cerco", + description: "In cerca di attrezzatura specifica", + }, + }, + tour: { + spotType: { + street: "Street", + park: "Park", + diy: "DIY", + transition: "Transition", + hidden: "Gemme nascoste", + }, + category: { + local: { + label: "Tour locale", + description: "Mostra gli spot nascosti della tua città", + }, + national: { + label: "Tour nazionale", + description: "Viaggi on the road in più città del paese", + }, + international: { + label: "Tour internazionale", + description: "Avventure oltre confine in più paesi", + }, + destruction: { + label: "Distruzione mondiale", + description: "Competizione globale a squadre in stile KOTR", + }, + }, + }, + crew: { + vibe: { + street: "Street", + transition: "Transition / Vert", + park: "Park", + diy: "DIY", + cruising: "Cruising / Filming", + oldschool: "Old School", + allterrain: "All Terrain", + girls: "Ragazza / Donna", + youth: "Giovani / Groms", + adaptive: "Adaptive", + punk: "Punk", + hiphop: "Rap / Hip-Hop", + }, + focus: { + mixed: "Misto / Generale", + builder: "DIY & Builder", + photo: "Foto & Video", + coaching: "Coaching", + art: "Arte & Design", + music: "Band & Musica", + wellness: "Allenamento & Fisioterapia", + }, + focusDescription: { + mixed: "Un crew di skate normale — appare solo nella pagina Crew.", + builder: "Un crew DIY / di costruzione park — appare anche in The Lab sotto Builder.", + photo: "Un crew di riprese, fotografia o montaggio — appare anche in The Lab sotto Foto & Video.", + coaching: "Un crew di coaching / lezioni — appare anche in The Lab sotto Coaching.", + art: "Un collettivo di arte, design, graffiti o tatuaggi — appare anche in The Lab sotto Arte & Design.", + music: "Una band o un collettivo musicale — appare anche in The Lab sotto Musica.", + wellness: "Un crew di allenamento, fitness o fisioterapia — appare anche in The Lab sotto Allenamento.", + }, + lookingFor: { + filmer: "Filmer", + photographer: "Fotografo", + editor: "Montatore video", + coach: "Coach", + builder: "Builder di ramp", + artist: "Artista / Designer", + musician: "Musicista / Band", + members: "Nuovi membri", + }, + role: { + filmer: "Filmer", + photographer: "Fotografo", + editor: "Montatore", + coach: "Coach", + builder: "Builder", + artist: "Artista", + graffiti: "Graffiti", + tattoo: "Tatuaggio", + trainer: "Personal trainer", + musician: "Musicista", + judge: "Giudice", + manager: "Team Manager", + og: "OG", + }, + }, + memberVisibility: { + public: { + label: "Pubblico", + description: "Chiunque può vederti in questo crew — nella pagina pubblica del crew e nella scoperta dei compagni di crew.", + }, + crew: { + label: "Solo crew", + description: "Solo i compagni di crew confermati e il fondatore ti vedono qui. Per tutti gli altri appari come un “membro nascosto” anonimo. Nota: questa è privacy a livello di app — il tuo tag di appartenenza esiste comunque pubblicamente sui relay, semplicemente non viene mai mostrato agli estranei.", + }, + }, + tagCategory: { + features: { + name: "Caratteristiche", + description: "Ostacoli e terreno", + }, + surfaces: { + name: "Superfici", + description: "Materiali e texture", + }, + sizes: { + name: "Dimensioni", + description: "Misure e scala", + }, + stairs: { + name: "Numero di gradini", + description: "Numero di scale", + }, + vibes: { + name: "Atmosfera", + description: "Ambiente e condizioni", + }, + location: { + name: "Posizione", + description: "Contesto della posizione", + }, + tricks: { + name: "Trick", + description: "Adatto a trick specifici", + }, + }, + spotTagCategory: { + street: { + label: "Street", + description: "Spot di strada - scale, rail, ledge", + }, + park: { + label: "Park", + description: "Skatepark - pubblici o privati", + }, + diy: { + label: "DIY", + description: "Spot DIY/fatti in casa", + }, + plaza: { + label: "Plaza", + description: "Piazze pubbliche con architettura skate-friendly", + }, + }, + status: { + active: { + label: "Attivo", + description: "Tutto ok — skata.", + }, + bust: { + label: "Bust", + description: "Alto rischio di cacciata — sicurezza o polizia.", + }, + skate_stopped: { + label: "Skate-stopped", + description: "Bloccato/tappato, ma in parte skatabile.", + }, + closed: { + label: "Chiuso", + description: "Temporaneamente chiuso — lavori o evento.", + }, + gone: { + label: "Scomparso", + description: "Demolito, asfaltato o recintato per sempre.", + }, + }, + price: { + free: "GRATIS", + trade: "Scambio", + makeOffer: "Fai un'offerta", + offer: "Offerta", + }, + }, + feesUi: { + feeFeaturedEventLabel: "Evento in evidenza", + feeFeaturedEventDesc: "Metti in evidenza il tuo evento su SkateSpots", + feeFeaturedEventBenefit: "Il tuo evento appare in cima alla pagina degli eventi", + feeLabProfileLabel: "Profilo Lab Pro", + feeLabProfileDesc: "Metti in evidenza i tuoi servizi in The Lab", + feeLabProfileBenefit: "Badge Pro + posizione in evidenza quando gli skater sfogliano The Lab", + feeFeaturedShopLabel: "Skate shop in evidenza", + feeFeaturedShopDesc: "Metti in evidenza il tuo skate shop sulla mappa e nella directory", + feeFeaturedShopBenefit: "Badge verificato + pin in evidenza sulla mappa", + feeFeaturedTourLabel: "Tour in evidenza", + feeFeaturedTourDesc: "Metti in evidenza il tuo tour su SkateSpots", + feeFeaturedTourBenefit: "Badge Pro + posizione in cima quando gli skater sfogliano i tour", + duration7d: "7 giorni", + duration30d: "1 mese", + duration90d: "3 mesi", + duration365d: "12 mesi", + metaActive: "{{label}} — Attivo", + daysRemainingOne: "{{count}} giorno rimanente", + daysRemainingMany: "{{count}} giorni rimanenti", + zapRequestContent: "SkateSpots {{label}} ({{tier}})", + errGenerate: "Impossibile generare la fattura", + paymentReceived: "⚡ Pagamento ricevuto!", + paymentReceivedDesc: "{{amount}} sats — {{label}} è ora attivo.", + autoPayFailed: "Pagamento automatico non riuscito", + autoPayFailedDesc: "Paga manualmente usando il QR o la fattura qui sotto.", + payStatusUnknown: "Stato del pagamento sconosciuto — il pagamento potrebbe essere andato a buon fine. Controlla il tuo wallet prima di pagare di nuovo.", + invoiceCopied: "Fattura copiata!", + activeBang: "{{label}} attivo!", + chooseDuration: "Scegli la durata", + bestValue: "Miglior valore", + perDay: "{{price}}/giorno", + validFor: "Valido per", + amountLine: "~${{usd}} USD · a {{name}} · {{tier}}", + payToContinue: "Paga {{amount}} sats per continuare", + generating: "Generazione fattura…", + processing: "Elaborazione del pagamento…", + invoiceQrAlt: "QR della fattura Lightning", + copyInvoice: "Copia fattura", + openWallet: "Apri wallet", + payConnected: "Paga con il wallet collegato", + scanAny: "Scansiona con qualsiasi wallet Lightning", + tryAgain: "Riprova", + proReceiptTitle: "🦧⚡ Sasquatch Pro — sei dentro!", + proReceiptPass: "Pass: {{pass}} ({{sats}} sats)", + proReceiptActiveUntil: "Attivo fino al: {{until}}", + proReceiptUnlocked: "Cosa hai sbloccato:", + proReceiptBullet1: "• Assistente personale — leggo il tuo Stash, i crew, gli spot e gli annunci", + proReceiptBullet2: "• Bozze di azioni — metti in vendita attrezzatura, pubblica lo stato di uno spot, pianifica viaggi (confermi tu)", + proReceiptBullet3: "• Risposte che usano il tuo contesto personale, non solo dati pubblici", + proReceiptBullet4: "• ⚡ Sostieni direttamente SkateSpots e lo mantieni gratuito + senza pubblicità", + proReceiptThanks: "Grazie per mantenere SkateSpots gratuito e senza pubblicità. Ora vai a shreddare. 🛹", + proReceiptSubject: "Ricevuta Sasquatch Pro", + receiptContent: "Sasquatch Pro — pass sostenitore {{tier}} 🦧⚡", + receiptAlt: "Pass sostenitore Sasquatch Pro ({{tier}}), valido fino al {{until}}", + purchaseComment: "Sasquatch Pro — {{tier}} 🦧", + errLogin: "Accedi per passare a Pro.", + errStart: "Impossibile avviare l'acquisto.", + errRecord: "Impossibile registrare il tuo pass.", + }, + cardUi: { + save: "Salva la card su Nostr", + saved: "Card salvata", + savedDesc: "La tua card è ora firmata e verificabile.", + saveFailed: "Impossibile salvare la card", + notPublished: "Non pubblicata", + titleNeon: "Rider", + titleRest: "Card", + saveFrontPng: "Salva fronte (PNG)", + expired: "SCADUTA", + logoUploaded: "Logo caricato", + logoUploadFailed: "Impossibile caricare il logo", + venue: "Sede collegata (opzionale)", + venueNone: "Nessuna sede", + venueHint: "Scegli uno dei tuoi spot per collegare questo pass a una sede. Un verificatore confermerà che la possiedi.", + venuePick: "Scegli la tua sede", + parkNoVenue: "Un pass Park può essere emesso solo dal proprietario della sede — mappa prima uno spot che possiedi.", + parkAddVenue: "Aggiungi uno spot", + parkNeedsVenue: "Scegli una sede che possiedi", + parkIssued: "Pass emessi", + parkRevoke: "Revoca", + parkRevoked: "Revocato", + parkRevokeFailed: "Impossibile revocare", + v: { + valid: "Valido", + validDesc: "Firma valida ed emessa dalla sede.", + expired: "Scaduto", + expiredDesc: "Oltre la data di validità.", + revoked: "Revocato", + revokedDesc: "L'emittente ha annullato questo pass — non accettarlo.", + invalid: "Non valido", + invalidDesc: "La firma non si verifica. Non fidarti.", + notFound: "Non trovato", + notFoundDesc: "Nessun record corrispondente sui relay.", + unverifiedIssuer: "Emittente non verificato", + unverifiedIssuerDesc: "Questo pass indica una sede non posseduta dalla chiave dell'emittente.", + notBound: "Non collegato", + notBoundDesc: "Non collegato a una sede — non prova nulla sull'accesso.", + noRsvp: "Nessun RSVP", + noRsvpDesc: "Il titolare non ha un RSVP registrato per questo evento.", + admitted: "Ammesso", + admittedDesc: "Evento dell'organizzatore + il titolare ha fatto RSVP.", + noHolder: "Nessun titolare nel link", + noHolderDesc: "Questo QR non ha un titolare del biglietto (`?h=`), quindi non è possibile controllare il titolare.", + }, + passes: { + tab: "I miei pass", + pass: "Pass di accesso", + none: "Ancora nessun pass. Quando una sede o un organizzatore te ne emette uno, apparirà qui.", + }, + facets: { + title: "Mostra aspetti dell'identità", + crews: "Crew", + local: "Locale", + roles: "Ruoli Lab", + }, + roles: { + coach: "Coach", + filmer: "Filmer", + editor: "Montatore", + photographer: "Fotografo", + builder: "Builder", + artist: "Artista", + graffiti: "Graffiti", + tattoo: "Tatuaggio", + trainer: "Personal trainer", + musician: "Musicista", + judge: "Giudice", + organizer: "Organizzatore", + barber: "Barbiere", + }, + crew: { + crewCard: "CREW CARD", + crewSub: "Il tuo crew, su una card", + pick: "Scegli un crew", + none: "Non fai ancora parte di un crew — unisciti o creane uno prima.", + hint: "La card è costruita dai dati firmati del crew stesso. Modifica il crew nella sua pagina per cambiarla.", + members: "MEMBRI", + spots: "SPOT", + est: "Dal {{year}}", + openCall: "Chiamata aperta", + verifiedCrew: "Crew verificato", + viewCrew: "Vedi il crew", + }, + event: { + pass: "EVENT PASS", + passSub: "Un pass per un evento a cui partecipi", + pick: "Scegli un evento", + none: "Ancora nessun evento — creane uno o fai RSVP a uno prima.", + hint: "Il pass è costruito dai dati firmati dell'evento stesso. Solo l'organizzatore può modificarlo.", + admits: "AMMETTE", + going: "{{count}} partecipanti", + verifiedEvent: "Evento verificato", + viewEvent: "Vedi l'evento", + issuePass: "Emetti un pass di check-in", + issuePassBtn: "Emetti pass", + issuePassHint: "Un pass firmato per uno spettatore specifico — lo mostrano all'ingresso.", + notOrganiser: "Solo l'organizzatore può emettere pass", + passIssued: "Pass emesso", + issueFailed: "Impossibile emettere il pass", + issuedPasses: "Pass di check-in emessi", + }, + studio: { + unsaved: "Modifiche non salvate", + saved: "Salvato", + saveChanges: "Salva modifiche", + allSaved: "Salvato — aggiornato", + showOnCard: "Mostra sulla card", + derived: "Dal tuo profilo Skater", + noSkaterProfile: "Ancora nessun profilo Skater —", + editSkaterProfile: "aggiungi i tuoi stili & livello", + noPhoto: "Ancora nessuna foto profilo —", + addPhoto: "aggiungine una nel tuo profilo", + finishTitle: "Completa la tua card", + finishDesc: "Una foto e un profilo Skater la fanno sembrare vera.", + checkPhoto: "Foto profilo", + checkName: "Nome visualizzato", + checkProfile: "Stili & livello", + checkCrew: "Unisciti a un crew", + moreTypes: "Altri tipi di card si sbloccano man mano che mappi spot che possiedi, ti unisci a crew o fai RSVP agli eventi.", + accent: "Colore d'accento", + accentHint: "Sostituisce l'accento del tema", + accentClear: "Usa il colore del tema", + logo: "Logo / stemma personalizzato", + logoAdd: "Carica", + logoChange: "Cambia", + logoClear: "Rimuovi", + }, + back: { + title: "Lato posteriore stampabile", + desc: "Crew, ruoli, sponsor & link sul retro", + showBack: "Mostra retro", + showFront: "Mostra fronte", + empty: "Ancora niente qui — aggiungi crew, ruoli o sponsor.", + }, + verify: { + checking: "Verifica della card…", + notFound: "Card non trovata", + notFoundDesc: "Nessun evento corrispondente trovato sui relay. Potrebbe essere stato eliminato o il link è sbagliato.", + invalid: "Firma non valida", + invalidDesc: "Questo evento esiste ma la sua firma non si verifica. Non fidarti.", + authentic: "Autentica", + authenticDesc: "La firma dell'emittente è valida.", + kind: "Tipo", + kindPark: "Park Access Card", + kindRider: "Rider Card", + kindCrew: "Crew Card", + kindEvent: "Pass evento", + organiser: "Organizzatore", + expired: "Scaduto", + valid: "Valido", + holder: "Titolare", + ticketHolder: "Titolare del biglietto", + rsvp: "RSVP", + rsvpGoing: "Partecipo", + rsvpInterested: "Interessato", + rsvpNone: "Nessun RSVP trovato", + revoked: "Pass revocato", + revokedDesc: "L'emittente ha annullato questo pass — non accettarlo.", + issuedBy: "Emesso da", + accessLevel: "Livello di accesso", + validThru: "Valido fino al", + selfIssued: "Stato", + selfIssuedDesc: "Carta d'identità autoemessa", + venue: "Sede", + venueVerified: "Verificato — la chiave del proprietario di questa sede corrisponde all'emittente.", + venueMismatch: "Questo pass indica una sede non posseduta dalla chiave dell'emittente.", + venueNone: "Non collegato a una sede.", + viewCard: "Vedi la card", + disclaimer: "Una firma valida prova chi ha firmato questa card — non è una prova di abilità né di diritti di accesso oltre a quelli emessi dalla sede.", + details: "Dettagli", + invalidLink: "Link non valido", + invalidLinkDesc: "Non sembra un link valido per una card.", + }, + public: { + invalid: "Non sembra un link valido per una card.", + createYourOwn: "Crea la tua card", + editYourCard: "Modifica la tua card", + backToEditor: "Torna all'editor", + backHome: "Torna alla home", + notCustomised: "Questo skater non ha ancora personalizzato la sua card — questo è l'aspetto predefinito.", + verifyNote: "Scansiona il QR sulla card per verificarla.", + }, + }, + routeUi: { + destination: "Destinazione", + routeTo: "Percorso verso {{label}}", + routeToLabel: "Percorso verso", + search: "Cerca", + description: "Opzioni di percorso e indicazioni in-app.", + routeMapAria: "Mappa del percorso", + findingLocation: "Ricerca della tua posizione…", + plottingRoute: "Tracciamento del percorso…", + refiningLocation: "Affinamento della posizione…", + offlineSavedRoute: "Offline · percorso salvato {{age}}", + tapMapStart: "Tocca la mappa per impostare il punto di partenza", + fitRouteAria: "Adatta l'intero percorso sulla mappa", + wholeRoute: "Percorso intero", + next: "Avanti", + nextStep: "Avanti · passo {{n}}", + followTheLine: "Segui la linea", + toTheTurn: "fino alla svolta", + toGo: "da percorrere", + tryAgain: "Riprova", + mode: { + foot: "Skate / a piedi", + bike: "Bici", + moto: "Moto", + car: "Auto", + transit: "Mezzi pubblici", + }, + from: "Da", + myLocation: "La mia posizione", + tapTheMap: "Tocca la mappa…", + chooseOnMap: "Scegli sulla mappa", + direct: "diretto", + transferOne: "1 cambio", + transfers: "{{count}} cambi", + options: "{{count}} opzioni", + ride: "corsa", + arrive: "arrivo", + speedAvg: "{{speed}} km/h media", + stepsCount: "{{count}} passi", + onABoard: "su una tavola", + usesDrivingRoads: "usa strade per auto", + drivingEstimate: "stima di guida", + updating: "aggiornamento…", + pickMode: "Scegli un mezzo per vedere il tuo percorso.", + waitingLocation: "In attesa della tua posizione…", + routeSteps: "Passi del percorso", + walkingRoute: "percorso a piedi — più veloce su una tavola", + planningView: "Vista pianificazione — tocca Start per seguire con svolte in tempo reale, voce e arrivo.", + leaveNow: "Parti ora", + departAt: "Partenza alle", + arriveBy: "Arrivo entro", + departureTime: "Ora di partenza", + arrivalTime: "Ora di arrivo", + only: "Solo", + clear: "cancella", + itinerary: "Itinerario", + group: { + bus: "Bus", + tram: "Tram", + metro: "Metro", + train: "Treno", + ferry: "Traghetto", + }, + walk: "A piedi", + rideVerb: "Vai", + walkLower: "a piedi", + rideLower: "vai", + toStop: "a", + track: "binario {{track}}", + stopOne: "1 fermata", + stopsCount: "{{count}} fermate", + tickets: "biglietti ↗", + done: "Fatto", + stop: "Ferma", + start: "Avvia", + arrived: "Sei arrivato. 🛹", + voiceOnNote: "Schermo sempre acceso · voce attiva — svolte e arrivo vengono pronunciati.", + voiceOffNote: "Schermo sempre acceso · voce disattivata.", + followNote: "Svolte, voce e arrivo mentre vai. Mantiene lo schermo acceso.", + voiceOffAria: "Disattiva la guida vocale", + voiceOnAria: "Attiva la guida vocale", + voiceStart: "Avvio della navigazione", + voiceArrived: "Sei arrivato", + voiceIn: "Tra {{metres}} metri, {{instruction}}", + voiceContinue: "continua", + voiceContinueCaps: "Continua", + errPermissionDenied: "Permesso alla posizione negato.", + errWaitingGps: "In attesa di un fix GPS…", + errPermissionDeniedLong: "Permesso alla posizione negato. Attiva la posizione per calcolare il percorso da dove sei.", + errNoLocation: "Impossibile ottenere la tua posizione. Riprova.", + errNoLocationShort: "Impossibile ottenere la tua posizione.", + errTransitNoRouteFiltered: "Nessun percorso per quell'ora o mezzo di trasporto — prova un'altra ora o includi più mezzi.", + errTransitNoRoute: "Nessun percorso con mezzi pubblici trovato qui — quest'area potrebbe non pubblicare orari aperti.", + errTransitUnreachable: "Impossibile raggiungere il servizio dei mezzi pubblici. Controlla la connessione e riprova.", + errRoutingBusy: "Il servizio di routing è occupato in questo momento — riprova tra poco.", + errNoRouteMode: "Nessun percorso per questo mezzo — la destinazione potrebbe essere fuori dalla rete stradale. Prova un altro mezzo.", + errRoutingUnreachable: "Impossibile raggiungere il servizio di routing. Controlla la connessione e riprova.", + departures: "Partenze", + upcomingFrom: "Prossime partenze da {{stop}}", + loadingDepartures: "Caricamento partenze…", + noDepartures: "Nessuna partenza in arrivo trovata in questa fermata.", + live: "live", + cancelled: "cancellato", + refresh: "Aggiorna", + tripLoginTitle: "Accedi per salvare", + tripLoginDesc: "Accedi per conservare questo viaggio come Raccolta.", + tripCollectionTitle: "Viaggio di skate a {{destination}} 🛹", + tripCollectionDesc: "Piano di viaggio di The Sasquatch — {{count}} giorni a {{destination}}.", + tripCollectionDescOne: "Piano di viaggio di The Sasquatch — {{count}} giorno a {{destination}}.", + tripSavedTitle: "Salvato nelle Raccolte 🦧", + tripSavedDesc: "Il tuo viaggio a {{destination}} è salvato.", + tripSaveFailed: "Impossibile salvare", + tripSaveFailedDesc: "Riprova tra un secondo.", + daysInDestinationOne: "{{count}} giorno a {{destination}}", + daysInDestination: "{{count}} giorni a {{destination}}", + wetForecast: "Previsioni di pioggia — contatta un crew locale per opzioni coperte/al chiuso.", + dayLabel: "Giorno {{n}}", + freeSkate: "Skate libero — esplora e filma. 🎥", + tapToBook: "tocca per prenotare / zappa ⚡", + localCrews: "Crew locali", + saving: "Salvataggio…", + savedToCollections: "Salvato nelle Raccolte", + saveSpotOne: "Salva {{count}} spot in una Raccolta", + saveSpots: "Salva {{count}} spot in una Raccolta", + flights: "Voli", + stays: "Alloggi", + gettingAround: "Come muoversi", + noMiddleman: "Io pianifico lo skate — voli e alloggi si aprono sui siti reali (niente KYC, niente intermediari).", + ageJustNow: "adesso", + ageMinAgo: "{{count}} min fa", + ageHourAgo: "{{count}} h fa", + ageDayAgo: "{{count}} g fa", + skateRightHere: "proprio qui", + skateMin: "~{{count}} min di cruise", + skateHours: "~{{hours}} h di cruise", + maneuver: { + headOut: "Parti", + arrive: "Arriva allo spot", + continueStraight: "Continua", + bearLeft: "Tieni leggermente a sinistra", + bearRight: "Tieni leggermente a destra", + turnLeft: "Gira a sinistra", + turnRight: "Gira a destra", + sharpLeft: "Curva stretta a sinistra", + sharpRight: "Curva stretta a destra", + turn: "Gira", + keepLeft: "Mantieni la sinistra", + keepRight: "Mantieni la destra", + takeFork: "Prendi il bivio", + merge: "Immetiti", + roundabout: "Prendi la rotatoria", + takeRamp: "Prendi la rampa", + takeExit: "Prendi l'uscita", + }, + maneuverOnto: "{{instruction}} su {{road}}", + }, + sasquatchUi: { + live: "live", + offline: "offline", + genericTitle: "Assistente SkateSpots 🦧", + genericGreeting: "Ehi! Sono The Sasquatch. Chiedimi qualsiasi cosa su spot, eventi, coach, attrezzatura o su come funziona l'app. Ho dati in tempo reale dal relay di SkateSpots!", + q1: "Pianificami 3 giorni a Lisbona", + q2: "Trova spot vicino a me", + q3: "Ci sono eventi in arrivo?", + q4: "Cosa sono i crew?", + q5: "Come funzionano gli zap?", + q6: "Cos'è Nostr?", + q7: "Cos'è il mio Stash?", + q8: "È gratis?", + bubbleTitle: "Premi e trascina per spostare · Tocca per aprire", + openGuideAria: "Apri la guida di Sasquatch", + hideAria: "Nascondi l'assistente Sasquatch", + hide: "Nascondi assistente", + showAria: "Mostra l'assistente Sasquatch", + activeUntil: "Attivo fino al {{date}}", + platformOwner: "Proprietario della piattaforma", + upgradeTitle: "Passa a Sasquatch Pro", + goPro: "Passa a Pro", + goProBlurb: "AI personale · da 2k sats", + aiBalanceTitle: "Saldo crediti AI Sasquatch (solo proprietario) — ricarica su {{provider}}", + aiChip: "⚡ AI {{balance}}", + minimizeToBubbleAria: "Riduci a bolla", + minimize: "Riduci", + closePanelAria: "Chiudi pannello", + close: "Chiudi", + askLab: "Chiedi su Coaching & Filming", + askMap: "Chiedi su spot, skate shop & attrezzatura", + askAnything: "Chiedimi qualsiasi cosa 🛹", + quickQuestions: "Domande rapide:", + you: "🧑 Tu", + thinking: "sto pensando...", + inputPlaceholder: "Chiedi su spot, eventi, coach...", + liveDataFrom: "Dati in tempo reale da", + nostrRelays: "relay Nostr", + clear: "cancella", + gettingLocation: "📍 Localizzazione in corso…", + findingClosest: "🔍 Ricerca degli spot più vicini…", + checkingLive: "🔍 Controllo dei dati in tempo reale…", + planningTrip: "🗺️ Pianificazione del tuo viaggio a {{destination}}...", + searchingRelays: "🔍 Ricerca sui relay di {{tool}}...", + perk1: "Assistente personale — Sasquatch legge il tuo Stash, i tuoi crew, spot e annunci", + perk2: "Bozze di azioni: metti in vendita attrezzatura, pubblica uno stato di skate, pianifica un viaggio — confermi tu prima che qualsiasi cosa venga pubblicata", + perk3: "Le risposte usano il tuo contesto personale, non solo dati pubblici", + perk4: "⚡ Sostieni direttamente SkateSpots e lo mantieni gratuito e senza pubblicità", + welcomeTitle: "Grazie per sostenere Sasquatch Pro! 🦧⚡", + welcomeDesc: "Pagamento inviato — il tuo pass si attiva quando il provider lo conferma (di solito entro un minuto). Grazie per mantenere le strade libere.", + invoiceCopied: "Fattura copiata", + dialogDesc: "Potenzia la tua guida AI per lo skate. Il 100% finanzia un'app di comunità gratuita e senza pubblicità.", + proSupporter: "Sei un sostenitore Pro ⚡", + extendPrompt: "Vuoi estendere? Scegli un livello qui sotto per aggiungere tempo.", + scanToPayPre: "Scansiona per pagare", + scanToPayAmount: "{{sats}} sats", + scanToPayPost: "per {{label}} di Pro", + invoiceQrAlt: "QR della fattura Lightning", + copyInvoice: "Copia fattura", + ivePaid: "Ho pagato", + ivePaidHint: "Tocca \"Ho pagato\" dopo che il tuo wallet conferma — questo registra il tuo pass sulla tua identità Nostr.", + freeStaysPre: "Sasquatch gratis resta gratis — ricerca pubblica di spot/eventi/coach, pianificazione viaggi + il glossario completo dei trick. Pro aggiunge lo strato ", + freeStaysEmphasis: "personale + azioni", + freeStaysPost: ".", + loginFirst: "Accedi prima per fare l'upgrade.", + paysTo: "Paga a", + overLightning: "tramite Lightning. Collegato al tuo npub.", + popular: "Popolare", + sats: "sats", + extend: "Estendi", + done: "Fatto!", + cancelledNothing: "Annullato — non è stato pubblicato nulla.", + draftReview: "Bozza — rivedi & conferma", + statusTextPlaceholder: "Testo dello stato", + titlePlaceholder: "Titolo", + priceSatsPlaceholder: "Prezzo (sats)", + conditionPlaceholder: "Condizioni", + cancel: "Annulla", + aiTitle: "Sasquatch AI", + owner: "Proprietario", + notConfigured: "non configurato", + unavailable: "non disponibile", + satsValue: "{{balance}} sats", + theNode: "il nodo", + lowBalance: "In esaurimento — ricarica su {{provider}} o l'AI passerà al provider senza chiave.", + aiDesc: "AI a pagamento per richiesta, finanziata in sats tramite Routstr. Si ricarica quando è bassa.", + tier7d: "7 giorni", + tier1m: "1 mese", + tier3m: "3 mesi", + tier1y: "1 anno", + badgeTry: "Provalo", + badgeOff20: "20% di sconto", + badgeBest: "Miglior valore · 40% di sconto", + draftPostStatusTitle: "Pubblica uno stato di skate", + draftAutoExpires: "Scade automaticamente tra {{count}} min", + draftPostStatusCta: "Pubblica stato", + draftCategory: "Categoria: {{value}}", + draftSize: "Misura: {{value}}", + draftCondition: "Condizioni: {{value}}", + draftMaxPrice: "Prezzo max: {{price}} {{currency}}", + draftPriceOpen: "Prezzo: aperto", + draftLookingForTitle: "Cerco \"{{title}}\"", + draftWantedCta: "Pubblica annuncio di ricerca", + draftPrice: "Prezzo: {{price}} {{currency}}", + draftPriceOffer: "Prezzo: fai un'offerta", + draftListTitle: "Metti in vendita \"{{title}}\"", + draftPublishCta: "Pubblica annuncio", + statusPosted: "Stato pubblicato 🛹", + wantedPublished: "Annuncio di ricerca pubblicato 🔎", + listingPublished: "Annuncio pubblicato 💸", + mustBeLoggedIn: "Devi essere connesso.", + }, + sasquatchChat: { + faq: { + hi: "Ehi! Sono The Sasquatch 🦧 La tua guida AI per lo skate. Chiedimi di spot, eventi, coach, attrezzatura — o qualsiasi cosa sull'app. Di cosa hai bisogno?", + hello: "Ehilà! 🛹 Sono The Sasquatch. Chiedimi di spot di skate, eventi, coach o di come funziona l'app. Come va?", + hey: "Ehi skater! 🤙 Chiedimi di spot vicino a te, eventi in arrivo, coach o qualsiasi cosa su SkateSpots.", + whoAreYou: "Sono The Sasquatch 🦧 — la guida AI di SkateSpots. Posso trovare spot di skate in tutto il mondo, cercare eventi, coach, filmer e annunci di attrezzatura. Tutto alimentato da dati Nostr in tempo reale. Chiedi pure!", + whatCanYouDo: "Posso trovare spot di skate per città o paese, cercare eventi in arrivo, trovare coach e filmer in The Lab, cercare annunci di attrezzatura e rispondere a domande su come funziona l'app. Prova: 'spot a Bangkok' o 'trova un coach'! 🛹", + whatIsNostr: "Nostr è un protocollo semplice e aperto per reti sociali decentralizzate. Pensa a Twitter, ma nessuna singola azienda lo controlla — usi chiavi crittografiche invece dei nomi utente, scegli quali relay archiviano i tuoi dati (o ne gestisci uno tuo) e un solo account funziona su ogni app Nostr! 🔑", + isThisPrivate: "Ecco il quadro onesto 🛡️\n\n• La tua **posizione GPS resta sul tuo dispositivo** — 'Vicino a me' serve solo a centrare la mappa. Non viene mai inviata a noi né pubblicata.\n• **Gli spot che aggiungi sono pubblici** (è il senso di una mappa condivisa) — quindi non piazzare un pin sulla porta di casa tua.\n• **I DM e le chat dei crew sono crittografati end-to-end** — solo i membri possono leggerli.\n• Come qualsiasi sito web, i server a cui ti connetti (tile della mappa, relay) possono vedere il tuo **IP**. Vuoi nascondere anche quello? Usa una VPN o Tor.\n\nDettagli completi sulla [pagina Privacy](/privacy). 🛹", + privacy: "Versione breve 🛡️: il tuo GPS non lascia mai il tuo dispositivo, gli spot che pubblichi sono pubblici per design, e DM/chat dei crew sono crittografati end-to-end. I server possono comunque vedere il tuo IP (normale per qualsiasi sito web) — una VPN o Tor lo nasconde se vuoi. Analisi completa sulla [pagina Privacy](/privacy).", + amITracked: "SkateSpots non ti traccia — niente pubblicità, nessun profilo analitico, nessuna vendita di dati, e non c'è alcun server SkateSpots che raccoglie la tua posizione. Il tuo GPS resta sul tuo dispositivo. L'unica cosa che i server vedono (tile della mappa, relay) è il tuo **IP** — come qualsiasi sito web. Usa una VPN o Tor per nasconderlo. Altro sulla [pagina Privacy](/privacy). 🛡️", + doYouTrack: "No — nessun tracciamento, nessuna pubblicità, nessuna raccolta dati. Il tuo GPS resta sul tuo dispositivo e non c'è un server centrale che ti registra. I server a cui ti connetti possono vedere il tuo IP (come qualsiasi sito); una VPN/Tor lo nasconde. Vedi la [pagina Privacy](/privacy). 🛹", + vpn: "Totalmente opzionale, ma ottima se vuoi più privacy 🛡️. Una VPN nasconde il tuo **IP** (posizione approssimativa) dai server con cui parla SkateSpots — tile della mappa, relay, ecc. Scegli un provider no-logs di cui ti fidi (es. Mullvad); evita quelli gratuiti loschi.\n\nAttenzione: una VPN **non** nasconde gli spot che pubblichi (quelli sono pubblici), e non attivare il GPS del browser se vuoi restare anonimo. Dettagli completi sulla [pagina Privacy](/privacy).", + tor: "Tor Browser ti offre la massima privacy sull'IP — ti instrada attraverso diversi relay così i server non possono vedere il tuo IP reale 🧅. Il compromesso: è più lento, e mappe + alcuni relay Nostr possono rallentare o bloccare le uscite Tor. Ottimo per i più cauti.\n\nRicorda: Tor nasconde il tuo IP, non gli spot che pubblichi, e non attivare il GPS del browser se l'anonimato è l'obiettivo. Altro sulla [pagina Privacy](/privacy).", + hideMyIp: "Due opzioni gratuite 🛡️: una **VPN affidabile** (facile, veloce — nasconde il tuo IP dietro i loro server) o **Tor Browser** (massima privacy, più lento). Entrambe impediscono ai server a cui si connette SkateSpots di vedere il tuo IP reale. Nota che non nascondono gli spot che pubblichi. Vedi la [pagina Privacy](/privacy).", + isMyLocation: "La tua posizione è al sicuro 📍 — 'Vicino a me' legge il tuo GPS solo sul tuo dispositivo, per centrare la mappa e ordinare gli spot vicini. Non viene mai pubblicata su Nostr, mai inviata a noi, mai condivisa. Solo gli spot che aggiungi deliberatamente sono pubblici. Dettagli sulla [pagina Privacy](/privacy).", + whatAreZaps: "Gli zap sono mance istantanee in Bitcoin Lightning inviate tramite Nostr! Clicca ⚡ su qualsiasi contenuto, invia sats direttamente al wallet del creatore. Come mettere 'mi piace' ma con soldi veri. Istantaneo, peer-to-peer, senza intermediari. ⚡", + howToLogin: "Due modi:\n1. **Estensione del browser** (Desktop): installa Alby o nos2x, poi clicca 'Accedi'\n2. **Nuovo utente**: clicca 'Registrati' per generare le chiavi. Scarica il tuo nsec (chiave segreta) e SALVALO — questo è il tuo account per sempre!", + whatIsCashu: "Wallet Bitcoin integrato! Token ecash Cashu garantiti da Lightning — funziona offline negli spot di skate, attento alla privacy (i mint non possono tracciare i pagamenti). Vai su Wallet nelle Impostazioni per usarlo. 🥜", + whatIsNwc: "Nostr Wallet Connect — come USB-C per i wallet Lightning. Collega Alby, Minibits, Zeus o Coinos una volta, e zappa con un clic per sempre. Crittografato, controlli tu i limiti di spesa. 🔌⚡", + isItFree: "100% gratuito. Niente pubblicità, niente abbonamenti, niente storie aziendali. Creato da skater per skater. Finanziato dalla community tramite Angor — dai un'occhiata alla pagina Sostenitori. Puoi anche guadagnare Bitcoin tramite gli zap della community contribuendo con spot di qualità. 🛹", + whatCanIDo: "Scopri spot in tutto il mondo sulla mappa, ingaggia professionisti in The Lab (coach, filmer, fotografi, montatori, builder di ramp), gira con un crew, partecipa agli eventi, fai tour, compra/vendi attrezzatura, tieni traccia del tuo Stash privato, zappa i creatori, controlla il meteo degli spot e costruisci la community dello skate decentralizzata!", + whatIsTheLab: "The Lab è dove ingaggi i professionisti della scena skate: Coach, Filmer, Fotografi, Montatori video e Builder di ramp/park/DIY. Ognuno può essere una singola persona o un collettivo (crew/studio) — i membri confermano con le proprie chiavi, così è tutto legittimo. Tutto su Nostr, niente account falsi. 🎓", + whatIsACrew: "I crew sono la tua famiglia dello skate ancorata alla mappa — con chi skati INSIEME, non chi ingaggi. Ogni crew ha il suo territorio sulla mappa (pin color ottanio), spot di casa, membri, vibe e un manifesto. I membri confermano con la propria chiave. Creane uno in Crew → 'Crea crew'. 🤘", + whatAreCrews: "I crew sono la tua famiglia dello skate ancorata alla mappa — con chi skati INSIEME, non chi ingaggi. Ogni crew ha il suo territorio sulla mappa (pin color ottanio), spot di casa, membri e un manifesto. I membri confermano con la propria chiave. Vai alla scheda Crew per iniziarne uno o unirti a uno! 🤘", + howToStartACrew: "Vai alla scheda Crew → 'Crea crew'. Dagli un nome, posiziona il tuo territorio sulla mappa, aggiungi vibe (o un tuo #hashtag personalizzato), collega i tuoi spot di casa e aggiungi membri tramite npub. Ogni membro conferma con la propria chiave, così la lista è legittima. 🤘", + whatIsMyStash: "Il mio Stash è il tuo armadietto dell'attrezzatura PRIVATO e crittografato (crittografia NIP-44). Tieni traccia di deck, truck, wheels, scarpe — con luogo di conservazione, condizioni, rarità e prezzo. Solo TU puoi leggerlo, a meno che tu non contrassegni gli articoli come pubblici. Ottimo per l'assicurazione o per pianificare uno scambio. 🎒", + whatIsStash: "Il mio Stash è il tuo inventario dell'attrezzatura PRIVATO e crittografato. Registra tutto ciò che possiedi — condizioni, dove è conservato, valore — tutto crittografato così solo tu puoi vederlo. Contrassegna gli articoli come pubblici se vuoi venderli o mostrarli. 🎒", + whatIsABuilder: "I Builder sono crew di ramp/park/DIY in The Lab che puoi ingaggiare per costruire transition, bowl, rail o un park intero. Elencano cosa costruiscono, i materiali, la scala del progetto e possono essere autorizzati/assicurati. Spesso collettivi — e possono collegare alla mappa gli spot che hanno costruito. 🏗️", + whatIsANutzap: "I Nutzap (NIP-61) sono mance ecash inviate tramite Nostr — token Cashu privati zappati direttamente a qualcuno. Puoi impostare la RICEZIONE dei nutzap nel Wallet. (L'invio completo dei nutzap è in fase di rilascio — per ora usa gli zap Lightning.) 🥜⚡", + whatIsClink: "CLINK è un codice di pagamento nativo di Nostr (un 'noffer'). Skate shop, crew e professionisti del Lab possono aggiungerne uno così puoi pagarli senza bisogno di un indirizzo Lightning — vedrai un pulsante 'Paga via CLINK' con un QR. Scansionalo con un wallet CLINK come ShockWallet. 🔗⚡ [specs](https://clinkme.dev/specs.html) [apps](https://clinkme.dev/apps.html)", + whatIsNoffer: "Un noffer è un codice di pagamento CLINK — un modo riutilizzabile, nativo di Nostr, per farsi pagare senza un server web o un indirizzo Lightning. Aggiungi il tuo sul profilo di skate shop/crew/Lab e le persone possono pagarti direttamente. 🔗", + whatAreTours: "I Tour sono viaggi di skate guidati — sessioni locali, viaggi on the road nazionali o tour di distruzione mondiale. Trovali sulla mappa o nella sezione Tour, incontra la gente e skata nuovi terreni con i local. 🗺️🛹", + whatIsAShop: "Gli Skate shop sono negozi locali elencati sulla mappa. Scopri e sostieni veri negozi fisici (o online) di skate nella tua zona — alcuni accettano persino Bitcoin. 🏪", + howToSellGear: "Vai su Scambio attrezzatura / Marketplace e crea un annuncio (NIP-99). Aggiungi foto, prezzo in sats, condizioni e, opzionalmente, collegalo a uno spot così appare sulla mappa. Gli acquirenti ti zappano o ti scrivono direttamente. 🛹💸", + supporters: "SkateSpots è finanziato dalla community tramite Angor (crowdfunding Bitcoin decentralizzato) — niente pubblicità, niente investitori, nessuna vendita di dati. Dai un'occhiata alla pagina Sostenitori per sostenere il progetto e mantenere le strade libere. ❤️⚡", + trustScore: "Punteggi di fiducia (0-100) forniti da Relatr. Analizza la tua rete Nostr: follower, attività, engagement, zap. Più alto = più affidabile. Aiuta a filtrare bot e spam. Controlla qualsiasi profilo per vedere il suo punteggio. 🛡️", + whatRelay: "SkateSpots usa: 🛹 goskatespots.nostr1.com (primario, in allowlist per la qualità) + relay.ditto.pub (globale) + purplepag.es (aggregatore di profili). I tuoi dati sono replicati su tutti per ridondanza.", + tripPlanner: "Dimmi una città e costruirò un viaggio di skate giorno per giorno 🗺️ — spot, eventi, coach e crew locali, attento al meteo (giorno di pioggia = consiglio del crew per spot coperti). Prova 'pianificami 3 giorni a Lisbona'. Posso salvarlo tutto in una Raccolta e passarti a voli/alloggi sui siti reali (niente KYC, niente intermediari). 🛹", + planATrip: "Di' semplicemente 'pianificami 3 giorni a Barcellona' (o qualsiasi città) e mapperò spot, sessioni, coach e crew locali per ogni giorno. Salvalo come Raccolta e vai a shreddare. 🗺️🛹", + sasquatchPro: "**Sasquatch Pro** 🦧⚡ è un pass sostenitore Lightning che sblocca il mio lato personale:\n\n• 🧠 **Assistente personale** — leggo il tuo Stash, i tuoi crew, spot e annunci\n• ✨ **Bozze di azioni** — metti in vendita attrezzatura, pubblica il tuo stato di skate, pianifica viaggi (confermi sempre tu prima che qualsiasi cosa venga pubblicata)\n• 💬 **Contesto personale** — le mie risposte usano i tuoi dati, non solo risultati pubblici\n• ⚡ **Sostieni il progetto** — mantieni SkateSpots gratuito e senza pubblicità\n\nSasquatch gratis resta gratis: ricerca pubblica di spot/eventi/coach/crew, il glossario e la pianificazione viaggi funzionano senza Pro. Pro aggiunge solo la parte *personale*. Tocca **⚡ Passa a Pro** in alto. Livelli: 7 giorni ~2k sats, 1 mese ~5k, 3 mesi ~12k, 1 anno ~36k.", + proPerks: "Vantaggi Pro 🦧⚡: assistente personale (legge il tuo Stash/crew/spot/annunci), bozze di azioni (metti in vendita attrezzatura, pubblica uno stato, pianifica viaggi — confermi tu) e risposte che usano il tuo contesto personale. In più sostieni direttamente SkateSpots e lo mantieni gratuito + senza pubblicità. Il gratis resta gratis — Pro aggiunge il livello personale. Tocca **⚡ Passa a Pro** in alto.", + proVersion: "La versione Pro di me 🦧⚡ aggiunge un **assistente personale**: posso leggere il tuo Stash, i tuoi crew, spot e annunci, preparare bozze di azioni per te (mettere in vendita attrezzatura, pubblicare uno stato, pianificare un viaggio — confermi sempre prima tu) e usare il tuo contesto personale nelle mie risposte. Sostiene anche direttamente il progetto. Sasquatch gratis (ricerca spot/eventi/coach/crew, glossario, pianificatore di viaggi) resta gratis. Tocca **⚡ Passa a Pro** in alto.", + perks: "Vantaggi Pro 🦧⚡: assistente personale (il tuo Stash/crew/spot/annunci), bozze di azioni che confermi tu e risposte che usano il tuo contesto — in più mantieni l'app gratuita e senza pubblicità. Tocca **⚡ Passa a Pro** in alto.", + goPro: "Tocca il pulsante **⚡ Passa a Pro** in alto per aprire la schermata di upgrade. Pro sblocca il mio assistente personale (Stash/crew/spot/annunci) e le bozze di azioni, e sostiene direttamente il progetto. Paga con Lightning — da 7 giorni ~2k sats fino a 1 anno ~36k sats. Le funzioni gratuite restano gratuite. 🦧", + proPricing: "Livelli Pro (paga con Lightning ⚡): **7 giorni** ~2.000 sats (~$1,20), **1 mese** ~5.000 sats (~$3), **3 mesi** ~12.000 sats (~$7, 20% di sconto), **1 anno** ~36.000 sats (~$21, miglior valore). Tocca **⚡ Passa a Pro** in alto.", + howMuchIsPro: "Livelli Pro: 7 giorni ~2.000 sats, 1 mese ~5.000 sats, 3 mesi ~12.000 sats (20% di sconto), 1 anno ~36.000 sats (miglior valore). Paga con Lightning ⚡. Tocca **⚡ Passa a Pro** in alto.", + upgrade: "Per passare a Sasquatch Pro, tocca il pulsante **⚡ Passa a Pro** in alto. Paga con Lightning (da 7 giorni ~2k sats fino a 1 anno ~36k). Pro sblocca il mio assistente personale e le bozze di azioni, e sostiene direttamente il progetto. 🦧⚡", + }, + statsTitle: "📊 **SkateSpots in numeri**", + weatherTemp: "• {{temp}}°C (percepiti {{feels}}°C)", + weatherSkateability: "• Skatabilità: **{{label}}** ({{score}}/100)", + weatherError: "Impossibile leggere il meteo in questo momento. Riprova tra un secondo. 🌧️", + labelSpots: "spot", + labelEvents: "eventi", + labelLabPros: "professionisti Lab", + labelCrews: "crew", + labelShops: "skate shop", + labelTours: "tour", + labelGear: "annunci di attrezzatura", + unnamed: "Senza nome", + emptyWhere: " a **{{place}}**", + emptyResult: "Non ho trovato nessun {{label}}{{where}} in questo momento 🦧\n\nPotrebbe significare che non ce ne sono ancora, oppure che i relay hanno risposto lentamente. Riprova tra un momento, controlla l'ortografia o [aggiungi il primo sulla mappa](https://skate-spots.org/map). 🛹", + foundTitle: "{{emoji}} Trovati **{{count}}** {{label}}:\n{{lines}}{{more}}", + moreResults: "\n\n…e **{{count}}** altri — [vedili tutti sulla mappa](https://skate-spots.org/map) 🗺️", + locationDenied: "Non riesco a vedere la tua posizione — nulla lascia mai il tuo dispositivo; la leggo localmente solo quando me lo chiedi, e il browser l'ha appena negata. Tocca 🎯 **Vicino a me** sulla mappa, oppure dimmi una città: \"spot a Bangkok\". 🛹", + noNearbySpots: "Nessuno spot mappato vicino a te per ora 🦧 — [sii il primo a metterne uno](https://skate-spots.org/create-spot). 🛹", + closestTitle: "Più vicini a te in questo momento:", + closestFooter: "_Calcolato sul tuo dispositivo — la tua posizione non l'ha mai lasciato._", + proNudge: "Questa è una cosa di **Sasquatch Pro** 🦧⚡ — con Pro posso leggere il tuo Stash, i crew, gli spot e gli annunci, preparare bozze di annunci di attrezzatura, annunci di ricerca e stati di skate, e pianificare i tuoi viaggi. È un pass sostenitore Lightning che mantiene SkateSpots gratuito e senza pubblicità. Tocca il pulsante **⚡ Passa a Pro** in alto per sbloccarlo. 🛹", + draftingProPerk: "Preparare bozze di azioni (pubblicare uno stato, mettere in vendita attrezzatura) è un vantaggio di **Sasquatch Pro** 🦧⚡ — tocca **⚡ Passa a Pro** in alto per sbloccarlo.", + draftIntro: "Ecco una bozza — rivedila e tocca per pubblicare. Niente va online finché non confermi. 🛹", + draftFailed: "Non sono riuscito a costruire quella bozza — prova a dirmi di nuovo i dettagli (es. \"metti in vendita le mie ruote Spitfire per 8000 sats\").", + tripAskCity: "Dove andiamo? Dimmi una città (es. \"pianificami 3 giorni a Lisbona\") e costruirò un viaggio. 🗺️", + tripEmptyMap: "Ancora niente sulla mappa per **{{destination}}** 🦧 — sii il primo a mettere spot su [skate-spots.org](https://skate-spots.org). Una volta che i local aggiungono spot, crew ed eventi, ti costruirò un viaggio completo.", + tripLocked: "Ti ho bloccato una missione a **{{destination}}** 🛹 — spot, sessioni e local qui sotto. Modificala o salvala.", + tripFailed: "Impossibile raggiungere i dati in tempo reale per pianificarlo ora. Riprova tra un momento! 🛹", + tripEmptyMapLocal: "Ancora niente sulla mappa per **{{destination}}** 🦧 — sii il primo su [skate-spots.org](https://skate-spots.org).", + tripMissionLocal: "Ecco una missione a **{{destination}}** 🛹 — spot, sessioni & local qui sotto.", + relayFailed: "I relay non hanno risposto in tempo in questo momento 🛰️ — di solito è una connessione lenta, non uno spot mancante. Riprova tra un momento. 🛹", + couldNotProcess: "Hmm, non sono riuscito a elaborarlo. Prova a riformulare!", + freeTierFallback: "Questa richiede ragionamento AI — una funzione di **Sasquatch Pro** ⚡🦧\n\nPosso comunque trovare **spot, eventi, coach, crew, skate shop, tour e attrezzatura** direttamente dai relay — chiedimi ad es. \"spot a Barcellona\" — e il [Glossario](/glossary) copre oltre 150 trick e termini. Tocca **⚡ Passa a Pro** in alto per sbloccare le risposte AI.", + aiDownFallback: "Il mio cervello AI sta prendendo un po' d'aria in questo momento 🦧 — ma ti copro comunque:\n\n• 🗺️ [Mappa](/) — spot, skate shop, eventi vicino a te\n• 🧪 [The Lab](/lab) — coach, filmer, montatori\n• 📖 [Glossario](/glossary) — oltre 150 trick e termini\n• 👥 [Crew](/crews) — trova la tua gente\n\nOppure dimmi una **città** (\"spot a Barcellona\") o un **trick** (\"cos'è un nollie\") e ti rispondo direttamente. 🛹", + wentWrong: "Qualcosa è andato storto dalla mia parte. Riprova tra un secondo! 🦧", + publishError: "Impossibile pubblicarlo: {{error}}. Riprova tra un secondo.", + unknownError: "errore sconosciuto", + }, +}; export default itBatch2; diff --git a/src/i18n/it/batch3.ts b/src/i18n/it/batch3.ts index 46473b7..91e5162 100644 --- a/src/i18n/it/batch3.ts +++ b/src/i18n/it/batch3.ts @@ -1,4 +1,1294 @@ -/** it — batch 3. Filled by the translation pass; empty until then. */ -const itBatch3 = {}; +/** it — batch 3. */ +const itBatch3 = { + settingsUi: { + proSupport: { + title: "Pro e supporto", + subtitle: "Extra opzionali che mantengono SkateSpots gratuito", + prepaidTitle: "Prepagato, non un abbonamento", + prepaidBody: "Ogni acquisto è un pagamento Bitcoin/Lightning una tantum — nessun account, nessun addebito ricorrente, nessuna custodia. Pagando di nuovo estendi il tuo tempo.", + sasquatchTitle: "Sasquatch Pro", + sasquatchBenefit: "Sblocca l'assistente AI personale — può leggere il tuo Stash, le tue crew e i tuoi annunci — e aiuta a finanziare il progetto.", + active: "Attivo", + activeUntil: "Attivo fino al {{date}}", + daysLeft: "{{count}} giorni rimanenti", + notActive: "Non attivo", + goPro: "Diventa Pro", + extend: "Estendi Pro", + day: "giorno", + featuredTitle: "Posizionamento in evidenza", + featuredBenefit: "Porta un annuncio in cima con un badge Pro — per profili Lab, eventi, shop e tour.", + featuredHow: "I livelli di durata valgono per ogni tipo; gli impegni più lunghi costano meno al giorno. Metti in evidenza un annuncio quando lo crei o lo modifichi.", + featuredUntil: "Fino al {{date}}", + yourFeatured: "I tuoi annunci in evidenza", + noneFeatured: "Nessun posizionamento in evidenza attivo.", + freeTitle: "Percorsi gratuiti", + freeBody: "Le FAQ AI e la ricerca locale sono sempre gratuite, e puoi pubblicare un annuncio nel marketplace con un proof-of-work gratuito invece della commissione in sats." + }, + notFound: { + seoTitle: "404 - Pagina non trovata", + seoDescription: "Impossibile trovare la pagina che stai cercando. Torna alla home per continuare a navigare.", + message: "Ops! Pagina non trovata", + returnHome: "Torna alla home" + }, + loginArea: { + signUp: "Registrati", + logIn: "Accedi" + }, + accountSwitcher: { + switchAccount: "Cambia account", + walletSettings: "Impostazioni wallet", + addAccount: "Aggiungi un altro account", + logout: "Esci" + }, + amberHint: { + defaultAction: "inviare", + multiBefore: "Il tuo signer ti chiederà di approvare", + multiTimes: "{{approvals}} volte", + multiAfter: "per {{action}} — è normale per i messaggi cifrati (una approvazione per destinatario). Approva ciascuna.", + single: "Il tuo signer ti chiederà di approvare per {{action}}." + }, + amberCallback: { + processing: "Elaborazione del login Amber...", + gotResult: "Risultato ricevuto: {{result}}", + noResultDebug: "Nessun risultato da Amber", + noResultToast: "Nessun risultato ricevuto da Amber. L'operazione potrebbe essere stata annullata.", + validPubkey: "Pubkey valida! Accesso in corso...", + loginSuccessful: "Accesso riuscito!", + loginErrorDebug: "Errore di accesso: {{error}}", + invalidResultDebug: "Formato del risultato non valido: {{result}}", + loggedInTitle: "Accesso effettuato", + amberLoginDesc: "Accesso effettuato con successo tramite Amber!", + loginFailedTitle: "Accesso non riuscito", + loginFailedDesc: "Impossibile completare il login con Amber. Riprova.", + invalidPubkeyDesc: "Pubkey non valida ricevuta da Amber.", + sessionLostToast: "I dati della sessione sono andati persi. Riprova.", + eventSignedTitle: "Evento firmato", + eventSignedDesc: "Il tuo evento è stato firmato da Amber.", + signingFailedTitle: "Firma non riuscita", + signingFailedDesc: "Impossibile elaborare l'evento firmato da Amber.", + operationCompleteTitle: "Operazione completata", + operationCompleteDesc: "{{op}} completata." + }, + loginDialog: { + loginWithAmber: "Accedi con Amber (Android)", + welcomeTitle: "Benvenuto su SkateSpots", + welcomeSubtitle: "Registrati o accedi per continuare", + newHere: "Nuovo qui?", + createFree: "Crea un account gratuito. Nessuna email richiesta.", + createAccount: "Crea account", + orLogIn: "Oppure accedi", + loggedInTitle: "🛹 Accesso effettuato!", + loggedIn: "Accesso effettuato!", + connectedAmber: "Connesso tramite Amber!", + amberLoginFailed: "Login con Amber non riuscito", + amberCancelled: "Login annullato. Tocca “Apri Amber” per riprovare.", + amberNotFound: "Amber non trovato. Assicurati che Amber sia installato dallo ZapStore.", + loginFailed: "Accesso non riuscito", + pubkeyError: "Incolla la tua pubkey hex (64 caratteri) o npub da Amber", + pairedSigner: "Associato al tuo signer.", + connectFailed: "Impossibile connettersi al tuo signer.", + openedEncrypted: "La tua chiave cifrata è stata aperta.", + openKeyFailed: "Impossibile aprire quella chiave.", + bunkerPrefix: "Deve iniziare con bunker://", + connectedBunker: "Connesso tramite bunker!", + bunkerFailed: "Non riuscito: {{error}}", + checkBunkerUri: "Controlla il tuo URI bunker", + nsecPrefix: "Deve iniziare con nsec1", + invalidNsec: "nsec non valida: {{error}}", + checkKey: "Controlla la tua chiave", + noExtensionTitle: "Nessuna estensione trovata", + noExtensionDesc: "Installa Alby o un'altra estensione NIP-07.", + amberIdleDesc: "La tua chiave resta dentro Amber. Un tocco — approva in Amber e torni qui, con l'accesso fatto. Niente da copiare.", + continueWithAmber: "Continua con Amber", + noAmberGetIt: "Non hai Amber? Scaricalo →", + waitingAmberTitle: "In attesa di Amber…", + waitingAmberDesc: "Approva la richiesta in Amber. Verrai connesso automaticamente nel momento in cui torni.", + openAmberAgain: "Apri di nuovo Amber", + havingTrouble: "Hai problemi? Inserisci la chiave manualmente", + enterPublicKey: "Inserisci la tua chiave pubblica", + enterPublicKeyDescBefore: "Solo se il flusso automatico non ha funzionato. In Amber: tocca il tuo profilo →", + copyPublicKey: "Copia chiave pubblica", + enterPublicKeyDescAfter: "poi incollala qui.", + connect: "Connetti", + back: "← Indietro", + signInWithPhone: "Accedi con il telefono", + signInWithPhoneDesc: "Scansiona con un'app signer (Amber, nsec.app). La tua chiave non lascia mai il telefono.", + showPairingCode: "Mostra codice di abbinamento", + waitingSigner: "In attesa del tuo signer…", + copyLink: "Copia link", + orPasteBunker: "oppure incolla un URL bunker", + bunkerTitle: "Bunker (NIP-46)", + bunkerPasteBefore: "Incolla il tuo", + bunkerPasteAfter: "URI.", + amberInstructions: "Impostazioni → Bunker NIP-46 → Crea → Copia", + nsecAppInstructions: "Connetti app → Copia URI bunker", + secretKeyTitle: "Chiave segreta", + secretKeyRawDesc: "Incolla direttamente la tua chiave segreta Nostr.", + secretKeyEncDesc: "Apri un backup della chiave protetto da password.", + rawNsec: "nsec grezza", + encryptedNip49: "Cifrata (NIP-49)", + nsecWarning: "⚠️ Usala solo su un dispositivo fidato. Non condividere mai la tua nsec.", + login: "Accedi", + encSaferDesc: "Più sicuro: la chiave resta cifrata finché non inserisci la password, quindi il backup è sicuro da conservare nello storage cloud o in un gestore di password.", + password: "Password", + openEncryptedKey: "Apri chiave cifrata", + browserExtensionTitle: "Estensione del browser (NIP-07)", + browserExtensionDesc: "Ideale per desktop. Funziona con Alby, nos2x, Flamingo.", + loginWithExtension: "Accedi con l'estensione" + }, + signupDialog: { + download: "Scarica", + stepChoose: "Scegli", + stepProfile: "Profilo", + stepSaveKey: "Salva chiave", + somethingWrong: "Qualcosa è andato storto", + createFailed: "Impossibile creare il tuo account. Riprova.", + keySavedTitle: "Chiave segreta salvata!", + keySavedDesc: "La tua chiave è stata salvata in modo sicuro.", + downloadFailedTitle: "Download non riuscito", + downloadFailedDesc: "Impossibile scaricare il file della chiave. Copialo manualmente.", + encSavedTitle: "Backup cifrato salvato 🔐", + encSavedDesc: "Conserva il file E la password — ti servono entrambi per riaccedere.", + encFailed: "Impossibile cifrare quella chiave.", + invalidFileTitle: "Tipo di file non valido", + invalidFileDesc: "Seleziona un file immagine per il tuo avatar.", + fileTooLargeTitle: "File troppo grande", + fileTooLargeDesc: "L'immagine dell'avatar deve essere inferiore a 5MB.", + avatarUploadedTitle: "Avatar caricato!", + avatarUploadedDesc: "Il tuo avatar è stato caricato con successo.", + uploadFailedTitle: "Caricamento non riuscito", + uploadFailedDesc: "Impossibile caricare l'avatar. Riprova.", + nameRequiredTitle: "Nome visualizzato richiesto", + nameRequiredDesc: "Scegli un nome visualizzato così gli altri skater sanno chi sei. Puoi cambiarlo in qualsiasi momento.", + reserveFailedTitle: "Impossibile riservare quel nome", + reserveFailedDesc: "{{error}} Puoi richiederne uno più tardi nelle Impostazioni.", + profileCreatedTitle: "Profilo creato!", + profileCreatedDesc: "Il tuo profilo è stato configurato.", + profileFailedTitle: "Configurazione del profilo non riuscita", + profileFailedDesc: "Il tuo account è stato creato ma la configurazione del profilo non è riuscita. Puoi aggiornarlo più tardi.", + welcomeToastTitle: "Benvenuto!", + welcomeToastDesc: "Il tuo account è pronto.", + titleWelcome: "Unisciti a SkateSpots", + titleProfile: "Configura il tuo profilo", + titleDone: "Benvenuto!", + createFreeAccount: "Crea il tuo account gratuito", + createFreeAccountDesc: "Niente email, niente telefono, niente password. Il tuo account è una chiave Nostr — scegli dove vive.", + recommended: "Consigliato", + signUpWithAmber: "Registrati con Amber", + signUpWithAmberDesc: "La tua chiave viene creata e conservata dentro l'app Amber — SkateSpots non la tocca mai. Massima sicurezza. Un tocco per approvare.", + continueWithAmber: "Continua con Amber", + orQuickWay: "oppure la via rapida", + quickAccount: "Account rapido su questo dispositivo", + quickAccountDesc: "Generiamo una chiave che vive su questo dispositivo. Inizio più veloce — ti aiuteremo a salvare un backup subito dopo.", + createQuickAccount: "Crea account rapido", + quickReassurance: "Richiede 5 secondi · vive su questo dispositivo · ti aiuteremo a farne il backup subito dopo", + preferAnotherSigner: "Preferisci un altro signer?", + iosDesktopNudge: "Su iOS o desktop? Un'app signer o un'estensione del browser è l'opzione più sicura —", + seeAllOptions: "Vedi tutte le opzioni", + youreInPickName: "Sei dentro! 🛹 Scegli un nome visualizzato così gli skater sanno chi sei", + changeAnytime: "Puoi cambiarlo in qualsiasi momento. Bio e avatar sono opzionali.", + publishingProfile: "Pubblicazione del tuo profilo...", + displayName: "Nome visualizzato", + displayNamePlaceholder: "es. Tony, gnarlyGrind, o il nome della tua crew", + displayNameHint: "Obbligatorio — come apparirai su SkateSpots. Cambialo in qualsiasi momento.", + skateName: "Il tuo nome SkateSpots", + skateNameHint: "Gratuito e opzionale — un handle verificato che mostra una ✓ sul tuo profilo.", + bio: "Bio", + bioPlaceholder: "Racconta qualcosa di te...", + avatar: "Avatar", + uploadAvatar: "Carica immagine avatar", + saving: "Salvataggio...", + saveAndStart: "Salva e inizia a skatare", + addNameToContinue: "Aggiungi un nome visualizzato per continuare.", + savingPublishesNote: "Il salvataggio pubblica il tuo profilo su Nostr — il tuo signer potrebbe chiederti di approvarlo una volta.", + youreIn: "Sei dentro! 🛹", + oneQuickThing: "Una cosa veloce prima di iniziare…", + saveLoginKey: "Salva la tua chiave di accesso", + saveLoginKeyBefore: "Questo è il", + only: "solo", + saveLoginKeyAfter: "modo per rientrare nel tuo account — niente email, niente reimpostazione della password. Salvalo ora e potrai accedere da qualsiasi dispositivo, ovunque tu skati.", + revealSaveKey: "Mostra e salva la mia chiave", + recoveryCopied: "Codice di recupero copiato. Conservalo in un posto sicuro.", + saved: "Salvato", + treatLikeBoardKeys: "Trattalo come le chiavi del tuo skate — chiunque abbia questo codice controlla il tuo account. Non condividerlo mai.", + hideEncBackup: "Nascondi backup cifrato", + saveEncBackup: "Salva un backup cifrato", + encBackupBefore: "Una copia protetta da password — sicura da conservare nello storage cloud o in un gestore di password. Ti serviranno il file", + and: "e", + encBackupAfter: "la password.", + choosePassword: "Scegli una password", + saveEncBackupCta: "Salva backup cifrato", + savedCodeAria: "Ho salvato il mio codice di recupero", + savedCodeLabel: "Ho salvato il mio codice di recupero in un posto sicuro — un gestore di password, o scritto su carta offline.", + letsSkate: "Andiamo a skatare", + saveLater: "Lo salverò più tardi dalle Impostazioni", + advancedSigner: "Avanzato: usa invece un'app signer" + }, + mnemonic: { + generatedTitle: "Frase di recupero generata! 🎉", + generatedDesc: "Scrivi queste 12 parole in ordine. Sono la chiave del tuo account!", + savedTitle: "Frase di recupero salvata!", + savedDesc: "Conserva questo file in un luogo sicuro.", + downloadFailedTitle: "Download non riuscito", + downloadFailedDesc: "Impossibile scaricare il file. Copia manualmente.", + copiedTitle: "Copiato negli appunti!", + copiedDesc: "La tua frase di recupero è stata copiata.", + qrWindowTitle: "Codice QR della frase di recupero", + qrHeading: "Il codice QR della tua frase di recupero", + qrAlt: "Codice QR della frase di recupero", + qrWarning: "Mantieni questo codice QR privato e al sicuro!", + qrPrint: "Stampa codice QR", + qrFailedTitle: "Codice QR non riuscito", + qrFailedDesc: "Impossibile generare il codice QR.", + accountCreatedTitle: "Account creato! 🎉", + accountCreatedDesc: "Tutto pronto! La tua frase di recupero è al sicuro.", + loginFailedTitle: "Accesso non riuscito", + loginFailedDesc: "Impossibile creare l'account. Riprova.", + verifyFailedTitle: "Verifica non riuscita", + verifyFailedDesc: "Le parole non corrispondono. Controlla e riprova.", + titlePrefix: "Crea account con", + titleSuffix: "frase di recupero", + twelveWordTitle: "Frase di recupero di 12 parole", + twelveWordDesc: "La tua frase di recupero è come una master password. Scrivila su carta e conservala al sicuro. Ti servirà per accedere al tuo account da altri dispositivi o se cancelli i dati del browser.", + generate: "Genera frase di recupero", + useNsecInstead: "Usa invece una chiave nsec avanzata", + yourPhrase: "La tua frase di recupero", + copy: "Copia", + download: "Scarica", + qrCode: "Codice QR", + criticalWarning: "Avviso di sicurezza critico", + warnWriteStrong: "Scrivila", + warnWrite: "su carta e conservala al sicuro", + warnNeverShareStrong: "Non condividerla mai", + warnNeverShare: "la tua frase di recupero con nessuno", + warnBackupsStrong: "Tieni più backup", + warnBackups: "in luoghi sicuri diversi", + warnAnyoneStrong: "Chiunque abbia questa frase", + warnAnyone: "controlla il tuo account per sempre", + warnLoseStrong: "Se la perdi", + warnLose: "perdi il tuo account in modo permanente", + savedSecurely: "L'ho salvata al sicuro", + verifyTitle: "Verifica la tua frase di recupero", + verifyDesc: "Per assicurarti di averla salvata correttamente, inserisci queste parole:", + wordLabel: "Parola n. {{n}}", + wordPlaceholder: "Inserisci la parola n. {{n}}", + goBack: "Indietro", + verifyCreate: "Verifica e crea account", + completeTitle: "Account creato!", + completeDesc: "Il tuo account Nostr è pronto!", + signerTitle: "Consigliato: configura un'app signer", + signerSubtitle: "Mantieni le tue chiavi ancora più al sicuro", + signerDesc: "Per una maggiore sicurezza, usa un'app signer dedicata invece di incollare la tua frase di recupero ovunque. Le app signer tengono al sicuro le tue chiavi consentendoti di usare qualsiasi app Nostr.", + signerCta: "Scopri le app signer", + skip: "Salta per ora" + }, + signupMethod: { + titlePrefix: "Scegli il tuo", + titleSuffix: "metodo di registrazione", + subtitle: "Entrambi i metodi sono sicuri. Scegli quello che fa per te!", + recommended: "Consigliato", + mnemonicTitle: "Frase di recupero", + mnemonicDesc: "12 parole facili da ricordare. Standard di settore usato da Bitcoin, Ethereum e dalla maggior parte dei wallet crypto.", + mnemonicF1: "Facile da scrivere su carta", + mnemonicF2: "Funziona con altre app Nostr (NIP-06)", + mnemonicF3: "Può generare più account", + mnemonicF4: "Familiare agli utenti crypto", + useMnemonic: "Usa frase di recupero", + advanced: "Avanzato", + nsecTitle: "Chiave segreta (nsec)", + nsecDesc: "Chiave crittografica grezza. Più tecnica ma ti dà accesso diretto alla tua identità Nostr.", + nsecF1: "Controllo crittografico diretto", + nsecF2: "Compatibile con tutte le app Nostr", + nsecF3: "Un'unica stringa da salvare", + nsecF4: "Nessun livello di derivazione", + useNsec: "Usa chiave segreta", + footer: "🔒 Entrambi i metodi sono ugualmente sicuri. Scegli in base alle tue preferenze!" + }, + skateNip05: { + placeholder: "iltuonome", + claimedSuffix: "è tuo — salva il tuo profilo per pubblicarlo.", + checking: "Verifica disponibilità…", + available: "{{name}}@{{domain}} è disponibile", + claim: "Richiedilo", + hint: "Lettere, numeri, trattini. Gratuito, e mostrato come badge ✓ sul tuo profilo." + }, + nip05Required: { + getFree: "Ottieni un NIP-05 gratuito / economico", + paid: "A pagamento", + requiredTitle: "Verifica NIP-05 richiesta", + bannerReason: "Per prevenire lo spam e costruire fiducia, {{role}} necessita di un indirizzo Nostr verificato (NIP-05).", + gateReason: "Per prevenire lo spam e costruire fiducia, {{role}} deve avere la verifica NIP-05.", + addInSettings: "Aggiungi NIP-05 nelle Impostazioni", + explainer: "NIP-05 prova la tua identità collegando il tuo profilo Nostr a un dominio — come", + updateProfile: "Aggiorna il tuo profilo" + }, + editProfile: { + uploadSuccessTitle: "Successo", + uploadSuccessDesc: "{{field}} caricato con successo", + uploadErrorDesc: "Impossibile caricare {{field}}. Riprova.", + mustBeLoggedIn: "Devi aver effettuato l'accesso per aggiornare il tuo profilo", + invalidClinkTitle: "Codice CLINK non valido", + invalidClinkDesc: "Non sembra un codice noffer1… valido. Cancellalo o incolla uno valido.", + invalidLightningTitle: "Indirizzo Lightning non valido", + invalidLightningDesc: "Usa un indirizzo simile a un'email come you@walletofsatoshi.com.", + invalidSpTitle: "Indirizzo Silent Payment non valido", + invalidSpDesc: "Un indirizzo Silent Payment inizia con “sp1” ed è piuttosto lungo. Cancellalo o incolla uno valido.", + invalidCordnTitle: "Link Cordn non valido", + invalidCordnDesc: "Incolla un link di contatto Cordn completo https://… .", + updateSuccessTitle: "Successo", + updateSuccessDesc: "Il tuo profilo è stato aggiornato", + updateErrorDesc: "Impossibile pubblicare il profilo. Controlla le connessioni ai relay nelle Impostazioni > Relay", + identityTitle: "Identità", + identityDesc: "Come appari su SkateSpots.", + displayName: "Nome visualizzato", + displayNamePlaceholder: "Il tuo nome", + bio: "Bio", + bioPlaceholder: "Qualche parola su di te e sul tuo skating…", + profilePicture: "Immagine del profilo", + pictureDesc: "Carica o incolla un'immagine quadrata.", + bannerImage: "Immagine banner", + bannerDesc: "Un'immagine larga per la parte superiore del tuo profilo.", + website: "Sito web", + bitcoinTitle: "Bitcoin e pagamenti", + bitcoinDesc: "Lascia che le persone ti zappino, ti diano mance e ti paghino direttamente — senza intermediari.", + lightningAddress: "Indirizzo Lightning", + lud16Invalid: "Usa un indirizzo simile a un'email, es. you@tuodominio.com.", + lud16Ok: "Alimenta il pulsante “Zap” sul tuo profilo.", + lud16Hint: "Mance istantanee in Bitcoin. Alimenta il pulsante “Zap” sul tuo profilo.", + silentPaymentAddress: "Indirizzo Silent Payment", + spInvalid: "Dovrebbe iniziare con “sp1” ed essere piuttosto lungo.", + spOk: "Valido — un indirizzo on-chain privato e riutilizzabile.", + spHint: "Indirizzo on-chain statico e riutilizzabile (BIP-352). Condividilo una volta; ogni pagamento non è collegabile.", + clinkTipCode: "Codice mancia CLINK", + nofferInvalid: "Non sembra un codice noffer1… valido.", + nofferOk: "Valido — sul tuo profilo apparirà un pulsante “Mancia in Bitcoin”.", + nofferHint: "Codice CLINK autocustodiale così chiunque può darti una mancia su Nostr — senza intermediari.", + skateProfileTitle: "Profilo Skate", + skateProfileDesc: "Mostra i tuoi sponsor e come la crew ti contatta.", + badges: "Badge", + badgesHint: "(etichetta + link opzionale)", + badgeExample: "es. Independent Trucks", + badgeLabelPlaceholder: "Etichetta badge…", + badgeUrlPlaceholder: "https://… (opzionale)", + removeBadge: "Rimuovi badge", + addBadge: "Aggiungi badge", + badgesDescBefore: "Sponsor, shop o persone che sostengono il tuo skating — e qualsiasi altra cosa tu voglia mostrare. Ognuno diventa un chip cliccabile sul tuo profilo. Il tuo", + badgesDescAfter: "badge membro viene aggiunto automaticamente.", + coordinator: "Coordinatore", + cordnInvalid: "Non sembra un coordinatore. Incolla un nprofile, un link cordn.net o un URL https://.", + cordnOk: "Mostrato sul tuo profilo — gli altri possono aggiungerlo con un tocco.", + cordnHint: "Il coordinatore Cordn che gli altri usano per messaggiarti. Privato, cifrato, tuo.", + useMyCoordinator: "Usa il mio coordinatore", + accountTitle: "Account", + accountDesc: "Impostazioni extra dell'account.", + botAccount: "Account bot", + botAccountDesc: "Contrassegna questo account come automatizzato o come bot.", + saving: "Salvataggio…", + saveProfile: "Salva profilo", + nip05VerifiedHandle: "Handle verificato NIP-05", + nip05How: "Come?", + extraHandles: "Handle extra", + extraHandlesHint: "opzionale — ne puoi aggiungere fino a 5", + nip05HintEmpty: "Un handle verificato come you@tuodominio.com — la versione Nostr della spunta blu. Mostra un badge ✓ sul tuo profilo e sblocca il filtro “Verificato” nella directory Skater.", + nip05Invalid: "Usa un handle simile a un'email, es. you@tuodominio.com — niente “https://” né spazi.", + nip05Checking: "Verifica del tuo dominio…", + nip05Verified: "Verificato — il tuo dominio conferma che questo handle è tuo. ✓", + nip05Mismatch: "Il tuo dominio associa questo handle a una chiave DIVERSA. Correggi il tuo .well-known/nostr.json in modo che punti a questo account.", + nip05Unreachable: "Impossibile raggiungere /.well-known/nostr.json del tuo dominio. Gli handle salvati funzioneranno comunque una volta configurato correttamente il dominio.", + nip05Enter: "Inserisci il tuo handle NIP-05.", + freeHandleBefore: "Non hai un dominio tuo? Richiedi un", + freeHandleAfter: "handle gratuito da SkateSpots.", + uploadLabel: "Carica {{label}}", + previewLabel: "Anteprima di {{label}}" + }, + security: { + recoveryCopied: "Codice di recupero copiato. Conservalo in un posto sicuro.", + savedTitle: "Salvato!", + recoveryDownloaded: "Codice di recupero scaricato. Conservalo in un posto sicuro.", + downloadFailedTitle: "Download non riuscito", + downloadFailedDesc: "Copia manualmente.", + loginRequired: "Accesso richiesto", + loginRequiredDesc: "Accedi per gestire le impostazioni di sicurezza.", + backupConfirmedTitle: "Backup confermato! ✅", + backupConfirmedDesc: "Ottimo! Le tue chiavi sono al sicuro.", + yourRecoveryCode: "Il tuo codice di recupero", + recoveryCodeDesc: "Non l'hai salvato quando ti sei registrato? Puoi recuperarlo qui in qualsiasi momento.", + recoveryCodeBefore: "Questo codice è il", + only: "solo", + recoveryCodeAfter: "modo per riaccedere su un nuovo dispositivo o browser. Salvalo in un posto sicuro (un gestore di password, o scritto su carta). Chiunque lo possieda controlla il tuo account — non condividerlo mai.", + revealRecovery: "Mostra il mio codice di recupero", + qrHint: "Scansiona con un'altra app Nostr per accedere. Mantieni privata questa schermata.", + neverShareHide: "⚠️ Non condividerlo mai. Nascondilo quando hai finito.", + hide: "Nascondi", + amberNoteBefore: "Hai effettuato l'accesso con", + amberNoteAfter: ". Il tuo codice di recupero vive dentro Amber — apri l'app Amber per farne il backup. SkateSpots non vede mai la tua chiave.", + bunkerNoteBefore: "Hai effettuato l'accesso con un", + remoteSigner: "signer remoto (bunker)", + bunkerNoteAfter: ". Il tuo codice di recupero è custodito dal tuo servizio signer, non da SkateSpots. Fanne il backup lì.", + extensionNoteBefore: "Hai effettuato l'accesso con un'", + browserExtension: "estensione del browser", + extensionNoteAfter: ". Il tuo codice di recupero vive nell'estensione — usa la sua opzione di backup/esportazione. SkateSpots non vede mai la tua chiave.", + otherNote: "Il tuo codice di recupero è gestito dalla tua app signer, non da SkateSpots. Fanne il backup lì.", + backupWarningTitle: "⚠️ Hai fatto il backup della tua frase di recupero o della tua chiave segreta?", + backupWarningBody: "Le tue chiavi sono l'UNICO modo per accedere al tuo account. Se le perdi, perdi tutto - non c'è alcun reset della password!", + iveBackedUp: "Ho fatto il backup delle mie chiavi", + backupConfirmed: "✅ Backup confermato", + backupNotConfirmed: "⚠️ Backup non confermato", + backupConfirmedStatusDesc: "Hai confermato che le tue chiavi sono al sicuro.", + backupNotConfirmedDesc: "Assicurati di fare il backup della tua frase di recupero o della tua chiave segreta!", + notSavedYetBefore: "Non hai ancora salvato il tuo codice di recupero? Nessun problema — prendilo dalla", + notSavedYetAfter: "sezione qui sopra, conservalo in un posto sicuro, poi conferma qui sotto.", + yesBackedUp: "Sì, ho fatto il backup delle mie chiavi", + bestPracticesTitle: "Buone pratiche per la sicurezza delle chiavi", + bestPracticesDesc: "Come mantenere sicuro il tuo account Nostr", + bp1Title: "Scrivila su carta", + bp1Desc: "Il backup fisico è il più sicuro. Conservalo in un luogo sicuro come una cassaforte.", + bp2Title: "Backup multipli", + bp2Desc: "Tieni copie in luoghi sicuri diversi (cassaforte di casa, cassetta di sicurezza in banca, ecc.)", + bp3Title: "Non condividere mai le tue chiavi", + bp3Desc: "Le vere app Nostr non chiedono MAI la tua nsec o la tua frase di recupero dopo il primo accesso", + bp4Title: "Non conservarle nel cloud non cifrate", + bp4Desc: "Evita Google Docs, bozze email o storage cloud in testo semplice", + bp5Title: "Valuta di usare un'estensione del browser", + bp5Desc: "Alby, nos2x o Flamingo mantengono le tue chiavi al sicuro e non le espongono mai ai siti web", + importantReminders: "⚠️ Promemoria importanti", + rem1: "Se perdi le tue chiavi, perdi il tuo account in modo permanente", + rem2: "Nessuna azienda o persona può reimpostare la tua password - nemmeno noi", + rem3: "Chiunque abbia le tue chiavi ha il pieno controllo del tuo account", + rem4: "Le tue chiavi controllano tutti i tuoi dati Nostr su TUTTE le app", + recommendedSigners: "🔌 Signer Nostr consigliati", + recommendedSignersDesc: "Usa un signer Nostr per maggiore sicurezza e comodità", + recommended: "Consigliato", + amberDesc: "Signer Nostr sicuro per Android. Mantiene le tue chiavi al sicuro sul telefono e firma gli eventi senza esporle.", + albyDesc: "Estensione completa con wallet Lightning, WebLN e supporto NWC.", + flamingoDesc: "Interfaccia semplice e pulita. Si concentra sulla firma Nostr senza funzioni wallet.", + nos2xDesc: "Estensione minimale e leggera per utenti avanzati.", + nostrConnectTitle: "☁️ Nostr Connect (signer remoti)", + nostrConnectDesc: "Usa un signer remoto per accedere al tuo account da qualsiasi dispositivo", + nostrConnectBody: "Nostr Connect (chiamato anche “bunker”) ti permette di conservare le tue chiavi su un server sicuro e accedere da qualsiasi dispositivo. Le tue chiavi non lasciano mai il server, ma puoi usare il tuo account ovunque!", + nsecAppDesc: "Signer remoto gratuito e sicuro. Crea l'URI bunker:// e incollalo al momento dell'accesso.", + nostrumDesc: "Un'altra opzione di signer remoto con supporto mobile.", + howToUse: "💡 Come usare:", + howToUseDesc: "Crea un account su uno di questi servizi, ottieni la tua stringa di connessione bunker://, poi incollala nella scheda “Nostr Connect” al momento dell'accesso." + }, + relayList: { + connected: "Connesso", + connecting: "Connessione…", + offline: "Offline", + removeUrl: "Rimuovi {{url}}", + add: "Aggiungi", + publishedTitle: "Lista relay pubblicata", + publishedDesc: "Sincronizzato su Nostr (kind 10002).", + publishFailedTitle: "Pubblicazione della lista relay non riuscita", + invalidUrlTitle: "URL relay non valido", + invalidUrlDesc: "Prova qualcosa come wss://relay.example.com", + alreadyInList: "Relay già nella tua lista", + keepReadWriteTitle: "Mantieni lettura o scrittura su", + keepReadWriteDesc: "Un relay necessita almeno di lettura o scrittura.", + alreadyInThisList: "Relay già in questa lista", + dmPublishedTitle: "Relay DM pubblicati", + dmPublishedDesc: "Inbox NIP-17 aggiornata.", + dmPublishFailedTitle: "Pubblicazione dei relay DM non riuscita", + nip65Title: "Relay (NIP-65)", + nip65DescUser: "Tocca Lettura / Scrittura per attivare. Pubblicato su Nostr come la tua lista kind 10002.", + nip65DescLoggedOut: "Tocca Lettura / Scrittura per attivare. Accedi per pubblicare la tua lista su Nostr.", + noRelays: "Ancora nessun relay — aggiungine uno qui sotto.", + local: "Locale", + read: "Lettura", + readHint: "Recupera contenuti da questo relay", + write: "Scrittura", + writeHint: "Pubblica i tuoi eventi su questo relay", + dmTitle: "Relay per inbox DM", + dmDesc: "Dove ricevi i messaggi diretti NIP-17 (kind 10050). Se vuoto, ripiega sui tuoi relay di scrittura.", + localTitle: "Relay locali", + localDesc: "Solo app (es. un nodo LAN). Usati per letture e scritture; mai pubblicati.", + blockedTitle: "Relay bloccati", + blockedDesc: "Non connetterti mai a questi — esclusi da ogni lettura e scrittura." + }, + relatr: { + searchingTitle: "Ricerca del servizio Relatr...", + searchingDesc: "Interrogazione di Nostr per i profili Relatr", + foundTitle: "Servizio Relatr trovato!", + foundDesc: "Servizio: {{name}}", + unknown: "Sconosciuto", + notFoundTitle: "Nessun servizio Relatr trovato", + notFoundDesc: "Prova a inserire manualmente la pubkey o controlla https://www.relatr.xyz/", + searchFailedTitle: "Ricerca non riuscita", + searchFailedDesc: "Impossibile interrogare Nostr per i profili Relatr", + invalidPubkeyTitle: "Pubkey non valida", + invalidPubkeyDesc: "Inserisci una pubkey hex valida di 64 caratteri", + enabledTitle: "Relatr abilitato!", + enabledDesc: "I punteggi di fiducia globali sono ora attivi.", + disabledTitle: "Relatr disabilitato", + disabledDesc: "I punteggi di fiducia non vengono più recuperati.", + title: "Punteggi di fiducia Relatr", + desc: "I punteggi di fiducia globali aiutano a identificare utenti affidabili e ridurre lo spam", + status: "Stato", + active: "Attivo", + disabled: "Disabilitato", + activeStrong: "Relatr è attivo.", + activeDesc: "I punteggi di fiducia dall'analisi della rete globale di ContextVM aiutano a identificare skater affidabili e ridurre lo spam.", + disabledStrong: "Relatr è disabilitato.", + disabledHint: "Abilitalo per ottenere i punteggi di fiducia dalla rete globale Nostr.", + disable: "Disabilita Relatr", + enable: "Abilita Relatr", + advancedSettings: "Impostazioni avanzate", + servicePubkey: "Pubkey del servizio Relatr", + pubkeyPlaceholder: "Inserisci una pubkey hex di 64 caratteri...", + searching: "Ricerca...", + autoDiscover: "Rilevamento automatico", + pubkeyDefault: "Predefinito: servizio Relatr ufficiale di ContextVM (npub1dvmc...)", + relayLabel: "Relay (dove Relatr pubblica i punteggi)", + relayDefault: "Predefinito: wss://relay.contextvm.org (relay ufficiale di ContextVM)", + applyChanges: "Applica modifiche", + learnMore: "Scopri di più:", + website: "Sito web Relatr", + github: "GitHub Relatr", + nip85Spec: "Specifica NIP-85" + }, + followList: { + unfollow: "Smetti di seguire", + title: "La tua rete Nostr", + desc: "Gestisci chi segui. Seguire gli utenti aiuta a costruire la tua rete di fiducia e determina quali spot mostrano i badge di fiducia.", + following: "Seguiti ({{count}})", + followers: "Follower ({{count}})", + follow: "Segui", + followHint: "💡 Incolla una pubkey Nostr (npub1...), un indirizzo NIP-05 (utente@dominio.com) o una pubkey hex", + notFollowing: "Non stai ancora seguendo nessuno", + notFollowingHint: "Segui gli skater per vedere i loro spot con badge ✅ VERIFICATO", + trustActiveStrong: "✅ Badge di fiducia attivi:", + trustActive: "Gli spot creati da persone che segui mostreranno ora i badge VERIFICATO. Gli spot dei loro amici mostreranno i badge AFFIDABILE.", + noFollowers: "Ancora nessun follower", + noFollowersHint: "Condividi il tuo profilo Nostr per ottenere follower!", + howTitle: "💡 Come il follow influisce sui badge di fiducia", + verifiedStrong: "✅ VERIFICATO (verde):", + verifiedDesc: "Spot creati da persone che segui direttamente", + trustedStrong: "🟡 AFFIDABILE (giallo):", + trustedDesc: "Spot creati da persone che i tuoi amici seguono (2 salti)", + unverifiedStrong: "⚪ Non verificato:", + unverifiedDesc: "Spot di utenti senza alcun collegamento alla tua rete", + tip: "💡 Consiglio: segui skater attivi per vedere più spot verificati e costruire la tua rete di fiducia!" + }, + notify: { + enableTitle: "Abilita le notifiche", + enableDesc: "Fai vibrare questo dispositivo quando qualcosa richiede la tua attenzione.", + checkingPermission: "Verifica del permesso…", + unsupported: "Questo dispositivo non supporta le notifiche qui. Ricompila l'app Android per abilitarle sul tuo telefono.", + denied: "Le notifiche sono bloccate per questo sito. Consentile nelle impostazioni del browser/sistema operativo, poi riprova.", + backgroundTitle: "Notifiche in background", + backgroundDesc: "Ricevi avvisi per messaggi e scambi anche quando SkateSpots è chiusa.", + pushUnsupported: "Questo browser non supporta il push in background. Su mobile, aggiungi SkateSpots alla schermata home.", + pushPrivacy: "Per raggiungerti mentre è chiusa, un server di notifiche SkateSpots riceve un ping dal tuo relay quando qualcosa arriva per la tua chiave e lo passa al servizio push del tuo telefono. Vede solo che la tua chiave ha qualcosa — mai chi l'ha inviato né cosa dice, e non può decifrare i tuoi messaggi. Attivalo per ogni dispositivo.", + bgDeliveryTitle: "Consegna in background (Android)", + bgDeliveryDesc: "Controlla nuovi messaggi, offerte e scambi mentre l'app è chiusa — senza servizi Google.", + off: "Off", + standard: "Standard (~15 min)", + fast: "Veloce (~5 min)", + bgDeliveryNote: "Standard è al meglio delle possibilità — Android potrebbe rimandarlo in Doze. Veloce mostra una notifica persistente e consuma più batteria. Nulla viene decifrato sul nostro server.", + notifyMeAbout: "Avvisami su", + couldNotEnable: "Impossibile abilitare", + sendTest: "Invia una notifica di prova", + testTitle: "Le notifiche di SkateSpots sono attive 🛹", + testBody: "Ecco come apparirà un DM, uno zap o un invito a una crew.", + footerBefore: "Gli avvisi sono generati sul tuo dispositivo dai dati che l'app già possiede, e gli avvisi dei messaggi diretti non decifrano mai i tuoi messaggi — quindi ad Amber non viene mai chiesto di aprirne uno. Con", + footerAfter: "disattivato, un'app completamente chiusa non può essere raggiunta, quindi gli avvisi arrivano la prossima volta che apri SkateSpots.", + cat_dms_label: "Messaggi diretti", + cat_dms_hint: "Qualcuno ti invia un messaggio privato", + cat_crew_label: "Crew", + cat_crew_hint: "Inviti, richieste di adesione e conferme di appartenenza", + cat_social_label: "Zap, risposte e menzioni", + cat_social_hint: "Reazioni, repost, zap, risposte e aggiornamenti sugli eventi", + cat_newsletter_label: "Newsletter", + cat_newsletter_hint: "Nuove uscite di SkateSpots (solo abbonati)", + cat_trades_label: "Offerte e scambi", + cat_trades_hint: "Offerte, controfferte e conferme di scambio", + cat_reminders_label: "Promemoria eventi", + cat_reminders_hint: "Un promemoria un'ora prima degli eventi a cui parteciperai (app Android)" + }, + regionBackfill: { + taggedTitle: "{{count}} spot{{s}} etichettati", + taggedSkipped: "{{count}} saltati (senza coordinate o senza corrispondenza nel geocoder).", + taggedOk: "Tag di regione scritti sul relay della community.", + nothingTitle: "Niente da etichettare", + nothingDesc: "Nessun pin può essere geocodificato. Riprova più tardi.", + failedTitle: "Backfill non riuscito", + title: "Backfill dei tag di regione", + admin: "Admin", + descBefore: "I pin creati prima dell'esistenza del geocoding hanno coordinate ma nessun tag di città/paese, quindi la mappa li disegna mentre le Statistiche della community può solo dire “Non categorizzato”. Questo ridefinisce i tag da ogni pin e ripubblica", + descStrong: "i tuoi", + descAfter: "spot e shop senza tag.", + scanning: "Scansione dei tuoi spot…", + allTagged: "Ogni spot e shop che possiedi ha già un tag di regione. 🎉 Gli eventuali pin “Non categorizzati” rimanenti appartengono ad altri mappatori — solo le loro chiavi possono etichettarli.", + countLine: "{{count}} dei tuoi spot{{s}}/shop senza tag di regione. Il tuo signer potrebbe chiedere di approvarne ciascuno.", + tagging: "Etichettatura {{done}}/{{total}}…", + run: "Esegui backfill dei tag di regione", + summary: "{{updated}} aggiornati · {{skipped}} saltati · {{failed}} non riusciti" + }, + adminReview: { + title: "Coda di revisione", + flagged: "{{count}} spot{{s}} con segnali sospetti — nascondi o ignora.", + clean: "Spot che sembrano voci di test o pin fuori tema." + }, + grantPro: { + invalidNpub: "Inserisci un npub valido (o una pubkey hex)", + invalidDays: "I giorni devono essere un numero positivo", + grantedTitle: "Pro concesso ⚡", + grantedDesc: "{{npub}} fino al {{date}}", + failedTitle: "Concessione non riuscita", + title: "Concedi Sasquatch Pro", + owner: "Proprietario", + desc: "Fallback manuale per un pagamento verificato che la ricevuta zap ha mancato. Pubblica una concessione firmata dal proprietario; l'utente non può falsificarla.", + targetPlaceholder: "npub1… (o hex)", + grant: "Concedi" + }, + myData: { + reactionTitle: "Reazione {{emoji}}", + deleting: "Eliminazione...", + requestDeletion: "Richiedi eliminazione", + selectContentTitle: "Seleziona il contenuto da eliminare", + selectContentDesc: "Seleziona le voci specifiche per cui vuoi richiedere l'eliminazione.", + all: "Tutto", + spots: "Spot", + events: "Eventi", + shops: "Shop", + listings: "Annunci", + collections: "Collezioni", + lab: "Lab", + posts: "Post", + reactions: "Reazioni", + selectAll: "Seleziona tutto", + selectAllVisible: "Seleziona tutto il visibile", + selectedCount: "{{count}} selezionati", + noItemsCategory: "Nessuna voce in questa categoria", + decentralizedStrong: "Importante:", + decentralizedNote: "Nostr è decentralizzato. I relay dovrebbero rispettare le richieste di eliminazione, ma alcuni potrebbero non farlo. Non è un'eliminazione permanente garantita.", + deleteCount: "Elimina {{count}} item{{s}}", + noDataTitle: "Nessun dato da esportare", + noDataDesc: "Non hai ancora pubblicato alcun evento.", + exportedTitle: "Dati esportati!", + exportedDesc: "{{count}} eventi scaricati come JSON.", + deletionRequestedTitle: "Eliminazione richiesta", + deletionRequestedDesc: "La richiesta di eliminazione è stata pubblicata sui relay.", + deletionRequestedMany: "Richiesta l'eliminazione di {{count}} voci. Nota: alcuni relay potrebbero non rispettare questa richiesta.", + deletionFailedTitle: "Eliminazione non riuscita", + deletionFailedDesc: "Impossibile pubblicare la richiesta di eliminazione. Riprova.", + loginRequired: "Accesso richiesto", + loginRequiredDesc: "Accedi per visualizzare e gestire i tuoi dati.", + title: "I miei dati", + desc: "I tuoi contenuti sulla rete Nostr. Possiedi questi dati - esportali in qualsiasi momento o richiedine l'eliminazione.", + coachFilmer: "Coach/Filmer", + zaps: "Zap", + received: "Ricevuti", + exportAll: "Esporta tutti i dati", + recentActivity: "Attività recente", + viewAll: "Vedi tutto ({{count}})", + noDataPublished: "Nessun dato pubblicato finora", + startBy: "Inizia", + addingASpot: "aggiungendo uno spot", + aboutYourData: "I tuoi dati", + ownDataStrong: "I tuoi dati sono tuoi.", + ownData: "Tutti i contenuti sono firmati con le tue chiavi crittografiche e archiviati sui relay Nostr. Nessuna azienda li controlla.", + exportAnytimeStrong: "Esporta quando vuoi", + exportAnytime: "- Scarica tutti i tuoi eventi come JSON", + portableStrong: "Portatile", + portable: "- Usa le tue chiavi in qualsiasi app Nostr", + selectiveStrong: "Eliminazione selettiva", + selective: "- Scegli esattamente cosa eliminare", + caveatStrong: "Avvertenza sulla decentralizzazione", + caveat: "- Alcuni relay potrebbero conservare i dati nonostante le richieste di eliminazione" + }, + settingsPage: { + seoTitle: "Impostazioni - SkateSpots", + seoDescription: "Gestisci le impostazioni del tuo account SkateSpots.", + heading: "IMPOSTAZIONI", + subtitle: "Preferenze account e app", + editProfile: "Modifica profilo", + profileRefreshed: "Profilo aggiornato!", + found: "Trovato: {{name}}", + unnamed: "senza nome", + profileNotFound: "Profilo non trovato", + notFoundOnRelay: "Non trovato su nessun relay.", + refreshFailed: "Aggiornamento non riuscito", + refreshFailedDesc: "Impossibile connettersi ai relay.", + loginToEdit: "Accedi per modificare il tuo profilo", + noProfileRelays: "Non abbiamo trovato un profilo sui relay. Se ne hai impostato uno in precedenza, prova ad aggiornare.", + checkDisplayName: "un nome visualizzato", + checkPhoto: "una foto del profilo", + checkBio: "una breve bio", + checkLightning: "un indirizzo Lightning così le persone possono zapparti", + checkHandle: "un handle gratuito @skate-spots.org", + finishProfile: "Completa il tuo profilo", + addItem: "Aggiungi {{item}}", + nip05Title: "Verifica NIP-05", + nip05Desc: "Ottieni un indirizzo Nostr verificato (come nome@dominio.com) per costruire fiducia. Richiesto per creare eventi, profili di coaching e shop.", + freeFromSkateSpots: "Gratuito da SkateSpots", + claimHandleBefore: "Richiedi un handle come", + claimHandleAfter: "— nessuna registrazione, nessun costo, nessun dominio da gestire. Richiedilo nella scheda Profilo, poi salva.", + claimInProfile: "Richiedi nel Profilo", + nip05Footer: "Dopo aver ottenuto il tuo NIP-05, aggiungilo nel campo Profilo e salva.", + localRelayOn: "Relay locale attivo", + localRelayOff: "Relay locale disattivato", + lookingForCitrine: "Ricerca di Citrine su questo dispositivo…", + noLongerUsing: "Non utilizzi più il relay sul dispositivo.", + localRelay: "Relay locale", + citrineOff: "Letture più veloci e backup offline su questo dispositivo", + citrineSearching: "Ricerca di Citrine su questo dispositivo…", + citrineLive: "Connesso — lettura e backup in locale", + citrineWaiting: "Abilitato — avvia Citrine per connetterti", + toggleCitrine: "Attiva/disattiva il relay locale Citrine", + citrineDetected: "Relay Citrine rilevato", + citrineLooking: "Ricerca di Citrine…", + citrineNotDetected: "Citrine non rilevato", + recheckCitrine: "Ricontrolla il relay Citrine", + checking: "Verifica in corso", + recheck: "Ricontrolla", + chipInstantReads: "Letture istantanee", + chipWorksOffline: "Funziona offline", + chipOnDeviceBackup: "Backup sul dispositivo", + cantReachStrong: "Impossibile raggiungere Citrine.", + cantReachBefore: "Assicurati che l'app gratuita Citrine sia installata e che il suo relay sia", + started: "avviato", + cantReachAfter: ", poi tocca Ricontrolla. Esegue un relay Nostr privato sul tuo telefono per letture istantanee e un backup offline.", + citrineStep1Before: "Apri Citrine → tocca", + start: "Avvia", + citrineStep2Before: "Torna qui → tocca", + getCitrine: "Scarica Citrine", + citrinePrivacy: "Il tuo Stash e i tuoi messaggi restano cifrati end-to-end qui, esattamente come ovunque. Il relay locale velocizza solo le cose e conserva una copia sul tuo dispositivo — non sostituisce mai la cifratura.", + communityRelayDisabled: "Relay della community disabilitato", + communityRelayEnabled: "Relay della community abilitato", + usingOnlyPersonal: "Utilizzo solo dei tuoi relay configurati.", + skateRelayIncluded: "Relay SkateSpots incluso.", + relays: "Relay", + relayPrivacyBefore: "I relay possono vedere il tuo", + ipAddress: "indirizzo IP", + relayPrivacyAfter: "quando ti connetti. Tor lo nasconde — e considera una VPN “gratuita” come un campanello d'allarme; di solito monetizzano il tuo traffico.", + communityRelay: "Relay della community", + syncingGlobal: "Sincronizzazione con la community globale dello skate", + usingOnlyPersonalShort: "Utilizzo solo di relay personali", + appearance: "Aspetto", + language: "Lingua", + darkModeOnly: "Solo modalità scura", + darkModeDesc: "SkateSpots usa un'estetica dark neon ispirata alla cultura dello skate. Sfondo nero, rosa neon, lime e arancione.", + navigation: "Navigazione", + sasquatchExpanded: "Il Sasquatch è stato espanso! 🦧 Aggiorna la pagina per vederlo.", + advanced: "Avanzate", + sasquatchGuide: "🦧 Guida del Sasquatch", + sasquatchResetDesc: "Reimposta la guida introduttiva alla vista espansa", + expandSasquatch: "Espandi The Sasquatch", + wallet: "Wallet", + loginToWallet: "Accedi per gestire il tuo wallet", + openWallet: "Apri wallet", + balanceSendReceive: "Saldo, invia, ricevi", + connectNwc: "Connetti wallet NWC", + account: "Account", + security: "Sicurezza", + securitySub: "Chiavi, firma, Amber", + nip05Sub: "Ottieni un indirizzo Nostr verificato", + app: "App", + myStash: "Il mio Stash", + myStashSub: "Inventario gear privato", + relaysSub: "Connessioni ai relay Nostr", + appearanceSub: "Lingua e tema", + assistant: "Assistente", + showSasquatch: "Mostra l'assistente Sasquatch", + showSasquatchDesc: "Mostra il pulsante flottante del Sasquatch sulla mappa e sulle altre schermate.", + showMapFooter: "Mostra la barra dei link della mappa", + showMapFooterDesc: "Mostra la sottile striscia di link in fondo alla mappa.", + notifications: "Notifiche", + notificationsSub: "Avvisi per DM, crew e zap", + coordinator: "Coordinatore", + coordinatorSub: "Il tuo server di gruppo Cordn", + data: "Dati", + myData: "I miei dati", + myDataSub: "Esporta, importa, gestisci", + advancedSub: "Relatr, Sasquatch, strumenti", + notLoaded: "Non caricato", + notLoggedIn: "Non connesso" + }, + onboarding: { + seoTitle: "Inizia — SkateSpots", + seoDescription: "Unisciti alla community decentralizzata dello skateboard. Trova spot, connettiti con i coach, invia zap. Gratis per sempre.", + homeSetTitle: "Casa impostata 🛹", + homeSetDesc: "Ora la mappa si aprirà sulla tua zona.", + locationFailedTitle: "Impossibile ottenere la tua posizione", + locationFailedDesc: "Controlla i permessi di localizzazione, oppure scegli la tua zona dalla mappa.", + niceTitle: "🎉 Ottimo!", + niceDesc: "Ora hai capito come funziona Nostr. Andiamo a skatare!", + npubCopied: "npub copiato negli appunti.", + saveLoginNow: "Salva il tuo accesso — fallo adesso", + saveLoginNowDesc: "Il tuo codice di recupero è l'unico modo per rientrare nel tuo account. Niente email, niente reset della password.", + betaBadge: "Beta — Aperto a skater di tutto il mondo", + headline1: "SKATE", + headline2: "IL TUO MONDO", + heroBefore: "Una", + decentralized: "decentralizzata", + heroAfter: "community dello skate. Nessuna azienda la possiede. Nessun algoritmo seppellisce i tuoi spot. Nessun ban hammer. Solo skater.", + pillMap: "Mappa degli spot", + pillCoaches: "Coach e filmer", + pillEvents: "Eventi", + pillGear: "Compra/vendi gear", + pillZaps: "Zap in Bitcoin", + pillStash: "Stash del gear", + pillCrews: "Crew", + createFreeAccount: "Crea il tuo account gratuito", + noEmailNoPassword: "Niente email. Niente password. Possiedi la tua identità per sempre.", + findSpots: "Trova spot vicino a te", + addFirstSpot: "Aggiungi il tuo primo spot", + accountCreated: "Sei dentro! Account creato ✓", + identityYours: "La tua identità è tua — conservata nella tua chiave, non sui nostri server.", + whereSkate: "Dove skati?", + whereSkateDesc: "Imposta la tua zona di casa una volta e la mappa si aprirà sui tuoi spot ogni volta. Il tuo GPS non lascia mai il dispositivo.", + useMyLocation: "Usa la mia posizione", + pickOnMap: "Scegli sulla mappa", + loginSaved: "Accesso salvato — il tuo account è al sicuro e recuperabile.", + whyBother: "Perché farlo?", + why1Title: "Ogni spot, una mappa", + why1Body: "Ledge, rail, DIY, park — mappati da skater che li cavalcano davvero. Controlla lo stato prima di uscire, così non sprechi una sessione per un bust.", + why2Title: "Costruito da skater, non da giacca e cravatta", + why2Body: "Niente pubblicità, niente algoritmo che ti spinge spazzatura in faccia, niente raccolta dati. Open source. La mappa appartiene alla community — te compreso.", + why3Title: "Fatti pagare per metterti in gioco", + why3Body: "Mappa una gemma, filma una bomba, organizza una sessione — e ricevi zap in Bitcoin vero direttamente sul tuo wallet. Nessun taglio della piattaforma, nessun intermediario.", + why4Title: "Il tuo account è davvero tuo", + why4Body: "Una chiave ti fa accedere a ogni app Nostr. Nessuna azienda può bloccarti fuori o cancellarti l'account a piacimento. Porta la tua identità ovunque.", + everythingFree: "Tutto ciò che puoi fare — gratis", + featSpots: "Scopri spot", + featSpotsDesc: "Mappa interattiva con migliaia di spot in tutto il mondo", + featLab: "The Lab", + featLabDesc: "Trova coach, filmer ed editor video vicino a te", + featEvents: "Eventi", + featEventsDesc: "Competizioni, sessioni, raduni", + featGear: "Compra / Vendi gear", + featGearDesc: "Marketplace peer-to-peer per gear da skate usato", + featStash: "Il mio Stash", + featStashDesc: "Inventario privato e cifrato di tutto ciò che possiedi", + featCrews: "Crew", + featCrewsDesc: "Gira con la tua crew — spot condivisi, chat e sessioni", + whatIsNostr: "Cos'è Nostr?", + whatIsNostrSub: "Il protocollo che alimenta SkateSpots", + nostrBefore: "Nostr è un protocollo aperto — come l'email, ma per le app social. Il tuo account è una", + cryptoKeyPair: "coppia di chiavi crittografiche", + nostrAfter: "che possiedi. Nessuna singola azienda controlla il tuo account o i tuoi dati — scegli tu quali relay li conservano, e puoi persino gestirne uno tuo. La tua identità funziona su ogni app Nostr.", + nostrPoint1: "Possiedi i tuoi dati e le tue chiavi", + nostrPoint2: "Nessuna azienda può bannarti", + nostrPoint3: "L'identità funziona ovunque", + nostrPoint4: "Mance in Bitcoin dirette", + deepDive: "Approfondimento: come funziona Nostr", + privacyTip: "Consiglio sulla privacy: il tuo GPS non lascia mai il dispositivo. I server a cui ti connetti (come le tile della mappa) possono comunque vedere il tuo IP — se vuoi nascondere anche quello, una VPN o Tor funzionano. Del tutto opzionale.", + readPrivacy: "Leggi la nostra pagina sulla privacy", + zapsWallet: "⚡ Zap e wallet", + optional: "Opzionale", + walletDesc: "Gli zap sono mance in Bitcoin che invii direttamente a uno skater che ha droppato uno spot malato, filmato una clip bomba o organizzato una grande sessione. Nessuna commissione della piattaforma. Nessun intermediario. Il 100% va a loro.", + builtInWallet: "Wallet Cashu integrato", + builtInWalletDesc: "Ricevi pagamenti Lightning direttamente nell'app. Nessuna configurazione.", + balance: "Saldo", + connectExternal: "Connetti wallet esterno", + connectExternalDesc: "Hai Alby, Mutiny o un altro wallet? Collegalo tramite NWC.", + connectViaNwc: "Connetti via NWC", + loginToConnect: "Accedi per collegare il tuo wallet.", + fiveDollars: "💡 5 $ di Bitcoin = centinaia di zap da distribuire nella community", + commonQuestions: "Domande comuni", + faq1Q: "SkateSpots è gratuito?", + faq1A: "Gratuito al 100%. Sfoglia spot, aggiungi località, trova coach, crea eventi, partecipa alle sessioni — tutto gratis, per sempre. Bitcoin (zap) è opzionale se vuoi dare mance ai creatori.", + faq2Q: "Cos'è Nostr e perché SkateSpots lo usa?", + faq2Before: "Nostr è un protocollo aperto per app decentralizzate — pensalo come internet stesso, non posseduto da nessuna azienda. Il tuo account SkateSpots è una coppia di chiavi crittografiche che", + faq2Strong: "possiedi tu", + faq2After: ". Nessuna singola azienda può bannare il tuo account o tenere in ostaggio i tuoi dati — scegli tu quali relay li conservano, e puoi persino gestirne uno tuo. La tua identità funziona anche su altre app Nostr come Primal, Damus o Amethyst.", + faq3Q: "Cos'è una nsec e perché è importante?", + faq3Before: "La tua", + faq3Mid: "è la tua chiave privata — è l'unica prova che possiedi il tuo account. A differenza delle password, non esiste", + faq3Strong: "nessun “ho dimenticato la password”", + faq3After: ". Se perdi la tua nsec, il tuo account è perso per sempre. Quando crei un account, scarica subito il backup e conservalo in un posto sicuro (gestore di password, scritto offline).", + faq4Q: "Quali signer / app funzionano con SkateSpots?", + faq4Desktop: "Su desktop:", + faq4Extensions: "estensioni del browser.", + faq4Android: "Su Android:", + faq4AndroidAfter: "(esperienza migliore con l'app nativa).", + faq4Ios: "Su iOS:", + faq4IosAfter: "oppure incolla la tua nsec direttamente (meno sicuro).", + faq4Note: "Puoi anche accedere incollando direttamente la tua nsec — ma usare un'estensione signer è più sicuro.", + faq5Q: "Posso usare SkateSpots sul telefono?", + faq5Before: "Sì! SkateSpots è una PWA (Progressive Web App). Visita", + faq5Mid: "nel browser del tuo telefono e tocca", + faq5Em: "“Aggiungi alla schermata Home”", + faq5After: "per un'esperienza app completa. Oppure scaricala da", + faq5End: "— uno store di app decentralizzato.", + faq6Q: "Cos'è uno zap?", + faq6A: "Uno zap è una mancia in Bitcoin istantanea inviata sulla Lightning Network. Quando zappi uno skater, i sats arrivano nel suo wallet in pochi secondi — niente PayPal, niente Venmo, nessun taglio. Chi ha filmato quel 4-stair viene pagato direttamente dai fan.", + faq7Q: "I miei spot verranno cancellati se SkateSpots chiude?", + faq7A: "No. I tuoi spot sono pubblicati sui relay Nostr — server distribuiti che chiunque può gestire. Anche se SkateSpots come prodotto sparisse domani, i tuoi dati esisterebbero ancora sui relay e qualsiasi client Nostr potrebbe mostrarli.", + faq8Q: "Posso aggiungere uno spot che si trova su una proprietà privata?", + faq8A: "Puoi farlo, ma usa buon senso. Gli spot su proprietà privata dovrebbero essere contrassegnati di conseguenza così gli skater sanno come regolarsi. SkateSpots non è responsabile per violazioni di domicilio — sii sempre rispettoso verso i proprietari e la gente del posto.", + faq9Q: "Come segnalo un bug o do un feedback?", + faq9Before: "Scrivi in DM al team di SkateSpots direttamente su Nostr, o contatta il nostro coordinatore beta:", + faq9Link: "Feedback beta → cordn.net", + readyToShred: "PRONTO A RULLARE?", + stopScrolling: "Smetti di scorrere. Scarica l'app. Trova uno spot. Skatalo.", + exploreSpots: "Esplora gli spot", + betaFeedbackTitle: "Beta — Vogliamo il tuo feedback", + betaFeedbackDesc: "SkateSpots è in sviluppo attivo. Potresti incontrare asperità — è colpa nostra, non tua. Segnala bug, suggerisci funzioni, dicci cosa non va.", + betaCoordinator: "Coordinatore beta", + betaCoordinatorDesc: "cordn.net → scrivici", + dmOnNostr: "DM su Nostr", + fixSameDay: "Hai trovato un bug? Lo sistemiamo lo stesso giorno. Le tue segnalazioni rendono l'app migliore per ogni skater.", + relaySetup: "Configurazione relay" + }, + relayEdu: { + understandingNostr: "Capire Nostr", + stepOf: "Passo {{current}} di {{total}}", + step1Title: "Capire i relay", + step1Desc: "Pensa ai relay come a skate shop che condividono notizie sugli spot", + you: "Tu", + relays: "Relay", + skaters: "Skater", + s1Good1: "Nessuna azienda possiede il tuo account", + s1Good1Desc: "La tua identità vive su più server relay", + s1Good2: "Controlli tu dove vivono i tuoi dati", + s1Good2Desc: "I tuoi post si sincronizzano tra i relay che scegli — scegli i tuoi, o gestiscine uno tu", + s1Warn: "Gli operatori dei relay possono vedere i post pubblici", + s1WarnDesc: "Pensalo come pubblicare su una bacheca", + step2Title: "Pubblico vs privato", + step2Desc: "Sapere cosa è visibile e cosa è cifrato", + publicTitle: "Pubblico (chiunque può vederlo)", + pub1: "Gli spot che aggiungi alla mappa", + pub2: "Recensioni e commenti", + pub3: "Le informazioni del tuo profilo (nome, immagine)", + pub4: "Chi segui", + privateTitle: "Privato (cifrato)", + priv1: "Messaggi diretti", + priv2: "Comunicazioni del wallet", + noteStrong: "Nota:", + note: "I post potrebbero essere conservati permanentemente sui relay. Pensa prima di pubblicare - proprio come nella vita reale!", + step3Title: "Le tue chiavi = il tuo account", + step3Desc: "Questa è la cosa più importante da capire", + secretKeyTitle: "La tua chiave segreta (nsec)", + secretKeyDesc: "Pensala come il tuo skate — non prestarla mai a nessuno. Prova che possiedi il tuo account.", + s3Bad1: "Se la perdi, il tuo account non può essere recuperato", + s3Bad2: "Nessun “ho dimenticato la password” - nessuno può reimpostarla", + s3Good: "Fanne il backup e conservala al sicuro", + publicKeyTitle: "La tua chiave pubblica (npub)", + publicKeyDesc: "È come il tuo nome utente - condividila liberamente così gli altri possono trovarti!", + inControl: "🔐 Hai il controllo - nessuna azienda può bloccarti fuori!", + skip: "Salta", + gotIt: "Capito!" + }, + about: { + seoTitle: "Informazioni - SkateSpots", + seoDescription: "Scopri SkateSpots e la nostra missione di costruire una community di skateboard decentralizzata.", + npubCopied: "npub copiato negli appunti. Incollalo nel tuo client Nostr preferito per inviare un DM.", + bugReport: "🐛 Segnalazione bug", + bugWhatHappened: "Cosa è successo:", + bugExpected: "Cosa mi aspettavo:", + bugSteps: "Passi per riprodurre:", + aboutWord: "INFORMAZIONI", + heroBefore: "Connettiti con le scene dello skate locali in tutto il mondo.", + skaterOwned: "Dati di proprietà degli skater", + heroAfter: ", relay gestiti dalla community.", + viewStats: "Vedi le statistiche della community", + missionTitle: "La nostra missione", + mission1: "SkateSpots aiuta gli skaterboarder a scoprire spot, connettersi con i pro a The Lab e organizzare sessioni - tutto senza controllo aziendale. Lo skate vero accade offline, questo strumento ti connette solo ad esso.", + mission2: "La conoscenza dello skateboard dovrebbe vivere con la community, non rinchiusa in app aziendali. Ecco perché SkateSpots gira su Nostr - un sistema basato su relay in cui gli skater controllano i propri dati, scelgono quali relay li conservano e possono persino gestirne uno proprio. Nessuna singola azienda possiede la mappa.", + whyNostr: "Perché Nostr?", + why1Title: "Controllato dalla community", + why1Desc: "I tuoi spot vivono su relay della community. Gli skater gestiscono i server, non le corporation.", + why2Title: "Possiedi i tuoi dati", + why2Desc: "La tua identità Nostr è tua. Portala su qualsiasi app Nostr - nessun lock-in.", + why3Title: "Integrazione Bitcoin", + why3Desc: "Zappa i creatori direttamente con Bitcoin. Nessuna piattaforma che prende il 30%.", + why4Title: "Open source", + why4Desc: "Costruito allo scoperto. Chiunque può contribuire o fare un fork del codice.", + getInvolved: "Partecipa", + getInvolvedDesc: "SkateSpots è open source e guidato dalla community. Contribuisci al codice, condividi spot o aiuta gli altri a iniziare.", + betaTitle: "Test beta", + betaDesc: "Caro utente! Grazie per aver testato SkateSpots in beta. Tieni presente che l'app è ancora in beta e potrebbero esserci bug o problemi di sicurezza. Se incontri problemi o vuoi segnalare un bug/problema, contattaci!", + giveFeedback: "Dacci un feedback:", + copyNpub: "Copia npub", + reportBug: "Segnala bug", + viewProfile: "Vedi profilo", + downloadApp: "Scarica l'app", + downloadAppDesc: "Installa SkateSpots su Android tramite Zapstore — lo store di app open source e nativo Bitcoin.", + getOnZapstore: "Scarica su Zapstore", + credits: "Crediti", + creditPoweredBy: "Alimentato da", + creditNostr: "Protocollo decentralizzato", + creditCrewChat: "Chat della crew tramite", + creditCordn: "Chat di gruppo cifrata end-to-end", + creditEcash: "Ecash tramite", + creditCashu: "Ecash chaumiano per Lightning", + creditWalletConnect: "Connessione wallet tramite", + creditNwc: "Nostr Wallet Connect (NIP-47)", + creditSigning: "Firma su Android con", + creditAmber: "Signer Nostr per Android", + creditMapData: "Dati della mappa Bitcoin da", + creditBtcmap: "Luoghi che accettano Bitcoin", + creditCrowdfunding: "Crowdfunding", + creditAngor: "Crowdfunding Bitcoin decentralizzato", + creditDistributed: "Distribuito su", + creditZapstore: "Store di app open source", + creditTrust: "Fiducia e chat della crew tramite", + creditContextvm: "Punteggi di fiducia Relatr e coordinamento della chat della crew cifrata", + stillQuestions: "Hai ancora domande?", + stillQuestionsDesc: "Il Sasquatch è la nostra guida AI — alimentata da dati SkateSpots in tempo reale. Chiedigli di spot, eventi, coach, gear o di come funziona qualcosa.", + askSasquatch: "Chiedi a The Sasquatch", + poweredBy: "Alimentato da", + decentralized: "Decentralizzato", + communityOwned: "Di proprietà della community" + }, + faq: { + seoTitle: "FAQ - SkateSpots", + seoDescription: "Chiedi a The Sasquatch qualsiasi cosa su SkateSpots.", + greeting: "Ehi! Sono The Sasquatch 🦧 — chiedimi qualsiasi cosa su SkateSpots. Spot, eventi, gear, wallet, privacy, Nostr — ci sono. Cosa vuoi sapere?", + gotQuestions: "Hai domande?", + heroDesc: "Chiedi a The Sasquatch — sa tutto di SkateSpots, Nostr, Bitcoin e skateboard.", + askTitle: "Chiedi a The Sasquatch", + askDesc: "Il Sasquatch è aperto nell'angolo in basso a sinistra dello schermo — cliccalo e digita la tua domanda. Ha accesso in tempo reale a spot, eventi, coach e meteo.", + askQuestion: "In cosa puoi aiutarmi su SkateSpots?", + openSasquatch: "Apri The Sasquatch", + commonQuestions: "Domande comuni — tocca per chiedere", + quickAnswers: "Risposte rapide", + footerHint: "Il Sasquatch usa dati Nostr in tempo reale dal relay SkateSpots + AI per rispondere alle tue domande. 🛹", + chip1Label: "Cos'è SkateSpots?", + chip1Q: "Cos'è SkateSpots e come funziona?", + chip2Label: "Come aggiungo uno spot?", + chip2Q: "Come aggiungo uno spot da skate alla mappa?", + chip3Label: "Cosa sono gli zap?", + chip3Q: "Cosa sono gli zap?", + chip4Label: "È gratuito?", + chip4Q: "SkateSpots è gratuito?", + chip5Label: "Cos'è Il mio Stash?", + chip5Q: "Cos'è Il mio Stash?", + chip6Label: "Come accedo?", + chip6Q: "Come accedo o creo un account?", + chip7Label: "Cos'è Nostr?", + chip7Q: "Cos'è Nostr?", + chip8Label: "Privacy e dati", + chip8Q: "Quali dati sono pubblici e quali privati su SkateSpots?", + chip9Label: "Come vendo il gear?", + chip9Q: "Come vendo gear su SkateSpots?", + chip10Label: "Cos'è The Lab?", + chip10Q: "Cos'è The Lab?", + fact1Label: "Spot da skate in tutto il mondo", + fact1Value: "Scopri e aggiungi", + fact2Label: "Zap Lightning in Bitcoin", + fact2Value: "100% gratis", + fact3Label: "Decentralizzato su Nostr", + fact3Value: "I tuoi dati sono tuoi", + fact4Label: "Inventario gear privato", + fact4Value: "Stash cifrato", + s1Q: "Cos'è SkateSpots?", + s1A: "Una mappa e community decentralizzata per lo skateboard, costruita su Nostr. Scopri spot, trova coach e filmer, unisciti a crew, pubblica eventi e compra/vendi gear — senza aziende in mezzo.", + s2Q: "Come aggiungo uno spot?", + s2A: "Tocca la mappa, oppure usa il pulsante + / “Aggiungi spot”, poi posiziona un pin e compila i dettagli. Ti serve un account Nostr gratuito (tocca Accedi → Crea account — nessuna email richiesta).", + s3Q: "Cosa sono gli zap?", + s3A: "Gli zap sono mance in Bitcoin Lightning. Puoi zappare spot, eventi, crew e persone che apprezzi. Vanno direttamente al destinatario tramite Lightning — SkateSpots non trattiene mai i tuoi fondi.", + s4Q: "È gratuito?", + s4A: "Sì. Creare un account, aggiungere spot e navigare sono gratuiti. Gli extra opzionali a pagamento (come gli annunci in evidenza) e le mance (zap) vengono pagati direttamente tra le persone.", + s5Q: "Quali dati sono pubblici?", + s5A: "Qualsiasi cosa tu pubblichi — spot, eventi, il tuo profilo — è pubblica sui relay Nostr. I tuoi messaggi privati e il tuo Stash sono cifrati end-to-end. Vedi la pagina Privacy per i dettagli.", + s6Q: "Cos'è The Lab?", + s6A: "The Lab è dove trovi persone da assumere o da cui imparare: coach, trainer, filmer, editor video, fotografi, builder, artisti e altro." + }, + privacy: { + seoTitle: "Privacy — SkateSpots", + seoDescription: "Come SkateSpots gestisce i tuoi dati: il tuo GPS resta sul dispositivo, gli spot che pubblichi sono pubblici e come nascondere il tuo IP con una VPN o Tor se vuoi.", + heroBefore: "La tua", + heroHighlight: "Privacy", + heroDesc: "Nessun tracciamento, nessuna pubblicità, nessuna vendita di dati. Ecco esattamente cosa resta sul tuo dispositivo, cosa è pubblico e come proteggere ulteriormente le cose se vuoi.", + locationTitle: "La tua posizione resta sul tuo dispositivo", + locationBefore: "Quando tocchi", + nearMe: "“Vicino a me,”", + locationAfter: "la tua posizione GPS viene letta sul dispositivo e usata solo per centrare la mappa e ordinare gli spot vicini.", + locationGood1: "Non viene mai pubblicata su Nostr.", + locationGood2: "Non viene mai inviata a SkateSpots — non esiste un server SkateSpots che la raccoglie.", + locationGood3: "Non viene mai condivisa con terze parti.", + locationGood4: "Nell'app nativa usiamo direttamente il sistema di localizzazione del tuo telefono e saltiamo i Google Play Services — così funziona su telefoni de-Googled (GrapheneOS, /e/OS) e Google non la vede mai.", + weatherBefore: "Il meteo è disattivato per impostazione predefinita. Quando lo attivi, cerca le condizioni per la", + weatherEm: "posizione", + weatherAfter: "pubblica dello spot — non la tua.", + publicTitle: "Cosa è pubblico per design", + publicDesc: "SkateSpots è una mappa condivisa, quindi alcune cose sono fatte per essere viste da tutti. Quando scegli di pubblicarle, queste sono pubbliche sulla rete Nostr:", + public1Strong: "Gli spot che aggiungi", + public1: "— incluse le loro coordinate. Se aggiungi uno spot nella tua posizione esatta, quella posizione diventa pubblica. Pensa prima di posizionare un pin sul tuo vialetto.", + public2Strong: "Recensioni, commenti e il tuo profilo pubblico", + public2: "(nome, immagine).", + public3: "Chi segui e le reazioni pubbliche.", + public4Strong: "Gli zap", + public4: "sono pubblici per impostazione predefinita: uno zap collega il tuo account — spesso il tuo indirizzo Lightning — al post che hai pagato e alla mancia stessa. Il tuo wallet può inviarlo in modo anonimo se preferisci che non lo faccia.", + publicNoteBefore: "Una VPN o Tor", + notWord: "non", + publicNoteAfter: "nasconde il contenuto di ciò che pubblichi — le coordinate di uno spot sono pubbliche comunque. Gli strumenti per la privacy nascondono la tua identità di rete (il tuo IP), non le cose che scegli di pubblicare.", + encryptedTitle: "Cosa è privato e cifrato", + enc1Strong: "I messaggi diretti", + enc1Mid: "e", + enc1Strong2: "le chat della crew", + enc1: "sono cifrati end-to-end (NIP-17). Solo i partecipanti possono leggerli.", + enc2Strong: "Il mio Stash", + enc2: "— il tuo inventario gear privato — è cifrato con la tua chiave.", + enc3Strong: "I membri solo-crew", + enc3: "possono scegliere di essere visibili solo ai loro compagni di crew.", + ipTitle: "Cosa lascia il tuo dispositivo: il tuo IP", + ipBefore: "Come ogni sito web, i server con cui SkateSpots parla possono vedere il tuo", + ipAddress: "indirizzo IP", + ipAfter: "(un indicatore approssimativo della tua regione). È normale per qualsiasi app web o di mappe e non è unico nel nostro caso. Quei server sono:", + ipTileStrong: "Tile della mappa", + ipTile: "(OpenStreetMap) — vedono il tuo IP e quale area della mappa guardi.", + ipGeoStrong: "Geocodifica di spot/shop", + ipGeo: "— quando crei o modifichi uno spot o uno shop, le sue coordinate vanno a OpenStreetMap Nominatim per compilare il tag di città/paese. Quando apri le Statistiche della community, le coordinate dei pin senza tag di posizione vanno a BigDataCloud così possono essere raggruppate per regione (memorizzate nella cache sul tuo dispositivo — al massimo una volta per pin). Entrambi vedono il tuo IP. Sono le coordinate del pin che hai posizionato / di pin pubblici, mai il GPS in tempo reale del tuo dispositivo.", + ipPushStrong: "Notifiche in background", + ipPush: "(opzionale) — se le abiliti, un server push SkateSpots vede che la tua chiave ha ricevuto qualcosa e quando (mai chi l'ha inviato né cosa dice — i messaggi restano cifrati), e il servizio push del tuo sistema operativo (Google/Mozilla/Apple) consegna l'avviso.", + ipBtcStrong: "Luoghi Bitcoin", + ipBtc: "(BTCMap, quando attivi quel livello) — vedono il tuo IP e l'area che stai visualizzando.", + ipRelayStrong: "Relay Nostr", + ipRelay: "— vedono il tuo IP quando l'app legge o pubblica.", + ipMintStrong: "Mint Cashu", + ipMint: "— vedono il tuo IP ogni volta che il tuo wallet invia, riceve o fa melt.", + ipRouteStrong: "Indicazioni", + ipRoute: "(OSRM, e Transitous per il trasporto pubblico) — ricevono l'inizio e la fine di ogni percorso che richiedi, non solo il tuo IP. Il routing resta nell'app: la tua partenza e destinazione non vengono mai passate a Google o Apple Maps.", + ipWeatherStrong: "Meteo", + ipWeatherMid: "(Open-Meteo, opzionale) e", + ipUploadStrong: "caricamenti di immagini", + ipWeather: "(Blossom), quando li usi.", + ipAiStrong: "AI del Sasquatch", + ipAi: "— il tuo messaggio va al nostro server, poi al provider del modello.", + ipLink1: "Poiché invii la tua chiave pubblica (npub) sulla stessa connessione, un relay può collegare il tuo IP a te — non solo “qualcuno si è connesso”, ma “questa persona, da questo indirizzo”.", + ipShieldBefore: "Una cosa che proteggiamo: la", + ipMintsStrong: "directory dei mint", + ipShieldAfter: "viene recuperata tramite il nostro server, così MintRadar non vede mai il tuo IP.", + vpnTitle: "Vuoi più privacy? VPN o Tor (opzionale)", + vpnDesc: "Per la maggior parte degli skater non è necessario — ma se vuoi nascondere il tuo IP e la tua posizione approssimativa dai server sopra, hai due opzioni gratuite:", + vpnReputable: "🛡️ Una VPN affidabile", + vpnReputableDesc: "Nasconde il tuo IP dietro i server della VPN. Semplice e veloce. Usane una a pagamento e di cui ti fidi; le VPN gratuite di solito monetizzano il tuo traffico, quindi tratta il “gratis” come un campanello d'allarme.", + torBrowser: "🧅 Tor Browser", + torDesc: "Gratuito, massima privacy dell'IP, passa attraverso più relay. Più lento — mappe e alcuni relay Nostr potrebbero rallentare o bloccare i nodi di uscita Tor. Ottimo per i più cauti.", + readThis: "Leggi questo per non farti ingannare", + caveat1Before: "Una VPN/Tor nasconde il tuo", + ipWord: "IP", + caveat1: "— non gli spot che pubblichi. Un pin a casa tua è pubblico che tu usi o meno una VPN.", + caveat2Before: "Non abilitare", + nearMeGps: "“Vicino a me” / GPS del browser", + caveat2: "se il tuo obiettivo è restare anonimo — il GPS preciso annulla qualsiasi occultamento dell'IP.", + caveat3: "Nessuno strumento ti rende completamente “anonimo”. Questi riducono ciò che i server possono dedurre sulla posizione della tua rete — tutto qui.", + keysTitle: "Le tue chiavi, il tuo account", + keysBefore: "Il tuo account è una coppia di chiavi crittografiche che possiedi. Il modo più sicuro per accedere è un", + signer: "signer", + keysAfter: "(Alby, nos2x o Amber su Android) così la tua chiave segreta non viene mai incollata nell'app.", + keysCaveatBefore: "Se incolli la tua", + keysCaveatAfter: "direttamente, viene archiviata nel tuo browser. Usa invece un'estensione signer quando puoi, e conserva il backup della tua nsec in un posto sicuro offline.", + footerBefore: "Domande? Chiedi a", + sasquatchName: "The Sasquatch", + footerMid: "nell'app, o leggi la", + gettingStarted: "guida per iniziare", + about: "Informazioni" + }, + license: { + seoTitle: "Licenza - SkateSpots", + seoDescription: "Licenza di SkateSpots. Sei libero di skatare.", + tagline: "Skata, guadagna, divertiti e spendi Sats ovunque tu sia.", + copyright: "I contributori di SkateSpots e la community", + licenseLabel: "Licenza", + freeLine1: "SEI LIBERO", + freeLine2: "DI SKATARE", + body: "Questo progetto è aperto. Condividilo, fanne un fork, costruiscici sopra, skatalo. Le strade appartengono a tutti. Anche questo codice. Continua a skatare, divertiti, impara i trick e sostieni chi costruisce, poi torna a skatare.", + builtBefore: "Costruito con ❤️ su", + builtMid: "· Alimentato da", + lightning: "Bitcoin Lightning ⚡", + viewSource: "Vedi il codice sorgente", + aboutSkateSpots: "Informazioni su SkateSpots", + supporters: "Sostenitori" + }, + glossary: { + seoTitle: "Glossario dei trick · SkateSpots", + seoDescription: "Il glossario completo dello skateboard — {{count}} voci su flip, grind, slide, grab, air, lip trick, handplant, freestyle, termini di transition, stance e hardware, con nomi alternativi.", + heading: "GLOSSARIO DEI TRICK", + subheading: "{{count}} voci · trick, transition, freestyle, stance e hardware", + searchPlaceholder: "Cerca trick o soprannomi — tre flip, crooks, method…", + clearSearch: "Cancella ricerca", + all: "Tutti", + results: "{{count}} risultat{{s}} per", + noMatch: "Nessun trick corrisponde. Prova un soprannome come “tre flip”, “crooks” o “melon”.", + tricksCount: "{{count}} trick", + footerBefore: "Conosci un trick o un soprannome che ci è sfuggito? I trick prendono nomi diversi in ogni scena — scrivi a", + sasquatch: "The Sasquatch 🦧", + footerAfter: "e faccelo sapere." + }, + signers: { + seoTitle: "App signer - Proteggi le tue chiavi Nostr | SkateSpots", + seoDescription: "Scopri le app signer che mantengono sicure le tue chiavi Nostr. Trova l'opzione migliore per Android, iOS o browser desktop.", + securityGuide: "Guida alla sicurezza", + protect: "Proteggi le tue", + nostrKeys: "chiavi Nostr", + heroDesc: "Le app signer mantengono sicure le tue chiavi private firmando gli eventi senza esporle. Invece di incollare la tua chiave in ogni app, lascia che un signer la gestisca in sicurezza.", + whySignerStrong: "Perché usare un signer?", + whySigner: "La tua chiave privata Nostr è come una password che non può mai essere cambiata. Un'app signer la mantiene al sicuro consentendoti di usare qualsiasi app Nostr.", + androidTitle: "Signer per Android", + androidDesc: "App signer native per dispositivi Android, incluso GrapheneOS.", + iosTitle: "Signer per iOS", + iosDesc: "Opzioni di signer per utenti iPhone e iPad.", + browserTitle: "Estensioni del browser", + browserDesc: "Estensioni del browser desktop per firmare nelle web app.", + recommended: "Consigliato", + yourPlatform: "La tua piattaforma", + get: "Scarica {{name}}", + protocolsTitle: "Capire i protocolli", + nip07Desc: "Standard per estensioni del browser. L'estensione inietta capacità di firma nelle web app. Usato da Alby, nos2x, Flamingo e estensioni simili.", + nip46Desc: "Protocollo di firma remota (“bunker”). La tua app signer approva le richieste di altre app senza condividere le tue chiavi. Usato da Nsec.app, Nostria e Nowser.", + nip55Desc: "Protocollo signer specifico per Android. Le app native possono richiedere firme ad Amber senza esporre le chiavi. L'esperienza Android più fluida.", + whichChoose: "Quale scegliere?", + chooseAndroid: "Android:", + chooseAndroidDesc: "Amber (NIP-55) per app native", + chooseIos: "iOS:", + chooseIosDesc: "Nsec.app (NIP-46) per la migliore compatibilità", + chooseDesktop: "Desktop:", + chooseDesktopDesc: "Alby, nos2x o Flamingo (NIP-07)", + amberDesc: "Signer Android nativo incentrato su sicurezza e facilità d'uso. La scelta migliore per gli utenti Android.", + nsecAppDesc: "Signer remoto multipiattaforma che funge da cassaforte sicura per le tue chiavi.", + nostriaDesc: "App signer remota con chiavi archiviate nella memoria sicura del dispositivo.", + nowserDesc: "Signer multi-auth che supporta sia l'estensione del browser sia i protocolli di firma remota.", + nsecAppIosDesc: "L'opzione migliore per iOS. Usalo come signer remoto con qualsiasi client Nostr.", + nowserTfDesc: "Signer iOS disponibile via TestFlight con capacità di firma simili ad Android.", + nostriaIosDesc: "Signer remoto con archiviazione sicura delle chiavi sul tuo dispositivo.", + nos2xDesc: "Estensione del browser semplice e affidabile per firmare eventi Nostr.", + albyDesc: "Wallet Lightning Bitcoin con gestione integrata delle chiavi Nostr e WebLN.", + flamingoDesc: "Estensione del browser incentrata su Nostr con interfaccia pulita.", + kiwiDesc: "Su Android/GrapheneOS, usa Kiwi Browser per caricare le estensioni nos2x o Alby.", + fNativeApp: "App nativa", + fMultiKey: "Supporto multi-chiave", + fEventSigning: "Firma degli eventi", + fSecureStorage: "Archiviazione sicura delle chiavi", + fRemoteSigning: "Firma remota", + fAnyClient: "Funziona con qualsiasi client", + fCrossDevice: "Sincronizzazione tra dispositivi", + fMultiKeySupport: "Supporto multi-chiave", + fNip07: "Supporto NIP-07", + fNip46: "Supporto NIP-46", + fFlexibleSigning: "Firma flessibile", + fNativeIos: "App iOS nativa", + fLightweight: "Leggera", + fEasyToUse: "Facile da usare", + fChromeSupport: "Supporto Chrome/Brave/Edge", + fLightningPayments: "Pagamenti Lightning", + fNostrSigning: "Firma Nostr", + fWebln: "Supporto WebLN", + fNwc: "Supporto NWC", + fCleanUi: "Interfaccia pulita", + fPrivacyFocused: "Incentrata sulla privacy", + fExtensionMobile: "Supporto estensioni su mobile", + fFullBrowser: "Esperienza browser completa", + fGraphene: "Funziona su GrapheneOS" + }, + betaDisclaimer: { + title: "Attenzione — questa è una beta", + subtitle: "Due parole prima di iniziare.", + ossTitle: "Open source e sperimentale", + ossBody: "Costruito allo scoperto dalla community. Curiosa, fanne un fork, rompilo.", + betaTitle: "In beta — non verificato", + betaBody: "Il codice non è ancora stato sottoposto a un audit di sicurezza formale. I bug capitano.", + moneyTitle: "Gestisce Bitcoin e Lightning reali", + moneyBody: "Usa denaro a tuo rischio. Carica solo ciò che puoi permetterti di perdere.", + finePrint: "Nessuna garanzia di alcun tipo. Sei l'unico responsabile dei tuoi fondi e delle tue chiavi.", + viewCode: "Vedi il codice", + accept: "Capito, fammi entrare" + } + } +}; export default itBatch3; diff --git a/src/i18n/it/batch4.ts b/src/i18n/it/batch4.ts index f115530..4c1819e 100644 --- a/src/i18n/it/batch4.ts +++ b/src/i18n/it/batch4.ts @@ -1,4 +1,1115 @@ -/** it — batch 4. Filled by the translation pass; empty until then. */ -const itBatch4 = {}; +/** it — batch 4. Traduzione italiana del namespace `walletUi`. */ +const itBatch4 = { + walletUi: { + page: { + title: "Wallet", + subtitle: "Bitcoin Lightning + Cashu", + manage: "Gestisci", + getAWallet: "Ottieni un Wallet", + learnPlanB: "Scopri di più su Plan B Academy", + walletMinibits: "Cashu mobile · NWC", + walletAlby: "Estensione browser · WebLN + NWC", + walletZeus: "Lightning autocustodiale", + walletCoinos: "Basato sul web · funziona ovunque", + whatAreZaps: "Cosa sono gli Zap?", + whatAreZapsShort: "Cosa sono gli zap?", + zapsDesc: "Pagamenti istantanei in Bitcoin Lightning. Invia sats a qualsiasi skater, creatore di spot o coach — nessun intermediario, nessuna commissione della piattaforma.", + instant: "Istantaneo", + instantDesc: "Regolato in pochi secondi", + flexible: "Flessibile", + flexibleDesc: "Il tuo wallet, le tue chiavi", + private: "Privato", + privateDesc: "Cashu nasconde chi paga", + direct: "Diretto", + directDesc: "Il valore va al creatore", + loginRequired: "Accesso richiesto", + loginRequiredDesc: "Accedi con il tuo account Nostr per collegare il tuo wallet Lightning e iniziare a zappare.", + browseMints: "Esplora i mint Cashu" + }, + modal: { + walletName: "Nome del wallet (opzionale)", + walletNamePlaceholder: "Il mio wallet Lightning", + connectionUri: "URI di connessione", + spendLimitTitle: "Imposta prima un limite di spesa", + spendLimitBody1: "Questa stringa permette a SkateSpots di pagare fatture Lightning dal tuo wallet. Nell'app del tuo wallet, assegna a questa connessione un piccolo", + dailyBudget: "budget giornaliero", + spendLimitBody2: "(ad es. qualche migliaio di sats) e abilita solo", + spendLimitBody3: "Non incollare mai una connessione con budget illimitato. Puoi revocarla nel tuo wallet in qualsiasi momento.", + addWallet: "Aggiungi wallet", + nwcConnection: "Connessione NWC", + lightningWallet: "Wallet Lightning", + pasteNwc: "Incolla la tua stringa di connessione NWC per inviare zap", + connectWallet: "Collega wallet", + browserExtension: "Estensione browser (WebLN)", + autoDetected: "Rilevata automaticamente se installata", + ready: "Pronto", + notFound: "Non trovato", + getNwcFrom: "Ottieni NWC da:", + connectionRequired: "URI di connessione richiesto", + connectionRequiredDesc: "Inserisci un URI di connessione NWC valido.", + activeChanged: "Wallet attivo cambiato", + activeChangedDesc: "Il wallet selezionato è ora attivo per gli zap.", + connectNwc: "Collega wallet NWC", + connectNwcDesc: "Inserisci la tua stringa di connessione da un wallet compatibile.", + connect: "Collega", + connecting: "Connessione...", + walletSettings: "Impostazioni wallet", + connectDesc: "Collega il tuo wallet Lightning per inviare zap all'istante." + }, + cashu: { + title: "Wallet Cashu", + desc: "Wallet ecash integrato — nessuna configurazione esterna richiesta", + initializing: "Inizializzazione del wallet...", + walletError: "Errore del wallet", + balance: "Saldo", + balanceAria: "Saldo del wallet {{amount}} sats", + activeMint: "Mint attivo", + selectMint: "Seleziona un mint", + receive: "Ricevi", + send: "Invia", + receiveViaLightning: "⚡ Ricevi tramite Lightning", + amountSats: "Importo in sats", + generateInvoice: "Genera fattura", + generating: "Generazione…", + or: "Oppure", + receiveCashu: "🥜 Ricevi token Cashu", + scanQr: "Scansiona QR", + pasteCashu: "Incolla il token Cashu (cashu...)", + receiveToken: "Ricevi token", + receiving: "Ricezione…", + createCashu: "🥜 Crea token Cashu", + createToken: "Crea token", + creating: "Creazione…", + payInvoice: "⚡ Paga fattura Lightning", + pasteInvoice: "Incolla la fattura Lightning (lnbc...)", + payInvoiceBtn: "Paga fattura", + processing: "Elaborazione...", + payAddress: "📧 Paga Lightning Address", + sendToAddress: "Invia all'indirizzo", + sending: "Invio…", + recentActivity: "Attività recente", + receivedLightning: "Ricevuto ⚡ Lightning", + sentLightning: "Inviato ⚡ Lightning", + sentToken: "Inviato 🥜 token", + receivedToken: "Ricevuto 🥜 token", + whatIsCashu: "Cos'è Cashu?", + whatIsCashuDesc: "Cashu è denaro digitale garantito da Bitcoin Lightning. Pensalo come token Bitcoin che custodisci nel tuo browser.", + benefitOffline: "Funziona offline agli skate spot", + benefitInstant: "Pagamenti peer-to-peer istantanei", + benefitPrivacy: "Incentrato sulla privacy (i mint non possono tracciarti)", + benefitRedeemable: "Sempre convertibile in sats Lightning", + findMints: "Trova mint su mintradar.pedani.eu", + backupTitle: "Esegui il backup del wallet", + backupDesc: "Il tuo wallet è protetto da una frase di recupero di 12 parole. Conservala al sicuro — ti servirà per ripristinare il saldo se cancelli i dati del browser.", + viewRecovery: "Visualizza frase di recupero", + backupNote: "È come la tua nsec Nostr — tienila segreta e al sicuro!", + tokenReceived: "Token ricevuto", + tokenReceivedDesc: "Token Cashu riscattato con successo!", + receiveFailed: "Ricezione non riuscita", + unknownError: "Errore sconosciuto", + requestUnsupported: "Richiesta Cashu non ancora supportata", + requestUnsupportedDesc: "Questo wallet non può ancora pagare una richiesta Cashu (creq) — chiedi invece una fattura o un indirizzo Lightning.", + onchainUnsupported: "On-chain non supportato qui", + onchainUnsupportedDesc: "Questo è un indirizzo Bitcoin. Questo wallet invia solo token Cashu e pagamenti Lightning.", + nostrProfile: "Questo è un profilo Nostr", + nostrProfileDesc: "Scansiona un token Cashu, una fattura Lightning o un indirizzo Lightning per pagare.", + clinkUnsupported: "Codice di pagamento non ancora supportato", + clinkUnsupportedDesc: "Questo wallet non può ancora pagare i codici CLINK. Usa invece una fattura o un indirizzo Lightning.", + unrecognizedQr: "Codice QR non riconosciuto", + unrecognizedQrDesc: "Scansiona un token Cashu, una fattura Lightning o un indirizzo Lightning.", + invalidAmount: "Importo non valido", + invalidAmountDesc: "Inserisci un importo valido", + paymentSent: "Pagamento inviato", + paymentSentDesc: "Inviati {{amount}} sats a {{address}}", + paymentFailed: "Pagamento non riuscito", + copied: "Copiato", + copiedDesc: "{{label}} copiato negli appunti", + receiveSats: "Ricevi {{amount}} sats", + payInvoiceHint: "Paga questa fattura da qualsiasi wallet Lightning", + invoiceQrAlt: "Codice QR della fattura", + lightningInvoice: "Fattura Lightning", + invoiceLabel: "Fattura", + waiting: "⏳ In attesa del pagamento...", + tokenReady: "Token pronto per l'invio", + shareToken: "Condividi questo token con il destinatario", + tokenQrAlt: "Codice QR del token", + cashuToken: "Token Cashu", + tokenLabel: "Token", + copyToken: "Copia token", + tokenWarning: "Chiunque possieda questo token può riscattarlo — trattalo come denaro contante!", + browser: { + title: "Wallet Ecash integrato", + appOnly: "Solo app", + desc: "Ecash Cashu autocustodiale, basato su Bitcoin Lightning", + unlockTitle: "Sblocca il wallet completo nell'app SkateSpots", + unlockDesc: "Il wallet ecash integrato ti permette di creare, inviare e riscattare token Cashu direttamente allo spot. Vive nell'app nativa, dove può comunicare direttamente con i mint — i browser isolano quelle connessioni per la tua sicurezza.", + zapTipTitle: "Zap e mance — funziona già nel tuo browser", + zapTipDesc: "Inviare sats a spot, eventi, coach e crew funziona proprio qui. Basta collegare un wallet Lightning qui sotto — Nostr Wallet Connect o un'estensione browser come Alby. Nessun mint Cashu necessario." + } + }, + escrow: { + title: "Escrow", + desc: "Vendi in sicurezza: attiva l'escrow e un acquirente può bloccare i suoi sats a tuo favore per uno scambio. Li rilasci quando consegni — se non lo fai, l'acquirente può riprenderli dopo il tempo concordato.", + active: "L'escrow è attivo", + publish: "Attiva l'escrow", + published: "L'escrow è attivo", + publishedDesc: "Ora gli acquirenti possono bloccare fondi a tuo favore per uno scambio.", + failed: "Impossibile attivare l'escrow" + }, + escrowSettings: { + title: "Impostazioni escrow", + desc: "Impostazioni predefinite per gli scambi in escrow Cashu. Locali sul dispositivo.", + lockWindow: "Finestra di blocco predefinita", + lockWindowHint: "Per quanto tempo i fondi restano bloccati prima che l'acquirente possa riprenderli. Più a lungo è più sicuro per il venditore.", + days: "giorni", + preferredMint: "Mint per l'escrow", + activeMint: "Mint attivo", + preferredMintHint: "Quale mint finanzia l'escrow. Usane uno affidabile.", + requireListings: "Richiedi l'escrow sui nuovi annunci", + requireListingsHint: "Preseleziona “Richiedi escrow” quando metti in vendita un oggetto." + }, + privacy: { + title: "Consigli sulla privacy", + subtitle: "Scopri come proteggere la tua privacy finanziaria", + cashuRecommended: "CASHU (consigliato)", + anon: "Transazioni anonime", + blind: "Le firme cieche nascondono l'attività", + noIp: "Nessuna esposizione dell'IP", + trustMint: "Affidi i fondi al mint", + lightningAddress: "LIGHTNING ADDRESS", + linked: "Può essere collegato all'identità", + traceable: "Cronologia dei pagamenti tracciabile", + ipVisible: "IP visibile quando si emette la fattura", + selfCustody: "Autocustodia possibile", + bestPractices: "Buone pratiche", + tip1Title: "Usa Cashu per ricevere mance", + tip1Desc: "Il wallet Cashu integrato è il modo più privato per ricevere zap", + tip2Title: "Usa un wallet separato per SkateSpots", + tip2Desc: "Non usare il tuo wallet principale di risparmi — tieni separati i fondi dell'app", + tip3Title: "Valuta di usare una VPN o Tor", + tip3Desc: "Nasconde il tuo indirizzo IP quando effettui transazioni", + tip4Title: "Evita indirizzi Lightning collegati all'identità", + tip4Desc: "Usa indirizzi pseudonimi non legati al tuo vero nome", + proTip: "Consiglio da pro:", + proTipDesc: "Ricevi prima i pagamenti sul tuo wallet Cashu, poi sposta periodicamente importi maggiori sul tuo wallet personale usando una VPN per il trasferimento.", + warnTitle: "Nota sulla privacy", + warnDesc: "Gli indirizzi Lightning possono potenzialmente collegare la tua attività su SkateSpots alla tua vera identità.", + betterPrivacy: "Per una privacy migliore:", + bullet1: "Usa un wallet dedicato per questa app", + bullet2: "Valuta invece di usare il wallet Cashu", + bullet3: "Usa VPN/Tor per le transazioni", + useCashu: "Usa invece Cashu", + understand: "Ho capito" + }, + mintPrivacy: { + title: "Privacy dei mint", + desc: "Usare più mint migliora la privacy impedendo a un singolo mint di vedere tutte le tue transazioni", + distribution: "Distribuzione dei fondi", + singleWarning: "Usare un solo mint significa che quel mint può vedere tutti gli orari e gli importi delle tue transazioni. Valuta di aggiungere altri mint per una privacy migliore.", + yourMints: "I tuoi mint ({{count}})", + default: "Predefinito", + addMint: "Aggiungi mint", + addMintDesc: "Aggiungi un nuovo mint Cashu al tuo wallet", + mintUrl: "URL del mint", + add: "Aggiungi", + adding: "Aggiunta...", + orChoose: "Oppure scegli dalla lista", + recommended: "Mint consigliati", + allMints: "Tutti i mint (directory)", + searchMints: "Cerca mint…", + noDirectoryMints: "Nessun mint corrisponde alla tua ricerca.", + directoryHint: "Dalla directory comunitaria MintRadar — non ufficiale e potrebbe essere obsoleta.", + added: "Aggiunto", + soon: "Presto", + autoDistribute: "Distribuzione automatica dei fondi", + autoDesc: "Distribuisci i fondi ricevuti su più mint", + autoAria: "Distribuzione automatica dei fondi (prossimamente)", + tip1: "Usa almeno 2-3 mint diversi per una privacy migliore", + tip2: "Non tenere tutti i fondi in un solo mint — distribuiscili", + tip3: "Considera la giurisdizione del mint (paesi diversi = accesso legale diverso)", + tip4: "I mint vedono gli orari delle transazioni ma NON chi paghi (firme cieche)", + future: "Funzionalità future: rotazione dei mint e punteggio di privacy — resta sintonizzato!", + findMore: "Trova altri mint su mintradar.pedani.eu", + trustWarning: "Avviso di fiducia:", + trustWarningDesc: "I mint sono custodiali — detengono i tuoi fondi. Usa solo mint di cui ti fidi. Se un mint scompare, i tuoi fondi potrebbero andare persi. Distribuire i fondi su più mint riduce il rischio.", + removeTitle: "Rimuovere il mint?", + removeDesc: "Sei sicuro di voler rimuovere {{name}}?", + removeMint: "Rimuovi mint", + warning: "Attenzione:", + withdrawWarning: "Questo mint ha {{amount}} sats. Preleva i tuoi fondi prima di rimuoverlo!", + invalidUrl: "URL non valido", + invalidUrlDesc: "L'URL del mint deve iniziare con https://", + mintAdded: "Mint aggiunto", + mintAddedDesc: "Nuovo mint aggiunto con successo", + mintAddedNamed: "{{name}} aggiunto con successo", + failedAdd: "Impossibile aggiungere il mint", + failed: "Non riuscito", + noMints: "Nessun mint", + singleMint: "Mint singolo", + concentrated: "Concentrato", + moderate: "Moderato", + wellDistributed: "Ben distribuito", + mintCoinosWebDesc: "Mint adatto al web (consigliato per i browser)", + mintMinibitsWebDesc: "⚠ Solo app nativa — non raggiungibile dai browser web", + mintMinibitsNativeDesc: "Mint di SkateSpots — consigliato", + mintCoinosDesc: "Mint adatto al web", + mintLnbitsDesc: "Mint comunitario su LNbits" + }, + nwc: { + title: "Wallet Lightning", + noConnection: "Wallet NWC", + refresh: "Aggiorna saldo", + createInvoice: "Crea fattura", + copyInvoice: "Copia fattura", + pasteInvoice: "Incolla una fattura Lightning (lnbc…)", + amount: "Importo: {{amount}} sats", + pasteToSee: "Incolla una fattura per vedere l'importo", + pay: "Paga", + invoiceQrAlt: "Codice QR della fattura Lightning", + enterAmount: "Inserisci un importo in sats", + readBalanceFailed: "Impossibile leggere il saldo", + readBalanceFailedDesc: "Il tuo wallet non ha risposto.", + createInvoiceFailed: "Impossibile creare la fattura", + createInvoiceFailedDesc: "Riprova tra un momento.", + paymentSent: "Pagamento inviato", + paidAmount: "Pagati {{amount}} sats.", + paid: "Pagato.", + paymentRejected: "Il wallet ha rifiutato il pagamento." + }, + qr: { + title: "Scansiona codice QR", + desc: "Posiziona il codice QR nell'inquadratura della fotocamera per scansionarlo", + paste: "Incolla dagli appunti", + hint: "Scansiona un token Cashu, una fattura Lightning o un indirizzo Lightning", + clipboardEmpty: "Appunti vuoti", + clipboardEmptyDesc: "Nessun testo trovato negli appunti", + pasteFailed: "Incolla non riuscito", + pasteFailedDesc: "Impossibile leggere dagli appunti" + }, + recovery: { + title: "Frase di recupero", + desc: "Queste 12 parole sono l'unico modo per ripristinare il tuo saldo ecash. Scrivile in ordine e conservale offline — non condividerle mai con nessuno.", + tapReveal: "Tocca per rivelare", + noWatching: "Assicurati che nessuno stia guardando", + hide: "Nascondi", + reveal: "Rivela", + paperHint: "Scriverla su carta è la cosa più sicura — copiarla negli appunti può farla trapelare ad altre app.", + written: "L'ho scritta", + revealFirst: "Rivela prima le parole", + copiedDesc: "Frase di recupero copiata — incollala in un posto sicuro, poi svuota gli appunti.", + copyFailed: "Copia non riuscita", + copyFailedDesc: "Scrivi invece le parole." + }, + guide: { + quickGuide: "Guida rapida", + fullGuide: "Guida al wallet (edizione skater)", + cashuSummary: "Privacy + comodità", + mintHoldsFunds: "(il mint detiene i fondi)", + lightningSummary: "Controllo + sicurezza", + youHoldKeys: "(tu detieni le chiavi)", + useBoth: "Usa entrambi: Cashu per le mance, Lightning per i risparmi", + cashuTitle: "WALLET CASHU", + cashuTagline: "Come contanti in tasca allo skatepark", + cashuBullet1: "Veloce da tirare fuori per una mancia", + cashuBullet2: "Non portarci tutti i tuoi risparmi", + cashuBullet3: "Se il mint scompare, i fondi potrebbero andare persi", + cashuBullet4: "Nessuno sa quanto hai (privacy!)", + cashuPerfectFor: "Snack per la sessione, zap alle clip, piccole mance", + lightningTitle: "WALLET LIGHTNING", + lightningTagline: "Come il tuo conto in banca — sei tu al comando", + lightningBullet1: "Sicuro, controlli tu le chiavi", + lightningBullet2: "Richiede un momento per la configurazione", + lightningBullet3: "Cronologia completa delle transazioni", + lightningBullet4: "Meglio per importi più grandi", + lightningPerfectFor: "Acquisti di attrezzatura, risparmi, zap importanti", + perfectFor: "Perfetto per:", + proTips: "CONSIGLI DA PRO", + tip1Title: "Usa entrambi i wallet", + tip1Desc: "Tieni i soldi per la sessione in Cashu, i risparmi in Lightning", + tip2Title: "Prova wallet diversi", + tip2Desc: "Sperimenta per trovare quello che fa per te. Ognuno ha funzionalità e compromessi diversi", + tip3Title: "Privacy migliore", + tip3Desc: "Usare più wallet significa che nessuna singola app vede tutta la tua attività", + tip4Title: "Fai esperienza", + tip4Desc: "Più strumenti conosci, più opzioni hai. Inizia in piccolo, impara strada facendo", + tldr: "TL;DR:", + tldrDesc: "Non esiste un wallet \"migliore\" — dipende dalle tue esigenze. Provali entrambi, usa quello che ti sembra giusto e non tenere tutti i tuoi sats in un unico posto!" + }, + zap: { + count: "{{count}} zap", + connectFirst: "Collega prima il tuo wallet", + connectFirstDesc: "Per inviare zap (mance in Bitcoin), devi collegare un wallet Lightning.", + quickSetup: "Configurazione rapida (30 secondi)", + quickSetupDesc: "Collega il tuo wallet Lightning esistente con Nostr Wallet Connect (NWC). Nessun account aggiuntivo necessario.", + connectNwc: "Collega wallet con NWC", + noWallet: "Non hai un wallet? Scopri come", + skip: "Salta per ora (fattura manuale)", + note: "ℹ️ Nota:", + noteDesc: "Puoi comunque creare una fattura senza collegare un wallet, ma dovrai copiarla manualmente per pagare.", + payWithWebln: "Paga con WebLN", + processing: "Elaborazione...", + openInWallet: "Apri nel wallet Lightning", + scanHint: "Scansiona il codice QR o copia la fattura per pagare con qualsiasi wallet Lightning.", + cashuInstant: "Paga all'istante con il tuo wallet integrato", + satsAvailable: "sats disponibili", + or: "OPPURE", + customAmount: "Importo personalizzato", + addComment: "Aggiungi un commento (opzionale)", + insufficientBanner: "⚠️ Saldo Cashu insufficiente. Ti servono altri {{amount}} sats. Passa a Lightning o ricarica il tuo wallet Cashu.", + creatingInvoice: "Creazione fattura...", + zapAmount: "Zap {{amount}} sats", + zapAmountCashu: "Zap {{amount}} sats con Cashu", + lightningInvoice: "Fattura Lightning", + qrAlt: "Codice QR della fattura Lightning", + enterAmount: "Inserisci un importo", + enterAmountDesc: "Scegli un valore preimpostato o digita un numero valido di sats.", + cashuUnavailable: "Wallet Cashu non disponibile", + cashuUnavailableDesc: "Il tuo wallet Cashu non è pronto. Passa a Lightning o apri prima il tuo wallet.", + insufficientCashu: "Saldo Cashu insufficiente", + insufficientCashuDesc: "Ti servono altri {{amount}} sats. Passa a Lightning o ricarica.", + zapSentCashu: "Zap inviato! 🥜", + zapSentCashuDesc: "Zappati {{amount}} sats dal tuo wallet Cashu.", + cashuFailed: "Pagamento Cashu non riuscito", + cashuFailedDesc: "Impossibile pagare con il tuo wallet Cashu.", + invoiceCopied: "Fattura copiata", + invoiceCopiedDesc: "Fattura Lightning copiata negli appunti", + defaultComment: "Zappato su SkateSpots! 🛹", + titleConnect: "Collega wallet", + titlePayment: "Pagamento Lightning", + titleZap: "Invia uno Zap", + descConnect: "Collega il tuo wallet Lightning per inviare zap", + descPayment: "Paga con la Bitcoin Lightning Network", + descZap: "Gli zap sono piccoli pagamenti in Bitcoin che sostengono il creatore di questo elemento. Se ti è piaciuto, valuta di inviare uno zap!", + descZapShort: "Gli zap sono piccoli pagamenti in Bitcoin che sostengono i creatori. Valuta di inviare uno zap!" + }, + zapCrew: { + title: "Zappa la crew", + desc: "Dividi uno zap equamente tra {{count}} membri della crew con un indirizzo Lightning.", + noMembers: "Nessun altro membro della crew da zappare al momento.", + totalAmount: "Importo totale", + customTotal: "Totale personalizzato", + each: "sats ciascuno", + rounded: "(arrotondato)", + noWallet: "Nessun wallet collegato — riceverai una fattura per ogni membro da pagare manualmente. Collega un wallet per la divisione con un tocco.", + zapAcross: "Zappa {{amount}} sats tra {{count}}", + sentTo: "⚡ Inviati a {{done}}/{{total}}", + none: "Nessun pagamento automatico completato", + copyPending: "Copia le fatture in sospeso per completare il pagamento manualmente.", + thanks: "Grazie per sostenere la crew!", + payingCrew: "Pagamento della crew…", + defaultComment: "Zappata la crew {{crew}}! 🤘", + sent: "Inviato", + paying: "In pagamento", + resolving: "Risoluzione", + skipped: "Saltato", + failed: "Non riuscito", + waiting: "In attesa", + copyInvoice: "Copia fattura", + invoiceCopied: "Fattura copiata", + invoiceCopiedDesc: "Incollala in qualsiasi wallet Lightning" + }, + zapBadges: { + title: "Distintivi Zap", + zaps: "zap", + satsSent: "sats inviati", + rank: "posizione", + footnote: "Basato sugli zap degli ultimi 30 giorni.", + first: "Primo Zap", + firstHint: "Invia il tuo primo zap", + regular: "Regolare", + regularHint: "Invia 10 zap", + generous: "Generoso", + generousHint: "Invia 10.000 sats", + patron: "Patron", + patronHint: "Invia 100.000 sats", + top10: "Top 10", + top10Hint: "Raggiungi i primi 10 sostenitori" + }, + trust: { + unavailable: "Punteggio di fiducia non disponibile", + yourContent: "Questo è un tuo contenuto", + following: "Segui questo utente", + friendOfFriend: "Amico di un amico (2 passaggi)", + nip05: "Utente verificato NIP-05", + unknown: "Utente sconosciuto", + help: "I punteggi di fiducia aiutano a identificare contributori affidabili nella community dello skateboarding." + }, + share: { + title: "Condividi profilo", + desc: "Inquadra il codice con la fotocamera del telefono per aprire il profilo di {{name}}.", + qrAlt: "Codice QR del profilo", + copyLink: "Copia link", + copyFailed: "Copia non riuscita", + copyFailedDesc: "Impossibile copiare il link.", + shareEllipsis: "Condividi…" + }, + addToCollection: { + title: "Salva nella collezione", + desc: "Salva \"{{spot}}\" in una delle tue collezioni", + loginRequired: "Accedi per salvare gli spot nelle collezioni", + noCollections: "Non hai ancora nessuna collezione", + createFirst: "Crea la tua prima qui sotto!", + spotCount: "{{count}} spot", + alreadySavedTag: "Già salvato", + alreadySaved: "Già salvato", + alreadySavedDesc: "“{{spot}}” è già in “{{collection}}”", + saved: "Spot salvato!", + savedDesc: "Aggiunto \"{{spot}}\" a \"{{collection}}\"", + saveFailed: "Salvataggio non riuscito", + somethingWrong: "Qualcosa è andato storto", + created: "Collezione creata!", + createdDesc: "Aggiunto \"{{spot}}\" alla tua nuova collezione \"{{collection}}\"", + createFailed: "Impossibile creare la collezione", + name: "Nome della collezione", + descriptionOptional: "Descrizione (opzionale)", + creating: "Creazione...", + createAndSave: "Crea e salva", + createNew: "Crea nuova collezione" + }, + collection: { + back: "Torna alle collezioni", + created: "Creata {{date}}", + deleteTitle: "Eliminare la collezione?", + deleteDesc: "Questo eliminerà definitivamente \"{{title}}\". Gli spot stessi non saranno interessati.", + deleting: "Eliminazione...", + deleteFailed: "Impossibile eliminare la collezione", + deleted: "Collezione eliminata", + deletedDesc: "\"{{title}}\" è stata rimossa", + empty: "Nessuno spot in questa collezione", + emptyOwner: "Aggiungi spot alla tua collezione cliccando su \"Salva nella collezione\" su qualsiasi spot", + emptyOther: "Questa collezione è vuota", + browseSpots: "Esplora gli spot", + linkCopied: "Link copiato!", + linkCopiedDesc: "Il link della collezione è stato copiato negli appunti", + map: "Mappa della collezione", + removeFailed: "Impossibile rimuovere lo spot", + shareText: "Dai un'occhiata a questa collezione di spot: {{title}}", + spotRemoved: "Spot rimosso", + spotRemovedDesc: "\"{{title}}\" è stato rimosso da questa collezione" + }, + mints: { + title: "Mint", + subtitle: "Esplora i mint Cashu e il loro stato. Le operazioni del wallet Cashu avvengono nell'app SkateSpots.", + searchPlaceholder: "Cerca mint per nome o URL…", + onlineOnly: "Solo online", + count: "{{filtered}} di {{total}} mint", + directoryError: "Impossibile caricare la directory dei mint.", + directoryHint: "La directory è gestita dalla community e ha limiti di richieste — potrebbe essere temporaneamente non disponibile.", + goToWallet: "Vai al wallet", + appOnly: "Aggiungere un mint avviene nell'app SkateSpots (Cashu è solo per l'app).", + noMatch: "Nessun mint corrisponde a “{{query}}”.", + footer: "Dati sullo stato dal progetto comunitario MintRadar — non ufficiali e potenzialmente obsoleti. Rivedi sempre i termini di un mint prima di affidargli fondi.", + archived: "Archiviato", + degraded: "Degradato", + offline: "Offline", + online: "Online", + terms: "Termini", + reliability: "affidabilità", + add: "Aggiungi", + addToWallet: "Aggiungi al wallet", + copyUrl: "Copia URL", + openMint: "Apri mint", + inWallet: "Nel tuo wallet", + addedBadge: "Aggiunto", + urlCopied: "URL del mint copiato", + added: "Mint aggiunto", + addedDesc: "{{host}} è ora nel tuo wallet.", + couldNotAdd: "Impossibile aggiungere il mint", + communityRating: "Valutazione della community", + reliabilityLabel: "Affidabilità", + uptime: "Uptime 24h / 7g", + location: "Posizione", + latency: "Latenza", + nuts: "NUT supportati", + units: "Unità", + version: "Versione", + ratedBy: "Valutato {{rating}}/5 da {{count}} persone su MintRadar.", + noRating: "Nessuna valutazione della community su MintRadar.", + reviewsNote1: "Le recensioni scritte non fanno parte della directory —", + openMintRadar: "apri MintRadar", + reviewsNote2: "per leggerne una o lasciarne una.", + liveness: "Audit di attività: {{mints}} mint e {{melts}} melt testati", + livenessErrors: " · {{errors}}/{{total}} errori recenti", + whatsAMint: "Cos'è un mint?", + whatsAMintDesc: "Un mint Cashu emette e riscatta l'ecash nel tuo wallet. Detiene il Bitcoin che garantisce i tuoi token — quindi un mint che non gestisci tu è uno di cui devi fidarti.", + mintWarning: "I mint possono andare offline, cambiare termini o sparire con i fondi. Mantieni solo saldi piccoli a meno che tu non ti fidi dell'operatore.", + healthDisclaimer: "I dati sullo stato sono gestiti dalla community (MintRadar) — non ufficiali e possibilmente obsoleti." + }, + appShop: { + title: "Negozio dell'app", + subtitle: "Merch SkateSpots per chi tiene in moto la scena.", + comingSoon: "Prossimamente", + wearThe: "Indossa la", + scene: "Scena", + heroDesc1: "Merch per chi tiene in moto questa cosa — venduto", + locally: "in locale, su richiesta", + heroDesc2: ". Mi scrivi, sistemiamo i dettagli e paghi in", + heroDesc3: "— Lightning o Cashu — quando lo ritiri. Niente carte, niente account, niente robot di checkout, nessun intermediario che si prende una fetta del drop.", + requestItem: "Richiedi un articolo", + dmHint: "Apre un DM privato e cifrato con me.", + lightning: "Lightning", + cashu: "Cashu", + localHandover: "Consegna locale", + inTheWorks: "In lavorazione", + notForSale: "non ancora in vendita", + soon: "presto", + tees: "T-shirt e felpe", + decks: "Deck", + shopTools: "Attrezzi da officina", + stickerPacks: "Pacchetti di adesivi", + stickerPacksDesc: "I pacchetti stanno arrivando. I design no — stampa questi due subito, gratis.", + sticker: "Adesivo", + stickerTip: "Fustellato nero. Stampa su carta adesiva, taglia lungo il bordo nero.", + poster: "Poster", + posterTip: "Si stampa in A3; riducilo ad A4 (50%) e si scansiona ancora bene.", + printableAlt: "SkateSpots {{title}} — stampabile", + print: "Stampa", + printNote1: "Stampa al", + actualSize: "100% / “Dimensione reale”", + printNote2: "così la dimensione è esatta e il QR resta nitido — punta a skate-spots.org. File vettoriali, quindi si scalano senza sgranarsi.", + howBuying: "Come funziona l'acquisto", + dmNotCart: "è un DM, non un carrello", + step1Title: "Scrivimi", + step1Desc: "Invia un DM con quello che vuoi — articolo, taglia, colore, qualsiasi cosa tu cerchi.", + step2Title: "Sistemiamo tutto", + step2Desc: "Prezzo in sats, e dove e quando incontrarsi. È una conversazione, non un checkout.", + step3Title: "Paga in sats", + step3Desc: "Lightning o Cashu alla consegna, poi è tuo. Niente spedizioni, niente sale d'attesa." + }, + newsletter: { + newIssue: "Nuova uscita", + composerTitle: "Pubblica un'uscita della newsletter", + composerDesc: "Pubblicata come articolo NIP-23 (kind 30023) sul relay della community. Gli iscritti la ricevono nella campanella delle notifiche. Il corpo supporta Markdown.", + fieldTitle: "Titolo", + identifier: "Identificatore (slug)", + leaveBlank: "lascia vuoto per generarlo automaticamente", + reusingSlug: "Riutilizzare uno slug esistente modifica quell'uscita invece di crearne una nuova.", + summary: "Riassunto", + optional: "opzionale", + coverImage: "URL immagine di copertina", + bodyMarkdown: "Corpo (Markdown)", + characters: "{{count}} caratteri", + publishIssue: "Pubblica uscita", + issuePublished: "Uscita pubblicata! 🛹", + issuePublishedDesc: "Gli iscritti la vedranno nella campanella delle notifiche.", + publishFailed: "Pubblicazione non riuscita", + couldNotReachRelay: "Impossibile raggiungere alcun relay — controlla la connessione e riprova.", + tryAgain: "Riprova.", + publishedToNostr: "Pubblicato su Nostr", + publishedToast: "Pubblicato!", + postedToNostr: "Drop {{number}} pubblicato su Nostr.", + postToNostr: "Pubblica su Nostr", + previewLabel: "Anteprima", + editFirst: "Modifica prima", + previewNoteDesc: "Ecco come apparirà il post sulla maggior parte dei client Nostr. La formattazione varia da client a client.", + editNoteDesc: "Modifica il testo del post qui sotto. Le modifiche influenzano solo questa pubblicazione — il file sorgente resta invariato.", + dropNumber: "Drop {{number}}", + publish: "Pubblica", + publishing: "Pubblicazione...", + dropIsOut: "Il Drop {{number}} è uscito", + daysAgo: "{{count}}g fa", + dismiss: "Ignora", + itsMonday: "È lunedì", + mondayDesc: "È ora di pubblicare la newsletter settimanale. Un clic e l'AI la scrive dal git log.", + writeDrop: "Scrivi il Drop {{number}}", + dismissReminder: "Ignora promemoria", + loginPrompt: "Accedi con Nostr per ricevere i nuovi drop nella tua casella.", + subscribedToast: "Sei iscritto! 🛹", + subscribedToastDesc: "I nuovi drop arriveranno nella campanella delle notifiche sotto \"News\".", + unsubscribed: "Iscrizione annullata", + unsubscribedDesc: "Puoi comunque leggere ogni uscita qui in qualsiasi momento.", + checking: "Verifica…", + subscribed: "Iscritto", + unsubscribe: "Annulla iscrizione", + subscribeCta: "Iscriviti alla newsletter", + archiveSynced: "Archivio sincronizzato con Nostr", + missingCount: "{{count}} uscite dell'archivio non ancora su Nostr", + backfillDesc: "Pubblica {{list}} come articoli NIP-23 così gli iscritti e i lettori di contenuti lunghi possono vedere l'archivio completo. La pagina mantiene comunque il suo layout ricco.", + backfill: "Carica {{count}} su Nostr", + publishing2: "Pubblicazione…", + publishingLabel: "Pubblicazione…", + backfilled: "Caricate {{count}} uscite 🛹", + backfilledDesc: "Ora l'archivio vive su Nostr per gli iscritti e i lettori.", + partialBackfill: "Pubblicate {{published}}, {{failed}} non riuscite", + retryFinish: "Riprova per completare: {{list}}.", + notLoggedIn: "Non connesso", + allIssues: "Tutte le uscite", + brand: "Newsletter di SkateSpots", + digTheDrop: "Ti piace il drop? Zappalo e non perderti il prossimo.", + sectionStats: "La community in numeri", + sectionWhatsNew: "Novità", + sectionSpotOfWeek: "Spot della settimana", + sectionCommunity: "Community", + sectionSupport: "Sostieni il progetto", + sectionLatestDrops: "Ultimi drop · In diretta da Nostr", + mappedBy: "Mappato da", + viewOnMap: "Vedi sulla mappa", + noSpotPicked: "Nessuno spot scelto questa settimana. Invia il tuo e potrebbe finire nel prossimo drop.", + browseMap: "Esplora la mappa", + spotMap: "Mappa degli spot", + statsBadge: "Statistiche", + supportDesc: "100% open source, finanziato dalla community, senza pubblicità, senza investitori. Se è utile, zappalo o sostienilo su Angor.", + readFull: "Leggi l'uscita completa", + joinSkaters: "Unisciti a {{count}} skater che ricevono i drop", + weeklyDrops: "Drop settimanali", + tagline: "Una newsletter settimanale · pubblicata quando c***o ci pare", + freeNote: "Gratuita. Basata su Nostr — il tuo abbonamento vive sulle tue chiavi e ti segue su tutti i dispositivi. I nuovi drop arrivano nella campanella delle notifiche.", + live: "Live", + builtOn: "Costruito su", + openSource: "Open source", + supportUs: "Sostienici", + freeToSkate: "Sei libero di andare sullo skateboard" + }, + stats: { + subtitle: "Metriche in tempo reale prese direttamente dalla rete Nostr. Trasparenti, decentralizzate, verificabili da chiunque.", + dataSource: "Fonte dei dati:", + updated: "aggiornato {{age}}", + refresh: "Aggiorna", + partial: "Impossibile raggiungere tutti i relay — questi numeri potrebbero essere incompleti.", + error: "Impossibile raggiungere il relay al momento. Le statistiche si caricheranno quando la connessione sarà ripristinata.", + atAGlance: "La community in breve", + skateSpots: "Skate Spot", + listedShops: "Negozi elencati", + events: "Eventi", + mappers: "Mapper", + uniqueContributors: "contributori unici", + labHeader: "The Lab · Creatori e servizi", + total: "{{count}} in totale", + coaches: "Coach", + filmers: "Filmer", + editors: "Editor", + photographers: "Fotografi", + builders: "Costruttori", + artists: "Artisti", + graffiti: "Graffiti", + tattoo: "Tattoo", + trainers: "Istruttori", + musicians: "Musicisti", + judges: "Giudici", + organizers: "Organizzatori", + barbers: "Barbieri", + showFewer: "Mostra meno", + showAllCrafts: "Mostra tutti i 13 mestieri", + community: "Community", + tours: "Tour", + crews: "Crew", + marketplace: "Marketplace", + liveListings: "Annunci attivi", + tradesRecorded: "Scambi registrati", + satsTraded: "Sats scambiati", + zapsToMappers: "Zap ai mapper", + tradesNote1: "scambi reciproci tra", + tradesNote2: "persone. I sats sono auto-dichiarati dagli scambiatori — l'app non può osservare un pagamento fuori dall'app — quindi il dato principale conta solo", + mutual: "reciproci", + tradesNote3: "scambi con un tetto per coppia; il dato grezzo dichiarato è", + tradesNote4: "sats. \"Zap ai mapper\" conta solo le ricevute indirizzate ai nostri migliori contributori — è", + not: "non", + tradesNote5: "il volume globale di zap.", + byRegion: "Spot e negozi per regione", + resolving: "Risoluzione di {{count}} località senza tag dalle loro coordinate… una sola volta, poi memorizzate su questo dispositivo.", + topCountries: "Paesi principali", + topCities: "Città principali", + other: "Altro", + otherCountriesTitle: "Paesi fuori dai primi 6", + otherCitiesTitle: "Città fuori dalle prime 6", + uncategorised: "Senza categoria", + uncategorisedTitle: "Nessun tag città/paese", + regionNote1: "Conta", + spotsAndShops: "spot e negozi", + regionNote2: ", non skater — dal tag città/paese di ciascuno, o derivato dalle coordinate del suo pin quando non ne ha (memorizzato sul tuo dispositivo; paesi raggruppati per codice ISO quando presente), solo relay della community, con esclusione dei contenuti nascosti dalla moderazione.", + ofTotal: "{{count}} di {{total}}", + regionNote3: "località non hanno un tag di posizione e appaiono come \"Senza categoria\".", + growth: "Crescita nel tempo", + chartCumulativeTitle: "Spot mappati (cumulativo)", + chartCumulativeDesc: "Totale degli spot aggiunti alla mappa nel tempo", + chartMonthlyTitle: "Attività mensile", + chartMonthlyDesc: "Nuovi contenuti pubblicati ogni mese", + chartMappersTitle: "Mapper attivi / mese", + chartMappersDesc: "Contributori unici che pubblicano ogni mese", + chartMixTitle: "Mix di contenuti", + chartMixDesc: "Suddivisione per tipo di contenuto (da sempre)", + noData: "Ancora nessun dato", + topMappers: "Mapper principali", + mostSpots: "— più spot aggiunti", + noMapperData: "Ancora nessun dato sui mapper", + topShops: "Negozi principali", + mostShops: "— più negozi aggiunti", + shopCount: "{{count}} negozi", + noShopData: "Ancora nessun dato sui negozi", + supporters: "Sostenitori della community", + fundedTitle: "Finanziato dalla community", + fundedDesc1: "Crowdfunding Bitcoin decentralizzato tramite Angor.", + fundedDesc2: "Niente pubblicità, niente investitori, niente vendita di dati.", + backAngor: "Sostienici su Angor", + communityLink: "Community →", + footer1: "Tutti i dati sono presi in tempo reale da", + footer2: "— un relay Nostr pubblico.", + footer3: "Ogni evento è firmato dal suo creatore e verificabile crittograficamente.", + footer4: "Nessun numero può essere falsificato.", + spots: "Spot", + shops: "Negozi", + lab: "Lab", + thisMonth: "+{{count}} questo mese", + fromActive: "{{count}} da account attivi", + viewAll: "Vedi tutto", + spotCount: "{{count}} spot" + }, + leaderboard: { + mapEarn: "Mappa e guadagna", + helpMap: "AIUTA A MAPPARE IL MONDO", + intro: "Aggiungi spot e negozi, ricevi zap dagli skater riconoscenti. I migliori contributori potrebbero ricevere ricompense bonus!", + howItWorks: "Come funziona", + step1Title: "1. Mappa", + step1Desc: "Aggiungi spot e negozi con foto e dettagli", + step2Title: "2. Guadagna Zap", + step2Desc: "Gli skater che trovano utili i tuoi spot ti lasceranno una mancia", + step3Title: "3. Ricompense bonus", + step3Desc: "I migliori mapper potrebbero ricevere ricompense bonus dal nostro fondo", + proTips: "💡 Consigli da pro per più Zap:", + tipPhotos: "Aggiungi 3+ foto", + tipDescriptions: "Scrivi descrizioni dettagliate", + tipLocation: "Posizione precisa", + mapShop: "Mappa un negozio", + mapShopDesc: "Skate shop, negozi di tavole", + mapSpot: "Mappa uno spot", + mapSpotDesc: "Park, spot di strada, DIY", + shops: "Negozi", + spotsLower: "spot", + shopsLower: "negozi", + contributions: "contributi", + yourRanking: "La tua classifica", + spotsShops: "{{spots}} spot • {{shops}} negozi", + totalLower: "totale", + overall: "Generale", + noContributions: "Ancora nessun contributo. Sii il primo!", + addFirstSpot: "Aggiungi il primo spot", + noShops: "Ancora nessun negozio mappato", + addFirstShop: "Aggiungi il primo negozio", + noSpots: "Ancora nessuno spot mappato", + poweredBy: "Alimentato dagli Zap della community", + poweredByDesc: "Quando trovi utile uno spot, zappa il mapper! È il modo migliore per ringraziare e incoraggiare più contributi.", + you: "Tu", + zapTitle: "Classifiche Zap", + zapSubtitle: "Gli spot che ricevono più amore — e gli skater che lo donano.", + thisWeek: "Questa settimana", + thisMonth: "Questo mese", + allTime: "Da sempre", + topZappedSpots: "Spot più zappati", + noZaps: "Ancora nessuno zap in questo periodo. Sii il primo — premi il ⚡ su uno spot che ami.", + topSupporters: "Principali sostenitori", + noZapsSent: "Ancora nessuno zap inviato in questo periodo.", + fromTop10: "⚡ {{amount}} sats dai primi 10", + supporter: "Sostenitore", + skateShop: "Skate shop", + skateSpot: "Skate spot" + }, + supporters: { + our: "LA NOSTRA", + community: "COMMUNITY", + heroDesc: "SkateSpots è costruito dalla community e per la community. Sostenitori, collaboratori, partner e amici che lo mantengono libero e decentralizzato.", + backAngor: "Sostienici su Angor", + backers: "Sostenitori", + backersDesc: "Gli skater che hanno sostenuto SkateSpots — finanziamento on-chain tramite Angor e zap Lightning al progetto.", + sourceAngor: "Angor", + supportersTotals: "{{count}} sostenitori · {{angor}} sats tramite Angor · {{zap}} sats zappati", + quietNote: "Più tutti quelli che hanno donato in silenzio — grazie. ❤️", + silentTitle: "On-chain privato (pagamenti silenziosi)", + silentDesc: "Un nome, un indirizzo nuovo per ogni pagamento — on-chain tramite pagamenti silenziosi, o Lightning dallo stesso record. Niente da riutilizzare, niente da collegare.", + silentCopyName: "Copia nome", + silentCopied: "Copiato", + silentWallets: "Richiede un wallet che supporti i nomi di pagamento / pagamenti silenziosi: Sparrow, Cake, Dana, Phoenix, BlueWallet, Wasabi, Nunchuk o BitBox02.", + wayLightningTitle: "Istantaneo e pubblico", + wayLightningDesc: "Zappa SkateSpots, o paga in silenzio. Funziona anche senza accesso.", + waySilentTitle: "On-chain privato", + waySilentDesc: "Un nome per pagamenti silenziosi — un nuovo indirizzo per ogni pagamento.", + wayAngorTitle: "Finanzia lo sviluppo", + wayAngorDesc: "Angor — rilascio a fasi, rimborsabile sopra i 100k sats.", + donateTitle: "Sostieni SkateSpots", + donateDesc: "Tre canali, tre motivi — scegli quello che fa per te. Ogni sat mantiene la mappa gratuita, senza pubblicità e open source.", + donatePageLink: "Apri la semplice pagina delle donazioni", + updatedAt: "Aggiornato {{when}}", + tiersNote: "Livelli: Sostenitore sotto i 100k sats · Patron 100k–1M · Leggenda oltre 1M", + tierEmpty: "Ancora nessuno — sii il primo.", + joinSupporters: "Unisciti a {{count}} sostenitori", + showAll: "Mostra tutti i {{count}}", + showLess: "Mostra meno", + impactSeeStats: "Vedi il quadro completo →", + impactAsOf: "in tempo reale dai relay della community", + anonymousBacker: "Sostenitore anonimo", + beFirstBacker: "Ancora nessun sostenitore pubblico — sii il primo.", + backersTotal: "{{count}} sostenitori · {{amount}} sats raccolti", + verifiedOnChain: "Verificato on-chain", + supportedBy: "Sostenuto da {{count}}", + tierSupporter: "Sostenitore", + tierPatron: "Patron", + tierLegend: "Leggenda", + topZappers: "Hanno zappato SkateSpots", + topZappersDesc: "Gli skater che hanno inviato uno zap pubblico direttamente al progetto. I pagamenti silenziosi non sono elencati.", + paysFor: "Cosa finanzia il tuo sostegno", + paysForDesc: "Dove va ogni sat — nessuno stipendio, nessun ufficio, nessuna pubblicità.", + payRelay: "Hosting dei relay", + payDomain: "Dominio e TLS", + payAi: "Nodo AI / ContextVM", + payDev: "Tempo di sviluppo", + payOps: "Operazioni", + payMarketing: "Marketing", + payRelayDesc: "Mantiene la mappa online e resiliente.", + payDomainDesc: "Il nome, il certificato, la connessione sicura.", + payAiDesc: "Sasquatch, la guida della community.", + payDevDesc: "Costruire e riparare SkateSpots.", + payOpsDesc: "Il lavoro poco glamour che lo mantiene in funzione.", + payMarketingDesc: "Raggiungere nuove scene locali e skateshop.", + impact: "Impatto finora", + impactDesc: "Ciò che la community ha costruito — finanziato dagli skater.", + impactSpots: "Spot", + impactCrews: "Crew", + impactEvents: "Eventi", + impactLab: "Professionisti del Lab", + impactShops: "Negozi", + impactMappers: "Mapper", + support: "Sostieni", + supportDesc: "Finanzia SkateSpots su Angor — crowdfunding Bitcoin on-chain e decentralizzato. Nessun intermediario, nessun KYC.", + collaborators: "Collaboratori", + collaboratorsDesc: "Persone che costruiscono attivamente SkateSpots — sviluppatori, designer, operatori di relay.", + partners: "Partner", + partnersDesc: "Organizzazioni e progetti con cui collaboriamo strettamente.", + friends: "Amici", + friendsDesc: "Persone con cui siamo in sintonia.", + backTitle: "Sostieni il progetto su Angor", + backDesc: "Angor è un finanziamento Bitcoin on-chain e decentralizzato costruito su Nostr — i tuoi fondi restano sotto il tuo controllo, rilasciati a fasi, senza alcun custode che detenga il totale. I contributi fino a 100.000 sats funzionano come una donazione (nessun handshake di recupero); gli importi maggiori sono investimenti i cui fondi non spesi possono essere recuperati. Ogni sat va allo sviluppo, all'hosting dei relay e a mantenere SkateSpots gratuito per ogni skater del mondo.", + donateNote: "Preferisci una donazione diretta? ⚡ Zappa qui sotto — niente da rimborsare, niente da recuperare.", + openAngor: "Apri Angor", + orZap: "oppure ⚡ zappa qualsiasi spot, crew o creatore direttamente nell'app", + wantCollaborate: "Vuoi collaborare?", + wantCollaborateDesc: "Sviluppatori, designer, skater con competenze — contattaci.", + viewNostrHub: "Vedi su NostrHub", + wantPartner: "Vuoi diventare partner di SkateSpots? Contattaci su Nostr.", + comingSoon: "Prossimamente", + wantListed: "Vuoi essere elencato qui?", + wantListedDesc: "Invia un logo (PNG/WebP, sfondo trasparente, min 200×200px) e il tuo URL via DM su Nostr, solo se hai il feeling giusto.", + whyTitle1: "Perché ci serve", + whyTitle2: "sostegno", + whyDesc: "SkateSpots è 100% gratuito, open source e costruito su Nostr — un protocollo decentralizzato senza un server centrale da chiudere. Niente pubblicità, niente vendita di dati, niente investitori. Ogni sat va direttamente allo sviluppo, all'hosting dei relay e a mantenere tutto questo gratuito per ogni skater del mondo.", + why1Title: "Nativo Nostr", + why1Desc: "Nessun server centrale. I tuoi dati vivono sui relay che scegli tu.", + why2Title: "Alimentato da Bitcoin", + why2Desc: "Guadagna sats mappando spot. Spendi al negozio locale.", + why3Title: "Gratis per sempre", + why3Desc: "Open source, nessun paywall, nessun tracciamento, nessun finanziamento VC.", + thankYou: "Grazie. Ogni sat mantiene gli spot sulla mappa. 🛹⚡", + license: "Licenza", + faq: "FAQ" + }, + admin: { + confirmed: "Confermato", + title: "Coda di revisione", + subtitle: "Spot, negozi, eventi, tour e attrezzatura che attivano i segnali di spam. Nascondi e Conferma sono etichette leggere e reversibili; le segnalazioni hanno priorità. Nulla viene eliminato.", + tabReports: "Segnalazioni", + tabSpots: "Spot", + tabShops: "Negozi", + tabEvents: "Eventi", + tabTours: "Tour", + tabGear: "Attrezzatura", + tabCrews: "Crew", + tabLab: "Lab", + tabClaims: "Rivendicazioni", + nothingToReview: "Niente da revisionare — nulla di questo tipo attiva i segnali di spam.", + hideActioned: "Nascondi gestiti", + showActioned: "Mostra gestiti ({{count}})", + undoAll: "Annulla tutti i {{count}}", + undoAllTitle: "Annullare ogni verdetto in questa scheda?", + undoAllDesc: "Questo riporta ogni elemento a neutrale — non nascosto, non approvato. Pubblica un'etichetta pubblica per elemento, quindi con Amber riceverai {{count}} schermate di approvazione.", + undoCount: "Annulla {{count}}", + undo: "Annulla", + confirm: "Conferma", + hide: "Nascondi", + hideIt: "Nascondilo", + hideForEveryone: "Nascondere questo per tutti?", + hideForEveryoneDesc: "Questo rimuove l'elemento dalla navigazione e dalla ricerca per ogni utente di SkateSpots. È un'etichetta pubblica e reversibile — puoi annullarla da questa coda.", + hidden: "Nascosto", + hiddenDesc: "Rimosso dall'app tramite un'etichetta pubblica. Reversibile.", + couldNotHide: "Impossibile nascondere", + notASpot: "Non è uno skate spot", + lookAtIt: "Dagli un'occhiata" + }, + profile: { + nip05Verified: "Verificato NIP-05", + nip05NotVerified: "NIP-05 non verificato con questa chiave", + message: "Messaggio", + zapsReceived: "zap ricevuti", + memberSince: "Membro dal", + badges: "Distintivi", + sponsorsSupport: "Sponsor e sostegno", + skater: "Skater", + stance: "Stance", + skating: "Skating", + homeSpot: "Spot di casa", + basedIn: "Base a", + addSkateDetails: "Aggiungi i tuoi dettagli sullo skate", + addSkateDetailsDesc: "Imposta stance, stili e livello per apparire nella directory degli Skater.", + spotsAdded: "Spot aggiunti", + shopsAdded: "Negozi aggiunti", + noSpots: "Non hai ancora aggiunto spot", + noSpotsDesc: "Metti il tuo spot locale sulla mappa →", + stash: "Stash", + gear: "Attrezzatura", + crews: "Crew", + info: "Info", + lightning: "Lightning", + silentPayment: "Pagamento silenzioso", + coordinator: "Coordinatore", + coordinatorAdded: "Coordinatore aggiunto", + add: "Aggiungi", + messagePrivately: "Scrivi in privato", + founder: "Fondatore", + member: "Membro", + supportSkater: "Sostieni questo skater", + supportSkaterDesc: "Invia una mancia per ringraziarli dei loro contributi" + }, + index: { + joinCommunity: "Unisciti alla community per aggiungere spot, creare eventi e altro", + topZapped: "TOP ZAPPATI", + topZappedDesc: "Gli spot più sostenuti questo mese", + leaderboard: "Classifica", + newHere: "NUOVO QUI?", + newHereDesc: "Crea un account gratuito per aggiungere spot, partecipare agli eventi, connetterti con gli skater e diventare parte della community. Nessuna email richiesta.", + followFounder: "Segui il fondatore", + followFounderDesc: "Tieni premuto sull'avatar per 3 secondi per seguire e restare aggiornato su nuove funzionalità ed eventi!", + createAccount: "Crea account", + accountWorks: "Il tuo account funziona su tutte le app della rete", + footerTagline: "Open Source • Di proprietà della community • Senza pubblicità" + }, + stash: { + title: "Il mio Stash", + loginDesc: "Il tuo inventario privato di attrezzatura. Tieni traccia di ciò che possiedi, imposta i prezzi e condividi in modo selettivo con gli scambiatori.", + encrypted: "Cifrato", + syncsEverywhere: "Sincronizzato ovunque", + p2pTrading: "Scambi P2P", + encryptionRequired: "Cifratura richiesta", + encryptionRequiredDesc: "Il tuo Stash è cifrato per la privacy. Usa un firmatario che supporti la cifratura NIP-44 (come Alby, nos2x o Amber).", + learnSigners: "Scopri i firmatari", + select: "Seleziona", + stash: "Stash", + wishlist: "Lista dei desideri", + allCategories: "Tutte le categorie", + sortNewest: "Più recenti", + sortValue: "Valore", + sortCondition: "Condizioni", + sortAz: "A–Z", + friendsOnly: "Solo amici", + addToWishlist: "Aggiungi alla lista dei desideri", + addItemToStash: "Aggiungi oggetto allo Stash", + addItem: "Aggiungi oggetto", + editItem: "Modifica oggetto", + publicStash: "Stash pubblico", + listView: "Vista elenco", + gridView: "Vista griglia", + uploading: "Caricamento...", + addPhotos: "Aggiungi foto", + wishlistReqPlaceholder: "Requisiti specifici...", + itemDescPlaceholder: "Descrivi l'oggetto, eventuali danni...", + itemsCount: "{{count}} oggetto/i", + wishlistEmpty: "Lista dei desideri vuota", + wishlistEmptyDesc: "Aggiungi l'attrezzatura che cerchi — ti abbineremo agli Stash dei tuoi amici.", + stashEmpty: "Il tuo Stash è vuoto", + stashEmptyDesc: "Inizia a tenere traccia della tua attrezzatura. Deck, truck, scarpe — aggiungila una volta, accedici ovunque tramite Nostr.", + noMatch: "Nessun oggetto corrispondente", + noMatchDesc: "Prova a modificare i filtri.", + backupTransfer: "Backup e trasferimento", + backupDesc: "Il tuo Stash è cifrato su Nostr. Conserva una copia che controlli tu — un relay morto o un nuovo account non possono farti perdere la lista dell'attrezzatura.", + exportTitle: "Backup cifrato", + exportDialogDesc: "Salva {{count}} oggetto/i in un file. Cifralo così un file trapelato non è una fuga di dati.", + modePassword: "Password", + modeKey: "La mia chiave", + password: "Password", + confirmPassword: "Conferma password", + passwordHint: "Usa almeno 8 caratteri. Non c'è recupero — non dimenticarla.", + keyModeHint: "Cifrato con la tua chiave Nostr. Solo quella chiave può aprirlo — niente da ricordare.", + exportPlaintext: "Esporta senza cifratura", + pwTooShort: "Usa almeno 8 caratteri.", + pwMismatch: "Le password non corrispondono.", + exportFailed: "Impossibile creare il backup.", + unlockTitle: "Sblocca backup", + unlockDesc: "Questo backup è protetto da password.", + unlock: "Sblocca", + unlockFailed: "Impossibile sbloccare il backup.", + show: "Mostra", + hide: "Nascondi", + strength: "Robustezza della password", + strengthWeak: "Debole", + strengthFair: "Discreta", + strengthGood: "Buona", + strengthStrong: "Forte", + filenameWillSave: "Verrà salvato come {{name}}", + export: "Esporta", + import: "Importa", + exported: "Stash esportato", + exportedDesc: "{{count}} oggetti salvati in un file.", + noItemsInFile: "Nessun oggetto trovato in quel file.", + noValidItems: "Nessun oggetto valido trovato in quel file.", + imported: "Importati {{count}} oggetti", + importSkipped: "{{count}} saltati (già nel tuo Stash).", + importAdded: "Aggiunti al tuo Stash.", + importFailed: "Importazione non riuscita", + couldNotRead: "Impossibile leggere quel file.", + updateFailed: "Impossibile aggiornare il tuo Stash", + updatedCount: "Aggiornati {{count}} oggetti", + markedForSale: "Contrassegnati {{count}} in vendita", + unmarkedCount: "Rimossi dalla vendita {{count}}", + removedCount: "Rimossi {{count}} oggetti", + selectedCount: "{{count}} selezionati", + selectAll: "Seleziona tutto", + visibilityPublic: "Pubblico", + visibilityPrivate: "Privato", + forSale: "In vendita", + remove: "Rimuovi", + bulkDeleteTitle: "Rimuovere {{count}} oggetti?", + bulkDeleteDesc: "Questo riscrive il tuo Stash cifrato con una sola firma e non può essere annullato qui. Esporta prima un backup se non sei sicuro.", + deleteTitle: "Rimuovere dal tuo Stash?", + deleteDesc: "“{{title}}” verrà rimosso dal tuo Stash", + deleteDescPublic: " e rimosso dalla tua vetrina pubblica", + deleteUndone: ". Questa operazione non può essere annullata.", + deleteDescGeneric: "Questo oggetto verrà rimosso dal tuo Stash. Questa operazione non può essere annullata.", + listOnMarketplace: "Metti in vendita sul Marketplace", + noPriceSet: "Nessun prezzo impostato", + categoryLabel: "Categoria", + photosLabel: "Foto", + willingToSell: "Disposto a vendere", + willingToTrade: "Disposto a scambiare", + whereIsThisItem: "Dov'è questo oggetto?", + visibilityLabel: "Visibilità", + visibilityPrivateOnlyYou: "Privato - Solo tu", + visibilityFriendsMutual: "Amici - Segui reciproci", + visibilityPublicAnyone: "Pubblico - Chiunque", + visibilityFriends: "Amici", + brandLabel: "Marca", + sizeLabel: "Taglia", + descriptionLabel: "Descrizione", + conditionLabel: "Condizioni", + itemName: "Nome dell'oggetto", + saveChanges: "Salva modifiche", + listItemDialogTitle: "Metti in vendita \"{{title}}\"", + pickUpWhere: "Dove possono ritirare gli acquirenti questo oggetto?", + linkToSpot: "Collega a uno Skate Spot", + linkToSpotDesc: "Ideale per vendite locali • Appare nella pagina dello spot e sulla mappa", + recommended: "Consigliato", + noSpecificSpot: "Nessuno spot specifico", + noSpecificSpotDesc: "Visibile solo nella pagina del Marketplace", + tipLinkedSpots: "💡 Consiglio: gli annunci collegati agli spot sono più facili da trovare per gli skater locali.", + anyoneCanSee: "Chiunque può vederli sul tuo profilo.", + seeWhatOthersSee: "Vedi cosa vedono gli altri", + inventory: "Inventario", + publicWantsNote: "Le richieste pubbliche sono pubblicate sul Marketplace come annunci “cercasi”, così i venditori possono trovarti.", + howItWorks: "Come funziona", + tapToMarketplace: "Tocca per andare al Marketplace →", + viewWishlist: "Vedi lista dei desideri", + tipEditItems: "Modifica gli oggetti con il pulsante della penna", + tipListForSale: "Metti in vendita con il pulsante del negozio", + tipAddPhotos: "Aggiungi foto per offerte di scambio migliori", + tipKeySyncs: "La chiave Nostr si sincronizza su tutti i dispositivi", + itemsReadyToSell: "{{count}} oggetto/i pronti per la vendita" + } + } +}; export default itBatch4; diff --git a/src/i18n/it/batch5.ts b/src/i18n/it/batch5.ts index 3232d30..a0bf340 100644 --- a/src/i18n/it/batch5.ts +++ b/src/i18n/it/batch5.ts @@ -1,4 +1,1597 @@ -/** it — batch 5. Filled by the translation pass; empty until then. */ -const itBatch5 = {}; +/** it — batch 5. Filled by the translation pass. */ +const itBatch5 = { + labUi: { + activeCount: "{{count}} attivi", + addMusicProfile: "Aggiungi profilo musicale", + all: "Tutti", + clearAll: "Cancella tutto", + collective: "Collettivo", + filters: "Filtri", + following: "Seguiti", + getRiderCard: "Ottieni Rider Card", + judgeEvents: "Giudica eventi", + justASkater: "Solo un", + labForServices: "The Lab è per i servizi. Esplora e unisciti a tutta la community di skater", + loginToOffer: "Accedi per offrire servizi", + newest: "Più recenti", + noResults: "Nessun risultato", + offer: "Offri", + offerBuilding: "Offri costruzione", + offerCoaching: "Offri coaching", + offerCuts: "Offri montaggi", + offerDesignArt: "Offri design / arte", + offerEditing: "Offri editing", + offerFilming: "Offri riprese", + offerGraffiti: "Offri graffiti", + offerPhotography: "Offri fotografia", + offerServices: "Offri servizi", + yourProfiles: "I tuoi profili Lab", + preview: { + button: "Anteprima", + title: "Anteprima dal vivo", + desc: "Ecco come apparirà il tuo profilo da {{noun}} una volta pubblicato.", + untitled: "Il tuo nome", + noBio: "Ancora nessuna bio — aggiungi una riga su ciò che offri.", + years: "{{count}} anni di esperienza", + portfolio: "Portfolio", + note: "Solo anteprima — non è ancora pubblicato nulla." + }, + draft: { + title: "Hai una bozza non salvata", + body: "Riprendi da dove avevi lasciato — nulla viene pubblicato finché non premi Pubblica.", + resume: "Riprendi bozza", + discard: "Scarta bozza" + }, + progress: { + title: "Completezza del profilo", + count: "{{done}} di {{total}} completati", + photo: "Foto", + bio: "Bio", + skills: "Competenze", + rate: "Tariffa", + location: "Località", + contact: "Contatto" + }, + wizard: { + identity: "Identità", + offer: "Cosa offri", + rates: "Tariffe", + contact: "Contatto", + media: "Media" + }, + offerTattoo: "Offri tatuaggi", + offerTraining: "Offri allenamento / fisioterapia", + organizeEvents: "Organizza eventi", + resultsMany: "{{count}} risultati", + resultsOne: "{{count}} risultato", + searchCityPlaceholder: "Città…", + searchNamePlaceholder: "Nome, bio…", + showResults: "Mostra risultati", + showResultsActive: "Mostra risultati · {{count}} attivi", + skaterWord: "skater", + sortBy: "Ordina per", + theCrew: "The Crew", + topRated: "Più votati", + trusted: "Affidabili", + trustLevel: "Livello di affidabilità", + yearsExp: "{{count}} anni di exp", + tabCoaches: "Coach", + tabFilmers: "Filmer", + tabPhoto: "Foto", + tabEditors: "Editor", + tabBuilders: "Costruttori", + tabArtists: "Artisti", + tabGraffiti: "Graffiti", + tabTattoo: "Tatuaggi", + tabTrainers: "Trainer", + tabMusic: "Musica", + tabJudges: "Giudici", + tabOrganizers: "Organizzatori", + tabBarbers: "Barbieri", + filterSkillsToLearn: "Competenze da imparare", + filterContentType: "Tipo di contenuto", + filterEquipmentStyle: "Attrezzatura e stile", + filterServices: "Servizi", + filterCamera: "Fotocamera", + filterLenses: "Obiettivi", + filterLighting: "Illuminazione", + filterSupportRig: "Supporto e rig", + filterStyle: "Stile", + filterWhatTheyBuild: "Cosa costruiscono", + filterMaterialsTrade: "Materiali e mestiere", + filterProjectScale: "Scala del progetto", + filterWhatTheyMake: "Cosa realizzano", + filterMedium: "Tecnica", + filterSoftwareTools: "Software e strumenti", + filterWorkContext: "Contesto di lavoro", + filterMethod: "Metodo", + filterFocus: "Focus", + filterInjuriesTreated: "Infortuni trattati", + filterCredentialsSetting: "Credenziali e ambiente", + filterGenre: "Genere", + filterInstrumentsRole: "Strumenti e ruolo", + filterEventFormats: "Formati evento", + filterSpecialty: "Specialità", + filterLevelCircuit: "Livello / circuito", + filterEventTypes: "Tipi di evento", + filterWhatYouHandle: "Cosa gestisci", + filterScale: "Scala", + filterWhatTheyOffer: "Cosa offrono", + filterSignatureStyles: "Stili distintivi", + filterSetting: "Ambiente", + filterEditType: "Tipo di montaggio", + role: { + coach: "Coach", + filmer: "Filmer", + builder: "Builder", + editor: "Editor video", + photographer: "Photographer", + skater: "Skater" + }, + empty: { + footer: "Hai domande? Consulta le FAQ →", + loginSuffix: "per creare un profilo.", + coachesTitle: "Ancora nessun coach", + coachesBody: "Sii il primo a offrire coaching di skateboard nella tua zona.", + filmersTitle: "Ancora nessun filmer", + filmersBody: "Sii il primo a offrire riprese di skate — clip, part complete, copertura di contest e altro.", + photographersTitle: "Ancora nessun fotografo", + photographersBody: "Sii il primo a offrire fotografia di skate nella tua zona — scatti d'azione, sequenze, editoriale e altro.", + editorsTitle: "Ancora nessun editor video", + editorsBody: "Sii il primo a offrire servizi di montaggio video di skate.", + buildersTitle: "Ancora nessun builder", + buildersBody: "Sii il primo a elencare la tua costruzione di rampe, park o DIY — cemento, legno, rail e altro.", + artistsTitle: "Ancora nessun artista", + artistsBody: "Sii il primo a offrire grafiche per tavole, loghi, poster e merch per la scena.", + graffitiTitle: "Ancora nessun writer di graffiti", + graffitiBody: "Sii il primo a offrire pezzi, murales e arte per skatepark nella tua zona.", + tattooTitle: "Ancora nessun tatuatore", + tattooBody: "Sii il primo tatuatore di cultura skate a elencarti — flash, custom, fine line e altro.", + trainersTitle: "Ancora nessun trainer", + trainersBody: "Sii il primo trainer o fisioterapista ad aiutare gli skater a diventare forti e restare in salute.", + musiciansTitle: "Ancora nessun musicista", + musiciansBody: "Skate e fai musica? Aggiungi la tua band o il tuo progetto solista — generi, strumenti e link.", + judgesTitle: "Ancora nessun giudice", + judgesBody: "Organizzi contest equi? Elencati per giudicare Game of S.K.A.T.E., best trick jam, contest e tappe del tour.", + organizersTitle: "Ancora nessun organizzatore", + organizersBody: "Organizzi jam, gare, meetup o demo? Elencati così gli skater possono trovarti e prenotarti.", + barbersTitle: "Ancora nessun barbiere", + barbersBody: "Tagli i capelli agli skater? Elenca la tua poltrona o il servizio mobile così la scena può farsi un taglio fresco." + }, + become: { + addNip05: "Aggiungi NIP-05 nelle Impostazioni", + backToLab: "Torna a The Lab", + bioWorkLabel: "Bio / Il tuo lavoro", + checkContact: "Controlla i tuoi dati di contatto", + cityArea: "Città / Zona", + cityCountry: "Città, Paese", + connectWallet: "Connetti wallet", + connectWalletNwc: "Connetti wallet con NWC", + contactInfo: "Informazioni di contatto", + contactInfoDesc: "Come i clienti possono raggiungerti (tutto opzionale, ma consigliato)", + coordinatesOptional: "Coordinate (opzionale)", + email: "Email", + failedToPublish: "Pubblicazione non riuscita", + fromNostrProfile: "Dal tuo profilo Nostr", + geolocationUnsupported: "Geolocalizzazione non supportata", + getting: "Recupero…", + headline: "Titolo", + headlineHint: "Mostrato come titolo sulla tua scheda Lab — es. «{{example}}». Predefinito al tuo nome.", + imageUploaded: "Immagine caricata", + instagram: "Instagram", + invalidEmail: "Inserisci un indirizzo email valido.", + invalidPortfolio: "Inserisci un URL portfolio valido.", + invalidWebsite: "Inserisci un URL sito web valido.", + latitude: "Latitudine", + learnHow: "Scopri come", + locationError: "Errore di localizzazione", + locationFound: "Località trovata", + loginRequired: "Accesso richiesto", + loginRequiredDesc: "Devi accedere per creare un profilo da {{role}}.", + loginRequiredDescCraft: "Devi accedere per creare un profilo {{noun}}.", + longitude: "Longitudine", + nip05Recommended: "Verifica NIP-05 consigliata", + nip05RecommendedDesc: "Verifica la tua identità per costruire fiducia con i clienti.", + noWallet: "Nessun wallet connesso", + otherSocial: "Altri social", + paymentSetup: "⚡ Configurazione pagamenti richiesta", + phoneNumber: "Numero di telefono", + profilePhoto: "Foto profilo", + profilePublished: "Il tuo profilo è stato pubblicato.", + publishing: "Pubblicazione...", + socialMedia: "Social media", + tip: "💡 Consiglio: la maggior parte dei wallet Lightning supporta NWC (Alby, Minibits, Zeus, Coinos).", + tipWithTime: "💡 Consiglio: la maggior parte dei wallet Lightning supporta NWC (Alby, Minibits, Zeus, Coinos). Bastano 30 secondi per configurarlo.", + upload: "Carica", + uploadFailed: "Caricamento non riuscito", + uploadImage: "Carica immagine", + uploading: "Caricamento…", + useCurrentLocation: "Usa posizione attuale", + useMyLocation: "Usa la mia posizione", + usingNwc: "Utilizzo di Nostr Wallet Connect", + usingWebln: "Utilizzo dell'estensione browser WebLN", + walletConnected: "Wallet connesso — pronto a ricevere pagamenti!", + website: "Sito web", + yearsExperience: "Anni di esperienza" + }, + coachForm: { + anonymous: "Coach anonimo", + bioLabel: "Bio / Filosofia di coaching", + bioPlaceholder: "Il tuo background, stile di insegnamento...", + create: "CREA PROFILO COACH", + created: "Profilo coach creato!", + createPro: "CREA PROFILO COACH PRO", + dmNote: "💬 Gli studenti possono scriverti direttamente tramite la messaggistica crittografata di SkateSpots", + heading: "Diventa Coach", + headlineExample: "Skate Coach Berlino", + hourlyRate: "Tariffa oraria", + identity: "La tua identità di Coach", + nip05Reason: "Aggiungi un identificatore NIP-05 per verificare la tua identità e costruire fiducia con gli studenti — mostra loro che sei un coach legittimo.", + paymentDesc: "Per ricevere i pagamenti delle lezioni dagli studenti, devi connettere un wallet Lightning. Gli studenti ti zapperanno direttamente per le sessioni di coaching.", + profileDesc: "Racconta agli studenti la tua esperienza", + profileTitle: "Profilo Coach", + ratePlaceholder: "5000 sats/ora", + selectSkill: "Seleziona almeno una competenza.", + skillsLabel: "Competenze che insegno * (seleziona almeno una)", + skillsRequired: "Competenze richieste", + formatsLabel: "Formati delle sessioni", + formatsHint: "Come offri il coaching.", + levelsLabel: "Livelli insegnati", + agesLabel: "Fasce d'età", + credentialsLabel: "Credenziali e sicurezza", + credentialsHint: "Autodichiarate — SkateSpots non le verifica.", + languagesLabel: "Lingue parlate", + languagesHint: "Aggiungi le lingue in cui puoi fare coaching.", + languagePlaceholder: "es. Italiano, English", + availabilityLabel: "Disponibilità", + bookingLabel: "Link di prenotazione", + bookingHint: "Opzionale — una pagina dove gli studenti possono prenotare e pagare.", + galleryLabel: "Foto del portfolio", + galleryHint: "Mostra sessioni reali, studenti e spot (fino a 12).", + galleryAdd: "Aggiungi foto del portfolio", + galleryUploaded: "{{count}} foto caricate", + videoLabel: "Reel in evidenza", + videoHint: "Opzionale — un video YouTube o Instagram del tuo coaching.", + formatOneOnOne: "1 su 1", + formatGroup: "Gruppo", + formatCamp: "Camp", + formatVideo: "Analisi video", + formatContestPrep: "Preparazione contest", + formatParkLesson: "Lezione al park", + formatAdaptive: "Adattivo", + formatGirls: "Sessione girls", + formatAfterSchool: "Dopo scuola", + levelBeginner: "Principiante", + levelIntermediate: "Intermedio", + levelAdvanced: "Avanzato", + levelCompetition: "Competizione", + ageKids: "Bambini", + ageTeens: "Adolescenti", + ageAdults: "Adulti", + ageSeniors: "Anziani", + certFirstAid: "Primo soccorso", + certCpr: "RCP", + certSafeguarding: "Tutela dei minori", + certBackgroundCheck: "Controllo dei precedenti", + certInsured: "Assicurato", + certFederation: "Coach di federazione nazionale", + certQualification: "Qualifica di coaching", + certJudge: "Giudice di competizione", + certNoteLabel: "Altre credenziali (opzionale)", + certNotePlaceholder: "es. Skateboard GB Livello 2, 8 anni di coaching…", + availWeekdays: "Giorni feriali", + availWeekends: "Fini settimana", + availEvenings: "Sere", + availAfterSchool: "Dopo scuola", + availHolidays: "Vacanze scolastiche", + availSeasonal: "Stagionale", + sectionWhatYouCoach: "Cosa alleni", + sectionCredentials: "Credenziali e sicurezza", + sectionAvailability: "Disponibilità e prenotazione", + sectionWhereYouCoach: "Dove alleni", + sectionPortfolio: "Portfolio", + rateAmountLabel: "Tariffa", + rateCurrencySats: "sats", + rateCurrencyUsd: "USD", + rateCurrencyEur: "EUR", + rateCurrencyGbp: "GBP", + perHour: "all'ora", + perSession: "a sessione", + perHalfDay: "a mezza giornata", + perDay: "al giorno", + perCamp: "a camp", + perProject: "a progetto", + perEvent: "a evento", + perGig: "a concerto", + perShoot: "a servizio", + perPiece: "a pezzo", + perCut: "a montaggio", + perMonth: "al mese", + availByAppointment: "Su appuntamento", + rateNotesLabel: "Note sulla tariffa (opzionale)", + rateNotesPlaceholder: "Tariffa progressiva, prima sessione gratuita, viaggio incluso…", + sectionPayments: "Pagamenti", + paymentMethodsHint: "Come i clienti possono pagarti. Questa è una dichiarazione — SkateSpots non detiene mai fondi.", + payMethodCash: "Contanti sul posto", + payMethodLightning: "Lightning", + payMethodCashu: "Cashu", + payMethodBank: "Bonifico bancario", + payMethodOther: "Altro", + payWhatYouCanLabel: "Tariffa progressiva / paghi quanto puoi", + bookingFeeLabel: "Costo di prenotazione (opzionale)", + bookingFeeHint: "Una piccola somma pagata direttamente a te per confermare una prenotazione. SkateSpots non la detiene né la rimborsa.", + paymentNoteLabel: "Nota di pagamento (opzionale)", + paymentNotePlaceholder: "Prima sessione gratuita, viaggio incluso, paga dopo la sessione…", + spotsDesc: "Seleziona gli spot dove offri sessioni di coaching", + spotsLabel: "Spot dove alleni", + tagline: "Condividi la tua conoscenza dello skateboarding", + update: "AGGIORNA PROFILO COACH", + updated: "Profilo coach aggiornato!" + }, + filmerForm: { + anonymous: "Filmer anonimo", + bioPlaceholder: "Il tuo background, stile, attrezzatura...", + camerasLabel: "Fotocamere e attrezzatura * (seleziona almeno una)", + create: "CREA PROFILO FILMER", + created: "Profilo filmer creato!", + createPro: "CREA PROFILO FILMER PRO", + dmNote: "💬 I clienti possono scriverti direttamente tramite la messaggistica crittografata di SkateSpots", + gearHelper: "Elenca le tue fotocamere, obiettivi e rig esatti — agli skater interessa il setup.", + gearLabel: "Cosa c'è nella borsa (opzionale)", + gearPlaceholder: "es. Sony VX1000 + fisheye MK1, Panasonic HVX200, gimbal DJI RS3, GoPro Hero 12, microfono Sennheiser...", + heading: "Diventa Filmer", + headlineExample: "Skate Filmer Berlino", + identity: "La tua identità di Filmer", + nip05Reason: "Aggiungi un identificatore NIP-05 per verificare la tua identità e costruire fiducia con i clienti — mostra loro che sei un filmer legittimo.", + paymentDesc: "Per ricevere pagamenti dai clienti per i servizi di ripresa, devi connettere un wallet Lightning. I clienti ti zapperanno direttamente per il tuo lavoro.", + profileDesc: "Racconta ai clienti la tua esperienza nelle riprese", + profileTitle: "Profilo Filmer", + rate: "Tariffa", + ratePlaceholder: "10000 sats/video", + reelLabel: "Reel / Portfolio", + selectService: "Seleziona almeno un servizio.", + selectSkill: "Seleziona almeno una competenza di ripresa.", + servicesLabel: "Servizi offerti * (seleziona almeno uno)", + servicesRequired: "Servizi richiesti", + skillsRequired: "Competenze richieste", + spotsDesc: "Seleziona gli spot dove offri servizi di ripresa", + spotsLabel: "Spot dove filmi", + tagline: "Offri le tue riprese di skate video — clip, line, part complete e copertura di contest", + update: "AGGIORNA PROFILO FILMER", + updated: "Profilo filmer aggiornato!" + }, + editorForm: { + anonymous: "Editor anonimo", + bioPlaceholder: "Il tuo stile di montaggio, background, progetti notevoli…", + contactPortfolio: "Contatto e portfolio", + create: "Pubblica profilo Editor", + created: "Profilo editor creato!", + createPro: "Pubblica profilo Editor Pro", + editTypes: "Tipi di montaggio offerti * (seleziona almeno uno)", + hardware: "Hardware", + hardwarePlaceholder: "es. MacBook Pro M3, Sony FX3", + heading: "Diventa Editor video", + headlineExample: "Skate Video Editor", + identity: "La tua identità", + locationOptional: "Località (opzionale)", + loginDesc: "Accedi per creare il tuo profilo di editor video.", + phoneTelegram: "Telefono / Telegram", + portfolioPlaceholder: "Portfolio (Vimeo, YouTube…)", + profileDesc: "Racconta alla community il tuo stile e le tue competenze di montaggio", + profileTitle: "Profilo Editor", + published: "Il tuo profilo è stato pubblicato su SkateSpots.", + rate: "Tariffa / Prezzo", + ratePlaceholder: "es. 50k sats/min, DM per preventivo", + selectService: "Seleziona almeno un tipo di montaggio.", + servicesRequired: "Servizi richiesti", + socialPlaceholder: "Handle Instagram / social", + software: "Software", + softwareHardware: "Competenze software e hardware", + softwarePlaceholder: "es. DaVinci Resolve, Premiere", + tagline: "Offri i tuoi servizi di montaggio video alla community dello skate", + thumbnail: "Miniatura profilo / showreel", + update: "Aggiorna profilo Editor", + updated: "Profilo editor aggiornato!", + walletConnected: "Wallet connesso ✓", + walletDesc: "Ricevi pagamenti in Bitcoin ⚡ direttamente dai clienti per il tuo lavoro di montaggio.", + walletTitle: "⚡ Wallet Lightning per i pagamenti", + yearsExperience: "Anni di esperienza", + yearsPlaceholder: "es. 5 anni" + }, + photoForm: { + anonymous: "Fotografo anonimo", + bioPlaceholder: "Il tuo background, stile, cosa ami fotografare...", + cameraLabel: "Corpi macchina * (seleziona almeno uno)", + cameraRequired: "Fotocamera richiesta", + contactDesc: "Come i rider possono vedere il tuo lavoro e raggiungerti (tutto opzionale, ma consigliato)", + create: "CREA PROFILO FOTOGRAFIA", + created: "Profilo fotografia creato!", + createPro: "CREA PROFILO FOTOGRAFIA PRO", + dmNote: "💬 I rider possono scriverti direttamente tramite la messaggistica crittografata di SkateSpots", + gearHelper: "Elenca corpi, obiettivi e luci esatti — i rider adorano sapere il setup.", + gearPlaceholder: "es. Canon R6 II, fisheye 8-15mm, 70-200mm f/2.8, 2× Godox AD200, trigger remoti, treppiede Manfrotto...", + heading: "Diventa Photographer", + headlineExample: "Skate Photography", + identity: "La tua identità di Photographer", + lensesLabel: "Obiettivi", + lightingLabel: "Attrezzatura di illuminazione", + nip05Reason: "Aggiungi un identificatore NIP-05 per verificare la tua identità e costruire fiducia con i clienti.", + paymentDesc: "Per farti pagare gli scatti, connetti un wallet Lightning. I clienti ti zapperanno direttamente per il tuo lavoro.", + portfolioLabel: "Portfolio / Instagram", + profileDesc: "Racconta ai rider del tuo occhio, del tuo kit e dei tuoi servizi", + profileTitle: "Profilo fotografia", + ratePlaceholder: "20000 sats/scatto", + selectCamera: "Seleziona almeno un tipo di fotocamera con cui scatti.", + selectService: "Seleziona almeno un servizio che offri.", + servicesLabel: "Servizi offerti * (seleziona almeno uno)", + servicesRequired: "Servizi richiesti", + spotsDesc: "Seleziona gli spot dove offri fotografia", + spotsLabel: "Spot dove scatti", + styleLabel: "Stile di scatto", + supportLabel: "Supporto e rig", + tagline: "Fotografa le sessioni — offri la tua fotografia di skate", + update: "AGGIORNA PROFILO FOTOGRAFIA", + updated: "Profilo fotografia aggiornato!" + }, + builderForm: { + anonymous: "Builder anonimo", + bioLabel: "Bio / Le tue costruzioni", + bioPlaceholder: "Il tuo crew, costruzioni notevoli, come affronti un progetto...", + buildTypesLabel: "Cosa costruisci * (seleziona almeno uno)", + buildTypesRequired: "Tipi di costruzione richiesti", + cityBase: "Città / Base", + contactPortfolio: "Contatto e portfolio", + contactPortfolioDesc: "Come la scena può vedere le tue costruzioni e raggiungerti (tutto opzionale, ma consigliato)", + create: "CREA PROFILO BUILDER", + created: "Profilo builder creato!", + createPro: "CREA PROFILO BUILDER PRO", + dmNote: "💬 I clienti possono scriverti direttamente tramite la messaggistica crittografata di SkateSpots", + gearHelper: "Crew e clienti adorano conoscere il tuo kit e il tuo processo.", + gearLabel: "Come lavori / Attrezzatura (opzionale)", + gearPlaceholder: "es. Crew completa per cemento, mixer proprio + attrezzatura per shotcrete, saldatura mobile, gestiamo permessi e drenaggio...", + heading: "Diventa Builder", + headlineExample: "Costruttore di rampe e park", + identity: "La tua identità di Builder", + insured: "Con licenza / assicurato", + insuredHelper: "Rilevante per lavori su park pubblici e comunali", + logoPhoto: "Logo / Foto", + materialsLabel: "Materiali e competenze artigianali", + nip05Reason: "Aggiungi un identificatore NIP-05 per verificare la tua identità e costruire fiducia con i clienti.", + pastBuilds: "Costruzioni passate / Instagram", + paymentDesc: "Per farti pagare le costruzioni, connetti un wallet Lightning. I clienti ti zapperanno direttamente per il tuo lavoro.", + profileDesc: "Racconta alla scena cosa costruisci e come lavori", + profileTitle: "Profilo Builder", + rateLabel: "Tariffa / Base di preventivo", + ratePlaceholder: "per m² / a progetto", + scaleLabel: "Scala del progetto", + selectBuild: "Seleziona almeno una cosa che costruisci.", + serviceArea: "Area di servizio", + serviceAreaPlaceholder: "es. Catalogna, disponibile in tutta l'UE", + spotsDesc: "Collega gli spot e i park che hai costruito così le persone vedono il tuo lavoro sulla mappa", + spotsLabel: "Spot che hai costruito", + tagline: "Versa, salda, costruisci — elenca le tue costruzioni di rampe e park", + update: "AGGIORNA PROFILO BUILDER", + updated: "Profilo builder aggiornato!", + yearsBuilding: "Anni di costruzione" + }, + skaterForm: { + backToSkaters: "Torna agli skater", + bioHelperPulled: "Preso dal tuo profilo — adattalo per la tua scheda skater, o lascialo com'è.", + bioHelperShort: "Una breve introduzione per la tua scheda skater.", + bioPlaceholder: "Da quanto tempo skati, cosa ti piace, a cosa stai lavorando…", + browseSpots: "Esplora gli spot", + changePhoto: "Cambia foto profilo", + chipBio: "Bio", + chipPhoto: "Foto", + cityArea: "Città / zona", + created: "Sei sulla mappa! 🛹", + custom: "Personalizzato", + customHelper: "La tua etichetta — mostrata sulla tua scheda skater al posto di un preset.", + customPlaceholder: "es. OG, Weekend Warrior, Retired…", + discoverable: "Ora altri skater possono scoprirti.", + editFullProfile: "modifica il tuo profilo completo", + fromProfile: "Dal tuo profilo", + heroEditPrefix: "Modifica la tua", + heroJoinPrefix: "Unisciti alla", + heroSuffix: "Directory", + homeHelper: "Scrivilo liberamente, o collega uno spot reale dalla mappa così le persone possono andarci.", + homePlaceholder: "Park / piazza locale — o tocca «Esplora gli spot»", + homeSpot: "Spot di casa", + layerEnd: "per cambiarli ovunque.", + layerIntro: "Questo è il tuo", + layerMid: ", costruito sul tuo profilo Nostr. Nome, foto, bio, Lightning e verifica provengono da lì —", + layerWord: "strato skate", + level: "Livello", + linked: "Collegato a uno spot sulla mappa", + loadingProfile: "Caricamento del tuo profilo…", + loadingSpots: "Caricamento spot…", + locationHelper: "Aiuta gli altri a trovare skater vicino a loro. Viene condivisa solo un'area approssimativa.", + loginToJoin: "Accedi per unirti", + loginToJoinDesc: "Crea il tuo profilo skater così la community può trovarti.", + mappedSpot: "Spot mappato", + noSpots: "Ancora nessuno spot trovato.", + noSpotsMatch: "Nessuno spot corrisponde alla tua ricerca.", + openMap: "Apri la mappa", + pickEverything: "Scegli tutto ciò che si adatta al tuo stile.", + pickHomeSpot: "Scegli il tuo spot di casa", + pickStyles: "Scegli i tuoi stili", + pickStylesDesc: "Scegli almeno una cosa che skati.", + profilePic: "Foto profilo", + profilePicHelper: "La tua scheda skater usa la foto del tuo profilo Nostr — stessa immagine ovunque.", + publishingAs: "Pubblicazione come", + putOnMap: "Mettimi sulla mappa", + searchSpots: "Cerca spot per nome o città…", + skateStory: "La tua storia di skate", + stance: "Stance", + unlinkSpot: "Scollega spot", + updateButton: "Aggiorna il mio profilo", + updated: "Profilo aggiornato!", + whatYouSkate: "Cosa skati *", + yearsPlaceholder: "es. 8", + yearsSkating: "Anni di skate", + yourProfilePic: "La tua foto profilo", + zapsOn: "Zap attivi" + }, + skaters: { + clearSearch: "Cancella ricerca", + community: "La community", + countMany: "skater", + countOne: "skater", + editProfile: "Modifica il mio profilo skater", + heroDesc: "Trova la tua gente. Esplora la crew di skater che rappresenta SkateSpots — per stile, stance, livello e città.", + nip05Verified: "NIP-05 verificato", + noMatches: "Nessuna corrispondenza", + noneDesc: "Sii il primo a unirti alla directory e a mettere SkateSpots sulla mappa.", + noneTitle: "Ancora nessuno skater", + noVerifiedMatch: "Nessuno skater verificato corrisponde", + searchPlaceholder: "Cerca per nome, città o npub…", + tryDifferentSearch: "Prova una ricerca diversa o cancella i filtri.", + tryTurnOffVerified: "Prova a disattivare il filtro «Verificati» per vedere tutti.", + verifiedFilterTitle: "Mostra solo skater con un'identità NIP-05 verificata" + }, + skaterCard: { + inDirectory: "Sei nella Skater Directory", + joinDesc: "Aggiungi la tua stance, i tuoi stili e livello così gli skater possono trovarti.", + joinTitle: "Unisciti alla Skater Directory" + }, + crewsStrip: { + allCrews: "Tutte le crew", + memberMany: "{{count}} membri", + memberOne: "{{count}} membro", + title: "Crew in questa scena" + }, + labLink: { + coach: "Coach", + filmer: "Filmer", + editor: "Editor", + photographer: "Photographer", + builder: "Builder", + artist: "Artista", + graffiti: "Graffiti", + tattoo: "Tatuaggio", + trainer: "Trainer", + musician: "Musicista", + judge: "Giudice", + barber: "Barbiere", + organizer: "Organizzatore", + lab: "Lab", + linkedProfiles: "Profili Lab collegati", + desc: "Gestisci anche uno studio, un'attività di coaching o di costruzione? Collega i tuoi annunci Lab così le persone possono assumere la tua crew. Opzionale. Quando anche il profilo Lab rimanda a questa crew, entrambi mostrano un", + descEnd: "badge verde.", + empty: "Non hai ancora profili Lab. Creane uno in The Lab per collegarlo qui." + }, + proUpgrade: { + goPro: "Passa a Pro", + optional: "· opzionale", + freeTo: "Gratis da elencare. Pro aggiunge un", + proBadge: "badge Pro", + featuredPlacement: "posizionamento in evidenza", + atTop: "in cima a The Lab.", + active: "Attivo", + benefit1: "Badge oro \"Pro\" sul tuo profilo e sulle tue schede", + benefit2: "In evidenza per primo quando gli skater esplorano The Lab", + benefit3: "Supporta SkateSpots — niente pubblicità, niente intermediari", + platformOwner: "Proprietario della piattaforma — Pro è sempre attivo.", + proActiveOne: "Pro attivo · {{count}} giorno rimanente. Il tuo profilo sarà in evidenza.", + proActiveMany: "Pro attivo · {{count}} giorni rimanenti. Il tuo profilo sarà in evidenza.", + context: "Il tuo profilo resta attivo gratuitamente dopo la scadenza di Pro — perdi solo il badge e il boost." + }, + profilePreview: { + viewPublic: "Vedi pubblico", + unnamed: "Skater senza nome", + noHandle: "Ancora nessun handle" + }, + pyramid: { + pyramidWord: "PYRAMID", + rankingsWord: "RANKINGS", + subtitle: "I migliori contributori nella tua città", + yourRank: "La tua posizione", + keepContributing: "Continua a contribuire per salire più in alto!", + topContributors: "Migliori contributori", + noContributors: "Ancora nessun contributore. Sii il primo ad aggiungere uno spot o a creare un evento!", + spots: "Spot", + events: "Eventi", + total: "Totale", + trust: "Fiducia" + }, + detail: { + joined: "Iscritto", + about: "Informazioni", + howWeWork: "Come lavoriamo", + inTheBag: "Nella borsa", + hardware: "Hardware", + software: "Software", + eventsJudged: "Eventi giudicati", + eventsOrganized: "Eventi organizzati", + spots: "Spot", + viewSpot: "Vedi spot", + credentialsTitle: "Credenziali e sicurezza", + selfAttested: "Autodichiarate dal coach — non verificate da SkateSpots.", + formats: "Formati", + levels: "Livelli", + ages: "Età", + languages: "Lingue", + availability: "Disponibilità", + bookSession: "Prenota una sessione", + portfolio: "Portfolio", + watchReel: "Guarda su {{platform}}", + paymentsTitle: "Pagamenti", + payWhatYouCan: "Paghi quanto puoi", + bookingFee: "Costo di prenotazione", + payBookingFee: "Paga il costo di prenotazione", + bookingFeeNote: "Pagato direttamente al coach. SkateSpots non lo detiene né lo rimborsa.", + bookingFeeNoRail: "Questo coach non ha un indirizzo Lightning impostato, quindi il pagamento in-app non è disponibile — contattalo per organizzare il pagamento.", + serviceArea: "Area di servizio", + licensedInsured: "Con licenza / assicurato", + studio: "Studio", + shopStudio: "Negozio / Studio", + booksOpen: "Prenotazioni aperte", + credentials: "Credenziali", + remoteOnline: "Remoto / Online disponibile", + graffitiCrew: "Crew di graffiti", + act: "Esibizione", + listen: "Ascolta", + upcomingGigs: "Prossimi concerti", + past: "Passati", + experience: "Esperienza", + yearsCount: "{{count}} anni", + rate: "Tariffa", + contact: "Contatto", + sendMessage: "Invia messaggio", + bookGig: "Prenota per un concerto", + portfolioDomain: "Portfolio · {{domain}}", + manage: "Gestisci", + admin: "Admin", + editProfile: "Modifica profilo", + publishedTitle: "Sei online", + publishedBody: "Il tuo profilo è pubblicato in The Lab. Condividilo così gli skater possono trovarti.", + manageRemove: "Rimuovi il tuo profilo {{noun}} da The Lab.", + adminTakeDown: "Rimuovi questo profilo {{noun}}. Sarà nascosto in tutto SkateSpots.", + entityLabel: "Profilo {{noun}}", + deleteProfile: "Elimina profilo", + location: "Località", + servicesSkills: "Servizi e competenze", + noun: { + coach: "coach", + filmer: "filmer", + editor: "editor video", + photographer: "photographer", + builder: "builder", + artist: "artista", + graffiti: "writer di graffiti", + tattoo: "tatuatore", + trainer: "trainer", + musician: "musicista", + judge: "giudice di eventi", + organizer: "organizzatore di eventi", + barber: "barbiere", + profile: "profilo" + }, + skillsTitle: { + skills: "Competenze", + servicesGear: "Servizi e attrezzatura", + whatWeBuild: "Cosa costruiamo", + whatTheyMake: "Cosa realizzano", + stylesWork: "Stili e lavoro", + styles: "Stili", + focusSpecialties: "Focus e specialità", + genresInstruments: "Generi e strumenti", + formatsSpecialties: "Formati e specialità", + servicesStyles: "Servizi e stili", + eventTypesServices: "Tipi di evento e servizi" + } + }, + rider: { + heroDesc: "La tua identità skater verificabile. Firmata su Nostr, pronta per la stampa, impossibile da falsificare.", + heroDesc2: "Guadagna badge di abilità testimoniati da altri skater. Ottieni pass di accesso ai park. Condividi la tua scheda ovunque.", + headerTagline: "Firmata su Nostr · Pronta per la stampa · Verificata via QR", + tabCard: "La mia scheda", + tabBadges: "Badge", + tabAward: "Assegna", + rendering: "Rendering…", + shareCard: "Condividi scheda", + savePng: "Salva PNG", + print: "Stampa", + copyId: "Copia ID", + cardType: "Tipo di scheda", + licenseLabel: "Skater License", + licenseSub: "La tua identità personale di rider", + parkLabel: "Park Access", + parkSub: "Emetti pass come proprietario di un park", + theme: "Tema", + holoTitle: "Bagliore olografico", + holoDesc: "Effetto foil animato", + cardDetails: "Dettagli della scheda", + skateStyle: "Stile di skate", + ridesFor: "Rappresenta", + ridesForPlaceholder: "Negozio locale…", + sponsors: "Sponsor", + sponsorsPlaceholder: "Brand…", + showOnCard: "Mostra sulla scheda", + zaps: "Zap ⚡", + skills: "Competenze", + selected: "{{count}}/6 selezionate", + goldBadgesHint1: "I badge oro sulla tua scheda provengono da altri skater che ti hanno testimoniato — vedi i", + goldBadgesHint2: ".", + parkOwnersOnly: "Solo proprietari di park.", + parkOwnersDesc: "Emetti questo usando la stessa chiave Nostr che ha pubblicato il tuo annuncio del park. Chiunque può scansionare il QR e verificare la firma on-chain — nessuna autorità centrale necessaria.", + parkDetails: "Dettagli del park", + parkName: "Nome del park", + parkNamePlaceholder: "The Berrics…", + riderName: "Nome del rider", + riderNamePlaceholder: "Nome sulla scheda", + riderNpub: "ID Nostr del rider (npub)", + accessLevel: "Livello di accesso", + validThru: "Valido fino al", + publishToNostr: "Pubblica su Nostr", + badgesIntro: "Questi badge sono stati testimoniati e firmati da altri skater su Nostr. Appaiono come chip oro ⭐ sulla tua scheda.", + earnMore: "Vuoi guadagnarne altri? Skata davanti a qualcuno e chiedigli di testimoniare il tuo trick.", + awardSomeone: "Assegna un badge a qualcun altro", + youSawIt: "L'hai visto accadere", + youSawItDesc: "Firma la prova su Nostr. Diventa parte del suo record permanente — legato crittograficamente alla tua chiave.", + skillsWitnessed: "Competenze a cui hai assistito", + whereSeen: "Dove l'hai visto?", + optional: "(opzionale)", + signingOnNostr: "Firma su Nostr…", + awardBadge: "Assegna badge", + addRiderSkill: "Aggiungi npub del rider + almeno una competenza", + invalidNpub: "npub non valido", + badgeAwarded: "🏅 Badge assegnato!", + badgeSent: "{{skills}} inviate.", + failed: "Non riuscito", + couldNotRender: "Impossibile generare la scheda", + popupBlocked: "Popup bloccato", + popupBlockedDesc: "Consenti i popup per questo sito.", + linkCopied: "🔗 Link copiato!", + enterRiderNpub: "Inserisci l'npub del rider", + parkPublished: "✅ Park Access Card pubblicata!", + publishFailed: "Pubblicazione non riuscita", + noBadges: "Ancora nessun badge. Skata davanti a qualcuno e chiedigli di testimoniare i tuoi trick!", + showMore: "Mostra altri {{count}}", + witnessedBy: "Testimoniato da", + at: "presso", + previewLicense: "Skater License", + previewSince: "Dal {{year}}", + previewEvts: "Evt", + previewScan: "Scansiona per verificare", + previewSkatepark: "Skatepark", + previewAccessPass: "Access Pass", + previewMemberName: "Nome del membro", + previewIssuedBy: "Emesso dal proprietario del park · firmato su Nostr", + previewValidThru: "Valido fino al", + previewNostrVerified: "Verificato su Nostr" + }, + craftFields: { + detailsTitle: "Dettagli aggiuntivi", + deliverables: "Consegnabili", + turnaround: "Tempi di consegna", + surfaces: "Superfici / Muri", + maxSize: "Dimensione massima", + setLength: "Durata del set", + techRider: "Tech Rider", + travel: "Viaggio", + certifications: "Certificazioni", + insurance: "Assicurazione", + permits: "Permessi", + deposit: "Acconto", + minimum: "Minimo", + modalities: "Modalità", + duration: "Durata dell'appuntamento", + drone: "Drone", + leadTime: "Tempi di attesa", + warranty: "Garanzia" + }, + craftForm: { + profileImage: "Immagine profilo", + nameHeadline: "Nome / titolo", + about: "Informazioni", + aboutPlaceholder: "Racconta agli skater del tuo lavoro da {{noun}}…", + required: "obbligatorio", + nip05Title: "Aggiungi NIP-05 per costruire fiducia", + nip05Desc: "Un identificatore NIP-05 aiuta gli skater a verificare che sei autentico. Altamente consigliato prima di elencarti.", + editingNote: "Stai modificando il tuo profilo {{noun}} esistente — pubblicare lo sostituisce.", + location: "Località", + pinned: "📍 Fissato sulla mappa ({{lat}}, {{lng}})", + experienceYears: "Esperienza (anni)", + expPlaceholder: "es. 5", + ratePlaceholder: "es. 20k sats / a progetto", + contactLinks: "Contatto e link", + phoneOptional: "Telefono (opzionale)", + emailOptional: "Email (opzionale)", + socialPlaceholder: "Social (Instagram, ecc.)", + gettingPaid: "Farsi pagare", + updateProfile: "Aggiorna profilo", + publishProfile: "Pubblica profilo", + rateLeftBlankNote: "Opzionale — lascia vuoto se la tariffa sopra è sufficiente.", + sectionRequired: "{{section}} obbligatorio", + sectionRequiredDesc: "Seleziona almeno un'opzione sotto \"{{section}}\".", + updated: "Profilo aggiornato!", + created: "Profilo creato!", + headlineExample: "Skate Coach Berlino" + } + }, + socialUi: { + agentPanel: { + spot: "Spot", + event: "Evento", + labPro: "Lab pro", + gear: "Attrezzatura", + crew: "Crew", + description: "Conosce questa crew — le sue jam, la rosa e la open call — oltre alla scena più ampia con dati in tempo reale.", + greeting: "Yo! Sono Sasquatch, la guida di {{crew}}. Chiedimi della crew — la prossima jam, chi la gestisce, cosa cerchiamo — o della scena più ampia.", + suggestion1: "Qual è la nostra prossima jam?", + suggestion2: "Chi gestisce questa crew?", + suggestion3: "Cosa stiamo cercando?", + suggestion4: "I migliori spot vicino a noi?", + suggestion5: "Che tempo fa per skatare?", + thinking: "Sasquatch sta pensando…", + placeholder: "Chiedi della tua scena locale…", + disclaimer: "L'AI può sbagliare — i link portano ad annunci reali." + }, + badge: { + upcomingOne: "{{count}} evento in programma", + upcomingMany: "{{count}} eventi in programma", + comingOne: "{{count}} evento in arrivo", + comingMany: "{{count}} eventi in arrivo" + }, + bell: { + youAreIn: "Sei in {{crew}}! 🛹", + membershipConfirmed: "Iscrizione confermata.", + couldNotConfirm: "Impossibile confermare", + addedYouTo: "ti ha aggiunto a", + confirmToAppear: "Conferma per apparire come membro.", + notifications: "Notifiche", + notificationsNew: "Notifiche ({{count}} nuove)", + unreadCount: "{{count}} notifiche non lette", + markRead: "Segna come lette", + allClear: "Tutto a posto", + tabAll: "Tutte", + tabTrades: "Scambi", + tabSocial: "Social", + tabNews: "Notizie", + tabCrews: "Crew", + checkingUpdates: "Controllo aggiornamenti…", + checkingTrades: "Controllo offerte e scambi…", + loadingDrops: "Caricamento delle ultime novità…", + emptyAll: "Offerte, scambi, zap, risposte, novità della newsletter e attività delle crew appariranno qui.", + emptyTrades: "Offerte, controfferte e conferme di scambio arrivano tutte qui — che tu stia vendendo, comprando o scambiando.", + emptySocial: "Zap, reazioni, repost, menzioni, risposte, RSVP agli eventi e aggiornamenti degli host arrivano tutti qui.", + emptyNews: "Le novità della newsletter di SkateSpots arriveranno qui. Iscriviti nella pagina Newsletter.", + emptyCrews: "Inviti alle crew, richieste di collettivi e richieste di iscrizione appariranno qui.", + subscribeBanner: "Iscriviti per ricevere le nuove novità nel tuo campanello", + read: "Letto", + allCaughtUp: "Sei in pari" + }, + chat: { + hidden: "Nascosto", + hideMessageAria: "Nascondi questo messaggio", + hideMessageTitle: "Nascondi messaggio (admin)", + messageHidden: "Messaggio nascosto", + messageHiddenDesc: "Nascosto dalla chat della crew per tutti.", + messageHideFailed: "Impossibile nascondere il messaggio", + encryptionUnavailable: "Crittografia non disponibile", + encryptionUnavailableDesc: "Il tuo signer non supporta la crittografia NIP-44. Aggiorna la tua estensione.", + messageFailed: "Messaggio non riuscito", + couldNotSend: "Impossibile inviare il messaggio.", + noOneToMessage: "Ancora nessuno a cui scrivere", + noOneToMessageDesc: "Questa crew non ha altri membri con cui chattare.", + subject: "Chat della crew {{crew}}", + title: "Chat della crew", + cordnBadgeTitle: "Instradato tramite il coordinatore Cordn di questa crew su ContextVM. Crittografia end-to-end.", + private: "Privata", + privateBadgeTitle: "Crittografia end-to-end — solo i membri della crew possono leggere questi messaggi.", + encryptedCordn: "Crittografato e instradato tramite il coordinatore della crew (Cordn) — nessun messaggio passa dai relay pubblici.", + encryptedNip17: "Chat di gruppo crittografata per il fondatore e tutti i membri elencati della crew.", + moderatorNote: " Puoi nascondere i messaggi dalla crew come moderatore.", + loginToSee: "Accedi per vedere se puoi unirti alla chat della crew.", + membersOnly: "Questa chat è privata per i membri della crew. Chiedi al fondatore di aggiungerti alla crew per partecipare alla conversazione.", + noMessages: "Ancora nessun messaggio. Dai il via alla chat della crew — pianifica una sessione, condividi uno spot, esalta una clip.", + newMessages: "Nuovi messaggi", + new: "Nuovo", + placeholder: "Scrivi alla tua crew…", + sendAria: "Invia messaggio" + }, + collectiveJoinRequest: { + addedTitle: "Aggiunto {{name}} a {{collective}} 🛹", + addedDesc: "Confermerà dal suo lato per apparire come membro verificato.", + couldNotAdd: "Impossibile aggiungere il membro", + couldNotDismiss: "Impossibile ignorare", + addedDone: "Aggiunto", + addedTo: "a", + dismissedDone: "Richiesta ignorata da {{name}}", + wantsToJoin: "vuole unirsi", + alreadyOnRoster: "Già nella rosa", + openCollective: "Apri collettivo", + dismiss: "Ignora", + addToCollective: "Aggiungi al collettivo" + }, + collectiveMembers: { + confirmed: "Confermato", + pending: "In attesa", + pendingTooltip: "Elencato dal collettivo — in attesa della conferma di questo membro.", + crewOnly: "Solo crew", + crewOnlyTooltip: "Questo membro ha scelto di essere visibile solo ai compagni di crew. Puoi vederlo perché sei nella crew.", + hiddenMember: "Membro nascosto", + title: "Membri", + verifiedOf: "{{confirmed}} di {{total}} verificati — ogni membro confermato ha firmato con la propria chiave Nostr.", + verifiedPerMember: "L'iscrizione è verificata per ogni membro. Ogni membro conferma con la propria chiave Nostr.", + adminsOne: "{{count}} admin aiuta a gestire la crew.", + adminsMany: "{{count}} admin aiutano a gestire la crew." + }, + confirmMembership: { + public: "Pubblico", + crewOnly: "Solo crew", + confirmedTitle: "Iscrizione confermata!", + confirmedCrew: "Sei verificato in {{name}} — visibile solo ai compagni di crew.", + confirmedPublic: "Ora appari come membro verificato di {{name}}.", + failed: "Conferma non riuscita", + addedTo: "Sei stato aggiunto a {{name}}", + addedDesc: "Conferma la tua iscrizione così appare come verificata sul tuo profilo e sul loro.", + yourVisibility: "La tua visibilità", + confirming: "Conferma…", + confirmButton: "Conferma iscrizione" + }, + contacts: { + message: "Messaggio", + removePrivate: "Rimuovi dai contatti privati", + savePrivate: "Salva nei contatti privati", + seoTitle: "Contatti - SkateSpots", + seoDescription: "La tua scena — compagni di crew, persone che segui e conversazioni recenti, con contatti privati crittografati.", + encryptionUnavailableDesc: "Il tuo signer non supporta la crittografia NIP-44.", + removed: "Rimosso dai contatti privati", + saved: "Salvato nei contatti privati", + savedDesc: "Solo tu puoi vedere questa lista.", + updateFailed: "Impossibile aggiornare i contatti", + loginTitle: "La tua scena, in un unico posto", + loginDesc: "Accedi per vedere i tuoi compagni di crew, le persone che segui e le conversazioni recenti — e mantenere una lista di contatti privata e crittografata.", + title: "Contatti", + subtitle: "La tua scena — compagni di crew, seguiti e conversazioni", + filterPlaceholder: "Filtra per npub…", + tabCrew: "Crew", + tabFollows: "Seguiti", + tabDms: "DM", + tabSaved: "Salvati", + emptyCrewmates: "Ancora nessun compagno di crew. Unisciti o avvia una crew per costruire la tua rete.", + emptyFollowing: "Non segui ancora nessuno.", + emptyDms: "Ancora nessuna conversazione. Scrivi a uno skater per iniziarne una.", + savedHint: "Questa lista è crittografata con la tua chiave — solo tu puoi leggerla. Tocca la stella su chiunque per aggiungerlo.", + emptySaved: "Ancora nessun contatto salvato. Metti una stella alle persone da qualsiasi scheda per costruire la tua rubrica privata." + }, + conversation: { + unknown: "Sconosciuto", + seoTitle: "Chat con {{name}} - SkateSpots", + seoDescription: "Conversazione privata crittografata", + sendFailed: "Invio del messaggio non riuscito", + sendFailedDesc: "Riprova tra un momento.", + tradeConfirmed: "Scambio confermato", + tradeConfirmedDesc: "Reputazione aggiornata per entrambi.", + tradeConfirmFailed: "Impossibile confermare lo scambio", + somethingWrong: "Qualcosa è andato storto.", + soldNote: "Venduto a {{name}}.", + saleConfirmed: "Vendita confermata", + saleConfirmedDesc: "{{name}} può ora confermare il suo lato.", + saleConfirmFailed: "Impossibile confermare la vendita", + escrowRedeemed: "Escrow riscattato", + escrowRedeemedDesc: "I fondi sono ora nel tuo wallet Cashu.", + escrowRedeemFailed: "Impossibile riscattare l'escrow", + loginTitle: "Accedi per vedere i messaggi", + secureLoginTitle: "Accesso sicuro richiesto", + secureLoginDesc: "I messaggi richiedono un'app signer sicura.", + encrypted: "Crittografato", + refresh: "Aggiorna", + didCompleteTrade: "Hai completato questo scambio?", + recordedSale: "{{name}} ha registrato la vendita. Conferma per aggiornare la reputazione di entrambi.", + confirm: "Conferma", + confirmSale: "Confermare questa vendita?", + askedToRecord: "{{name}} ti ha chiesto di registrarla. Confermare costruisce reputazione per entrambi.", + confirmSaleButton: "Conferma vendita", + redeemEscrow: "Riscatta escrow", + escrowAppOnly: "L'escrow Cashu è solo in-app — apri SkateSpots sul tuo telefono per riscattare.", + startThread: "Invia un messaggio per iniziare la conversazione", + placeholder: "Scrivi un messaggio...", + e2eeNote: "I messaggi sono crittografati end-to-end con NIP-17" + }, + coordinator: { + secondsAgo: "{{count}}s fa", + minutesAgo: "{{count}}m fa", + hoursAgo: "{{count}}h fa", + daysAgo: "{{count}}g fa", + statusIdle: "Non verificato", + statusChecking: "Verifica…", + statusOnline: "Connesso", + statusStale: "Silenzioso", + statusOffline: "Non visto", + statusError: "Irraggiungibile", + notACoordinator: "Non è un coordinatore", + notACoordinatorDesc: "Incolla un nprofile, un npub o un link cordn.net.", + added: "Coordinatore aggiunto", + relayOne: "{{count}} relay", + relayMany: "{{count}} relay", + lastSeen: "visto l'ultima volta {{time}}", + onlineDesc: "Si sta annunciando. I gruppi che lo usano possono consegnare messaggi ora.", + staleDesc: "Trovato, ma non si annuncia di recente — potrebbe essere inattivo.", + offlineDesc: "Nessun annuncio visto. Potrebbe essere privato (va bene), o semplicemente offline.", + errorDesc: "Impossibile raggiungere i relay.", + idleDesc: "Verifica…", + checkingDesc: "Cerco il suo annuncio…", + eventFoundOne: "{{count}} evento trovato.", + eventFoundMany: "{{count}} eventi trovati.", + check: "Verifica", + addLinkCopied: "Link di aggiunta copiato", + copyFailed: "Copia non riuscita", + copyManually: "Copialo manualmente.", + addLink: "Aggiungi link", + removeConfirm: "Rimuovere questo coordinatore da questo dispositivo?", + scanToJoin: "Scansiona in Cordn per unirti a questo coordinatore.", + noCoordinator: "Ancora nessun coordinatore", + noCoordinatorDescA: "Un coordinatore consegna i messaggi di gruppo", + encryptedWord: "crittografati", + noCoordinatorDescB: "della tua crew in ordine. Vede chi, quando e quale gruppo — mai i contenuti. Scegline uno, o gestisci il tuo.", + change: "Cambia coordinatore", + addTitle: "Aggiungi un coordinatore", + add: "Aggiungi", + scanQR: "Scansiona un QR coordinatore", + inputPlaceholder: "nprofile… o un link cordn.net", + runOwn: "Gestisci il tuo", + runOwnDesc: "Può vivere su un vecchio telefono, un Raspberry Pi o qualsiasi piccolo dispositivo che lasci acceso. Il tuo gruppo continua a funzionare finché è attivo — e puoi spostare il gruppo quando vuoi.", + onPhone: "Su un telefono", + onPhoneDesc: "Usa l'app Cordn Coordinator, poi scansiona il suo QR qui per aggiungerlo.", + openCordn: "Apri Cordn", + scanItsQR: "Scansiona il suo QR", + onServer: "Su un server", + commandCopied: "Comando copiato", + copyCommand: "Copia comando", + androidSleep: "Android potrebbe sospendere un coordinatore su telefono. Aspettati di spostare un gruppo ogni tanto.", + privacyNote: "🔒 Un coordinatore vede solo ciphertext e metadati — mai i contenuti dei messaggi. Gestisci il tuo per mantenere tuoi anche i metadati.", + customTitle: "Coordinatore chat personalizzato", + customBadge: "· sperimentale · il tuo relay", + customDescShort: "Opzionale — la tua crew ha già la chat crittografata end-to-end integrata, quindi non ti serve. Impostalo solo se gestisci il tuo", + remove: "Rimuovi", + pointerNote: "Solo un puntatore per ora: un endpoint wss:// viene usato come relay chat della crew; uno https:// tramite il relay ContextVM condiviso. Il vero MLS di Cordn non è ancora collegato.", + cordnCoordinator: "Coordinatore Cordn", + invalid: "Non sembra un coordinatore. Incolla un nprofile, un link cordn.net o un URL https/wss.", + useMine: "Usa il mio coordinatore" + }, + createCrew: { + seoTitle: "Crea una Crew - SkateSpots", + seoDescription: "Crea la tua crew di skate — territorio di casa, membri e spot.", + loginRequired: "Accesso richiesto", + loginRequiredDesc: "Devi accedere per creare una crew.", + backToCrews: "Torna alle Crew", + title: "Crea una Crew", + intro: "La tua famiglia di skate — le persone con cui skati. Basta un nome per iniziare; tutto il resto è opzionale." + }, + crew: { + seoTitleNamed: "{{name}} - Crew SkateSpots", + seoTitle: "Crew - SkateSpots", + seoDescription: "Una crew di skate su SkateSpots.", + postHidden: "Post nascosto", + postHiddenDesc: "Rimosso dal feed della crew per tutti.", + postHideFailed: "Impossibile nascondere il post", + backToCrews: "Torna alle Crew", + disband: "Sciogli", + youAreCaptain: "Sei un capitano", + member: "Membro", + askSasquatch: "Chiedi a Sasquatch", + agent: "Agente della crew", + agentDesc: "La guida AI della tua crew — spot, eventi, coach e attrezzatura nelle vicinanze, con dati in tempo reale.", + eventsTab: "Eventi", + chatTab: "Chat", + newMessages: "Nuovi messaggi", + hostJam: "Ospita una jam", + noEvents: "Ancora nessun evento della crew. Ospita una jam, una gara o un meetup come crew — collega la tua crew al calendario eventi e permette alle persone di zapparlo.", + support: "Supporta", + zapCrew: "Zappa la Crew", + bandTitle: "Band della Crew", + bandTagline: "Musica dal vivo · skate e suono", + listenTitle: "Ascolta: {{domain}}", + listen: "Ascolta i brani", + setUpGig: "Organizza un concerto", + bookGigMessage: "Ehi {{crew}} — interessati a prenotare {{band}} per un concerto. Siete disponibili per parlare delle date?", + messageAboutGig: "Messaggio per un concerto", + gigHintA: "aggiunge un evento musicale al calendario ospitato da questa crew.", + messageShort: "Messaggio", + gigHintB: "apre un DM crittografato alla crew per definire date e dettagli.", + homeSpots: "Spot di casa", + viewSpot: "Vedi spot", + seeOnMap: "Vedi sulla mappa →", + founderLinks: "Fondatore e link", + startedBy: "Avviata da {{name}}", + opens: "Apre: {{domain}}" + }, + crews: { + seoTitle: "Crew - SkateSpots", + seoDescription: "Trova la tua gente. Scopri crew di skate, collettivi e community locali vicino a te.", + videoPartTooltip: "Questa crew ha una part video", + part: "Part", + bandTooltip: "Band della crew: {{name}}", + band: "Band", + focusAll: "Tutti", + focusAllShort: "Tutti", + focusDiy: "DIY", + focusPhoto: "Foto", + focusCoaching: "Coaching", + focusArt: "Arte", + focusMusic: "Musica", + focusPhysio: "Fisioterapia", + focusMixed: "Misto", + title: "Crew", + heroLine: "La tua famiglia di skate ancorata alla mappa — le persone con cui skati", + heroWith: "con", + heroRest: ", non quelle che assumi (quello è The Lab).", + crewCountOne: "{{count}} crew", + crewCountMany: "{{count}} crew", + cityCountOne: "{{count}} città", + cityCountMany: "{{count}} città", + createCrew: "Crea Crew", + create: "Crea", + searchPlaceholder: "Cerca crew per nome o città…", + filterTitle: "Filtra crew", + filterDesc: "Cosa interessa alla crew.", + nearMe: "Vicino a me", + emptySearchTitle: "Nessuna crew corrisponde alla tua ricerca", + emptySearchHint: "Nessun risultato per «{{query}}». Prova un altro nome o città.", + clearSearch: "Cancella ricerca", + emptyFocusTitle: "Ancora nessuna crew {{label}}", + emptyFocusHint: "Nessuno sventola ancora la bandiera «{{label}}» qui. Mostra tutte le crew, o avvia questa tu stesso.", + showAll: "Mostra tutte le crew", + claimTitle: "Rivendica la tua scena locale", + claimHint: "Ancora nessuna crew piantata qui. Sii il primo — avvia la tua crew, collega i tuoi spot di casa e metti la tua scena sulla mappa per tutti." + }, + crewCoordinator: { + privateChat: "Chat privata della crew", + on: "Attiva", + defaultA: "La scheda", + chatWord: "Chat", + defaultB: "è", + e2ee: "crittografata end-to-end", + defaultC: "per il fondatore e tutti i membri elencati — nulla da configurare. I messaggi sono sigillati con la chiave di ogni membro (NIP-17), quindi solo la tua crew può leggerli.", + advancedA: "Avanzato: gestisci il tuo", + cordnCoordinator: "coordinatore Cordn", + routeThrough: "Instrada la chat attraverso di esso", + coordinator: "Coordinatore", + deliveredOver: "Consegnato tramite", + sharedRelay: "— il relay ContextVM condiviso.", + ownRelay: "— il relay della tua crew.", + chatLive: "La chat privata è attiva", + routesA: "La scheda", + routesB: "instrada attraverso questo coordinatore: i messaggi sono crittografati end-to-end (NIP-44, sigillati a ogni membro), quindi gestisce solo traffico sigillato.", + publicWarning: "Attenzione: è indirizzato sul relay ContextVM condiviso, quindi il ciphertext e i suoi metadati (quale crew e quando) sono pubblicamente visibili — ma non leggibili. Punta la crew a un relay wss:// privato per mantenere privato anche questo.", + ownRelaySafe: "Niente di specifico della crew lascia il relay della tua crew.", + manage: "Gestisci coordinatore", + open: "Apri {{domain}}", + runBy: "Coordinatore gestito da" + }, + dms: { + securityReminder: "Promemoria di sicurezza", + phishingStrong: "SkateSpots non ti scriverà mai in DM", + phishingRest: "chiedendoti di verificare il tuo account, condividere le tue chiavi o inviare pagamenti. Se qualcuno dice di essere il supporto di SkateSpots via DM — è una truffa.", + dismissReminder: "Ignora promemoria di sicurezza", + peopleCount: "{{count}} persone", + youPrefix: "Tu: ", + unreadMessages: "Messaggi non letti", + seoTitle: "Messaggi - SkateSpots", + seoDescription: "Messaggi privati crittografati con la community dello skateboard", + loginTitle: "Accedi per accedere ai messaggi", + loginDesc: "Messaggistica privata e crittografata con gli skater della community", + secureLoginTitle: "Accesso sicuro richiesto", + secureLoginDesc: "I messaggi privati richiedono un'app signer sicura per crittografare le conversazioni.", + onAndroid: "Su Android:", + useAmber: "Usa l'app Amber", + getAmber: "Scarica Amber →", + onIOS: "Su iOS:", + iosHint: "Prova ad accedere con una connessione bunker (nsec.app) dalle Impostazioni", + browserHint: "Prova ad accedere con un'estensione browser come Alby o nos2x che supporti la crittografia.", + title: "Messaggi", + subtitleFull: "Crittografati end-to-end con NIP-17", + subtitleShort: "Crittografati", + newMessage: "Nuovo messaggio", + groups: "Gruppi", + loadFailed: "Impossibile caricare i messaggi", + emptyTitle: "Ancora nessun messaggio", + emptyDesc: "Inizia una conversazione con qualcuno nella community", + startConversation: "Inizia una conversazione", + undecryptableOne: "{{count}} messaggio crittografato non è stato aperto dal tuo signer.", + undecryptableMany: "{{count}} messaggi crittografati non sono stati aperti dal tuo signer." + }, + editCrew: { + seoTitleNamed: "Modifica {{name}} - SkateSpots", + seoTitle: "Modifica Crew - SkateSpots", + seoDescription: "Modifica la tua crew di skate.", + loginRequired: "Accesso richiesto", + notYours: "Non è la tua crew", + notYoursDesc: "Solo il fondatore della crew può modificare questa crew.", + backToCrew: "Torna alla Crew", + title: "Modifica Crew" + }, + form: { + add: "Aggiungi", + added: "Aggiunto", + addNameInBasicsA: "Aggiungi un nome alla crew in", + addNameInBasicsB: "per finire.", + adminsDescA: "Rendi membri fidati", + adminsWord: "admin", + adminsDescB: "— possono invitare membri e moderare il feed e la chat della crew con le proprie chiavi. Tu (il fondatore) resti sempre il proprietario dell'identità della crew.", + agentDescA: "Aggiungi", + agentDescB: ", una guida AI che conosce davvero la tua crew. I membri possono chiedere di", + agentDescC: "— più spot, eventi, coach e attrezzatura nelle vicinanze dai dati live di SkateSpots. Funziona direttamente nel browser; nessuna chiave o configurazione. È agli inizi (AI free-tier, quindi a volte lenta).", + agentDescStrong: "la tua prossima jam, chi gestisce la crew, cosa cercate e la vostra vibe", + agentEnabledNote: "Sasquatch apparirà sulla tua pagina della crew dopo che salvi.", + bandDesc: "Hai una band? La scena dello skate e la musica locale vanno a braccetto — inserisci il nome della tua band e un link ai brani.", + bandFooterA: "Per un profilo band completo (generi, strumenti, concerti), crea un", + musicianWord: "Musicista", + bandFooterB: "in The Lab, poi collegalo nella sezione", + linkedLabWord: "Profili Lab collegati", + bandFooterC: "qui sopra.", + bandMusicWord: "Band e musica", + bandName: "Nome della band", + bandNamePlaceholder: "es. The Bail Outs", + bandNudgeA: "Hai una band — tocca per impostare il tuo", + crewTypeWord: "Tipo di crew", + bandNudgeB: "su", + bandNudgeC: "così appari anche nella scena Musica di The Lab.", + beta: "Beta", + bioLabel: "Informazioni / Manifesto", + bioPlaceholder: "Chi sei, cosa skati, la tua storia...", + continue: "Continua", + crewCreated: "Crew creata!", + crewUpdated: "Crew aggiornata!", + crewName: "Nome della crew", + crewOnlyWord: "Solo crew", + crewType: "Tipo di crew", + crewTypeDescA: "La tua crew è incentrata su un mestiere? Scegline uno per apparire anche in quella scena in", + theLab: "The Lab", + crewTypeDescB: ". Le crew di skate normali restano", + mixedWord: "Miste", + crewTypeDescC: ".", + customVibeHint: "Aggiungi una tua vibe o focus con un #", + customVibePlaceholder: "es. downhill, night-sessions, no-comply", + editDesc: "L'identità della tua crew, il territorio di casa e i membri", + enableAgent: "Attiva l'agente della crew", + enableTreasury: "Attiva la tesoreria della crew", + failed: "Non riuscito", + founded: "Fondata (anno)", + geolocationUnsupported: "Geolocalizzazione non supportata", + gettingLocation: "Recupero...", + goalHint: "Assicurati che il tuo profilo Nostr abbia un indirizzo Lightning (lud16) così i contributi possono arrivare.", + goalPlaceholder: "es. Cementare lo spot DIY", + goalTarget: "Obiettivo (sats)", + goalWhat: "Qual è l'obiettivo?", + homeSpots: "Spot di casa", + homeSpotsDesc: "Collega gli spot che la tua crew frequenta — si collegheranno alla tua crew sulla mappa", + homeTurf: "Territorio di casa (città / zona)", + homeTurfPlaceholder: "Bristol, UK", + instagramDetected: "Clip Instagram rilevata", + invalidMember: "Inserisci un npub, nprofile o pubkey hex valido.", + latitude: "Latitudine", + leaveBlankLocation: "Lascia vuoto per mantenere l'attuale posizione del territorio di casa.", + links: "Link", + locationError: "Errore di localizzazione", + locationFound: "Località trovata", + logoAlt: "Crew", + logoHint: "Un logo rende la tua crew immediatamente riconoscibile sulla mappa e nei feed. Il formato quadrato funziona meglio.", + logoLabel: "Logo / Foto della crew", + logoUploaded: "Logo caricato", + longitude: "Longitudine", + looksGood: "Sembra a posto", + makeAdmin: "Rendi admin", + mapPin: "Segnaposto sulla mappa", + mapPinHint: "Posiziona la tua crew sulla mappa così i locali possono trovarti. Tocca il pulsante — nessuna digitazione necessaria.", + memberAlreadyAdded: "Quel membro è già aggiunto.", + members: "Membri", + membersDesc: "Aggiungi gli account Nostr della tua crew. Ogni membro conferma con la propria chiave — fino ad allora appare come «in attesa».", + musicLink: "Link musicale", + nameCrew: "Dai un nome alla tua crew", + nameCrewDesc: "Una crew ha bisogno di un nome prima di continuare.", + nameCrewFirst: "Prima dai un nome alla tua crew", + nameHint: "L'unica cosa di cui hai davvero bisogno. Puoi cambiarlo dopo.", + namePlaceholder: "es. Backyard Bandits", + nameRequired: "Nome richiesto", + nameRequiredDesc: "Dai un nome alla tua crew.", + nip05DescA: "Un handle verificabile che controlli su qualsiasi dominio, es.", + nip05DescB: ". È verificato rispetto alla chiave del fondatore di questa crew, e puoi aggiungerne diversi — ognuno mostra una spunta verde quando il suo dominio lo conferma.", + nip05Label: "NIP-05 della crew", + nip05Placeholder: "crew@tuodominio.com", + nip05Add: "Aggiungi", + nip05Invalid: "Inserisci un handle come crew@tuodominio.com", + nip05TooMany: "Puoi aggiungere fino a {{count}} handle.", + nip05Unverified: "Non verificato", + nip05Remove: "Rimuovi {{handle}}", + notAKeyA: "Non sembra ancora una chiave Nostr — incolla un", + notAKeyB: ",", + notAKeyC: "o una pubkey hex.", + onlyYouTubeInstagram: "Sono supportati solo i link YouTube e Instagram.", + openCall: "Open Call", + openCallDescA: "Cerchi un filmer, un editor o nuove leve? Lancia un appello — appare sulla pagina della tua crew così le persone giuste da", + openCallDescB: "possono farsi avanti.", + optional: "· opzionale", + optionalParen: "(opzionale)", + otherSocials: "Altri social", + otherSocialsDesc: "Aggiungine quanti vuoi — YouTube, TikTok, Discord, Telegram, ecc.", + ownVisibility: "propria visibilità", + progress: "Progresso", + publicWord: "Pubblico", + publishedToScene: "Pubblicato sulla scena.", + publishFailed: "Pubblicazione non riuscita", + publishing: "Pubblicazione...", + ready: "Pronto", + readyToRollA: "Pronto a partire — premi", + readyToRollB: "quando vuoi.", + removeAdminRole: "Rimuovi ruolo admin", + removeMember: "Rimuovi membro", + removeSocial: "Rimuovi link social", + removeVibe: "Rimuovi {{vibe}}", + roles: "Ruoli:", + sasquatch: "Sasquatch", + saveCrew: "Salva crew", + skipToEnd: "Salta alla fine", + socialPlaceholder: "@username o link", + sponsorDesc: "Se un negozio locale sostiene la tua crew, scegliilo qui per mostrare un banner «Offerto da» che rimanda al suo negozio.", + stepAria: "Passo {{step}}: {{title}}", + stepBasics: "Le basi", + stepBasicsShort: "Basi", + stepBasicsHint: "Solo l'essenziale — puoi avviare una crew con solo questo passo.", + stepVibe: "Identità e vibe", + stepVibeShort: "Vibe", + stepVibeHint: "Come la tua crew appare nell'app. Tutto opzionale.", + stepSquad: "Squadra e spot", + stepSquadShort: "Squadra", + stepSquadHint: "Aggiungi le tue persone e il tuo territorio di casa. Puoi sempre farlo dopo.", + stepExtras: "Extra", + stepExtrasShort: "Extra", + stepExtrasHint: "Potenziamenti per dopo — salta tutto ciò di cui non sei sicuro.", + extrasAllOptional: "Tutto in questo passo è opzionale.", + groupIdentity: "Identità", + groupIdentityHint: "Handle, link", + groupAi: "Sasquatch AI", + groupShowcase: "Vetrina", + groupPayments: "Pagamenti e tesoreria", + groupIntegrations: "Integrazioni", + groupAdvanced: "Avanzato", + groupAdvancedHint: "sperimentale", + pro: "Pro", + agentProNote: "Offerto da Sasquatch. Pro ottiene i modelli migliori; senza Pro usa un fallback gratuito.", + stepOf: "Passo {{step}} di {{total}}", + treasuryDescA: "Raccogli sats per un obiettivo condiviso — sistemare lo spot DIY locale, un viaggio della crew, un montepremi per una gara. È un obiettivo Lightning trasparente; gli zap vanno", + treasuryDescStrong: "direttamente al tuo wallet", + treasuryDescB: "(tramite l'indirizzo Lightning del tuo profilo). SkateSpots non detiene mai i fondi.", + upload: "Carica", + uploadFailed: "Caricamento non riuscito", + useCurrentLocation: "Usa posizione attuale", + vibeLabel: "Vibe / Focus", + videoDescA: "La part completa della tua crew, un montaggio o la clip più recente. Incolla un link", + videoDescB: "— verrà riprodotto direttamente sulla pagina della tua crew.", + visibilityDescA: "Ogni membro controlla la propria", + visibilityDescB: "— quando confermano con la loro chiave possono scegliere", + visibilityDescC: "— nascosto agli estranei). Non puoi impostarlo per loro; è una loro scelta.", + website: "Sito web", + yourRoles: "I tuoi ruoli (Team Leader)", + youtubeDetected: "Video YouTube rilevato", + invalidUrl: "Inserisci un link valido (es. https://example.com)." + }, + groupConversation: { + seoTitle: "Chat di gruppo - SkateSpots", + invalidLink: "Questo link alla chat di gruppo non è valido.", + loginTitle: "Accedi per vedere questo gruppo", + secureSignerTitle: "Signer sicuro richiesto", + secureSignerDesc: "I messaggi di gruppo richiedono un signer compatibile con NIP-44.", + encryptedGroup: "Gruppo crittografato end-to-end", + empty: "Ancora nessun messaggio — saluta il gruppo.", + placeholder: "Scrivi al gruppo..." + }, + hero: { + established: "Fondata nel {{year}}", + teamLeader: "Team leader: {{name}}", + ledBy: "Guidata da" + }, + inviteCard: { + acceptedTitle: "Invito accettato 🛹", + acceptedDesc: "Il fondatore della crew conferma i membri su {{crew}}. Apparirai nella rosa una volta approvato.", + couldNotAccept: "Impossibile accettare", + couldNotDecline: "Impossibile rifiutare", + acceptedDone: "Accettato —", + confirmsMembers: "conferma i membri", + declinedDone: "Invito a {{crew}} rifiutato", + invitedYou: "ti ha invitato a unirti", + admin: "Admin", + accept: "Accetta", + decline: "Rifiuta" + }, + inviteDialog: { + messageIntro: "Yo — unisciti alla crew {{crew}} su SkateSpots 🛹", + messageBody: "Accedi con la tua chiave Nostr, poi richiedi di unirti dalla pagina della crew.", + copyFailed: "Copia non riuscita", + shareTitle: "Unisciti a {{crew}}", + sentTitle: "Invito inviato! 🛹", + sentDesc: "Riceverà una notifica per accettare o rifiutare.", + couldNotSend: "Impossibile inviare l'invito", + trigger: "Invita", + title: "Invita a {{crew}}", + description: "Invia un invito alla chiave Nostr di qualcuno, o condividi un link.", + sendTab: "Invia invito", + shareTab: "Condividi link", + npubLabel: "npub dello skater", + invalidNpub: "Non sembra un npub valido.", + noteLabel: "Nota", + optional: "(opzionale)", + notePlaceholder: "Vieni a skatare con noi…", + inviteAsAdmin: "Invita come admin", + inviteAsAdminDesc: "Può gestire la crew e invitare altri.", + sendButton: "Invia invito", + sendFooter: "Riceverà una notifica per accettare o rifiutare. L'iscrizione conta solo quando accetta.", + inviteLink: "Link d'invito", + messageLabel: "Messaggio", + copyMessage: "Copia messaggio", + founderHint: "Come fondatore puoi anche aggiungere direttamente la chiave di un membro, poi lui conferma.", + addMemberSettings: "Aggiungi membro nelle impostazioni della crew" + }, + joinRequest: { + moreCount: "+{{count}} altri", + addedTitle: "Aggiunto {{name}} a {{crew}} 🛹", + addedDesc: "Confermerà dal suo lato per apparire come membro.", + vouchedTitle: "Hai garantito per {{name}} 🤝", + vouchedDesc: "Il fondatore di {{crew}} vedrà la tua approvazione e potrà aggiungerlo.", + couldNotEndorse: "Impossibile approvare", + endorsedDoneA: "Hai garantito per", + endorsedDoneB: "— il fondatore confermerà", + vouchedBy: "Garantito da", + approveAndAdd: "Approva e aggiungi", + addToCrew: "Aggiungi alla crew", + vouchedWaiting: "Garantito — in attesa del fondatore", + vouchForThem: "Garantisci per loro", + leadershipOnly: "Solo la leadership della crew.", + adminHelp: "Gli admin non possono aggiungere membri direttamente — garantire dice al fondatore che sostieni questo rider." + }, + leadership: { + teamLeader: "Team Leader", + captain: "Capitano", + verifiedMember: "Membro verificato", + messageName: "Messaggio a {{name}}", + title: "Leadership", + captainsOne: "{{count}} Capitano", + captainsMany: "{{count}} Capitani", + footer: "Il Team Leader gestisce la rosa; i Capitani aiutano a invitare, ospitare jam e mantenere la crew in ordine." + }, + linkField: { + title: "Crew collegata", + description: "Gestisci anche una crew? Collegala così le persone possono saltare tra il tuo studio e la tua crew. Opzionale. Collega questa crew al profilo dall'editor della crew e mostrerà un", + descriptionRest: "badge verde su entrambi.", + none: "Non hai ancora crew. Creane una nella pagina Crew per collegarla qui.", + linkedCrew: "Crew collegata ({{id}})" + }, + lookingFor: { + title: "Open Call", + subtitle: "Questa crew cerca:" + }, + memberVisibility: { + updatedTitle: "Visibilità aggiornata", + updatedCrew: "Ora appari solo ai compagni di crew.", + updatedPublic: "Ora appari pubblicamente in questa crew.", + couldNotUpdate: "Impossibile aggiornare", + title: "La tua visibilità in questa crew", + save: "Salva visibilità" + }, + newMessage: { + inCrew: "Nella tua crew: {{crews}}", + crewmate: "Compagno di crew", + following: "Seguiti", + invalidKey: "Non sembra un npub o una chiave pubblica valida.", + description: "Cerca le tue persone per nome, o incolla un npub per scrivere a chiunque. Seleziona due o più per avviare un gruppo.", + searchPlaceholder: "Cerca nome o incolla npub1...", + messageThisKey: "Scrivi a questa chiave", + loadingPeople: "Caricamento delle tue persone...", + noPeople: "Ancora nessun compagno di crew o seguito.", + noPeopleHint: "Incolla l'npub di qualcuno qui sopra per iniziare una conversazione.", + yourCrews: "Le tue crew", + selected: "{{count}} selezionati", + startGroup: "Avvia gruppo ({{count}})", + message: "Messaggio" + }, + nip05: { + mismatch: "Questo dominio punta l'handle a una chiave Nostr diversa da quella del fondatore della crew. Non verificato.", + verified: "Verificato — il dominio conferma che questo handle appartiene alla chiave del fondatore della crew." + }, + requestCollective: { + sentTitle: "Richiesta inviata 🤝", + sentDesc: "{{name}} la vedrà nelle sue notifiche e potrà aggiungerti.", + couldNotSend: "Impossibile inviare la richiesta", + title: "Unisciti a questo collettivo", + waiting: "Richiesta inviata — in attesa di {{name}}.", + askA: "Chiedi alla crew dietro", + askB: "di aggiungerti alla rosa. Riceverà una notifica e potrà aggiungerti con un tocco.", + placeholder: "Opzionale: spiega perché saresti adatto…", + sendButton: "Invia richiesta" + }, + requestToJoin: { + sentTitle: "Richiesta inviata! 🛹", + sentDesc: "La leadership di {{crew}} la vedrà nelle sue notifiche.", + couldNotSend: "Impossibile inviare la richiesta", + trigger: "Richiedi di unirti", + title: "Unisciti a {{crew}}", + description: "Notifica il fondatore e gli admin della crew così possono aggiungerti.", + placeholder: "Saluta — dove skati, chi conosci, perché vuoi entrare…", + sending: "Invio…", + sendButton: "Invia richiesta di iscrizione" + }, + sponsorBanner: { + loading: "Caricamento sponsor…", + sponsoredBy: "Offerto da" + }, + sponsorPicker: { + selected: "Sponsor selezionato", + setLoading: "Sponsor impostato (caricamento negozio…)", + set: "Sponsor impostato", + clearAria: "Rimuovi sponsor", + searchPlaceholder: "Cerca negozi di skate per nome o città…", + loading: "Caricamento negozi…", + noMatch: "Nessun negozio corrisponde — prova una ricerca diversa.", + none: "Ancora nessun negozio trovato." + }, + treasury: { + title: "Tesoreria della crew", + ofGoal: "dell'obiettivo di {{target}}", + goalReached: "Obiettivo raggiunto!", + funded: "{{percent}}% finanziato", + contributionOne: "{{count}} contributo", + contributionMany: "{{count}} contributi", + daysLeft: "{{days}}g rimasti", + closed: "chiusa", + nonCustodial: "Non-custodial · gli zap vanno direttamente al wallet Lightning della crew" + }, + userStatus: { + atSpot: "📍 A uno spot", + autoClears: "⏱️ Si cancella automaticamente tra {{min}} min" + }, + video: { + title: "La Part", + fullVideo: "Video completo · montaggio", + latestClip: "Ultima clip", + watch: "Guarda", + iframeTitle: "{{crew}} — video", + playAria: "Riproduci il video di {{crew}}", + thumbAlt: "Miniatura del video di {{crew}}", + instagramTitle: "Clip Instagram" + }, + vouch: { + removedTitle: "Garanzia rimossa", + vouchedTitle: "Garantito!", + removedDesc: "Non garantisci più per {{name}}.", + vouchedDesc: "Hai garantito per {{name}}. La scena si fida dei suoi.", + couldNotVouch: "Impossibile garantire", + title: "Garanzie della scena", + sceneVerified: "Verificato dalla scena", + vouched: "Garantito", + newUnvouched: "Nuovo · non garantito", + checking: "Controllo la scena…", + empty: "Ancora nessuna garanzia. Le garanzie degli skater delle tue cerchie sono il miglior segnale che qualcuno è autentico — non un tizio a caso capitato lì.", + countOne: "{{count}} garanzia", + countMany: "{{count}} garanzie", + trusted: "{{count}} da skater nella tua rete di fiducia", + remove: "Rimuovi garanzia", + vouchFor: "Garantisci per {{name}}", + ownerNote: "Gli skater che conoscono il tuo lavoro possono garantire per te qui." + } + } +}; export default itBatch5; diff --git a/src/i18n/it/batch6.ts b/src/i18n/it/batch6.ts index c8a10be..6565ed0 100644 --- a/src/i18n/it/batch6.ts +++ b/src/i18n/it/batch6.ts @@ -1,4 +1,1957 @@ -/** it — batch 6. Filled by the translation pass; empty until then. */ -const itBatch6 = {}; +/** + * it — batch 6: event/shop/tour surfaces (`placesUi`), the marketplace + * (`marketUi`) and Lab option labels (`labOptions`). + * + * Policy: core skate + protocol vocabulary stays English (Spot, Shop, Event, + * Tour, Crew, Gear, Deck, Trucks, Wheels, Bearings, Griptape, Stash, The Lab, + * Nostr, Lightning, Zap, Relay, sats, Marketplace, WTB, escrow, mint, npub, + * CLINK, RSVP, KOTR) plus trick/brand/tool names. Everything else is Italian. + * `{{placeholders}}` are preserved exactly. Missing keys fall back to English. + */ +const itBatch6 = { + placesUi: { + addToCalendar: { + add: 'Aggiungi al calendario', + appleOutlook: 'Apple / Outlook (.ics)', + google: 'Google Calendar', + }, + attendees: { + goingCount: 'partecipano', + goingTab: 'Ci vanno ({{count}})', + interestedTab: 'Interessati ({{count}})', + nobodyGoing: 'Nessuno ha ancora confermato.', + nobodyInterested: 'Nessuno si è ancora segnato come interessato.', + noRsvps: "Ancora nessun RSVP — sii il primo a dire che ci sarai.", + trusted: 'Affidabile', + trustedTitle: 'Qualcuno che segui o un mapper affidabile', + youTrust: 'di cui ti fidi', + }, + bounty: { + addressCoords: 'Indirizzo e coordinate', + basic: 'Base', + contactInfo: 'Informazioni di contatto', + description: 'Descrizione', + earningPotential: 'Potenziale di guadagno', + excellent: 'Eccellente!', + gettingStarted: 'Per iniziare', + good: 'Buono', + onePhoto: 'Almeno 1 foto', + openingHours: 'Orari di apertura', + shopName: 'Nome dello Shop', + threePhotos: '3+ foto', + tip: '💡 Più qualità = più zap dalla community!', + }, + calendar: { + allDay: 'Tutto il giorno', + eventDay: "Giorno dell'evento", + eventsOnDay: '{{count}} eventi', + eventsThisMonth: 'eventi questo mese', + going: 'partecipano', + months: { + january: 'Gennaio', + february: 'Febbraio', + march: 'Marzo', + april: 'Aprile', + may: 'Maggio', + june: 'Giugno', + july: 'Luglio', + august: 'Agosto', + september: 'Settembre', + october: 'Ottobre', + november: 'Novembre', + december: 'Dicembre', + }, + nextMonth: 'Mese successivo', + nothingOnDay: 'Niente in questo giorno.', + prevMonth: 'Mese precedente', + tapHighlighted: "Tocca un giorno evidenziato per vedere cosa c'è.", + today: 'Oggi', + tourDay: 'Giorno del Tour', + toursOnDay: '{{count}} tour', + toursThisMonth: 'tour questo mese', + weekdays: { + sun: 'Dom', + mon: 'Lun', + tue: 'Mar', + wed: 'Mer', + thu: 'Gio', + fri: 'Ven', + sat: 'Sab', + }, + weekdaysShort: { + sun: 'D', + mon: 'L', + tue: 'M', + wed: 'M', + thu: 'G', + fri: 'V', + sat: 'S', + }, + }, + countdown: { + ended: 'Terminato', + happeningNow: 'In corso', + inDays: 'Tra {{count}} giorni', + inHoursMins: 'Tra {{hours}}h {{mins}}m', + inMins: 'Tra {{count}} min', + startingNow: 'Inizia ora', + tomorrow: 'Domani', + }, + createEvent: { + add: 'Aggiungi', + addNewSpot: 'Aggiungi un nuovo spot →', + changeSpot: 'Cambia Spot', + created: 'Evento creato!', + createdDesc: 'Il tuo evento è stato pubblicato sulla rete.', + entryFee: "Quota d'ingresso", + entryFeeHint: '(opzionale — es. "500 sats" o "10 €")', + entryFeePlaceholder: 'Lascia vuoto per eventi gratuiti', + featuring: 'Con {{name}}', + featuringDesc: 'Questo act sarà taggato come musica dal vivo e mostrato nella loro lista concerti.', + fundingGoal: 'Obiettivo di finanziamento', + fundingGoalHint: '(opzionale — sats da raccogliere via zap)', + fundingGoalPlaceholder: 'es. 50000', + geoNotSupported: 'Geolocalizzazione non supportata', + geoNotSupportedDesc: 'Il tuo browser non supporta la geolocalizzazione.', + hideSpots: 'Nascondi gli Spot', + hostingAs: 'Ospiti come {{name}}', + hostingAsDesc: 'Questo evento apparirà sulla pagina della tua crew e sarà taggato come ospitato da una crew.', + imageUploaded: 'Immagine caricata', + imageUploadedDesc: 'La tua immagine è stata caricata correttamente.', + invalidDate: 'Data non valida', + invalidDateDesc: "Inserisci una data e un'ora di inizio valide.", + invalidEnd: 'Ora di fine non valida', + invalidEndDesc: "L'ora di fine deve essere successiva all'ora di inizio.", + linkedTo: 'Collegato a: {{title}}', + linkToSpot: 'Collega a uno Skate Spot', + linkToShop: 'Collega a uno Shop', + selectedShop: 'Collegato a {{name}}', + selectShopHint: 'Opzionale — tenuto o ospitato in uno skate shop.', + selectShop: 'Seleziona shop', + changeShop: 'Cambia shop', + hideShops: 'Nascondi shop', + searchShops: 'Cerca shop…', + noShopsMatch: 'Nessuno shop corrisponde alla ricerca.', + noShopsAvailable: 'Nessuno shop ancora disponibile.', + linkToTour: 'Collega a un Tour (opzionale)', + linkTourDesc: "Collega questo evento a un tour per mostrare che fa parte di una serie più ampia. Perfetto per tour nazionali, avventure internazionali o giornate di sfida del World Destruction Tour.", + loadingSpots: 'Caricamento spot...', + loadingTours: 'Caricamento tour...', + locationError: 'Errore di posizione', + locationFound: 'Posizione trovata', + locationFoundDesc: 'La tua posizione attuale è stata impostata.', + logoUrl: 'URL del logo (opzionale)', + noSpotsAvailable: 'Nessuno spot disponibile', + noSpotsMatch: 'Nessuno spot corrisponde alla ricerca', + noTourLinked: 'Nessun tour collegato', + optional: '(opzionale)', + pastDesc: "Scegli una data e un'ora future così gli skater possono confermare la presenza e presentarsi.", + pastTitle: "Quell'ora di inizio è nel passato", + publishFailed: 'Pubblicazione non riuscita', + publishFeatured: 'Pubblica evento in evidenza', + removeSponsor: 'Rimuovi sponsor', + searchSpots: 'Cerca spot per nome, posizione o categoria...', + selectedSpot: 'Selezionato: {{name}}', + selectSpot: 'Seleziona Spot', + selectSpotHint: "Seleziona dalla mappa uno spot dove si svolge l'evento", + selectTour: 'Seleziona Tour', + somethingWrong: 'Qualcosa è andato storto', + sponsorName: 'Nome dello sponsor', + sponsors: 'Sponsor', + sponsorsHint: 'Hai uno shop o un brand che ti sostiene? Aggiungi il loro logo — apparirà come fascia "Presented by" sull\'evento.', + startRequired: 'Ora di inizio richiesta', + startRequiredDesc: "Inserisci quando inizia l'evento.", + titleRequired: 'Titolo richiesto', + titleRequiredDesc: 'Inserisci un nome per questo evento.', + uploadFailed: 'Caricamento non riuscito', + uploadFailedDesc: "Caricamento dell'immagine non riuscito", + websiteUrl: 'URL del sito web (opzionale)', + }, + createShop: { + address: 'Indirizzo dello Shop', + addressPlaceholder: 'es., 411 N Fairfax Ave, Los Angeles, CA 90036', + addressRequired: 'Indirizzo richiesto', + addressRequiredDesc: "Inserisci l'indirizzo del tuo shop.", + contactHint: 'Aiuta i clienti a contattarti (consigliato almeno un metodo di contatto)', + contactInfo: 'Informazioni di contatto', + created: '🎉 Shop aggiunto!', + createdDesc: 'Il tuo skate shop è ora sulla mappa. Gli skater possono zapparti per ringraziarti!', + descriptionPlaceholder: 'Racconta il tuo shop, cosa vendi, la tua specialità...', + detailsDesc: 'Racconta il tuo shop alla community. Tutti i campi contrassegnati con * sono obbligatori.', + email: 'Email', + hoursOfOperation: 'Orari di apertura', + hoursPlaceholder: 'es., Lun-Sab 10-20, Dom 12-18', + instagram: 'Instagram', + invalidCoords: 'Coordinate non valide', + invalidCoordsDesc: 'Inserisci una latitudine (-90 a 90) e una longitudine (-180 a 180) valide.', + latPlaceholder: 'Latitudine (es., 34.0737)', + lngPlaceholder: 'Longitudine (es., -118.3614)', + locationRequired: 'Posizione richiesta', + locationRequiredDesc: 'Inserisci le coordinate o usa la tua posizione attuale.', + loginToAdd: 'Devi accedere per aggiungere uno skate shop.', + namePlaceholder: 'es., Supreme Los Angeles', + nameRequired: 'Nome dello shop richiesto', + nameRequiredDesc: 'Inserisci un nome per il tuo shop.', + phoneNumber: 'Numero di telefono', + publishFailedDesc: 'Qualcosa è andato storto. Controlla la console per i dettagli.', + shopPhotoAlt: 'Shop', + shopPhotos: 'Foto dello Shop', + subtitle: 'Elenca il tuo shop sulla mappa e connettiti con la community', + upload: 'Carica', + }, + createTour: { + acceptedClipSources: 'Fonti clip accettate', + acceptedClipSourcesDesc: 'Quali formati accetti per le clip inviate?', + accommodationInfo: "Info sull'alloggio", + accommodationPlaceholder: "Consigli o sistemazioni per l'alloggio, es. 'Ostelli economici lungo il percorso', 'Serve attrezzatura da campeggio', 'Airbnb inclusi'", + addChallenge: 'Aggiungi sfida', + addCity: 'Aggiungi una città...', + addCountry: 'Aggiungi un paese...', + addShopFirst: 'Aggiungi prima uno shop', + alsoSelected: 'Anche selezionato:', + availabilityPlaceholder: 'es., Weekend, Solo mattine, Su appuntamento', + availabilityQuestion: 'Quando sei di solito disponibile?', + availableShops: 'Skate Shop disponibili ({{count}})', + challengeDescPlaceholder: 'Descrizione opzionale...', + challenges: 'Sfide', + challengesRequired: 'Sfide richieste', + challengesRequiredDesc: 'Aggiungi almeno una sfida che i team devono completare.', + challengesSecret: 'Tutte le sfide sono SEGRETE fino alla data di inizio. I team non le vedranno fino ad allora!', + challengeTitlePlaceholder: "Titolo della sfida, es. 'Kickflip da 10 scalini'", + citiesLabel: 'Città', + citiesOnTour: 'Città del Tour', + cityPlaceholder: 'es., Berlino, Germania', + cityRegion: 'Città / Regione', + cityRequired: 'Città/regione richiesta', + cityRequiredDesc: 'Inserisci la tua città o regione.', + clipAnyUrl: '🔗 Qualsiasi URL', + clipBlossom: '📦 Caricamento Blossom', + clipInstagram: '📸 Instagram', + clipYouTube: '▶️ YouTube', + competitionDates: 'Date della competizione', + competitionDatesWarning: "⚠️ Tutte le sfide sono SEGRETE fino alla data di inizio! I team non vedranno le sfide fino all'inizio della competizione.", + competitionLocations: 'Luoghi della competizione', + competitionLocationsDesc: 'Dove gareggeranno i team? Aggiungi tutte le città e i paesi coinvolti.', + coordsHint: "Le coordinate sono opzionali. Aggiungile per fissare il punto d'incontro sulla mappa.", + countriesLabel: 'Paesi', + countriesRequired: 'Paesi richiesti', + countriesRequiredDesc: 'Aggiungi almeno un paese per il tuo tour internazionale.', + createdDestruction: '💀 WORLD DESTRUCTION TOUR CREATO!', + createdDestructionDesc: 'I team possono registrarsi. Sfide svelate alla data di inizio!', + createDestructionTour: 'Crea World Destruction Tour', + createdInternational: '✈️ Tour internazionale creato!', + createdInternationalDesc: 'La tua avventura globale è in elenco! Connettiti con skater di tutto il mondo.', + createdLocal: '🏠 Tour locale creato!', + createdLocalDesc: 'Il tuo tour è ora visibile. Gli skater possono prenotare via DM!', + createdNational: '🚐 Tour nazionale creato!', + createdNationalDesc: 'Il tuo viaggio su strada è live! Inizia a coordinarti con gli skater interessati.', + departure: 'Partenza *', + departureRequired: 'Data di partenza richiesta', + departureRequiredDesc: 'Imposta quando parte il viaggio così gli skater possono pianificare e prenotare.', + descriptionPlaceholder: "Descrivi cosa vivranno gli skater: spot che visiterai, atmosfera, cosa rende unico il tuo tour...", + destructionDesc: 'Organizza la tua competizione globale in stile KOTR — decidi TU tutto!', + discountHint: 'I partecipanti al tour possono mostrare la conferma di prenotazione allo shop per ricevere questo sconto', + discountPercentage: 'Percentuale di sconto', + dropTour: 'Pubblica un Tour', + duration: 'Durata', + durationHintDestruction: 'Quanto dura la competizione? (1-12 mesi)', + durationHintInternational: "Quante settimane dura l'avventura? (fino a 2 mesi)", + durationHintLocal: 'Quanto dura il tuo tour tipico?', + durationHintNational: 'Quanti giorni dura il viaggio su strada?', + durationWeeksMonths: '{{weeks}} settimane (~{{months}} mesi)', + editTour: 'Modifica Tour', + enable: 'Abilita', + enabled: 'Abilitato', + endBeforeStart: "Fine prima dell'inizio", + endBeforeStartDesc: 'La data di fine della competizione deve essere uguale o successiva alla data di inizio.', + endDate: 'Data di fine', + entryFeeHint: 'Tieni il 95% • La piattaforma prende il 5% • Lascia vuoto per ingresso gratuito', + entryFeePerTeam: "Quota d'ingresso per team (sats)", + entryFeePlaceholder: 'es., 100000', + entryPrizes: 'Ingresso e premi', + filmPremieres: 'Anteprime dei film dei team', + filmPremieresDesc: 'Dopo la competizione, le clip di ogni team diventano un film completo che può debuttare negli skate shop locali di tutto il mondo.', + filmPremieresInfo: '🎥 I team montano le loro clip delle sfide in un film finale. Gli shop possono ospitare eventi di anteprima, collegando la competizione globale alle comunità locali.', + filmReleaseDate: 'Data di uscita del film (opzionale)', + filmReleaseDateHint: 'Quando i film saranno disponibili. Lascia vuoto per pubblicarli subito dopo la fine della competizione.', + fixedSession: 'Sessione fissa', + fixedSessionDesc: "Una data e un'ora stabilite", + flexible: 'Flessibile', + flexibleDesc: 'Prenota quando vuoi via DM', + hide: 'Nascondi', + howDestruction1: '• Competizione globale a squadre — fino a 12 mesi', + howDestruction2: '• TU definisci sfide, punti, premi — noi forniamo solo la piattaforma', + howDestruction3: '• Tutte le sfide sono SEGRETE fino alla data di inizio', + howDestruction4: '• Clip via caricamento Blossom O link esterni (YouTube, Instagram, qualsiasi URL)', + howDestruction5: '• Solo livello avanzato — tutti i tipi di spot inclusi automaticamente', + howDestruction6: "• La piattaforma prende solo il 5% delle quote d'ingresso (NON del montepremi)", + howDestructionTitle: '💀 WORLD DESTRUCTION TOUR - stile KOTR', + howInternational1: '• Avventure transfrontaliere in più paesi', + howInternational2: '• Sei tu a fissare il prezzo — la piattaforma prende solo il 5%', + howInternational3: '• Imposta date di partenza e ritorno così la crew può prenotare i voli', + howInternational4: '• Connetti skater da tutto il mondo', + howInternational5: '• Crea esperienze globali indimenticabili!', + howInternationalTitle: 'Come funzionano i Tour internazionali', + howItWorks: 'Come funziona:', + howLocal1: '• Sei tu a fissare il prezzo — la piattaforma prende il 10%', + howLocal2: '• Gli spot nascosti restano nascosti — li mostri di persona', + howLocal3: '• Organizza una sessione programmata o mantienila flessibile / su appuntamento', + howLocal4: '• Gli skater prenotano via DM, pagano in Lightning e possono aggiungerla al calendario', + howLocal5: '• Costruisci la tua reputazione con recensioni e zap', + howLocalTitle: 'Come funzionano i Tour locali', + howNational1: '• Viaggi su strada multi-città nel tuo paese', + howNational2: '• Sei tu a fissare il prezzo — la piattaforma prende solo il 7%', + howNational3: '• Imposta le date del viaggio così gli skater possono organizzarsi e viaggiare', + howNational4: '• Includi info su trasporti / alloggio per la crew', + howNational5: '• Costruisci leggendarie avventure sugli skate!', + howNationalTitle: 'Come funzionano i Tour nazionali', + imageUploadedDesc: "L'immagine del tuo tour è stata caricata.", + incompleteCoords: 'Coordinate incomplete', + incompleteCoordsDesc: 'Inserisci sia latitudine che longitudine, oppure lascia entrambe vuote.', + internationalDetails: "Dettagli dell'avventura internazionale", + languagesSelected: '{{count}} selezionate', + languagesSpoken: 'Lingue parlate', + latOptional: 'Latitudine (opzionale)', + lngOptional: 'Longitudine (opzionale)', + loadingProfile: 'Caricamento profilo...', + loadingProfileDesc: 'Verifica del tuo stato di verifica NIP-05.', + loadingShops: 'Caricamento shop...', + localShopPremieres: 'Anteprime negli shop locali', + localShopPremieresDesc: 'Gli skate shop di tutto il mondo possono ospitare serate di proiezione', + loginToCreate: 'Devi accedere per creare un tour.', + maxGroupSize: 'Dimensione massima del gruppo', + maxTeams: 'Team massimi', + maxTeamSize: 'Dimensione massima del team', + meetingLocationSet: "La tua posizione attuale è stata impostata come punto d'incontro.", + meetingPointDesc: "Dove incontrerai i partecipanti al tour? Scegli un posto pubblico e ben noto.", + meetingPointLabel: "Punto d'incontro", + meetingPointPlaceholder: 'es., Stazione Warschauer Straße', + meetingPointRequired: "Punto d'incontro richiesto", + meetingPointRequiredDesc: "Inserisci dove incontrerai i partecipanti al tour.", + minTeamSize: 'Dimensione minima del team', + noChallenges: 'Ancora nessuna sfida', + noChallengesDesc: 'Aggiungi sfide che i team devono completare', + noPartnerShop: 'Nessuno shop partner', + noShopsFound: 'Nessuno skate shop trovato sulla rete finora.', + noShopsRegistered: 'Nessuno skate shop ancora registrato', + onlineRelease: 'Pubblicazione online', + onlineReleaseDesc: 'Pubblica i film anche su YouTube/Nostr', + organizerContact: "Dati di contatto dell'organizzatore", + organizerContactHint: 'Saranno visibili ai team registrati', + organizerContactPlaceholder: 'Come possono contattarti i team? es., Nostr npub, email, Telegram, ecc.', + partnerDiscountDesc: 'Offri ai partecipanti al tour uno sconto in uno skate shop locale', + partnerStep1: '1. Collabora con uno skate shop locale di cui ti fidi', + partnerStep2: '2. Imposta una percentuale di sconto per i partecipanti al tour', + partnerStep3: '3. Dopo il tour, dai ai partecipanti una conferma da mostrare allo shop', + partnerStep4: '4. Lo shop onora lo sconto — costruisce community e porta clienti!', + percentOff: '{{percent}}% DI SCONTO', + photoHint: 'Aggiungi una foto di te sullo skate o di uno spot figo del tuo tour.', + pickRide: 'Scegli il tuo mezzo', + place1: '🥇 1°', + place2: '🥈 2°', + place3: '🥉 3°', + platformFee: 'Sei tu a fissare il prezzo • La piattaforma prende il {{percent}}', + points: 'Punti:', + pricePerPerson: 'Prezzo per persona (sats)', + pricePlaceholder: 'es., 25000', + prizeDistribution: 'Distribuzione dei premi', + prizePoolHint: 'Opzionale - premi totali disponibili', + prizePoolPlaceholder: 'es., 2000000', + proTipDesc: 'Prima di elencare uno sconto partner, contatta il proprietario dello shop via DM per concordare la percentuale. Così saranno d\'accordo e onoreranno lo sconto per i tuoi partecipanti.', + proTipTitle: '💡 Consiglio: coordinati prima con lo shop!', + return: 'Ritorno', + returnBeforeDeparture: 'Ritorno prima della partenza', + returnBeforeDepartureDesc: 'La data di ritorno deve essere uguale o successiva alla data di partenza.', + roadTripDetails: 'Dettagli del viaggio su strada', + schedule: 'Programma', + scheduleDesc: "Organizza come sessione programmata una tantum, oppure mantienila flessibile e lascia che gli skater prenotino un orario via DM.", + secretUntilStart: "Segreto fino all'inizio", + selectPartnerShop: 'Seleziona shop partner', + sessionDateRequired: 'Data della sessione richiesta', + sessionDateRequiredDesc: "Scegli la data e l'ora della tua sessione programmata, oppure passa a un programma flessibile.", + sessionDateTime: 'Data e ora della sessione', + sessionDateTimeHint: 'Gli skater vedranno questo orario e potranno aggiungerlo al calendario dalla pagina del tour.', + shopPremieresContact: 'Contatta direttamente questi shop per organizzare serate di anteprima. Tutti gli accordi sono privati.', + shopPremieresHow: '💡 Come funzionano le anteprime negli shop: contatta direttamente gli shop per organizzare serate di anteprima. Tutti gli accordi sono privati tra te e gli shop.', + shopsCanRegister: 'Gli shop possono registrarsi su /create-shop', + show: 'Mostra', + showAllLanguages: 'Mostra tutte le {{count}} lingue', + somethingWrong: 'Qualcosa è andato storto.', + spotTypes: 'Tipi di Spot', + spotTypesRequired: 'Tipi di spot richiesti', + spotTypesRequiredDesc: 'Seleziona almeno un tipo di spot che mostrerai.', + startDate: 'Data di inizio', + startDateRequired: 'Data di inizio richiesta', + startDateRequiredDesc: 'Imposta quando inizia la competizione (le sfide saranno svelate a quella data).', + startingCity: 'Città di partenza', + startingCityPlaceholder: 'es., Los Angeles, USA', + teamSettings: 'Impostazioni dei team', + teamsCount: '{{count}} team', + titlePlaceholder: 'es., Berlino Kreuzberg - Tour degli spot underground', + titleRequired: 'Titolo del tour richiesto', + titleRequiredDesc: 'Inserisci un nome per il tuo tour.', + totalPercent: 'Totale: {{percent}}%', + totalPrizePool: 'Montepremi totale (sats)', + tourDesc: 'Racconta agli skater cosa aspettarsi dal tuo tour', + tourDetails: 'Dettagli del Tour', + tourPhoto: 'Foto del Tour', + tourTitle: 'Titolo del Tour', + transportDestructionPlaceholder: 'Come viaggeranno i team tra le località? Trasporti forniti o consigliati?', + transportInfo: 'Info sui trasporti', + transportPlaceholder: "Come viaggeranno i partecipanti? es., 'Van fornito', 'Volo per Barcellona, noleggiamo un van', 'Treno tra le città'", + tripDatesDesc: 'Fissa le date così gli skater possono chiedere ferie, prenotare voli e pianificare il viaggio.', + tripDatesTitle: 'Date del viaggio', + updated: 'Tour aggiornato!', + updatedDesc: 'Le tue modifiche sono state pubblicate.', + upload: 'Carica', + view: 'Vedi →', + worldDestruction: 'World Destruction Tour', + youReceive: 'Ricevi: {{amount}} sats per persona', + }, + editEvent: { + accessDenied: 'Accesso negato', + accessDeniedDesc: 'Puoi modificare solo gli eventi che hai creato.', + backToEvent: "Torna all'Evento", + detailsDesc: 'Aggiorna le informazioni di questo evento. Tutti i campi contrassegnati con * sono obbligatori.', + eventCover: "Copertina dell'evento", + locationUpdated: 'Posizione aggiornata.', + loginToEdit: 'Devi accedere per modificare questo evento.', + newSpot: 'Nuovo spot: {{location}}.', + newTime: 'Nuovo orario: {{date}} alle {{time}}.', + saveChanges: 'Salva modifiche', + saving: 'Salvataggio...', + title: 'Modifica Evento', + updated: 'Evento aggiornato!', + updatedDesc: 'Le tue modifiche sono state pubblicate sulla rete.', + updateDetails: 'Aggiorna i dettagli di {{title}}', + updatedNotified: 'Modifiche pubblicate — {{count}} partecipanti avvisati.', + updateFailed: 'Aggiornamento non riuscito', + updateMessage: "{{parts}} — vedi l'evento per i dettagli.", + }, + editShop: { + accessDeniedDesc: 'Puoi modificare solo gli shop che hai creato.', + backToShop: 'Torna allo Shop', + detailsDesc: 'Aggiorna le informazioni del tuo shop. Tutti i campi contrassegnati con * sono obbligatori.', + loginToEdit: 'Devi accedere per modificare questo shop.', + updated: 'Shop aggiornato!', + updateDetails: 'Aggiorna i dettagli di {{name}}', + }, + editTour: { + accessDeniedDesc: 'Puoi modificare solo i tour che hai creato.', + loginToEdit: 'Devi accedere per modificare questo tour.', + }, + eventCard: { + report: 'Segnala', + }, + eventDetail: { + aCrew: 'una crew', + addToCalendar: 'Aggiungi al calendario', + backToEvents: 'Torna agli Eventi', + cancelled: 'Questo evento è stato annullato', + checkUpdate: "— controlla l'aggiornamento", + copyFailed: 'Copia non riuscita', + date: 'Data', + editEvent: 'Modifica evento', + eventFallback: 'Evento', + eventOrganizer: "Organizzatore dell'Evento", + getDirections: 'Ottieni indicazioni', + linkCopied: 'Link copiato', + linkCopiedDesc: "Link dell'evento copiato negli appunti — incollalo dove vuoi.", + live: 'Live:', + liveMusic: 'musica dal vivo', + location: 'Posizione', + newLocation: 'Nuova posizione', + noRsvps: 'Nessun RSVP registrato.', + organizer: 'Organizzatore', + rsvpsClosed: "Gli RSVP sono chiusi — questo evento è stato annullato dall'host.", + seeMap: 'Vedi mappa', + shareEvent: 'Condividi evento', + shareText: '{{title}} — un evento skate su SkateSpots', + shareTextFallback: "Dai un'occhiata a questo evento skate su SkateSpots", + time: 'Ora', + timeChanged: 'Orario modificato', + updatesFromHost: "Aggiornamenti dall'host", + where: 'Dove', + whoCame: 'Chi è venuto', + whosGoing: 'Chi partecipa', + }, + events: { + calendar: 'Calendario', + createTour: 'Crea Tour', + events: 'Eventi', + faqFooter: 'Hai domande? Consulta le FAQ →', + hosting: 'Ospiti', + hostingSubtitle: 'I tuoi eventi — RSVP, aggiornamenti e modifiche rapide', + list: 'Elenco', + noEventsMatchFilters: 'Nessun evento corrisponde ai tuoi filtri. Prova a modificarli o rimuoverli.', + noPast: 'Nessun evento passato', + noPastBody: 'Nessun evento skate passato trovato con i tuoi filtri attuali.', + noTours: 'Nessun tour trovato', + noToursBody: 'Ancora nessun tour skate. Crea il primo e porta gli skater alla scoperta degli spot!', + noToursMatchFilters: 'Nessun tour corrisponde ai tuoi filtri. Prova a modificarli o rimuoverli.', + noUpcoming: 'Nessun evento in arrivo', + noUpcomingBody: 'Nessun evento skate in arrivo trovato. Sii il primo a crearne uno!', + past: 'Passati', + resultsCount: '{{count}} risultati', + searchCity: 'Città…', + searchEvent: "Nome dell'evento…", + searchTour: 'Nome del tour…', + tours: 'Tour', + toursSubtitle: 'Guide locali, viaggi su strada e competizioni world destruction', + upcoming: 'In arrivo', + }, + eventTypes: { + contest: 'Contest', + demo: 'Demo', + jam: 'Jam', + meetup: 'Meetup', + premiere: 'Anteprima', + session: 'Sessione', + workshop: 'Workshop', + }, + featured: { + active: 'Attivo', + bodyEvent: 'Pubblicazione gratuita. Gli eventi in evidenza ricevono un badge e stanno in cima alla pagina degli eventi.', + bodyTour: 'Pubblicazione gratuita. I tour in evidenza ricevono un badge e stanno in cima alla lista dei tour.', + contextEvent: "Il tuo evento resta in elenco gratuitamente in ogni caso — l'evidenza aggiunge solo il badge e il boost.", + contextTour: "Il tuo tour resta in elenco gratuitamente in ogni caso — l'evidenza aggiunge solo il badge e il boost.", + daysRemaining: 'Evidenza attiva · {{count}} giorni rimanenti.', + headingEvent: 'Metti in evidenza questo evento', + headingTour: 'Metti in evidenza questo tour', + optional: 'opzionale', + platformOwner: "Proprietario della piattaforma — l'evidenza è sempre attiva.", + }, + filters: { + activeCount: '{{count}} attivi', + all: 'Tutti', + allLevels: 'Tutti i livelli', + eventType: 'Tipo di Evento', + following: 'Seguiti', + newest: 'Più recenti', + popular: 'Popolari', + showResults: 'Mostra risultati', + showResultsActive: 'Mostra risultati · {{count}} attivi', + skillLevel: 'Livello', + sortBy: 'Ordina per', + topRated: 'Più votati', + tourCategory: 'Categoria del Tour', + trusted: 'Affidabile', + trustLevel: 'Livello di affidabilità', + verified: 'Verificato', + }, + food: { + bar: 'Bar', + cafe: 'Caffè', + call: 'Chiama', + chooseSpot: 'Scegli uno spot...', + directions: 'Indicazioni', + fastFood: 'Fast Food', + foodCourt: 'Food Court', + locationLabel: 'Posizione:', + noneFound: 'Nessun posto dove mangiare trovato', + noneFoundDesc: 'Non abbiamo trovato ristoranti o caffè entro 1 km da questo spot. Prova a selezionare una posizione diversa.', + placesFound: '{{count}} posti trovati entro 1 km da {{spot}}', + pub: 'Pub', + restaurant: 'Ristorante', + selectSpot: 'Seleziona uno spot', + selectSpotDesc: 'Scegli uno skate spot dal menu sopra per trovare ristoranti, caffè e altre opzioni nelle vicinanze.', + selectSpotTitle: 'Seleziona uno Skate Spot', + subtitle: 'Trova posti dove mangiare vicino ai tuoi skate spot preferiti', + title: 'Cibo vicino agli Spot', + unknown: 'Sconosciuto', + website: 'Sito web', + }, + rsvp: { + areYouGoing: 'Ci vai?', + cant: 'Non posso', + cantMakeIt: 'Non riesco a venire', + going: 'Ci vado', + goingCount: 'partecipano', + goingShort: 'Ci vado', + hostNote: 'Sei tu l\'host — ma puoi comunque impostare il tuo stato.', + interested: 'Interessato', + interestedCount: 'interessati', + loginToRsvp: 'Accedi per confermare la presenza (RSVP).', + maybe: 'Forse', + toastError: "Impossibile confermare l'RSVP", + toastGoing: 'Ci sarai! 🛹', + toastInterested: 'Segnato come interessato.', + toastNotGoing: 'Segnato come non partecipante.', + tryAgain: 'Riprova.', + }, + shop: { + addNip05Settings: 'Aggiungi NIP-05 nelle Impostazioni', + adminRemovedReason: 'Un admin di SkateSpots ha rimosso lo shop "{{name}}"', + areYouOwner: 'Sei il proprietario dello Shop?', + backToMap: 'Torna alla mappa', + claimDesc: 'Se possiedi o gestisci questo shop, puoi rivendicarlo per verificare la proprietà tramite NIP-05.', + claimNip05Intro: "Per rivendicare questo shop, aggiungi un identificatore NIP-05 che corrisponda al dominio del sito dello shop. Ad esempio, se il sito dello shop è", + claimNip05Your: 'il tuo NIP-05 dovrebbe essere', + contactShop: 'Contatta lo Shop', + deleted: 'Shop eliminato', + deletedDesc: 'Richiesta di eliminazione inviata ai relay. La maggior parte dei relay rimuoverà questo contenuto.', + deleteDialogDesc: 'Questo eliminerà definitivamente "{{name}}" da tutti i relay. Questa azione non può essere annullata.', + deleteDialogTitle: 'Eliminare lo Shop?', + deletedReason: 'Shop eliminato', + deleteFailed: 'Eliminazione non riuscita', + deleteShop: 'Elimina Shop', + linkCopied: 'Link copiato!', + linkCopiedDesc: 'Link dello shop copiato negli appunti.', + nip05Required: '⚠️ Verifica NIP-05 richiesta per rivendicare gli shop', + opens: 'Apre: {{domain}}', + removeAdmin: 'Rimuovi (admin)', + removed: 'Shop rimosso', + removedDesc: 'Questo shop è stato rimosso e sarà nascosto in tutto SkateSpots.', + removeDialogDesc: 'Come admin di SkateSpots stai rimuovendo "{{name}}". Sarà nascosto nell\'app per tutti e una richiesta di eliminazione sarà inviata ai relay.', + removeDialogTitle: 'Rimuovere questo shop? (admin)', + removeShop: 'Rimuovi Shop', + tipMapper: 'Dai un tip al Mapper', + tipMapperDesc: 'Questo shop è stato aggiunto da un membro della community. Zappalo per ringraziarlo!', + updateNip05: 'Aggiorna il NIP-05 per rivendicare', + viewPhotoFull: 'Visualizza foto a schermo intero', + viewPhotoOf: 'Visualizza foto {{index}} di {{total}}', + }, + sponsors: { + presentedBy: 'Presentato da', + }, + tourCard: { + active: 'Attivo', + completed: 'Completato', + contactForPrice: 'Contatta per il prezzo', + durationDays: '{{count}} giorni', + durationHours: '{{count}} ore', + durationMonths: '{{count}} mesi', + durationWeeks: '{{count}} settimane', + entry: 'Ingresso: {{amount}} sats', + happeningNow: 'In corso', + inDays: 'Tra {{count}} giorni', + inHours: 'Tra {{count}}h', + inMonths: 'Tra {{count}} mesi', + inWeeks: 'Tra {{count}} settimane', + maxGroup: 'Max {{count}}', + price: '{{amount}} sats', + prizePool: '{{amount}} sats', + registrationOpen: 'Iscrizioni aperte', + startingSoon: 'Inizia presto', + teamsMax: '{{count}} team max', + tomorrow: 'Domani', + worldwide: 'In tutto il mondo', + }, + tourDetail: { + about: 'Informazioni sul Tour', + availability: 'Disponibilità', + competitionWindow: 'Finestra della competizione', + contactToBook: 'Contatta la guida per prenotare', + discountAt: '{{percent}}% DI SCONTO da {{shop}}', + duration: 'Durata', + languages: 'Lingue', + loginToBook: 'Accedi per prenotare', + loginToBookDesc: 'Accedi per contattare la guida e prenotare questo tour', + maxGroup: 'Gruppo massimo', + meetingPoint: "Punto d'incontro", + notFound: 'Tour non trovato', + notFoundDesc: "Questo tour potrebbe essere stato rimosso o non esistere.", + organizer: 'Organizzatore', + partnerDiscount: 'Sconto shop partner', + partnerDiscountDesc: 'Prenota questo tour per ricevere uno sconto nello skate shop partner. Mostra la conferma di prenotazione al personale dello shop.', + people: '{{count}} persone', + perPerson: 'per persona', + price: 'Prezzo', + runsAbout: 'Dura circa {{duration}}', + scheduledSession: 'Sessione programmata', + shareText: "Dai un'occhiata a questo tour skate locale: {{title}}", + skillLevel: 'Livello', + spotTypes: 'Tipi di Spot', + tourGuide: 'Guida del Tour', + tourSponsors: 'Sponsor del Tour', + tripDates: 'Date del viaggio', + viewProfile: 'Vedi profilo', + }, + updates: { + admin: 'Admin', + adminNote: "Stai pubblicando come admin di SkateSpots. Sarà chiaramente etichettato come avviso admin, non dall'host.", + kindCancelled: 'Annullato', + kindNewSpot: 'Nuovo spot', + kindNewTime: 'Nuovo orario', + kindUpdate: 'Aggiornamento', + loading: 'Caricamento aggiornamenti…', + notifiedCount: '{{count}} persone avvisate.', + notifiedEveryone: 'Tutti lo vedranno sull\'evento.', + notifiesRsvps: 'Avvisa {{count}} RSVP', + noUpdates: "Ancora nessun aggiornamento dall'host. Conferma la presenza e sarai avvisato se qualcosa cambia.", + placeholder: 'Pioggia — spostato a domenica alle 14. Ci vediamo al ledge dietro…', + post: 'Pubblica', + postAdminUpdate: 'Pubblica un aggiornamento admin', + posted: 'Aggiornamento pubblicato', + postError: "Impossibile pubblicare l'aggiornamento", + postUpdate: 'Pubblica un aggiornamento', + tryAgain: 'Riprova.', + visibleToEveryone: 'Visibile a tutti su questo evento', + }, + destination: { + bitcoin: 'Bitcoin', + closeSearch: 'Chiudi ricerca', + nothingMatches: 'Nessun risultato per “{{query}}”.', + placeholder: 'Cerca spot, shop, esercenti Bitcoin…', + shop: 'Shop', + spot: 'Spot', + typeChars: 'Digita almeno 2 caratteri. Cerca skate spot, skate shop ed esercenti Bitcoin.', + typeCharsNear: 'Digita almeno 2 caratteri. Cerca skate spot, skate shop ed esercenti Bitcoin qui vicino.', + }, + dateWindow: { + any: 'Qualsiasi', + anytime: 'In qualsiasi momento', + month: 'Questo mese', + monthShort: 'Mese', + today: 'Oggi', + todayShort: 'Oggi', + week: 'Questa settimana', + weekend: 'Weekend', + weekendShort: 'Weekend', + weekShort: 'Sett.', + }, + }, + marketUi: { + gearSwap: { + title: 'Gear Swap', + subtitle: 'Compra e vendi gear da skate usato con altri skater', + listGear: 'Elenca Gear', + searchPlaceholder: 'Cerca gear...', + allCategories: 'Tutte le categorie', + forSale: 'In vendita', + wtb: 'WTB', + trust: 'Affidabilità', + filterByTrust: 'Filtra per affidabilità', + allSellers: 'Tutti i venditori', + verifiedOnly: 'Solo verificati', + trustedPlus: 'Trusted+', + followingOnly: 'Solo seguiti', + pickupOrShip: 'Ritiro o spedizione', + localPickup: 'Ritiro locale', + ships: 'Spedizione', + sortBy: 'Ordina per', + newest: 'Più recenti', + priceLowHigh: 'Prezzo: dal più basso', + priceHighLow: 'Prezzo: dal più alto', + trustScore: 'Punteggio di affidabilità', + nearest: 'Più vicini (locali)', + listingFound: '{{count}} annuncio trovato', + listingsFound: '{{count}} annunci trovati', + loadFailed: 'Caricamento degli annunci non riuscito', + tryLater: 'Riprova più tardi.', + noneTitle: 'Nessun annuncio trovato', + noneFiltered: 'Nessun gear corrisponde ai filtri attuali. Prova a rimuoverli o a cercare altro.', + noneFirst: 'Sii il primo a mettere in vendita il tuo gear — deck, trucks, wheels, scarpe, qualsiasi cosa da skate!', + listYourGear: 'Elenca il tuo Gear', + faqLink: 'Hai domande? Consulta le FAQ →', + }, + hub: { + browse: 'Esplora', + selling: 'In vendita', + myTrades: 'I miei scambi', + reputation: 'Reputazione', + loginListings: 'Accedi per gestire i tuoi annunci.', + loginReputation: 'Accedi per vedere la tua reputazione e le recensioni.', + }, + marketplace: { + heroTitle: 'Shop e Marketplace', + heroBefore: 'Il nostro marketplace è basato su', + heroAfter: '- un marketplace decentralizzato su Nostr. Gli skate shop possono elencare i loro prodotti e puoi comprare/vendere gear usato direttamente con Bitcoin.', + whatIsTitle: "Cos'è Plebeian Market?", + whatIsBody: 'Plebeian Market è un marketplace decentralizzato costruito su Nostr. Compra e vendi gear da skateboarding direttamente con altri skater usando Bitcoin. Nessun intermediario, nessuna commissione, totale libertà.', + noFeesTitle: 'Nessuna commissione', + noFeesBody: 'Nessuna piattaforma che prende il 30%. Vendite dirette peer-to-peer.', + bitcoinTitle: 'Pagamenti in Bitcoin', + bitcoinBody: 'Paga con Bitcoin. Veloce, sicuro, globale.', + decentralizedTitle: 'Decentralizzato', + decentralizedBody: 'Costruito su Nostr. Nessuna azienda lo controlla.', + visit: 'Visita Plebeian Market', + buySellTitle: 'Cosa puoi comprare e vendere', + catCompletes: 'Skate complete', + preBuilt: 'Complete pre-assemblati', + customSetups: 'Setup personalizzati', + beginnerBoards: 'Tavole per principianti', + catParts: 'Parti del Deck', + decks: 'Deck', + trucks: 'Trucks', + wheels: 'Wheels', + bearings: 'Bearings', + gripTape: 'Griptape', + hardware: 'Viteria', + catApparel: 'Abbigliamento e protezioni', + skateShoes: 'Scarpe da skate', + clothing: 'Abbigliamento', + helmets: 'Caschi', + pads: 'Protezioni', + backpacks: 'Zaini', + catAccessories: 'Accessori', + tools: 'Attrezzi', + wax: 'Wax', + rails: 'Rail', + stickers: 'Sticker', + videos: 'Video', + magazines: 'Riviste', + howItWorks: 'Come funziona', + step1Title: 'Esplora i prodotti', + step1Body: 'Visita Plebeian Market e sfoglia gear da skateboarding da shop e privati di tutto il mondo.', + step2Title: 'Contatta i venditori', + step2Body: 'Scrivi direttamente ai venditori via Nostr. Tratta i prezzi, fai domande, organizza la spedizione.', + step3Title: 'Paga con Bitcoin', + step3Body: "Completa l'acquisto usando Bitcoin Lightning per pagamenti istantanei e a basso costo.", + step4Title: 'Lascia un feedback', + step4Body: 'Valuta la tua esperienza e costruisci la reputazione del venditore su Nostr. Le tue recensioni aiutano la community.', + needBitcoinTitle: 'Ti serve Bitcoin?', + needBitcoinBefore: "Ti servirà un wallet Lightning con qualche sat per fare acquisti. Dai un'occhiata alla", + onboardingGuide: 'guida introduttiva', + needBitcoinAfter: 'per consigli sui wallet.', + ownShopTitle: 'Hai uno Skate Shop?', + ownShopBody: 'Elenca il tuo shop su SkateSpots e vendi i tuoi prodotti su Plebeian Market. Raggiungi clienti in tutto il mondo con zero commissioni di piattaforma.', + addShop: 'Aggiungi il tuo Shop', + startSelling: 'Inizia a vendere', + }, + listingDetail: { + notFound: 'Annuncio non trovato', + notFoundBody: 'Potrebbe essere stato eliminato o il link è sbagliato.', + backToGearSwap: 'Torna a Gear Swap', + gearSwap: 'Gear Swap', + viewPhoto: 'Visualizza foto {{n}}', + photoAlt: '{{title}} — foto {{n}}', + wantToBuy: 'CERCO', + sold: 'VENDUTO', + description: 'Descrizione', + usuallyHere: 'Di solito qui {{availability}}', + listed: 'Inserito {{date}}', + listingCountOne: '{{count}} annuncio · {{age}}g fa', + listingCountMany: '{{count}} annunci · {{age}}g fa', + relistActive: 'Rimetti attivo', + markSold: 'Segna come venduto', + deleteListing: 'Elimina annuncio', + makeOffer: "Fai un'offerta", + shareListing: 'Condividi annuncio', + unknown: 'Sconosciuto', + linkCopied: 'Link copiato', + linkCopiedBody: 'Condividilo con uno skater.', + copyFailed: 'Impossibile copiare il link', + relisted: 'Rimesso in vendita', + relistedBody: 'Il tuo annuncio è di nuovo attivo.', + couldNotUpdate: 'Impossibile aggiornare', + somethingWrong: 'Qualcosa è andato storto', + }, + create: { + imageUploaded: 'Immagine caricata', + uploadFailed: 'Caricamento non riuscito', + failed: 'Non riuscito', + cooldownActive: 'Attesa attiva', + cooldownWait: 'Attendi {{time}} prima di creare un altro annuncio', + limitReached: 'Limite di annunci raggiunto', + limitReachedBody: 'Hai raggiunto il limite mensile di {{limit}} annunci', + feeRequired: 'Commissione richiesta', + feeRequiredBody: 'Paga la commissione anti-spam per continuare', + titleRequired: 'Titolo richiesto', + categoryRequired: 'Categoria richiesta', + photoRequired: 'Foto richiesta', + photoRequiredBody: 'Almeno una foto è richiesta per vendere gear', + nip05Required: 'Verifica NIP-05 richiesta', + nip05RequiredBody: 'Ti serve un indirizzo Nostr verificato per elencare gear', + priceRequired: 'Prezzo richiesto per annunci a prezzo fisso', + sizeRequired: 'Misura richiesta', + sizeRequiredBody: 'Seleziona una misura per {{category}}', + conditionRequired: 'Condizione richiesta', + conditionRequiredBody: 'Seleziona la condizione del tuo {{category}}', + wtbPosted: 'Richiesta di acquisto pubblicata!', + wtbPostedBody: 'I venditori potranno trovare la tua richiesta.', + listingCreated: 'Annuncio creato!', + listingCreatedBody: 'Il tuo gear è ora in vendita.', + publishFailed: 'Pubblicazione non riuscita', + loginRequired: 'Accesso richiesto', + loginRequiredBody: 'Devi accedere per elencare gear.', + backToStash: 'Torna allo Stash', + backToSpot: 'Torna a {{title}}', + backToMarketplace: 'Torna al Marketplace', + backToMap: 'Torna alla mappa', + wantToBuy: 'Cerco', + listYourGear: 'Elenca il tuo Gear', + wtbSubtitle: "Di' alla community quale gear stai cercando", + sellSubtitle: 'Vendi gear da skateboarding alla community', + fromStashTitle: 'Annuncio dal tuo Stash', + fromStashBody: "Precompilato con i dettagli dell'oggetto nel tuo stash. Controlla e scegli un punto d'incontro!", + nip05Banner: 'Per prevenire lo spam e proteggere gli acquirenti, ti serve un indirizzo Nostr verificato (NIP-05) per elencare gear.', + verifiedLabel: 'Verificato:', + checkingTrust: 'Verifica del tuo livello di affidabilità...', + trustLevel: 'Livello di affidabilità:', + trusted: 'Affidabile', + active: 'Attivo', + newcomer: 'Nuovo arrivato', + newUser: 'Nuovo utente', + remaining: '{{remaining}} di {{limit}} annunci rimanenti questo mese', + cooldownBody: "I nuovi utenti hanno un'attesa di 24 ore tra un annuncio e l'altro.", + timeRemaining: 'Tempo rimanente: {{time}}', + monthlyLimitTitle: 'Limite mensile raggiunto', + monthlyLimitBody: 'Hai raggiunto il limite di {{limit}} annunci questo mese. Costruisci la tua reputazione creando spot o completando vendite per aumentare il limite.', + powAccepted: 'Proof of work accettato!', + feePaid: 'Commissione pagata!', + canCreateNow: 'Ora puoi creare il tuo annuncio.', + whatDoTitle: 'Cosa vuoi fare?', + sellGear: 'VENDI GEAR', + categoryTitle: 'Categoria *', + categoryHint: 'Che tipo di gear?', + detailsTitle: 'Dettagli del Gear', + detailsWtbHint: 'Descrivi cosa stai cercando', + detailsSellHint: 'Racconta il tuo oggetto agli acquirenti', + titleLabel: 'Titolo *', + titlePlaceholderWtb: 'Cerco deck 8.0"', + titlePlaceholderSell: 'Deck Palace quasi nuovo 8.25"', + summaryLabel: 'Breve riepilogo', + summaryPlaceholderWtb: 'Qualsiasi marca, preferisco grafiche minimali', + summaryPlaceholderSell: 'Ottime condizioni, usato pochissimo', + descriptionLabel: 'Descrizione', + descriptionPlaceholderWtb: 'Descrivi esattamente cosa cerchi - preferenze di marca, requisiti di condizione, ecc.', + descriptionPlaceholderSell: "Ho preso questo deck a Natale ma preferisco una misura più piccola. Felice di fartelo provare prima dell'acquisto!", + fulfilmentLabel: 'Come viene consegnato?', + pickup: 'Ritiro', + pickupHint: 'Incontro di persona', + ships: 'Spedizione', + shipsHint: 'Spediscilo', + both: 'Entrambi', + bothHint: 'Indifferente', + addressNote: 'Non raccogliamo mai il tuo indirizzo — per la spedizione, condividilo privatamente nella chat dello scambio.', + postageLabel: 'Chi paga la spedizione?', + requireEscrow: 'Richiedi escrow', + requireEscrowHint: "Chiedi all'acquirente di saldare tramite escrow Cashu.", + postageBuyer: "Paga l'acquirente", + postageSeller: 'Pago io', + postageSplit: 'Dividi', + sizeLabel: 'Misura', + selectSize: 'Seleziona misura', + truckHeight: 'Altezza dei Trucks', + selectHeight: 'Seleziona altezza', + wheelHardness: 'Durezza delle Wheels', + selectHardness: 'Seleziona durezza', + pricingTitle: 'Prezzo', + pricingWtbHint: 'Come vuoi pagare?', + pricingSellHint: 'Come vuoi vendere?', + priceLabel: 'Prezzo *', + currencyLabel: 'Valuta', + photosTitle: 'Foto', + photosSellHint: 'Almeno una foto è richiesta', + photosWtbHint: 'Opzionale - aggiungi immagini di riferimento', + productPhoto: 'Prodotto {{n}}', + upload: 'Carica', + photosNote: 'Aggiungi fino a 5 foto. La prima immagine sarà quella principale.', + pickupLocationTitle: 'Luogo di ritiro', + pickupLocationHint: 'Collega a uno skate spot per incontri facili', + searchSpots: 'Cerca spot...', + noSpotsFound: 'Nessuno spot trovato. Prova una ricerca diversa.', + availabilityLabel: 'Quando sei di solito disponibile?', + availabilityPlaceholder: 'Weekend 10-14, mar/gio sera', + availabilityHint: 'Aiuta gli acquirenti a coordinare un incontro con te', + durationTitle: "Durata dell'annuncio", + durationHint: 'Per quanto tempo deve restare attivo questo annuncio?', + publishing: 'Pubblicazione...', + checkingEligibility: 'Verifica dei requisiti...', + cooldownButton: 'ATTESA: {{time}}', + limitReachedButton: 'LIMITE RAGGIUNTO', + payFeeButton: 'PAGA LA COMMISSIONE PER CONTINUARE', + postWtbButton: 'PUBBLICA RICHIESTA', + listForSaleButton: 'ELENCA GEAR IN VENDITA', + }, + trades: { + title: 'I miei scambi', + loginBody: 'Accedi per gestire i tuoi scambi nel marketplace e la tua reputazione.', + subtitle: "Conferme, richieste e la reputazione che costruiscono. Il pagamento viene organizzato con l'altro skater — l'app registra solo l'accordo.", + actionNeeded: 'Azione richiesta', + askedToConfirmSale: 'ti ha chiesto di confermare una vendita', + recordedSale: 'ha registrato una vendita — conferma la tua parte', + confirmSale: 'Conferma vendita', + confirm: 'Conferma', + nothingWaiting: 'Niente in attesa per te al momento. 🛹', + yourRecords: 'I tuoi record di scambi', + noTrades: 'Ancora nessuno scambio. Chiudi un accordo e confermalo per iniziare a costruire la reputazione.', + browseGearSwap: 'Sfoglia Gear Swap', + roleSold: 'Venduto', + roleBought: 'Comprato', + roleTrade: 'Scambio', + with: 'con', + viewListing: 'Vedi annuncio', + revoke: 'Revoca', + revokeTitle: 'Revocare questo record di scambio?', + revokeBody: "Smetterà di contare per la tua reputazione. L'altra parte mantiene la propria attestazione. Usalo per un accordo contestato o sbagliato.", + revokeNote: "Ritirato dall'autore.", + revoked: 'Record di scambio revocato', + revokedBody: 'Non conta più per la reputazione.', + revokeFailed: 'Impossibile revocare lo scambio', + saleConfirmed: 'Vendita confermata', + saleConfirmedBody: 'Ora possono confermare la loro parte.', + saleConfirmFailed: 'Impossibile confermare la vendita', + tradeConfirmed: 'Scambio confermato', + tradeConfirmedBody: 'Reputazione aggiornata per entrambi.', + tradeConfirmFailed: 'Impossibile confermare lo scambio', + somethingWrong: 'Qualcosa è andato storto.', + }, + card: { + listingDeleted: 'Annuncio eliminato', + listingRemoved: 'Annuncio rimosso', + listingDeletedBody: 'Il tuo annuncio è stato rimosso. I relay che rispettano le eliminazioni smetteranno di servirlo.', + listingRemovedBody: 'Questo annuncio è stato rimosso e sarà nascosto in tutto SkateSpots.', + removeFailed: 'Rimozione non riuscita', + somethingWrong: 'Qualcosa è andato storto', + markedSold: 'Segnato come venduto', + markedSoldBody: 'Il tuo annuncio è ora mostrato come venduto.', + couldNotUpdate: 'Impossibile aggiornare', + relisted: 'Rimesso in vendita', + relistedBody: 'Il tuo annuncio è di nuovo attivo.', + listingOptions: 'Opzioni annuncio', + report: 'Segnala', + removeAdmin: 'Rimuovi (admin)', + postage: 'spedizione', + newSeller: 'Nuovo venditore', + saleOne: '{{count}} vendita', + saleMany: '{{count}} vendite', + iHaveThis: "Questo ce l'ho!", + deleteTitle: 'Eliminare "{{title}}"?', + adminRemoveTitle: 'Rimuovere questo annuncio? (admin)', + deleteBody: 'Questo chiede ai relay di rimuovere il tuo annuncio "{{title}}". Non può essere annullato da qui — dovresti crearne uno nuovo.', + adminRemoveBody: 'Come admin di SkateSpots stai rimuovendo "{{title}}". Sarà nascosto nell\'app per tutti e una richiesta di eliminazione sarà inviata ai relay.', + deleting: 'Eliminazione…', + removing: 'Rimozione…', + deleteListing: 'Elimina annuncio', + removeListing: 'Rimuovi annuncio', + reportCount: '{{count}} segnalazione', + reports: '{{count}} segnalazioni', + viewTitle: 'Vedi {{title}}', + reportListing: 'Segnala annuncio', + manageListing: 'Gestisci annuncio', + trusted: 'Affidabile', + daysOld: '{{n}}g', + monthsOld: '{{n}} mesi', + yearsOld: '{{n}} anni', + listingsCount: '{{count}} annunci', + postageBuyer: 'spedizione: acquirente', + postageSeller: 'spedizione: venditore', + postageSplit: 'spedizione: divisa', + powTitle: 'NIP-13 proof of work — anti-spam gratuito', + verifiedTradeOne: '{{count}} scambio verificato', + verifiedTrades: '{{count}} scambi verificati', + reportSubmitted: 'Segnalazione inviata', + reportSubmittedBody: 'Grazie per aiutarci a mantenere il marketplace sicuro.', + reportFailed: 'Invio della segnalazione non riuscito', + selectReason: 'Seleziona un motivo', + reportDialogBody: 'Aiuta a mantenere il marketplace sicuro segnalando annunci inappropriati o fuorvianti.', + reasonLabel: 'Motivo della segnalazione *', + detailsLabel: 'Dettagli aggiuntivi (opzionale)', + detailsPlaceholder: 'Fornisci qualsiasi contesto aggiuntivo che possa aiutare...', + reportNote: 'Le segnalazioni sono pubblicate su Nostr e aiutano la community a identificare annunci problematici. Gli annunci con più segnalazioni potrebbero essere nascosti automaticamente.', + submitting: 'Invio...', + submitReport: 'Invia segnalazione', + }, + tradeActions: { + tradeConfirmed: 'Scambio confermato', + tradeConfirmedWithProof: 'È stata allegata una ricevuta verificabile — conta per gli scambi verificati.', + tradeConfirmedBody: 'Reputazione aggiornata per entrambi.', + tradeConfirmFailed: 'Impossibile confermare lo scambio', + somethingWrong: 'Qualcosa è andato storto.', + requestNote: 'Conferma il nostro scambio per "{{title}}".', + requestSent: 'Conferma richiesta', + requestSentBody: 'Il venditore ora può confermare la vendita e costruire entrambe le reputazioni.', + requestFailed: 'Impossibile inviare la richiesta', + escrowRefunded: 'Escrow rimborsato', + escrowRefundedBody: 'I fondi sono tornati nel tuo wallet Cashu.', + escrowRefundFailed: "Impossibile rimborsare l'escrow", + confirmThisTrade: 'Conferma questo scambio', + escrowAndRequest: 'Escrow e richiesta', + shipsEscrowHint: "Accordo spedito — usa l'escrow così nessuna delle due parti spedisce nel vuoto. Condividi il tuo indirizzo privatamente nella chat dello scambio, mai qui.", + shipsHint: "Accordo spedito — preferisci l'escrow se il venditore lo offre, e condividi il tuo indirizzo solo nella chat.", + askSeller: 'Chiedi al venditore di confermare', + waitingSeller: 'Conferma richiesta — in attesa del venditore.', + refundEscrow: 'Rimborsa escrow', + buyWithSats: 'Compra con sats', + depositTitle: 'Acconto di buona fede (opzionale)', + payDeposit: 'Paga acconto', + depositBefore: 'Uno scambio non ha fattura, quindi è così che ottiene un', + verifiableCost: 'costo verificabile', + depositAfter: ". Rimborso alla consegna (o usa l'escrow Cashu per un rimborso automatico). ⚠️ Prova l'impegno, non la consegna.", + depositPaid: 'Acconto pagato', + depositPaidBody: 'Salvato — sarà allegato quando lo scambio viene confermato.', + paid: 'Pagato ⚡', + paidWithProof: 'Ricevuta verificabile salvata — conferma lo scambio perché conti.', + paidBody: 'Chiedi al venditore di confermare lo scambio così conta per entrambi.', + }, + offers: { + accepted: 'Accettata', + declined: 'Rifiutata', + withdrawn: 'Ritirata', + open: 'Aperta', + noAmount: 'nessun importo', + titleOwner: 'Offerte ({{count}})', + titleBuyer: 'Le tue trattative', + you: 'Tu', + them: 'Loro', + paidAskConfirm: 'Pagato — chiedi al venditore di confermare lo scambio.', + payWithSats: 'Paga con sats', + accept: 'Accetta', + decline: 'Rifiuta', + counter: 'Controfferta', + counterPlaceholder: 'La tua controfferta (sats)', + send: 'Invia', + counterItemPlaceholder: '…oppure controproponi con un oggetto da scambiare (opzionale)', + waitingOn: 'In attesa di', + waitingOnSuffix: '— il tuo turno tornerà se contropropongono.', + withdraw: 'Ritira', + dmAccepted: '✅ La tua offerta è stata accettata! Scrivigli per organizzare la consegna.', + dmDeclined: '❌ La tua offerta è stata rifiutata.', + offerAccepted: 'Offerta accettata', + offerDeclined: 'Offerta rifiutata', + respondFailed: 'Impossibile rispondere', + somethingWrong: 'Qualcosa è andato storto.', + offerWithdrawn: 'Offerta ritirata', + withdrawFailed: 'Impossibile ritirare', + enterAmountOrItem: 'Inserisci un importo o un oggetto da scambiare', + counterDm: 'Controfferta', + counterSent: 'Controfferta inviata', + counterSentBody: 'Ora è il loro turno.', + counterFailed: 'Impossibile inviare la controfferta', + }, + offer: { + validAmount: 'Inserisci un importo valido', + describeOffer: 'Descrivi la tua offerta', + describeOfferBody: 'Aggiungi un importo, un oggetto da scambiare o un messaggio.', + dmAmount: ' per {{amount}} sats', + dmItem: ' (offro: {{item}})', + dmBody: '🛹 Nuova offerta sul tuo annuncio "{{title}}"{{amount}}{{item}}.{{note}}', + sent: 'Offerta inviata', + sentBody: '{{sellerName}} può accettarla o rifiutarla.', + sendFailed: "Impossibile inviare l'offerta", + somethingWrong: 'Qualcosa è andato storto.', + title: "Fai un'offerta", + description: 'Offri sats, o scambia qualcosa — {{sellerName}} può accettare, rifiutare o controproporre. La consegna la organizzate tra voi.', + amountLabel: 'Importo (sats, opzionale)', + amountPlaceholder: 'es. 45000', + itemLabel: 'Oppure scambia qualcosa (opzionale)', + itemPlaceholder: 'es. il mio deck 8.25 + wheels di riserva', + itemHint: 'Scambi? Metti qui cosa offri — puoi combinarlo con i sats.', + messageLabel: 'Messaggio (opzionale)', + messagePlaceholder: 'Qualcosa che il venditore dovrebbe sapere…', + send: 'Invia offerta', + }, + markSold: { + enterBuyer: "Inserisci l'npub dell'acquirente", + dealClosed: 'Accordo chiuso 🎉', + dealClosedBody: 'Annuncio segnato come venduto e scambio pubblicato per la reputazione.', + closeFailed: "Impossibile chiudere l'accordo", + somethingWrong: 'Qualcosa è andato storto.', + title: "Chiudi l'accordo", + description: "Segna questo annuncio come venduto e registra un'attestazione di scambio firmata per te e l'acquirente.", + buyerLabel: "npub dell'acquirente", + methodLabel: 'Come è stato pagato? (autodichiarato)', + amountLabel: 'Importo in sats (opzionale)', + submit: 'Segna venduto', + }, + handoff: { + title: 'Organizza la consegna', + suggest: 'Proponi un orario e un luogo', + suggestDm: 'Ciao! Vorrei comprare "{{title}}". Proponi un orario e un luogo per incontrarci — volentieri in uno skate spot pubblico.', + orMeetAt: 'Oppure incontrati in uno spot pubblico vicino:', + spotDm: 'Ciao! Vorrei comprare "{{title}}". Ci vediamo a {{spot}}? {{url}}', + shareDelivery: 'Condividi i dettagli di consegna', + deliveryDm: 'Ciao! Vorrei comprare "{{title}}". Ecco i miei dettagli di consegna:\n\nNome:\nIndirizzo:\n\n(Condividi solo ciò che serve al corriere.)', + useLocker: 'Usa un locker / punto di ritiro', + lockerDm: 'Ciao! Vorrei comprare "{{title}}". Possiamo usare un locker / punto di ritiro invece del mio indirizzo di casa?', + noteBefore: 'Questi dettagli restano nella chat privata — SkateSpots non li vede mai. Per accordi spediti, preferisci', + escrow: 'escrow', + noteMiddle: ', e', + neverPay: "non pagare mai fuori dai canali dell'app", + noteAfter: '. Incontratevi in pubblico.', + }, + shipping: { + noCounterparty: 'Ancora nessuna controparte', + noCounterpartyBody: "Il venditore dovrebbe prima registrare la vendita (indicando l'acquirente).", + markedShipped: 'Segnato come spedito', + markedReceived: 'Segnato come ricevuto', + issueReported: 'Problema segnalato', + receivedBody: "Grazie — questo non sblocca l'escrow; salda direttamente con il venditore.", + notifiedBody: "L'altra parte è stata avvisata.", + updateFailed: 'Impossibile aggiornare', + somethingWrong: 'Qualcosa è andato storto.', + title: 'Spedizione', + shipped: 'spedito', + received: 'ricevuto', + issue: 'problema', + trackingPlaceholder: 'Numero di tracciamento (opzionale)', + iShipped: "L'ho spedito", + iReceived: "L'ho ricevuto", + reportIssue: 'Segnala un problema', + noteBefore: 'Autodichiarato — una nota logistica,', + notProof: 'non una prova', + noteAfter: '. Segnare "ricevuto" non sblocca l\'escrow. ⚠️ Non fotografare un pacco con un indirizzo visibile e condividi un numero di tracciamento solo se ti va che sia pubblico.', + }, + pay: { + sent: 'Pagamento inviato ⚡', + sentWithProof: 'Ricevuta di pagamento verificabile salvata — conterà come pagamento verificato.', + sentBody: 'Avvisa il venditore — può confermare lo scambio così conta per entrambi.', + failed: 'Pagamento non riuscito', + title: 'Paga con sats', + descSendPrefix: 'Invia', + descSendSuffix: 'a {{sellerName}} per saldare questo accordo.', + descSettle: 'Salda questo accordo direttamente con {{sellerName}}.', + paid: 'Pagato!', + paidBody: 'Chiedi al venditore di confermare lo scambio — due conferme costruiscono entrambe le reputazioni.', + noMethod: '{{sellerName}} non ha impostato un metodo di pagamento (nessuna fattura o indirizzo Lightning). Scrivigli per organizzare il pagamento.', + ownListing: 'Questo è il tuo annuncio.', + paying: 'Pagamento…', + pay: 'Paga', + payAmount: 'Paga {{amount}} sats', + footnote: 'Paga dal tuo wallet collegato (NWC, WebLN o Cashu) direttamente a {{sellerName}} — SkateSpots non trattiene mai i fondi.', + }, + spamFee: { + invoiceComment: 'Commissione annuncio SkateSpots', + generateFailed: 'Generazione della fattura non riuscita', + paymentSuccess: 'Pagamento riuscito!', + satsSent: '{{amount}} sats inviati a {{name}}', + autoPayFailed: 'Pagamento automatico non riuscito', + autoPayFailedBody: 'Paga manualmente usando il codice QR o la fattura', + invoiceCopied: 'Fattura copiata!', + copyFailed: 'Copia non riuscita', + received: 'Pagamento ricevuto!', + receivedBody: 'La tua commissione di {{amount}} sat è stata pagata. Ora puoi creare il tuo annuncio.', + title: "Commissione una tantum per l'annuncio", + subtitle: 'Come nuovo membro, è richiesta una piccola commissione per il tuo primo annuncio.', + whyTitle: 'Perché devo pagare?', + spamLabel: 'Prevenzione spam:', + spamBody: 'Questa commissione ferma bot e truffatori che inondano il marketplace di annunci falsi.', + trustLabel: 'Costruzione della fiducia:', + trustBody: 'I nuovi account devono dimostrare impegno prima di elencare. Dopo alcuni annunci riusciti, questa commissione è esente.', + supportsLabel: 'Sostiene la community:', + supportsPrefix: 'La commissione va a', + supportsSpotOwner: ' — la persona che ha creato questo spot!', + supportsPlatform: ' — aiuta a mantenere SkateSpots attivo.', + oneTimeFee: '~{{usd}} USD • Commissione una tantum', + payToContinue: 'Paga {{amount}} sats per continuare', + proveWork: 'Dimostra il lavoro invece — gratis', + proveWorkBody: 'Spendi qualche secondo di CPU invece di {{amount}} sats. Niente soldi, niente wallet — una tassa anti-spam, non un pagamento.', + generating: 'Generazione fattura...', + processing: 'Elaborazione del pagamento...', + qrAlt: 'Codice QR di pagamento', + copyInvoice: 'Copia fattura', + openWallet: 'Apri wallet', + payWithWallet: 'Paga con il wallet collegato', + scanHint: 'Scansiona il codice QR con un wallet Lightning o usa i pulsanti sopra', + skipTitle: 'Come evitare questa commissione in futuro:', + skip1: 'Aggiungi uno skate spot alla mappa', + skip2: 'Completa 2-3 annunci riusciti', + skip3: 'Costruisci la tua reputazione nella community', + skipNote: 'I membri affidabili ottengono annunci illimitati gratuiti!', + }, + reputation: { + highlyTrusted: 'Trader altamente affidabile', + building: 'Reputazione in costruzione', + newTrader: 'Nuovo trader', + title: 'Scambi', + verified: 'Verificato', + sales: 'Vendite', + purchases: 'Acquisti', + tradeConfirmedOne: 'scambio confermato reciprocamente', + tradeConfirmedMany: 'scambi confermati reciprocamente', + with: 'con', + personOne: 'persona', + personMany: 'persone', + awaiting: 'In attesa di conferma reciproca', + withPaymentProof: 'con una prova di pagamento allegata', + selfReported: '(autodichiarato — non verificato)', + paymentVerified: 'pagamento verificato', + zapReceipt: '(ricevuta zap)', + singlePartnerWarning: 'Ogni conferma è con lo stesso account. La conferma reciproca è autodichiarata, quindi tratta questo record con cautela.', + lowDiversityWarning: 'La maggior parte delle conferme proviene da pochissimi account. Un piccolo gruppo che si garantisce a vicenda può sembrare attivo — tratta questo record con cautela.', + ringWarning: 'Questi account commerciano soprattutto tra loro — un cluster chiuso. La conferma reciproca dentro un anello è una prova debole.', + weighted: 'Ponderato per fiducia e attività', + footnote: 'Autodichiarato e firmato reciprocamente — un segnale, non una prova di pagamento.', + }, + reputationPanel: { + reviewOfYou: 'Recensione su di te', + yourRecord: 'il tuo record', + listing: 'Annuncio', + averageOne: 'media da {{count}} valutazione', + averageMany: 'media da {{count}} valutazioni', + reviewsTitle: 'Recensioni e record di scambi', + fromOthers: '{{count}} da altri', + emptyBefore: 'Ancora nessun record di scambi. Chiudi un accordo e confermalo in', + emptyAfter: '— ogni conferma diventa una recensione su entrambi i profili.', + }, + recommendations: { + published: 'Raccomandazione pubblicata', + publishedBody: 'Grazie per la garanzia.', + failed: 'Impossibile raccomandare', + somethingWrong: 'Qualcosa è andato storto.', + title: 'Trader affidabile', + recommendedBy: 'Raccomandato da', + skaterOne: 'skater', + skaterMany: 'skater', + none: 'Ancora nessuna raccomandazione.', + youRecommend: 'Raccomandi questo trader ✓', + recommend: 'Raccomanda come trader affidabile', + }, + notification: { + newOffer: 'Nuova offerta', + counterOffer: 'Controfferta', + offerAccepted: 'Offerta accettata', + offerDeclined: 'Offerta rifiutata', + offerWithdrawn: 'Offerta ritirata', + confirmTrade: 'Conferma uno scambio', + tradeConfirmed: 'Scambio confermato', + reviewOffer: "Esamina l'offerta", + openListing: 'Apri annuncio', + }, + confirmRow: { + rateTrade: 'Valuta lo scambio:', + }, + deckRating: { + title: '{{value}}/10 deck', + aria: '{{n}} di 10', + }, + clink: { + tip: 'Tip in Bitcoin', + copiedBody: 'Codice CLINK copiato negli appunti.', + copyFailed: 'Copia non riuscita', + copyFailedBody: 'Impossibile accedere agli appunti.', + whatIs: "Cos'è CLINK?", + tooltipTitle: 'Paga direttamente in Bitcoin su Nostr', + tooltipBody: 'CLINK è un codice di pagamento self-custodial — nessun account app, nessun intermediario. Scansionalo con un wallet Lightning compatibile e il tip va direttamente a loro.', + descRecipient: 'Invia un pagamento Bitcoin (Lightning) self-custodial a {{recipientName}} — nessun intermediario.', + descGeneric: 'Invia un pagamento Bitcoin (Lightning) self-custodial su Nostr — nessun intermediario.', + qrAlt: "Codice QR dell'offerta CLINK", + copyCode: 'Copia codice CLINK', + openWallet: 'Apri nel wallet CLINK', + copyToWallet: 'Copia il codice per il tuo wallet', + priceFixed: 'Fisso — {{amount}} sats', + priceFixedShort: 'Prezzo fisso', + priceVariable: 'Prezzo variabile', + priceVariableCurrency: 'Prezzato in {{currency}}', + priceSpontaneous: "Scegli tu l'importo", + footnote: 'Scansiona con un wallet compatibile con CLINK (es. ShockWallet). Se non si apre nulla, copia il codice qui sopra — potresti non avere un wallet compatibile con CLINK installato. Nessun custode, nessun server web: la fattura viene richiesta direttamente su Nostr.', + }, + paymentReadiness: { + ready: 'Puoi farti pagare', + notReady: 'Configura i pagamenti per farti pagare', + readyBefore: 'Il tuo indirizzo Lightning', + readyAfter: ' è sul tuo profilo — le persone possono zapparti e pagarti direttamente.', + silentSet: ' È impostato anche un indirizzo Bitcoin Silent Payment.', + notReadyBefore: 'Aggiungi un indirizzo Lightning (e facoltativamente un indirizzo Bitcoin Silent Payment) al tuo', + nostrProfile: 'profilo Nostr', + notReadyAfter: 'così gli skater possono pagarti. Si imposta una volta e funziona su tutti i profili che hai qui.', + }, + seller: { + trade: 'Scambio', + active: 'Attivo', + markSold: 'Segna venduto', + yourListings: 'I tuoi annunci', + activeCount: '{{count}} attivi', + listItem: 'Elenca un oggetto', + loading: 'Caricamento dei tuoi annunci…', + empty: 'Non hai ancora annunci.', + listFirst: 'Elenca il tuo primo oggetto', + }, + noffer: { + label: 'Codice offerta CLINK', + optional: '(opzionale, avanzato)', + offerId: 'Offerta: {{id}}', + relay: 'Relay: {{relay}}', + invalidBefore: 'Questo non sembra un', + invalidAfter: 'codice valido.', + valid: 'Codice CLINK valido — un pulsante "Paga via CLINK" apparirà sul tuo profilo.', + help: 'Incolla un codice di pagamento CLINK self-custodial (es. da ShockWallet / Lightning.Pub) per accettare pagamenti Lightning nativi di Nostr — nessun server web o custode.', + learnSpecs: 'Scopri le specifiche', + }, + escrowPanel: { + escrowed: '{{amount}} sats in escrow', + mint: 'Mint', + refundSinceBefore: "L'acquirente può rimborsare da", + redeemBefore: "Il venditore può riscattare ora · l'acquirente rimborsa dopo", + noExpiry: 'Nessuna scadenza impostata su questo token.', + }, + escrowRequest: { + enterAmount: "Inserisci un importo per l'escrow", + minLock: 'Blocca per almeno {{days}} giorni', + requestNote: '{{amount}} sats in escrow per il nostro scambio — conferma la vendita.', + created: 'Escrow creato 🎉', + createdBody: '{{amount}} sats bloccati per {{days}} giorni. {{sellerName}} può riscattare alla consegna.', + createFailed: "Impossibile creare l'escrow", + somethingWrong: 'Qualcosa è andato storto.', + title: 'Metti in escrow questo scambio', + description: "I fondi sono bloccati a {{sellerName}} e rimborsabili da te se l'accordo salta dopo la scadenza. Richiede un wallet Lightning collegato.", + amountLabel: 'Importo (sats)', + daysLabel: 'Rimborso acquirente dopo (giorni)', + daysHint: 'Dopo questi giorni puoi recuperare i fondi se il venditore non ha consegnato.', + nativeOnly: "L'escrow Cashu è disponibile solo nell'app SkateSpots (non nella build web).", + lockAndRequest: 'Blocca e richiedi', + }, + }, + labOptions: { + coach: { + skill: { + basics: 'Basi', + ollies: 'Ollie', + kickflips: 'Kickflip', + grinds: 'Grind e Slide', + manuals: 'Manual', + inverts: 'Invert', + vert: 'Vert/Ramp', + bowl: 'Bowl', + street: 'Street', + freestyle: 'Freestyle', + safety: 'Sicurezza', + diy: 'Moduli Skate DIY', + }, + skillDesc: { + basics: 'Spinta, stance, equilibrio, curve', + ollies: 'Ollie e varianti (nollie, fakie)', + kickflips: 'Kickflip, heelflip e varianti', + grinds: '50-50, 5-0, boardslide e altro', + manuals: 'Manual, nose manual, combo', + inverts: 'Invert, handplant, eggplant, andrecht', + vert: 'Half-pipe, quarter-pipe, drop-in', + bowl: 'Carving, pumping e line nel bowl', + street: 'Ostacoli da strada e creatività', + freestyle: 'Trick in flatground e flow', + safety: 'Come cadere, protezioni, prevenzione degli infortuni', + diy: 'Costruire ramp, rail, ledge e altri ostacoli da skate', + }, + }, + filmer: { + service: { + miniclips: 'Mini clip', + longparts: 'Video part lunghi', + koth: 'Stile King of the Road', + documentaries: 'Documentari', + contests: 'Riprese per contest', + raw: 'Girato grezzo', + followlines: 'Ripresa follow / line', + lines: 'Ripresa line e B-roll', + }, + serviceDesc: { + miniclips: 'Clip da 15-60 sec per i social', + longparts: 'Video part completi da 3-10 min con musica', + koth: 'Video skate in stile avventura/sfida', + documentaries: 'Contenuti sulla cultura skate e storie', + contests: 'Copertura professionale di contest e competizioni', + raw: 'Girato multi-angolo non montato', + followlines: 'Follow-cam fisheye per le line', + lines: 'Line con teleobiettivo e b-roll cinematografico', + }, + skill: { + vx1000: 'VX1000', + hvx: 'HVX / HPX', + cinema: 'Cinema Camera', + dslr: 'DSLR / Mirrorless', + actioncam: 'GoPro / Action Cam', + phone: 'Ripresa con telefono', + drone: 'Drone / Aereo', + gimbal: 'Gimbal / Stabilizzatore', + fisheye: 'Lente fisheye', + longlens: 'Teleobiettivo', + '4k': '4K / Alto frame rate', + editing: 'Montaggio video', + color: 'Color grading', + }, + skillDesc: { + vx1000: 'Estetica classica dello skateboarding VX1000', + hvx: 'Look SD/HD Panasonic HVX/HPX', + cinema: 'Cinema camera (FX3, serie C, RED, BMPCC)', + dslr: 'Fotocamera DSLR o mirrorless di alta qualità', + actioncam: 'POV e supporti GoPro / action cam', + phone: 'Ripresa mobile con smartphone moderni', + drone: 'Riprese aeree e con drone', + gimbal: 'Movimento stabilizzato con gimbal', + fisheye: 'Scatti grandangolari con lente fisheye', + longlens: 'Teleobiettivo per scatti dettagliati', + '4k': 'Risoluzione 4K e slow-mo ad alto frame rate', + editing: 'Montaggio video professionale e post-produzione', + color: 'Correzione colore e grading', + }, + }, + editor: { + service: { + parts: 'Video part', + montages: 'Montaggi', + reels: 'Reel / clip brevi', + documentaries: 'Documentari', + contest: 'Edit per contest', + brand: 'Video brand / promozionali', + motion: 'Motion graphics', + colorgrade: 'Solo color grading', + }, + serviceDesc: { + parts: 'Video part skate completi con colonna sonora', + montages: 'Montaggi compilation da girato grezzo', + reels: 'Clip e reel social da 15–60 sec', + documentaries: 'Film sulla cultura skate guidati da storie', + contest: 'Edit riassuntivi per contest ed eventi', + brand: 'Contenuti promozionali per brand e shop', + motion: 'Titoli, transizioni, effetti e grafiche', + colorgrade: 'Correzione colore e grading basato su LUT', + }, + skill: { + premiere: 'Adobe Premiere', + resolve: 'DaVinci Resolve', + finalcut: 'Final Cut Pro', + aftereffects: 'After Effects', + luts: 'LUT personalizzate', + vhs: 'Estetica VHS / retrò', + '4k': 'Flussi di lavoro 4K e RAW', + sound: 'Sound design / mix', + }, + skillDesc: { + premiere: 'Montaggio con Adobe Premiere Pro', + resolve: 'Montaggio e grading con DaVinci Resolve', + finalcut: 'Montaggio con Final Cut Pro', + aftereffects: 'Motion graphics e compositing', + luts: 'Sviluppo di look colore personalizzati', + vhs: 'Glitch VHS, super-8, look film retrò', + '4k': 'Flussi di lavoro con camere RAW/LOG ad alta risoluzione', + sound: 'Sincronizzazione musicale, SFX, mastering audio', + }, + }, + photo: { + service: { + action: 'Action / scatti di trick', + sequence: 'Scatti in sequenza', + portraits: 'Ritratti', + editorial: 'Editoriale / rivista', + product: 'Fotografia prodotto / shop', + events: 'Copertura eventi', + lifestyle: 'Lifestyle / documentario', + prints: 'Stampe e zine', + }, + serviceDesc: { + action: "Scatti di picco dell'azione su trick e line", + sequence: 'Sequenze di trick multi-frame', + portraits: 'Ritratti di rider e foto di squadra', + editorial: 'Servizi editoriali pronti per riviste', + product: 'Fotografia di deck, gear e prodotti dello shop', + events: 'Copertura di contest, jam e anteprime', + lifestyle: 'Dietro le quinte e documentario culturale', + prints: 'Stampe fisiche, zine e fotolibri', + }, + camera: { + dslr: 'DSLR', + mirrorless: 'Mirrorless', + medium: 'Medio formato', + film35: 'Pellicola 35mm', + filmmedium: 'Pellicola medio formato', + point: 'Point & Shoot', + phone: 'Telefono', + }, + lens: { + fisheye: 'Fisheye', + wide: 'Grandangolo', + standard: 'Standard / prime', + telephoto: 'Teleobiettivo', + macro: 'Macro', + zoom: 'Zoom', + }, + lighting: { + strobes: 'Flash da studio', + speedlights: 'Speedlight / flash', + profoto: 'Profoto', + elinchrom: 'Elinchrom', + godox: 'Godox', + triggers: 'Trigger remoti', + continuous: 'Luce continua / LED', + reflectors: 'Riflettori / diffusori', + naturallight: 'Solo luce naturale', + }, + support: { + tripod: 'Treppiedi', + monopod: 'Monopiede', + lightstands: 'Stativi per luci', + gimbal: 'Gimbal', + bag: 'Rig mobile / borsa', + laptop: 'Tethering in loco', + }, + style: { + flashfisheye: 'Flash fisheye', + natural: 'Luce naturale', + bw: 'Bianco e nero', + film: 'Estetica pellicola', + longlens: 'Teleobiettivo', + studio: 'Studio / illuminato', + street: 'Strada / documentario', + }, + }, + builder: { + service: { + diy: 'Spot DIY', + concrete: 'Skatepark in cemento', + wood: 'Ramp in legno', + bowls: 'Bowl e pool', + transitions: 'Transizioni e quarter', + rails: 'Rail e ledge', + boxes: 'Manny pad e box', + minis: 'Mini ramp', + pumptrack: 'Pump track', + foam: 'Fosse in foam / indoor', + repairs: 'Riparazioni e rifacimenti', + design: 'Design e consulenza', + }, + serviceDesc: { + diy: 'Spot DIY della community e build guerrilla', + concrete: 'Skatepark e strutture in cemento gettato', + wood: 'Ramp in legno, launch box e ostacoli', + bowls: 'Bowl, pool e transizioni profonde', + transitions: 'Quarterpipe, bank e transizioni', + rails: 'Rail in acciaio, ledge e strutture per grind', + boxes: 'Manny pad, funbox e strutture da strada', + minis: 'Mini ramp e setup in cortile', + pumptrack: 'Pump track e line di flow', + foam: 'Fosse in foam, resi e strutture per allenamento indoor', + repairs: 'Riparazione, rattoppo e rifacimento di spot esistenti', + design: 'Progetti, disegni e consulenza per la costruzione', + }, + skill: { + concretework: 'Cemento / spritz-beton', + welding: 'Saldatura / fabbricazione acciaio', + carpentry: 'Falegnameria / lavorazione del legno', + formwork: 'Casseforme e armature', + masonry: 'Muratura / blocchi', + coping: 'Coping (pool / acciaio)', + surfacing: 'Skatelite / superfici', + earthworks: 'Movimento terra / scavi', + }, + scale: { + backyard: 'Cortile / mini', + diycommunity: 'DIY di comunità', + publicpark: 'Skatepark pubblico completo', + indoor: 'Struttura indoor', + event: 'Percorso per eventi / contest', + }, + }, + artist: { + service: { + boardart: 'Grafiche per tavole', + logos: 'Logo e branding', + posters: 'Poster e volantini', + merch: 'Merch e abbigliamento', + zines: 'Zine e stampa', + illustration: 'Illustrazione', + stickers: 'Sticker e decal', + webdesign: 'Web / digitale', + typography: 'Tipografia / lettering', + animation: 'Animazione / motion', + }, + serviceDesc: { + boardart: 'Grafiche per deck e arte sul griptape', + logos: 'Identità di marca, logo e wordmark', + posters: 'Poster di eventi, volantini e grafiche per concerti', + merch: 'Grafiche per t-shirt, felpe e abbigliamento', + zines: 'Zine, editoria e impaginazione', + illustration: 'Illustrazioni personalizzate e character design', + stickers: 'Pacchetti di sticker, decal e slap', + webdesign: 'Siti web, digitale e UI', + typography: 'Lettering a mano e caratteri personalizzati', + animation: 'Motion graphics e animazione', + }, + medium: { + digital: 'Digitale / vettoriale', + handdrawn: 'Disegnato a mano', + screenprint: 'Serigrafia', + paint: 'Pittura / acrilico', + collage: 'Collage / misto', + photo: 'Foto / Photoshop', + '3d': '3D / render', + }, + tool: { + illustrator: 'Adobe Illustrator', + photoshop: 'Adobe Photoshop', + procreate: 'Procreate', + affinity: 'Affinity', + figma: 'Figma', + blender: 'Blender', + aftereffects: 'After Effects', + clipstudio: 'Clip Studio', + }, + }, + graffiti: { + style: { + throwups: 'Throw-up', + pieces: 'Piece / burner', + murals: 'Murales', + characters: 'Personaggi', + lettering: 'Lettering / wildstyle', + stencil: 'Stencil', + handstyles: 'Handstyle / tag', + '3dstyle': 'Stile 3D', + abstract: 'Astratto', + }, + styleDesc: { + throwups: 'Riempimenti rapidi a due colori', + pieces: 'Piece e burner a colori pieni', + murals: 'Murales e produzioni su larga scala', + characters: 'Lavori con personaggi e figure', + lettering: 'Wildstyle e struttura delle lettere', + stencil: 'Stencil e street art', + handstyles: 'Tag e handstyle', + '3dstyle': 'Lettering 3D e anamorfico', + abstract: 'Astratto e freestyle', + }, + medium: { + spray: 'Bombole spray', + rollers: 'Rulli / emulsione', + markers: 'Marker / inchiostri', + brush: 'Pennello / vernice', + digital: 'Digitale / Procreate', + }, + context: { + legalwalls: 'Muri legali', + commissions: 'Commissioni', + liveart: 'Live painting', + skateparks: 'Murales negli skatepark', + interiors: 'Interni / shop', + workshops: 'Workshop', + }, + }, + tattoo: { + style: { + traditional: 'Traditional / old school', + neotraditional: 'Neo-traditional', + fineline: 'Fine line', + blackwork: 'Blackwork', + realism: 'Realismo', + lettering: 'Lettering / script', + illustrative: 'Illustrativo', + skateflash: 'Flash a tema skate', + ignorant: 'Stile ignorant / handpoke', + japanese: 'Giapponese / irezumi', + }, + styleDesc: { + traditional: 'Linee decise, classico americano', + neotraditional: 'Traditional con dettagli moderni', + fineline: 'Lavoro delicato a singolo ago', + blackwork: 'Nero pieno e pattern', + realism: 'Fotorealistico e ritratti', + lettering: 'Script, lettering e citazioni', + illustrative: 'Illustrativo e grafico', + skateflash: 'Disegni flash della cultura skate', + ignorant: 'Stile ignorant / naive handpoke', + japanese: 'Tradizionale giapponese / irezumi', + }, + method: { + machine: 'Macchinetta', + handpoke: 'Hand-poke / stick & poke', + flash: 'Flash disponibili', + custom: 'Disegni personalizzati', + coverup: 'Coperture', + }, + }, + trainer: { + focus: { + strength: 'Forza e condizionamento', + mobility: 'Mobilità e flessibilità', + injuryprevention: 'Prevenzione degli infortuni', + rehab: 'Riabilitazione / fisioterapia', + recovery: 'Recupero e bodywork', + balance: 'Equilibrio e stabilità', + cardio: 'Cardio / resistenza', + nutrition: 'Consigli nutrizionali', + }, + focusDesc: { + strength: 'Costruire forza e potenza per lo skate', + mobility: 'Range di movimento e flessibilità', + injuryprevention: 'Prehab e riduzione del rischio di infortuni', + rehab: 'Fisioterapia e riabilitazione post-infortunio', + recovery: 'Massaggio, bodywork e recupero', + balance: 'Propriocezione, equilibrio e stabilità', + cardio: 'Condizionamento e resistenza', + nutrition: 'Consigli su alimentazione e nutrizione', + }, + injury: { + ankles: 'Caviglie', + knees: 'Ginocchia', + wrists: 'Polsi', + hips: 'Anche', + back: 'Schiena / colonna', + shoulders: 'Spalle', + heelbruise: 'Contusioni al tallone', + concussion: 'Protocollo commozione cerebrale', + }, + credential: { + physio: 'Fisioterapista laureato', + osteo: 'Osteopata', + certtrainer: 'Personal trainer certificato', + sportstherapist: 'Terapista sportivo', + massage: 'Massaggiatore', + inperson: 'Di persona', + remote: 'Da remoto / online', + }, + }, + musician: { + genre: { + punk: 'Punk', + hardcore: 'Hardcore', + metal: 'Metal', + rock: 'Rock', + indie: 'Indie / alt', + hiphop: 'Hip-hop / rap', + electronic: 'Elettronica', + lofi: 'Lo-fi / beat', + reggae: 'Reggae / dub', + ska: 'Ska', + jazz: 'Jazz', + funk: 'Funk / soul', + flamenco: 'Flamenco', + folk: 'Folk / acustico', + experimental: 'Sperimentale', + grunge: 'Grunge', + }, + instrument: { + vocals: 'Voce', + guitar: 'Chitarra', + bass: 'Basso', + drums: 'Batteria', + keys: 'Tastiere / synth', + dj: 'DJ / giradischi', + producer: 'Producer / beat', + sax: 'Sax / ottoni', + strings: 'Archi', + other: 'Altro', + }, + act: { + solo: 'Artista solista', + band: 'Band', + dj: 'DJ', + producer: 'Producer', + collective: 'Collettivo', + }, + }, + judge: { + format: { + game_of_skate: 'Game of S.K.A.T.E.', + best_trick: 'Best Trick', + jam: 'Formato jam', + contest: 'Contest / comp', + street_league: 'Stile Street League', + bowl: 'Bowl / vert', + mini_ramp: 'Mini ramp', + park: 'Park', + street: 'Street', + freestyle: 'Freestyle', + world_tour: 'World Destruction Tour', + am_series: 'Am Series / qualifiche', + local_jam: 'Jam locale / grassroots', + online: 'Online / contest IG', + }, + specialty: { + head_judge: 'Head judge', + scoring: 'Punteggio / tabulazione', + mc: 'MC / annunciatore', + format_design: 'Progettazione del format', + rules: 'Regole / arbitraggio', + brackets: 'Bracket / batterie', + livestream: 'Giudizio in livestream', + am_scout: 'Scouting am', + }, + level: { + local: 'Locale', + regional: 'Regionale', + national: 'Nazionale', + international: 'Internazionale', + pro: 'Circuito pro', + }, + }, + organizer: { + event: { + street_jam: 'Street jam', + best_trick: 'Best Trick', + game_of_skate: 'Game of S.K.A.T.E.', + contest: 'Contest / comp', + bowl: 'Bowl / vert', + mini_ramp: 'Mini ramp', + park: 'Sessione in park', + demo: 'Demo pro', + clinic: 'Clinic / workshop', + meetup: 'Meetup / cruise', + downhill: 'Downhill / gara', + slalom: 'Slalom', + kids: 'Bambini / giovani', + charity: 'Beneficenza / raccolta fondi', + tour_stop: 'Tappa del tour', + premiere: 'Anteprima video', + market: "Mercato / mostra d'arte", + }, + service: { + organizing: 'Organizzazione completa', + hosting: 'Conduzione / MC', + permits: 'Permessi e autorità', + sponsorship: 'Sponsorizzazioni / accordi con brand', + promotion: 'Promozione e marketing', + livestream: 'Livestream / copertura', + sound: 'Audio e musica', + ramps: 'Ramp e ostacoli', + safety: 'Sicurezza e primo soccorso', + vendors: 'Cibo e venditori', + media: 'Copertura foto / video', + registration: 'Iscrizioni e bracket', + }, + scale: { + grassroots: 'Grassroots', + local: 'Locale', + regional: 'Regionale', + national: 'Nazionale', + international: 'Internazionale', + pro: 'Circuito pro', + }, + }, + barber: { + service: { + haircut: 'Taglio di capelli', + fade: 'Fade', + beard: 'Rifinitura barba', + lineup: 'Line-up / shape-up', + colour: 'Colore e tinta', + kids: 'Tagli per bambini', + }, + serviceDesc: { + haircut: 'Un taglio classico — macchinetta e forbici.', + fade: 'Un fade graduato — basso, medio o alto.', + beard: 'Rifinitura, modellatura e sistemazione della barba.', + lineup: "Bordi puliti intorno all'attaccatura e al collo.", + colour: 'Colore, decolorazione, tinta e tonalizzazione.', + kids: 'Tagli pazienti per gli skater più giovani.', + }, + style: { + skin_fade: 'Skin fade', + taper: 'Taper', + buzz: 'Taglio a macchinetta', + mohawk: 'Mohawk', + mullet: 'Mullet', + curly: 'Ricci / afro', + long: 'Capelli lunghi / scalati', + classic: 'Taglio classico a forbice', + }, + setting: { + shop: 'Shop / barbiere', + mobile: 'Mobile / a domicilio', + event: 'Event skate e contest', + }, + }, + tour: { + skill: { + beginner: { + label: 'Principiante', + description: 'Nuovo allo skate o trick di base', + }, + intermediate: { + label: 'Intermedio', + description: 'A proprio agio sulla maggior parte dei terreni', + }, + advanced: { + label: 'Avanzato', + description: 'Skater esperto, spot tosti', + }, + all: { + label: 'Tutti i livelli', + description: 'Adatto a tutti', + }, + }, + }, + }, +}; export default itBatch6; diff --git a/src/i18n/it/batch7.ts b/src/i18n/it/batch7.ts index 873ce90..af54dd2 100644 --- a/src/i18n/it/batch7.ts +++ b/src/i18n/it/batch7.ts @@ -1,4 +1,908 @@ -/** it — batch 7. Filled by the translation pass; empty until then. */ -const itBatch7 = {}; +/** it — batch 7. */ +const itBatch7 = { + events: { + title: "Eventi Skate", + createEvent: "Crea evento", + editEvent: "Modifica evento", + eventDetails: "Dettagli evento", + eventName: "Nome evento", + eventType: "Tipo di evento", + date: "Data", + time: "Ora", + startDate: "Data di inizio", + endDate: "Data di fine", + venue: "Luogo", + organizer: "Organizzatore", + attendees: "Partecipanti", + going: "Partecipo", + interested: "Interessato", + rsvp: "RSVP", + ticketPrice: "Prezzo del biglietto", + freeEntry: "Ingresso gratuito", + register: "Registrati", + moreInfo: "Più info", + upcomingEvents: "In programma", + pastEvents: "Passati", + noEvents: "Nessun evento trovato", + findEvents: "Trova contest, demo, session e altro", + searchPlaceholder: "Cerca eventi...", + loginToCreate: "Accedi per creare eventi", + noEventsMatch: "Nessun evento in programma corrisponde ai tuoi filtri.", + noUpcoming: "Nessun evento in programma trovato.", + noPast: "Nessun evento passato trovato.", + types: { + contest: "Contest", + session: "Session", + meetup: "Meetup", + premiere: "Anteprima video", + workshop: "Workshop", + demo: "Demo", + jam: "Jam", + }, + }, + wallet: { + title: "Portafoglio", + balance: "Saldo", + send: "Invia", + receive: "Ricevi", + transactions: "Transazioni", + history: "Cronologia", + noTransactions: "Ancora nessuna transazione", + sendSats: "Invia sats", + receiveSats: "Ricevi sats", + amount: "Importo", + recipient: "Destinatario", + lightning: "Lightning", + onChain: "On-chain", + invoice: "Fattura", + address: "Indirizzo", + scanQR: "Scansiona QR", + paste: "Incolla", + payInvoice: "Paga fattura", + createInvoice: "Crea fattura", + copied: "Copiato negli appunti!", + insufficientFunds: "Fondi insufficienti", + paymentSent: "Pagamento inviato!", + paymentReceived: "Pagamento ricevuto!", + cashu: { + title: "Portafoglio Cashu", + tokens: "Token", + mint: "Mint", + mints: "Mint", + manageMints: "Gestisci mint", + addMint: "Aggiungi mint", + removeMint: "Rimuovi mint", + defaultMint: "Mint predefinito", + backup: "Backup", + restore: "Ripristina", + recoveryPhrase: "Frase di recupero", + viewRecoveryPhrase: "Visualizza frase di recupero", + seedWarning: "È come il tuo nsec Nostr: tienilo segreto e al sicuro!", + }, + }, + spots: { + addSpot: "Aggiungi Spot", + editSpot: "Modifica Spot", + spotDetails: "Dettagli Spot", + spotName: "Nome Spot", + spotType: "Tipo di Spot", + description: "Descrizione", + location: "Posizione", + address: "Indirizzo", + photos: "Foto", + addPhotos: "Aggiungi foto", + obstacles: "Ostacoli", + features: "Caratteristiche", + bustLevel: "Livello di rischio", + bestTime: "Momento migliore", + tips: "Consigli", + reviews: "Recensioni", + addReview: "Aggiungi recensione", + reportSpot: "Segnala Spot", + directions: "Indicazioni", + shareSpot: "Condividi Spot", + createdBy: "Creato da", + lastUpdated: "Ultimo aggiornamento", + types: { + park: "Skatepark", + street: "Street Spot", + diy: "DIY Spot", + plaza: "Piazza", + indoor: "Indoor", + bowl: "Bowl", + vert: "Vert", + miniramp: "Mini Ramp", + }, + bustLevels: { + chill: "Tranquillo", + moderate: "Moderato", + sketchy: "Rischioso", + heavy: "Pesante", + }, + }, + settings: { + title: "Impostazioni", + profile: "Profilo", + editProfile: "Modifica profilo", + account: "Account", + security: "Sicurezza", + relays: "Relay", + appearance: "Aspetto", + language: "Lingua", + notifications: "Notifiche", + privacy: "Privacy", + about: "Informazioni", + help: "Aiuto", + feedback: "Feedback", + version: "Versione", + displayName: "Nome visualizzato", + username: "Nome utente", + bio: "Bio", + website: "Sito web", + lightningAddress: "Indirizzo Lightning", + profilePicture: "Immagine del profilo", + banner: "Banner", + saveProfile: "Salva profilo", + backupKeys: "Esegui backup delle chiavi", + exportKeys: "Esporta chiavi", + secretKey: "Chiave segreta", + publicKey: "Chiave pubblica", + showSecretKey: "Mostra chiave segreta", + hideSecretKey: "Nascondi chiave segreta", + copyKey: "Copia chiave", + keysBackedUp: "Hai confermato che le tue chiavi sono al sicuro.", + keysNotBackedUp: "Assicurati di eseguire il backup della tua frase di recupero o chiave segreta!", + selectLanguage: "Seleziona lingua", + english: "Inglese", + spanish: "Spagnolo", + }, + createSpot: { + title: "Aggiungi uno Skate Spot", + subtitle: "Condividi uno spot di skateboard con la community", + backToMap: "Torna alla mappa", + namePlaceholder: "es. Hollywood High School", + descriptionPlaceholder: "Descrivi lo spot, gli ostacoli, i momenti migliori per skatare, info sulla sicurezza, ecc.", + addressPlaceholder: "es. 1521 N Highland Ave, Los Angeles, CA", + selectType: "Seleziona il tipo di spot", + selectBustLevel: "Seleziona il livello di rischio", + uploadPhotos: "Carica", + dragDrop: "Trascina e rilascia o clicca per caricare", + maxPhotos: "Max 5 foto", + publishing: "Pubblicazione...", + success: "Spot pubblicato con successo!", + error: "Pubblicazione dello Spot non riuscita", + locationRequired: "Seleziona una posizione sulla mappa", + useCurrentLocation: "Usa la mia posizione attuale", + pickOnMap: "Scegli la posizione sulla mappa", + loginToAdd: "Devi accedere per aggiungere uno Skate Spot.", + locationLabel: "Posizione", + tapToPlace: "Tocca la mappa per posizionare il segnaposto, o trascinalo per rifinire.", + manualCoords: "Inserisci le coordinate manualmente", + moreDetails: "Più dettagli (opzionale)", + photoHint: "è richiesta una foto per pubblicare", + nameRequired: "Inserisci un nome per questo spot.", + descriptionRequired: "Descrivi questo spot.", + addressRequired: "Aggiungi un indirizzo o il nome della zona.", + photoRequired: "Aggiungi almeno una foto.", + draftTitle: "Hai una bozza non salvata", + draftBody: "Riprendi da dove avevi lasciato, o scartala.", + draftResume: "Riprendi", + draftDiscard: "Scarta bozza", + requiredFields: "Raccontaci di questo spot. Tutti i campi contrassegnati con * sono obbligatori.", + coordinates: "Coordinate", + latitudePlaceholder: "Latitudine (es. 34.1012)", + longitudePlaceholder: "Longitudine (es. -118.3389)", + gettingLocation: "Recupero posizione...", + accessType: "Tipo di accesso", + publicTitle: "Pubblico - Aperto a tutti", + publicDesc: "Skatepark, piazze pubbliche, street spot", + privateTitle: "Proprietà privata - Serve il permesso", + privateDesc: "Ramp in cortile, terreno privato, spot recintati", + localsTitle: "Chiedi prima ai local", + localsDesc: "Rispetta lo spot, non bruciartelo", + contactInfo: "Informazioni di contatto", + contactPlaceholder: "es. Numero di telefono, Instagram, email...", + contactHintPrivate: "Come dovrebbero contattarti per avere il permesso?", + contactHintLocals: "Come dovrebbero contattarti per chiedere info sullo spot?", + }, + marketplace: { + title: "Mercatino", + subtitle: "Compra, vendi e scambia gear da skate", + addListing: "Aggiungi annuncio", + condition: "Condizione", + conditions: { + new: "Nuovo", + likeNew: "Come nuovo", + good: "Buono", + fair: "Discreto", + poor: "Scadente", + }, + categories: { + all: "Tutti", + decks: "Tavole", + trucks: "Truck", + wheels: "Ruote", + bearings: "Cuscinetti", + shoes: "Scarpe", + clothing: "Abbigliamento", + protection: "Protezioni", + other: "Altro", + }, + priceRange: "Fascia di prezzo", + location: "Posizione", + seller: "Venditore", + contact: "Contatta il venditore", + makeOffer: "Fai un'offerta", + sold: "Venduto", + available: "Disponibile", + gear: "Gear", + sellGear: "Vendi Gear", + wantToBuy: "Voglio comprare", + }, + auth: { + login: "Accedi", + logout: "Esci", + signUp: "Registrati", + signUpTitle: "Nuovo su Nostr?", + signUpDesc: "Crea un nuovo account per iniziare. È gratis e aperto.", + orLogIn: "Oppure accedi", + loginWithExtension: "Accedi con estensione", + loginWithAmber: "Accedi con Amber (Android)", + loginWithKey: "Chiave segreta (nsec) o frase di recupero", + loginWithBunker: "Accedi con Nostr Connect", + bunkerUri: "Stringa di connessione Bunker", + openAmber: "Apri Amber", + connectToBunker: "Connetti al Bunker", + noExtension: "Nessuna estensione rilevata.", + extensionHelp: "Prova a usare il pulsante Registrati qui sopra per creare un nuovo account, oppure usa le schede Amber, Chiave o Bunker se hai già delle credenziali.", + amberDesc: "Amber è un'app sicura per firmare su Nostr per dispositivi Android. Clicca il pulsante sotto per aprire Amber e autorizzare l'accesso.", + bunkerDesc: "Accedi al tuo account da qualsiasi dispositivo usando un firmatario remoto (bunker). Le tue chiavi restano al sicuro sul server, mai esposte ai siti web.", + keyPlaceholder: "nsec1... o la tua frase di recupero di 12 parole", + keyHint: "Puoi incollare la tua chiave nsec o la frase di recupero di 12 parole", + uploadKeyFile: "Carica il tuo file di chiave", + loggingIn: "Accesso in corso...", + connecting: "Connessione...", + verifying: "Verifica...", + }, + createEvent: { + title: "Crea un evento", + subtitle: "Organizza un evento di skateboard per la community", + backToEvents: "Torna agli eventi", + namePlaceholder: "es. Session skate estiva", + descriptionPlaceholder: "Descrivi l'evento, cosa aspettarsi, regole, premi, ecc.", + selectType: "Seleziona il tipo di evento", + venuePlaceholder: "es. Venice Beach Skatepark, CA", + selectDate: "Seleziona la data", + selectTime: "Seleziona l'ora", + ticketPricePlaceholder: "Lascia vuoto per eventi gratuiti", + publishing: "Pubblicazione...", + success: "Evento pubblicato con successo!", + error: "Pubblicazione dell'evento non riuscita", + loginToCreate: "Devi accedere per creare un evento.", + requiredFields: "Raccontaci di questo evento. Tutti i campi contrassegnati con * sono obbligatori.", + startDateTime: "Data e ora di inizio", + endDateTime: "Data e ora di fine (opzionale)", + coordinatesOptional: "Coordinate (opzionale)", + coverImage: "Immagine di copertina", + uploadCover: "Carica immagine di copertina", + nip05Recommended: "Verifica NIP-05 consigliata", + nip05Desc: "Aggiungi un identificatore NIP-05 al tuo profilo per verificare la tua identità e costruire fiducia con i partecipanti.", + addNip05: "Aggiungi NIP-05 nelle Impostazioni", + }, + labPage: { + title: "The Lab", + subtitle: "Impara i trick. Cattura i momenti. Connettiti con altri skater", + coachesTab: "Coaching", + filmersTab: "Riprese", + offerCoaching: "OFFRI COACHING", + offerFilming: "OFFRI RIPRESE", + loginToOffer: "Accedi per offrire servizi", + whatToLearn: "COSA VUOI IMPARARE?", + whatContent: "CHE TIPO DI CONTENUTO?", + selectSkillsDesc: "Seleziona le abilità e ti abbineremo dei coach", + selectFilmingDesc: "Seleziona i servizi di ripresa che stai cercando", + searchPlaceholder: "Cerca per nome, posizione o abilità...", + noServicesYet: "ANCORA NESSUN SERVIZIO", + beFirstToOffer: "Sii il primo a offrire servizi di coaching o ripresa alla community!", + skills: "Abilità", + rate: "Tariffa", + perHour: "/ora", + contact: "Contatta", + viewProfile: "Vedi profilo", + noProfilesYet: "Ancora nessun profilo", + beFirstCoach: "Sii il primo a registrarti come coach!", + beFirstFilmer: "Sii il primo a registrarti come filmer!", + yearsExperience: "anni di esperienza", + }, + skills: { + kickflip: "Kickflip", + heelflip: "Heelflip", + ollie: "Ollie", + treflip: "360 Flip", + shuvit: "Shuvit", + hardflip: "Hardflip", + varial: "Varial", + nollie: "Nollie", + fakie: "Fakie", + switch: "Switch", + grind: "Grind", + slide: "Slide", + manual: "Manual", + transition: "Transition", + bowl: "Bowl", + vert: "Vert", + street: "Street", + flatground: "Flatground", + }, + lab: { + title: "The Lab", + subtitle: "Fai salire di livello il tuo skating", + coaches: "Coach", + filmers: "Filmer", + findCoach: "Trova un coach", + becomeCoach: "Diventa coach", + findFilmer: "Trova un filmer", + becomeFilmer: "Diventa filmer", + hourlyRate: "Tariffa oraria", + experience: "Esperienza", + specialties: "Specialità", + availability: "Disponibilità", + bookSession: "Prenota una sessione", + contactCoach: "Contatta il coach", + noCoaches: "Nessun coach trovato nella tua zona", + noFilmers: "Nessun filmer trovato nella tua zona", + }, + shops: { + title: "Skate Shop", + addShop: "Aggiungi Shop", + editShop: "Modifica Shop", + shopDetails: "Dettagli Shop", + shopName: "Nome dello Shop", + hours: "Orari", + phone: "Telefono", + website: "Sito web", + services: "Servizi", + brands: "Marche", + supportLocal: "Sostieni i local", + nip05: "NIP-05 dello Shop", + nip05Hint: "Un handle opzionale che controlli per questo shop (es. shop@tuodominio.com), verificato con la tua chiave. Aggiungine fino a 5.", + }, + becomeFilmer: { + title: "Diventa Filmer", + subtitle: "Cattura i clip migliori per la community", + bioPlaceholder: "Raccontaci la tua esperienza nelle riprese e la tua attrezzatura...", + specialtiesPlaceholder: "es. fisheye, teleobiettivo, drone, montaggio", + selectSpecialties: "Seleziona le tue specialità", + hourlyRate: "Tariffa oraria (sats)", + ratePlaceholder: "es. 5000", + locationPlaceholder: "La tua città o zona", + portfolioUrl: "URL portfolio", + portfolioPlaceholder: "Link ai tuoi lavori (YouTube, Instagram, ecc.)", + publishing: "Pubblicazione profilo...", + success: "Profilo filmer creato!", + error: "Creazione del profilo non riuscita", + }, + food: { + title: "Spot del cibo", + subtitle: "Fai il pieno prima o dopo la tua sessione", + addFood: "Aggiungi Spot food", + categories: { + all: "Tutti", + burgers: "Burger", + pizza: "Pizza", + tacos: "Tacos", + coffee: "Caffè", + drinks: "Bevande", + snacks: "Snack", + }, + skaterFriendly: "A misura di skater", + nearSpots: "Vicino agli Skate Spot", + }, + profile: { + posts: "Post", + spots: "Spot", + events: "Eventi", + following: "Seguiti", + followers: "Follower", + editProfile: "Modifica profilo", + follow: "Segui", + unfollow: "Smetti di seguire", + noPostsYet: "Ancora nessun post", + noBio: "Ancora nessuna bio", + zapProfile: "Zap questo skater", + }, + becomeCoach: { + title: "Diventa Coach", + subtitle: "Condividi le tue abilità e aiuta altri skater a progredire", + bioPlaceholder: "Raccontaci il tuo background nello skate e il tuo stile di insegnamento...", + skillsPlaceholder: "es. kickflip, heelflip, grind, bowl", + selectSkills: "Seleziona le abilità che puoi insegnare", + hourlyRate: "Tariffa oraria (sats)", + ratePlaceholder: "es. 5000", + locationPlaceholder: "La tua città o zona", + publishing: "Pubblicazione profilo...", + success: "Profilo coach creato!", + error: "Creazione del profilo non riuscita", + }, + weather: { + title: "Meteo", + current: "Condizioni attuali", + forecast: "Previsioni", + humidity: "Umidità", + wind: "Vento", + feelsLike: "Percepita", + goodForSkating: "Ottimo per skatare!", + notIdeal: "Condizioni non ideali", + allWeather: "Qualsiasi meteo", + goodWeather: "Bel tempo", + perfectWeather: "Meteo perfetto", + }, + errors: { + somethingWentWrong: "Qualcosa è andato storto", + tryAgainLater: "Riprova più tardi", + notFound: "Non trovato", + pageNotFound: "Pagina non trovata", + unauthorized: "Non autorizzato", + loginRequired: "Accedi per continuare", + networkError: "Errore di rete", + checkConnection: "Controlla la tua connessione a internet", + invalidInput: "Input non valido", + requiredField: "Questo campo è obbligatorio", + }, + time: { + today: "Oggi", + yesterday: "Ieri", + tomorrow: "Domani", + thisWeek: "Questa settimana", + nextWeek: "La prossima settimana", + thisMonth: "Questo mese", + justNow: "Proprio ora", + minutesAgo: "{{count}} minuti fa", + hoursAgo: "{{count}} ore fa", + daysAgo: "{{count}} giorni fa", + }, + spotDetail: { + postedBy: "Pubblicato da", + getDirections: "Ottieni indicazioni", + reviews: "Recensioni", + noReviews: "Ancora nessuna recensione", + beFirstReview: "Sii il primo a recensire questo spot!", + writeReview: "Scrivi una recensione", + submitReview: "Invia recensione", + rating: "Valutazione", + reviewPlaceholder: "Condividi la tua esperienza in questo spot...", + relatedSpots: "Spot nelle vicinanze", + }, + eventDetail: { + organizedBy: "Organizzato da", + eventInfo: "Info evento", + location: "Posizione", + dateTime: "Data e ora", + price: "Prezzo", + attendeeCount: "{{count}} partecipanti", + interested: "Interessato", + going: "Partecipo", + notGoing: "Non partecipo", + share: "Condividi evento", + }, + venueAccess: { + title: "Pass di accesso", + desc: "Emetti un pass firmato per un rider così può dimostrare l'accesso all'ingresso — mostra la sua card e chiunque può scansionare il QR per verificarla.", + active: "{{count}} attivi", + revoked: "{{count}} revocati", + issue: "Emetti un pass", + verifyHint: "Verificato tramite scansione — non serve alcuna app o account per controllare.", + publicTitle: "Pass di accesso", + publicDesc: "Questo locale emette pass di accesso. Scansiona la card di un rider all'ingresso per verificarla.", + badge: "Pass", + sellerHint: "Il locale di questo venditore emette pass di accesso", + }, + zaps: { + zapButton: "Zap", + sendZap: "Invia Zap", + zapAmount: "Importo dello Zap", + customAmount: "Importo personalizzato", + addMessage: "Aggiungi un messaggio (opzionale)", + sending: "Invio...", + sent: "Zap inviato!", + failed: "Zap non riuscito", + received: "Hai ricevuto uno zap!", + }, + rewards: { + title: "Ricompense", + yourPoints: "I tuoi punti", + earnPoints: "Guadagna punti", + redeemPoints: "Riscatta punti", + leaderboard: "Classifica", + achievements: "Obiettivi", + dailyTasks: "Attività giornaliere", + weeklyTasks: "Attività settimanali", + }, + errorsUi: { + slammedTitle: "Che slam", + slammedBody: "Qualcosa ha fatto inciampare questa schermata. Il tuo account e i tuoi dati sono al sicuro — rimettiamoci in carreggiata.", + tryAgain: "Riprova", + reloadApp: "Ricarica l'app", + pageSlammedTitle: "Questa pagina è caduta", + pageSlammedBody: "Qualcosa su questa schermata è inciampato. Il tuo account e i tuoi dati sono al sicuro. Di solito una rapida ricarica risolve.", + reload: "Ricarica", + goBack: "Torna indietro", + }, + backup: { + title: "Salva il tuo accesso", + subtitle: "Richiede 10 secondi — fallo una volta", + message: "Il tuo codice di recupero è l'unico modo per rientrare nel tuo account. Salvalo e potrai accedere da qualsiasi dispositivo.", + warning: "Se lo perdi non c'è reset — nessuna email, nessun recupero password.", + backupNow: "Salvalo ora", + confirmed: "L'ho salvato", + remindLater: "Più tardi", + }, + bootUi: { + ariaLoading: "Caricamento di SkateSpots", + ariaReady: "SkateSpots pronto", + ready: "Pronto", + statusWaking: "Risveglio della rete", + statusTuning: "Sintonizzazione dei relay", + statusPulling: "Recupero degli spot", + statusDropping: "Drop in", + }, + footer: { + vibedWith: "Vibes con", + poweredBy: "Alimentato da", + openSource: "Open Source", + contribute: "Contribuisci", + decentralized: "Decentralizzato", + communityOwned: "Di proprietà della community", + }, + role: { + owner: "Proprietario", + admin: "Admin", + organiser: "Organizzatore", + verifiedOwner: "Proprietario verificato", + }, + nfc: { + write: "Scrivi su tag NFC", + written: "Tag scritto", + writtenDesc: "Avvicina il tag a un telefono per aprire la pagina di verifica.", + failed: "Impossibile scrivere il tag", + }, + collectionUi: { + namePlaceholder: "Viaggio a Barcellona 2024", + descriptionPlaceholder: "I miei spot preferiti dal viaggio a Barcellona...", + }, + toastsUi: { + followingSuccess: "Seguito con successo", + followingSuccessDesc: "Questo utente è ora nella tua rete", + followFailed: "Impossibile seguire", + unfollowSuccess: "Hai smesso di seguire", + unfollowSuccessDesc: "Rimosso dalla tua rete", + unfollowFailed: "Impossibile smettere di seguire", + reportThanks: "Grazie — inviato in revisione", + reportFailed: "Impossibile inviare la segnalazione", + savedOffline: "Salvato offline", + savedOfflineDesc: "Lo pubblicheremo automaticamente quando tornerai online.", + cacheCleaned: "Cache pulita", + cacheCleanedDesc: "Rimossi {{count}} spot vecchi dalla cache", + cacheCleared: "Cache svuotata", + cacheClearedDesc: "Tutti gli spot in cache sono stati rimossi", + backOnline: "Di nuovo online", + backOnlineDesc: "Inviate {{count}} azioni salvate.", + postQueued: "Post in coda", + postQueuedDesc: "Il tuo post sarà pubblicato quando tornerai online", + invalidIdentifier: "Identificatore non valido. Usa npub1..., utente@dominio.com o pubkey esadecimale", + notASpotThanks: "Grazie — inviato in revisione", + notASpotThanksDesc: "Nessun rancore: questo segnala il segnaposto come fuori tema così le persone possono decidere da sole.", + notASpotFailed: "Impossibile inviare la segnalazione", + pleaseTryAgain: "Riprova.", + relayUnreachable: "Impossibile raggiungere alcun relay — controlla la connessione e riprova.", + loginToReport: "Accedi per segnalare uno spot.", + zapLoginRequired: "Accesso richiesto", + zapLoginRequiredDesc: "Devi aver effettuato l'accesso per inviare uno zap.", + zapEventNotFound: "Evento non trovato", + zapEventNotFoundDesc: "Impossibile trovare l'evento da zappare.", + zapAuthorNotFound: "Autore non trovato", + zapAuthorNotFoundDesc: "Impossibile trovare l'autore di questo elemento.", + zapSuccess: "Zap riuscito!", + zapSuccessNwcDesc: "Hai inviato {{amount}} sats tramite NWC all'autore.", + zapSuccessDesc: "Hai inviato {{amount}} sats all'autore.", + zapStatusUnknown: "Stato del pagamento sconosciuto", + zapStatusUnknownDesc: "Il tuo portafoglio potrebbe ancora stare regolando questo zap. Controlla il portafoglio prima di riprovare — non pagare due volte.", + zapNwcFailed: "Pagamento NWC non riuscito", + zapWeblnFailed: "Pagamento WebLN non riuscito", + zapFallingBack: "{{error}}. Passo ad altri metodi di pagamento...", + zapFailed: "Zap non riuscito", + zapUnknownNwcError: "Errore NWC sconosciuto", + zapUnknownWeblnError: "Errore WebLN sconosciuto", + nwcInvalidUri: "URI NWC non valido", + nwcInvalidUriDesc: "Controlla la stringa di connessione e riprova.", + nwcExists: "Connessione già esistente", + nwcExistsDesc: "Questo portafoglio è già connesso.", + nwcConnected: "Portafoglio connesso", + nwcConnectedDesc: "Connesso con successo a {{alias}}.", + nwcFailed: "Connessione non riuscita", + nwcFailedDesc: "Impossibile connettersi al portafoglio: {{error}}", + nwcUnknownError: "Si è verificato un errore sconosciuto", + nwcDisconnected: "Portafoglio disconnesso", + nwcDisconnectedDesc: "La connessione al portafoglio è stata rimossa.", + deleteApproveAmber: "Approva in Amber", + deleteApproveAmberDesc: "Amber si aprirà — tocca Approva per confermare l'eliminazione.", + deleteCancelled: "Annullato", + deleteCancelledDesc: "Hai rifiutato la richiesta in Amber.", + deleteCouldntSign: "Impossibile firmare", + deletePublishing: "Passaggio 2/2: Pubblicazione…", + deletePublishingDesc: "Invio dell'eliminazione ai relay.", + deleteStuck: "Bloccato su PUBBLICAZIONE", + deleteStuckDesc: "Passaggio relay non riuscito: {{error}}. È stato firmato correttamente; il relay non ha confermato.", + stashMerged: "Modifiche unite da un altro dispositivo", + stashMergedDesc: "Il tuo Stash è stato modificato altrove — entrambe le serie di modifiche sono state mantenute.", + statusUpdated: "Stato aggiornato!", + statusUpdatedDesc: "Il tuo stato di skating è ora visibile agli altri.", + statusFailed: "Impossibile impostare lo stato", + statusCleared: "Stato cancellato", + statusClearedDesc: "Il tuo stato è stato rimosso.", + statusClearFailed: "Impossibile cancellare lo stato", + nutzapEnabled: "Ricezione Nutzap abilitata", + nutzapEnabledDesc: "Ora puoi ricevere zap in ecash!", + nutzapSetupFailed: "Configurazione non riuscita", + nutzapUnavailable: "Invio Nutzap non disponibile", + tokenReceived: "Token ricevuto", + tokenReceivedDesc: "Token Cashu riscattato con successo!", + receiveFailed: "Ricezione non riuscita", + invalidAmount: "Importo non valido", + invalidAmountDesc: "Inserisci un importo valido", + tokenCreated: "Token creato", + sendFailed: "Invio non riuscito", + mintAdded: "Mint aggiunto", + mintAddedDesc: "Mint aggiunto e considerato attendibile con successo", + mintAddFailed: "Impossibile aggiungere il mint", + mintRemoved: "Mint rimosso", + mintRemoveFailed: "Impossibile rimuovere il mint", + paymentReceived: "Pagamento ricevuto", + paymentReceivedDesc: "Ricevuti con successo {{amount}} sats!", + paymentSent: "Pagamento inviato", + paymentSentDesc: "Pagamento Lightning completato con successo", + loginRequired: "Accesso richiesto", + loginToFollowFounder: "Accedi per seguire il fondatore", + alreadyFollowing: "Già seguito", + alreadyFollowingDesc: "Stai già seguendo {{name}}!", + couldNotComplete: "Impossibile completare l'operazione", + tryAgainLower: "Riprova.", + couldNotLoadProfile: "Impossibile caricare il profilo", + couldNotLoadProfileDesc: "Controlla la tua connessione a internet e prova ad aggiornare.", + undone: "Annullato", + undoneDesc: "Tornato a neutro — né nascosto né approvato.", + confirmed: "Confermato", + confirmedDesc: "Approvato — esce da questa coda.", + hiddenToast: "Nascosto", + couldNotUndo: "Impossibile annullare", + couldNotConfirm: "Impossibile confermare", + deleteFailed: "Eliminazione non riuscita", + somethingWentWrong: "Qualcosa è andato storto", + }, + seoUi: { + becomeBuilderTitle: "Diventa Builder - SkateSpots", + becomeBuilderDesc: "Elenca i tuoi servizi di costruzione di ramp, park e DIY — cosa costruisci, materiali e scala.", + tradesTitle: "I miei scambi — SkateSpots", + tradesDesc: "Gestisci i tuoi scambi del mercatino, le conferme e la reputazione.", + eventsTitle: "Eventi e tour di skate - SkateSpots", + eventsDesc: "Scopri eventi di skateboard, competizioni, tour e session vicino a te.", + editShopDesc: "Modifica il tuo skate shop.", + createTourDesc: "Organizza skate tour — tour di gemme nascoste locali, viaggi su strada nazionali, avventure internazionali o competizioni di distruzione in stile KOTR.", + deckDesignerTitle: "Deck Designer — SkateSpots DIY", + deckDesignerDesc: "Progetta il profilo di uno skateboard o longboard, poi esporta un template stampabile 1:1, SVG o DXF — concavo, kick, passo dei truck e fori per i truck inclusi.", + createEventTitle: "Crea un evento di skate - SkateSpots", + createEventDesc: "Crea un nuovo evento di skateboard per la community.", + editTourDesc: "Modifica il tuo skate tour — aggiorna tappe, date e dettagli.", + walletTitle: "Portafoglio - SkateSpots", + walletDesc: "Connetti il tuo portafoglio Lightning per inviare zap a skater e creatori di spot.", + becomePhotographerTitle: "Diventa fotografo - SkateSpots", + becomePhotographerDesc: "Crea il tuo profilo di fotografia di skate — macchine fotografiche, obiettivi, illuminazione e servizi.", + newsletterTitle: "Newsletter - SkateSpots", + newsletterDesc: "Uscite settimanali dalla community di SkateSpots. Aggiornamenti dell'app, nuovi spot, eventi e le persone che tengono vivo lo skateboard.", + homeTitle: "SkateSpots - Scopri spot di skateboard in tutto il mondo", + zapLeaderboardTitle: "Classifiche degli Zap - SkateSpots", + zapLeaderboardDesc: "Gli spot più zappati e i membri della community che li sostengono.", + adminReviewTitle: "Coda di revisione — SkateSpots", + gearSwapTitle: "Scambio Gear - SkateSpots", + gearSwapDesc: "Compra e vendi gear da skate usato con altri skater. Tavole, truck, ruote, scarpe e altro.", + donateTitle: "Dona — SkateSpots", + donateDesc: "Sostieni SkateSpots — Lightning, on-chain privato (pagamenti silenziosi) o finanzia la build su Angor.", + verifyCardTitle: "Verifica — SkateSpots", + verifyCardDesc: "Verifica una card o un pass di accesso di SkateSpots.", + mapTitle: "Mappa degli Skate Spot - SkateSpots", + mapDesc: "Esplora gli spot di skateboard in tutto il mondo sulla nostra mappa interattiva.", + diyTitle: "DIY — Fai da te | SkateSpots", + diyDesc: "Guide, strumenti aperti e progetti per costruire le tue tavole, ramp e spot in cemento — e le persone e i luoghi con cui farlo.", + appShopTitle: "App Shop — SkateSpots", + becomeSkaterTitle: "Unisciti alla directory degli skater - SkateSpots", + becomeSkaterDesc: "Crea il tuo profilo di skater così la community può trovarti.", + marketplaceTitle: "Mercatino - SkateSpots", + marketplaceDesc: "Compra e vendi gear da skateboard sul Plebeian Market decentralizzato.", + becomeEditorTitle: "Diventa montatore video - SkateSpots", + becomeEditorDesc: "Crea il tuo profilo di montatore video di skateboard su SkateSpots.", + amberCallbackTitle: "Accesso con Amber - SkateSpots", + amberCallbackDesc: "Completamento del tuo accesso con Amber (NIP-55).", + supportersTitle: "Sostenitori - SkateSpots", + supportersDesc: "La community che tiene vivo SkateSpots — sostenitori, collaboratori, partner e amici.", + becomeCoachTitle: "Diventa Coach - SkateSpots", + becomeCoachDesc: "Crea il tuo profilo di coach di skateboard.", + riderCardTitle: "Skater Card — SkateSpots", + riderCardDesc: "Crea la tua Skater License o Park Access Card di SkateSpots stampabile.", + editEventDesc: "Modifica il tuo evento di skateboard.", + createShopTitle: "Aggiungi uno Skate Shop - SkateSpots", + createShopDesc: "Aggiungi il tuo skate shop alla community.", + deckCostTitle: "Calcolatore del costo delle tavole — SkateSpots DIY", + deckCostDesc: "Calcola quanto costa produrre una tavola — manodopera, attrezzatura, materiali, tempi di lavorazione, imballaggio e margine — e un prezzo di vendita equo.", + pyramidTitle: "Classifiche a piramide - SkateSpots", + pyramidDesc: "I migliori contributori e leader della community.", + foodTitle: "Cibo vicino agli Spot - SkateSpots", + foodDesc: "Trova ristoranti, caffè e opzioni di cibo vicino agli spot di skateboard.", + createListingTitle: "Metti in vendita il Gear - SkateSpots", + createListingDesc: "Metti in vendita gear da skateboard o trova il gear che vuoi comprare.", + becomeFilmerTitle: "Diventa Filmer - SkateSpots", + becomeFilmerDesc: "Crea il tuo profilo di riprese di skateboard.", + skatersTitle: "Skater - SkateSpots", + skatersDesc: "Scopri gli skater della community di SkateSpots. Sfoglia per stile, stance, livello e posizione.", + communityStatsTitle: "Statistiche della community — SkateSpots", + communityStatsDesc: "Metriche live della community di SkateSpots — spot, eventi, coach, filmer, montatori, tour e crescita nel tempo. Prese direttamente da Nostr.", + labTitle: "The Lab - SkateSpots", + labDesc: "Trova coach di skateboard, filmer, fotografi e montatori video.", + stashTitle: "Il mio Stash - SkateSpots", + stashDesc: "Gestisci il tuo inventario privato di gear. Tieni traccia di ciò che possiedi, di ciò che vuoi vendere o scambiare.", + bountyLeaderboardTitle: "Mappa e guadagna - SkateSpots", + bountyLeaderboardDesc: "Mappa spot e shop, guadagna zap dalla community. Vedi i migliori contributori.", + spotCollectionsTitle: "Le mie collezioni di Spot - SkateSpots", + spotCollectionsDesc: "Organizza i tuoi spot preferiti in collezioni personalizzate", + mintsTitle: "Cashu Mints — SkateSpots", + mintsDesc: "Sfoglia i mint Cashu, controlla il loro stato e aggiungine uno al tuo portafoglio.", + }, + miscUi: { + openingCamera: "Apertura fotocamera…", + usePhoneCamera: "Usa la fotocamera del telefono, poi torna qui", + startingCamera: "Avvio fotocamera...", + cameraAccessRequired: "Accesso alla fotocamera richiesto", + cameraAccessHint: "Consenti l'accesso alla fotocamera nelle impostazioni del browser, o usa il selettore di file qui sotto.", + cameraErrorTitle: "Errore fotocamera", + cameraErrorDesc: "Impossibile aprire la fotocamera. Controlla i permessi dell'app nelle Impostazioni.", + cameraDeniedTitle: "Accesso alla fotocamera negato", + cameraDeniedDesc: "Consenti l'accesso alla fotocamera nelle impostazioni del browser.", + uploadFromGallery: "Carica dalla galleria", + uploading: "Caricamento...", + usePhoto: "Usa foto", + earningPotential: "Potenziale di guadagno", + qualityExcellent: "Eccellente!", + qualityGood: "Buono", + qualityBasic: "Base", + qualityGettingStarted: "Agli inizi", + qualityLocationAdded: "Posizione aggiunta", + qualityOnePhoto: "Almeno 1 foto", + qualityThreePhotos: "3+ foto", + qualityMoreAngles: "Più angolazioni = meglio", + qualityDescription: "Descrizione", + qualityDetailedDesc: "Descrizione dettagliata (100+ caratteri)", + qualityContact: "Info di contatto", + qualityPhoneOrWebsite: "Telefono o sito web", + qualityHours: "Orari di apertura", + qualitySpotType: "Tipo di spot selezionato", + failedToLoadComments: "Impossibile caricare i commenti", + commentsTitle: "Commenti", + noCommentsYet: "Ancora nessun commento", + beFirstComment: "Sii il primo a condividere i tuoi pensieri!", + removeMember: "Rimuovi membro", + whoIsThisFor: "Per chi è questo profilo?", + individual: "Individuale", + individualDesc: "Una singola persona", + collective: "Collettivo", + collectiveDesc: "Crew, studio o azienda", + membersLabel: "Membri", + dismissReport: "Ignora segnalazione", + reportedBy: "segnalato da", + completingLoginAmber: "Completamento dell'accesso con Amber...", + entityMembersHint: "Aggiungi gli account Nostr della tua crew. Ogni membro conferma il proprio spot con la sua chiave — fino ad allora appaiono come “in attesa”.", + entityVerifiedHint: "L'appartenenza è verificata per ogni membro — nessuno può essere aggiunto alla tua crew senza confermare dal proprio account.", + entityInvalidPubkey: "Inserisci un npub, nprofile o pubkey esadecimale di 64 caratteri valido.", + entityAlreadyAdded: "Quel membro è già stato aggiunto.", + offline: "Offline", + connected: "Connesso", + offlineMode: "Modalità offline", + allFeaturesAvailable: "Tutte le funzionalità disponibili", + browsingCachedSpots: "Sfogliando gli spot in cache", + queuedActions: "{{count}} azioni in coda", + syncing: "Sincronizzazione", + publishingWhenStable: "Pubblicazione quando la connessione si stabilizza...", + willPublishOnline: "Sarà pubblicato quando torni online", + availableOffline: "Disponibili offline:", + offlineBrowseSpots: "Sfoglia gli spot visualizzati in precedenza", + offlineViewDetails: "Visualizza i dettagli degli spot in cache", + offlineKeepActing: "Continua ad agire — post, RSVP, annunci e messaggi vengono messi in coda e inviati quando ti riconnetti", + }, + sasquatchGuide: { + homeTitle: "Benvenuto su SkateSpots! 🦧", + homeMessage: "Ehi, sono The Sasquatch. Custode di tavole, sentieri e corse selvagge. Benvenuto nel mondo dello skate senza limiti su Nostr—niente cravatte, niente pubblicità, solo skater che si aprono la propria strada. Qui possiedi i tuoi trick, i tuoi dati e guadagni persino Bitcoin per lasciare il segno. Connettiti con skater del tuo quartiere o dall'altro capo del mondo. Nessuna regola se non lo shredding, nessuna impronta se non la tua.", + homeQ1: "Pianificami 3 giorni a Barcellona", + homeQ2: "Trova spot per principianti", + homeQ3: "Ci sono eventi in programma?", + homeQ4: "Statistiche della community", + homeQ5: "Trova coach vicino a me", + homeQ6: "Gear in vendita?", + homeQ7: "Cos'è Nostr?", + homeQ8: "È gratis?", + homeLearnMore: "Scopri di più", + onboardingTitle: "Per iniziare 🚀", + onboardingMessage: "Lascia che ti aiuti a capire le basi! Nostr è la tua identità, Bitcoin Lightning ti permette di guadagnare sats per i tuoi contributi, e gli zap sono mance istantanee. Chiedimi qualsiasi cosa su come iniziare!", + onboardingQ1: "Come si fa l'accesso?", + onboardingQ2: "Cos'è Nostr?", + onboardingQ3: "Come funziona Nostr?", + onboardingQ4: "Cos'è Cashu?", + onboardingQ5: "Come si usa il portafoglio Cashu?", + onboardingQ6: "Cosa sono i mint?", + onboardingQ7: "Cosa sono gli zap?", + onboardingQ8: "Cos'è NWC?", + onboardingStart: "Inizia a esplorare", + onboardingLogin: "Accedi per iniziare", + labTitle: "Benvenuto a The Lab! 🎓", + labMessage: "È qui che succede la magia! Trova coach che possono insegnarti qualsiasi cosa, dai kickflip ai darkslide, o connettiti con i filmer per catturare le tue sessioni migliori. Filtra per abilità, controlla la loro esperienza e prenota una sessione. Ricorda — tutti hanno iniziato da qualche parte!", + labQ1: "Trova coach", + labQ2: "Trova filmer", + labQ3: "Trova fotografi", + labQ4: "Trova montatori video", + labQ5: "Trova un costruttore di ramp", + labQ6: "Cos'è The Lab?", + labQ7: "Cos'è un builder?", + labQ8: "Come si offre coaching?", + labLogin: "Accedi per offrire servizi", + crewsTitle: "Crew 🤘", + crewsMessage: "Le Crew sono la tua famiglia dello skate ancorata alla mappa — le persone con cui skati INSIEME, non quelle che assumi. Ogni crew ha il suo territorio sulla mappa, spot di casa, membri e un manifesto. I membri confermano con le proprie chiavi, quindi la lista è autentica. Crea la tua o trova la tua gente!", + crewsQ1: "Cosa sono le crew?", + crewsQ2: "Come si avvia una crew?", + crewsQ3: "In cosa è diversa una crew da The Lab?", + crewsQ4: "Come confermano i membri?", + crewsQ5: "Cos'è Nostr?", + crewsQ6: "Come funzionano gli zap?", + crewsLogin: "Accedi per creare una Crew", + }, + supportUi: { + keepMapFree: "Mantieni la mappa gratuita", + keepMapFreeDesc: "Niente pubblicità, niente tracciamento, niente VC. I tuoi sats pagano l'hosting, il nodo AI e il relay.", + thankYou: "Grazie! ⚡", + satsKeepMapFree: "I tuoi sats mantengono la mappa gratuita.", + keptFreeNext: "Hai appena mantenuto SkateSpots gratuito per il prossimo skater.", + scanToPay: "Scansiona per pagare", + zapSkateSpots: "Zap SkateSpots", + payQuietly: "Paga in silenzio", + pickAmount: "Scegli un importo", + enterAmount: "Inserisci quanti sats vuoi inviare.", + couldNotStartPayment: "Impossibile avviare il pagamento.", + customAmountAria: "Importo personalizzato in sats", + commentPlaceholder: "Di' qualcosa (opzionale — solo zap pubblici)", + publicZapTitle: "Zap pubblico con il tuo commento", + loginToZapTitle: "Accedi per inviare uno zap pubblico", + anonymousTitle: "Anonimo — nessun accesso, nessuna traccia", + copyLightningTitle: "Copia l'indirizzo lightning", + copiedSuffix: "{{label}} copiato", + invoiceLabel: "Fattura", + addressLabel: "Indirizzo", + notAPurchase: "Un sostegno, non un acquisto — non compra nulla e non ci sono rimborsi. Il merchandising e Sasquatch Pro sono separati. La tua posizione e la tua identità non sono mai coinvolte in un pagamento silenzioso.", + }, + statusUi: { + quickStatus: "Stato rapido", + skating: "Skating", + skatingDesc: "Sta skatando", + filming: "Riprese", + filmingDesc: "Ripresa di trick", + lookingForSesh: "Cerco una sesh", + lookingForSeshDesc: "Vuole skatare con altri", + coaching: "Coaching", + coachingDesc: "Insegnamento/coaching", + chilling: "Relax", + chillingDesc: "In giro allo spot", + onMyWay: "In arrivo", + onMyWayDesc: "Diretto verso uno spot", + takingABreak: "Pausa", + takingABreakDesc: "Riposo/idratazione", + doneForToday: "Finito per oggi", + doneForTodayDesc: "Ha finito di skatare", + }, +}; export default itBatch7; diff --git a/src/i18n/it/batch8.ts b/src/i18n/it/batch8.ts index 763f3be..cb2c0f0 100644 --- a/src/i18n/it/batch8.ts +++ b/src/i18n/it/batch8.ts @@ -1,4 +1,629 @@ -/** it — batch 8. Filled by the translation pass; empty until then. */ -const itBatch8 = {}; +/** + * it — batch 8. Traduzione italiana di `deckCostUi`, `becomeRolesUi`, + * `weatherUi`, `skaterLabelsUi`, `notifyUi` e `legacyMiscUi`. + * + * Termini di skate/marca mantenuti in inglese (Deck, Trucks, Wheels, Bearings, + * Griptape, Spot, Park, Bowl, Vert, Crew, Stash, The Lab, sats, Nostr, + * Lightning) e `{{placeholder}}` preservati alla lettera. + */ +const itBatch8 = { + deckCostUi: { + presetPrompt: 'Dai un nome a questo preset', + presetDefaultName: 'Preset {{n}}', + summaryCopied: 'Riepilogo copiato', + couldNotCopy: 'Impossibile copiare', + resetConfirm: 'Reimpostare tutto ai valori di esempio?', + logoTooLarge: 'Logo troppo grande (max 500 KB)', + loginToFill: 'Accedi per compilare dal tuo profilo Nostr', + filledFromProfile: 'Compilato dal tuo profilo Nostr', + warnRetailBelowOne: 'Il ricarico al dettaglio è sotto 1× — venderesti in perdita.', + warnWholesaleAboveRetail: "Il ricarico all'ingrosso dovrebbe essere inferiore a quello al dettaglio.", + warnZeroBoards: '{{count}} riga/righe usano 0 tavole — il costo di quella riga viene ignorato.', + warnFixedNoBoards: 'I costi mensili fissi sono impostati ma le tavole/mese sono 0, quindi il costo operativo viene ignorato.', + warnNoMaterials: 'Nessun costo per i materiali — aggiungi almeno un materiale.', + warnEquipmentOverhead: "Attrezzatura + spese generali superano il 60% del costo — questo modello presuppone volumi elevati; controlla il numero di tavole.", + warnOneBoard: "Parte dell'attrezzatura è ripartita su una sola tavola — aumenta il numero di tavole per ammortizzarla.", + templateStarterName: 'Base per hobby', + templateStarterBlurb: 'Poche righe, nessun costo fisso', + templateShopName: 'Piccolo laboratorio', + templateShopBlurb: 'Scheda completa con affitto e spese generali', + currency: 'Valuta', + noCurrencyMatches: 'Nessuna valuta corrisponde.', + ratesUnavailable: "Tassi in tempo reale non disponibili — la modifica cambia solo l'etichetta.", + liveRates: 'tassi BTC in tempo reale · sats inclusi', + chipCost: 'costo', + chipSell: 'vendita', + chipTotal: 'totale', + startFrom: 'Parti da', + advancedToggleHint: 'Mostra le tariffe e gli scarti per operazione, il setup del lotto, le imposte e la curva costo-quantità', + advanced: 'Avanzato', + simple: 'Semplice', + sectionLabor: 'Manodopera', + sectionEquipment: 'Attrezzatura', + sectionOperations: 'Spese operative', + sectionMaterials: 'Materiali', + sectionProcesses: 'Costi di lavorazione', + sectionPackaging: 'Imballaggio', + sectionMargins: 'Margini', + subtotalLoaded: '{{value}}/ora onnicomprensivo', + subtotalPerBoard: '{{value}}/tavola', + hourlyRate: 'Tariffa oraria ({{unit}})', + labourBurden: 'Oneri sul lavoro (×)', + loadedRate: 'Tariffa onnicomprensiva', + loadedRateHintBefore: 'Tariffa onnicomprensiva = salario × oneri sul lavoro (tasse e assicurazioni a carico del datore). Affitto e bollette vanno in ', + loadedRateHintAfter: ' — non contarli due volte.', + colEquipment: 'Attrezzatura', + colCostUnit: 'Costo ({{unit}})', + colCost: 'Costo', + colSetupH: 'Setup (h)', + colLifetimeBoards: 'Tavole per ciclo di vita', + colPerBoard: 'Per tavola', + colMaterial: 'Materiale', + colOrderUnit: 'Ordine ({{unit}})', + colShipUnit: 'Spedizione ({{unit}})', + colBoardsOrder: 'Tavole / ordine', + colOrderM: 'Ordine (m)', + colUnloadM: 'Scarico (m)', + colOrder: 'Ordine', + colShipping: 'Spedizione', + colOrderMin: 'Ordine (min)', + colUnloadMin: 'Scarico (min)', + colProcess: 'Lavorazione', + colTimeM: 'Tempo (m)', + colBoardsRun: 'Tavole / ciclo', + colRateHr: 'Tariffa/ora (0 = laboratorio)', + colRateHrShort: 'Tariffa/ora', + colScrapPct: 'Scarto %', + colTimeMin: 'Tempo (min)', + colPackaging: 'Imballaggio', + colTimeBoardM: 'Tempo/tavola (m)', + colTimeBoardMin: 'Tempo/tavola (min)', + colMaterialsBoardUnit: 'Materiali/tavola ({{unit}})', + colMaterialsBoard: 'Materiali/tavola', + equipmentPerBoard: 'Attrezzatura per tavola:', + materialsPerBoard: 'Materiali per tavola:', + processesPerBoard: 'Lavorazioni per tavola:', + packagingPerBoard: 'Imballaggio per tavola:', + perBoard: 'Per tavola:', + addEquipment: 'Aggiungi attrezzatura', + addMaterial: 'Aggiungi materiale', + addProcess: 'Aggiungi lavorazione', + addPackagingStep: 'Aggiungi fase di imballaggio', + duplicate: 'Duplica', + remove: 'Rimuovi', + boardsPerMonth: 'Tavole / mese', + rentPerMonth: 'Affitto / mese', + utilitiesPerMonth: 'Utenze / mese', + subscriptionsPerMonth: 'Abbonamenti / mese', + markup: 'Ricarico (×)', + wholesaleMarkup: "Ricarico all'ingrosso (×)", + scrapWaste: 'Scarto / sfrido (%)', + quantityDecks: 'Quantità (deck)', + targetMonthlyProfit: 'Profitto mensile obiettivo ({{unit}})', + costNoPackaging: 'Costo / tavola (senza imballaggio)', + costWithPackaging: 'Costo / tavola (con imballaggio)', + batchSetupHours: 'Setup del lotto (h / ciclo)', + batchSetupCost: 'Costo setup lotto ({{unit}} / ciclo)', + taxVat: 'Imposta / IVA (%)', + quoteTax: 'Imposta preventivo', + includedInPrice: 'Inclusa nel prezzo', + addedOnTop: 'Aggiunta sopra', + setupPerBoard: 'Setup / tavola', + marginNoteBefore: 'Ricarico {{markup}}× ≈ ', + grossMargin: '{{pct}}% di margine lordo', + marginNoteAfter: ' · lo scarto del {{waste}}% è ripartito sulle tavole buone.', + sellingPriceNoPackaging: 'Prezzo di vendita · senza imballaggio', + sellingPriceWithPackaging: 'Prezzo di vendita · con imballaggio', + profitPerDeck: 'Profitto / deck', + wholesalePerDeck: 'Ingrosso / deck', + orderTotalQty: 'Totale ordine ({{qty}})', + orderTotal: 'Totale ordine', + breakeven: 'Punto di pareggio', + breakevenPerMonth: '{{count}}/mese', + targetDecksHint: 'Per ricavare {{amount}}/mese oltre ai costi fissi, vendi {{decks}} deck/mese.', + priceIncludesTax: "Il prezzo include il {{pct}}% di imposta: {{amount}} del totale.", + plusTax: 'Più il {{pct}}% di imposta: {{amount}} → {{total}} in totale.', + costVsQuantity: 'Costo rispetto alla quantità (setup ammortizzato)', + deckOne: 'deck', + deckOther: 'deck', + perDeckSuffix: '/ deck', + orderSuffix: 'ordine {{amount}}', + shippingNotIncluded: "Non include la spedizione all'acquirente.", + clientQuoteDetails: 'Dettagli del preventivo cliente (per il PDF)', + fillFromProfileTitle: 'Compila nome, sito web, NIP-05, Lightning e npub dal tuo profilo Nostr', + fillFromProfile: 'Compila dal profilo', + businessName: 'Nome attività / negozio', + email: 'Email', + phone: 'Telefono', + website: 'Sito web', + address: 'Indirizzo', + quoteNumber: 'N. preventivo', + nextNumber: 'Prossimo numero', + validDays: 'Valido (giorni)', + nip05: 'NIP-05', + lightningAddress: 'Indirizzo Lightning', + nostrNpub: 'Nostr (npub)', + depositPct: 'Acconto dovuto subito (%)', + deliveryTerms: 'Termini di consegna (Incoterm, opzionale)', + paymentMethods: 'Metodi di pagamento', + paymentTerms: 'Termini di pagamento', + paymentDetails: 'Dettagli di pagamento', + notesTerms: 'Note / condizioni', + changeLogo: 'Cambia logo', + addLogo: 'Aggiungi logo', + incotermNone: 'Nessuno', + incotermExw: 'EXW — ritiro presso il venditore', + incotermFca: "FCA — consegnato al vettore dell'acquirente", + incotermDap: "DAP — consegnato all'indirizzo dell'acquirente", + incotermDdp: 'DDP — consegnato, dazi pagati', + payMethodCash: 'Contanti', + payMethodLightning: 'Lightning', + payMethodCashu: 'Cashu', + payMethodBank: 'Bonifico bancario', + payMethodCard: 'Carta', + payMethodOther: 'Altro', + listDeckAtPrice: 'Metti in vendita un deck a questo prezzo', + getItMade: 'Fallo realizzare — trova un builder', + savePreset: 'Salva preset', + load: 'Carica', + export: 'Esporta', + import: 'Importa', + reset: 'Reimposta', + deletePreset: 'Elimina preset', + exportPdfFull: 'PDF — scheda completa', + exportPdfQuote: 'PDF — preventivo cliente', + exportPng: 'Immagine PNG', + exportXlsx: 'Cartella XLSX', + exportCsv: 'CSV (foglio di calcolo)', + exportMarkdown: 'Markdown', + exportJson: 'JSON (backup)', + exportCopySummary: 'Copia riepilogo', + }, + becomeRolesUi: { + artist: { + seoTitle: 'Diventa Designer / Artista - SkateSpots', + seoDescription: 'Pubblica il tuo design e la tua arte skate — grafiche per deck, loghi, poster, merch e altro.', + heading: 'Designer / Artista', + tagline: 'Grafiche per deck, loghi, poster, merch — porta la tua arte sulla scena', + noun: 'artista', + rateLabel: 'Tariffa', + portfolioLabel: 'Portfolio / Link al negozio', + sectionWhatYouMake: 'Cosa realizzi', + sectionMedium: 'Tecnica', + sectionSoftwareTools: 'Software e strumenti', + deliverablesPlaceholder: 'es. file pronti per la stampa, file sorgente, grafiche per deck', + turnaroundPlaceholder: 'es. 3–5 giorni', + }, + graffiti: { + seoTitle: 'Offri Graffiti / Murales - SkateSpots', + seoDescription: 'Pubblica il tuo lavoro di graffiti e murales — pezzi, murales, arte per skatepark e altro.', + heading: 'Graffiti Artist / Muralista', + tagline: 'Pezzi, murales, arte per skatepark — colora la scena', + noun: 'graffiti artist', + rateLabel: 'Tariffa', + portfolioLabel: 'Link al portfolio (IG, sito)', + sectionStyle: 'Stile', + sectionMedium: 'Tecnica', + sectionWorkContext: 'Contesto di lavoro', + crewLabel: 'Crew di graffiti', + crewPlaceholder: 'La tua crew di writing (opzionale)', + crewHelper: 'Separata dalla tua crew skate — i writer con cui dipingi.', + surfacesPlaceholder: 'es. cemento, mattoni, muri autorizzati', + maxSizePlaceholder: 'es. fino a 10 m', + }, + musician: { + seoTitle: 'Aggiungi un profilo musicale - SkateSpots', + seoDescription: 'Skate e fai musica? Pubblica la tua band o il tuo progetto solista — generi, strumenti e link.', + heading: 'Musicista / Band', + tagline: 'Skate e fai musica? Fatti ingaggiare per demo, jam e after-party', + noun: 'musicista', + rateLabel: 'Tariffa di ingaggio', + portfolioLabel: 'Link al sito / EPK', + sectionGenre: 'Genere', + sectionInstruments: 'Strumenti e ruolo', + actLabel: 'Tipo di formazione', + actPlaceholder: 'solista / band / dj / producer', + spotifyLabel: 'Spotify', + spotifyPlaceholder: 'https://open.spotify.com/…', + bandcampLabel: 'Bandcamp', + bandcampPlaceholder: 'https://…bandcamp.com', + soundcloudLabel: 'SoundCloud', + soundcloudPlaceholder: 'https://soundcloud.com/…', + youtubeLabel: 'YouTube', + youtubePlaceholder: 'https://youtube.com/…', + setLengthPlaceholder: 'es. 30–45 min', + techRiderPlaceholder: 'es. PA, microfoni, backline', + }, + judge: { + seoTitle: 'Giudice di eventi di skate - SkateSpots', + seoDescription: 'Presentati come giudice di eventi di skate — Game of S.K.A.T.E., jam best trick, contest, serie am e tappe del world tour. Fatti ingaggiare per gestire eventi equi e credibili.', + heading: 'Giudice di eventi skate', + tagline: 'Dal Game of S.K.A.T.E. in flat al World Destruction Tour — gestisci in modo equo e credibile', + noun: 'giudice', + rateLabel: 'Tariffa giornaliera / Compenso', + portfolioLabel: 'Archivio risultati / link al profilo', + sectionEventFormats: 'Formati di evento', + sectionSpecialty: 'Specialità', + sectionLevelCircuit: 'Livello / Circuito', + eventsJudgedLabel: 'Eventi giudicati', + eventsJudgedPlaceholder: 'es. 40+ contest, 3 tappe del World Tour', + eventsJudgedHelper: 'Eventi, gare o tour importanti che hai diretto.', + travelPlaceholder: 'es. regionale / nazionale / internazionale', + certificationsPlaceholder: 'es. corso nazionale di giudizio', + }, + organizer: { + seoTitle: 'Organizza eventi di skate - SkateSpots', + seoDescription: 'Presentati come organizzatore di eventi di skate — jam di strada, best trick, contest, meetup, demo e tappe di tour. Fatti scoprire e ingaggiare per gestire la sessione.', + heading: 'Organizzatore di eventi', + tagline: 'Jam, contest, meetup e demo — organizza la sessione e unisci la scena', + noun: 'organizzatore', + rateLabel: 'Compenso / Budget evento', + portfolioLabel: 'Link a eventi passati / risultati', + sectionEventTypes: 'Tipi di evento', + sectionWhatYouHandle: 'Di cosa ti occupi', + sectionScale: 'Portata', + eventsHostedLabel: 'Eventi organizzati', + eventsHostedPlaceholder: 'es. 25 jam, 3 gare cittadine', + eventsHostedHelper: 'Eventi, gare o meetup importanti che hai organizzato.', + insurancePlaceholder: 'es. responsabilità civile inclusa', + permitsPlaceholder: 'es. permessi comunali gestiti', + }, + tattoo: { + seoTitle: 'Diventa tatuatore - SkateSpots', + seoDescription: 'Pubblica i tuoi lavori di tatuaggio per la scena skate — stili, flash, custom e altro.', + heading: 'Tatuatore', + tagline: 'Inchiostro per la scena — flash, custom, fine line e altro', + noun: 'tatuatore', + rateLabel: 'Tariffa / a ora', + portfolioLabel: 'Link al portfolio (IG, sito)', + sectionStyles: 'Stili', + sectionMethod: 'Metodo', + studioLabel: 'Studio / Negozio', + studioPlaceholder: 'Nome dello studio (opzionale)', + booksOpenLabel: 'Prenotazioni aperte', + booksOpenHelper: 'Al momento accetti prenotazioni?', + depositPlaceholder: 'es. 50 EUR non rimborsabili', + minimumPlaceholder: 'es. 80 EUR', + }, + trainer: { + seoTitle: 'Diventa trainer / fisioterapista - SkateSpots', + seoDescription: 'Aiuta gli skater a diventare forti e a restare in salute — forza, mobilità, prevenzione degli infortuni e recupero.', + heading: 'Trainer / Fisioterapista', + tagline: 'Forza, mobilità, prevenzione degli infortuni e recupero per gli skater', + noun: 'trainer', + rateLabel: 'Tariffa / a sessione', + portfolioLabel: 'Link al profilo / prenotazione', + sectionFocus: 'Focus', + sectionInjuries: 'Infortuni che tratti', + sectionCredentialsSetting: 'Qualifiche e contesto', + credentialsPlaceholder: 'es. laurea in fisioterapia, CSCS…', + credentialsHelper: 'Elenca qualifiche reali — gli skater si fidano delle credenziali verificabili.', + remoteLabel: 'Da remoto / online', + remoteHelper: 'Offri coaching o consulenze online?', + modalitiesPlaceholder: 'es. manuale, S&C, dry needling', + }, + barber: { + seoTitle: 'Diventa barbiere / parrucchiere - SkateSpots', + seoDescription: 'Pubblica il tuo salone o la tua poltrona per la scena skate — tagli, fade, rasatura della barba, colore e altro. Fatti prenotare dagli skater.', + heading: 'Barbiere / Parrucchiere', + tagline: 'Tagli, fade e barba per la scena — in salone o a domicilio', + noun: 'barbiere', + rateLabel: 'Prezzo / taglio', + portfolioLabel: 'Galleria tagli / link IG', + sectionWhatYouOffer: 'Cosa offri', + sectionSignatureStyles: 'Stili distintivi', + sectionSetting: 'Contesto', + studioLabel: 'Negozio / Studio', + studioPlaceholder: 'Nome del salone o studio (opzionale)', + booksOpenLabel: 'Prenotazioni aperte', + booksOpenHelper: 'Al momento accetti prenotazioni?', + durationPlaceholder: 'es. 30–45 min', + }, + }, + weatherUi: { + condition: { + clearSky: 'Cielo sereno', + mainlyClear: 'Prevalentemente sereno', + partlyCloudy: 'Parzialmente nuvoloso', + overcast: 'Coperto', + foggy: 'Nebbioso', + depositingRimeFog: 'Nebbia con deposito di brina', + lightDrizzle: 'Pioggerellina leggera', + moderateDrizzle: 'Pioggerellina moderata', + denseDrizzle: 'Pioggerellina intensa', + lightFreezingDrizzle: 'Pioggerellina gelata leggera', + denseFreezingDrizzle: 'Pioggerellina gelata intensa', + slightRain: 'Pioggia debole', + moderateRain: 'Pioggia moderata', + heavyRain: 'Pioggia intensa', + lightFreezingRain: 'Pioggia gelata leggera', + heavyFreezingRain: 'Pioggia gelata intensa', + slightSnow: 'Neve debole', + moderateSnow: 'Neve moderata', + heavySnow: 'Neve intensa', + snowGrains: 'Granelli di neve', + slightRainShowers: 'Rovesci di pioggia deboli', + moderateRainShowers: 'Rovesci di pioggia moderati', + violentRainShowers: 'Rovesci di pioggia violenti', + slightSnowShowers: 'Rovesci di neve deboli', + heavySnowShowers: 'Rovesci di neve intensi', + thunderstorm: 'Temporale', + thunderstormSlightHail: 'Temporale con grandine debole', + thunderstormHeavyHail: 'Temporale con grandine forte', + unknown: 'Sconosciuto', + }, + aqi: { + good: 'Buono', + moderate: 'Moderato', + unhealthySensitive: 'Malsano per i gruppi sensibili', + unhealthy: 'Malsano', + veryUnhealthy: 'Molto malsano', + hazardous: 'Pericoloso', + }, + skateability: { + perfect: 'Perfetto', + good: 'Buono', + okay: 'Discreto', + poor: 'Scarso', + bad: 'Cattivo', + unrideable: 'Non praticabile', + }, + reason: { + currentlyRaining: 'Al momento piove', + raining: 'Piove', + snowing: 'Nevica', + thunderstorm: 'Temporale', + freezingTemperature: 'Temperatura sotto zero', + veryCold: 'Molto freddo', + extremelyHot: 'Caldo estremo', + veryHot: 'Molto caldo', + veryStrongWind: 'Vento molto forte', + strongWind: 'Vento forte', + moderateWind: 'Vento moderato', + veryUnhealthyAir: 'Aria molto malsana', + unhealthyAir: 'Aria malsana', + moderateAirQuality: "Qualità dell'aria moderata", + veryHumid: 'Molto umido', + humid: 'Umido', + extremeUv: 'UV estremi - usa la protezione solare', + highUv: 'UV alti - consigliata la protezione solare', + perfectConditions: 'Condizioni perfette per lo skate', + }, + }, + skaterLabelsUi: { + stance: { + regular: 'Regular', + goofy: 'Goofy', + }, + style: { + street: 'Street', + park: 'Park', + vert: 'Vert', + transition: 'Transizione', + bowl: 'Bowl', + cruising: 'Passeggio', + downhill: 'Discesa', + freestyle: 'Freestyle', + ledges: 'Bordi', + stairs: 'Scale', + diy: 'DIY', + }, + level: { + grom: 'Novizio', + intermediate: 'Intermedio', + advanced: 'Avanzato', + ripper: 'Mostro', + }, + sponsor: { + title: 'Sponsor principale', + gold: 'Oro', + silver: 'Argento', + partner: 'Partner', + }, + }, + notifyUi: { + activity: { + zappedWithAmount: 'Hai ricevuto uno zap di {{sats}} sats', + zapped: 'Hai ricevuto uno zap', + liked: 'A qualcuno è piaciuto il tuo post', + reposted: 'Qualcuno ti ha ripostato', + mentioned: 'Qualcuno ti ha menzionato', + replied: 'Qualcuno ti ha risposto', + rsvp: 'Qualcuno ha confermato la presenza al tuo evento', + eventUpdated: 'Un evento a cui partecipi è stato aggiornato', + newActivity: 'Nuova attività', + tapToOpen: 'Tocca per aprire SkateSpots', + }, + crew: { + inviteTitle: 'Invito alla crew', + inviteBody: 'Sei invitato in {{crew}}', + addedTitle: 'Sei stato aggiunto a una crew', + addedBody: '{{crew}} — conferma per entrare', + joinRequestTitle: 'Richiesta di accesso', + joinRequestBody: 'Qualcuno vuole entrare in {{name}}', + }, + dm: { + title: 'Nuovo messaggio diretto', + body: 'Tocca per leggerlo', + }, + trade: { + confirm: 'Conferma uno scambio', + confirmed: 'Scambio confermato', + newOffer: 'Nuova offerta sul tuo annuncio', + counter: 'Controproposta', + accepted: 'Offerta accettata 🎉', + declined: 'Offerta rifiutata', + withdrawn: 'Offerta ritirata', + }, + newsletter: { + drop: 'Nuova uscita SkateSpots', + }, + summary: { + moreUpdates: '{{count}} altri aggiornamenti', + openToCatchUp: 'Apri SkateSpots per recuperare', + }, + }, + legacyMiscUi: { + hostingGoing: '{{count}} partecipanti', + hostingInterested: '{{count}} interessati', + hostingPostUpdate: 'Pubblica aggiornamento', + hostingEdit: 'Modifica', + hostingLoginToSee: 'Accedi per vedere gli eventi che organizzi.', + hostingEmptyTitle: 'Non stai ancora organizzando nulla', + hostingEmptyBody: 'Organizza una jam, una gara o una sessione. Crea un evento e gli skater potranno confermare la presenza, ricevere aggiornamenti e passare.', + hostingCreateEvent: 'Crea un evento', + hostingUpcoming: 'In arrivo · {{count}}', + hostingPast: 'Passati · {{count}}', + sponsorPartners: 'Partner', + sponsorTitleSponsor: 'Sponsor principale', + sponsorPlatformPartners: 'Partner della piattaforma', + reportsUntitled: '(senza titolo)', + reportsResolveFailed: "Impossibile risolvere l'evento segnalato (potrebbe essere stato eliminato, o la segnalazione riguarda un profilo invece di un post).", + reportsLookAtIt: 'Guardalo', + reportsNoReports: 'Ancora nessuna segnalazione. O va tutto bene, o nessuno ha trovato il pulsante.', + statusSetYourStatus: 'Imposta il tuo stato', + statusSetDesc: 'Fai sapere agli altri cosa stai facendo. Il tuo stato sarà visibile sul tuo profilo e negli spot collegati.', + statusClear: 'Rimuovi', + statusOrWriteOwn: 'Oppure scrivi il tuo', + statusCustomPlaceholder: 'Cosa stai facendo?', + statusLinkToSpot: 'Collega a uno Spot (opzionale)', + statusSpotSelected: 'Spot selezionato', + statusSearchSpots: 'Cerca spot...', + statusNoSpotsFound: 'Nessuno spot trovato.', + statusSelectSpot: 'Seleziona uno spot', + statusAutoClearAfter: 'Rimozione automatica dopo: {{time}}', + statusExpMin: '{{count}} min', + statusExpOneHour: '1 ora', + statusExpHours: '{{count}} ore', + statusExpOneDay: '1 giorno', + statusExpDays: '{{count}} giorni', + statusSlider15: '15 min', + statusSlider1h: '1 h', + statusSlider4h: '4 h', + statusSlider24h: '24 h', + statusSetting: 'Impostazione stato...', + statusSet: 'Imposta stato', + statusSomethingWrong: 'Qualcosa è andato storto', + seoProfileTitle: 'Profilo - SkateSpots', + seoViewProfile: 'Vedi profilo.', + bannerAlt: 'Banner', + openInCordn: 'Apri in Cordn', + modHelp: 'Nascondi pubblica org.skatespots.moderation / hidden; Conferma pubblica … / verified; Annulla pubblica … / cleared (di nuovo neutro). Tutte e tre sono etichette pubbliche e reversibili — nulla viene mai eliminato dai relay.', + zapNoActiveMint: 'Nessuna mint Cashu attiva trovata.', + altProfile: 'Profilo', + altCardPreview: 'Anteprima card', + altCard: 'Card', + altCaptured: 'Acquisita', + ariaPrevPhoto: 'Foto precedente', + ariaNextPhoto: 'Foto successiva', + ariaCommentOptions: 'Opzioni del commento', + ariaMessageConversation: 'Conversazione di messaggi', + exportTitle: 'SkateSpots — Calcolatore del costo del Deck', + exportQuoteTitle: 'PREVENTIVO', + exportPngTitle: 'Costo del Deck', + exportMarkdownTitle: 'Calcolatore del costo del Deck', + exportSectionLabor: 'Manodopera', + exportSectionEquipment: 'Attrezzatura', + exportSectionOperations: 'Spese operative', + exportSectionMaterials: 'Materiali', + exportSectionProcesses: 'Costi di lavorazione', + exportSectionPackaging: 'Imballaggio', + exportSectionResult: 'Risultato', + exportLabelOperations: 'Operazioni', + exportLabelProcesses: 'Lavorazioni', + exportKvHourlyRate: 'Tariffa oraria', + exportKvLabourBurden: 'Oneri sul lavoro', + exportKvLoadedRate: 'Tariffa onnicomprensiva', + exportKvEquipmentPerBoard: 'Attrezzatura per tavola', + exportKvBoardsPerMonth: 'Tavole / mese', + exportKvRentPerMonth: 'Affitto / mese', + exportKvUtilitiesPerMonth: 'Utenze / mese', + exportKvSubscriptionsPerMonth: 'Abbonamenti / mese', + exportKvPerBoard: 'Per tavola', + exportKvMaterialsPerBoard: 'Materiali per tavola', + exportKvProcessesPerBoard: 'Lavorazioni per tavola', + exportKvPackagingPerBoard: 'Imballaggio per tavola', + exportKvMarkup: 'Ricarico', + exportMarkupValue: '{{markup}}× (≈ {{pct}}% di margine lordo)', + exportKvWasteEffective: 'Scarto (effettivo)', + exportKvCostNoPack: 'Costo / tavola (senza imballaggio)', + exportKvCostWithPack: 'Costo / tavola (con imballaggio)', + exportKvBatchSetupPerBoard: 'Setup lotto / tavola', + exportKvTax: 'Imposta ({{pct}}%)', + exportKvTaxIncluded: 'Imposta ({{pct}}%, inclusa)', + exportKvSellingNoPack: 'Prezzo di vendita (senza imballaggio)', + exportKvSellingWithPack: 'Prezzo di vendita (con imballaggio)', + exportShippingNote: "Non include la spedizione all'acquirente.", + exportGeneratedBy: 'Generato da SkateSpots · skate-spots.org', + exportGeneratedWith: 'Generato con SkateSpots · skate-spots.org', + exportDetailSetup: '+ {{hours}} h di setup', + exportDetailBoards: '{{boards}} tavole', + exportDetailShip: '+ {{amount}} di spedizione', + exportDetailMinutes: '{{minutes}} min', + exportDetailPerBoards: '/ {{boards}} tavole', + exportDetailScrap: '{{pct}}% di scarto', + exportDetailMaterials: '{{materials}} materiali', + exportQuoteRef: 'Rif. {{ref}}', + exportQuoteLineItem: 'Deck per skateboard personalizzato', + exportQuoteLineItemQty: 'Deck per skateboard personalizzato × {{qty}}', + exportQuoteLineDesc: 'Costruito a mano, rifinito e imballato. Quantità 1.', + exportQuoteLineDescQty: 'Costruito a mano, rifinito e imballato. {{price}} ciascuno.', + exportQuoteSubtotal: 'Subtotale', + exportQuoteSubtotalQty: 'Subtotale ({{qty}} deck)', + exportQuoteTax: 'Imposta / IVA ({{pct}}%)', + exportQuoteTotal: 'Totale', + exportQuoteTotalQty: 'Totale ({{qty}} deck)', + exportQuoteIncludesTax: 'Include il {{pct}}% di imposta ({{amount}})', + exportQuoteDeposit: 'Acconto dovuto ora ({{pct}}%)', + exportQuoteBalance: 'Saldo alla consegna', + exportQuotePayment: 'Pagamento: {{value}}', + exportQuoteLightning: 'Lightning: {{value}}', + exportQuoteDetails: 'Dettagli: {{value}}', + exportQuoteTerms: 'Condizioni: {{value}}', + exportQuoteDelivery: 'Consegna: {{value}}', + exportQuoteValidUntil: 'Non include la spedizione. Preventivo valido fino al {{date}}.', + exportPngSellingWith: 'PREZZO DI VENDITA · CON IMBALLAGGIO', + exportPngSellingNo: 'PREZZO DI VENDITA · SENZA IMBALLAGGIO', + exportPngCostWith: 'COSTO / TAVOLA (CON IMBALLAGGIO)', + exportPngDeposit: 'Acconto {{pct}}%: {{amount}}', + exportXlsxSummary: 'Riepilogo', + exportXlsxCurrency: 'Valuta', + exportXlsxDate: 'Data', + exportXlsxOperationsPerBoard: 'Operazioni per tavola', + exportColCost: 'Costo', + exportColSetupH: 'Setup (h)', + exportColBoards: 'Tavole', + exportColPerBoard: 'Per tavola', + exportColMaterial: 'Materiale', + exportColOrderCost: 'Costo ordine', + exportColShipping: 'Spedizione', + exportColOrderMin: 'Ordine (min)', + exportColUnloadMin: 'Scarico (min)', + exportColProcess: 'Lavorazione', + exportColTimeMin: 'Tempo (min)', + exportColTimeBoardMin: 'Tempo/tavola (min)', + exportColMaterialsBoard: 'Materiali/tavola', + exportCopyTitle: 'Costo del Deck — {{currency}}', + exportCopyCostWith: 'Costo / tavola (con imballaggio): {{amount}}', + exportCopySellingNo: 'Prezzo di vendita (senza imballaggio): {{amount}}', + exportCopySellingWith: 'Prezzo di vendita (con imballaggio): {{amount}}', + exportCopyBreakdown: 'Attrezzatura {{equipment}} · Operazioni {{operations}} · Materiali {{materials}} · Lavorazioni {{processes}} · Imballaggio {{packaging}}', + exportMdHourlyRate: 'Tariffa oraria: {{value}}', + exportMdLabourBurden: 'Oneri sul lavoro: {{value}}', + exportMdLoadedRate: 'Tariffa onnicomprensiva: {{value}}', + exportMdBoardsPerMonth: 'Tavole/mese: {{value}}', + exportMdRent: 'Affitto: {{value}}', + exportMdUtilities: 'Utenze: {{value}}', + exportMdSubscriptions: 'Abbonamenti: {{value}}', + exportMdPerBoard: 'Per tavola: {{value}}', + exportMdMarkupWaste: 'Ricarico: {{markup}}× (≈ {{pct}}% di margine lordo) · Scarto: {{waste}}%', + exportMdCostNoPack: 'Costo/tavola (senza imballaggio): {{value}}', + exportMdCostWithPack: 'Costo/tavola (con imballaggio): {{value}}', + exportMdBatchSetup: 'Setup lotto/tavola: {{value}}', + exportMdSellingNo: 'Prezzo di vendita (senza imballaggio): {{value}}', + exportMdSellingWith: 'Prezzo di vendita (con imballaggio): {{value}}', + exportMdDisclaimer: "Non include la spedizione all'acquirente. Generato da SkateSpots.", + }, +}; export default itBatch8;