/** * it — translation drift fragment. Keys added after the main batches * (language picker search, trust, marketplace guidelines, clothing craft, * weather additions, Cordn MLS chat). Composed LAST in `index.ts` via a deep * merge so these nested keys complement — never replace — the batch namespaces. */ const drift = { nav: { searchLanguages: "Cerca lingue…", noLanguages: "Nessuna lingua trovata", }, mapPage: { searchSuggestPlaces: "Luoghi", }, mapUi: { firstRunTitle: "Inizia", firstRunAddSpot: "Aggiungi il tuo primo spot", firstRunJoinCrew: "Unisciti a una crew", firstRunStartCrew: "Avvia la tua crew", firstRunWallet: "Configura il tuo wallet", forecastDays: "Previsioni a {{count}} giorni", }, spotUi: { forecastDays: "Previsioni a {{count}} giorni", }, marketUi: { trades: { stateRevoked: "revocato", stateVerifying: "verifica", }, loadFailed: "Impossibile raggiungere i relay. Controlla la connessione e riprova.", statusPending: "in sospeso", offers: { closeDeal: "Chiudi l'accordo", loadFailed: "Impossibile caricare le offerte. Controlla la connessione e riprova.", }, pay: { nonSats: "Questa offerta è prezzata in {{currency}}. Il pagamento in-app è solo in sats. Regola direttamente con il venditore.", unsupported: "Questo codice di pagamento (una richiesta Cashu) non è ancora supportato. Chiedi al venditore una fattura o un indirizzo Lightning.", }, escrowRequest: { lockedNotSent: "I fondi sono bloccati in escrow e salvati su questo dispositivo, ma la richiesta non è stata inviata. Riapri l'annuncio per riprovare. Non pagare di nuovo.", mintLabel: "Mint (dove sono bloccati i fondi)", sellerMintHint: "Il venditore preferisce questo mint; i fondi bloccati qui sono i più facili da riscattare per lui.", mintHint: "L'escrow risiede in questo mint. Il venditore riscatta qui, quindi scegline uno di cui vi fidate entrambi.", noMints: "Nessun mint disponibile", p2pkUnsupported: "Questo mint non dichiara il supporto P2PK (NUT-11), quindi l'escrow non può essere bloccato qui. Scegli un altro mint.", }, }, labUi: { offerClothing: "Offri abbigliamento", tabClothing: "Abbigliamento", empty: { clothingTitle: "Ancora nessun designer di abbigliamento", clothingBody: "Sii il primo a offrire abbigliamento personalizzato, kit di squadra e apparel per la scena.", }, craftFields: { sizing: "Gamma di taglie", samples: "Campioni / prototipi", customization: "Personalizzazione", }, }, socialUi: { coordinator: { ourDefaultTitle: "Coordinatore SkateSpots", ourDefaultDesc: "SkateSpots gestisce un coordinatore su relay.skate-spots.org. Usalo per impostazione predefinita, oppure gestisci il tuo — un coordinatore vede solo testo cifrato e metadati, mai i tuoi messaggi.", useOurs: "Usa il coordinatore SkateSpots", }, crewCoordinator: { encryptedChat: "Chat crittografata", privateChatName: "Chat privata", privateChatDesc: "Chat di gruppo con forward secrecy (MLS) tramite un coordinatore.", privateChatDescFull: "La chat privata viene creata una volta da un admin, poi i membri si uniscono.", chatRowDesc: "Tutti nella crew — sigillato con la chiave di ogni membro (NIP-17).", openChat: "Apri", setUpChat: "Configura", joinChat: "Unisciti", checking: "Verifica…", openInAnotherApp: "Apri in un'altra app", openInCordnWeb: "Cordn (web)", openCordnGroup: "Apri la chat della crew", copyForStaircase: "Copia per Staircase", }, dms: { refresh: "Aggiorna", crews: "Crew", crewFounder: "Fondatore", crewMember: "Membro", crewOpen: "Apri", crewSetUp: "Configura", }, form: { cordnGroup: "Gruppo Cordn", cordnGroupHint: "Opzionale: incolla il link del gruppo da Staircase o Cordn web. La tua crew ottiene così una vera chat MLS end-to-end, ospitata sul nostro coordinatore.", }, bell: { dmsUnread: "{{count}} nuovo/i messaggio/i cifrato/i", }, }, settingsUi: { loginDialog: { welcomeSubtitleBrowse: "Registrati o accedi — oppure continua a esplorare.", extensionCard: "Estensione del browser", signerCard: "App firmataria", secretKeyLink: "Usa invece una chiave segreta", whereBunker: "Dove trovo un bunker?", }, settingsPage: { trust: "Fiducia", trustSub: "Fonti e visualizzazione", }, }, walletUi: { trust: { mute: "Silenzia", muted: "Silenziato", mutedDesc: "Non vedrai i suoi contenuti.", muteFailed: "Impossibile silenziare. Riprova.", loginToMute: "Accedi per silenziare.", attributedNetwork: "Da persone nella tua rete", attributedProviderHouse: "Dal provider di fiducia della community", attributedProviderCustom: "Dal provider che hai scelto", howItWorks: "Come funziona la fiducia", flaggedNoticeTitle: "Segnalato da skater affidabili", flaggedNoticeDesc: "Fai attenzione. Persone affidabili della rete hanno segnalato questo account.", flaggedReporterFollow: "{{count}} che segui", flaggedReporterNetwork: "{{count}} nella tua rete", flaggedReporterOther: "{{count}} altri account", flaggedReport: "Segnala", flaggedDismiss: "Ignora", bucketVerified: "Verificato", bucketUnknown: "Sconosciuto", bucketFlagged: "Segnalato", bucketVerifiedDesc: "Qualcuno nella tua rete garantisce per questo account.", bucketUnknownDesc: "Nessuno nella tua rete ha ancora garantito per questo account.", bucketFlaggedDesc: "Persone affidabili hanno segnalato questo account.", reportedByTrusted: "Segnalato da {{count}} persone affidabili", }, }, trustUi: { alertsTitle: "Avvisi di rete", alertsDesc: "Account che segui e che persone affidabili hanno segnalato o silenziato.", alertsEmpty: "Nessun avviso. Controlliamo gli account che segui per segnalazioni affidabili.", alertsReported: "Segnalato da {{count}} persone affidabili", alertsMuted: "Silenziato da {{count}} persone affidabili", alertsIgnore: "Ignora", alertsUnfollow: "Smetti di seguire", alertsLogin: "Accedi per vedere gli avvisi sugli account che segui.", providerTitle: "Provider", providerDesc: "I punteggi provengono da un provider che scegli tu. Il provider della community è quello predefinito.", useCommunity: "Usa il provider della community", setProvider: "Imposta un provider", customPubkeyPlaceholder: "npub o pubkey esadecimale del provider", customRelayPlaceholder: "wss://relay.esempio.com", invalidProvider: "Inserisci un npub valido o una pubkey esadecimale di 64 caratteri, e un relay wss://.", publishFailed: "Impossibile pubblicare il provider. Riprova.", providerSaved: "Provider aggiornato.", loggedOutProvider: "Accedi per scegliere un provider.", showMarks: "Mostra i contrassegni di fiducia", showMarksDesc: "Contrassegni verificati e sconosciuti. Le segnalazioni vengono sempre mostrate.", sourceLabel: "Fonte", sourceHouse: "Provider di fiducia della community", sourceCustom: "Il tuo provider", loggedOut: "Accedi per scegliere il tuo provider di fiducia.", seoTitle: "Come funziona la fiducia", seoDescription: "Come SkateSpots mostra la fiducia: tre stati, da dove provengono i punteggi e perché l'assenza non è diffidenza.", title: "Come funziona la fiducia", intro: "Qui la fiducia è un segnale, non un verdetto. Deriva da chi conosci, o da un provider che scegli. Non classifichiamo le persone a livello globale.", statesTitle: "Tre stati", verifiedTitle: "Verificato", verifiedDesc: "Qualcuno nella tua rete garantisce per questo account: un amico di un amico, o il provider che hai scelto.", unknownTitle: "Sconosciuto", unknownDesc: "Nessuno ha ancora garantito. È qui che inizia ogni nuovo account.", flaggedTitle: "Segnalato", flaggedDesc: "Persone affidabili hanno segnalato questo account. È un avviso a guardare più da vicino, non una prova.", absenceTitle: "Nessun badge non è diffidenza", absenceDesc: "La maggior parte degli account non mostra nulla. Significa che nessuno nella tua rete ha ancora garantito, non che qualcosa non va. Non leggere mai un contrassegno mancante come negativo.", sourceTitle: "Chi lo calcola", sourceDesc: "Per impostazione predefinita usiamo la tua rete. Puoi anche scegliere un provider di fiducia che pubblica punteggi firmati su Nostr (NIP-85), o disattivare la visualizzazione. Le segnalazioni vengono sempre mostrate, perché sono un segnale di sicurezza.", endorsementTitle: "La presenza non è un'approvazione", endorsementDesc: "Un contrassegno verificato significa che qualcuno ha garantito, non che la persona sia buona. Una segnalazione significa che persone affidabili l'hanno segnalata, non che sia colpevole. Controlla i dettagli prima di decidere.", povTitle: "Dipende dal punto di vista", povDesc: "Un punteggio è relativo a chi guarda. Un rank di un provider o di una persona non è confrontabile con un altro, e non ne presentiamo mai uno come fatto oggettivo.", settingsCta: "Gestisci nelle impostazioni", }, marketTerms: { link: "Linee guida del Marketplace", seoTitle: "Linee guida del Marketplace", seoDescription: "Come funzionano gli annunci di attrezzatura SkateSpots: peer-to-peer, compratore attento, e le regole.", title: "Linee guida del Marketplace", intro: "SkateSpots è una bacheca di attrezzatura peer-to-peer. Tratti direttamente con l'altra persona: non custodiamo fondi, non spediamo articoli e non risolviamo controversie.", howTitle: "Come funziona", howBody: "Pubblica attrezzatura, contatta il venditore in privato e regola direttamente (contanti, Lightning o scambio). Non ci sono carrello né checkout.", rulesTitle: "Cosa non è consentito", rulesBody: "Niente contenuti illegali, pericolosi o per adulti; niente droghe, armi, contraffazioni o merce rubata. Mantieni gli annunci su attrezzatura da skate e articoli correlati.", respectTitle: "Sii rispettoso", respectBody: "Niente abusi, molestie, minacce o odio. I moderatori possono nascondere annunci o account.", trustTitle: "La fiducia è una guida, non una garanzia", trustBody: "I contrassegni di verifica e la reputazione negli scambi sono segnali dalla rete, non promesse. Fai i tuoi controlli prima di scambiare.", trustLink: "Come funziona la fiducia", privacyLink: "Cosa lascia il tuo dispositivo", safetyTitle: "Scambia in sicurezza", safetyBody: "Incontratevi in pubblico per le consegne, usa l'escrow o un deposito di buona fede per le spedizioni, e non inviare mai denaro fuori dall'app.", moderationTitle: "La moderazione è lieve e reversibile", moderationBody: "I contenuti nascosti restano sui relay e possono essere ripristinati; le controversie tra persone spetta a voi risolverle.", }, labOptions: { clothing: { service: { tees: "T-shirt", hoodies: "Felpe e maglioni", pants: "Pantaloni e shorts", jackets: "Giacche e capispalla", kits: "Kit di squadra e maglie", caps: "Cappellini e berretti", socks: "Calzini", accessories: "Borse e accessori", footwear: "Calzature", patches: "Toppe e applicazioni", griptape: "Abbigliamento griptape e deck", onepiece: "Pezzi unici / upcycled", }, serviceDesc: { tees: "T-shirt e top personalizzati", hoodies: "Felpe, girocollo e pantaloni della tuta", pants: "Pantaloni da lavoro, cargo e shorts", jackets: "Giacche da coach, shell e da lavoro", kits: "Kit di squadra, maglie e uniformi", caps: "Cappellini, berretti e copricapi", socks: "Calzini e maglieria", accessories: "Borse, cinture e piccola pelletteria", footwear: "Scarpe personalizzate", patches: "Toppe ricamati e applicazioni", griptape: "Arte su griptape e abbigliamento deck", onepiece: "Pezzi singoli e capi upcycled", }, method: { screenprint: "Serigrafia", dtg: "DTG / stampa diretta su tessuto", embroidery: "Ricamo", cutsew: "Cut & Sew", sublimation: "Sublimazione", heattransfer: "Trasferimento a caldo / vinile", garmentdye: "Tintura in capo", knit: "Maglieria", patchwork: "Patchwork", allover: "Stampa all-over", }, material: { cotton: "Cotone", heavyweight: "Peso pesante", organic: "Biologico / sostenibile", fleece: "Pile", denim: "Denim", canvas: "Canvas", nylon: "Nylon / tecnico", wool: "Merino / lana", leather: "Pelle", recycled: "Riciclato / deadstock", }, }, }, becomeRolesUi: { clothing: { seoTitle: "Diventa designer di abbigliamento - SkateSpots", seoDescription: "Abbigliamento personalizzato, kit di squadra e apparel per la scena.", heading: "Designer di abbigliamento", tagline: "Abbigliamento personalizzato, kit di squadra e apparel per la scena", noun: "designer di abbigliamento", rateLabel: "Tariffa", portfolioLabel: "Link shop / portfolio", sectionWhatYouMake: "Cosa crei", sectionHowYouMake: "Come lo crei", sectionMaterials: "Materiali", minimumPlaceholder: "es. 10 pezzi", turnaroundPlaceholder: "es. 2-3 settimane", sizingPlaceholder: "es. XS-3XL / su misura", samplesHelper: "Offri campioni o prototipi prima di una produzione completa?", customizationPlaceholder: "es. nomi, numeri, grafiche", }, }, weatherUi: { updated: "Aggiornato", refresh: "Aggiorna", unavailable: "Meteo non disponibile.", retry: "Riprova", sunrise: "Alba", sunset: "Tramonto", legendTitle: "Punteggio meteo", legendWeatherOnly: "Solo meteo", }, cordnUi: { shareInvite: 'Invita', shareInviteText: 'Unisciti a {{crew}} — chat privata del crew', inviteCopied: 'Link d’invito copiato', title: "Chat privata", subtitle: "Crittografata end-to-end (MLS) tra i membri della crew. Il coordinatore instrada solo testo cifrato e metadati — non vede mai il contenuto dei messaggi.", notLoggedIn: "Accedi per usare la chat privata della crew.", membersOnly: "Solo i membri della crew possono aprire la chat privata.", connecting: "Connessione…", noCoordinator: "Nessun coordinatore è ancora configurato per questa crew.", noGroupAdmin: "La chat privata di questa crew non è ancora stata creata.", noGroupMember: "Non sei ancora nella chat privata di questa crew.", create: "Crea la chat privata", requestJoin: "Chiedi di unirti", checkInvite: "Controlla l'invito", requested: "Richiesta inviata — un admin della crew la approverà.", noInvite: "Nessun invito in attesa. Chiedi a un admin di approvare la tua richiesta.", placeholder: "Scrivi alla crew…", send: "Invia", refresh: "Aggiorna", requests: "Richieste di adesione", checkRequests: "Controlla le richieste", approve: "Aggiungi", noRequests: "Nessuna richiesta di adesione in sospeso.", inviteHint: "Per ora sei solo tu in questa chat — i membri della crew possono toccare “Chiedi di unirti”, poi li approvi qui.", memberCount: "{{count}} nel gruppo", you: "Tu", groupRef: "Link del gruppo", copyRef: "Copia", copied: "Copiato", attachImage: "Allega immagine", uploading: "Caricamento…", uploadFailed: "Impossibile caricare l'immagine.", bannerTitle: "Questa crew non ha ancora una chat privata", bannerBody: "Configura una chat crittografata end-to-end (MLS) per la tua crew — i membri si uniscono dalla scheda.", bannerCta: "Configura", ready: "Connesso · MLS", errorPrefix: "Impossibile raggiungere il coordinatore", interactiveHint: "Il tuo signer chiede l'approvazione a ogni azione — usa Aggiorna e Invia secondo necessità.", setupDevice: "Configura questo dispositivo", setupDeviceBody: "Questo assegna al dispositivo una chiave propria per la chat privata. Un fondatore la approva una volta.", waitingApproval: "In attesa dell’approvazione del fondatore…", waitingApprovalManual: "In attesa del fondatore. Tocca «Controlla l’invito» dopo l’approvazione.", onboardingFounder1: "Avvia la chat privata.", onboardingFounder2: "Approva i membri che chiedono di unirsi.", onboardingFounder3: "Chatta in privato con la tua crew.", onboardingMember1: "Chiedi di unirti", onboardingMember2: "Il fondatore approva il tuo dispositivo.", onboardingMember3: "Sei dentro — i messaggi sono cifrati.", encryptedNote: "Solo i membri della crew possono leggerlo; il coordinatore inoltra solo messaggi cifrati.", advanced: "Avanzate", coordinator: "Coordinatore", keyPackage: "Pacchetto di chiavi", keyPackageReady: "Pronto su questo dispositivo", keyPackageMissing: "Non configurato su questo dispositivo", members: "Membri", roleFounder: "Fondatore", roleAdmin: "Admin", makeAdmin: "Rendi admin", removeAdmin: "Rimuovi admin", adminAdded: "Membro promosso ad admin.", adminRemoved: "Ruolo admin rimosso.", roleUpdateFailed: "Impossibile aggiornare il ruolo. Riprova.", addReaction: "Aggiungi reazione", deleteMessage: "Elimina messaggio", deleteMessageConfirm: "Eliminare questo messaggio per tutti?", readBy: "Letto da {{count}}", joinRequestTitle: "Richiesta di chat privata", joinRequestFor: "Nuova richiesta di adesione a {{crew}}", joinRequestReview: "Esamina richiesta", joinRequestDismiss: "Ignora richiesta", roleMember: "Membro", qrTitle: "Scansiona per unirti alla chat privata", qrHint: "I membri della crew lo scansionano con la fotocamera del telefono. Il link apre la scheda Chat privata.", sendFailed: "Invio non riuscito — tocca Riprova.", sending: "Invio…", sent: "Inviato", retry: "Riprova", errorUnreachable: "Impossibile raggiungere la chat privata. Controlla la connessione.", errorDetails: "Dettagli", unreachable: "Non raggiungibile", dismiss: "Chiudi", linkDevice: "Collega questo dispositivo", linkDeviceTitle: "Collega un altro dispositivo", linkDeviceHint: "Scansiona questo codice su un dispositivo già presente nella stanza.", linkDeviceNote: "Il codice contiene un pacchetto di chiavi pubbliche. La tua chiave privata resta sul nuovo dispositivo.", waitingDevice: "In attesa dell’altro dispositivo…", addDevice: "Aggiungi un dispositivo", deviceLinked: "Dispositivo aggiunto.", deviceLinkFailed: "Impossibile aggiungere quel dispositivo.", removeMemberConfirm: "Rimuovere {{name}} dalla chat privata? Quel dispositivo perderà l’accesso.", removeMemberFailed: "Impossibile rimuovere quel membro.", reply: "Rispondi", }, communityUi: { link: "Community", title: "Chat della community", subtitle: "Fai domande, condividi feedback e parla con la community di SkateSpots — crittografato end-to-end.", heading: "Community SkateSpots", eyebrow: "Domande e feedback", seoTitle: "Chat della community SkateSpots", seoDescription: "Domande, feedback e chiacchiere della community — crittografate end-to-end.", notLoggedIn: "Accedi per entrare nella chat della community.", noGroupAdmin: "La stanza della community non è ancora stata creata.", noGroupMember: "Non sei ancora nella stanza della community.", create: "Crea la stanza della community", setupDeviceBody: "Questo assegna a questo dispositivo una chiave per la stanza della community. Un admin o il bot la approva una volta.", onboardingFounder1: "Crea la stanza della community.", onboardingFounder2: "Approva il bot della community e i nuovi membri.", onboardingFounder3: "Rispondi alle domande e raccogli feedback.", onboardingMember1: "Chiedi di entrare nella stanza della community.", onboardingMember2: "Un admin o il bot della community approva il tuo dispositivo.", onboardingMember3: "Fai domande, condividi feedback o saluta e basta.", encryptedNote: "Solo i membri della stanza possono leggerlo; il coordinatore inoltra solo messaggi crittografati.", shareInviteText: "Entra nella chat della community SkateSpots", qrTitle: "Scansiona per entrare nella chat della community", qrHint: "Scansiona con la fotocamera del telefono per aprire la chat della community e chiedere di entrare.", owner: "Proprietario", botName: "Bot della community", howItWorks: "I nuovi dispositivi vengono approvati una volta da un admin o dal bot della community. I messaggi inviati prima che tu entri non ti sono visibili.", feedbackNote: "Domande e feedback sono benvenuti. Sii gentile — è una stanza condivisa.", }, translateUi: { title: "Traduzione dei messaggi", translate: "Traduci", translating: "Traduzione in corso…", showOriginal: "Mostra originale", showTranslation: "Mostra traduzione", translatedFrom: "Tradotto da {{language}}", failed: "Traduzione non riuscita. Riprova.", unsupported: "Questa coppia di lingue non è ancora disponibile.", pilotNote: "Pilota: solo inglese ↔ spagnolo.", autoTranslate: "Traduci automaticamente i messaggi", autoTranslateDesc: "Traduci i messaggi in arrivo nella tua lingua. Funziona su questo dispositivo; nulla viene inviato.", privacy: "La traduzione viene eseguita sul tuo dispositivo. Il tuo messaggio non lo lascia mai. Al primo utilizzo viene scaricato un modello linguistico.", }, newsletterDraftUi: { weeklyDraftReady: 'Bozza settimanale pronta', loadDraft: 'Carica bozza', hidePreview: 'Nascondi anteprima', untitled: 'Senza titolo', }, signerPromptUi: { title: "Budget delle richieste Amber", body: "Amber chiede conferma per ogni azione firmata. Le letture e le decifrature in background restano locali e non generano richieste. L'invio di un DM di gruppo chiede una volta per destinatario (cifratura + firma) e Cordn può chiedere per ogni richiesta del coordinatore. Per chat private o di crew frequenti, un bunker o una chiave locale è più silenzioso.", bunker: "Tieni Amber per le firme di alto valore, oppure passa a un bunker quando prevedi una lunga conversazione.", }, globalSearchUi: { open: "Cerca", placeholder: "Cerca spot, crew, eventi, attrezzatura…", hint: "⌘K / Ctrl+K", recent: "Recenti", pages: "Pagine", spots: "Spot", shops: "Skate shop", crews: "Crew", events: "Eventi", gear: "Attrezzatura", skaters: "Skaters", signers: "Signer", trust: "Fiducia", noResults: "Nessun risultato per «{{query}}».", }, }; export default drift;