SkateSpots/src/i18n/it/drift.ts
SkateSpots 9a5b706b1a i18n: close the drift — all 20 locales back to 100%
245 keys had accumulated in en/es only (trustUi, labOptions, cordnUi, socialUi,
walletUi, marketTerms, …), leaving every other locale at 97%. Backfilled 245x20 =
4,900 strings into src/i18n/<lang>/drift.ts and merged them through a new shared
src/i18n/deepMerge.ts — a shallow ...drift spread would clobber existing
namespaces, so index.ts deep-merges instead. Verified: check-i18n all 20 at 100%,
tsc + eslint clean.
2026-10-13 19:14:17 +07:00

321 lines
16 KiB
TypeScript

/**
* 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.",
},
},
settingsUi: {
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: {
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à.",
},
};
export default drift;