From 78660580fa9fe00db95f827743db36872ab1aed8 Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Wed, 7 Oct 2026 23:51:30 +0700 Subject: [PATCH] =?UTF-8?q?i18n(nl,pl):=20complete=20Dutch=20+=20Polish=20?= =?UTF-8?q?translations=20(100%=20=E2=80=94=208450=20keys=20each)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/nl/batch1.ts | 313 ++++++- src/i18n/nl/batch2.ts | 1652 +++++++++++++++++++++++++++++++++- src/i18n/nl/batch3.ts | 1299 ++++++++++++++++++++++++++- src/i18n/nl/batch4.ts | 1123 ++++++++++++++++++++++- src/i18n/nl/batch5.ts | 1597 ++++++++++++++++++++++++++++++++- src/i18n/nl/batch6.ts | 1948 +++++++++++++++++++++++++++++++++++++++- src/i18n/nl/batch7.ts | 908 ++++++++++++++++++- src/i18n/nl/batch8.ts | 628 ++++++++++++- src/i18n/pl/batch1.ts | 290 +++++- src/i18n/pl/batch2.ts | 1652 +++++++++++++++++++++++++++++++++- src/i18n/pl/batch3.ts | 1294 ++++++++++++++++++++++++++- src/i18n/pl/batch4.ts | 1115 ++++++++++++++++++++++- src/i18n/pl/batch5.ts | 1597 ++++++++++++++++++++++++++++++++- src/i18n/pl/batch6.ts | 1958 ++++++++++++++++++++++++++++++++++++++++- src/i18n/pl/batch7.ts | 908 ++++++++++++++++++- src/i18n/pl/batch8.ts | 621 ++++++++++++- 16 files changed, 18871 insertions(+), 32 deletions(-) diff --git a/src/i18n/nl/batch1.ts b/src/i18n/nl/batch1.ts index 138922a..25cf119 100644 --- a/src/i18n/nl/batch1.ts +++ b/src/i18n/nl/batch1.ts @@ -1,4 +1,313 @@ -/** nl — batch 1. Filled by the translation pass; empty until then. */ -const nlBatch1 = {}; +/** nl — batch 1. Filled by the 2026-10-07 Dutch translation pass. */ +const nlBatch1 = { + common: { + loading: "Laden...", + error: "Fout", + save: "Opslaan", + cancel: "Annuleren", + delete: "Verwijderen", + edit: "Bewerken", + add: "Toevoegen", + remove: "Weghalen", + create: "Aanmaken", + submit: "Verzenden", + close: "Sluiten", + back: "Terug", + next: "Volgende", + done: "Klaar", + search: "Zoeken", + filter: "Filteren", + sort: "Sorteren", + share: "Delen", + more: "Meer", + copy: "Kopiëren", + copied: "Gekopieerd!", + viewAll: "Alles bekijken", + seeMore: "Meer bekijken", + showMore: "Meer tonen", + showLess: "Minder tonen", + noResults: "Geen resultaten gevonden", + tryAgain: "Opnieuw proberen", + learnMore: "Meer info", + getStarted: "Aan de slag", + yes: "Ja", + no: "Nee", + or: "of", + and: "en", + free: "Gratis", + new: "Nieuw", + popular: "Populair", + featured: "Uitgelicht", + verified: "Geverifieerd", + sats: "sats", + clear: "Wissen", + clearFilters: "Filters wissen", + clearAll: "Alles wissen", + hide: "Verbergen", + undo: "Ongedaan maken", + }, + nav: { + home: "Home", + map: "Spots", + lab: "The Lab", + events: "Evenementen", + crews: "Crews", + wallet: "Wallet", + settings: "Instellingen", + more: "Meer", + rewards: "Beloningen", + stats: "Communitystatistieken", + about: "Over", + food: "Eten", + marketplace: "Marktplaats", + mints: "Mints", + appShop: "App-winkel", + diy: "DIY", + trades: "Marktplaats", + stash: "Stash", + collections: "Collecties", + contacts: "Contacten", + messages: "Berichten", + skaters: "Skaters", + glossary: "Woordenlijst", + riderCard: "Rider Card", + supporters: "Supporters ⚡", + newsletter: "Nieuwsbrief", + viewProfile: "Profiel bekijken", + leaderboards: "Leaderboards", + }, + chromeUi: { + skipToContent: "Naar inhoud springen", + menu: "Menu", + inBadge: "In", + loggedIn: "Ingelogd", + profile: "Profiel", + logIn: "Inloggen", + logOut: "Uitloggen", + notLoggedIn: "Niet ingelogd", + loggedOutPrompt: + "Log in om spots toe te voegen, skaters te zappen en je favorieten op te slaan", + accounts: "Accounts", + addAnotherAccount: "Nog een account toevoegen", + setStatus: "Status instellen", + setYourStatus: "Stel je status in", + status: "Status", + addSpot: "Spot toevoegen", + myData: "Mijn gegevens", + myStash: "Mijn Stash", + myCollections: "Mijn collecties", + viewMyProfile: "Mijn profiel bekijken", + customizeNavBar: "Navigatiebalk aanpassen", + ecash: "Ecash", + madeWith: "Gemaakt met", + forSkateCommunity: "voor de skateboardcommunity", + beta: "Beta", + license: "Licentie", + privacy: "Privacy", + collaborators: "Samenwerkers & vrienden", + notSponsoredBy: "Niet gesponsord door", + errorTitle: "Kon dit niet laden", + errorDescription: + "Het netwerkverzoek is mislukt. Controleer je verbinding en probeer het opnieuw.", + tryAgain: "Opnieuw proberen", + weatherOn: "Weer aan", + weatherOff: "Weer uit", + trustFilter: "Vertrouwensfilter", + filterByTrustLevel: "Filteren op vertrouwensniveau", + trust: { + all: "Alle gebruikers", + allDesc: "Inhoud van iedereen tonen", + verified: "Geverifieerd", + verifiedDesc: "Je volgt hen of ze zijn geverifieerd (vertrouwen ≥90)", + trusted: "Vertrouwd", + trustedDesc: + "Vrienden-van-vrienden of NIP-05 geverifieerd (vertrouwen ≥60)", + following: "Alleen gevolgd", + followingDesc: "Alleen inhoud tonen van mensen die je volgt", + followingShort: "Gevolgd", + }, + sort: { + recent: "Meest recent", + recentDesc: "Nieuwste eerst", + trust: "Hoogste vertrouwen", + trustDesc: "Meest vertrouwde makers", + proximity: "Dichtst bij mij", + proximityDesc: "Dichtstbijzijnde locaties", + popular: "Meest populair", + popularDesc: "Meeste opmerkingen/reacties", + zaps: "Meest gezapt", + zapsDesc: "Hoogste waarde ontvangen", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + diy: "DIY", + bowl: "Bowl", + vert: "Vert", + indoor: "Indoor", + skatepark: "Skatepark", + miniramp: "Mini Ramp", + }, + }, + desktopNav: { + title: "Desktopnavigatie", + desc: "Kies welke tabbladen in de bovenbalk verschijnen en in welke volgorde. Verborgen tabbladen blijven in het menu “Meer”.", + fixed: "Vast", + shownInTopBar: "Getoond in bovenbalk ({{count}})", + noExtraTabs: + "Geen extra tabbladen getoond — alles staat in het menu “Meer”. Voeg hieronder enkele toe.", + inMoreMenu: "In menu “Meer” ({{count}})", + moveUp: "{{name}} omhoog verplaatsen", + moveDown: "{{name}} omlaag verplaatsen", + hide: "{{name}} verbergen", + moveToMore: "Naar menu Meer verplaatsen", + show: "Tonen", + showInTopBar: "{{name}} in bovenbalk tonen", + showInTopBarTitle: "In bovenbalk tonen", + reset: "Terugzetten naar standaard", + }, + navSheet: { + title: "Pas je balk aan", + desc: "Kies de {{count}} tabbladen die je het meest gebruikt. Al het andere blijft in het menu.", + preview: "Voorbeeld", + empty: "Leeg", + order: "Volgorde ({{done}}/{{total}})", + available: "Beschikbare tabbladen", + full: "Balk vol — verwijder er een om te wisselen", + moveUp: "{{name}} omhoog verplaatsen", + moveDown: "{{name}} omlaag verplaatsen", + login: "Inloggen", + profile: "Profiel", + reset: "Resetten", + done: "Klaar", + }, + pwa: { + installTitle: "SkateSpots installeren", + installSubtitle: "Krijg de volledige app-ervaring", + addToHomeScreen: "Toevoegen aan beginscherm", + installApp: "App installeren", + maybeLater: "Misschien later", + gotIt: "Begrepen!", + benefits: { + fast: "Bliksemsnel", + offline: "Werkt offline", + fullAccess: "Volledige toegang", + }, + iosStep1: "Tik op de deelknop", + iosStep1Hint: "onderaan in Safari", + iosStep2: "Scroll en tik op \"Voeg toe aan beginscherm\"", + iosStep2Hint: "in het deelmenu", + iosStep3: "Tik op \"Voeg toe\" om te installeren", + iosStep3Hint: "De app verschijnt op je beginscherm", + androidStep1: "Tik op de menuknop", + androidStep1Hint: "(drie puntjes) in je browser", + androidStep2: "Selecteer \"Voeg toe aan beginscherm\"", + androidStep2Hint: "of \"App installeren\"", + androidStep3: "Bevestig om te installeren", + androidStep3Hint: "De app verschijnt op je beginscherm", + tagline: "Gratis • Werkt offline • Snel & betrouwbaar", + }, + home: { + tagline: "Door de community • Relay-gebaseerd", + title: "SKATE SPOTS", + subtitle: "Ontdek Spots • Kom samen • Leer tricks • Steun locals", + description: + "Echt skateboarden gebeurt offline - deze tool helpt je het te vinden.", + betaWarning: "BETA - In aanbouw • Gebruik op eigen risico", + pwaHint: "Progressieve webapp - installeer op je toestel", + exploreMap: "Kaart verkennen", + addSpot: "Spot toevoegen", + globalSpots: "Wereldwijde Spots", + openCommunity: "Open community", + lightningZaps: "Lightning Zaps", + featuredSpots: "Uitgelichte Spots", + featuredSpotsDesc: + "Door de community geverifieerde skate spots van over de hele wereld", + upcomingEvents: "Aankomende evenementen", + upcomingEventsDesc: + "Wedstrijden, meetups en sessies die binnenkort plaatsvinden", + noSpotsYet: "Nog geen spots gevonden", + noSpotsHint: "Wees de eerste die een skate spot toevoegt!", + noEventsYet: "Geen aankomende evenementen", + noEventsHint: "Kom later terug of maak er een aan!", + theLab: "The Lab", + theLabDesc: "Leer tricks, vind coaches en verbeter je skateboarden", + coaches: "Coaches", + coachesDesc: + "Leer van ervaren skaters die je kunnen helpen vooruitgang te boeken", + filmers: "Filmers", + filmersDesc: "Kom in contact met filmers om je beste clips vast te leggen", + findCoach: "Vind een coach", + becomeCoach: "Word coach", + findFilmer: "Vind een filmer", + becomeFilmer: "Word filmer", + viewAllSpots: "Alle spots bekijken", + viewAllEvents: "Alle evenementen bekijken", + createEvent: "Evenement aanmaken", + readyToShare: "Klaar om te delen?", + readyToShareDesc: + "Help de skateboardcommunity groeien door je favoriete spots toe te voegen. Elke locatie die je deelt helpt medeskaters nieuwe plekken te ontdekken.", + }, + about: { + title: "Over SkateSpots", + subtitle: "Een gedecentraliseerde skateboardcommunity", + whatIs: "Wat is SkateSpots?", + whatIsDesc: + "SkateSpots is een door de community aangedreven platform om wereldwijd skateboardlocaties te ontdekken. Gebouwd op Nostr geeft het skaters echte eigendom over hun data.", + features: "Functies", + featuresDesc: + "Vind spots, maak evenementen, kom in contact met coaches en steun je lokale skateshops—allemaal op één plek.", + nostr: "Gebouwd op Nostr", + nostrDesc: + "Nostr is een eenvoudig, open protocol dat echt censuurbestendige wereldwijde communicatie mogelijk maakt. Je account en data zijn van jou.", + openSource: "Open source", + openSourceDesc: + "SkateSpots is volledig open source. Draag bij, fork of draai je eigen instantie.", + lightning: "Lightning-betalingen", + lightningDesc: + "Zap je favoriete skaters, coaches en makers met Bitcoin Lightning-betalingen.", + }, + faq: { + title: "Veelgestelde vragen", + subtitle: "Alles wat je moet weten over SkateSpots", + whatIsNostr: "Wat is Nostr?", + whatIsNostrAnswer: + "Nostr is een open protocol voor gedecentraliseerd sociaal netwerken. Anders dan traditionele platforms zijn je data en identiteit van jou.", + howToStart: "Hoe begin ik?", + howToStartAnswer: + "Klik op \"Aanmelden\" om een nieuw Nostr-account aan te maken, of op \"Inloggen\" als je er al een hebt. Je kunt een browserextensie, mobiele app of geheime sleutel gebruiken.", + whatAreZaps: "Wat zijn Zaps?", + whatAreZapsAnswer: + "Zaps zijn Bitcoin Lightning-fooien die je naar andere gebruikers kunt sturen. Het is een manier om waardering te tonen voor geweldige inhoud of om makers te steunen.", + howToAddSpot: "Hoe voeg ik een spot toe?", + howToAddSpotAnswer: + "Log in op je account, klik op \"Spot toevoegen\" en vul de details in, waaronder locatie, foto's en beschrijving.", + isItFree: "Is SkateSpots gratis?", + isItFreeAnswer: + "Ja! SkateSpots is volledig gratis te gebruiken. Je kunt optioneel Zaps (Bitcoin-fooien) naar andere gebruikers sturen.", + canIEditSpot: "Kan ik mijn spots bewerken of verwijderen?", + canIEditSpotAnswer: + "Ja, je kunt spots die je hebt gemaakt bewerken. Door het gedecentraliseerde karakter van Nostr worden verwijderverzoeken verzonden, maar sommige relays kunnen data behouden.", + }, + onboarding: { + welcome: "Welkom bij SkateSpots!", + welcomeDesc: "Laten we je in een paar stappen instellen.", + step1Title: "Maak je account aan", + step1Desc: + "Je Nostr-sleutels worden gegenereerd. Dit is als een wachtwoord dat jij beheert.", + step2Title: "Back-up van je sleutels", + step2Desc: + "Bewaar je herstelzin ergens veilig. Dit is de enige manier om je account te herstellen!", + step3Title: "Stel je profiel in", + step3Desc: "Vertel de community over jezelf.", + step4Title: "Je bent klaar!", + step4Desc: + "Begin met het verkennen van spots en evenementen en het leggen van contacten met skaters.", + skipForNow: "Voorlopig overslaan", + continueToApp: "Doorgaan naar de app", + }, +}; export default nlBatch1; diff --git a/src/i18n/nl/batch2.ts b/src/i18n/nl/batch2.ts index 3491cbc..a415a5a 100644 --- a/src/i18n/nl/batch2.ts +++ b/src/i18n/nl/batch2.ts @@ -1,4 +1,1652 @@ -/** nl — batch 2. Filled by the translation pass; empty until then. */ -const nlBatch2 = {}; +/** nl — batch 2. Dutch (nl-NL) translation. */ +const nlBatch2 = { + mapUi: { + mapFooter: { + links: "Links", + hide: "Kaartlinks-balk verbergen", + }, + findingSpots: "Spots zoeken", + loadingSpots: "Spots laden", + loadingMap: "Kaart laden...", + mapViewAria: "Kaartweergave", + listViewAria: "Lijstweergave", + layers: "Lagen", + mapLayers: "Kaartlagen", + showOnMap: "Toon op kaart", + showResults: "Toon resultaten", + quickActions: "Snelle acties", + spots: "Spots", + shops: "Shops", + gear: "Gear", + tours: "Tours", + events: "Evenementen", + crews: "Crews", + spotType: "Spottype", + sortBy: "Sorteren op", + trustLevel: "Vertrouwensniveau", + weather: "Weer", + buySellGear: "Gear kopen/verkopen", + stash: "Stash", + more: "Meer", + newHere: "Nieuw hier?", + welcomeDesc: "Ontdek skate-spots, evenementen en de community.", + getOnZapstore: "Ga naar Zapstore", + dismiss: "Sluiten", + addedBy: "Toegevoegd door", + directions: "Route", + viewDetails: "Bekijk details", + viewDetailsArrow: "Bekijk details →", + spotDetails: "Spotdetails", + skateShop: "Skate Shop", + skateSpot: "Skate Spot", + youAreHere: "Je bent hier", + conditions: "Omstandigheden", + weatherScoreSuffix: "{{score}}/100 weer", + wind: "Wind", + humidity: "Luchtvochtigheid", + airQuality: "Luchtkwaliteit", + threeDayForecast: "3-daagse voorspelling", + gearForSale: "Gear te koop ({{count}})", + viewItems: "Bekijk items →", + viewAllItems: "Bekijk alle {{count}} items →", + viewGear: "Bekijk gear →", + localTour: "Lokale tour", + meetAt: "Ontmoet bij: {{place}}", + hours: "{{count}} uur", + level: "niveau {{level}}", + viewTour: "Bekijk tour →", + upcomingEvent: "Aankomend evenement", + viewEvent: "Bekijk evenement →", + skateCrew: "Skate Crew", + members: "{{count}} leden", + since: "Sinds {{year}}", + viewCrew: "Bekijk crew →", + acceptsBitcoin: "Accepteert Bitcoin", + boosted: "Geboost", + website: "Website", + offlineSavedSpots: "Offline · opgeslagen spots worden getoond", + cantReachRelays: "Kan de relays niet bereiken", + relayOnlineNoAnswer: "Je bent online, maar de community-relay antwoordt nu niet.", + youreOffline: "Je bent offline.", + savedOnDevice: "Spots die je al hebt gezien, zijn op dit apparaat opgeslagen en verschijnen hier.", + noSpotsMatchTitle: "Geen spots gevonden", + noSpotsMatchDesc: "Probeer een andere zoekopdracht of wis je filters.", + noSpotsMappedYet: "Nog geen spots op de kaart", + noSpotsMappedDesc: "Wees de eerste die je park op de kaart zet — het duurt een minuut, het is van jou, en de volgende skater die langskomt zal je dankbaar zijn.", + addFirstSpot: "Voeg de eerste spot toe", + findSpotsNearMe: "Vind spots bij mij in de buurt", + locating: "Locatie bepalen…", + refiningLocation: "Je locatie verfijnen…", + refiningLocationDesc: "Gecentreerd op je laatste spot — een nieuwe GPS-fix wordt gezocht.", + locatingYou: "Je locatie bepalen…", + locatingDesc: "GPS-fix ophalen. De eerste keer kan dit tot een minuut duren.", + foundYou: "Gevonden", + foundYouDesc: "De kaart is gecentreerd op je locatie.", + locationPermissionNeeded: "Locatietoegang nodig", + permissionNeededDesc: "Sta locatie toe voor SkateSpots via Instellingen → Apps → SkateSpots → Machtigingen op je apparaat en tik dan opnieuw op Bij mij in de buurt.", + locationTimedOut: "Locatie time-out", + timeoutNativeDesc: "Kon niet op tijd een locatie vinden. Als je binnen bent, kan GPS geen satellieten zien — schakel Netwerklocatie in (Instellingen → Locatie) of ga naar buiten en probeer opnieuw.", + timeoutWebDesc: "Kon je locatie niet op tijd ophalen. Controleer je signaal en probeer opnieuw.", + noLocationProvider: "Geen locatieprovider", + noProviderNativeDesc: "Je telefoon geeft geen locatie door. Schakel op privacygerichte ROMs (bijv. GrapheneOS) Netwerklocatie in via Instellingen → Locatie, of zorg dat GPS aan staat en probeer buiten.", + noProviderWebDesc: "Er is geen locatieprovider beschikbaar. Schakel locatiediensten in en probeer opnieuw.", + locationUnavailable: "Locatie niet beschikbaar", + unavailableNativeDesc: "Zet Locatie/GPS aan in je telefooninstellingen, sta locatie toe voor SkateSpots (Instellingen → Apps → SkateSpots → Machtigingen) en probeer opnieuw.", + unavailableWebDesc: "Je locatie kon niet worden bepaald. Zorg dat locatiediensten zijn ingeschakeld.", + locationBlocked: "Locatie geblokkeerd", + locationBlockedDesc: "Je browser heeft locatietoegang voor deze site geblokkeerd. Zo schakel je het weer in:", + locationPlatformAndroid: "Android Chrome", + locationPlatformIos: "iOS Safari", + locationPlatformDesktop: "Desktop Chrome", + locationPlatformFirefox: "Firefox", + locationStepsAndroid: "Tik op het slotpictogram in de adresbalk → Site-instellingen → Locatie → Toestaan", + locationStepsIos: "Instellingen-app → Safari → Locatie → Toestaan (of tik op de \"AA\"-knop in de adresbalk van Safari)", + locationStepsDesktop: "Klik op het slotpictogram → Site-instellingen → Locatie → Toestaan", + locationStepsFirefox: "Klik op het slotpictogram → Verbinding beveiligd → Meer informatie → Machtigingen → Toegang tot je locatie → Toestaan", + gotIt: "Begrepen", + addSpot: "Spot toevoegen", + addShop: "Shop toevoegen", + addEvent: "Evenement toevoegen", + addSpotHereTitle: "Hier een spot toevoegen?", + addSpotHereDesc: "Plaats een pin waar je hebt getikt", + sellGear: "Gear verkopen", + offerTour: "Tour aanbieden", + closeAddMenu: "Toevoegmenu sluiten", + addMenuAria: "Spot, shop, evenement, gear of tour toevoegen", + localChat: "Lokale chat", + localChatDesc: "Live chat voor waar de kaart is gecentreerd. Kies hoe wijd het kanaal reikt.", + btcMapShowing: "Toont {{count}} plekken waar je je sats in de buurt kunt Spedn", + btcMapShow: "Toon plekken waar je je sats kunt Spedn (via BTC Map)", + yourPrivateStash: "Je privé-Stash", + stashIntro: "Houd je gear bij, stel prijzen in en vind trades met andere skaters.", + encryptionRequired: "Versleuteling vereist", + encryptionRequiredDesc: "Gebruik een signer met NIP-44-ondersteuning (Alby, nos2x, Amber).", + myStash: "Mijn Stash", + encrypted: "Versleuteld", + itemsCount: "{{count}} items", + items: "Items", + wishlist: "Verlanglijst", + types: "Types", + stashEmpty: "Je Stash is leeg", + addFirstItem: "Eerste item toevoegen", + wishlistCount: "Verlanglijst ({{count}})", + myGearCount: "Mijn gear ({{count}})", + openFullStash: "Volledige Stash openen", + addItem: "Item toevoegen", + searchSpotsPlaceholder: "Zoek spots...", + selected: "Geselecteerd", + noSpotsFound: "Geen spots gevonden. Probeer een andere zoekopdracht.", + addingSpotsHint: "Spots toevoegen helpt gebruikers je te vinden bij specifieke locaties", + report: "Rapporteren", + spotSingular: "1 spot", + spotPlural: "{{count}} spots", + view: "Bekijken", + myCollections: "Mijn collecties", + collectionsSubtitle: "Organiseer je favoriete spots in persoonlijke lijsten", + newCollection: "Nieuwe collectie", + loginToCreate: "Log in om collecties te maken", + loginToCreateDesc: "Sla je favoriete spots op in persoonlijke lijsten zoals \"Barcelona Trip 2024\" of \"Beste rails in LA\"", + noCollections: "Nog geen collecties", + noCollectionsDesc: "Maak je eerste collectie om spots te gaan organiseren", + createFirstCollection: "Maak je eerste collectie", + createNewCollection: "Nieuwe collectie maken", + createCollectionDesc: "Geef je collectie een naam en optionele beschrijving", + collectionName: "Naam van collectie", + collectionNamePlaceholder: "Barcelona Trip 2024", + descriptionOptional: "Beschrijving (optioneel)", + descriptionPlaceholder: "Mijn favoriete spots van mijn reis naar Barcelona...", + creating: "Maken...", + createCollection: "Collectie maken", + editCollection: "Collectie bewerken", + saving: "Opslaan...", + saveChanges: "Wijzigingen opslaan", + deleteCollectionTitle: "Collectie verwijderen?", + deleteCollectionDesc: "Hiermee wordt \"{{title}}\" definitief verwijderd. De spots zelf blijven ongewijzigd.", + deleting: "Verwijderen...", + collectionCreated: "Collectie gemaakt!", + collectionCreatedDesc: "\"{{title}}\" is klaar voor spots", + collectionCreateFailed: "Collectie maken mislukt", + collectionUpdated: "Collectie bijgewerkt!", + changesSaved: "Je wijzigingen zijn opgeslagen", + collectionUpdateFailed: "Collectie bijwerken mislukt", + collectionDeleted: "Collectie verwijderd", + collectionDeletedDesc: "\"{{title}}\" is verwijderd", + collectionDeleteFailed: "Collectie verwijderen mislukt", + somethingWentWrong: "Er is iets misgegaan", + }, + mapPage: { + title: "Shops & Spots", + spots: "Spots", + shops: "Shops", + filters: "Filters", + listView: "Lijst", + mapView: "Kaart", + nearMe: "Bij mij in de buurt", + searchPlaceholder: "Zoek spots...", + noSpotsInArea: "Geen spots in dit gebied", + zoomIn: "Inzoomen", + zoomOut: "Uitzoomen", + myLocation: "Mijn locatie", + locationsFound: "{{count}} locaties gevonden", + spotsOnly: "Alleen spots", + shopsOnly: "Alleen shops", + spotsAndShops: "Spots & Shops", + noSpotsMatch: "Geen spots die bij je filters passen.", + noSpotsYet: "Er zijn nog geen spots toegevoegd.", + addFirstSpot: "Eerste spot toevoegen", + }, + spotUi: { + claim: { + areYouOwner: "Is dit jouw spot?", + privateDesc: "Deze spot is als privé gemarkeerd. Als je de eigenaar bent of hem beheert, claim hem — een SkateSpots-moderator bevestigt het eigenaarschap, waarna jij de listing overneemt.", + claimSpot: "Claim deze spot", + nip05Required: "Je hebt een geverifieerde NIP-05-handle nodig om een privéspot te claimen (bewijs dat je een Nostr-identiteit beheert). Voeg er een toe in je profiel en kom dan terug.", + addNip05: "NIP-05 toevoegen in Instellingen", + pendingTitle: "Claim wacht op beoordeling", + pendingDesc: "Je claim is ingediend. Een SkateSpots-moderator beoordeelt hem — zodra hij is goedgekeurd, kun je de claim afronden.", + approvedTitle: "Claim goedgekeurd", + approvedDesc: "Een moderator heeft je claim goedgekeurd. Rond af om eigenaar van deze spot te worden.", + complete: "Claim afronden", + submitted: "Claim ingediend", + submittedDesc: "Een moderator beoordeelt je claim. Je neemt de spot over zodra hij is goedgekeurd.", + submitFailed: "Kon de claim niet indienen", + submit: "Claim indienen", + submitting: "Indienen…", + confirmTitle: "\"{{title}}\" claimen?", + confirmIntro: "Je vraagt om eigenaar van deze privéspot te worden.", + confirmBullet1: "Een SkateSpots-moderator beoordeelt het verzoek (we kunnen geen eigendom verifiëren, alleen Nostr-sleutels)", + confirmBullet2: "Bij goedkeuring rond je de claim af om eigenaar te worden en kun je de spot bewerken", + confirmBullet3: "De oorspronkelijke spot blijft op Nostr — het netwerk is gedecentraliseerd", + adminTitle: "Openstaande eigenaarsclaims", + adminApprove: "Goedkeuren", + adminApproved: "Goedgekeurd", + adminApprovedDesc: "Ze kunnen nu de claim afronden.", + adminApproveFailed: "Kon de claim niet goedkeuren", + loginRequired: "Log in om deze privéspot te claimen of eigenaarschap aan te vragen.", + }, + abandonedDesc: "Laatst bijgewerkt {{time}}. Als de oorspronkelijke eigenaar inactief is, kun je deze spot claimen om hem te onderhouden en te verbeteren.", + claimedNotice: "Geclaimde listing", + claimedNoticeDesc: "Deze spot is na een claim opnieuw gepubliceerd door een nieuwe eigenaar. De oorspronkelijke listing kan nog apart bestaan.", + abandonedLoginDesc: "Laatst bijgewerkt {{time}}. Log in om deze spot te claimen en te onderhouden.", + accessDeniedDesc: "Je kunt alleen spots bewerken die je zelf hebt gemaakt.", + accessDeniedTitle: "Toegang geweigerd", + addAtLeastOneTag: "Voeg minstens één tag toe.", + additionalDetails: "Extra details (optioneel)", + additionalDetailsPlaceholder: "Geef eventuele extra context die kan helpen...", + addNewTags: "Nieuwe tags toevoegen:", + addNip05InSettings: "NIP-05 toevoegen in Instellingen", + addPhoto: "Foto toevoegen", + addPhotoDesc: "Draag een foto bij om anderen deze spot te laten ontdekken.", + addPhotoOrDescription: "Voeg een foto of beschrijving toe", + addPhotoOrDescriptionDesc: "Geef skaters iets om mee verder te gaan — een foto, of een regel over de plek.", + addPhotos: "Foto's toevoegen", + addPhotoToSpot: "Foto aan spot toevoegen", + adminDeleteDialogDesc: "Als SkateSpots-admin haal je \"{{title}}\" weg. De spot wordt voor iedereen in de app verborgen en er wordt een verwijderverzoek naar relays gestuurd.", + adminDeleteReason: "SkateSpots-admin heeft spot \"{{title}}\" verwijderd", + airQuality: "Luchtkwaliteit", + altSkateSpot: "Skate spot: {{title}}", + areYouShopOwner: "Ben jij de eigenaar van de shop?", + askBeforeSkating: "Vraag het voor je skatet", + backToSpot: "Terug naar spot", + beFirstToListGear: "Wees de eerste die gear op deze spot aanbiedt!", + beFirstToSay: "Zeg als eerste iets.", + byAuthor: "door {{name}}", + captionPlaceholder: "Voeg een onderschrift toe (optioneel) - beschrijf wat er op de foto staat, wanneer die is genomen, enz.", + chatPublicNote: "Iedereen kan dit lezen — berichten zijn openbaar en kortstondig. Gebruik Directe berichten voor privéchats.", + checkPinBelow: "Controleer de pin hieronder voordat je een duplicaat toevoegt.", + claimBullet1: "Je wordt de eigenaar en kunt de spot bewerken", + claimBullet2: "De oorspronkelijke spot blijft bestaan (Nostr is gedecentraliseerd)", + claimBullet3: "Je versie kan naast het origineel verschijnen", + claimFailed: "Claimen mislukt", + claiming: "Claimen...", + claimIntro: "Je staat op het punt eigenaarschap van deze spot te claimen. Dit maakt je eigen versie van de spot die je kunt bewerken en onderhouden.", + claimSpot: "Spot claimen", + claimThisSpot: "Deze spot claimen", + claimTitle: "\"{{title}}\" claimen?", + claimWhatHappens: "Wat er gebeurt als je claimt:", + coachesAndFilmersAvailable: "Coaches en filmers beschikbaar op deze spot", + coachesCount: "Coaches ({{count}})", + coachHere: "Coach hier", + community: "Community", + communityVerified: "Community-geverifieerd", + communityVerifiedTitle: "Een andere skater heeft hier bijgedragen (foto of statusupdate).", + conditions: "Omstandigheden", + contactForPermission: "Neem contact op voor toestemming", + contactInfo: "Contactgegevens", + contributePhoto: "Foto bijdragen", + contributing: "Bijdragen...", + couldNotSendMessage: "Kon bericht niet verzenden.", + couldNotSubmit: "Kon niet indienen", + couldNotUploadPhoto: "Kon de foto niet uploaden. Je kunt er hieronder een toevoegen.", + crewsThatSkateHere: "Crews die hier skaten", + current: "Huidig:", + currentTags: "Huidige tags op deze spot:", + daysAgo: "{{count}} dag geleden", + daysAgoPlural: "{{count}} dagen geleden", + deleteDialogDesc: "Hiermee wordt \"{{title}}\" definitief van alle relays verwijderd. Deze actie kan niet ongedaan worden gemaakt.", + deletedSpotReason: "Verwijderde spot", + deleteFailed: "Verwijderen mislukt", + deleteSpot: "Spot verwijderen", + deleteSpotTitle: "Spot verwijderen?", + differentSpotPublishAnyway: "Het is een andere spot — toch publiceren", + dragDropOrClick: "Sleep & zet neer of klik", + dropPhotos: "Foto's neerzetten", + duplicateOne: "Er ligt een spot binnen 60 m van je pin. Als het dezelfde plek is, voeg daar je foto of statusupdate toe in plaats van een duplicaat te maken.", + duplicateOther: "Er liggen spots binnen 60 m van je pin. Als het dezelfde plek is, voeg daar je foto of statusupdate toe in plaats van een duplicaat te maken.", + editSpotSeoDesc: "Bewerk je skateboardspot.", + failedToContribute: "Bijdragen mislukt", + failedToPublish: "Publiceren mislukt", + failedToPublishDesc: "Er is iets misgegaan. Controleer de console voor details.", + failedToSubmitReport: "Rapport indienen mislukt", + failedToSuggestTags: "Tags voorstellen mislukt", + failedToUpdate: "Bijwerken mislukt", + failedToUploadImage: "Afbeelding uploaden mislukt", + failedToUploadPhoto: "Foto uploaden mislukt", + feelsLikeTemp: "Voelt als {{temp}}°C", + filmersCount: "Filmers ({{count}})", + filmHere: "Film hier", + gearSwap: "Gear Swap", + geolocationNotSupported: "Geolocatie niet ondersteund", + geolocationNotSupportedDesc: "Je browser ondersteunt geen geolocatie.", + getDirections: "Routebeschrijving", + hangTight: "Even geduld", + hangTightDesc: "Je foto wordt nog geüpload. Hij wordt zo toegevoegd.", + helpImproveSpot: "Help deze spot te verbeteren door foto's toe te voegen of tags voor te stellen", + hiddenByModerator: "Verborgen door een moderator", + hiddenByModeratorDesc: "Deze spot wordt niet op de kaart of in zoekresultaten getoond. Je kunt hem nog zien omdat hij van jou is. Hem bewerken maakt hem niet zichtbaar — hij blijft verborgen tot een moderator het oordeel intrekt.", + humidity: "Luchtvochtigheid", + imageUploaded: "Afbeelding geüpload", + imageUploadedDesc: "Je afbeelding is succesvol geüpload.", + imHere: "Ik ben hier", + invalidCoordinates: "Ongeldige coördinaten", + invalidCoordinatesDesc: "Voer een geldige breedtegraad (-90 tot 90) en lengtegraad (-180 tot 180) in.", + invalidNpub: "Ongeldige npub", + invalidNpubDesc: "Voer een geldig npub-adres in.", + lastReported: "laatst {{time}}", + listGear: "Gear aanbieden", + listYourGearHere: "Bied je gear hier aan", + loadingChat: "Chat laden…", + locationError: "Locatiefout", + locationFound: "Locatie gevonden", + locationFoundDesc: "Je huidige locatie is ingesteld.", + locationRequired: "Locatie vereist", + locationRequiredDesc: "Voer coördinaten in of gebruik je huidige locatie.", + loginRequiredTitle: "Inloggen vereist", + logInToChat: "Log in om mee te doen aan de lokale chat.", + logInToContributePhotos: "Log in om foto's bij te dragen", + loginToEditSpot: "Je moet inloggen om deze spot te bewerken.", + logInToReport: "Je moet ingelogd zijn om inhoud te rapporteren.", + logInToReportStatus: "Log in om de status van deze spot te melden.", + logInToSuggestTags: "Log in om tags voor te stellen", + manageNip05ToClaim: "Beheer NIP-05 om te claimen", + meetAtSpotForPickup: "💡 Ontmoet op deze spot voor veilige overdracht", + memberOne: "{{count}} lid", + memberOther: "{{count}} leden", + messageFailed: "Bericht mislukt", + messageMapper: "Message Mapper", + messagePlaceholder: "Stuur een bericht naar deze spot… (probeer /me of /who)", + messagesHiddenOne: "{{count}} bericht verborgen door je vertrouwensfilter. Verlaag het filter om meer te zien.", + messagesHiddenOther: "{{count}} berichten verborgen door je vertrouwensfilter. Verlaag het filter om meer te zien.", + messagesHiddenShortOne: "{{count}} bericht verborgen door je vertrouwensfilter", + messagesHiddenShortOther: "{{count}} berichten verborgen door je vertrouwensfilter", + metresAway: "{{distance}} m verderop", + moderatorVouchedDesc: "Een moderator heeft deze spot beoordeeld en goedgekeurd. Mooi zo.", + monthsAgo: "{{count}} maand geleden", + monthsAgoPlural: "{{count}} maanden geleden", + newOwnerNpub: "npub van nieuwe eigenaar", + newOwnerNpubHint: "Voer de npub in van de gebruiker aan wie je deze spot wilt overdragen.", + nip05RequiredToClaim: "⚠️ NIP-05-verificatie vereist om shops te claimen", + noCommunitySignalTitle: "Nog geen community-foto of statusupdate — niemand heeft deze plek bevestigd.", + breakdownPhotos: "{{count}} foto('s)", + breakdownStatus: "{{count}} statusupdate('s)", + breakdownComments: "{{count}} opmerking(en)", + breakdownReactions: "{{count}} reactie(s)", + breakdownCollections: "{{count}} keer opgeslagen", + breakdownZaps: "{{count}} zap(s)", + breakdownTags: "{{count}} tagsuggestie(s)", + breakdownCrews: "{{count}} crew(s)", + breakdownLab: "{{count}} pro-link(s)", + verifyNudgeTitle: "Wees de eerste die deze spot bevestigt", + verifyNudgeBody: "Een foto of een \"ik heb hier geskatet\" is hoe een spot geverifieerd raakt — help de volgende skater.", + verifyNudgeStatus: "Ik heb hier geskatet", + communityChip: "Community", + seenChip: "Gezien", + noGearListedYet: "Nog geen gear aangeboden", + noMessagesYet: "Nog geen berichten in dit lokale kanaal. Zeg hallo — \"gaat er vanavond iemand skaten?\"", + noPhoto: "Geen foto", + noReportsYet: "Nog geen meldingen", + noTags: "Geen tags", + notASkateSpot: "Geen skate spot", + offerServicesHere: "💡 Bied je diensten aan op deze spot", + photoCaptured: "Foto vastgelegd!", + photoCapturedDesc: "Je foto is succesvol geüpload.", + photoContributed: "Foto bijgedragen!", + photoContributedDesc: "Je foto is aan deze spot toegevoegd.", + photosAdded: "Je foto's zijn toegevoegd.", + photosRecommended: "sterk aangeraden — spots zonder foto blijven als Ongeverifieerd gemarkeerd", + photosUploaded: "{{count}} foto's geüpload", + photoUploaded: "Foto geüpload", + photoUploadedDesc: "Voeg een onderschrift toe en dien in om bij te dragen!", + photoUploadFailed: "Foto uploaden mislukt", + pleaseTryAgain: "Probeer het opnieuw", + public: "Openbaar", + publicChatTitle: "Iedereen kan berichten in dit kanaal lezen — het is openbaar en onversleuteld.", + recentReports: "Recente meldingen", + recipientRequired: "Ontvanger vereist", + recipientRequiredDesc: "Voer de npub van de nieuwe eigenaar in.", + removeAdmin: "Verwijderen (admin)", + removeSpot: "Spot verwijderen", + removeSpotAdminTitle: "Deze spot verwijderen? (admin)", + reportOne: "melding", + reportContent: "Inhoud rapporteren", + reportContentDesc: "Help de community veilig te houden door ongepaste inhoud te melden.", + reportedBySkaters: " door {{count}} skaters — wordt beoordeeld. Als dit een echte spot is, voeg een foto of statusupdate toe om hem te bevestigen.", + reportedNotASpot: "Gemeld als geen skate spot", + reportingType: "{{type}} rapporteren", + reports: "meldingen", + reportShop: "Shop rapporteren", + reportSpot: "Spot rapporteren", + reportStatus: "Status rapporteren", + reportSubmitted: "Melding ingediend", + reportSubmittedDesc: "Bedankt dat je SkateSpots veilig houdt.", + reportSubmittedLong: "Bedankt dat je SkateSpots veilig en accuraat houdt. Je melding wordt beoordeeld door vertrouwde community-leden.", + reportSubmittedTitle: "Melding ingediend", + report: { + notASkateSpot: { + label: "Geen skate spot", + description: "Een testvermelding, of een plek die niet om te skaten is", + }, + fakeSpot: { + label: "Nep/niet-bestaande spot", + description: "Deze spot bestaat niet of de locatie klopt niet", + }, + stolenPhotos: { + label: "Gestolen/nepfoto's", + description: "Foto's zijn stockafbeeldingen of ergens anders gestolen", + }, + spamAd: { + label: "Spam of reclame", + description: "Promotionele inhoud of dubbele listings", + }, + dangerousLocation: { + label: "Gevaarlijke locatie", + description: "Privéterrein, onveilig of illegaal om te betreden", + }, + inappropriateContent: { + label: "Ongepaste inhoud", + description: "Bevat aanstootgevende of volwassen inhoud", + }, + impersonation: { + label: "Nabootsing", + description: "Iemand die zich voordoet als iemand anders", + }, + other: { + label: "Overig", + description: "Iets anders dat hierboven niet staat", + }, + }, + targetType: { + spot: "Spot", + event: "Evenement", + tour: "Tour", + shop: "Shop", + user: "Gebruiker", + listing: "Listing", + coach: "Coach", + filmer: "Filmer", + }, + sameOwner: "Zelfde eigenaar", + sameOwnerDesc: "Kan niet overdragen aan de huidige eigenaar.", + saveChanges: "Wijzigingen opslaan", + saving: "Opslaan...", + services: "Diensten", + shareSpotText: "Bekijk deze skate spot: {{title}}", + shelter: "Beschutting", + shelterHint: "Is deze spot blootgesteld aan het weer? Helpt skaters droge spots te vinden als het regent.", + shopClaimDesc: "Als je deze shop bezit of beheert, kun je hem claimen om eigenaarschap te verifiëren en de listing te beheren.", + shopClaimNip05Hint: "Om deze shop te claimen, voeg je een NIP-05-identifier toe die overeenkomt met het websitedomein van de shop.", + skatersActiveDesc: "Mensen die de afgelopen 24 uur in dit kanaal hebben gepost.", + skatersActiveOne: "{{count}} skater actief hier", + skatersActiveOther: "{{count}} skaters actief hier", + skatersSellingGear: "Skaters op deze spot verkopen gear", + skateSpot: "Skate Spot", + somethingWentWrong: "Er is iets misgegaan", + spot: "Spot", + spotAdded: "Spot toegevoegd!", + spotAddedDesc: "Je skate spot is naar het netwerk gepubliceerd.", + spotAddedNoPhoto: "Gepubliceerd — en gemarkeerd als Ongeverifieerd tot iemand een foto toevoegt. Een foto van de spot helpt enorm.", + spotChat: "Spot Chat", + spotClaimed: "Spot geclaimd!", + spotClaimedDesc: "Je bent nu de eigenaar van deze spot. Je kunt hem vanuit je profiel bewerken.", + spotDeleted: "Spot verwijderd", + spotDeletedDesc: "Verwijderverzoek naar relays verzonden. De meeste relays verwijderen deze inhoud.", + spotMayAlreadyBeOnMap: "Die spot staat misschien al op de kaart", + spotMayAlreadyExist: "Deze spot bestaat misschien al", + spotMayBeAbandoned: "Spot is mogelijk verlaten", + spotPhotoAlt: "Spot", + spotRemoved: "Spot verwijderd", + spotRemovedDesc: "Deze spot is weggehaald en wordt in heel SkateSpots verborgen.", + spotSeoDesc: "Bekijk deze skateboardspot op SkateSpots.", + spotStatus: "Spotstatus", + spotStatusDesc: "Is \"{{title}}\" nog skatebaar? Laat de community de huidige staat weten.", + spotTypeRequired: "Spottype vereist", + spotTypeRequiredDesc: "Kies een spottype zodat skaters weten wat ze kunnen verwachten.", + spotUpdated: "Spot bijgewerkt!", + spotUpdatedDesc: "Je wijzigingen zijn naar het netwerk gepubliceerd.", + staffVerifiedTitle: "Een SkateSpots-admin heeft deze spot beoordeeld en goedgekeurd.", + statusNotePlaceholder: "Optioneel: voeg details toe (bijv. \"nieuwe knoppen op de ledge\", \"beveiliging stuurt weg na 18:00\")", + statusReported: "Status gemeld", + statusReportedDesc: "Bedankt dat je de kaart actueel houdt. Je melding is live.", + submitReport: "Melding indienen", + submitting: "Indienen...", + suggestedByUser: "Voorgesteld door {{count}} gebruiker", + suggestedByUsers: "Voorgesteld door {{count}} gebruikers", + suggestedTagsContent: "Voorgestelde tags voor {{title}}: {{tags}}", + suggestNTags: "{{count}} tags voorstellen", + suggestOneTag: "1 tag voorstellen", + suggestTags: "Tags voorstellen", + suggestTagsDesc: "Help deze spot te categoriseren door relevante tags voor te stellen.", + tags: "Tags", + tagsHint: "Voeg tags toe voor kenmerken, oppervlakken, vibes (max {{max}})", + tagsSuggested: "Tags voorgesteld!", + tagsSuggestedDesc: "Je tagsuggesties zijn ingediend.", + takePhoto: "Foto maken", + threeDayForecast: "3-daagse voorspelling", + tipTheMapper: "Tip de mapper", + tipTheMapperDesc: "Vond je deze spot nuttig? Stuur een zap om de mapper te bedanken!", + titleRequired: "Titel vereist", + titleRequiredDesc: "Voer een naam voor deze spot in.", + today: "Vandaag", + tomorrow: "Morgen", + transferDesc: "\"{{title}}\" overdragen aan een andere gebruiker. Deze actie kan niet ongedaan worden gemaakt.", + transferFailed: "Overdracht mislukt", + transferOwnership: "Eigenaarschap overdragen", + transferRequestContent: "Verzoek tot overdracht van eigenaarschap van spot \"{{title}}\"", + transferRequested: "Overdracht aangevraagd", + transferRequestedDesc: "De nieuwe eigenaar moet de spot claimen om de overdracht af te ronden.", + transferring: "Overdragen...", + transferSpotOwnership: "Eigenaarschap van spot overdragen", + transferWarningDesc: "Na overdracht kun je deze spot niet meer bewerken of verwijderen.", + typeToSearchTags: "Typ om tags te zoeken of toe te voegen...", + underReview: " — wordt beoordeeld. Als dit een echte spot is, voeg een foto of statusupdate toe om hem te bevestigen.", + untitledSpot: "Naamloze spot", + unverified: "Ongeverifieerd", + updateDetailsFor: "Werk de details bij voor {{title}}", + updateSpotDesc: "Werk de informatie over deze spot bij. Alle velden met * zijn verplicht.", + uploadAPhoto: "Upload een foto", + uploadAPhotoHint: "Sleep & zet neer of klik · JPG, PNG, WebP", + uploadedAlt: "Geüpload", + uploadFailed: "Uploaden mislukt", + uploadingPhoto: "Foto uploaden…", + uploadPhotoFirst: "Upload eerst een foto.", + uvIndex: "UV-index", + verifiedBySkateSpots: "Geverifieerd door SkateSpots", + viewPhotoFullScreen: "Foto op volledig scherm bekijken", + viewPhotoOf: "Foto {{n}} van {{total}} bekijken", + warning: "Waarschuwing", + weatherConditions: "Weersomstandigheden", + weatherOnly: "alleen weer", + weatherOnlyUnconfirmed: "Alleen weer. Niemand heeft nog bevestigd dat dit een skate spot is, dus er is geen omstandighedenscore — voeg een foto of statusupdate toe om hem te bevestigen.", + whyReporting: "Waarom rapporteer je dit?", + wind: "Wind", + yearsAgo: "{{count}} jaar geleden", + yearsAgoPlural: "{{count}} jaar geleden", + }, + diyUi: { + title: "DIY — Maak je eigen", + tagline: "Gidsen, open tools en plannen om je eigen decks, ramps en betonnen spots te bouwen — en vind daarbij de mensen, plekken en markt.", + doItWithPeople: "Doe het met mensen", + backToDiy: "Terug naar DIY", + calc: { + title: "Deckkosten-calculator", + intro: "Wat een deck kost om te maken — arbeid, apparatuur, materialen, procestijd, verpakking en marge — en een eerlijke verkoopprijs. Opgeslagen op dit apparaat.", + }, + designer: { + title: "Deck-ontwerper", + intro: "Vorm een skateboard- of longboardomtrek en exporteer een printbaar 1:1-sjabloon, een SVG of een DXF voor CNC. Opgeslagen op dit apparaat.", + presets: "Presets", + dimensions: "Afmetingen", + shape: "Vorm", + kicks: "Kicks", + hardware: "Truck-gaten", + width: "Max breedte", + wheelbase: "Wielbasis", + nose: "Nose-lengte", + tail: "Tail-lengte", + length: "Totale lengte", + waist: "Taille", + endRound: "Ronding uiteinden", + concave: "Concave", + thickness: "Dikte", + tailKick: "Tail kick", + noseKick: "Nose kick", + holeNew: "New school (2.125″)", + holeOld: "Old school (2.5″)", + holeSpacing: "New school is 2.125″ × 1.625″ (54 × 41 mm); old school is 2.5″ × 1.625″. Montagegaten van 3/16″.", + topView: "Bovenaanzicht", + sideView: "Zijprofiel", + concaveSection: "Concave-doorsnede", + export: "Exporteren", + pdfA4: "1:1 PDF · A4", + pdfLetter: "1:1 PDF · Letter", + printNote: "Print de PDF op 100% (niet \"passend maken\"), en plak de tegels aan elkaar met de kruisjes in de hoeken. De SVG is ook op ware grootte.", + note: "Dit is de 2D-omtrek die je overtrekt en uitsnijdt. Voor volledige 3D-vormen en malontwerp is een echte CAD-tool nog steeds de juiste keuze.", + }, + source: "Bron", + comingSoon: "Binnenkort", + footer: "Stapsgewijze gidsen zijn onderweg. Voor nu: vind de mensen die bouwen in The Lab, zet je spot op de kaart en koop of verkoop op de Marktplaats. Werk veilig — pads, handschoenen en oogbescherming.", + categories: { + boards: "Boards", + ramps: "Ramps & houten obstakels", + concrete: "Beton & DIY-spots", + repairs: "Reparaties & afstellen", + tools: "Tools & plannen", + }, + cards: { + ossBuild: { + title: "Bouw een skateboard", + blurb: "Stapsgewijze deckfabricage — fineer, mallen, persen en afwerking.", + }, + sk8cad: { + title: "SK8CAD", + blurb: "Open-source CAD voor deckvormen, concave en malontwerp.", + }, + deckCost: { + title: "Deckkosten & prijsbepaling", + blurb: "Bereken materialen, arbeid en een eerlijke verkoopprijs voor je bouwt.", + }, + deckDesigner: { + title: "Deck-ontwerper", + blurb: "Vorm een omtrek en print een 1:1-sjabloon — of exporteer SVG/DXF voor CNC.", + }, + ledgeBox: { + title: "Bouw een ledge of box", + blurb: "Een beginnersvriendelijk houten obstakel dat je in een weekend bouwt.", + }, + quarterpipe: { + title: "Bouw een quarterpipe", + blurb: "Ramp-plannen, transition en coping voor een mini in de achtertuin.", + }, + flatbar: { + title: "Bouw een flatbar", + blurb: "Goedkoop, draagbaar en de beste manier om rails te leren.", + }, + concreteBasics: { + title: "Betonbasis", + blurb: "Mengen, bekisten en afwerken van een ledge of bank die lang meegaat.", + }, + coping: { + title: "Coping & randen", + blurb: "Hoe je coping plaatst en een transition afwerkt voor een soepele grind.", + }, + buyParts: { + title: "Koop onderdelen & gear", + blurb: "Haal decks, hardware en tools bij verkopers op de Marktplaats.", + }, + mapSpot: { + title: "Zet je DIY-spot op de kaart", + blurb: "Iets gebouwd? Voeg het toe aan de kaart zodat anderen het kunnen vinden en skaten.", + }, + regrip: { + title: "Een board opnieuw griptapen", + blurb: "Haal oude grip eraf en leg nieuwe grip netjes aan.", + }, + tune: { + title: "Bearings & Trucks afstellen", + blurb: "Reinig bearings, wissel bushings en stel je truck-geometrie in.", + }, + printMolds: { + title: "3D-geprinte mallen", + blurb: "Printbare mal- en uitlijnbasis-bestanden uit de community.", + }, + sk8cadTools: { + title: "Mal- & uitlijngereedschap", + blurb: "Ontwerp mallen met ingebouwde uitlijnbases.", + }, + }, + actions: { + findBuilder: { + title: "Vind een builder", + blurb: "Ramp- en DIY-builders in The Lab die het voor je kunnen ontwerpen of storten.", + }, + findCrew: { + title: "Vind een DIY-crew", + blurb: "Crews die zich op bouwen richten — sluit je aan bij degenen die spots werkelijkheid maken.", + }, + mapSpot: { + title: "Zet een DIY-spot op de kaart", + blurb: "Voeg de spot die je hebt gebouwd toe zodat hij op de kaart staat.", + }, + sellBuilds: { + title: "Verkoop je builds", + blurb: "Bied decks, ramps of onderdelen die je maakt aan op de Marktplaats.", + }, + findCoach: { + title: "Vind een coach", + blurb: "Coaches die DIY-skate-modules en spotbouw geven.", + }, + }, + }, + labelsUi: { + spotCategory: { + street: { + label: "Street", + description: "Willekeurige gevonden plekken, stedelijk terrein", + }, + transition: { + label: "Transition", + description: "Gebogen/gerampte oppervlakken", + }, + park: { + label: "Park", + description: "Gebouwde skateparken", + }, + plaza: { + label: "Plaza", + description: "Stedelijke pleinen (zoals MACBA, Love Park)", + }, + }, + spotFeature: { + wallrides: "Wallrides", + stairs: "Trappen & leuningen", + rails: "Rails", + ledges: "Ledges & stoepranden", + gaps: "Gaps", + flatground: "Flatground", + "manual-pads": "Manual Pads", + "half-pipes": "Half Pipes", + "quarter-pipes": "Quarter Pipes", + "mini-ramps": "Mini Ramps", + bowls: "Bowls", + vert: "Vert Ramps", + "mega-ramps": "Mega Ramps", + hubbas: "Hubbas", + "euro-gaps": "Euro Gaps", + banks: "Banks", + "spine-ramps": "Spine Ramps", + "roll-ins": "Roll-ins", + hips: "Hips", + volcano: "Volcano", + pyramids: "Pyramids / Funboxes", + "snake-runs": "Snake Runs", + "pump-track": "Pump Track Rollers", + "flat-bars": "Flatbars", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + wallrides: "Wallrides", + stairs: "Trappen & leuningen", + rails: "Rails", + ledges: "Ledges & stoepranden", + gaps: "Gaps", + flatground: "Flatground", + "manual-pads": "Manual Pads", + "half-pipes": "Half Pipes", + "quarter-pipes": "Quarter Pipes", + "mini-ramps": "Mini Ramps", + bowls: "Bowls", + vert: "Vert Ramps", + "mega-ramps": "Mega Ramps", + hubbas: "Hubbas", + "euro-gaps": "Euro Gaps", + banks: "Banks", + "spine-ramps": "Spine Ramps", + "roll-ins": "Roll-ins", + hips: "Hips", + volcano: "Volcano", + pyramids: "Pyramids / Funboxes", + "snake-runs": "Snake Runs", + "pump-track": "Pump Track Rollers", + "flat-bars": "Flatbars", + diy: "DIY", + rail: "Rail", + ledge: "Ledge", + gap: "Gap", + bowl: "Bowl", + stall: "Stall", + slappy: "Slappy", + }, + access: { + public: { + label: "Openbaar - voor iedereen toegankelijk", + }, + private: { + label: "Privéterrein - toestemming nodig", + }, + locals: { + label: "Vraag het eerst aan locals", + }, + }, + shelter: { + outdoor: { + label: "Buiten", + short: "Buiten", + description: "Volledig blootgesteld — regen stopt het skaten", + }, + partial: { + label: "Deels overdekt", + short: "Deels overdekt", + description: "Sommige obstakels blijven droog", + }, + covered: { + label: "Overdekt / met dak", + short: "Overdekt", + description: "Buiten maar onder een dak", + }, + indoor: { + label: "Binnen", + short: "Binnen", + description: "Volledig omsloten — skate bij regen of zon", + }, + }, + eventType: { + contest: "Wedstrijd", + demo: "Demo", + session: "Sessie", + workshop: "Workshop", + premiere: "Première", + tradeshow: "Beurs", + gameskate: "Game of Skate", + concert: "🎸 Concert", + jam: "🎵 Jam", + festival: "🎪 Festival", + popup: "🎯 Pop-up", + }, + gearCategory: { + deck: "Deck", + trucks: "Trucks", + wheels: "Wheels", + bearings: "Bearings", + shoes: "Skateschoenen", + clothing: "Kleding", + protective: "Bescherming", + stickers: "Stickers", + wax: "Wax", + tools: "Tools", + griptape: "Griptape", + rubbrick: "Rub Brick", + }, + gearCondition: { + new: { + label: "Nieuw", + description: "Nooit gebruikt, nog in verpakking", + }, + like_new: { + label: "Zo goed als nieuw", + description: "Nauwelijks gebruikt, uitstekende staat", + }, + good: { + label: "Goed", + description: "Normale slijtage, werkt perfect", + }, + well_used: { + label: "Veel gebruikt", + description: "Toont slijtage maar werkt nog", + }, + }, + priceType: { + fixed: { + label: "Vaste prijs", + description: "Prijs in USD of sats", + }, + free: { + label: "Gratis", + description: "Weggeven", + }, + trade: { + label: "Ruil", + description: "Wil ruilen", + }, + offer: { + label: "Bieding doen", + description: "Prijs onderhandelbaar", + }, + }, + listingType: { + selling: { + label: "Te koop", + description: "Gear te koop aanbieden", + }, + wtb: { + label: "Gezocht", + description: "Op zoek naar specifieke gear", + }, + }, + tour: { + spotType: { + street: "Street", + park: "Park", + diy: "DIY", + transition: "Transition", + hidden: "Verborgen parels", + }, + category: { + local: { + label: "Lokale tour", + description: "Toon verborgen spots in je stad", + }, + national: { + label: "Nationale tour", + description: "Roadtrips langs meerdere steden in het land", + }, + international: { + label: "Internationale tour", + description: "Grensoverschrijdende avonturen in meerdere landen", + }, + destruction: { + label: "World Destruction", + description: "KOTR-achtige wereldwijde teamcompetitie", + }, + }, + }, + crew: { + vibe: { + street: "Street", + transition: "Transition / Vert", + park: "Park", + diy: "DIY", + cruising: "Cruising / Filmen", + oldschool: "Old School", + allterrain: "All Terrain", + girls: "Meiden / Vrouwen", + youth: "Jeugd / Groms", + adaptive: "Adaptief", + punk: "Punk", + hiphop: "Rap / Hip-Hop", + }, + focus: { + mixed: "Gemengd / Algemeen", + builder: "DIY & Builders", + photo: "Foto & Film", + coaching: "Coaching", + art: "Kunst & Design", + music: "Band & Muziek", + wellness: "Training & Fysio", + }, + focusDescription: { + mixed: "Een gewone skatecrew — verschijnt alleen op de Crews-pagina.", + builder: "Een DIY-/parkbouwcrew — verschijnt ook in The Lab onder Builders.", + photo: "Een film-, foto- of montagecrew — verschijnt ook in The Lab onder Foto & Film.", + coaching: "Een coach-/lescrew — verschijnt ook in The Lab onder Coaching.", + art: "Een kunst-, design-, graffiti- of tattoo-collectief — verschijnt ook in The Lab onder Kunst & Design.", + music: "Een band of muziekcollectief — verschijnt ook in The Lab onder Muziek.", + wellness: "Een trainings-, fitness- of fysiocrew — verschijnt ook in The Lab onder Training.", + }, + lookingFor: { + filmer: "Filmer", + photographer: "Fotograaf", + editor: "Videomaker", + coach: "Coach", + builder: "Rampbouwer", + artist: "Kunstenaar / Ontwerper", + musician: "Muzikant / Band", + members: "Nieuwe leden", + }, + role: { + filmer: "Filmer", + photographer: "Fotograaf", + editor: "Editor", + coach: "Coach", + builder: "Builder", + artist: "Kunstenaar", + graffiti: "Graffiti", + tattoo: "Tattoo", + trainer: "Trainer", + musician: "Muzikant", + judge: "Jurylid", + manager: "Teammanager", + og: "OG", + }, + }, + memberVisibility: { + public: { + label: "Openbaar", + description: "Iedereen kan je in deze crew zien — op de openbare crewpagina en bij het vinden van crewgenoten.", + }, + crew: { + label: "Alleen crew", + description: "Alleen bevestigde crewgenoten en de oprichter zien je hier. Voor alle anderen verschijn je als een anoniem \"verborgen lid\". Let op: dit is privacy op app-niveau — je lidmaatschapstag bestaat nog steeds openbaar op relays, hij wordt alleen nooit aan buitenstaanders getoond.", + }, + }, + tagCategory: { + features: { + name: "Kenmerken", + description: "Obstakels en terrein", + }, + surfaces: { + name: "Oppervlakken", + description: "Materialen en texturen", + }, + sizes: { + name: "Maten", + description: "Afmetingen en schaal", + }, + stairs: { + name: "Trappenaantal", + description: "Aantal treden", + }, + vibes: { + name: "Vibes", + description: "Sfeer en staat", + }, + location: { + name: "Locatie", + description: "Locatiecontext", + }, + tricks: { + name: "Tricks", + description: "Goed voor specifieke tricks", + }, + }, + spotTagCategory: { + street: { + label: "Street", + description: "Streetspots - trappen, rails, ledges", + }, + park: { + label: "Park", + description: "Skateparken - openbaar of privé", + }, + diy: { + label: "DIY", + description: "DIY/zelfgemaakte spots", + }, + plaza: { + label: "Plaza", + description: "Openbare pleinen met skatevriendelijke architectuur", + }, + }, + status: { + active: { + label: "Actief", + description: "Helemaal goed — ga skaten.", + }, + bust: { + label: "Bust", + description: "Groot risico weggestuurd te worden — beveiliging of politie.", + }, + skate_stopped: { + label: "Skate-stopped", + description: "Van knoppen voorzien / afgedekt, maar deels skatebaar.", + }, + closed: { + label: "Gesloten", + description: "Tijdelijk gesloten — bouwwerkzaamheden of evenement.", + }, + gone: { + label: "Weg", + description: "Gesloopt, volgestort of definitief afgesloten.", + }, + }, + price: { + free: "GRATIS", + trade: "Ruil", + makeOffer: "Bieding doen", + offer: "Bod", + }, + }, + feesUi: { + feeFeaturedEventLabel: "Uitgelicht evenement", + feeFeaturedEventDesc: "Zet je evenement in de spotlight op SkateSpots", + feeFeaturedEventBenefit: "Je evenement verschijnt bovenaan de evenementenpagina", + feeLabProfileLabel: "Lab Pro-profiel", + feeLabProfileDesc: "Zet je diensten in de spotlight in The Lab", + feeLabProfileBenefit: "Pro-badge + uitgelichte plaatsing wanneer skaters The Lab bekijken", + feeFeaturedShopLabel: "Uitgelichte shop", + feeFeaturedShopDesc: "Zet je skateshop in de spotlight op de kaart en in de gids", + feeFeaturedShopBenefit: "Geverifieerde badge + uitgelichte pin op de kaart", + feeFeaturedTourLabel: "Uitgelichte tour", + feeFeaturedTourDesc: "Zet je tour in de spotlight op SkateSpots", + feeFeaturedTourBenefit: "Pro-badge + topplaatsing wanneer skaters tours bekijken", + duration7d: "7 dagen", + duration30d: "1 maand", + duration90d: "3 maanden", + duration365d: "12 maanden", + metaActive: "{{label}} — Actief", + daysRemainingOne: "{{count}} dag resterend", + daysRemainingMany: "{{count}} dagen resterend", + zapRequestContent: "SkateSpots {{label}} ({{tier}})", + errGenerate: "Kon factuur niet genereren", + paymentReceived: "⚡ Betaling ontvangen!", + paymentReceivedDesc: "{{amount}} sats — {{label}} is nu actief.", + autoPayFailed: "Automatisch betalen mislukt", + autoPayFailedDesc: "Betaal handmatig met de QR of factuur hieronder.", + payStatusUnknown: "Betalingsstatus onbekend — de betaling is mogelijk doorgegaan. Controleer je wallet voordat je opnieuw betaalt.", + invoiceCopied: "Factuur gekopieerd!", + activeBang: "{{label}} actief!", + chooseDuration: "Kies een periode", + bestValue: "Beste waarde", + perDay: "{{price}}/dag", + validFor: "Geldig voor", + amountLine: "~${{usd}} USD · naar {{name}} · {{tier}}", + payToContinue: "Betaal {{amount}} sats om door te gaan", + generating: "Factuur genereren…", + processing: "Betaling verwerken…", + invoiceQrAlt: "Lightning-factuur-QR", + copyInvoice: "Factuur kopiëren", + openWallet: "Wallet openen", + payConnected: "Betalen met verbonden wallet", + scanAny: "Scan met elke Lightning-wallet", + tryAgain: "Opnieuw proberen", + proReceiptTitle: "🦧⚡ Sasquatch Pro — je bent erin!", + proReceiptPass: "Pas: {{pass}} ({{sats}} sats)", + proReceiptActiveUntil: "Actief tot: {{until}}", + proReceiptUnlocked: "Wat je hebt ontgrendeld:", + proReceiptBullet1: "• Persoonlijke assistent — ik lees je Stash, crews, spots & listings", + proReceiptBullet2: "• Actie-concepten — gear aanbieden, een spotstatus plaatsen, trips plannen (jij bevestigt)", + proReceiptBullet3: "• Antwoorden die je persoonlijke context gebruiken, niet alleen openbare data", + proReceiptBullet4: "• ⚡ Je steunt SkateSpots direct & houdt het gratis + advertentievrij", + proReceiptThanks: "Bedankt dat je SkateSpots gratis & advertentievrij houdt. Ga nu shredden. 🛹", + proReceiptSubject: "Sasquatch Pro-bon", + receiptContent: "Sasquatch Pro — {{tier}} supporterpas 🦧⚡", + receiptAlt: "Sasquatch Pro supporterpas ({{tier}}), geldig tot {{until}}", + purchaseComment: "Sasquatch Pro — {{tier}} 🦧", + errLogin: "Log in om te upgraden naar Pro.", + errStart: "Kon de aankoop niet starten.", + errRecord: "Kon je pas niet registreren.", + }, + cardUi: { + save: "Kaart opslaan naar Nostr", + saved: "Kaart opgeslagen", + savedDesc: "Je kaart is nu ondertekend en verifieerbaar.", + saveFailed: "Kon de kaart niet opslaan", + notPublished: "Niet gepubliceerd", + titleNeon: "Rider", + titleRest: "Card", + saveFrontPng: "Voorkant opslaan (PNG)", + expired: "VERLOPEN", + logoUploaded: "Logo geüpload", + logoUploadFailed: "Kon het logo niet uploaden", + venue: "Gekoppelde locatie (optioneel)", + venueNone: "Geen locatie", + venueHint: "Kies een van je eigen spots om deze pas aan een locatie te binden. Een verificateur bevestigt dat je de eigenaar bent.", + venuePick: "Kies je locatie", + parkNoVenue: "Een Park-pas kan alleen door de eigenaar van de locatie worden uitgegeven — zet eerst een spot op de kaart die je bezit.", + parkAddVenue: "Een spot toevoegen", + parkNeedsVenue: "Kies een locatie die je bezit", + parkIssued: "Uitgegeven passen", + parkRevoke: "Intrekken", + parkRevoked: "Ingetrokken", + parkRevokeFailed: "Kon niet intrekken", + v: { + valid: "Geldig", + validDesc: "Handtekening geldig en uitgegeven door de locatie.", + expired: "Verlopen", + expiredDesc: "Voorbij de geldig-tot-datum.", + revoked: "Ingetrokken", + revokedDesc: "De uitgever heeft deze pas geannuleerd — accepteer hem niet.", + invalid: "Ongeldig", + invalidDesc: "De handtekening verifieert niet. Vertrouw hem niet.", + notFound: "Niet gevonden", + notFoundDesc: "Geen overeenkomende registratie op de relays.", + unverifiedIssuer: "Niet-geverifieerde uitgever", + unverifiedIssuerDesc: "Deze pas noemt een locatie die niet eigendom is van de sleutel van de uitgever.", + notBound: "Niet gebonden", + notBoundDesc: "Niet aan een locatie gebonden — bewijst niets over toegang.", + noRsvp: "Geen RSVP", + noRsvpDesc: "De houder heeft geen RSVP voor dit evenement geregistreerd.", + admitted: "Toegelaten", + admittedDesc: "Evenement van de organisator + de houder heeft RSVP'd.", + noHolder: "Geen houder in de link", + noHolderDesc: "Deze QR heeft geen tickethouder (`?h=`), dus de houder kan niet worden gecontroleerd.", + }, + passes: { + tab: "Mijn passen", + pass: "Toegangspas", + none: "Nog geen passen. Wanneer een locatie of organisator je er een uitgeeft, verschijnt die hier.", + }, + facets: { + title: "Toon identiteitsfacetten", + crews: "Crews", + local: "Lokaal", + roles: "Lab-rollen", + }, + roles: { + coach: "Coach", + filmer: "Filmer", + editor: "Editor", + photographer: "Fotograaf", + builder: "Builder", + artist: "Kunstenaar", + graffiti: "Graffiti", + tattoo: "Tattoo", + trainer: "Trainer", + musician: "Muzikant", + judge: "Jurylid", + organizer: "Organisator", + barber: "Barbier", + }, + crew: { + crewCard: "CREWKAART", + crewSub: "Je crew, op een kaart", + pick: "Kies een crew", + none: "Je zit nog niet in een crew — word lid of start er een.", + hint: "De kaart is opgebouwd uit de eigen ondertekende data van de crew. Bewerk de crew op zijn pagina om hem te wijzigen.", + members: "LEDEN", + spots: "SPOTS", + est: "Opgericht {{year}}", + openCall: "Open oproep", + verifiedCrew: "Geverifieerde crew", + viewCrew: "Bekijk de crew", + }, + event: { + pass: "EVENEMENTPAS", + passSub: "Een pas voor een evenement waar je naartoe gaat", + pick: "Kies een evenement", + none: "Nog geen evenementen — maak er eerst een, of RSVP voor een evenement.", + hint: "De pas is opgebouwd uit de eigen ondertekende data van het evenement. Alleen de organisator kan hem wijzigen.", + admits: "TOEGANG VOOR", + going: "{{count}} gaan", + verifiedEvent: "Geverifieerd evenement", + viewEvent: "Bekijk het evenement", + issuePass: "Geef een check-in pas uit", + issuePassBtn: "Pas uitgeven", + issuePassHint: "Een ondertekende pas voor een specifieke bezoeker — die laat hem bij de deur zien.", + notOrganiser: "Alleen de organisator kan passen uitgeven", + passIssued: "Pas uitgegeven", + issueFailed: "Kon de pas niet uitgeven", + issuedPasses: "Uitgegeven check-in passen", + }, + studio: { + unsaved: "Niet-opgeslagen wijzigingen", + saved: "Opgeslagen", + saveChanges: "Wijzigingen opslaan", + allSaved: "Opgeslagen — up-to-date", + showOnCard: "Toon op kaart", + derived: "Van je Skater-profiel", + noSkaterProfile: "Nog geen Skater-profiel —", + editSkaterProfile: "voeg je stijlen & niveau toe", + noPhoto: "Nog geen profielfoto —", + addPhoto: "voeg er een toe in je profiel", + finishTitle: "Maak je kaart af", + finishDesc: "Een foto en een Skater-profiel laten het echt lijken.", + checkPhoto: "Profielfoto", + checkName: "Weergavenaam", + checkProfile: "Stijlen & niveau", + checkCrew: "Word lid van een crew", + moreTypes: "Meer kaarttypes komen vrij zodra je spots die je bezit op de kaart zet, lid wordt van crews of RSVP't voor evenementen.", + accent: "Accentkleur", + accentHint: "Overschrijft het thema-accent", + accentClear: "Themakleur gebruiken", + logo: "Aangepast logo / wapen", + logoAdd: "Uploaden", + logoChange: "Wijzigen", + logoClear: "Verwijderen", + }, + back: { + title: "Printbare achterkant", + desc: "Crews, rollen, sponsors & links op de achterkant", + showBack: "Toon achterkant", + showFront: "Toon voorkant", + empty: "Hier staat nog niets — voeg crews, rollen of sponsors toe.", + }, + verify: { + checking: "Kaart controleren…", + notFound: "Kaart niet gevonden", + notFoundDesc: "Geen overeenkomend evenement gevonden op de relays. Het is misschien verwijderd, of de link klopt niet.", + invalid: "Handtekening ongeldig", + invalidDesc: "Dit evenement bestaat, maar de handtekening verifieert niet. Vertrouw het niet.", + authentic: "Authentiek", + authenticDesc: "De handtekening van de uitgever is geldig.", + kind: "Type", + kindPark: "Park Access Card", + kindRider: "Rider Card", + kindCrew: "Crew Card", + kindEvent: "Evenementpas", + organiser: "Organisator", + expired: "Verlopen", + valid: "Geldig", + holder: "Houder", + ticketHolder: "Tickethouder", + rsvp: "RSVP", + rsvpGoing: "Gaan", + rsvpInterested: "Geïnteresseerd", + rsvpNone: "Geen RSVP gevonden", + revoked: "Pas ingetrokken", + revokedDesc: "De uitgever heeft deze pas geannuleerd — accepteer hem niet.", + issuedBy: "Uitgegeven door", + accessLevel: "Toegangsniveau", + validThru: "Geldig tot", + selfIssued: "Status", + selfIssuedDesc: "Zelf uitgegeven identiteitskaart", + venue: "Locatie", + venueVerified: "Geverifieerd — de eigenaarsleutel van deze locatie komt overeen met de uitgever.", + venueMismatch: "Deze pas noemt een locatie die niet eigendom is van de sleutel van de uitgever.", + venueNone: "Niet aan een locatie gebonden.", + viewCard: "Bekijk de kaart", + disclaimer: "Een geldige handtekening bewijst wie deze kaart heeft ondertekend — het is geen bewijs van vaardigheid of van toegangsrechten verder dan wat de locatie heeft uitgegeven.", + details: "Details", + invalidLink: "Ongeldige link", + invalidLinkDesc: "Dat lijkt geen geldige kaartlink.", + }, + public: { + invalid: "Dat lijkt geen geldige kaartlink.", + createYourOwn: "Maak je eigen kaart", + editYourCard: "Bewerk je kaart", + backToEditor: "Terug naar de editor", + backHome: "Terug naar home", + notCustomised: "Deze skater heeft zijn kaart nog niet aangepast — dit is de standaardlook.", + verifyNote: "Scan de QR op de kaart om hem te verifiëren.", + }, + }, + routeUi: { + destination: "Bestemming", + routeTo: "Route naar {{label}}", + routeToLabel: "Route naar", + search: "Zoeken", + description: "Route-opties en navigatie in de app.", + routeMapAria: "Routekaart", + findingLocation: "Je locatie zoeken…", + plottingRoute: "Je route berekenen…", + refiningLocation: "Locatie verfijnen…", + offlineSavedRoute: "Offline · opgeslagen route {{age}}", + tapMapStart: "Tik op de kaart om je startpunt in te stellen", + fitRouteAria: "Toon de hele route op de kaart", + wholeRoute: "Hele route", + next: "Volgende", + nextStep: "Volgende · stap {{n}}", + followTheLine: "Volg de lijn", + toTheTurn: "tot de bocht", + toGo: "te gaan", + tryAgain: "Opnieuw proberen", + mode: { + foot: "Skaten / Lopen", + bike: "Fiets", + moto: "Moto", + car: "Auto", + transit: "Openbaar vervoer", + }, + from: "Van", + myLocation: "Mijn locatie", + tapTheMap: "Tik op de kaart…", + chooseOnMap: "Kies op de kaart", + direct: "direct", + transferOne: "1 overstap", + transfers: "{{count}} overstappen", + options: "{{count}} opties", + ride: "rit", + arrive: "aankomst", + speedAvg: "{{speed}} km/u gem.", + stepsCount: "{{count}} stappen", + onABoard: "op een board", + usesDrivingRoads: "gebruikt autowegen", + drivingEstimate: "schatting met de auto", + updating: "bijwerken…", + pickMode: "Kies een modus om je route te zien.", + waitingLocation: "Wachten op je locatie…", + routeSteps: "Routestappen", + walkingRoute: "wandelroute — sneller op een board", + planningView: "Planningsweergave — tik op Start om te volgen met live bochten, spraak en aankomst.", + leaveNow: "Nu vertrekken", + departAt: "Vertrek om", + arriveBy: "Aankomen voor", + departureTime: "Vertrektijd", + arrivalTime: "Aankomsttijd", + only: "Alleen", + clear: "wissen", + itinerary: "Reisplan", + group: { + bus: "Bus", + tram: "Tram", + metro: "Metro", + train: "Trein", + ferry: "Veerboot", + }, + walk: "Lopen", + rideVerb: "Rijden", + walkLower: "lopen", + rideLower: "rijden", + toStop: "naar", + track: "spoor {{track}}", + stopOne: "1 halte", + stopsCount: "{{count}} haltes", + tickets: "tickets ↗", + done: "Klaar", + stop: "Stop", + start: "Start", + arrived: "Je bent aangekomen. 🛹", + voiceOnNote: "Scherm blijft aan · spraak aan — bochten en aankomst worden uitgesproken.", + voiceOffNote: "Scherm blijft aan · spraak uit.", + followNote: "Bochten, spraak en aankomst terwijl je rolt. Houdt het scherm aan.", + voiceOffAria: "Spraaknavigatie uitschakelen", + voiceOnAria: "Spraaknavigatie inschakelen", + voiceStart: "Navigatie starten", + voiceArrived: "Je bent aangekomen", + voiceIn: "Over {{metres}} meter, {{instruction}}", + voiceContinue: "ga door", + voiceContinueCaps: "Ga door", + errPermissionDenied: "Locatietoegang geweigerd.", + errWaitingGps: "Wachten op een GPS-fix…", + errPermissionDeniedLong: "Locatietoegang geweigerd. Schakel locatie in om vanaf je huidige plek te routeren.", + errNoLocation: "Kon je locatie niet ophalen. Probeer opnieuw.", + errNoLocationShort: "Kon je locatie niet ophalen.", + errTransitNoRouteFiltered: "Geen route voor dat tijdstip of vervoersmiddel — probeer een ander tijdstip, of neem meer modi op.", + errTransitNoRoute: "Geen openbaarvervoersroute hier gevonden — dit gebied publiceert misschien geen open dienstregelingen.", + errTransitUnreachable: "Kon de OV-dienst niet bereiken. Controleer je verbinding en probeer opnieuw.", + errRoutingBusy: "De routedienst is nu druk — probeer het zo meteen opnieuw.", + errNoRouteMode: "Geen route voor deze modus — de bestemming ligt misschien buiten het wegennet. Probeer een andere modus.", + errRoutingUnreachable: "Kon de routedienst niet bereiken. Controleer je verbinding en probeer opnieuw.", + departures: "Vertrektijden", + upcomingFrom: "Aankomende vertrektijden vanaf {{stop}}", + loadingDepartures: "Vertrektijden laden…", + noDepartures: "Geen aankomende vertrektijden gevonden op deze halte.", + live: "live", + cancelled: "geannuleerd", + refresh: "Vernieuwen", + tripLoginTitle: "Log in om op te slaan", + tripLoginDesc: "Meld je aan om deze trip als collectie te bewaren.", + tripCollectionTitle: "{{destination}} skate trip 🛹", + tripCollectionDesc: "Tripplan door The Sasquatch — {{count}} dagen in {{destination}}.", + tripCollectionDescOne: "Tripplan door The Sasquatch — {{count}} dag in {{destination}}.", + tripSavedTitle: "Opgeslagen in collecties 🦧", + tripSavedDesc: "Je {{destination}}-trip is opgeslagen.", + tripSaveFailed: "Opslaan mislukt", + tripSaveFailedDesc: "Probeer het zo meteen opnieuw.", + daysInDestinationOne: "{{count}} dag in {{destination}}", + daysInDestination: "{{count}} dagen in {{destination}}", + wetForecast: "Natte voorspelling — zoek een lokale crew voor overdekte/binnenopties.", + dayLabel: "Dag {{n}}", + freeSkate: "Vrij skaten — verken & film. 🎥", + tapToBook: "tik om te boeken / zap ⚡", + localCrews: "Lokale crews", + saving: "Opslaan…", + savedToCollections: "Opgeslagen in collecties", + saveSpotOne: "Sla {{count}} spot op in een collectie", + saveSpots: "Sla {{count}} spots op in een collectie", + flights: "Vluchten", + stays: "Verblijf", + gettingAround: "Vervoer", + noMiddleman: "Ik plan het skaten — vluchten & verblijf openen op de echte sites (geen KYC, geen tussenpersoon).", + ageJustNow: "zojuist", + ageMinAgo: "{{count}} min geleden", + ageHourAgo: "{{count}} u geleden", + ageDayAgo: "{{count}} d geleden", + skateRightHere: "precies hier", + skateMin: "~{{count}} min cruisen", + skateHours: "~{{hours}} u cruisen", + maneuver: { + headOut: "Vertrek", + arrive: "Aankomen bij de spot", + continueStraight: "Ga rechtdoor", + bearLeft: "Buig linksaf", + bearRight: "Buig rechtsaf", + turnLeft: "Sla linksaf", + turnRight: "Sla rechtsaf", + sharpLeft: "Scherp links", + sharpRight: "Scherp rechts", + turn: "Sla af", + keepLeft: "Links aanhouden", + keepRight: "Rechts aanhouden", + takeFork: "Neem de splitsing", + merge: "Voeg in", + roundabout: "Neem de rotonde", + takeRamp: "Neem de afrit", + takeExit: "Neem de afslag", + }, + maneuverOnto: "{{instruction}} naar {{road}}", + }, + sasquatchUi: { + live: "live", + offline: "offline", + genericTitle: "SkateSpots Assistent 🦧", + genericGreeting: "Yo! Ik ben The Sasquatch. Vraag me alles over spots, evenementen, coaches, gear, of hoe de app werkt. Ik heb live data van de SkateSpots-relay!", + q1: "Plan 3 dagen voor me in Lissabon", + q2: "Vind spots bij mij in de buurt", + q3: "Nog aankomende evenementen?", + q4: "Wat zijn crews?", + q5: "Hoe werken zaps?", + q6: "Wat is Nostr?", + q7: "Wat is Mijn Stash?", + q8: "Is dit gratis?", + bubbleTitle: "Ingedrukt houden en slepen om te verplaatsen · Tik om te openen", + openGuideAria: "Sasquatch-gids openen", + hideAria: "De Sasquatch-assistent verbergen", + hide: "Assistent verbergen", + showAria: "De Sasquatch-assistent tonen", + activeUntil: "Actief tot {{date}}", + platformOwner: "Platformeigenaar", + upgradeTitle: "Upgraden naar Sasquatch Pro", + goPro: "Go Pro", + goProBlurb: "Persoonlijke AI · vanaf 2k sats", + aiBalanceTitle: "Sasquatch AI-tegoed (alleen eigenaar) — opwaarderen bij {{provider}}", + aiChip: "⚡ AI {{balance}}", + minimizeToBubbleAria: "Minimaliseren naar bubbel", + minimize: "Minimaliseren", + closePanelAria: "Paneel sluiten", + close: "Sluiten", + askLab: "Vraag over Coaching & Filmen", + askMap: "Vraag over Spots, Shops & Gear", + askAnything: "Vraag me alles 🛹", + quickQuestions: "Snelle vragen:", + you: "🧑 Jij", + thinking: "aan het denken...", + inputPlaceholder: "Vraag over spots, evenementen, coaches...", + liveDataFrom: "Live data van", + nostrRelays: "Nostr-relays", + clear: "wissen", + gettingLocation: "📍 Je locatie ophalen…", + findingClosest: "🔍 De dichtstbijzijnde spots zoeken…", + checkingLive: "🔍 Live data controleren…", + planningTrip: "🗺️ Je {{destination}}-trip plannen...", + searchingRelays: "🔍 De relays doorzoeken voor {{tool}}...", + perk1: "Persoonlijke assistent — Sasquatch leest je eigen Stash, crews, spots & listings", + perk2: "Actie-concepten: gear aanbieden, een skatestatus plaatsen, een trip plannen — jij bevestigt voordat er iets wordt gepubliceerd", + perk3: "Antwoorden gebruiken je persoonlijke context, niet alleen openbare data", + perk4: "⚡ Steun SkateSpots direct & houd het gratis en advertentievrij", + welcomeTitle: "Bedankt voor je steun aan Sasquatch Pro! 🦧⚡", + welcomeDesc: "Betaling verzonden — je pas wordt actief zodra de provider hem bevestigt (meestal binnen een minuut). Bedankt dat je de straten vrij houdt.", + invoiceCopied: "Factuur gekopieerd", + dialogDesc: "Geef je AI-skategids een boost. 100% financiert een gratis, advertentievrije community-app.", + proSupporter: "Je bent een Pro-supporter ⚡", + extendPrompt: "Wil je verlengen? Kies hieronder een tier om meer tijd toe te voegen.", + scanToPayPre: "Scan om te betalen", + scanToPayAmount: "{{sats}} sats", + scanToPayPost: "voor {{label}} van Pro", + invoiceQrAlt: "Lightning-factuur-QR", + copyInvoice: "Factuur kopiëren", + ivePaid: "Ik heb betaald", + ivePaidHint: "Tik op \"Ik heb betaald\" nadat je wallet heeft bevestigd — dit registreert je pas aan je Nostr-identiteit.", + freeStaysPre: "Gratis Sasquatch blijft gratis — openbare spot-/evenement-/coachzoekopdracht, tripplanning + het volledige trickwoordenboek. Pro voegt de ", + freeStaysEmphasis: "persoonlijke + actie", + freeStaysPost: " laag toe.", + loginFirst: "Log eerst in om te upgraden.", + paysTo: "Betaalt aan", + overLightning: "via Lightning. Gebonden aan je npub.", + popular: "Populair", + sats: "sats", + extend: "Verlengen", + done: "Klaar!", + cancelledNothing: "Geannuleerd — er is niets gepubliceerd.", + draftReview: "Concept — bekijk & bevestig", + statusTextPlaceholder: "Statustekst", + titlePlaceholder: "Titel", + priceSatsPlaceholder: "Prijs (sats)", + conditionPlaceholder: "Staat", + cancel: "Annuleren", + aiTitle: "Sasquatch AI", + owner: "Eigenaar", + notConfigured: "niet geconfigureerd", + unavailable: "niet beschikbaar", + satsValue: "{{balance}} sats", + theNode: "de node", + lowBalance: "Bijna leeg — waardeer op bij {{provider}} of AI valt terug op de keyless provider.", + aiDesc: "AI per verzoek, gefinancierd in sats via Routstr. Waardeert op wanneer het laag is.", + tier7d: "7 dagen", + tier1m: "1 maand", + tier3m: "3 maanden", + tier1y: "1 jaar", + badgeTry: "Probeer het", + badgeOff20: "20% korting", + badgeBest: "Beste waarde · 40% korting", + draftPostStatusTitle: "Een skatestatus plaatsen", + draftAutoExpires: "Verloopt automatisch over {{count}} min", + draftPostStatusCta: "Status plaatsen", + draftCategory: "Categorie: {{value}}", + draftSize: "Maat: {{value}}", + draftCondition: "Staat: {{value}}", + draftMaxPrice: "Max prijs: {{price}} {{currency}}", + draftPriceOpen: "Prijs: open", + draftLookingForTitle: "Op zoek naar \"{{title}}\"", + draftWantedCta: "Gezocht-advertentie plaatsen", + draftPrice: "Prijs: {{price}} {{currency}}", + draftPriceOffer: "Prijs: bieding doen", + draftListTitle: "\"{{title}}\" te koop aanbieden", + draftPublishCta: "Listing publiceren", + statusPosted: "Status geplaatst 🛹", + wantedPublished: "Gezocht-advertentie gepubliceerd 🔎", + listingPublished: "Listing gepubliceerd 💸", + mustBeLoggedIn: "Je moet ingelogd zijn.", + }, + sasquatchChat: { + faq: { + hi: "Hé! Ik ben The Sasquatch 🦧 Jouw AI-skategids. Vraag me over spots, evenementen, coaches, gear — of alles over de app. Wat heb je nodig?", + hello: "Wassup! 🛹 Ik ben The Sasquatch. Vraag me over skate spots, evenementen, coaches, of hoe de app werkt. Wat is er?", + hey: "Hé skater! 🤙 Vraag me over spots bij jou in de buurt, aankomende evenementen, coaches, of alles over SkateSpots.", + whoAreYou: "Ik ben The Sasquatch 🦧 — de AI-gids voor SkateSpots. Ik vind skate spots wereldwijd, zoek evenementen, coaches, filmers en gear-listings op. Allemaal op live Nostr-data. Vraag maar raak!", + whatCanYouDo: "Ik kan skate spots vinden op stad of land, aankomende evenementen opzoeken, coaches en filmers in The Lab vinden, gear-listings doorzoeken en vragen beantwoorden over hoe de app werkt. Probeer: 'spots in Bangkok' of 'vind een coach'! 🛹", + whatIsNostr: "Nostr is een simpel, open protocol voor gedecentraliseerde sociale netwerken. Denk aan Twitter, maar geen enkel bedrijf heeft de controle — je gebruikt cryptografische sleutels in plaats van gebruikersnamen, kiest welke relays je data opslaan (of runt je eigen), en één account werkt in elke Nostr-app! 🔑", + isThisPrivate: "Hier is het eerlijke verhaal 🛡️\n\n• Je **GPS-locatie blijft op je apparaat** — 'Bij mij in de buurt' centreert alleen de kaart. Die wordt nooit naar ons gestuurd of gepubliceerd.\n• **Spots die je toevoegt zijn openbaar** (dat is het punt van een gedeelde kaart) — dus zet geen pin op je eigen voordeur.\n• **DM's & crewchats zijn end-to-end versleuteld** — alleen leden kunnen ze lezen.\n• Zoals elke website kunnen servers waarmee je verbindt (kaarttegels, relays) je **IP** zien. Wil je dat ook verbergen? Gebruik een VPN of Tor.\n\nAlle details op de [Privacy-pagina](/privacy). 🛹", + privacy: "Korte versie 🛡️: je GPS verlaat nooit je apparaat, spots die je publiceert zijn bewust openbaar, en DM's/crewchats zijn end-to-end versleuteld. Servers kunnen nog steeds je IP zien (normaal voor elke website) — een VPN of Tor verbergt dat als je wilt. Volledige uitleg op de [Privacy-pagina](/privacy).", + amITracked: "SkateSpots volgt je niet — geen advertenties, geen analytics-profilering, geen dataverkoop, en er is geen SkateSpots-server die je locatie verzamelt. Je GPS blijft op je apparaat. Het enige wat servers zien (kaarttegels, relays) is je **IP** — net als bij elke website. Gebruik een VPN of Tor om dat te verbergen. Meer op de [Privacy-pagina](/privacy). 🛡️", + doYouTrack: "Nee — geen tracking, geen advertenties, geen dataverzameling. Je GPS blijft op je apparaat en er is geen centrale server die je logt. Servers waarmee je verbindt kunnen je IP zien (zoals elke site); een VPN/Tor verbergt dat. Zie de [Privacy-pagina](/privacy). 🛹", + vpn: "Volledig optioneel, maar solide als je extra privacy wilt 🛡️. Een VPN verbergt je **IP** (ruwe locatie) voor de servers waarmee SkateSpots praat — kaarttegels, relays, enz. Kies een no-logs-provider die je vertrouwt (bijv. Mullvad); vermijd dubieuze gratis diensten.\n\nLet op: een VPN verbergt **niet** de spots die je publiceert (die zijn openbaar), en zet geen browser-GPS aan als je anoniem wilt blijven. Volledige details op de [Privacy-pagina](/privacy).", + tor: "Tor Browser geeft je de sterkste IP-privacy — het routeert je via meerdere relays zodat servers je echte IP niet kunnen zien 🧅. Nadeel: het is langzamer, en kaarten + sommige Nostr-relays kunnen haperen of Tor-exits blokkeren. Ideaal voor de extra voorzichtige.\n\nOnthoud: Tor verbergt je IP, niet de spots die je publiceert, en schakel geen browser-GPS in als anonimiteit het doel is. Meer op de [Privacy-pagina](/privacy).", + hideMyIp: "Twee gratis opties 🛡️: een **betrouwbare VPN** (makkelijk, snel — verbergt je IP achter hun servers) of **Tor Browser** (maximale privacy, langzamer). Beide zorgen dat de servers waarmee SkateSpots verbindt je echte IP niet zien. Let op: ze verbergen niet de spots die je publiceert. Zie de [Privacy-pagina](/privacy).", + isMyLocation: "Je locatie is veilig 📍 — 'Bij mij in de buurt' leest je GPS alleen op je apparaat, om de kaart te centreren en nabije spots te sorteren. Die wordt nooit op Nostr gepubliceerd, nooit naar ons gestuurd, nooit gedeeld. Alleen spots die je bewust toevoegt zijn openbaar. Details op de [Privacy-pagina](/privacy).", + whatAreZaps: "Zaps zijn directe Bitcoin Lightning-tips die via Nostr worden verstuurd! Klik op ⚡ bij alle inhoud, stuur sats rechtstreeks naar de wallet van de maker. Zoiets als 'liken' maar dan met echt geld. Direct, peer-to-peer, geen tussenpersonen. ⚡", + howToLogin: "Twee manieren:\n1. **Browser-extensie** (Desktop): Installeer Alby of nos2x en klik op 'Log in'\n2. **Nieuwe gebruiker**: Klik op 'Sign up' om sleutels te genereren. Download je nsec (geheime sleutel) en BEWAAR HEM — dit is voor altijd je account!", + whatIsCashu: "Ingebouwde Bitcoin-wallet! Cashu ecash-tokens gedekt door Lightning — werkt offline bij skate spots, privacygericht (mints kunnen betalingen niet volgen). Ga naar Wallet in Instellingen om het te gebruiken. 🥜", + whatIsNwc: "Nostr Wallet Connect — als USB-C voor Lightning-wallets. Verbind Alby, Minibits, Zeus of Coinos één keer, en zap voor altijd met één klik. Versleuteld, jij bepaalt de bestedingslimieten. 🔌⚡", + isItFree: "100% gratis. Geen advertenties, geen abonnementen, geen bedrijfs-onzin. Gebouwd door skaters voor skaters. Community-gefinancierd via Angor — bekijk de Supporters-pagina. Je kunt ook Bitcoin verdienen met community-zaps voor het bijdragen van kwaliteitsspots. 🛹", + whatCanIDo: "Ontdek wereldwijd spots op de kaart, huur pro's in The Lab (coaches, filmers, fotografen, editors, rampbouwers), rol met een crew, doe mee aan evenementen, ga op tours, koop/verkoop gear, houd je privé-Stash bij, zap makers, bekijk spotweer, en bouw de gedecentraliseerde skatecommunity!", + whatIsTheLab: "The Lab is waar je pro's uit de skatescene inhuurt: Coaches, Filmers, Fotografen, Videomakers en ramp-/park-/DIY-builders. Elk kan een persoon of een collectief zijn (crew/studio) — leden bevestigen met hun eigen sleutels, dus het is legit. Allemaal op Nostr, geen nepaccounts. 🎓", + whatIsACrew: "Crews zijn je aan de kaart verankerde skatefamilie — met wie je skatet, niet wie je inhuurt. Elke crew heeft thuisbasis op de kaart (turquoise pins), homespots, leden, vibes en een manifest. Leden bevestigen vanaf hun eigen sleutel. Maak er een op Crews → 'Create Crew'. 🤘", + whatAreCrews: "Crews zijn je aan de kaart verankerde skatefamilie — met wie je skatet, niet wie je inhuurt. Elke crew heeft thuisbasis op de kaart (turquoise pins), homespots, leden en een manifest. Leden bevestigen vanaf hun eigen sleutel. Ga naar het tabblad Crews om er een te starten of lid te worden! 🤘", + howToStartACrew: "Ga naar het tabblad Crews → 'Create Crew'. Geef het een naam, zet je thuisbasis op de kaart, voeg vibes toe (of je eigen custom #hashtag), koppel je homespots en voeg leden toe via npub. Elk lid bevestigt vanaf zijn eigen sleutel, dus het roster is legit. 🤘", + whatIsMyStash: "Mijn Stash is je PRIVÉ, versleutelde gearlocker (NIP-44-versleuteling). Houd je decks, trucks, wheels, schoenen bij — met opslaglocatie, staat, zeldzaamheid en prijs. Alleen JIJ kunt het lezen, tenzij je items openbaar markeert. Ideaal voor verzekering of het plannen van een ruil. 🎒", + whatIsStash: "Mijn Stash is je PRIVÉ, versleutelde gearvoorraad. Leg alles vast wat je bezit — staat, waar het is opgeslagen, waarde — allemaal versleuteld zodat alleen jij het ziet. Markeer items openbaar als je ze wilt verkopen of showen. 🎒", + whatIsABuilder: "Builders zijn ramp-/park-/DIY-crews in The Lab die je kunt inhuren om transitions, bowls, rails of een heel park te bouwen. Ze tonen wat ze bouwen, materialen, projectgrootte, en kunnen gecertificeerd/verzekerd zijn. Vaak collectieven — en ze kunnen de spots die ze hebben gebouwd aan de kaart koppelen. 🏗️", + whatIsANutzap: "Nutzaps (NIP-61) zijn ecash-tips die via Nostr worden gestuurd — privé Cashu-tokens direct naar iemand gezapt. Je kunt nutzap ONTVANGEN instellen in de Wallet. (Volledige nutzaps versturen rolt uit — gebruik voor nu Lightning-zaps.) 🥜⚡", + whatIsClink: "CLINK is een Nostr-native betaalcode (een 'noffer'). Shops, crews en Lab-pro's kunnen er een toevoegen zodat je hen kunt betalen zonder Lightning-adres — je ziet een 'Pay via CLINK'-knop met een QR. Scan hem met een CLINK-wallet zoals ShockWallet. 🔗⚡ [specs](https://clinkme.dev/specs.html) [apps](https://clinkme.dev/apps.html)", + whatIsNoffer: "Een noffer is een CLINK-betaalcode — een herbruikbare, Nostr-native manier om betaald te worden zonder webserver of Lightning-adres. Voeg de jouwe toe op je shop-/crew-/Lab-profiel en mensen kunnen je direct betalen. 🔗", + whatAreTours: "Tours zijn begeleide skate-trips — lokale sessies, nationale roadtrips of world destruction-tours. Vind ze op de kaart of in het Tours-gedeelte, ontmoet elkaar en skate nieuw terrein met locals. 🗺️🛹", + whatIsAShop: "Skate Shops zijn lokale winkels die op de kaart staan. Ontdek en steun echte stenen (of online) skateshops in je omgeving — sommige accepteren zelfs Bitcoin. 🏪", + howToSellGear: "Ga naar Gear Swap / Marktplaats en maak een listing (NIP-99). Voeg foto's toe, een prijs in sats, staat, en pin hem eventueel aan een spot zodat hij op de kaart verschijnt. Kopers zappen of sturen je direct een bericht. 🛹💸", + supporters: "SkateSpots wordt community-gefinancierd via Angor (gedecentraliseerde Bitcoin-crowdfunding) — geen advertenties, geen investeerders, geen dataverkoop. Bekijk de Supporters-pagina om het project te steunen en de straten vrij te houden. ❤️⚡", + trustScore: "Trustscores (0-100) mogelijk gemaakt door Relatr. Analyseert je Nostr-netwerk: volgers, activiteit, betrokkenheid, zaps. Hoger = meer vertrouwd. Helpt bots en spam filteren. Bekijk elk profiel om de score te zien. 🛡️", + whatRelay: "SkateSpots gebruikt: 🛹 goskatespots.nostr1.com (primair, op allowlist voor kwaliteit) + relay.ditto.pub (globaal) + purplepag.es (profiel-aggregator). Je data wordt over allemaal gerepliceerd voor redundantie.", + tripPlanner: "Noem een stad en ik bouw een dag-tot-dag skate-trip 🗺️ — spots, evenementen, coaches en lokale crews, weersbewust (regenachtige dag = crewtip voor overdekte spots). Probeer 'plan 3 dagen voor me in Lissabon'. Ik kan het allemaal in een collectie opslaan en je doorsturen naar vluchten/verblijf op de echte sites (geen KYC, geen tussenpersoon). 🛹", + planATrip: "Zeg gewoon 'plan 3 dagen voor me in Barcelona' (of een andere stad) en ik zet per dag spots, sessies, coaches en lokale crews op een rij. Sla het op als collectie en ga shredden. 🗺️🛹", + sasquatchPro: "**Sasquatch Pro** 🦧⚡ is een Lightning-supporterpas die de persoonlijke kant van mij ontgrendelt:\n\n• 🧠 **Persoonlijke assistent** — ik lees je eigen Stash, crews, spots & listings\n• ✨ **Actie-concepten** — gear aanbieden, je skatestatus plaatsen, trips plannen (jij bevestigt altijd voordat iets wordt gepubliceerd)\n• 💬 **Persoonlijke context** — mijn antwoorden gebruiken je eigen data, niet alleen openbare resultaten\n• ⚡ **Steun het project** — jij houdt SkateSpots gratis en advertentievrij\n\nGratis Sasquatch blijft gratis: openbare spot-/evenement-/coach-/crewzoekopdracht, het woordenboek & tripplanning werken allemaal zonder Pro. Pro voegt alleen de *persoonlijke* dingen toe. Tik bovenin op **⚡ Go Pro**. Tiers: 7 dagen ~2k sats, 1 maand ~5k, 3 maanden ~12k, 1 jaar ~36k.", + proPerks: "Pro-voordelen 🦧⚡: persoonlijke assistent (leest je Stash/crews/spots/listings), actie-concepten (gear aanbieden, status plaatsen, trips plannen — jij bevestigt), en antwoorden die je eigen persoonlijke context gebruiken. Bovendien steun je SkateSpots direct en houd je het gratis + advertentievrij. Gratis blijft gratis — Pro voegt de persoonlijke laag toe. Tik bovenin op **⚡ Go Pro**.", + proVersion: "De Pro-versie van mij 🦧⚡ voegt een **persoonlijke assistent** toe: ik kan je eigen Stash, crews, spots & listings lezen, acties voor je opstellen (gear aanbieden, een status plaatsen, een trip plannen — jij bevestigt altijd eerst), en je persoonlijke context in mijn antwoorden gebruiken. Het steunt ook direct het project. Gratis Sasquatch (spot-/evenement-/coach-/crewzoekopdracht, woordenboek, tripplanner) blijft gratis. Tik bovenin op **⚡ Go Pro**.", + perks: "Pro-voordelen 🦧⚡: persoonlijke assistent (je Stash/crews/spots/listings), actie-concepten die jij bevestigt, en antwoorden die je eigen context gebruiken — plus je houdt de app gratis & advertentievrij. Tik bovenin op **⚡ Go Pro**.", + goPro: "Tik bovenin op de knop **⚡ Go Pro** om het upgrade-scherm te openen. Pro ontgrendelt mijn persoonlijke assistent (Stash/crews/spots/listings) en actie-concepten, en steunt direct het project. Betaal met Lightning — 7 dagen ~2k sats tot 1 jaar ~36k sats. Gratis functies blijven gratis. 🦧", + proPricing: "Pro-tiers (betaal met Lightning ⚡): **7 dagen** ~2.000 sats (~$1,20), **1 maand** ~5.000 sats (~$3), **3 maanden** ~12.000 sats (~$7, 20% korting), **1 jaar** ~36.000 sats (~$21, beste waarde). Tik bovenin op **⚡ Go Pro**.", + howMuchIsPro: "Pro-tiers: 7 dagen ~2.000 sats, 1 maand ~5.000 sats, 3 maanden ~12.000 sats (20% korting), 1 jaar ~36.000 sats (beste waarde). Betaal met Lightning ⚡. Tik bovenin op **⚡ Go Pro**.", + upgrade: "Om te upgraden naar Sasquatch Pro, tik bovenin op de knop **⚡ Go Pro**. Betaal met Lightning (7 dagen ~2k sats tot 1 jaar ~36k). Pro ontgrendelt mijn persoonlijke assistent en actie-concepten, en steunt direct het project. 🦧⚡", + }, + statsTitle: "📊 **SkateSpots in cijfers**", + weatherTemp: "• {{temp}}°C (voelt als {{feels}}°C)", + weatherSkateability: "• Skatebaarheid: **{{label}}** ({{score}}/100)", + weatherError: "Kon het weer nu niet lezen. Probeer het zo meteen opnieuw. 🌧️", + labelSpots: "spots", + labelEvents: "evenementen", + labelLabPros: "Lab-pro's", + labelCrews: "crews", + labelShops: "skateshops", + labelTours: "tours", + labelGear: "gear-listings", + unnamed: "Naamloos", + emptyWhere: " in **{{place}}**", + emptyResult: "Geen {{label}}{{where}} gevonden op dit moment 🦧\n\nDat kan betekenen dat er nog geen zijn vermeld — of dat de relays traag antwoordden. Probeer het zo meteen opnieuw, controleer de spelling, of [voeg de eerste toe op de kaart](https://skate-spots.org/map). 🛹", + foundTitle: "{{emoji}} **{{count}}** {{label}} gevonden:\n{{lines}}{{more}}", + moreResults: "\n\n…en nog **{{count}}** meer — [bekijk ze allemaal op de kaart](https://skate-spots.org/map) 🗺️", + locationDenied: "Ik kan je locatie niet zien — er verlaat nooit iets je apparaat; ik lees hem alleen lokaal wanneer je het vraagt, en de browser heeft net geweigerd. Tik op de kaart op 🎯 **Bij mij in de buurt**, of noem me een stad: \"spots in Bangkok\". 🛹", + noNearbySpots: "Nog geen spots in je buurt op de kaart 🦧 — [wees de eerste die er een plaatst](https://skate-spots.org/create-spot). 🛹", + closestTitle: "Nu het dichtst bij jou:", + closestFooter: "_Berekend op je apparaat — je locatie is het nooit verlaten._", + proNudge: "Dat is iets voor **Sasquatch Pro** 🦧⚡ — met Pro kan ik je Stash, crews, spots en listings lezen, gear-listings, gezocht-advertenties en skatestatussen opstellen, en je trips plannen. Het is een Lightning-supporterpas die SkateSpots gratis & advertentievrij houdt. Tik bovenin op de knop **⚡ Go Pro** om het te ontgrendelen. 🛹", + draftingProPerk: "Acties opstellen (een status plaatsen, gear aanbieden) is een **Sasquatch Pro**-voordeel 🦧⚡ — tik bovenin op **⚡ Go Pro** om het te ontgrendelen.", + draftIntro: "Hier is een concept — bekijk het en tik om te publiceren. Er gaat niets live tot je bevestigt. 🛹", + draftFailed: "Ik kon dat concept niet helemaal maken — vertel me de details nog eens (bijv. \"bied mijn Spitfire wheels aan voor 8000 sats\").", + tripAskCity: "Waarheen? Noem een stad (bijv. \"plan 3 dagen voor me in Lissabon\") en ik bouw een trip. 🗺️", + tripEmptyMap: "Nog niets op de kaart voor **{{destination}}** 🦧 — wees de eerste die spots plaatst op [skate-spots.org](https://skate-spots.org). Zodra locals spots, crews & evenementen toevoegen, bouw ik een volledige trip voor je.", + tripLocked: "Ik heb een **{{destination}}**-missie voor je vastgelegd 🛹 — spots, sessies en locals hieronder. Pas hem aan of sla hem op.", + tripFailed: "Kon de live data nu niet bereiken om dat te plannen. Probeer het zo meteen opnieuw! 🛹", + tripEmptyMapLocal: "Nog niets op de kaart voor **{{destination}}** 🦧 — wees de eerste op [skate-spots.org](https://skate-spots.org).", + tripMissionLocal: "Hier is een **{{destination}}**-missie 🛹 — spots, sessies & locals hieronder.", + relayFailed: "De relays antwoordden nu niet op tijd 🛰️ — dat is meestal een trage verbinding, geen ontbrekende spot. Probeer het zo meteen nog eens. 🛹", + couldNotProcess: "Hmm, dat kon ik niet verwerken. Probeer het anders te formuleren!", + freeTierFallback: "Dat vereist AI-redenering — een **Sasquatch Pro**-functie ⚡🦧\n\nIk kan nog steeds **spots, evenementen, coaches, crews, shops, tours en gear** rechtstreeks van de relays vinden — vraag me bijv. \"spots in Barcelona\" — en het [Woordenboek](/glossary) behandelt 150+ tricks & termen. Tik bovenin op **⚡ Go Pro** om AI-antwoorden te ontgrendelen.", + aiDownFallback: "Mijn AI-brein haalt even lucht 🦧 — maar ik sta voor je klaar:\n\n• 🗺️ [Kaart](/) — spots, shops, evenementen bij jou in de buurt\n• 🧪 [The Lab](/lab) — coaches, filmers, editors\n• 📖 [Woordenboek](/glossary) — 150+ tricks & termen\n• 👥 [Crews](/crews) — vind je mensen\n\nOf noem me gewoon een **stad** (\"spots in Barcelona\") of een **trick** (\"wat is een nollie\") en ik antwoord direct. 🛹", + wentWrong: "Er ging iets mis aan mijn kant. Probeer het zo meteen opnieuw! 🦧", + publishError: "Kon dat niet publiceren: {{error}}. Probeer het zo meteen opnieuw.", + unknownError: "onbekende fout", + }, +}; export default nlBatch2; diff --git a/src/i18n/nl/batch3.ts b/src/i18n/nl/batch3.ts index fbc288e..2aee0a7 100644 --- a/src/i18n/nl/batch3.ts +++ b/src/i18n/nl/batch3.ts @@ -1,4 +1,1299 @@ -/** nl — batch 3. Filled by the translation pass; empty until then. */ -const nlBatch3 = {}; +/** + * Dutch (nl-NL) — batch 3. Namespace: settingsUi (settings, auth, signup, + * onboarding, profile, legal). Skate terms stay English (Spot, Shop, Crew, + * Gear, Stash, The Lab, Nostr, Lightning, Zap, Relay, sats, NIP-05, NWC, npub, + * Cashu); trick names stay English. Placeholders preserved. + */ +const nlBatch3 = { + settingsUi: { + proSupport: { + title: 'Pro & Ondersteuning', + subtitle: 'Optionele extra\'s die SkateSpots gratis houden', + prepaidTitle: 'Vooraf betaald, geen abonnement', + prepaidBody: 'Elke aankoop is een eenmalige Bitcoin/Lightning-betaling — geen account, geen terugkerende kosten, geen bewaarneming. Opnieuw betalen verlengt je tijd.', + sasquatchTitle: 'Sasquatch Pro', + sasquatchBenefit: 'Ontgrendelt de persoonlijke AI-assistent — die kan je eigen Stash, crews en advertenties lezen — en helpt het project financieren.', + active: 'Actief', + activeUntil: 'Actief tot {{date}}', + daysLeft: 'nog {{count}} dagen', + notActive: 'Niet actief', + goPro: 'Word Pro', + extend: 'Pro verlengen', + day: 'dag', + featuredTitle: 'Uitgelichte plaatsing', + featuredBenefit: 'Zet een advertentie bovenaan met een Pro-badge — voor Lab-profielen, events, Shops en tours.', + featuredHow: 'Looptijden gelden voor elk type; langere verbintenissen kosten minder per dag. Je zet een advertentie in de spotlight wanneer je die aanmaakt of bewerkt.', + featuredUntil: 'Tot {{date}}', + yourFeatured: 'Je uitgelichte advertenties', + noneFeatured: 'Geen actieve uitgelichte plaatsingen.', + freeTitle: 'Gratis manieren', + freeBody: 'De AI-FAQ en lokale zoekfunctie zijn altijd gratis, en je kunt een marktplaatsadvertentie publiceren met gratis proof-of-work in plaats van de sats-vergoeding.', + }, + notFound: { + seoTitle: '404 - Pagina niet gevonden', + seoDescription: 'De pagina die je zoekt kan niet worden gevonden. Ga terug naar de startpagina om verder te browsen.', + message: 'Oeps! Pagina niet gevonden', + returnHome: 'Terug naar home', + }, + loginArea: { + signUp: 'Registreren', + logIn: 'Inloggen', + }, + accountSwitcher: { + switchAccount: 'Account wisselen', + walletSettings: 'Wallet-instellingen', + addAccount: 'Nog een account toevoegen', + logout: 'Uitloggen', + }, + amberHint: { + defaultAction: 'versturen', + multiBefore: 'Je signer vraagt je om goed te keuren', + multiTimes: '{{approvals}} keer', + multiAfter: 'om te {{action}} — dat is normaal voor versleutelde berichten (één goedkeuring per ontvanger). Keur ze allemaal goed.', + single: 'Je signer vraagt je goedkeuring om te {{action}}.', + }, + amberCallback: { + processing: 'Amber-login verwerken...', + gotResult: 'Resultaat ontvangen: {{result}}', + noResultDebug: 'Geen resultaat van Amber', + noResultToast: 'Geen resultaat ontvangen van Amber. De bewerking is mogelijk geannuleerd.', + validPubkey: 'Geldige pubkey! Inloggen...', + loginSuccessful: 'Succesvol ingelogd!', + loginErrorDebug: 'Inlogfout: {{error}}', + invalidResultDebug: 'Ongeldig resultaatformaat: {{result}}', + loggedInTitle: 'Ingelogd', + amberLoginDesc: 'Succesvol ingelogd met Amber!', + loginFailedTitle: 'Inloggen mislukt', + loginFailedDesc: 'Amber-login kon niet worden voltooid. Probeer het opnieuw.', + invalidPubkeyDesc: 'Ongeldige pubkey ontvangen van Amber.', + sessionLostToast: 'Sessiegegevens zijn verloren. Probeer het opnieuw.', + eventSignedTitle: 'Event ondertekend', + eventSignedDesc: 'Je event is ondertekend door Amber.', + signingFailedTitle: 'Ondertekenen mislukt', + signingFailedDesc: 'Het verwerken van het ondertekende event van Amber is mislukt.', + operationCompleteTitle: 'Bewerking voltooid', + operationCompleteDesc: '{{op}} voltooid.', + }, + loginDialog: { + loginWithAmber: 'Inloggen met Amber (Android)', + welcomeTitle: 'Welkom bij SkateSpots', + welcomeSubtitle: 'Registreer of log in om verder te gaan', + newHere: 'Nieuw hier?', + createFree: 'Maak een gratis account. Geen e-mail nodig.', + createAccount: 'Account aanmaken', + orLogIn: 'Of log in', + loggedInTitle: '🛹 Ingelogd!', + loggedIn: 'Ingelogd!', + connectedAmber: 'Verbonden via Amber!', + amberLoginFailed: 'Amber-login mislukt', + amberCancelled: 'Login geannuleerd. Tik op "Amber openen" om het opnieuw te proberen.', + amberNotFound: 'Amber niet gevonden. Zorg dat Amber is geïnstalleerd uit de ZapStore.', + loginFailed: 'Inloggen mislukt', + pubkeyError: 'Plak je hex-pubkey (64 tekens) of npub uit Amber', + pairedSigner: 'Gekoppeld met je signer.', + connectFailed: 'Kon geen verbinding maken met je signer.', + openedEncrypted: 'Je versleutelde sleutel geopend.', + openKeyFailed: 'Kon die sleutel niet openen.', + bunkerPrefix: 'Moet beginnen met bunker://', + connectedBunker: 'Verbonden via bunker!', + bunkerFailed: 'Mislukt: {{error}}', + checkBunkerUri: 'Controleer je bunker-URI', + nsecPrefix: 'Moet beginnen met nsec1', + invalidNsec: 'Ongeldige nsec: {{error}}', + checkKey: 'Controleer je sleutel', + noExtensionTitle: 'Geen extensie gevonden', + noExtensionDesc: 'Installeer Alby of een andere NIP-07-extensie.', + amberIdleDesc: 'Je sleutel blijft in Amber. Eén tik — keur goed in Amber en je bent terug, ingelogd. Niets om te kopiëren.', + continueWithAmber: 'Doorgaan met Amber', + noAmberGetIt: 'Heb je Amber niet? Download het →', + waitingAmberTitle: 'Wachten op Amber…', + waitingAmberDesc: 'Keur het verzoek goed in Amber. Je wordt automatisch ingelogd zodra je terugkomt.', + openAmberAgain: 'Amber opnieuw openen', + havingTrouble: 'Problemen? Voer je sleutel handmatig in', + enterPublicKey: 'Voer je publieke sleutel in', + enterPublicKeyDescBefore: 'Alleen als de automatische flow niet werkte. In Amber: tik op je profiel →', + copyPublicKey: 'Publieke sleutel kopiëren', + enterPublicKeyDescAfter: 'en plak die hier.', + connect: 'Verbinden', + back: '← Terug', + signInWithPhone: 'Inloggen met je telefoon', + signInWithPhoneDesc: 'Scan met een signer-app (Amber, nsec.app). Je sleutel verlaat je telefoon nooit.', + showPairingCode: 'Koppelingscode tonen', + waitingSigner: 'Wachten op je signer…', + copyLink: 'Link kopiëren', + orPasteBunker: 'of plak een bunker-URL', + bunkerTitle: 'Bunker (NIP-46)', + bunkerPasteBefore: 'Plak je', + bunkerPasteAfter: 'URI.', + amberInstructions: 'Instellingen → NIP-46 Bunker → Aanmaken → Kopiëren', + nsecAppInstructions: 'App verbinden → Bunker-URI kopiëren', + secretKeyTitle: 'Geheime sleutel', + secretKeyRawDesc: 'Plak je Nostr-geheime sleutel direct.', + secretKeyEncDesc: 'Open een met wachtwoord beveiligde sleutelback-up.', + rawNsec: 'Ruwe nsec', + encryptedNip49: 'Versleuteld (NIP-49)', + nsecWarning: '⚠️ Gebruik dit alleen op een vertrouwd apparaat. Deel je nsec nooit.', + login: 'Inloggen', + encSaferDesc: 'Veiliger: de sleutel blijft versleuteld tot je je wachtwoord invoert, dus de back-up is veilig om in cloudopslag of een wachtwoordmanager te bewaren.', + password: 'Wachtwoord', + openEncryptedKey: 'Versleutelde sleutel openen', + browserExtensionTitle: 'Browserextensie (NIP-07)', + browserExtensionDesc: 'Het beste voor desktop. Werkt met Alby, nos2x, Flamingo.', + loginWithExtension: 'Inloggen met extensie', + }, + signupDialog: { + download: 'Downloaden', + stepChoose: 'Kiezen', + stepProfile: 'Profiel', + stepSaveKey: 'Sleutel opslaan', + somethingWrong: 'Er is iets misgegaan', + createFailed: 'Kon je account niet aanmaken. Probeer het opnieuw.', + keySavedTitle: 'Geheime sleutel opgeslagen!', + keySavedDesc: 'Je sleutel is veilig opgeslagen.', + downloadFailedTitle: 'Download mislukt', + downloadFailedDesc: 'Kon het sleutelbestand niet downloaden. Kopieer het handmatig.', + encSavedTitle: 'Versleutelde back-up opgeslagen 🔐', + encSavedDesc: 'Bewaar zowel het bestand als het wachtwoord — je hebt beide nodig om weer in te loggen.', + encFailed: 'Kon die sleutel niet versleutelen.', + invalidFileTitle: 'Ongeldig bestandstype', + invalidFileDesc: 'Selecteer een afbeeldingsbestand voor je avatar.', + fileTooLargeTitle: 'Bestand te groot', + fileTooLargeDesc: 'Avatar-afbeelding moet kleiner zijn dan 5MB.', + avatarUploadedTitle: 'Avatar geüpload!', + avatarUploadedDesc: 'Je avatar is succesvol geüpload.', + uploadFailedTitle: 'Upload mislukt', + uploadFailedDesc: 'Avatar uploaden mislukt. Probeer het opnieuw.', + nameRequiredTitle: 'Weergavenaam vereist', + nameRequiredDesc: 'Kies een weergavenaam zodat andere skaters weten wie je bent. Je kunt die altijd wijzigen.', + reserveFailedTitle: 'Kon die naam niet reserveren', + reserveFailedDesc: '{{error}} Je kunt er later een claimen in Instellingen.', + profileCreatedTitle: 'Profiel aangemaakt!', + profileCreatedDesc: 'Je profiel is ingesteld.', + profileFailedTitle: 'Profiel instellen mislukt', + profileFailedDesc: 'Je account is aangemaakt, maar het instellen van je profiel is mislukt. Je kunt het later bijwerken.', + welcomeToastTitle: 'Welkom!', + welcomeToastDesc: 'Je account is klaar.', + titleWelcome: 'Word lid van SkateSpots', + titleProfile: 'Stel je profiel in', + titleDone: 'Welkom!', + createFreeAccount: 'Maak je gratis account', + createFreeAccountDesc: 'Geen e-mail, geen telefoon, geen wachtwoord. Je account is een Nostr-sleutel — kies waar die leeft.', + recommended: 'Aanbevolen', + signUpWithAmber: 'Registreren met Amber', + signUpWithAmberDesc: 'Je sleutel wordt aangemaakt en opgeslagen in de Amber-app — SkateSpots krijgt hem nooit te zien. Meest veilig. Eén tik om goed te keuren.', + continueWithAmber: 'Doorgaan met Amber', + orQuickWay: 'of de snelle manier', + quickAccount: 'Snel account op dit apparaat', + quickAccountDesc: 'We genereren een sleutel die op dit apparaat blijft. Snelste start — we helpen je direct daarna een back-up te maken.', + createQuickAccount: 'Snel account aanmaken', + quickReassurance: 'Duurt 5 seconden · blijft op dit apparaat · we helpen je het hierna te back-uppen', + preferAnotherSigner: 'Liever een andere signer?', + iosDesktopNudge: 'Op iOS of desktop? Een signer-app of browserextensie is de veiligste optie —', + seeAllOptions: 'Bekijk alle opties', + youreInPickName: 'Je bent er! 🛹 Kies een weergavenaam zodat skaters weten wie je bent', + changeAnytime: 'Je kunt die later altijd wijzigen. Bio en avatar zijn optioneel.', + publishingProfile: 'Je profiel publiceren...', + displayName: 'Weergavenaam', + displayNamePlaceholder: 'bijv. Tony, gnarlyGrind, of je crew-naam', + displayNameHint: 'Vereist — hoe je overal in SkateSpots verschijnt. Wijzig het wanneer je wilt.', + skateName: 'Je SkateSpots-naam', + skateNameHint: 'Gratis en optioneel — een geverifieerde handle die een ✓ op je profiel toont.', + bio: 'Bio', + bioPlaceholder: 'Vertel anderen over jezelf...', + avatar: 'Avatar', + uploadAvatar: 'Avatar-afbeelding uploaden', + saving: 'Opslaan...', + saveAndStart: 'Opslaan & beginnen met skaten', + addNameToContinue: 'Voeg een weergavenaam toe om verder te gaan.', + savingPublishesNote: 'Opslaan publiceert je profiel naar Nostr — je signer vraagt je misschien één keer om goed te keuren.', + youreIn: 'Je bent er! 🛹', + oneQuickThing: 'Nog één dingetje voordat je begint…', + saveLoginKey: 'Bewaar je inlogsleutel', + saveLoginKeyBefore: 'Dit is de', + only: 'enige', + saveLoginKeyAfter: 'weg terug naar je account — geen e-mail, geen wachtwoordherstel. Bewaar hem nu en je kunt op elk apparaat inloggen, waar je ook skatet.', + revealSaveKey: 'Onthul & bewaar mijn sleutel', + recoveryCopied: 'Herstelcode gekopieerd. Bewaar hem ergens veilig.', + saved: 'Opgeslagen', + treatLikeBoardKeys: 'Behandel hem als de sleutels van je board — iedereen met deze code beheert je account. Deel hem nooit.', + hideEncBackup: 'Versleutelde back-up verbergen', + saveEncBackup: 'Versleutelde back-up opslaan', + encBackupBefore: 'Een met wachtwoord beveiligde kopie — veilig om in cloudopslag of een wachtwoordmanager te bewaren. Je hebt het bestand', + and: 'en', + encBackupAfter: 'het wachtwoord nodig.', + choosePassword: 'Kies een wachtwoord', + saveEncBackupCta: 'Versleutelde back-up opslaan', + savedCodeAria: 'Ik heb mijn herstelcode opgeslagen', + savedCodeLabel: 'Ik heb mijn herstelcode ergens veilig opgeslagen — een wachtwoordmanager, of offline opgeschreven.', + letsSkate: 'Laten we skaten', + saveLater: 'Ik bewaar hem later in Instellingen', + advancedSigner: 'Geavanceerd: gebruik liever een signer-app', + }, + mnemonic: { + generatedTitle: 'Herstelzin gegenereerd! 🎉', + generatedDesc: 'Schrijf deze 12 woorden in volgorde op. Ze zijn de sleutel tot je account!', + savedTitle: 'Herstelzin opgeslagen!', + savedDesc: 'Bewaar dit bestand op een veilige plek.', + downloadFailedTitle: 'Download mislukt', + downloadFailedDesc: 'Kon het bestand niet downloaden. Kopieer het handmatig.', + copiedTitle: 'Naar klembord gekopieerd!', + copiedDesc: 'Je herstelzin is gekopieerd.', + qrWindowTitle: 'QR-code van herstelzin', + qrHeading: 'Je QR-code van de herstelzin', + qrAlt: 'QR-code van herstelzin', + qrWarning: 'Houd deze QR-code privé en veilig!', + qrPrint: 'QR-code afdrukken', + qrFailedTitle: 'QR-code mislukt', + qrFailedDesc: 'Kon geen QR-code genereren.', + accountCreatedTitle: 'Account aangemaakt! 🎉', + accountCreatedDesc: 'Je bent helemaal klaar! Je herstelzin is veilig.', + loginFailedTitle: 'Inloggen mislukt', + loginFailedDesc: 'Account aanmaken mislukt. Probeer het opnieuw.', + verifyFailedTitle: 'Verificatie mislukt', + verifyFailedDesc: 'De woorden komen niet overeen. Controleer en probeer het opnieuw.', + titlePrefix: 'Account aanmaken met', + titleSuffix: 'Herstelzin', + twelveWordTitle: 'Herstelzin van 12 woorden', + twelveWordDesc: 'Je herstelzin is als een hoofdwachtwoord. Schrijf hem op papier en bewaar hem veilig. Je hebt hem nodig om je account vanaf andere apparaten te openen of als je je browsergegevens wist.', + generate: 'Herstelzin genereren', + useNsecInstead: 'Gebruik liever een geavanceerde nsec-sleutel', + yourPhrase: 'Je herstelzin', + copy: 'Kopiëren', + download: 'Downloaden', + qrCode: 'QR-code', + criticalWarning: 'Kritieke beveiligingswaarschuwing', + warnWriteStrong: 'Schrijf hem op', + warnWrite: 'op papier en bewaar hem veilig', + warnNeverShareStrong: 'Deel hem nooit', + warnNeverShare: 'je herstelzin met wie dan ook', + warnBackupsStrong: 'Houd meerdere back-ups', + warnBackups: 'op verschillende veilige plekken', + warnAnyoneStrong: 'Iedereen met deze zin', + warnAnyone: 'beheert je account voor altijd', + warnLoseStrong: 'Als je hem verliest', + warnLose: 'verlies je je account permanent', + savedSecurely: 'Ik heb hem veilig opgeslagen', + verifyTitle: 'Verifieer je herstelzin', + verifyDesc: 'Om te controleren of je hem goed hebt opgeslagen, voer deze woorden in:', + wordLabel: 'Woord #{{n}}', + wordPlaceholder: 'Voer woord #{{n}} in', + goBack: 'Terug', + verifyCreate: 'Verifiëren & account aanmaken', + completeTitle: 'Account aangemaakt!', + completeDesc: 'Je Nostr-account is klaar voor gebruik!', + signerTitle: 'Aanbevolen: stel een signer-app in', + signerSubtitle: 'Houd je sleutels extra veilig', + signerDesc: 'Gebruik voor betere veiligheid een speciale signer-app in plaats van je herstelzin overal te plakken. Signer-apps houden je sleutels veilig terwijl je elke Nostr-app kunt gebruiken.', + signerCta: 'Meer over signer-apps', + skip: 'Nu overslaan', + }, + signupMethod: { + titlePrefix: 'Kies je', + titleSuffix: 'registratiemethode', + subtitle: 'Beide methoden zijn veilig. Kies wat het beste bij je past!', + recommended: 'Aanbevolen', + mnemonicTitle: 'Herstelzin', + mnemonicDesc: '12 makkelijk te onthouden woorden. Industriestandaard gebruikt door Bitcoin, Ethereum en de meeste cryptowallets.', + mnemonicF1: 'Makkelijk op papier te schrijven', + mnemonicF2: 'Werkt met andere Nostr-apps (NIP-06)', + mnemonicF3: 'Kan meerdere accounts genereren', + mnemonicF4: 'Bekend bij cryptogebruikers', + useMnemonic: 'Herstelzin gebruiken', + advanced: 'Geavanceerd', + nsecTitle: 'Geheime sleutel (nsec)', + nsecDesc: 'Ruwe cryptografische sleutel. Technischer, maar geeft je directe toegang tot je Nostr-identiteit.', + nsecF1: 'Directe cryptografische controle', + nsecF2: 'Compatibel met alle Nostr-apps', + nsecF3: 'Eén tekenreeks om te back-uppen', + nsecF4: 'Geen afleidingslaag', + useNsec: 'Geheime sleutel gebruiken', + footer: '🔒 Beide methoden zijn even veilig. Kies op basis van je voorkeur!', + }, + skateNip05: { + placeholder: 'jouwnaam', + claimedSuffix: 'is van jou — sla je profiel op om hem te publiceren.', + checking: 'Beschikbaarheid controleren…', + available: '{{name}}@{{domain}} is beschikbaar', + claim: 'Claim hem', + hint: 'Letters, cijfers, streepjes. Gratis, en getoond als een ✓-badge op je profiel.', + }, + nip05Required: { + getFree: 'Ontvang een gratis / goedkope NIP-05', + paid: 'Betaald', + requiredTitle: 'NIP-05-verificatie vereist', + bannerReason: 'Om spam te voorkomen en vertrouwen op te bouwen, hebben {{role}} een geverifieerd Nostr-adres (NIP-05) nodig.', + gateReason: 'Om spam te voorkomen en vertrouwen op te bouwen, moet {{role}} NIP-05-verificatie hebben.', + addInSettings: 'NIP-05 toevoegen in Instellingen', + explainer: 'NIP-05 bewijst je identiteit door je Nostr-profiel aan een domein te koppelen — zoals', + updateProfile: 'Werk je profiel bij', + }, + editProfile: { + uploadSuccessTitle: 'Gelukt', + uploadSuccessDesc: '{{field}} succesvol geüpload', + uploadErrorDesc: 'Uploaden van {{field}} mislukt. Probeer het opnieuw.', + mustBeLoggedIn: 'Je moet ingelogd zijn om je profiel bij te werken', + invalidClinkTitle: 'Ongeldige CLINK-code', + invalidClinkDesc: 'Dat lijkt geen geldige noffer1…-code. Wis hem of plak een geldige.', + invalidLightningTitle: 'Ongeldig Lightning-adres', + invalidLightningDesc: 'Gebruik een e-mailachtig adres zoals jij@walletofsatoshi.com.', + invalidSpTitle: 'Ongeldig Silent Payment-adres', + invalidSpDesc: 'Een Silent Payment-adres begint met "sp1" en is behoorlijk lang. Wis het of plak een geldig adres.', + invalidCordnTitle: 'Ongeldige Cordn-link', + invalidCordnDesc: 'Plak een volledige https://… Cordn-contactlink.', + updateSuccessTitle: 'Gelukt', + updateSuccessDesc: 'Je profiel is bijgewerkt', + updateErrorDesc: 'Profiel publiceren mislukt. Controleer je relay-verbindingen in Instellingen > Relays', + identityTitle: 'Identiteit', + identityDesc: 'Hoe je overal in SkateSpots verschijnt.', + displayName: 'Weergavenaam', + displayNamePlaceholder: 'Je naam', + bio: 'Bio', + bioPlaceholder: 'Een paar woorden over jou en je skating…', + profilePicture: 'Profielfoto', + pictureDesc: 'Upload of plak een vierkante afbeelding.', + bannerImage: 'Bannerafbeelding', + bannerDesc: 'Een brede afbeelding voor de bovenkant van je profiel.', + website: 'Website', + bitcoinTitle: 'Bitcoin & betalingen', + bitcoinDesc: 'Laat mensen je direct zappen, tippen en betalen — geen tussenpersoon.', + lightningAddress: 'Lightning-adres', + lud16Invalid: 'Gebruik een e-mailachtig adres, bijv. jij@jouwdomein.com.', + lud16Ok: 'Activeert de “Zap”-knop op je profiel.', + lud16Hint: 'Directe Bitcoin-tips. Activeert de “Zap”-knop op je profiel.', + silentPaymentAddress: 'Silent Payment-adres', + spInvalid: 'Moet beginnen met “sp1” en behoorlijk lang zijn.', + spOk: 'Geldig — een herbruikbaar, privé on-chain adres.', + spHint: 'Herbruikbaar statisch on-chain adres (BIP-352). Deel het één keer; elke betaling is niet te koppelen.', + clinkTipCode: 'CLINK-tipcode', + nofferInvalid: 'Dat lijkt geen geldige noffer1…-code.', + nofferOk: 'Geldig — er verschijnt een “Tip in Bitcoin”-knop op je profiel.', + nofferHint: 'Zelfbewarende CLINK-code zodat iedereen je via Nostr kan tippen — geen tussenpersoon.', + skateProfileTitle: 'Skate-profiel', + skateProfileDesc: 'Laat je sponsors zien en hoe de crew je bereikt.', + badges: 'Badges', + badgesHint: '(label + optionele link)', + badgeExample: 'bijv. Independent Trucks', + badgeLabelPlaceholder: 'Badgelabel…', + badgeUrlPlaceholder: 'https://… (optioneel)', + removeBadge: 'Badge verwijderen', + addBadge: 'Badge toevoegen', + badgesDescBefore: 'Sponsors, Shops of mensen die je skating steunen — en alles wat je verder wilt laten zien. Elk wordt een aanklikbare chip op je profiel. Je', + badgesDescAfter: 'ledbadge wordt automatisch toegevoegd.', + coordinator: 'Coördinator', + cordnInvalid: 'Dat lijkt geen coördinator. Plak een nprofile, een cordn.net-link of een https://-URL.', + cordnOk: 'Wordt op je profiel getoond — anderen kunnen het met één tik toevoegen.', + cordnHint: 'De Cordn-coördinator die anderen gebruiken om je te berichten. Privé, versleuteld, van jou.', + useMyCoordinator: 'Mijn coördinator gebruiken', + accountTitle: 'Account', + accountDesc: 'Extra accountinstellingen.', + botAccount: 'Bot-account', + botAccountDesc: 'Markeer dit account als geautomatiseerd of een bot.', + saving: 'Opslaan…', + saveProfile: 'Profiel opslaan', + nip05VerifiedHandle: 'NIP-05-geverifieerde handle', + nip05How: 'Hoe?', + extraHandles: 'Extra handles', + extraHandlesHint: 'optioneel — voeg er tot 5 toe', + nip05HintEmpty: 'Een geverifieerde handle zoals jij@jouwdomein.com — de versie van Nostr van een blauw vinkje. Toont een ✓-badge op je profiel en ontgrendelt het filter “Geverifieerd” in de Skaters-directory.', + nip05Invalid: 'Gebruik een e-mailachtige handle, bijv. jij@jouwdomein.com — geen “https://” of spaties.', + nip05Checking: 'Je domein controleren…', + nip05Verified: 'Geverifieerd — je domein bevestigt dat deze handle van jou is. ✓', + nip05Mismatch: 'Je domein koppelt deze handle aan een ANDERE sleutel. Pas je .well-known/nostr.json aan zodat die naar dit account wijst.', + nip05Unreachable: 'Kon je /.well-known/nostr.json op je domein nog niet bereiken. Opgeslagen handles werken zodra je domein correct is ingesteld.', + nip05Enter: 'Voer je NIP-05-handle in.', + freeHandleBefore: 'Geen eigen domein? Claim een gratis', + freeHandleAfter: 'handle van SkateSpots.', + uploadLabel: '{{label}} uploaden', + previewLabel: '{{label}} voorbeeld', + }, + security: { + recoveryCopied: 'Herstelcode gekopieerd. Bewaar hem ergens veilig.', + savedTitle: 'Opgeslagen!', + recoveryDownloaded: 'Herstelcode gedownload. Bewaar hem ergens veilig.', + downloadFailedTitle: 'Download mislukt', + downloadFailedDesc: 'Kopieer hem in plaats daarvan handmatig.', + loginRequired: 'Inloggen vereist', + loginRequiredDesc: 'Log in om beveiligingsinstellingen te openen.', + backupConfirmedTitle: 'Back-up bevestigd! ✅', + backupConfirmedDesc: 'Mooi! Je sleutels zijn veilig.', + yourRecoveryCode: 'Je herstelcode', + recoveryCodeDesc: 'Heb je hem niet opgeslagen bij het registreren? Je kunt hem hier altijd ophalen.', + recoveryCodeBefore: 'Deze code is de', + only: 'enige', + recoveryCodeAfter: 'manier om weer in te loggen op een nieuw apparaat of in een nieuwe browser. Bewaar hem ergens veilig (een wachtwoordmanager, of op papier). Iedereen die hem heeft, beheert je account — deel hem nooit.', + revealRecovery: 'Mijn herstelcode onthullen', + qrHint: 'Scan met een andere Nostr-app om in te loggen. Houd dit scherm privé.', + neverShareHide: '⚠️ Deel dit nooit. Verberg het als je klaar bent.', + hide: 'Verbergen', + amberNoteBefore: 'Je bent ingelogd met', + amberNoteAfter: '. Je herstelcode staat in Amber — open de Amber-app om hem te back-uppen. SkateSpots ziet je sleutel nooit.', + bunkerNoteBefore: 'Je bent ingelogd met een', + remoteSigner: 'externe signer (bunker)', + bunkerNoteAfter: '. Je herstelcode wordt beheerd door je signerdienst, niet door SkateSpots. Back-up hem daar.', + extensionNoteBefore: 'Je bent ingelogd met een', + browserExtension: 'browserextensie', + extensionNoteAfter: '. Je herstelcode staat in de extensie — gebruik de eigen back-up-/exportoptie. SkateSpots ziet je sleutel nooit.', + otherNote: 'Je herstelcode wordt beheerd door je signer-app, niet door SkateSpots. Back-up hem daar.', + backupWarningTitle: '⚠️ Heb je een back-up van je herstelzin of geheime sleutel gemaakt?', + backupWarningBody: 'Je sleutels zijn de ENIGE manier om je account te openen. Als je ze verliest, verlies je alles - er is geen wachtwoordherstel!', + iveBackedUp: 'Ik heb een back-up van mijn sleutels gemaakt', + backupConfirmed: '✅ Back-up bevestigd', + backupNotConfirmed: '⚠️ Back-up niet bevestigd', + backupConfirmedStatusDesc: 'Je hebt bevestigd dat je sleutels veilig zijn geback-upt.', + backupNotConfirmedDesc: 'Zorg dat je een back-up maakt van je herstelzin of geheime sleutel!', + notSavedYetBefore: 'Je herstelcode nog niet opgeslagen? Geen probleem — haal hem op uit het', + notSavedYetAfter: 'gedeelte hierboven, bewaar hem veilig en bevestig hieronder.', + yesBackedUp: 'Ja, ik heb een back-up van mijn sleutels gemaakt', + bestPracticesTitle: 'Beste praktijken voor sleutelbeveiliging', + bestPracticesDesc: 'Hoe je je Nostr-account veilig houdt', + bp1Title: 'Schrijf hem op papier', + bp1Desc: 'Een fysieke back-up is het veiligst. Bewaar hem op een veilige plek, zoals een kluis.', + bp2Title: 'Meerdere back-ups', + bp2Desc: 'Bewaar kopieën op verschillende veilige plekken (kluis thuis, bankkluisje, enz.)', + bp3Title: 'Deel je sleutels nooit', + bp3Desc: 'Echte Nostr-apps vragen NOOIT om je nsec of herstelzin na de eerste login', + bp4Title: 'Bewaar ze niet onversleuteld in de cloud', + bp4Desc: 'Vermijd Google Docs, e-mailconcepten of platte tekst in cloudopslag', + bp5Title: 'Overweeg een browserextensie', + bp5Desc: 'Alby, nos2x of Flamingo houden je sleutels veilig en stellen ze nooit bloot aan websites', + importantReminders: '⚠️ Belangrijke herinneringen', + rem1: 'Als je je sleutels verliest, verlies je je account permanent', + rem2: 'Geen enkel bedrijf of persoon kan je wachtwoord opnieuw instellen - wij ook niet', + rem3: 'Iedereen met je sleutels heeft volledige controle over je account', + rem4: 'Je sleutels beheren al je Nostr-gegevens in ALLE apps', + recommendedSigners: '🔌 Aanbevolen Nostr-signers', + recommendedSignersDesc: 'Gebruik een Nostr-signer voor betere veiligheid en gemak', + recommended: 'Aanbevolen', + amberDesc: 'Veilige Nostr-signer voor Android. Houdt je sleutels veilig op je telefoon en ondertekent events zonder ze bloot te stellen.', + albyDesc: 'Volwaardige extensie met Lightning-wallet, WebLN en NWC-ondersteuning.', + flamingoDesc: 'Eenvoudige, strakke interface. Richt zich op Nostr-ondertekening zonder walletfuncties.', + nos2xDesc: 'Minimale, lichtgewicht extensie voor gevorderde gebruikers.', + nostrConnectTitle: '☁️ Nostr Connect (externe signers)', + nostrConnectDesc: 'Gebruik een externe signer om je account vanaf elk apparaat te openen', + nostrConnectBody: 'Nostr Connect (ook wel "bunkers" genoemd) laat je je sleutels op een beveiligde server opslaan en vanaf elk apparaat inloggen. Je sleutels verlaten de server nooit, maar je kunt je account overal gebruiken!', + nsecAppDesc: 'Gratis, veilige externe signer. Maak een bunker://-URI en plak die bij het inloggen.', + nostrumDesc: 'Een andere externe signer-optie met mobiele ondersteuning.', + howToUse: '💡 Hoe te gebruiken:', + howToUseDesc: 'Maak een account aan bij een van deze diensten, haal je bunker://-verbindingsreeks op en plak die in het tabblad "Nostr Connect" bij het inloggen.', + }, + relayList: { + connected: 'Verbonden', + connecting: 'Verbinden…', + offline: 'Offline', + removeUrl: '{{url}} verwijderen', + add: 'Toevoegen', + publishedTitle: 'Relaylijst gepubliceerd', + publishedDesc: 'Gesynchroniseerd naar Nostr (kind 10002).', + publishFailedTitle: 'Relaylijst publiceren mislukt', + invalidUrlTitle: 'Ongeldige relay-URL', + invalidUrlDesc: 'Probeer iets als wss://relay.example.com', + alreadyInList: 'Relay staat al in je lijst', + keepReadWriteTitle: 'Behoud lezen of schrijven op', + keepReadWriteDesc: 'Een relay heeft minstens één van lezen/schrijven nodig.', + alreadyInThisList: 'Relay staat al in deze lijst', + dmPublishedTitle: 'DM-relays gepubliceerd', + dmPublishedDesc: 'NIP-17-inbox bijgewerkt.', + dmPublishFailedTitle: 'DM-relays publiceren mislukt', + nip65Title: 'Relays (NIP-65)', + nip65DescUser: 'Tik op Lezen / Schrijven om te wisselen. Gepubliceerd naar Nostr als je kind 10002-lijst.', + nip65DescLoggedOut: 'Tik op Lezen / Schrijven om te wisselen. Log in om je lijst naar Nostr te publiceren.', + noRelays: 'Nog geen relays — voeg er hieronder een toe.', + local: 'Lokaal', + read: 'Lezen', + readHint: 'Haal inhoud van deze relay op', + write: 'Schrijven', + writeHint: 'Publiceer je events naar deze relay', + dmTitle: 'DM-inboxrelays', + dmDesc: 'Waar je NIP-17-directberichten ontvangt (kind 10050). Valt terug op je schrijfrelays als deze leeg is.', + localTitle: 'Lokale relays', + localDesc: 'Alleen in de app (bijv. een LAN-node). Gebruikt voor lezen en schrijven; nooit gepubliceerd.', + blockedTitle: 'Geblokkeerde relays', + blockedDesc: 'Maak hier nooit verbinding mee — uitgesloten van elke lees- en schrijfactie.', + }, + relatr: { + searchingTitle: 'Zoeken naar Relatr-dienst...', + searchingDesc: 'Nostr doorzoeken naar Relatr-profielen', + foundTitle: 'Relatr-dienst gevonden!', + foundDesc: 'Dienst: {{name}}', + unknown: 'Onbekend', + notFoundTitle: 'Geen Relatr-dienst gevonden', + notFoundDesc: 'Probeer de pubkey handmatig in te voeren of check https://www.relatr.xyz/', + searchFailedTitle: 'Zoeken mislukt', + searchFailedDesc: 'Kon Nostr niet doorzoeken naar Relatr-profielen', + invalidPubkeyTitle: 'Ongeldige pubkey', + invalidPubkeyDesc: 'Voer een geldige hex-pubkey van 64 tekens in', + enabledTitle: 'Relatr ingeschakeld!', + enabledDesc: 'Globale vertrouwensscores zijn nu actief.', + disabledTitle: 'Relatr uitgeschakeld', + disabledDesc: 'Vertrouwensscores worden niet meer opgehaald.', + title: 'Relatr-vertrouwensscores', + desc: 'Globale vertrouwensscores helpen betrouwbare gebruikers te herkennen en spam te verminderen', + status: 'Status', + active: 'Actief', + disabled: 'Uitgeschakeld', + activeStrong: 'Relatr is actief.', + activeDesc: 'Vertrouwensscores uit ContextVM\'s globale netwerkanalyse helpen betrouwbare skaters te herkennen en spam te verminderen.', + disabledStrong: 'Relatr is uitgeschakeld.', + disabledHint: 'Schakel het in om vertrouwensscores van het globale Nostr-netwerk te krijgen.', + disable: 'Relatr uitschakelen', + enable: 'Relatr inschakelen', + advancedSettings: 'Geavanceerde instellingen', + servicePubkey: 'Relatr-service-pubkey', + pubkeyPlaceholder: 'Voer een hex-pubkey van 64 tekens in...', + searching: 'Zoeken...', + autoDiscover: 'Automatisch ontdekken', + pubkeyDefault: 'Standaard: ContextVM\'s officiële Relatr-dienst (npub1dvmc...)', + relayLabel: 'Relay (waar Relatr scores publiceert)', + relayDefault: 'Standaard: wss://relay.contextvm.org (ContextVM\'s officiële relay)', + applyChanges: 'Wijzigingen toepassen', + learnMore: 'Meer informatie:', + website: 'Relatr-website', + github: 'Relatr GitHub', + nip85Spec: 'NIP-85-specificatie', + }, + followList: { + unfollow: 'Ontvolgen', + title: 'Je Nostr-netwerk', + desc: 'Beheer wie je volgt. Gebruikers volgen helpt je Web of Trust op te bouwen en bepaalt welke Spots vertrouwensbadges tonen.', + following: 'Volgend ({{count}})', + followers: 'Volgers ({{count}})', + follow: 'Volgen', + followHint: '💡 Plak een Nostr-pubkey (npub1...), NIP-05-adres (gebruiker@domein.com) of hex-pubkey', + notFollowing: 'Je volgt nog niemand', + notFollowingHint: 'Volg skaters om hun Spots met ✅ GEVERIFIEERD-badges te zien', + trustActiveStrong: '✅ Vertrouwensbadges actief:', + trustActive: 'Spots van mensen die je volgt tonen nu GEVERIFIEERD-badges. Spots van hun vrienden tonen VERTROUWD-badges.', + noFollowers: 'Nog geen volgers', + noFollowersHint: 'Deel je Nostr-profiel om volgers te krijgen!', + howTitle: '💡 Hoe volgen vertrouwensbadges beïnvloedt', + verifiedStrong: '✅ GEVERIFIEERD (groen):', + verifiedDesc: 'Spots gemaakt door mensen die je direct volgt', + trustedStrong: '🟡 VERTROUWD (geel):', + trustedDesc: 'Spots gemaakt door mensen die je vrienden volgen (2 stappen)', + unverifiedStrong: '⚪ Niet geverifieerd:', + unverifiedDesc: 'Spots van gebruikers zonder band met jouw netwerk', + tip: '💡 Tip: volg actieve skateboarders om meer geverifieerde Spots te zien en je vertrouwensnetwerk op te bouwen!', + }, + notify: { + enableTitle: 'Meldingen inschakelen', + enableDesc: 'Laat dit apparaat trillen als er iets je nodig heeft.', + checkingPermission: 'Toestemming controleren…', + unsupported: 'Dit apparaat ondersteunt hier geen meldingen. Bouw de Android-app opnieuw om ze op je telefoon in te schakelen.', + denied: 'Meldingen zijn geblokkeerd voor deze site. Sta ze toe in je browser-/OS-instellingen en probeer het opnieuw.', + backgroundTitle: 'Achtergrondmeldingen', + backgroundDesc: 'Ontvang een seintje voor berichten en transacties, zelfs als SkateSpots gesloten is.', + pushUnsupported: 'Deze browser ondersteunt geen achtergrondpush. Voeg SkateSpots op mobiel toe aan je beginscherm.', + pushPrivacy: 'Om je te bereiken terwijl de app gesloten is, krijgt een SkateSpots-meldingsserver een seintje van je relay als er iets voor je sleutel aankomt, en geeft dat door aan de pushdienst van je telefoon. Hij ziet alleen dat je sleutel iets heeft — nooit wie het stuurde of wat er staat, en hij kan je berichten niet ontsleutelen. Schakel per apparaat in.', + bgDeliveryTitle: 'Achtergrondbezorging (Android)', + bgDeliveryDesc: 'Controleer op nieuwe berichten, aanbiedingen en transacties terwijl de app gesloten is — zonder Google-diensten.', + off: 'Uit', + standard: 'Standaard (~15 min)', + fast: 'Snel (~5 min)', + bgDeliveryNote: 'Standaard is best-effort — Android kan het uitstellen onder Doze. Snel toont een blijvende melding en gebruikt meer batterij. Niets wordt ontsleuteld op onze server.', + notifyMeAbout: 'Breng me op de hoogte van', + couldNotEnable: 'Kon niet inschakelen', + sendTest: 'Een testmelding sturen', + testTitle: 'SkateSpots-meldingen staan aan 🛹', + testBody: 'Zo ziet een DM, zap of crew-uitnodiging eruit.', + footerBefore: 'Meldingen worden op je apparaat opgebouwd uit gegevens die de app al heeft, en DM-meldingen ontsleutelen je berichten nooit — dus Amber wordt nooit gevraagd er een te openen. Met', + footerAfter: 'uit kan een volledig gesloten app niet worden bereikt, dus meldingen komen binnen zodra je SkateSpots opent.', + cat_dms_label: 'Directe berichten', + cat_dms_hint: 'Iemand stuurt je een privébericht', + cat_crew_label: 'Crews', + cat_crew_hint: 'Uitnodigingen, deelnameverzoeken en lidmaatschapsbevestigingen', + cat_social_label: 'Zaps, reacties & vermeldingen', + cat_social_hint: 'Reacties, reposts, zaps, antwoorden en eventupdates', + cat_newsletter_label: 'Nieuwsbrief', + cat_newsletter_hint: 'Nieuwe SkateSpots-drops (alleen abonnees)', + cat_trades_label: 'Aanbiedingen & transacties', + cat_trades_hint: 'Aanbiedingen, tegenaanbiedingen en transactiebevestigingen', + cat_reminders_label: 'Eventherinneringen', + cat_reminders_hint: 'Een seintje een uur voor events waar je heen gaat (Android-app)', + }, + regionBackfill: { + taggedTitle: '{{count}} locatie{{s}} getagd', + taggedSkipped: '{{count}} overgeslagen (geen coördinaten of geen geocoder-match).', + taggedOk: 'Regiotags naar de community-relay geschreven.', + nothingTitle: 'Niets om te taggen', + nothingDesc: 'Geen pins konden worden gegeocodeerd. Probeer het later opnieuw.', + failedTitle: 'Backfill mislukt', + title: 'Regiotags backfillen', + admin: 'Beheerder', + descBefore: 'Pins van vóór geocodering hebben coördinaten maar geen stad/land-tag, dus de kaart toont ze terwijl Community Stats alleen “Niet gecategoriseerd” kan zeggen. Dit herleidt de tags uit elke pin en publiceert', + descStrong: 'je eigen', + descAfter: 'ongetagde Spots & Shops opnieuw.', + scanning: 'Je Spots scannen…', + allTagged: 'Elke Spot & Shop die je bezit heeft al een regiotag. 🎉 Eventuele resterende “Niet gecategoriseerd”-pins zijn van andere mappers — alleen hun eigen sleutels kunnen ze taggen.', + countLine: 'Bij {{count}} van je spot{{s}}/Shops ontbreekt een regiotag. Je signer vraagt misschien om elk goed te keuren.', + tagging: 'Taggen {{done}}/{{total}}…', + run: 'Regiotags backfillen', + summary: '{{updated}} bijgewerkt · {{skipped}} overgeslagen · {{failed}} mislukt', + }, + adminReview: { + title: 'Beoordelingswachtrij', + flagged: 'Bij {{count}} Spot{{s}} slaan junk-signalen aan — verberg of wijs af.', + clean: 'Spots die lijken op testvermeldingen of off-topic pins.', + }, + grantPro: { + invalidNpub: 'Voer een geldige npub in (of hex-pubkey)', + invalidDays: 'Dagen moeten een positief getal zijn', + grantedTitle: 'Pro toegekend ⚡', + grantedDesc: '{{npub}} tot {{date}}', + failedTitle: 'Toekennen mislukt', + title: 'Sasquatch Pro toekennen', + owner: 'Eigenaar', + desc: 'Handmatige fallback voor een geverifieerde betaling die het zap-bewijs miste. Publiceert een door de eigenaar ondertekende toekenning; de gebruiker kan die niet vervalsen.', + targetPlaceholder: 'npub1… (of hex)', + grant: 'Toekennen', + }, + myData: { + reactionTitle: '{{emoji}}-reactie', + deleting: 'Verwijderen...', + requestDeletion: 'Verwijdering aanvragen', + selectContentTitle: 'Selecteer inhoud om te verwijderen', + selectContentDesc: 'Selecteer de specifieke items waarvoor je verwijdering wilt aanvragen.', + all: 'Alle', + spots: 'Spots', + events: 'Events', + shops: 'Shops', + listings: 'Advertenties', + collections: 'Collecties', + lab: 'Lab', + posts: 'Berichten', + reactions: 'Reacties', + selectAll: 'Alles selecteren', + selectAllVisible: 'Alle zichtbare selecteren', + selectedCount: '{{count}} geselecteerd', + noItemsCategory: 'Geen items in deze categorie', + decentralizedStrong: 'Belangrijk:', + decentralizedNote: 'Nostr is gedecentraliseerd. Relays horen verwijderingsverzoeken te honoreren, maar sommige doen dat misschien niet. Dit is geen gegarandeerde permanente verwijdering.', + deleteCount: '{{count}} item{{s}} verwijderen', + noDataTitle: 'Geen gegevens om te exporteren', + noDataDesc: 'Je hebt nog geen events gepubliceerd.', + exportedTitle: 'Gegevens geëxporteerd!', + exportedDesc: '{{count}} events gedownload als JSON.', + deletionRequestedTitle: 'Verwijdering aangevraagd', + deletionRequestedDesc: 'Het verwijderingsverzoek is naar relays gepubliceerd.', + deletionRequestedMany: 'Verwijdering van {{count}} items aangevraagd. Let op: sommige relays honoreren dit verzoek misschien niet.', + deletionFailedTitle: 'Verwijderen mislukt', + deletionFailedDesc: 'Kon het verwijderingsverzoek niet publiceren. Probeer het opnieuw.', + loginRequired: 'Inloggen vereist', + loginRequiredDesc: 'Log in om je gegevens te bekijken en beheren.', + title: 'Mijn gegevens', + desc: 'Jouw inhoud op het Nostr-netwerk. Jij bezit deze gegevens - exporteer ze wanneer je wilt of vraag verwijdering aan.', + coachFilmer: 'Coach/Filmer', + zaps: 'Zaps', + received: 'Ontvangen', + exportAll: 'Alle gegevens exporteren', + recentActivity: 'Recente activiteit', + viewAll: 'Alles bekijken ({{count}})', + noDataPublished: 'Nog geen gegevens gepubliceerd', + startBy: 'Begin met', + addingASpot: 'een spot toevoegen', + aboutYourData: 'Over je gegevens', + ownDataStrong: 'Jij bezit je gegevens.', + ownData: 'Alle inhoud is ondertekend met je cryptografische sleutels en opgeslagen op Nostr-relays. Geen enkel bedrijf beheert het.', + exportAnytimeStrong: 'Exporteer wanneer je wilt', + exportAnytime: '- Download al je events als JSON', + portableStrong: 'Draagbaar', + portable: '- Gebruik je sleutels in elke Nostr-app', + selectiveStrong: 'Selectief verwijderen', + selective: '- Kies precies wat je wilt verwijderen', + caveatStrong: 'Gedecentraliseerd voorbehoud', + caveat: '- Sommige relays bewaren gegevens ondanks verwijderingsverzoeken', + }, + settingsPage: { + seoTitle: 'Instellingen - SkateSpots', + seoDescription: 'Beheer je SkateSpots-accountinstellingen.', + heading: 'INSTELLINGEN', + subtitle: 'Account- en appvoorkeuren', + editProfile: 'Profiel bewerken', + profileRefreshed: 'Profiel vernieuwd!', + found: 'Gevonden: {{name}}', + unnamed: 'naamloos', + profileNotFound: 'Profiel niet gevonden', + notFoundOnRelay: 'Niet gevonden op enige relay.', + refreshFailed: 'Vernieuwen mislukt', + refreshFailedDesc: 'Kon geen verbinding maken met relays.', + loginToEdit: 'Log in om je profiel te bewerken', + noProfileRelays: 'We konden geen profiel vinden op de relays. Als je er eerder een hebt ingesteld, probeer te vernieuwen.', + checkDisplayName: 'een weergavenaam', + checkPhoto: 'een profielfoto', + checkBio: 'een korte bio', + checkLightning: 'een Lightning-adres zodat mensen je kunnen zappen', + checkHandle: 'een gratis @skate-spots.org-handle', + finishProfile: 'Maak je profiel af', + addItem: '{{item}} toevoegen', + nip05Title: 'NIP-05-verificatie', + nip05Desc: 'Ontvang een geverifieerd Nostr-adres (zoals naam@domein.com) om vertrouwen op te bouwen. Vereist voor het aanmaken van events, coachprofielen en Shops.', + freeFromSkateSpots: 'Gratis van SkateSpots', + claimHandleBefore: 'Claim een handle zoals', + claimHandleAfter: '— geen registratie, geen kosten, geen domein om te beheren. Claim hem in het tabblad Profiel en sla op.', + claimInProfile: 'Claimen in Profiel', + nip05Footer: 'Nadat je je NIP-05 hebt, voeg je die toe in het veld Profiel en sla je op.', + localRelayOn: 'Lokale relay aan', + localRelayOff: 'Lokale relay uit', + lookingForCitrine: 'Citrine op dit apparaat zoeken…', + noLongerUsing: 'De relay op het apparaat wordt niet meer gebruikt.', + localRelay: 'Lokale relay', + citrineOff: 'Sneller lezen & offline back-up op dit apparaat', + citrineSearching: 'Citrine op dit apparaat zoeken…', + citrineLive: 'Verbonden — lokaal lezen & back-uppen', + citrineWaiting: 'Ingeschakeld — start Citrine om te verbinden', + toggleCitrine: 'Lokale Citrine-relay wisselen', + citrineDetected: 'Citrine-relay gedetecteerd', + citrineLooking: 'Citrine zoeken…', + citrineNotDetected: 'Citrine niet gedetecteerd', + recheckCitrine: 'Opnieuw controleren op de Citrine-relay', + checking: 'Controleren', + recheck: 'Opnieuw controleren', + chipInstantReads: 'Direct lezen', + chipWorksOffline: 'Werkt offline', + chipOnDeviceBackup: 'Back-up op apparaat', + cantReachStrong: 'Kan Citrine niet bereiken.', + cantReachBefore: 'Zorg dat de gratis Citrine-app is geïnstalleerd en dat de relay is', + started: 'gestart', + cantReachAfter: ', tik dan op Opnieuw controleren. Het draait een privé-Nostr-relay op je telefoon voor direct lezen en een offline back-up.', + citrineStep1Before: 'Open Citrine → tik op', + start: 'Starten', + citrineStep2Before: 'Kom hier terug → tik op', + getCitrine: 'Citrine downloaden', + citrinePrivacy: 'Je Stash en berichten blijven hier end-to-end versleuteld, precies zoals overal. De lokale relay maakt dingen alleen sneller en bewaart een kopie op je apparaat — hij vervangt nooit de versleuteling.', + communityRelayDisabled: 'Community-relay uitgeschakeld', + communityRelayEnabled: 'Community-relay ingeschakeld', + usingOnlyPersonal: 'Alleen je geconfigureerde relays gebruiken.', + skateRelayIncluded: 'SkateSpots-relay inbegrepen.', + relays: 'Relays', + relayPrivacyBefore: 'Relays kunnen je', + ipAddress: 'IP-adres', + relayPrivacyAfter: 'zien wanneer je verbinding maakt. Tor verbergt het — en zie een "gratis" VPN als een waarschuwingssignaal; meestal verdienen ze aan je verkeer.', + communityRelay: 'Community-relay', + syncingGlobal: 'Synchroniseren met de wereldwijde skate-community', + usingOnlyPersonalShort: 'Alleen persoonlijke relays gebruiken', + appearance: 'Weergave', + language: 'Taal', + darkModeOnly: 'Alleen donkere modus', + darkModeDesc: 'SkateSpots heeft een donkere neon-uitstraling geïnspireerd op de skatecultuur. Zwarte achtergrond, neonroze, limoen en oranje.', + navigation: 'Navigatie', + sasquatchExpanded: 'De Sasquatch is uitgebreid! 🦧 Ververs de pagina om hem te zien.', + advanced: 'Geavanceerd', + sasquatchGuide: '🦧 Sasquatch-gids', + sasquatchResetDesc: 'De onboarding-gids terugzetten naar uitgebreide weergave', + expandSasquatch: 'De Sasquatch uitbreiden', + wallet: 'Wallet', + loginToWallet: 'Log in om je wallet te beheren', + openWallet: 'Wallet openen', + balanceSendReceive: 'Saldo, verzenden, ontvangen', + connectNwc: 'NWC-wallet verbinden', + account: 'Account', + security: 'Beveiliging', + securitySub: 'Sleutels, ondertekenen, Amber', + nip05Sub: 'Ontvang een geverifieerd Nostr-adres', + app: 'App', + myStash: 'Mijn Stash', + myStashSub: 'Privévoorraad van gear', + relaysSub: 'Nostr-relayverbindingen', + appearanceSub: 'Taal en thema', + assistant: 'Assistent', + showSasquatch: 'Sasquatch-assistent tonen', + showSasquatchDesc: 'Toon de zwevende Sasquatch-knop op de kaart en andere schermen.', + showMapFooter: 'Kaartlinksbalk tonen', + showMapFooterDesc: 'Toon de dunne linksstrook onderaan de kaart.', + notifications: 'Meldingen', + notificationsSub: 'Meldingen voor DM\'s, crews en zaps', + coordinator: 'Coördinator', + coordinatorSub: 'Je Cordn-groepsserver', + data: 'Gegevens', + myData: 'Mijn gegevens', + myDataSub: 'Exporteren, importeren, beheren', + advancedSub: 'Relatr, Sasquatch, hulpmiddelen', + notLoaded: 'Niet geladen', + notLoggedIn: 'Niet ingelogd', + }, + onboarding: { + seoTitle: 'Aan de slag — SkateSpots', + seoDescription: 'Word lid van de gedecentraliseerde skateboardcommunity. Vind Spots, kom in contact met coaches, stuur zaps. Voor altijd gratis.', + homeSetTitle: 'Thuisbasis ingesteld 🛹', + homeSetDesc: 'De kaart opent nu op jouw gebied.', + locationFailedTitle: 'Kon je locatie niet ophalen', + locationFailedDesc: 'Controleer locatietoestemmingen, of kies je gebied op de kaart.', + niceTitle: '🎉 Mooi!', + niceDesc: 'Je begrijpt nu hoe Nostr werkt. Laten we gaan skaten!', + npubCopied: 'npub naar klembord gekopieerd.', + saveLoginNow: 'Bewaar je login — doe dit nu', + saveLoginNowDesc: 'Je herstelcode is de enige weg terug naar je account. Geen e-mail, geen wachtwoordherstel.', + betaBadge: 'Beta — Open voor skaters wereldwijd', + headline1: 'SKAAT', + headline2: 'JOUW WERELD', + heroBefore: 'Een', + decentralized: 'gedecentraliseerde', + heroAfter: 'skatecommunity. Geen bedrijf bezit hem. Geen algoritme begraaft je Spots. Geen banhamer. Gewoon skaters.', + pillMap: 'Spotkaart', + pillCoaches: 'Coaches & filmers', + pillEvents: 'Events', + pillGear: 'Gear kopen/verkopen', + pillZaps: 'Bitcoin-zaps', + pillStash: 'Gear-stash', + pillCrews: 'Crews', + createFreeAccount: 'Maak je gratis account', + noEmailNoPassword: 'Geen e-mail. Geen wachtwoord. Bezit je identiteit voor altijd.', + findSpots: 'Vind Spots bij jou in de buurt', + addFirstSpot: 'Voeg je eerste Spot toe', + accountCreated: 'Je bent er! Account aangemaakt ✓', + identityYours: 'Je identiteit is van jou — opgeslagen in je sleutel, niet op onze servers.', + whereSkate: 'Waar skate je?', + whereSkateDesc: 'Stel je thuisgebied één keer in en de kaart opent elke keer op jouw Spots. Je GPS verlaat je apparaat nooit.', + useMyLocation: 'Mijn locatie gebruiken', + pickOnMap: 'Kies op de kaart', + loginSaved: 'Login opgeslagen — je account is veilig te herstellen.', + whyBother: 'Waarom moeite doen?', + why1Title: 'Elke Spot, één kaart', + why1Body: 'Ledges, rails, DIY, parken — in kaart gebracht door skaters die ze echt rijden. Controleer de status voordat je gaat, zodat je geen sessie verspilt aan een bust.', + why2Title: 'Gebouwd door skaters, niet door pakken', + why2Body: 'Geen advertenties, geen algoritme dat troep in je gezicht duwt, geen data-oogst. Open source. De kaart is van de community — inclusief jou.', + why3Title: 'Krijg betaald om te shinen', + why3Body: 'Breng een parel in kaart, film een banger, run een sessie — en ontvang echte Bitcoin-zaps rechtstreeks naar je wallet. Geen platformkosten, geen tussenpersoon.', + why4Title: 'Je account is echt van jou', + why4Body: 'Eén sleutel logt je in bij elke Nostr-app. Geen enkel bedrijf kan je buitensluiten of je account zomaar verwijderen. Neem je identiteit overal mee naartoe.', + everythingFree: 'Alles wat je kunt doen — gratis', + featSpots: 'Ontdek Spots', + featSpotsDesc: 'Interactieve kaart met duizenden Spots wereldwijd', + featLab: 'The Lab', + featLabDesc: 'Vind coaches, filmers & videobewerkers bij jou in de buurt', + featEvents: 'Events', + featEventsDesc: 'Wedstrijden, sessies, meetups', + featGear: 'Gear kopen / verkopen', + featGearDesc: 'Peer-to-peer marktplaats voor gebruikte skategear', + featStash: 'Mijn Stash', + featStashDesc: 'Privé versleutelde voorraad van alles wat je bezit', + featCrews: 'Crews', + featCrewsDesc: 'Rij met je crew — gedeelde Spots, chat & sessies', + whatIsNostr: 'Wat is Nostr?', + whatIsNostrSub: 'Het protocol achter SkateSpots', + nostrBefore: 'Nostr is een open protocol — zoals e-mail, maar voor sociale apps. Je account is een', + cryptoKeyPair: 'cryptografisch sleutelpaar', + nostrAfter: 'dat jij bezit. Geen enkel bedrijf beheert je account of gegevens — jij kiest welke relays ze opslaan, en je kunt zelfs je eigen relay runnen. Je identiteit werkt in elke Nostr-app.', + nostrPoint1: 'Jij bezit je gegevens & sleutels', + nostrPoint2: 'Geen enkel bedrijf kan je bannen', + nostrPoint3: 'Identiteit werkt overal', + nostrPoint4: 'Directe Bitcoin-tips', + deepDive: 'Diepgaand: hoe Nostr werkt', + privacyTip: 'Privacy-tip: je GPS verlaat je apparaat nooit. Servers waarmee je verbinding maakt (zoals kaarttegels) kunnen nog steeds je IP zien — wil je dat ook verbergen, dan werken een VPN of Tor. Volledig optioneel.', + readPrivacy: 'Lees onze privacypagina', + zapsWallet: '⚡ Zaps & wallet', + optional: 'Optioneel', + walletDesc: 'Zaps zijn Bitcoin-tips die je direct stuurt naar een skater die een vette Spot deelde, een banger filmde of een geweldige sessie leidde. Geen platformkosten. Geen tussenpersoon. 100% gaat naar hen.', + builtInWallet: 'Ingebouwde Cashu-wallet', + builtInWalletDesc: 'Ontvang Lightning-betalingen direct in de app. Geen installatie.', + balance: 'Saldo', + connectExternal: 'Externe wallet verbinden', + connectExternalDesc: 'Heb je Alby, Mutiny of een andere wallet? Verbind hem via NWC.', + connectViaNwc: 'Verbinden via NWC', + loginToConnect: 'Log in om je eigen wallet te verbinden.', + fiveDollars: '💡 $5 aan Bitcoin = honderden zaps om over de community te verspreiden', + commonQuestions: 'Veelgestelde vragen', + faq1Q: 'Is SkateSpots gratis?', + faq1A: '100% gratis. Spots bekijken, locaties toevoegen, coaches vinden, events aanmaken, meedoen aan sessies — allemaal gratis, voor altijd. Bitcoin (zaps) is optioneel als je makers wilt tippen.', + faq2Q: 'Wat is Nostr en waarom gebruikt SkateSpots het?', + faq2Before: 'Nostr is een open protocol voor gedecentraliseerde apps — zie het als het internet zelf, niet eigendom van een bedrijf. Je SkateSpots-account is een cryptografisch sleutelpaar dat', + faq2Strong: 'jij bezit', + faq2After: '. Geen enkel bedrijf kan je account bannen of je gegevens gijzelen — jij kiest welke relays je gegevens opslaan, en je kunt zelfs je eigen relay runnen. Je identiteit werkt ook op andere Nostr-apps zoals Primal, Damus of Amethyst.', + faq3Q: 'Wat is een nsec en waarom is het belangrijk?', + faq3Before: 'Je', + faq3Mid: 'is je privésleutel — het enige bewijs dat jij je account bezit. Anders dan bij wachtwoorden is er', + faq3Strong: 'geen "wachtwoord vergeten"', + faq3After: '. Als je je nsec verliest, is je account voor altijd weg. Wanneer je een account aanmaakt, download je back-up meteen en bewaar je hem veilig (wachtwoordmanager, offline opgeschreven).', + faq4Q: 'Welke signers / apps werken met SkateSpots?', + faq4Desktop: 'Op desktop:', + faq4Extensions: 'browserextensies.', + faq4Android: 'Op Android:', + faq4AndroidAfter: '(beste ervaring met de native app).', + faq4Ios: 'Op iOS:', + faq4IosAfter: 'of plak je nsec direct (minder veilig).', + faq4Note: 'Je kunt ook inloggen door je nsec direct te plakken — maar een signer-extensie gebruiken is veiliger.', + faq5Q: 'Kan ik SkateSpots op mijn telefoon gebruiken?', + faq5Before: 'Ja! SkateSpots is een PWA (Progressive Web App). Bezoek', + faq5Mid: 'in de browser van je telefoon en tik op', + faq5Em: '"Toevoegen aan beginscherm"', + faq5After: 'voor een volledige app-ervaring. Of download het uit', + faq5End: '— een gedecentraliseerde appstore.', + faq6Q: 'Wat is een zap?', + faq6A: 'Een zap is een directe Bitcoin-tip die via het Lightning Network wordt verstuurd. Wanneer je een skater zapt, landen de sats binnen enkele seconden in hun wallet — geen PayPal, geen Venmo, geen afdracht. Degene die die 4-stair filmde, wordt direct door fans betaald.', + faq7Q: 'Worden mijn Spots verwijderd als SkateSpots stopt?', + faq7A: 'Nee. Je Spots worden gepubliceerd naar Nostr-relays — gedistribueerde servers die iedereen kan runnen. Zelfs als SkateSpots als product morgen verdwijnt, bestaan je gegevens nog op relays en kan elke Nostr-client ze tonen.', + faq8Q: 'Kan ik een Spot toevoegen die op privéterrein ligt?', + faq8A: 'Dat kan, maar gebruik je gezond verstand. Spots op privéterrein moeten als zodanig worden gemarkeerd zodat skaters weten waar ze aan toe zijn. SkateSpots is niet verantwoordelijk voor betreding — wees altijd respectvol naar eigenaren en locals.', + faq9Q: 'Hoe meld ik een bug of geef ik feedback?', + faq9Before: 'DM het SkateSpots-team direct op Nostr, of neem contact op met onze bètacoördinator:', + faq9Link: 'Bèta-feedback → cordn.net', + readyToShred: 'KLAAR OM TE SHREDDEN?', + stopScrolling: 'Stop met scrollen. Pak de app. Vind een Spot. Skate hem.', + exploreSpots: 'Spots verkennen', + betaFeedbackTitle: 'Bèta — We willen je feedback', + betaFeedbackDesc: 'SkateSpots is volop in ontwikkeling. Je kunt ruwe randjes tegenkomen — dat is onze schuld, niet de jouwe. Meld bugs, stel functies voor, zeg ons wat er niet deugt.', + betaCoordinator: 'Bètacoördinator', + betaCoordinatorDesc: 'cordn.net → stuur ons een bericht', + dmOnNostr: 'DM op Nostr', + fixSameDay: 'Een bug gevonden? We lossen het dezelfde dag op. Jouw meldingen maken de app beter voor elke skater.', + relaySetup: 'Relay-installatie', + }, + relayEdu: { + understandingNostr: 'Nostr begrijpen', + stepOf: 'Stap {{current}} van {{total}}', + step1Title: 'Relays begrijpen', + step1Desc: 'Zie relays als skateshops die nieuws over Spots delen', + you: 'Jij', + relays: 'Relays', + skaters: 'Skaters', + s1Good1: 'Geen enkel bedrijf bezit je account', + s1Good1Desc: 'Je identiteit leeft op meerdere relayservers', + s1Good2: 'Jij bepaalt waar je gegevens leven', + s1Good2Desc: 'Je berichten synchroniseren over relays die jij kiest — kies je eigen, of run er zelf een', + s1Warn: 'Relayexploitanten kunnen openbare berichten zien', + s1WarnDesc: 'Zie het als posten op een prikbord', + step2Title: 'Openbaar vs. privé', + step2Desc: 'Weet wat zichtbaar is en wat versleuteld is', + publicTitle: 'Openbaar (iedereen kan het zien)', + pub1: 'Spots die je aan de kaart toevoegt', + pub2: 'Beoordelingen en reacties', + pub3: 'Je profielinformatie (naam, foto)', + pub4: 'Wie je volgt', + privateTitle: 'Privé (versleuteld)', + priv1: 'Directe berichten', + priv2: 'Walletcommunicatie', + noteStrong: 'Let op:', + note: 'Berichten kunnen permanent op relays worden opgeslagen. Denk na voordat je post - net als in het echte leven!', + step3Title: 'Jouw sleutels = jouw account', + step3Desc: 'Dit is het belangrijkste om te begrijpen', + secretKeyTitle: 'Je geheime sleutel (nsec)', + secretKeyDesc: 'Zie het als je skateboard - leen het nooit aan iemand uit. Het bewijst dat jij je account bezit.', + s3Bad1: 'Bij verlies kan je account niet worden hersteld', + s3Bad2: 'Geen "wachtwoord vergeten" - niemand kan het opnieuw instellen', + s3Good: 'Maak een back-up en bewaar hem veilig', + publicKeyTitle: 'Je publieke sleutel (npub)', + publicKeyDesc: 'Dit is als je gebruikersnaam - deel hem vrijelijk zodat anderen je kunnen vinden!', + inControl: '🔐 Jij hebt de controle - geen enkel bedrijf kan je buitensluiten!', + skip: 'Overslaan', + gotIt: 'Begrepen!', + }, + about: { + seoTitle: 'Over - SkateSpots', + seoDescription: 'Leer over SkateSpots en onze missie om een gedecentraliseerde skateboardcommunity op te bouwen.', + npubCopied: 'npub naar klembord gekopieerd. Plak het in je favoriete Nostr-client om een DM te sturen.', + bugReport: '🐛 Bugmelding', + bugWhatHappened: 'Wat er gebeurde:', + bugExpected: 'Wat ik verwachtte:', + bugSteps: 'Stappen om te reproduceren:', + aboutWord: 'OVER', + heroBefore: 'Kom in contact met lokale skatescenes wereldwijd.', + skaterOwned: 'Gegevens in eigendom van skaters', + heroAfter: ', door de community gerunde relays.', + viewStats: 'Community-stats bekijken', + missionTitle: 'Onze missie', + mission1: 'SkateSpots helpt skateboarders Spots te ontdekken, in contact te komen met pro\'s bij The Lab, en sessies te organiseren - allemaal zonder bedrijfscontrole. Het echte skaten gebeurt offline, deze tool verbindt je er alleen mee.', + mission2: 'Skateboardkennis hoort bij de community te leven, niet opgesloten in bedrijfsapps. Daarom draait SkateSpots op Nostr - een op relays gebaseerd systeem waarbij skaters hun eigen gegevens beheren, kiezen welke relays ze opslaan, en zelfs hun eigen relay kunnen runnen. Geen enkel bedrijf bezit de kaart.', + whyNostr: 'Waarom Nostr?', + why1Title: 'Door de community beheerd', + why1Desc: 'Je Spots leven op community-relays. Skaters runnen de servers, geen bedrijven.', + why2Title: 'Jij bezit je gegevens', + why2Desc: 'Je Nostr-identiteit is van jou. Neem hem mee naar elke Nostr-app - geen lock-in.', + why3Title: 'Bitcoin-integratie', + why3Desc: 'Zap makers direct met Bitcoin. Geen platform dat 30% pakt.', + why4Title: 'Open source', + why4Desc: 'In de openbaarheid gebouwd. Iedereen kan bijdragen of de code forken.', + getInvolved: 'Doe mee', + getInvolvedDesc: 'SkateSpots is open source en door de community gedreven. Draag code bij, deel Spots of help anderen op weg.', + betaTitle: 'Bètatesten', + betaDesc: 'Beste gebruiker! Bedankt dat je SkateSpots bètat. Let op: de app is nog in bèta en er kunnen bugs of beveiligingsproblemen zijn. Kom je problemen tegen of wil je een bug/probleem melden, laat het ons weten!', + giveFeedback: 'Geef ons feedback:', + copyNpub: 'npub kopiëren', + reportBug: 'Bug melden', + viewProfile: 'Profiel bekijken', + downloadApp: 'Download de app', + downloadAppDesc: 'Installeer SkateSpots op Android via Zapstore — de open-source, Bitcoin-native appstore.', + getOnZapstore: 'Haal het op Zapstore', + credits: 'Credits', + creditPoweredBy: 'Mogelijk gemaakt door', + creditNostr: 'Gedecentraliseerd protocol', + creditCrewChat: 'Crew-chat via', + creditCordn: 'End-to-end versleutelde groepschat', + creditEcash: 'Ecash via', + creditCashu: 'Chaumiaans ecash voor Lightning', + creditWalletConnect: 'Wallet-verbinding via', + creditNwc: 'Nostr Wallet Connect (NIP-47)', + creditSigning: 'Ondertekenen op Android met', + creditAmber: 'Nostr-signer voor Android', + creditMapData: 'Bitcoin-kaartgegevens van', + creditBtcmap: 'Plekken die Bitcoin accepteren', + creditCrowdfunding: 'Crowdfunding', + creditAngor: 'Gedecentraliseerde Bitcoin-crowdfunding', + creditDistributed: 'Verspreid via', + creditZapstore: 'Open-source appstore', + creditTrust: 'Vertrouwen & crew-chat via', + creditContextvm: 'Relatr-vertrouwensscores & gecoördineerde versleutelde crew-chat', + stillQuestions: 'Nog vragen?', + stillQuestionsDesc: 'De Sasquatch is onze AI-gids — gevoed met live SkateSpots-gegevens. Vraag hem over Spots, events, coaches, gear of hoe iets werkt.', + askSasquatch: 'Vraag The Sasquatch', + poweredBy: 'Mogelijk gemaakt door', + decentralized: 'Gedecentraliseerd', + communityOwned: 'Eigendom van de community', + }, + faq: { + seoTitle: 'FAQ - SkateSpots', + seoDescription: 'Vraag The Sasquatch alles over SkateSpots.', + greeting: 'Hé! Ik ben The Sasquatch 🦧 — vraag me alles over SkateSpots. Spots, events, gear, wallets, privacy, Nostr — ik sta voor je klaar. Wat wil je weten?', + gotQuestions: 'Vragen?', + heroDesc: 'Vraag The Sasquatch — hij weet alles over SkateSpots, Nostr, Bitcoin en skateboarden.', + askTitle: 'Vraag The Sasquatch', + askDesc: 'The Sasquatch staat open in de linkerbenedenhoek van je scherm — klik erop en typ je vraag. Hij heeft live toegang tot Spots, events, coaches en weer.', + askQuestion: 'Waarmee kan ik je helpen op SkateSpots?', + openSasquatch: 'The Sasquatch openen', + commonQuestions: 'Veelgestelde vragen — tik om te vragen', + quickAnswers: 'Snelle antwoorden', + footerHint: 'The Sasquatch gebruikt live Nostr-gegevens van de SkateSpots-relay + AI om je vragen te beantwoorden. 🛹', + chip1Label: 'Wat is SkateSpots?', + chip1Q: 'Wat is SkateSpots en hoe werkt het?', + chip2Label: 'Hoe voeg ik een Spot toe?', + chip2Q: 'Hoe voeg ik een skatespot toe aan de kaart?', + chip3Label: 'Wat zijn zaps?', + chip3Q: 'Wat zijn zaps?', + chip4Label: 'Is het gratis?', + chip4Q: 'Is SkateSpots gratis te gebruiken?', + chip5Label: 'Wat is Mijn Stash?', + chip5Q: 'Wat is Mijn Stash?', + chip6Label: 'Hoe log ik in?', + chip6Q: 'Hoe log ik in of maak ik een account aan?', + chip7Label: 'Wat is Nostr?', + chip7Q: 'Wat is Nostr?', + chip8Label: 'Privacy & gegevens', + chip8Q: 'Welke gegevens zijn openbaar en welke privé op SkateSpots?', + chip9Label: 'Hoe verkoop ik gear?', + chip9Q: 'Hoe verkoop ik gear op SkateSpots?', + chip10Label: 'Wat is The Lab?', + chip10Q: 'Wat is The Lab?', + fact1Label: 'Skatespots wereldwijd', + fact1Value: 'Ontdek & voeg toe', + fact2Label: 'Bitcoin Lightning-zaps', + fact2Value: '100% gratis', + fact3Label: 'Gedecentraliseerd op Nostr', + fact3Value: 'Jij bezit je gegevens', + fact4Label: 'Privévoorraad van gear', + fact4Value: 'Versleutelde Stash', + s1Q: 'Wat is SkateSpots?', + s1A: 'Een gedecentraliseerde kaart en community voor skateboarden, gebouwd op Nostr. Ontdek Spots, vind coaches en filmers, sluit je aan bij crews, plaats events en koop/verkoop gear — zonder bedrijf ertussen.', + s2Q: 'Hoe voeg ik een Spot toe?', + s2A: 'Tik op de kaart, of gebruik de + / "Spot toevoegen"-knop, zet dan een pin neer en vul de details in. Je hebt een gratis Nostr-account nodig (tik op Inloggen → Account aanmaken — geen e-mail nodig).', + s3Q: 'Wat zijn zaps?', + s3A: 'Zaps zijn Bitcoin Lightning-tips. Je kunt Spots, events, crews en mensen die je waardeert zappen. Ze gaan direct naar de ontvanger via Lightning — SkateSpots houdt je geld nooit vast.', + s4Q: 'Is het gratis?', + s4A: 'Ja. Een account aanmaken, Spots toevoegen en browsen zijn gratis. Optionele betaalde extra\'s (zoals uitgelichte advertenties) en tips (zaps) worden direct tussen mensen betaald.', + s5Q: 'Welke gegevens zijn openbaar?', + s5A: 'Alles wat je publiceert — Spots, events, je profiel — is openbaar op Nostr-relays. Je privéberichten en je Stash zijn end-to-end versleuteld. Zie de privacypagina voor details.', + s6Q: 'Wat is The Lab?', + s6A: 'The Lab is waar je mensen vindt om in te huren of van te leren: coaches, trainers, filmers, videobewerkers, fotografen, bouwers, artiesten en meer.', + }, + privacy: { + seoTitle: 'Privacy — SkateSpots', + seoDescription: 'Hoe SkateSpots met je gegevens omgaat: je GPS blijft op je apparaat, Spots die je publiceert zijn openbaar, en hoe je je IP verbergt met een VPN of Tor als je dat wilt.', + heroBefore: 'Jouw', + heroHighlight: 'Privacy', + heroDesc: 'Geen tracking, geen advertenties, geen verkoop van gegevens. Hier staat precies wat op je apparaat blijft, wat openbaar is, en hoe je dingen verder kunt afschermen als je dat wilt.', + locationTitle: 'Je locatie blijft op je apparaat', + locationBefore: 'Wanneer je op', + nearMe: '"Bij mij in de buurt,"', + locationAfter: 'tikt, wordt je GPS-locatie op je apparaat gelezen en alleen gebruikt om de kaart te centreren en Spots in de buurt te sorteren.', + locationGood1: 'Hij wordt nooit naar Nostr gepubliceerd.', + locationGood2: 'Hij wordt nooit naar SkateSpots gestuurd — er is geen SkateSpots-server die hem verzamelt.', + locationGood3: 'Hij wordt nooit met een derde partij gedeeld.', + locationGood4: 'In de native app gebruiken we direct het locatiesysteem van je telefoon en slaan we Google Play Services over — dus het werkt op de-Googled telefoons (GrapheneOS, /e/OS) en Google ziet het nooit.', + weatherBefore: 'Weer staat standaard uit. Wanneer je het inschakelt, worden de omstandigheden opgezocht voor de', + weatherEm: 'openbare locatie van de Spot', + weatherAfter: '— niet de jouwe.', + publicTitle: 'Wat bewust openbaar is', + publicDesc: 'SkateSpots is een gedeelde kaart, dus sommige dingen zijn bedoeld om door iedereen te worden gezien. Wanneer je ervoor kiest ze te publiceren, zijn deze openbaar op het Nostr-netwerk:', + public1Strong: 'Spots die je toevoegt', + public1: '— inclusief hun coördinaten. Als je een Spot op je exacte locatie toevoegt, wordt die locatie openbaar. Denk na voordat je een pin op je eigen oprit zet.', + public2Strong: 'Beoordelingen, reacties en je openbare profiel', + public2: '(naam, foto).', + public3: 'Wie je volgt, en openbare reacties.', + public4Strong: 'Zaps', + public4: 'zijn standaard openbaar: een zap koppelt je account — vaak je Lightning-adres — aan het bericht dat je betaalde en aan de tip zelf. Je wallet kan hem anoniem versturen als je dat liever hebt.', + publicNoteBefore: 'Een VPN of Tor verbergt', + notWord: 'niet', + publicNoteAfter: 'de inhoud van wat je publiceert — de coördinaten van een Spot zijn hoe dan ook openbaar. Privacytools verbergen je netwerkidentiteit (je IP), niet de dingen die je ervoor kiest te posten.', + encryptedTitle: 'Wat privé & versleuteld is', + enc1Strong: 'Directe berichten', + enc1Mid: 'en', + enc1Strong2: 'crew-chats', + enc1: 'zijn end-to-end versleuteld (NIP-17). Alleen de deelnemers kunnen ze lezen.', + enc2Strong: 'Mijn Stash', + enc2: '— je privévoorraad van gear — is versleuteld naar je eigen sleutel.', + enc3Strong: 'Alleen crewleden', + enc3: 'kunnen ervoor kiezen alleen zichtbaar te zijn voor hun crewgenoten.', + ipTitle: 'Wat je apparaat verlaat: je IP', + ipBefore: 'Zoals bij elke website kunnen de servers waarmee SkateSpots praat je', + ipAddress: 'IP-adres', + ipAfter: 'zien (een ruwe indicatie van je regio). Dit is normaal voor elke web- of kaartapp en is niet uniek voor ons. Die servers zijn:', + ipTileStrong: 'Kaarttegels', + ipTile: '(OpenStreetMap) — zien je IP en welk deel van de kaart je bekijkt.', + ipGeoStrong: 'Geocodering van Spots/Shops', + ipGeo: '— wanneer je een Spot of Shop aanmaakt of bewerkt, gaan de coördinaten naar OpenStreetMap Nominatim om de stad/land-tag in te vullen. Wanneer je Community Stats opent, gaan de coördinaten van pins zonder locatietag naar BigDataCloud zodat ze per regio kunnen worden gegroepeerd (op je apparaat gecached — maximaal één keer per pin). Beide zien je IP. Dit zijn de pin die je plaatste / openbare pincoördinaten, nooit de live GPS van je apparaat.', + ipPushStrong: 'Achtergrondmeldingen', + ipPush: '(opt-in) — als je ze inschakelt, ziet een SkateSpots-pushserver dat je sleutel iets ontving en wanneer (nooit wie het stuurde of wat er staat — berichten blijven versleuteld), en je OS-pushdienst (Google/Mozilla/Apple) bezorgt de melding.', + ipBtcStrong: 'Bitcoin-plekken', + ipBtc: '(BTCMap, wanneer je die laag inschakelt) — zien je IP en het gebied dat je bekijkt.', + ipRelayStrong: 'Nostr-relays', + ipRelay: '— zien je IP wanneer de app leest of publiceert.', + ipMintStrong: 'Cashu-mints', + ipMint: '— zien je IP wanneer je wallet verzendt, ontvangt of melt.', + ipRouteStrong: 'Routebeschrijving', + ipRoute: '(OSRM, en Transitous voor openbaar vervoer) — ontvangen het begin en einde van elke route die je opvraagt, niet alleen je IP. Routing blijft in de app: je start en bestemming worden nooit aan Google of Apple Maps gegeven.', + ipWeatherStrong: 'Weer', + ipWeatherMid: '(Open-Meteo, opt-in) en', + ipUploadStrong: 'afbeeldingsuploads', + ipWeather: '(Blossom), wanneer je ze gebruikt.', + ipAiStrong: 'Sasquatch AI', + ipAi: '— je bericht gaat naar onze eigen server en dan naar de modelprovider.', + ipLink1: 'Omdat je je publieke sleutel (npub) op dezelfde verbinding verstuurt, kan een relay je IP aan jou koppelen — niet alleen "iemand is verbonden", maar "deze persoon, vanaf dit adres".', + ipShieldBefore: 'Eén ding schermen we af: de', + ipMintsStrong: 'mints-directory', + ipShieldAfter: 'wordt via onze server opgehaald, zodat MintRadar je IP nooit ziet.', + vpnTitle: 'Meer privacy? VPN of Tor (optioneel)', + vpnDesc: 'Voor de meeste skaters is dit niet nodig — maar als je je IP en ruwe locatie voor de bovenstaande servers wilt verbergen, heb je twee gratis opties:', + vpnReputable: '🛡️ Een gerenommeerde VPN', + vpnReputableDesc: 'Verbergt je IP achter de servers van de VPN. Makkelijk en snel. Gebruik er een die je betaalt en vertrouwt; gratis VPN\'s verdienen meestal aan je verkeer, dus zie "gratis" als een waarschuwingssignaal.', + torBrowser: '🧅 Tor Browser', + torDesc: 'Gratis, maximale IP-privacy, routeert via meerdere relays. Langzamer — kaarten en sommige Nostr-relays kunnen haperen of Tor-exitnodes blokkeren. Geweldig voor de extra voorzichtigen.', + readThis: 'Lees dit zodat je niet wordt misleid', + caveat1Before: 'Een VPN/Tor verbergt je', + ipWord: 'IP', + caveat1: '— niet de Spots die je publiceert. Een pin bij je huis is openbaar, of je nu een VPN gebruikt of niet.', + caveat2Before: 'Schakel', + nearMeGps: '"Bij mij in de buurt" / browser-GPS', + caveat2: 'niet in als je doel anoniem blijven is — precieze GPS overschrijft elke IP-verberging.', + caveat3: 'Geen enkel hulpmiddel maakt je volledig "anoniem". Deze verminderen wat servers over je netwerklocatie kunnen afleiden — meer niet.', + keysTitle: 'Jouw sleutels, jouw account', + keysBefore: 'Je account is een cryptografisch sleutelpaar dat jij bezit. De veiligste manier om in te loggen is een', + signer: 'signer', + keysAfter: '(Alby, nos2x of Amber op Android), zodat je geheime sleutel nooit in de app wordt geplakt.', + keysCaveatBefore: 'Als je je', + keysCaveatAfter: 'direct plakt, wordt die in je browser opgeslagen. Gebruik waar mogelijk liever een signer-extensie en bewaar je nsec-back-up veilig offline.', + footerBefore: 'Vragen? Vraag het', + sasquatchName: 'The Sasquatch', + footerMid: 'in de app, of lees de', + gettingStarted: 'gids om te beginnen', + about: 'Over', + }, + license: { + seoTitle: 'Licentie - SkateSpots', + seoDescription: 'SkateSpots-licentie. Je bent vrij om te skateboarden.', + tagline: 'Skate, verdien, heb plezier en geef Sats uit waar je ook bent.', + copyright: 'SkateSpots-bijdragers & de community', + licenseLabel: 'Licentie', + freeLine1: 'JE BENT VRIJ', + freeLine2: 'OM TE SKATEBOARDEN', + body: 'Dit project is open. Deel het, fork het, bouw erop voort, skate het. De straten zijn van iedereen. Deze code ook. Blijf skaten, heb plezier, leer tricks, steun de bouwers en blijf skaten.', + builtBefore: 'Gebouwd met ❤️ op', + builtMid: '· Mogelijk gemaakt door', + lightning: 'Bitcoin Lightning ⚡', + viewSource: 'Bekijk de broncode', + aboutSkateSpots: 'Over SkateSpots', + supporters: 'Supporters', + }, + glossary: { + seoTitle: 'Trick-glossarium · SkateSpots', + seoDescription: 'Het complete skateboardglossarium — {{count}} items over flips, grinds, slides, grabs, airs, lip tricks, handplants, freestyle, transitiontermen, stance & hardware, met alternatieve namen.', + heading: 'TRICK-GLOSSARIUM', + subheading: '{{count}} items · tricks, transition, freestyle, stance & hardware', + searchPlaceholder: 'Zoek tricks of bijnamen — tre flip, crooks, method…', + clearSearch: 'Zoekopdracht wissen', + all: 'Alle', + results: '{{count}} treffer{{s}} voor', + noMatch: 'Geen tricks komen daarmee overeen. Probeer een bijnaam zoals “tre flip”, “crooks” of “melon”.', + tricksCount: '{{count}} tricks', + footerBefore: 'Ken je een trick of bijnaam die we misten? Tricks krijgen in elke scene andere namen — tik', + sasquatch: 'The Sasquatch 🦧', + footerAfter: 'aan en laat het ons weten.', + }, + signers: { + seoTitle: 'Signer-apps - Beveilig je Nostr-sleutels | SkateSpots', + seoDescription: 'Leer over signer-apps die je Nostr-sleutels veilig houden. Vind de beste optie voor Android, iOS of desktopbrowsers.', + securityGuide: 'Beveiligingsgids', + protect: 'Bescherm je', + nostrKeys: 'Nostr-sleutels', + heroDesc: 'Signer-apps houden je privésleutels veilig door events te ondertekenen zonder ze bloot te stellen. In plaats van je sleutel in elke app te plakken, laat je een signer het veilig afhandelen.', + whySignerStrong: 'Waarom een signer gebruiken?', + whySigner: 'Je Nostr-privésleutel is als een wachtwoord dat nooit kan worden gewijzigd. Een signer-app houdt hem veilig terwijl je elke Nostr-app kunt gebruiken.', + androidTitle: 'Android-signers', + androidDesc: 'Native signer-apps voor Android-apparaten, waaronder GrapheneOS.', + iosTitle: 'iOS-signers', + iosDesc: 'Signer-opties voor iPhone- en iPad-gebruikers.', + browserTitle: 'Browserextensies', + browserDesc: 'Desktopbrowserextensies voor het ondertekenen op webapps.', + recommended: 'Aanbevolen', + yourPlatform: 'Jouw platform', + get: '{{name}} downloaden', + protocolsTitle: 'Protocollen begrijpen', + nip07Desc: 'Standaard voor browserextensies. De extensie injecteert ondertekeningsmogelijkheden in webapps. Gebruikt door Alby, nos2x, Flamingo en vergelijkbare extensies.', + nip46Desc: 'Protocol voor extern ondertekenen ("bunker"). Je signer-app keurt verzoeken van andere apps goed zonder je sleutels te delen. Gebruikt door Nsec.app, Nostria en Nowser.', + nip55Desc: 'Android-specifiek signer-protocol. Native apps kunnen Amber om handtekeningen vragen zonder sleutels bloot te stellen. De meest naadloze Android-ervaring.', + whichChoose: 'Welke kiezen?', + chooseAndroid: 'Android:', + chooseAndroidDesc: 'Amber (NIP-55) voor native apps', + chooseIos: 'iOS:', + chooseIosDesc: 'Nsec.app (NIP-46) voor de beste compatibiliteit', + chooseDesktop: 'Desktop:', + chooseDesktopDesc: 'Alby, nos2x of Flamingo (NIP-07)', + amberDesc: 'Native Android-signer gericht op veiligheid en gebruiksgemak. De beste keuze voor Android-gebruikers.', + nsecAppDesc: 'Platformonafhankelijke externe signer die als veilige kluis voor je sleutels fungeert.', + nostriaDesc: 'Externe signer-app met sleutels in beveiligde apparaatopslag.', + nowserDesc: 'Multi-auth-signer die zowel browserextensie- als externe ondertekeningsprotocollen ondersteunt.', + nsecAppIosDesc: 'De beste optie voor iOS. Gebruik het als externe signer met elke Nostr-client.', + nowserTfDesc: 'iOS-signer beschikbaar via TestFlight met ondertekeningsmogelijkheden vergelijkbaar met Android.', + nostriaIosDesc: 'Externe signer met beveiligde sleutelopslag op je apparaat.', + nos2xDesc: 'Eenvoudige en betrouwbare browserextensie voor het ondertekenen van Nostr-events.', + albyDesc: 'Bitcoin Lightning-wallet met ingebouwd Nostr-sleutelbeheer en WebLN.', + flamingoDesc: 'Nostr-gerichte browserextensie met een strakke interface.', + kiwiDesc: 'Gebruik op Android/GrapheneOS Kiwi Browser om nos2x- of Alby-extensies te laden.', + fNativeApp: 'Native app', + fMultiKey: 'Ondersteuning voor meerdere sleutels', + fEventSigning: 'Event ondertekenen', + fSecureStorage: 'Veilige sleutelopslag', + fRemoteSigning: 'Extern ondertekenen', + fAnyClient: 'Werkt met elke client', + fCrossDevice: 'Synchronisatie tussen apparaten', + fMultiKeySupport: 'Ondersteuning voor meerdere sleutels', + fNip07: 'NIP-07-ondersteuning', + fNip46: 'NIP-46-ondersteuning', + fFlexibleSigning: 'Flexibel ondertekenen', + fNativeIos: 'Native iOS-app', + fLightweight: 'Lichtgewicht', + fEasyToUse: 'Makkelijk te gebruiken', + fChromeSupport: 'Chrome/Brave/Edge-ondersteuning', + fLightningPayments: 'Lightning-betalingen', + fNostrSigning: 'Nostr-ondertekening', + fWebln: 'WebLN-ondersteuning', + fNwc: 'NWC-ondersteuning', + fCleanUi: 'Strakke UI', + fPrivacyFocused: 'Privacygericht', + fExtensionMobile: 'Extensies op mobiel', + fFullBrowser: 'Volledige browserervaring', + fGraphene: 'Werkt op GrapheneOS', + }, + betaDisclaimer: { + title: 'Let op — dit is bèta', + subtitle: 'Een kort woordje voordat je begint.', + ossTitle: 'Open source & experimenteel', + ossBody: 'In de openbaarheid gebouwd door de community. Snuffel rond, fork het, sloop het.', + betaTitle: 'In bèta — niet geauditeerd', + betaBody: 'De code is nog niet formeel beveiligingsaudit ondergaan. Bugs komen voor.', + moneyTitle: 'Gaat om echte Bitcoin & Lightning', + moneyBody: 'Gebruik het met geld op eigen risico. Laad alleen wat je je kunt veroorloven te verliezen.', + finePrint: 'Geen enkele garantie. Je bent zelf volledig verantwoordelijk voor je eigen geld en sleutels.', + viewCode: 'Bekijk de code', + accept: 'Begrepen, laat me erin', + }, + }, +}; export default nlBatch3; diff --git a/src/i18n/nl/batch4.ts b/src/i18n/nl/batch4.ts index 0954e5d..962419d 100644 --- a/src/i18n/nl/batch4.ts +++ b/src/i18n/nl/batch4.ts @@ -1,4 +1,1123 @@ -/** nl — batch 4. Filled by the translation pass; empty until then. */ -const nlBatch4 = {}; +/** + * nl (Nederlands, nl-NL) — batch 4: wallet. + * + * `walletUi` — wallet/Cashu, stash, mints, app shop, newsletter, community + * stats, leaderboards, profile page. + * + * Merk-/vakjargon blijft Engels (Stash, The Lab, Nostr, Lightning, Zap, Relay, + * sats, Cashu, mint, NWC, npub, Lightning Address); tricknamen blijven Engels. + */ +const nlBatch4 = { + walletUi: { + page: { + title: 'Wallet', + subtitle: 'Bitcoin Lightning + Cashu', + manage: 'Beheren', + getAWallet: 'Wallet regelen', + learnPlanB: 'Meer weten bij Plan B Academy', + walletMinibits: 'Mobiele Cashu · NWC', + walletAlby: 'Browserextensie · WebLN + NWC', + walletZeus: 'Self-custodial Lightning', + walletCoinos: 'Webgebaseerd · werkt overal', + whatAreZaps: 'Wat zijn Zaps?', + whatAreZapsShort: 'Wat zijn zaps?', + zapsDesc: 'Directe Bitcoin Lightning-betalingen. Stuur sats naar elke skater, spotmaker of coach — geen tussenpersoon, geen platformafdracht.', + instant: 'Direct', + instantDesc: 'Afgewikkeld in seconden', + flexible: 'Flexibel', + flexibleDesc: 'Jouw wallet, jouw sleutels', + private: 'Privé', + privateDesc: 'Cashu verbergt wie betaalt', + direct: 'Rechtstreeks', + directDesc: 'De waarde gaat naar de maker', + loginRequired: 'Inloggen vereist', + loginRequiredDesc: 'Log in met je Nostr-account om je Lightning-wallet te koppelen en te beginnen met zappen.', + browseMints: 'Cashu-mints bekijken', + }, + modal: { + walletName: 'Walletnaam (optioneel)', + walletNamePlaceholder: 'Mijn Lightning-wallet', + connectionUri: 'Verbindings-URI', + spendLimitTitle: 'Stel eerst een bestedingslimiet in', + spendLimitBody1: 'Deze string laat SkateSpots Lightning-facturen vanaf je wallet betalen. Geef deze verbinding in je wallet-app een klein', + dailyBudget: 'dagbudget', + spendLimitBody2: '(bijv. een paar duizend sats) en schakel alleen in', + spendLimitBody3: 'Plak nooit een verbinding met een onbeperkt budget. Je kunt hem op elk moment in je wallet intrekken.', + addWallet: 'Wallet toevoegen', + nwcConnection: 'NWC-verbinding', + lightningWallet: 'Lightning-wallet', + pasteNwc: 'Plak je NWC-verbindingsstring om zaps te versturen', + connectWallet: 'Wallet koppelen', + browserExtension: 'Browserextensie (WebLN)', + autoDetected: 'Automatisch gedetecteerd indien geïnstalleerd', + ready: 'Gereed', + notFound: 'Niet gevonden', + getNwcFrom: 'NWC ophalen bij:', + connectionRequired: 'Verbindings-URI vereist', + connectionRequiredDesc: 'Voer een geldige NWC-verbindings-URI in.', + activeChanged: 'Actieve wallet gewijzigd', + activeChangedDesc: 'De geselecteerde wallet is nu actief voor zaps.', + connectNwc: 'NWC-wallet koppelen', + connectNwcDesc: 'Voer je verbindingsstring in van een compatibele wallet.', + connect: 'Koppelen', + connecting: 'Koppelen...', + walletSettings: 'Walletinstellingen', + connectDesc: 'Koppel je Lightning-wallet om direct zaps te versturen.', + }, + cashu: { + title: 'Cashu-wallet', + desc: 'Ingebouwde ecash-wallet — geen externe setup nodig', + initializing: 'Wallet initialiseren...', + walletError: 'Walletfout', + balance: 'Saldo', + balanceAria: 'Walletsaldo {{amount}} sats', + activeMint: 'Actieve mint', + selectMint: 'Kies een mint', + receive: 'Ontvangen', + send: 'Verzenden', + receiveViaLightning: '⚡ Ontvangen via Lightning', + amountSats: 'Bedrag in sats', + generateInvoice: 'Factuur genereren', + generating: 'Genereren…', + or: 'Of', + receiveCashu: '🥜 Cashu-token ontvangen', + scanQr: 'QR scannen', + pasteCashu: 'Cashu-token plakken (cashu...)', + receiveToken: 'Token ontvangen', + receiving: 'Ontvangen…', + createCashu: '🥜 Cashu-token aanmaken', + createToken: 'Token aanmaken', + creating: 'Aanmaken…', + payInvoice: '⚡ Lightning-factuur betalen', + pasteInvoice: 'Lightning-factuur plakken (lnbc...)', + payInvoiceBtn: 'Factuur betalen', + processing: 'Verwerken...', + payAddress: '📧 Lightning Address betalen', + sendToAddress: 'Naar adres verzenden', + sending: 'Verzenden…', + recentActivity: 'Recente activiteit', + receivedLightning: '⚡ Lightning ontvangen', + sentLightning: '⚡ Lightning verzonden', + sentToken: '🥜 Token verzonden', + receivedToken: '🥜 Token ontvangen', + whatIsCashu: 'Wat is Cashu?', + whatIsCashuDesc: 'Cashu is digitaal geld gedekt door Bitcoin Lightning. Zie het als Bitcoin-tokens die je in je browser bewaart.', + benefitOffline: 'Werkt offline bij skateplekken', + benefitInstant: 'Directe peer-to-peer-betalingen', + benefitPrivacy: 'Privacygericht (mints kunnen je niet volgen)', + benefitRedeemable: 'Altijd inwisselbaar voor Lightning-sats', + findMints: 'Vind mints op mintradar.pedani.eu', + backupTitle: 'Back-up van je wallet', + backupDesc: 'Je wallet is beveiligd met een herstelzin van 12 woorden. Bewaar die veilig — je hebt hem nodig om je saldo te herstellen als je browsergegevens wist.', + viewRecovery: 'Herstelzin bekijken', + backupNote: 'Dit is net als je Nostr-nsec — houd het geheim en maak een back-up!', + tokenReceived: 'Token ontvangen', + tokenReceivedDesc: 'Cashu-token succesvol ingewisseld!', + receiveFailed: 'Ontvangen mislukt', + unknownError: 'Onbekende fout', + requestUnsupported: 'Cashu-verzoek nog niet ondersteund', + requestUnsupportedDesc: 'Deze wallet kan nog geen Cashu- (creq) verzoek betalen — vraag om een Lightning-factuur of -adres.', + onchainUnsupported: 'On-chain hier niet ondersteund', + onchainUnsupportedDesc: 'Dat is een Bitcoin-adres. Deze wallet verstuurt alleen Cashu-tokens en Lightning-betalingen.', + nostrProfile: 'Dat is een Nostr-profiel', + nostrProfileDesc: 'Scan een Cashu-token, Lightning-factuur of Lightning-adres om te betalen.', + clinkUnsupported: 'Betalingscode nog niet ondersteund', + clinkUnsupportedDesc: 'Deze wallet kan nog geen CLINK-codes betalen. Gebruik in plaats daarvan een Lightning-factuur of -adres.', + unrecognizedQr: 'Onbekende QR-code', + unrecognizedQrDesc: 'Scan een Cashu-token, Lightning-factuur of Lightning-adres.', + invalidAmount: 'Ongeldig bedrag', + invalidAmountDesc: 'Voer een geldig bedrag in', + paymentSent: 'Betaling verzonden', + paymentSentDesc: '{{amount}} sats verzonden naar {{address}}', + paymentFailed: 'Betaling mislukt', + copied: 'Gekopieerd', + copiedDesc: '{{label}} gekopieerd naar klembord', + receiveSats: '{{amount}} sats ontvangen', + payInvoiceHint: 'Betaal deze factuur vanaf elke Lightning-wallet', + invoiceQrAlt: 'QR-code van factuur', + lightningInvoice: 'Lightning-factuur', + invoiceLabel: 'Factuur', + waiting: '⏳ Wachten op betaling...', + tokenReady: 'Token klaar om te verzenden', + shareToken: 'Deel dit token met de ontvanger', + tokenQrAlt: 'QR-code van token', + cashuToken: 'Cashu-token', + tokenLabel: 'Token', + copyToken: 'Token kopiëren', + tokenWarning: 'Iedereen met dit token kan het innen - behandel het als cash!', + browser: { + title: 'Ingebouwde ecash-wallet', + appOnly: 'Alleen in de app', + desc: 'Self-custodial Cashu-ecash, mogelijk gemaakt door Bitcoin Lightning', + unlockTitle: 'Ontgrendel de volledige wallet in de SkateSpots-app', + unlockDesc: 'Met de ingebouwde ecash-wallet kun je Cashu-tokens minten, versturen en inwisselen, precies op de spot. Hij leeft in de native app, waar hij rechtstreeks met mints kan praten — browsers sandboxen die verbindingen voor je veiligheid.', + zapTipTitle: 'Zap & tip — werkt nu in je browser', + zapTipDesc: 'Sats sturen naar spots, evenementen, coaches en crews werkt hier al. Koppel hieronder gewoon een Lightning-wallet — Nostr Wallet Connect of een browserextensie zoals Alby. Geen Cashu-mint nodig.', + }, + }, + escrow: { + title: 'Escrow', + desc: 'Verkoop veilig: zet escrow aan en een koper kan sats aan jou vastzetten voor een ruil. Jij geeft ze vrij wanneer je levert — doe je dat niet, dan kan de koper ze na de afgesproken tijd terugvorderen.', + active: 'Escrow staat aan', + publish: 'Escrow aanzetten', + published: 'Escrow staat aan', + publishedDesc: 'Kopers kunnen nu geld aan jou vastzetten voor een ruil.', + failed: 'Escrow kon niet worden aangezet', + }, + escrowSettings: { + title: 'Escrow-instellingen', + desc: 'Standaardwaarden voor Cashu-escrow-ruilen. Apparaatgebonden.', + lockWindow: 'Standaard vergrendelingsperiode', + lockWindowHint: 'Hoe lang geld vast blijft staan voordat de koper het kan terugvorderen. Langer is veiliger voor de verkoper.', + days: 'dagen', + preferredMint: 'Mint voor escrow', + activeMint: 'Actieve mint', + preferredMintHint: 'Welke mint escrow financiert. Gebruik een betrouwbare.', + requireListings: 'Escrow verplichten bij nieuwe advertenties', + requireListingsHint: 'Vinkt “Escrow vereisen” alvast aan wanneer je iets plaatst.', + }, + privacy: { + title: 'Privacytips', + subtitle: 'Leer hoe je je financiële privacy beschermt', + cashuRecommended: 'CASHU (Aanbevolen)', + anon: 'Anonieme transacties', + blind: 'Blinde handtekeningen verbergen activiteit', + noIp: 'Geen IP-blootstelling', + trustMint: 'Vertrouw de mint met je geld', + lightningAddress: 'LIGHTNING ADDRESS', + linked: 'Kan aan identiteit worden gekoppeld', + traceable: 'Betalingsgeschiedenis traceerbaar', + ipVisible: 'IP zichtbaar bij factureren', + selfCustody: 'Self-custody mogelijk', + bestPractices: 'Beste praktijken', + tip1Title: 'Gebruik Cashu voor het ontvangen van tips', + tip1Desc: 'De ingebouwde Cashu-wallet is de meest privacyvriendelijke manier om zaps te ontvangen', + tip2Title: 'Gebruik een aparte wallet voor SkateSpots', + tip2Desc: 'Gebruik niet je hoofdwallett — houd appgeld gescheiden', + tip3Title: 'Overweeg een VPN of Tor', + tip3Desc: 'Verbergt je IP-adres bij het doen van transacties', + tip4Title: 'Vermijd Lightning-adressen die aan je identiteit zijn gekoppeld', + tip4Desc: 'Gebruik pseudonieme adressen die niet aan je echte naam zijn verbonden', + proTip: 'Pro-tip:', + proTipDesc: 'Ontvang betalingen eerst op je Cashu-wallet en verplaats grotere bedragen daarna periodiek naar je persoonlijke wallet, met een VPN voor de overdracht.', + warnTitle: 'Privacymelding', + warnDesc: 'Lightning-adressen kunnen je SkateSpots-activiteit mogelijk aan je echte identiteit koppelen.', + betterPrivacy: 'Voor betere privacy:', + bullet1: 'Gebruik een speciale wallet voor deze app', + bullet2: 'Overweeg in plaats daarvan de Cashu-wallet', + bullet3: 'Gebruik VPN/Tor voor transacties', + useCashu: 'Gebruik liever Cashu', + understand: 'Ik begrijp het', + }, + mintPrivacy: { + title: 'Mint-privacy', + desc: 'Meerdere mints gebruiken verbetert de privacy doordat geen enkele mint al je transacties kan zien', + distribution: 'Verdeling van geld', + singleWarning: 'Eén mint gebruiken betekent dat die mint al je transactietiming en -bedragen kan zien. Overweeg meer mints toe te voegen voor betere privacy.', + yourMints: 'Jouw mints ({{count}})', + default: 'Standaard', + addMint: 'Mint toevoegen', + addMintDesc: 'Voeg een nieuwe Cashu-mint toe aan je wallet', + mintUrl: 'Mint-URL', + add: 'Toevoegen', + adding: 'Toevoegen...', + orChoose: 'Of kies uit de lijst', + recommended: 'Aanbevolen mints', + allMints: 'Alle mints (map)', + searchMints: 'Mints zoeken…', + noDirectoryMints: 'Geen mints die bij je zoekopdracht passen.', + directoryHint: 'Uit de community-mintradar-map — onofficieel en mogelijk verouderd.', + added: 'Toegevoegd', + soon: 'Binnenkort', + autoDistribute: 'Geld automatisch verdelen', + autoDesc: 'Verdeel ontvangen geld over meerdere mints', + autoAria: 'Geld automatisch verdelen (binnenkort beschikbaar)', + tip1: 'Gebruik minimaal 2-3 verschillende mints voor betere privacy', + tip2: 'Bewaar niet al je geld in één mint - verdeel het', + tip3: 'Denk aan de jurisdictie van een mint (verschillende landen = verschillende juridische toegang)', + tip4: 'Mints zien de timing van transacties, maar NIET wie je betaalt (blinde handtekeningen)', + future: 'Toekomstige functies: mint-rotatie en privacyscore - blijf op de hoogte!', + findMore: 'Vind meer mints op mintradar.pedani.eu', + trustWarning: 'Vertrouwenswaarschuwing:', + trustWarningDesc: 'Mints zijn custodial - zij beheren je geld. Gebruik alleen mints die je vertrouwt. Als een mint verdwijnt, kan je geld verloren gaan. Geld over meerdere mints verdelen verkleint het risico.', + removeTitle: 'Mint verwijderen?', + removeDesc: 'Weet je zeker dat je {{name}} wilt verwijderen?', + removeMint: 'Mint verwijderen', + warning: 'Waarschuwing:', + withdrawWarning: 'Deze mint bevat {{amount}} sats. Haal je geld weg voordat je hem verwijdert!', + invalidUrl: 'Ongeldige URL', + invalidUrlDesc: 'Mint-URL moet beginnen met https://', + mintAdded: 'Mint toegevoegd', + mintAddedDesc: 'Nieuwe mint succesvol toegevoegd', + mintAddedNamed: '{{name}} succesvol toegevoegd', + failedAdd: 'Mint toevoegen mislukt', + failed: 'Mislukt', + noMints: 'Geen mints', + singleMint: 'Eén mint', + concentrated: 'Geconcentreerd', + moderate: 'Gemiddeld', + wellDistributed: 'Goed verdeeld', + mintCoinosWebDesc: 'Webvriendelijke mint (aanbevolen voor browsers)', + mintMinibitsWebDesc: '⚠ Alleen native app — niet bereikbaar vanuit webbrowsers', + mintMinibitsNativeDesc: 'SkateSpots-mint — aanbevolen', + mintCoinosDesc: 'Webvriendelijke mint', + mintLnbitsDesc: 'Community-mint op LNbits', + }, + nwc: { + title: 'Lightning-wallet', + noConnection: 'NWC-wallet', + refresh: 'Saldo vernieuwen', + createInvoice: 'Factuur aanmaken', + copyInvoice: 'Factuur kopiëren', + pasteInvoice: 'Plak een Lightning-factuur (lnbc…)', + amount: 'Bedrag: {{amount}} sats', + pasteToSee: 'Plak een factuur om het bedrag te zien', + pay: 'Betalen', + invoiceQrAlt: 'QR-code van Lightning-factuur', + enterAmount: 'Voer een bedrag in sats in', + readBalanceFailed: 'Saldo kon niet worden gelezen', + readBalanceFailedDesc: 'Je wallet reageerde niet.', + createInvoiceFailed: 'Factuur aanmaken mislukt', + createInvoiceFailedDesc: 'Probeer het zo opnieuw.', + paymentSent: 'Betaling verzonden', + paidAmount: '{{amount}} sats betaald.', + paid: 'Betaald.', + paymentRejected: 'De wallet weigerde de betaling.', + }, + qr: { + title: 'QR-code scannen', + desc: 'Plaats de QR-code in het camerabeeld om te scannen', + paste: 'Plakken vanaf klembord', + hint: 'Scan een Cashu-token, Lightning-factuur of Lightning-adres', + clipboardEmpty: 'Klembord leeg', + clipboardEmptyDesc: 'Geen tekst op het klembord gevonden', + pasteFailed: 'Plakken mislukt', + pasteFailedDesc: 'Kon niet van het klembord lezen', + }, + recovery: { + title: 'Herstelzin', + desc: 'Deze 12 woorden zijn de enige manier om je ecash-saldo te herstellen. Schrijf ze in volgorde op en bewaar ze offline — deel ze met niemand.', + tapReveal: 'Tik om te tonen', + noWatching: 'Zorg dat niemand meekijkt', + hide: 'Verbergen', + reveal: 'Tonen', + paperHint: 'Op papier schrijven is het veiligst — naar je klembord kopiëren kan naar andere apps lekken.', + written: 'Ik heb ze opgeschreven', + revealFirst: 'Toon eerst de woorden', + copiedDesc: 'Herstelzin gekopieerd — plak hem ergens veilig en maak daarna je klembord leeg.', + copyFailed: 'Kopiëren mislukt', + copyFailedDesc: 'Schrijf de woorden in plaats daarvan op.', + }, + guide: { + quickGuide: 'Snelgids', + fullGuide: 'Walletgids (Skater-editie)', + cashuSummary: 'Privacy + gemak', + mintHoldsFunds: '(mint beheert het geld)', + lightningSummary: 'Controle + veiligheid', + youHoldKeys: '(jij beheert de sleutels)', + useBoth: 'Gebruik beide: Cashu voor tips, Lightning voor spaargeld', + cashuTitle: 'CASHU-WALLET', + cashuTagline: 'Zoals cash op zak in het skatepark', + cashuBullet1: 'Snel tevoorschijn voor een tip', + cashuBullet2: 'Bewaar hier niet je levens spaargeld', + cashuBullet3: 'Als de mint verdwijnt, kan het geld verloren gaan', + cashuBullet4: 'Niemand weet hoeveel je hebt (privacy!)', + cashuPerfectFor: 'Snacks tijdens de sessie, clips zappen, kleine tips', + lightningTitle: 'LIGHTNING-WALLET', + lightningTagline: 'Zoals je bankrekening - jij hebt de controle', + lightningBullet1: 'Veilig, jij beheert de sleutels', + lightningBullet2: 'Duurt even om in te stellen', + lightningBullet3: 'Volledige transactiegeschiedenis', + lightningBullet4: 'Beter voor grotere bedragen', + lightningPerfectFor: 'Uitrusting kopen, spaargeld, grote zaps', + perfectFor: 'Perfect voor:', + proTips: 'PRO-TIPS', + tip1Title: 'Gebruik beide wallets', + tip1Desc: 'Houd sessiegeld in Cashu, spaargeld in Lightning', + tip2Title: 'Probeer verschillende wallets', + tip2Desc: 'Experimenteer om te ontdekken wat voor jou werkt. Elk heeft andere functies en afwegingen', + tip3Title: 'Betere privacy', + tip3Desc: 'Meerdere wallets gebruiken betekent dat geen enkele app al je activiteit ziet', + tip4Title: 'Doe ervaring op', + tip4Desc: 'Hoe meer tools je kent, hoe meer opties je hebt. Begin klein en leer gaandeweg', + tldr: 'TL;DR:', + tldrDesc: 'Er is geen "beste" wallet - het hangt van je behoeften af. Probeer beide, gebruik wat goed voelt, en bewaar niet al je sats op één plek!', + }, + zap: { + count: '{{count}} zaps', + connectFirst: 'Koppel eerst je wallet', + connectFirstDesc: 'Om zaps (Bitcoin-tips) te versturen, moet je een Lightning-wallet koppelen.', + quickSetup: 'Snelle setup (30 seconden)', + quickSetupDesc: 'Koppel je bestaande Lightning-wallet met Nostr Wallet Connect (NWC). Geen extra accounts nodig.', + connectNwc: 'Wallet koppelen met NWC', + noWallet: 'Geen wallet? Leer hoe', + skip: 'Nu overslaan (handmatige factuur)', + note: 'ℹ️ Let op:', + noteDesc: 'Je kunt ook zonder gekoppelde wallet een factuur aanmaken, maar die moet je handmatig kopiëren om te betalen.', + payWithWebln: 'Betalen met WebLN', + processing: 'Verwerken...', + openInWallet: 'Openen in Lightning-wallet', + scanHint: 'Scan de QR-code of kopieer de factuur om met elke Lightning-wallet te betalen.', + cashuInstant: 'Betaal direct met je ingebouwde wallet', + satsAvailable: 'sats beschikbaar', + or: 'OF', + customAmount: 'Aangepast bedrag', + addComment: 'Een reactie toevoegen (optioneel)', + insufficientBanner: '⚠️ Onvoldoende Cashu-saldo. Je hebt {{amount}} sats meer nodig. Schakel over naar Lightning of vul je Cashu-wallet aan.', + creatingInvoice: 'Factuur aanmaken...', + zapAmount: '{{amount}} sats zappen', + zapAmountCashu: '{{amount}} sats zappen met Cashu', + lightningInvoice: 'Lightning-factuur', + qrAlt: 'QR-code van Lightning-factuur', + enterAmount: 'Voer een bedrag in', + enterAmountDesc: 'Kies een voorinstelling of typ een geldig aantal sats.', + cashuUnavailable: 'Cashu-wallet niet beschikbaar', + cashuUnavailableDesc: 'Je Cashu-wallet is niet gereed. Schakel over naar Lightning of open eerst je wallet.', + insufficientCashu: 'Onvoldoende Cashu-saldo', + insufficientCashuDesc: 'Je hebt {{amount}} sats meer nodig. Schakel over naar Lightning of vul aan.', + zapSentCashu: 'Zap verzonden! 🥜', + zapSentCashuDesc: '{{amount}} sats gezapt vanaf je Cashu-wallet.', + cashuFailed: 'Cashu-betaling mislukt', + cashuFailedDesc: 'Betalen met je Cashu-wallet mislukt.', + invoiceCopied: 'Factuur gekopieerd', + invoiceCopiedDesc: 'Lightning-factuur gekopieerd naar klembord', + defaultComment: 'Gezapt op SkateSpots! 🛹', + titleConnect: 'Wallet koppelen', + titlePayment: 'Lightning-betaling', + titleZap: 'Stuur een zap', + descConnect: 'Koppel je Lightning-wallet om zaps te versturen', + descPayment: 'Betaal met het Bitcoin Lightning-netwerk', + descZap: 'Zaps zijn kleine Bitcoin-betalingen die de maker van dit item steunen. Als je dit leuk vond, overweeg dan een zap te sturen!', + descZapShort: 'Zaps zijn kleine Bitcoin-betalingen die makers steunen. Overweeg een zap te sturen!', + }, + zapCrew: { + title: 'Zap de crew', + desc: 'Verdeel een zap gelijkmatig over {{count}} crewleden met een Lightning-adres.', + noMembers: 'Geen andere crewleden om nu te zappen.', + totalAmount: 'Totaalbedrag', + customTotal: 'Aangepast totaal', + each: 'sats per persoon', + rounded: '(afgerond)', + noWallet: 'Geen wallet gekoppeld — je krijgt per lid een factuur om handmatig te betalen. Koppel een wallet voor splitsen met één tik.', + zapAcross: '{{amount}} sats zappen over {{count}}', + sentTo: '⚡ Verzonden naar {{done}}/{{total}}', + none: 'Geen automatische betalingen voltooid', + copyPending: 'Kopieer eventuele openstaande facturen om handmatig te betalen.', + thanks: 'Bedankt voor het steunen van de crew!', + payingCrew: 'De crew betalen…', + defaultComment: 'De {{crew}} crew gezapt! 🤘', + sent: 'Verzonden', + paying: 'Betalen', + resolving: 'Oplossen', + skipped: 'Overgeslagen', + failed: 'Mislukt', + waiting: 'Wachten', + copyInvoice: 'Factuur kopiëren', + invoiceCopied: 'Factuur gekopieerd', + invoiceCopiedDesc: 'Plak hem in elke Lightning-wallet', + }, + zapBadges: { + title: 'Zap-badges', + zaps: 'zaps', + satsSent: 'sats verzonden', + rank: 'rang', + footnote: 'Gebaseerd op de laatste 30 dagen aan zaps.', + first: 'Eerste zap', + firstHint: 'Stuur je eerste zap', + regular: 'Regelmatig', + regularHint: 'Stuur 10 zaps', + generous: 'Gul', + generousHint: 'Stuur 10.000 sats', + patron: 'Mecenas', + patronHint: 'Stuur 100.000 sats', + top10: 'Top 10', + top10Hint: 'Bereik de top 10-supporters', + }, + trust: { + unavailable: 'Vertrouwensscore niet beschikbaar', + yourContent: 'Dit is jouw content', + following: 'Je volgt deze gebruiker', + friendOfFriend: 'Vriend van een vriend (2 stappen)', + nip05: 'NIP-05-geverifieerde gebruiker', + unknown: 'Onbekende gebruiker', + help: 'Vertrouwensscores helpen betrouwbare bijdragers in de skateboardcommunity te herkennen.', + }, + share: { + title: 'Profiel delen', + desc: 'Richt de camera van een telefoon op de code om het profiel van {{name}} te openen.', + qrAlt: 'QR-code van profiel', + copyLink: 'Link kopiëren', + copyFailed: 'Kopiëren mislukt', + copyFailedDesc: 'Kon de link niet kopiëren.', + shareEllipsis: 'Delen…', + }, + addToCollection: { + title: 'Opslaan in collectie', + desc: '"{{spot}}" opslaan in een van je collecties', + loginRequired: 'Log in om spots in collecties op te slaan', + noCollections: 'Je hebt nog geen collecties', + createFirst: 'Maak hieronder je eerste aan!', + spotCount: '{{count}} spots', + alreadySavedTag: 'Al opgeslagen', + alreadySaved: 'Al opgeslagen', + alreadySavedDesc: '“{{spot}}” zit al in “{{collection}}”', + saved: 'Spot opgeslagen!', + savedDesc: '"{{spot}}" toegevoegd aan "{{collection}}"', + saveFailed: 'Opslaan mislukt', + somethingWrong: 'Er is iets misgegaan', + created: 'Collectie aangemaakt!', + createdDesc: '"{{spot}}" toegevoegd aan je nieuwe collectie "{{collection}}"', + createFailed: 'Collectie aanmaken mislukt', + name: 'Naam van collectie', + descriptionOptional: 'Beschrijving (optioneel)', + creating: 'Aanmaken...', + createAndSave: 'Aanmaken & opslaan', + createNew: 'Nieuwe collectie aanmaken', + }, + collection: { + back: 'Terug naar collecties', + created: 'Aangemaakt {{date}}', + deleteTitle: 'Collectie verwijderen?', + deleteDesc: 'Hiermee wordt "{{title}}" permanent verwijderd. De spots zelf blijven behouden.', + deleting: 'Verwijderen...', + deleteFailed: 'Collectie verwijderen mislukt', + deleted: 'Collectie verwijderd', + deletedDesc: '"{{title}}" is verwijderd', + empty: 'Geen spots in deze collectie', + emptyOwner: 'Voeg spots toe aan je collectie via "Opslaan in collectie" bij een spot', + emptyOther: 'Deze collectie is leeg', + browseSpots: 'Spots bekijken', + linkCopied: 'Link gekopieerd!', + linkCopiedDesc: 'Collectielink gekopieerd naar klembord', + map: 'Collectiekaart', + removeFailed: 'Spot verwijderen mislukt', + shareText: 'Bekijk deze spotcollectie: {{title}}', + spotRemoved: 'Spot verwijderd', + spotRemovedDesc: '"{{title}}" is uit deze collectie verwijderd', + }, + mints: { + title: 'Mints', + subtitle: 'Bekijk Cashu-mints en hun status. Cashu-walletbewerkingen draaien in de SkateSpots-app.', + searchPlaceholder: 'Zoek mints op naam of URL…', + onlineOnly: 'Alleen online', + count: '{{filtered}} van {{total}} mints', + directoryError: 'Kon de mint-map niet laden.', + directoryHint: 'De map wordt door de community beheerd en is snelheidsbeperkt — hij kan tijdelijk onbeschikbaar zijn.', + goToWallet: 'Naar wallet', + appOnly: 'Een mint toevoegen gebeurt in de SkateSpots-app (Cashu is alleen in de app).', + noMatch: 'Geen mints die bij “{{query}}” passen.', + footer: 'Statusgegevens komen van het community-MintRadar-project — onofficieel en mogelijk verouderd. Controleer altijd de voorwaarden van een mint voordat je er geld aan toevertrouwt.', + archived: 'Gearchiveerd', + degraded: 'Verstoord', + offline: 'Offline', + online: 'Online', + terms: 'Voorwaarden', + reliability: 'betrouwbaarheid', + add: 'Toevoegen', + addToWallet: 'Aan wallet toevoegen', + copyUrl: 'URL kopiëren', + openMint: 'Mint openen', + inWallet: 'In je wallet', + addedBadge: 'Toegevoegd', + urlCopied: 'Mint-URL gekopieerd', + added: 'Mint toegevoegd', + addedDesc: '{{host}} zit nu in je wallet.', + couldNotAdd: 'Kon mint niet toevoegen', + communityRating: 'Community-beoordeling', + reliabilityLabel: 'Betrouwbaarheid', + uptime: 'Uptime 24u / 7d', + location: 'Locatie', + latency: 'Latentie', + nuts: 'Ondersteunde NUTs', + units: 'Eenheden', + version: 'Versie', + ratedBy: 'Beoordeeld met {{rating}}/5 door {{count}} mensen op MintRadar.', + noRating: 'Nog geen community-beoordeling op MintRadar.', + reviewsNote1: 'Geschreven reviews maken geen deel uit van de map —', + openMintRadar: 'open MintRadar', + reviewsNote2: 'om er een te lezen of achter te laten.', + liveness: 'Liveness-audit: {{mints}} mints en {{melts}} melts getest', + livenessErrors: ' · {{errors}}/{{total}} recente fouten', + whatsAMint: 'Wat is een mint?', + whatsAMintDesc: 'Een Cashu-mint geeft de ecash in je wallet uit en wisselt die in. Hij beheert de Bitcoin die je tokens dekt — dus een mint die je niet zelf draait, is er een die je moet vertrouwen.', + mintWarning: 'Mints kunnen offline gaan, voorwaarden wijzigen of met het geld verdwijnen. Houd alleen kleine saldo\'s aan, tenzij je de beheerder vertrouwt.', + healthDisclaimer: 'Statusgegevens worden door de community beheerd (MintRadar) — onofficieel en mogelijk verouderd.', + }, + appShop: { + title: 'App-shop', + subtitle: 'SkateSpots-merch voor de mensen die de scene draaiende houden.', + comingSoon: 'Binnenkort', + wearThe: 'Draag de', + scene: 'Scene', + heroDesc1: 'Merch voor de mensen die dit draaiende houden — verkocht', + locally: 'lokaal, op aanvraag', + heroDesc2: '. Je stuurt me een bericht, we regelen de details, en je betaalt in', + heroDesc3: '— Lightning of Cashu — wanneer je het ophaalt. Geen kaarten, geen accounts, geen checkout-robot, geen tussenpersoon die de drop afroomt.', + requestItem: 'Een item aanvragen', + dmHint: 'Opent een privé, versleuteld DM met mij.', + lightning: 'Lightning', + cashu: 'Cashu', + localHandover: 'Lokale overdracht', + inTheWorks: 'In de maak', + notForSale: 'nog niet te koop', + soon: 'binnenkort', + tees: 'T-shirts & hoodies', + decks: 'Decks', + shopTools: 'Gereedschap', + stickerPacks: 'Stickerpakketten', + stickerPacksDesc: 'De pakketten komen eraan. De ontwerpen nog niet — print deze twee nu meteen, gratis.', + sticker: 'Sticker', + stickerTip: 'Zwart uitgesneden. Print op stickerpapier, snijd langs de zwarte rand.', + poster: 'Poster', + posterTip: 'Print op A3; verklein naar A4 (50%) en hij scant nog prima.', + printableAlt: 'SkateSpots {{title}} — printbaar', + print: 'Printen', + printNote1: 'Print op', + actualSize: '100% / “Werkelijke grootte”', + printNote2: 'zodat het formaat exact klopt en de QR scherp blijft — hij verwijst naar skate-spots.org. Vectorbestanden, dus ze schalen zonder wazig te worden.', + howBuying: 'Hoe kopen werkt', + dmNotCart: 'het is een DM, geen winkelmandje', + step1Title: 'Stuur me een bericht', + step1Desc: 'Stuur een DM met wat je wilt — item, maat, kleur, wat je maar zoekt.', + step2Title: 'We regelen het', + step2Desc: 'Prijs in sats, en waar en wanneer we afspreken. Het is een gesprek, geen checkout.', + step3Title: 'Betaal in sats', + step3Desc: 'Lightning of Cashu bij de overdracht, dan is het van jou. Geen verzending, geen wachtkamers.', + }, + newsletter: { + newIssue: 'Nieuwe editie', + composerTitle: 'Een nieuwsbriefeditie publiceren', + composerDesc: 'Gepubliceerd als NIP-23-artikel (kind 30023) op de community-relay. Abonnees krijgen het in hun notificatiebel. De tekst ondersteunt Markdown.', + fieldTitle: 'Titel', + identifier: 'Identificatie (slug)', + leaveBlank: 'laat leeg om automatisch te genereren', + reusingSlug: 'Een bestaande slug hergebruiken bewerkt die editie in plaats van een nieuwe aan te maken.', + summary: 'Samenvatting', + optional: 'optioneel', + coverImage: 'URL van omslagafbeelding', + bodyMarkdown: 'Tekst (Markdown)', + characters: '{{count}} tekens', + publishIssue: 'Editie publiceren', + issuePublished: 'Editie gepubliceerd! 🛹', + issuePublishedDesc: 'Abonnees zien het in hun notificatiebel.', + publishFailed: 'Publiceren mislukt', + couldNotReachRelay: 'Kon geen enkele relay bereiken — controleer je verbinding en probeer opnieuw.', + tryAgain: 'Probeer het opnieuw.', + publishedToNostr: 'Gepubliceerd op Nostr', + publishedToast: 'Gepubliceerd!', + postedToNostr: 'Drop {{number}} geplaatst op Nostr.', + postToNostr: 'Op Nostr plaatsen', + previewLabel: 'Voorbeeld', + editFirst: 'Eerst bewerken', + previewNoteDesc: 'Zo ziet de note eruit op de meeste Nostr-clients. De opmaak verschilt per client.', + editNoteDesc: 'Bewerk de notetekst hieronder. Wijzigingen gelden alleen voor deze publicatie — het bronbestand blijft ongewijzigd.', + dropNumber: 'Drop {{number}}', + publish: 'Publiceren', + publishing: 'Publiceren...', + dropIsOut: 'Drop {{number}} is uit', + daysAgo: '{{count}}d geleden', + dismiss: 'Sluiten', + itsMonday: 'Het is maandag', + mondayDesc: 'Tijd om de wekelijkse nieuwsbrief te droppen. Eén klik en de AI schrijft hem op basis van de git-log.', + writeDrop: 'Drop {{number}} schrijven', + dismissReminder: 'Herinnering sluiten', + loginPrompt: 'Log in met Nostr om nieuwe drops in je mailbox te krijgen.', + subscribedToast: 'Je bent geabonneerd! 🛹', + subscribedToastDesc: 'Nieuwe drops komen in je notificatiebel onder "Nieuws".', + unsubscribed: 'Afgemeld', + unsubscribedDesc: 'Je kunt elke editie hier nog altijd lezen.', + checking: 'Controleren…', + subscribed: 'Geabonneerd', + unsubscribe: 'Afmelden', + subscribeCta: 'Abonneer je op de nieuwsbrief', + archiveSynced: 'Archief gesynchroniseerd naar Nostr', + missingCount: '{{count}} archiefedities staan nog niet op Nostr', + backfillDesc: 'Publiceer {{list}} als NIP-23-artikelen zodat abonnees en longread-lezers het volledige archief kunnen zien. De pagina behoudt sowieso zijn rijke lay-out.', + backfill: '{{count}} aanvullen naar Nostr', + publishing2: 'Publiceren…', + publishingLabel: 'Publiceren…', + backfilled: '{{count}} edities aangevuld 🛹', + backfilledDesc: 'Het archief staat nu op Nostr voor abonnees en lezers.', + partialBackfill: '{{published}} gepubliceerd, {{failed}} mislukt', + retryFinish: 'Opnieuw om af te maken: {{list}}.', + notLoggedIn: 'Niet ingelogd', + allIssues: 'Alle edities', + brand: 'SkateSpots-nieuwsbrief', + digTheDrop: 'Vind je de drop leuk? Zap hem en mis de volgende nooit.', + sectionStats: 'De community in cijfers', + sectionWhatsNew: 'Wat is er nieuw', + sectionSpotOfWeek: 'Spot van de week', + sectionCommunity: 'Community', + sectionSupport: 'Steun het project', + sectionLatestDrops: 'Nieuwste drops · live vanaf Nostr', + mappedBy: 'In kaart gebracht door', + viewOnMap: 'Bekijk op kaart', + noSpotPicked: 'Deze week geen spot gekozen. Dien de jouwe in en misschien haalt hij de volgende drop.', + browseMap: 'Blader door de kaart', + spotMap: 'Spotkaart', + statsBadge: 'Statistieken', + supportDesc: '100% opensource, door de community gefinancierd, geen advertenties, geen investeerders. Als het nuttig is, zap het of steun het op Angor.', + readFull: 'Lees de volledige editie', + joinSkaters: 'Sluit je aan bij {{count}} skaters die de drops ontvangen', + weeklyDrops: 'Wekelijkse drops', + tagline: 'Een wekelijkse nieuwsbrief · verzonden wanneer we maar willen', + freeNote: 'Gratis. Powered by Nostr — je abonnement leeft op je sleutels en volgt je op al je apparaten. Nieuwe drops komen in je notificatiebel.', + live: 'Live', + builtOn: 'Gebouwd op', + openSource: 'Open source', + supportUs: 'Steun ons', + freeToSkate: 'Je bent vrij om te skateboarden', + }, + stats: { + subtitle: 'Live statistieken rechtstreeks van het Nostr-netwerk. Transparant, gedecentraliseerd, door iedereen verifieerbaar.', + dataSource: 'Databron:', + updated: 'bijgewerkt {{age}}', + refresh: 'Vernieuwen', + partial: 'Kon niet elke relay bereiken — deze cijfers zijn mogelijk onvolledig.', + error: 'Kon de relay nu niet bereiken. Statistieken laden zodra de verbinding is hersteld.', + atAGlance: 'De community in één oogopslag', + skateSpots: 'Skatespots', + listedShops: 'Vermelde shops', + events: 'Evenementen', + mappers: 'Mappers', + uniqueContributors: 'unieke bijdragers', + labHeader: 'The Lab · makers & diensten', + total: '{{count}} totaal', + coaches: 'Coaches', + filmers: 'Filmers', + editors: 'Editors', + photographers: 'Fotografen', + builders: 'Builders', + artists: 'Artiesten', + graffiti: 'Graffiti', + tattoo: 'Tattoo', + trainers: 'Trainers', + musicians: 'Musici', + judges: 'Juryleden', + organizers: 'Organisatoren', + barbers: 'Barbers', + showFewer: 'Minder tonen', + showAllCrafts: 'Alle 13 ambachten tonen', + community: 'Community', + tours: 'Tours', + crews: 'Crews', + marketplace: 'Marktplaats', + liveListings: 'Live advertenties', + tradesRecorded: 'Geregistreerde ruilen', + satsTraded: 'Sats geruild', + zapsToMappers: 'Zaps naar mappers', + tradesNote1: 'wederzijdse ruilen tussen', + tradesNote2: 'mensen. Sats worden door de handelaars zelf opgegeven — de app kan een betaling buiten de app niet zien — dus de kop telt alleen', + mutual: 'wederzijdse', + tradesNote3: 'ruilen met een limiet per paar; de ruwe claim is', + tradesNote4: 'sats. "Zaps naar mappers" telt alleen ontvangsten gericht aan onze topbijdragers — het is', + not: 'niet', + tradesNote5: 'wereldwijd zapvolume.', + byRegion: 'Spots & shops per regio', + resolving: '{{count}} gelabelde locaties worden omgezet vanuit hun coördinaten… eenmalig, daarna op dit apparaat gecachet.', + topCountries: 'Toplanden', + topCities: 'Topsteden', + other: 'Overig', + otherCountriesTitle: 'Landen buiten de top 6', + otherCitiesTitle: 'Steden buiten de top 6', + uncategorised: 'Niet gecategoriseerd', + uncategorisedTitle: 'Geen stad-/landtag', + regionNote1: 'Cijfers', + spotsAndShops: 'spots & shops', + regionNote2: ', geen skaters — op basis van de eigen stad-/landtag, of afgeleid uit de coördinaten van de pin als die er niet is (gecachet op je apparaat; landen gegroepeerd op ISO-code indien aanwezig), alleen community-relay, met door moderatie verborgen content uitgesloten.', + ofTotal: '{{count}} van {{total}}', + regionNote3: 'locaties hebben geen locatietag en verschijnen als "Niet gecategoriseerd".', + growth: 'Groei in de tijd', + chartCumulativeTitle: 'Spots in kaart gebracht (cumulatief)', + chartCumulativeDesc: 'Totaal aantal spots dat in de tijd aan de kaart is toegevoegd', + chartMonthlyTitle: 'Maandelijkse activiteit', + chartMonthlyDesc: 'Nieuwe content die elke maand wordt gepubliceerd', + chartMappersTitle: 'Actieve mappers / maand', + chartMappersDesc: 'Unieke bijdragers die elke maand publiceren', + chartMixTitle: 'Contentsamenstelling', + chartMixDesc: 'Uitsplitsing naar contenttype (altijd)', + noData: 'Nog geen gegevens', + topMappers: 'Topmappers', + mostSpots: '— meeste spots toegevoegd', + noMapperData: 'Nog geen mapper-gegevens', + topShops: 'Topshops', + mostShops: '— meeste shops toegevoegd', + shopCount: '{{count}} shops', + noShopData: 'Nog geen shop-gegevens', + supporters: 'Community-supporters', + fundedTitle: 'Gefinancierd door de community', + fundedDesc1: 'Gedecentraliseerde Bitcoin-crowdfunding via Angor.', + fundedDesc2: 'Geen advertenties, geen investeerders, geen dataverkoop.', + backAngor: 'Steun ons op Angor', + communityLink: 'Community →', + footer1: 'Alle gegevens worden live opgehaald van', + footer2: '— een publieke Nostr-relay.', + footer3: 'Elk event is ondertekend door zijn maker en cryptografisch verifieerbaar.', + footer4: 'Geen enkel cijfer kan vervalst worden.', + spots: 'Spots', + shops: 'Shops', + lab: 'Lab', + thisMonth: '+{{count}} deze maand', + fromActive: '{{count}} van actieve accounts', + viewAll: 'Alles bekijken', + spotCount: '{{count}} spots', + }, + leaderboard: { + mapEarn: 'In kaart brengen & verdienen', + helpMap: 'HELP DE WERELD IN KAART BRENGEN', + intro: 'Voeg spots en shops toe, word gezapt door dankbare skaters. Topbijdragers kunnen bonusbeloningen ontvangen!', + howItWorks: 'Hoe het werkt', + step1Title: '1. In kaart brengen', + step1Desc: 'Voeg spots & shops toe met foto\'s en details', + step2Title: '2. Zaps verdienen', + step2Desc: 'Skaters die je spots nuttig vinden, geven je een tip', + step3Title: '3. Bonusbeloningen', + step3Desc: 'Topmappers kunnen bonusbeloningen uit ons fonds ontvangen', + proTips: '💡 Pro-tips voor meer zaps:', + tipPhotos: 'Voeg 3+ foto\'s toe', + tipDescriptions: 'Schrijf gedetailleerde beschrijvingen', + tipLocation: 'Nauwkeurige locatie', + mapShop: 'Een shop in kaart brengen', + mapShopDesc: 'Skateshops, boardwinkels', + mapSpot: 'Een spot in kaart brengen', + mapSpotDesc: 'Parken, straatspots, DIY', + shops: 'Shops', + spotsLower: 'spots', + shopsLower: 'shops', + contributions: 'bijdragen', + yourRanking: 'Jouw positie', + spotsShops: '{{spots}} spots • {{shops}} shops', + totalLower: 'totaal', + overall: 'Algemeen', + noContributions: 'Nog geen bijdragen. Wees de eerste!', + addFirstSpot: 'Eerste spot toevoegen', + noShops: 'Nog geen shops in kaart gebracht', + addFirstShop: 'Eerste shop toevoegen', + noSpots: 'Nog geen spots in kaart gebracht', + poweredBy: 'Mogelijk gemaakt door community-zaps', + poweredByDesc: 'Als je een spot nuttig vindt, zap de mapper! Het is de beste manier om bedankt te zeggen en meer bijdragen aan te moedigen.', + you: 'Jij', + zapTitle: 'Zap-ranglijsten', + zapSubtitle: 'De spots die de meeste liefde krijgen — en de skaters die geven.', + thisWeek: 'Deze week', + thisMonth: 'Deze maand', + allTime: 'Altijd', + topZappedSpots: 'Meest gezapte spots', + noZaps: 'Nog geen zaps in deze periode. Wees de eerste — raak de ⚡ aan bij een spot die je leuk vindt.', + topSupporters: 'Topsupporters', + noZapsSent: 'Nog geen zaps verzonden in deze periode.', + fromTop10: '⚡ {{amount}} sats van de top 10', + supporter: 'Supporter', + skateShop: 'Skateshop', + skateSpot: 'Skatespot', + }, + supporters: { + our: 'ONZE', + community: 'COMMUNITY', + heroDesc: 'SkateSpots wordt gebouwd door en voor de community. Supporters, medewerkers, partners en vrienden die dit gratis en gedecentraliseerd houden.', + backAngor: 'Steun ons op Angor', + backers: 'Supporters', + backersDesc: 'Skaters die SkateSpots steunden — on-chain financiering via Angor, en Lightning-zaps naar het project.', + sourceAngor: 'Angor', + supportersTotals: '{{count}} supporters · {{angor}} sats via Angor · {{zap}} sats gezapt', + quietNote: 'Plus iedereen die stilletjes gaf — bedankt. ❤️', + silentTitle: 'Privé on-chain (silent payments)', + silentDesc: 'Eén naam, een vers adres voor elke betaling — on-chain via silent payments, of Lightning vanaf hetzelfde record. Niets om te hergebruiken, niets om te linken.', + silentCopyName: 'Naam kopiëren', + silentCopied: 'Gekopieerd', + silentWallets: 'Vereist een wallet die betaalnamen / silent payments ondersteunt: Sparrow, Cake, Dana, Phoenix, BlueWallet, Wasabi, Nunchuk of BitBox02.', + wayLightningTitle: 'Direct & openbaar', + wayLightningDesc: 'Zap SkateSpots, of betaal stilletjes. Werkt zonder inloggen.', + waySilentTitle: 'Privé on-chain', + waySilentDesc: 'Een silent-payments-naam — een nieuw adres voor elke betaling.', + wayAngorTitle: 'Financier de bouw', + wayAngorDesc: 'Angor — gefaseerde uitgave, terugbetaalbaar boven 100k sats.', + donateTitle: 'Steun SkateSpots', + donateDesc: 'Drie kanalen, drie redenen — kies wat bij je past. Elke sat houdt de kaart gratis, advertentievrij en opensource.', + donatePageLink: 'Open de eenvoudige doneerpagina', + updatedAt: 'Bijgewerkt {{when}}', + tiersNote: 'Niveaus: Supporter onder 100k sats · Mecenas 100k–1M · Legende 1M+', + tierEmpty: 'Nog niemand — wees de eerste.', + joinSupporters: 'Sluit je aan bij {{count}} supporters', + showAll: 'Alle {{count}} tonen', + showLess: 'Minder tonen', + impactSeeStats: 'Bekijk het volledige plaatje →', + impactAsOf: 'live vanaf de community-relays', + anonymousBacker: 'Anonieme supporter', + beFirstBacker: 'Nog geen publieke supporters — wees de eerste.', + backersTotal: '{{count}} supporters · {{amount}} sats opgehaald', + verifiedOnChain: 'On-chain geverifieerd', + supportedBy: 'Steun van {{count}}', + tierSupporter: 'Supporter', + tierPatron: 'Mecenas', + tierLegend: 'Legende', + topZappers: 'Zapten SkateSpots', + topZappersDesc: 'Skaters die een publieke zap rechtstreeks naar het project stuurden. Stille betalingen staan er niet bij.', + paysFor: 'Waar je steun aan betaalt', + paysForDesc: 'Waar elke sat naartoe gaat — geen salarissen, geen kantoren, geen advertenties.', + payRelay: 'Relay-hosting', + payDomain: 'Domein & TLS', + payAi: 'AI / ContextVM-node', + payDev: 'Ontwikkeltijd', + payOps: 'Operationeel beheer', + payMarketing: 'Marketing', + payRelayDesc: 'Houdt de kaart online en veerkrachtig.', + payDomainDesc: 'De naam, het certificaat, de beveiligde verbinding.', + payAiDesc: 'Sasquatch, de communitygids.', + payDevDesc: 'SkateSpots bouwen en repareren.', + payOpsDesc: 'Het onglamoureuze werk dat het draaiende houdt.', + payMarketingDesc: 'Nieuwe lokale scenes en skateshops bereiken.', + impact: 'Impact tot nu toe', + impactDesc: 'Wat de community heeft gebouwd — gefinancierd door skaters.', + impactSpots: 'Spots', + impactCrews: 'Crews', + impactEvents: 'Evenementen', + impactLab: 'Lab-profs', + impactShops: 'Shops', + impactMappers: 'Mappers', + support: 'Steun', + supportDesc: 'Financier SkateSpots op Angor — gedecentraliseerde, on-chain Bitcoin-crowdfunding. Geen tussenpersoon, geen KYC.', + collaborators: 'Medewerkers', + collaboratorsDesc: 'Mensen die SkateSpots actief bouwen — ontwikkelaars, ontwerpers, relay-operators.', + partners: 'Partners', + partnersDesc: 'Organisaties en projecten waarmee we nauw samenwerken.', + friends: 'Vrienden', + friendsDesc: 'Mensen met wie we een goede klik hebben.', + backTitle: 'Steun het project op Angor', + backDesc: 'Angor is gedecentraliseerde, on-chain Bitcoin-financiering gebouwd op Nostr — je geld blijft onder jouw controle, wordt in fasen vrijgegeven, zonder bewaarder die de pot beheert. Bijdragen tot 100.000 sats werken als een donatie (geen herstel-handshake); grotere bedragen zijn investeringen waarvan onbesteed geld kan worden teruggehaald. Elke sat gaat naar ontwikkeling, relay-hosting en het gratis houden van SkateSpots voor elke skater op aarde.', + donateNote: 'Liever een rechtstreekse donatie? ⚡ Zap hieronder — niets terug te betalen, niets terug te halen.', + openAngor: 'Angor openen', + orZap: 'of ⚡ zap elke spot, crew of maker direct in de app', + wantCollaborate: 'Wil je meewerken?', + wantCollaborateDesc: 'Ontwikkelaars, ontwerpers, skaters met vaardigheden — neem contact op.', + viewNostrHub: 'Bekijk op NostrHub', + wantPartner: 'Wil je partner worden van SkateSpots? Neem contact op via Nostr.', + comingSoon: 'Binnenkort', + wantListed: 'Wil je hier vermeld worden?', + wantListedDesc: 'Stuur een logo (PNG/WebP, transparante achtergrond, min. 200×200px) en je URL via DM op Nostr, alleen als je de juiste vibe hebt.', + whyTitle1: 'Waarom we', + whyTitle2: 'steun nodig hebben', + whyDesc: 'SkateSpots is 100% gratis, opensource en gebouwd op Nostr — een gedecentraliseerd protocol zonder centrale server die het kan uitschakelen. Geen advertenties, geen dataverkoop, geen investeerders. Elke sat gaat rechtstreeks naar ontwikkeling, relay-hosting en het gratis houden van dit alles voor elke skater op aarde.', + why1Title: 'Nostr-native', + why1Desc: 'Geen centrale server. Je data staat op relays die jij kiest.', + why2Title: 'Bitcoin-aangedreven', + why2Desc: 'Verdien sats met het in kaart brengen van spots. Geef ze uit bij lokale shops.', + why3Title: 'Voor altijd gratis', + why3Desc: 'Open source, geen paywalls, geen tracking, geen durfkapitaal.', + thankYou: 'Bedankt. Elke sat houdt de spots op de kaart. 🛹⚡', + license: 'Licentie', + faq: 'FAQ', + }, + admin: { + confirmed: 'Bevestigd', + title: 'Beoordelingswachtrij', + subtitle: 'Spots, shops, evenementen, tours en gear die de junk-signalen triggeren. Verbergen en Bevestigen zijn zachte, omkeerbare labels; meldingen komen eerst. Niets wordt verwijderd.', + tabReports: 'Meldingen', + tabSpots: 'Spots', + tabShops: 'Shops', + tabEvents: 'Evenementen', + tabTours: 'Tours', + tabGear: 'Uitrusting', + tabCrews: 'Crews', + tabLab: 'Lab', + tabClaims: 'Claims', + nothingToReview: 'Niets te beoordelen — niets van dit soort triggert de junk-signalen.', + hideActioned: 'Afgehandelde verbergen', + showActioned: 'Afgehandelde tonen ({{count}})', + undoAll: 'Alle {{count}} ongedaan maken', + undoAllTitle: 'Elk oordeel in dit tabblad ongedaan maken?', + undoAllDesc: 'Hiermee wordt elk item teruggezet naar neutraal — niet verborgen, niet bevestigd. Er wordt één publiek label per item gepubliceerd, dus met Amber krijg je {{count}} goedkeuringsschermen.', + undoCount: '{{count}} ongedaan maken', + undo: 'Ongedaan maken', + confirm: 'Bevestigen', + hide: 'Verbergen', + hideIt: 'Verberg het', + hideForEveryone: 'Dit voor iedereen verbergen?', + hideForEveryoneDesc: 'Hiermee wordt het item uit browsen en zoeken verwijderd voor elke SkateSpots-gebruiker. Het is een publiek, omkeerbaar label — je kunt het via deze wachtrij ongedaan maken.', + hidden: 'Verborgen', + hiddenDesc: 'Verwijderd uit de app via een publiek label. Omkeerbaar.', + couldNotHide: 'Kon niet verbergen', + notASpot: 'Geen skatespot', + lookAtIt: 'Bekijk het', + }, + profile: { + nip05Verified: 'NIP-05 geverifieerd', + nip05NotVerified: 'NIP-05 niet geverifieerd tegen deze sleutel', + message: 'Bericht', + zapsReceived: 'zaps ontvangen', + memberSince: 'Lid sinds', + badges: 'Badges', + sponsorsSupport: 'Sponsors & steun', + skater: 'Skater', + stance: 'Stance', + skating: 'Skaten', + homeSpot: 'Thuisspot', + basedIn: 'Gevestigd in', + addSkateDetails: 'Voeg je skategegevens toe', + addSkateDetailsDesc: 'Stel je stance, stijlen en niveau in om in de Skaters-directory te verschijnen.', + spotsAdded: 'Toegevoegde spots', + shopsAdded: 'Toegevoegde shops', + noSpots: 'Je hebt nog geen spots toegevoegd', + noSpotsDesc: 'Zet je lokale spot op de kaart →', + stash: 'Stash', + gear: 'Uitrusting', + crews: 'Crews', + info: 'Info', + lightning: 'Lightning', + silentPayment: 'Silent Payment', + coordinator: 'Coördinator', + coordinatorAdded: 'Coördinator toegevoegd', + add: 'Toevoegen', + messagePrivately: 'Privé berichten sturen', + founder: 'Oprichter', + member: 'Lid', + supportSkater: 'Steun deze skater', + supportSkaterDesc: 'Stuur een tip om ze te bedanken voor hun bijdragen', + }, + index: { + joinCommunity: 'Sluit je aan bij de community om spots toe te voegen, evenementen aan te maken en meer', + topZapped: 'TOP GEZAPT', + topZappedDesc: 'Meest gesteunde spots deze maand', + leaderboard: 'Ranglijst', + newHere: 'NIEUW HIER?', + newHereDesc: 'Maak een gratis account aan om spots toe te voegen, evenementen bij te wonen, contact te leggen met skaters en deel uit te maken van de community. Geen e-mail nodig.', + followFounder: 'Volg de oprichter', + followFounderDesc: 'Houd de avatar 3 seconden vast om te volgen en op de hoogte te blijven van nieuwe functies en evenementen!', + createAccount: 'Account aanmaken', + accountWorks: 'Je account werkt in alle apps in het netwerk', + footerTagline: 'Open source • Eigendom van de community • Geen advertenties', + }, + stash: { + title: 'Mijn Stash', + loginDesc: 'Je privé-uitrustingsinventaris. Houd bij wat je bezit, stel prijzen in en deel selectief met handelaars.', + encrypted: 'Versleuteld', + syncsEverywhere: 'Synchroniseert overal', + p2pTrading: 'P2P-ruilen', + encryptionRequired: 'Versleuteling vereist', + encryptionRequiredDesc: 'Je Stash is versleuteld voor privacy. Gebruik een signer die NIP-44-versleuteling ondersteunt (zoals Alby, nos2x of Amber).', + learnSigners: 'Meer over signers', + select: 'Selecteren', + stash: 'Stash', + wishlist: 'Verlanglijst', + allCategories: 'Alle categorieën', + sortNewest: 'Nieuwste', + sortValue: 'Waarde', + sortCondition: 'Staat', + sortAz: 'A–Z', + friendsOnly: 'Alleen vrienden', + addToWishlist: 'Aan verlanglijst toevoegen', + addItemToStash: 'Item aan Stash toevoegen', + addItem: 'Item toevoegen', + editItem: 'Item bewerken', + publicStash: 'Openbare Stash', + listView: 'Lijstweergave', + gridView: 'Rasterweergave', + uploading: 'Uploaden...', + addPhotos: 'Foto\'s toevoegen', + wishlistReqPlaceholder: 'Specifieke eisen...', + itemDescPlaceholder: 'Beschrijf het item, eventuele schade...', + itemsCount: '{{count}} item(s)', + wishlistEmpty: 'Verlanglijst leeg', + wishlistEmptyDesc: 'Voeg uitrusting toe waar je naar op zoek bent — we matchen je met de Stashes van vrienden.', + stashEmpty: 'Je Stash is leeg', + stashEmptyDesc: 'Begin met het bijhouden van je uitrusting. Decks, trucks, schoenen — voeg het één keer toe, overal toegankelijk via Nostr.', + noMatch: 'Geen items gevonden', + noMatchDesc: 'Probeer je filters aan te passen.', + backupTransfer: 'Back-up & overdracht', + backupDesc: 'Je Stash is versleuteld op Nostr. Bewaar een kopie die je zelf beheert — een dode relay of een nieuw account kan je uitrustingslijst niet kwijtraken.', + exportTitle: 'Versleutelde back-up', + exportDialogDesc: 'Sla {{count}} item(s) op in een bestand. Versleutel het zodat een uitgelekt bestand geen lek is.', + modePassword: 'Wachtwoord', + modeKey: 'Mijn sleutel', + password: 'Wachtwoord', + confirmPassword: 'Wachtwoord bevestigen', + passwordHint: 'Gebruik minstens 8 tekens. Er is geen herstel — vergeet het niet.', + keyModeHint: 'Versleuteld met je Nostr-sleutel. Alleen die sleutel kan het openen — niets om te onthouden.', + exportPlaintext: 'Exporteren zonder versleuteling', + pwTooShort: 'Gebruik minstens 8 tekens.', + pwMismatch: 'Wachtwoorden komen niet overeen.', + exportFailed: 'Kon de back-up niet aanmaken.', + unlockTitle: 'Back-up ontgrendelen', + unlockDesc: 'Deze back-up is met een wachtwoord beveiligd.', + unlock: 'Ontgrendelen', + unlockFailed: 'Kon de back-up niet ontgrendelen.', + show: 'Tonen', + hide: 'Verbergen', + strength: 'Wachtwoordsterkte', + strengthWeak: 'Zwak', + strengthFair: 'Redelijk', + strengthGood: 'Goed', + strengthStrong: 'Sterk', + filenameWillSave: 'Wordt opgeslagen als {{name}}', + export: 'Exporteren', + import: 'Importeren', + exported: 'Stash geëxporteerd', + exportedDesc: '{{count}} items opgeslagen in een bestand.', + noItemsInFile: 'Geen items gevonden in dat bestand.', + noValidItems: 'Geen geldige items gevonden in dat bestand.', + imported: '{{count}} items geïmporteerd', + importSkipped: '{{count}} overgeslagen (al in je Stash).', + importAdded: 'Toegevoegd aan je Stash.', + importFailed: 'Importeren mislukt', + couldNotRead: 'Kon dat bestand niet lezen.', + updateFailed: 'Kon je Stash niet bijwerken', + updatedCount: '{{count}} items bijgewerkt', + markedForSale: '{{count}} te koop gezet', + unmarkedCount: '{{count}} niet meer te koop', + removedCount: '{{count}} items verwijderd', + selectedCount: '{{count}} geselecteerd', + selectAll: 'Alles selecteren', + visibilityPublic: 'Openbaar', + visibilityPrivate: 'Privé', + forSale: 'Te koop', + remove: 'Verwijderen', + bulkDeleteTitle: '{{count}} items verwijderen?', + bulkDeleteDesc: 'Hiermee wordt je versleutelde Stash in één handtekening herschreven en dit kan hier niet ongedaan worden gemaakt. Exporteer eerst een back-up als je twijfelt.', + deleteTitle: 'Uit je Stash verwijderen?', + deleteDesc: '“{{title}}” wordt uit je Stash verwijderd', + deleteDescPublic: ' en van je openbare showcase gehaald', + deleteUndone: '. Dit kan niet ongedaan worden gemaakt.', + deleteDescGeneric: 'Dit item wordt uit je Stash verwijderd. Dit kan niet ongedaan worden gemaakt.', + listOnMarketplace: 'Op marktplaats plaatsen', + noPriceSet: 'Geen prijs ingesteld', + categoryLabel: 'Categorie', + photosLabel: 'Foto\'s', + willingToSell: 'Bereid te verkopen', + willingToTrade: 'Bereid te ruilen', + whereIsThisItem: 'Waar is dit item?', + visibilityLabel: 'Zichtbaarheid', + visibilityPrivateOnlyYou: 'Privé - Alleen jij', + visibilityFriendsMutual: 'Vrienden - Wederzijdse follows', + visibilityPublicAnyone: 'Openbaar - Iedereen', + visibilityFriends: 'Vrienden', + brandLabel: 'Merk', + sizeLabel: 'Maat', + descriptionLabel: 'Beschrijving', + conditionLabel: 'Staat', + itemName: 'Itemnaam', + saveChanges: 'Wijzigingen opslaan', + listItemDialogTitle: '“{{title}}” plaatsen', + pickUpWhere: 'Waar kunnen kopers dit item ophalen?', + linkToSpot: 'Koppelen aan een skatespot', + linkToSpotDesc: 'Best voor lokale verkoop • Verschijnt op de spotpagina & kaart', + recommended: 'Aanbevolen', + noSpecificSpot: 'Geen specifieke spot', + noSpecificSpotDesc: 'Alleen zichtbaar op de marktplaatspagina', + tipLinkedSpots: '💡 Tip: advertenties die aan spots zijn gekoppeld, zijn makkelijker te vinden voor lokale skaters.', + anyoneCanSee: 'Iedereen kan deze op je profiel zien.', + seeWhatOthersSee: 'Bekijk wat anderen zien', + inventory: 'Inventaris', + publicWantsNote: 'Openbare wants worden als “gezocht”-advertenties op de marktplaats geplaatst, zodat verkopers je kunnen vinden.', + howItWorks: 'Hoe het werkt', + tapToMarketplace: 'Tik om naar de marktplaats te gaan →', + viewWishlist: 'Verlanglijst bekijken', + tipEditItems: 'Bewerk items met de pennknop', + tipListForSale: 'Zet te koop met de winkelknop', + tipAddPhotos: 'Voeg foto\'s toe voor betere ruilvoorstellen', + tipKeySyncs: 'Nostr-sleutel synchroniseert naar alle apparaten', + itemsReadyToSell: '{{count}} item(s) klaar om te verkopen', + }, + }, +}; export default nlBatch4; diff --git a/src/i18n/nl/batch5.ts b/src/i18n/nl/batch5.ts index 0e03c45..13d6ddc 100644 --- a/src/i18n/nl/batch5.ts +++ b/src/i18n/nl/batch5.ts @@ -1,4 +1,1597 @@ -/** nl — batch 5. Filled by the translation pass; empty until then. */ -const nlBatch5 = {}; +/** nl — batch 5. Filled by the 2026-10-07 Dutch translation pass. */ +const nlBatch5 = { + labUi: { + activeCount: "{{count}} actief", + addMusicProfile: "Muziekprofiel toevoegen", + all: "Alle", + clearAll: "Alles wissen", + collective: "Collectief", + filters: "Filters", + following: "Volgend", + getRiderCard: "Rider Card ophalen", + judgeEvents: "Events jureren", + justASkater: "Gewoon een", + labForServices: "The Lab is voor diensten. Blader en sluit je aan bij de hele skatercommunity", + loginToOffer: "Log in om diensten aan te bieden", + newest: "Nieuwste", + noResults: "Geen resultaten", + offer: "Aanbod", + offerBuilding: "Bouwwerk aanbieden", + offerCoaching: "Coaching aanbieden", + offerCuts: "Montage aanbieden", + offerDesignArt: "Design / Art aanbieden", + offerEditing: "Editing aanbieden", + offerFilming: "Filmen aanbieden", + offerGraffiti: "Graffiti aanbieden", + offerPhotography: "Fotografie aanbieden", + offerServices: "Diensten aanbieden", + yourProfiles: "Je Lab-profielen", + preview: { + button: "Voorbeeld", + title: "Live voorbeeld", + desc: "Zo ziet je {{noun}}-profiel eruit zodra het is gepubliceerd.", + untitled: "Je naam", + noBio: "Nog geen bio — voeg een regel toe over wat je aanbiedt.", + years: "{{count}} jaar ervaring", + portfolio: "Portfolio", + note: "Alleen voorbeeld — er is nog niets gepubliceerd.", + }, + draft: { + title: "Je hebt een niet-opgeslagen concept", + body: "Ga verder waar je gebleven was — er wordt niets gepubliceerd tot je op Publiceren drukt.", + resume: "Concept hervatten", + discard: "Concept weggooien", + }, + progress: { + title: "Profielvolledigheid", + count: "{{done}} van {{total}} klaar", + photo: "Foto", + bio: "Bio", + skills: "Vaardigheden", + rate: "Tarief", + location: "Locatie", + contact: "Contact", + }, + wizard: { + identity: "Identiteit", + offer: "Wat je aanbiedt", + rates: "Tarieven", + contact: "Contact", + media: "Media", + }, + offerTattoo: "Tattoo aanbieden", + offerTraining: "Training / Fysio aanbieden", + organizeEvents: "Events organiseren", + resultsMany: "{{count}} resultaten", + resultsOne: "{{count}} resultaat", + searchCityPlaceholder: "Stad…", + searchNamePlaceholder: "Naam, bio…", + showResults: "Resultaten tonen", + showResultsActive: "Resultaten tonen · {{count}} actief", + skaterWord: "skater", + sortBy: "Sorteren op", + theCrew: "The Crew", + topRated: "Best beoordeeld", + trusted: "Vertrouwd", + trustLevel: "Vertrouwensniveau", + yearsExp: "{{count}}jr ervaring", + tabCoaches: "Coaches", + tabFilmers: "Filmers", + tabPhoto: "Foto", + tabEditors: "Editors", + tabBuilders: "Builders", + tabArtists: "Artiesten", + tabGraffiti: "Graffiti", + tabTattoo: "Tattoo", + tabTrainers: "Trainers", + tabMusic: "Muziek", + tabJudges: "Juryleden", + tabOrganizers: "Organisatoren", + tabBarbers: "Kappers", + filterSkillsToLearn: "Vaardigheden om te leren", + filterContentType: "Type content", + filterEquipmentStyle: "Uitrusting & stijl", + filterServices: "Diensten", + filterCamera: "Camera", + filterLenses: "Lenzen", + filterLighting: "Belichting", + filterSupportRig: "Support & rig", + filterStyle: "Stijl", + filterWhatTheyBuild: "Wat ze bouwen", + filterMaterialsTrade: "Materialen & vak", + filterProjectScale: "Projectschaal", + filterWhatTheyMake: "Wat ze maken", + filterMedium: "Medium", + filterSoftwareTools: "Software & tools", + filterWorkContext: "Werkcontext", + filterMethod: "Methode", + filterFocus: "Focus", + filterInjuriesTreated: "Behandelde blessures", + filterCredentialsSetting: "Kwalificaties & setting", + filterGenre: "Genre", + filterInstrumentsRole: "Instrumenten & rol", + filterEventFormats: "Eventformats", + filterSpecialty: "Specialiteit", + filterLevelCircuit: "Niveau / circuit", + filterEventTypes: "Eventtypes", + filterWhatYouHandle: "Wat je regelt", + filterScale: "Schaal", + filterWhatTheyOffer: "Wat ze aanbieden", + filterSignatureStyles: "Kenmerkende stijlen", + filterSetting: "Setting", + filterEditType: "Type montage", + role: { + coach: "Coach", + filmer: "Filmer", + builder: "Builder", + editor: "Video-editor", + photographer: "Photographer", + skater: "Skater", + }, + empty: { + footer: "Vragen? Bekijk de FAQ →", + loginSuffix: "om een profiel aan te maken.", + coachesTitle: "Nog geen coaches", + coachesBody: "Wees de eerste die skateboardcoaching in jouw omgeving aanbiedt.", + filmersTitle: "Nog geen filmers", + filmersBody: "Wees de eerste die skatefilmen aanbiedt — clips, volledige parts, wedstrijdverslag en meer.", + photographersTitle: "Nog geen photographers", + photographersBody: "Wees de eerste die skatefotografie in jouw omgeving aanbiedt — actiefoto's, sequenties, editoriaal en meer.", + editorsTitle: "Nog geen video-editors", + editorsBody: "Wees de eerste die diensten voor het monteren van skatevideo's aanbiedt.", + buildersTitle: "Nog geen builders", + buildersBody: "Wees de eerste die je ramp, park of DIY-bouw vermeldt — beton, hout, rails en meer.", + artistsTitle: "Nog geen artiesten", + artistsBody: "Wees de eerste die boardgraphics, logo's, posters en merch voor de scene aanbiedt.", + graffitiTitle: "Nog geen graffitikunstenaars", + graffitiBody: "Wees de eerste die pieces, muurschilderingen en skateparkkunst in jouw omgeving aanbiedt.", + tattooTitle: "Nog geen tattookunstenaars", + tattooBody: "Wees de eerste tattookunstenaar uit de skatecultuur die zich vermeldt — flash, custom, fine line en meer.", + trainersTitle: "Nog geen trainers", + trainersBody: "Wees de eerste trainer of fysio die skaters helpt sterk te worden en gezond te blijven.", + musiciansTitle: "Nog geen muzikanten", + musiciansBody: "Skate en maak je muziek? Voeg je band of soloproject toe — genres, instrumenten en links.", + judgesTitle: "Nog geen juryleden", + judgesBody: "Organiseer je een eerlijke wedstrijd? Meld je aan om Game of S.K.A.T.E., best trick jams, wedstrijden en tourstops te jureren.", + organizersTitle: "Nog geen organisatoren", + organizersBody: "Organiseer je jams, comps, meetups of demo's? Meld je aan zodat skaters je kunnen vinden en boeken.", + barbersTitle: "Nog geen kappers", + barbersBody: "Knip je haar voor skaters? Vermeld je stoel of mobiele service zodat de scene een frisse coupe kan krijgen.", + }, + become: { + addNip05: "NIP-05 toevoegen in Instellingen", + backToLab: "Terug naar The Lab", + bioWorkLabel: "Bio / Over je werk", + checkContact: "Controleer je contactgegevens", + cityArea: "Stad / omgeving", + cityCountry: "Stad, land", + connectWallet: "Wallet koppelen", + connectWalletNwc: "Wallet koppelen met NWC", + contactInfo: "Contactgegevens", + contactInfoDesc: "Hoe klanten je kunnen bereiken (allemaal optioneel, maar aanbevolen)", + coordinatesOptional: "Coördinaten (optioneel)", + email: "E-mail", + failedToPublish: "Publiceren mislukt", + fromNostrProfile: "Vanuit je Nostr-profiel", + geolocationUnsupported: "Geolocatie wordt niet ondersteund", + getting: "Ophalen…", + headline: "Kop", + headlineHint: "Wordt als titel op je Lab-kaart getoond — bijv. \u201c{{example}}\u201d. Standaard je naam.", + imageUploaded: "Afbeelding geüpload", + instagram: "Instagram", + invalidEmail: "Voer een geldig e-mailadres in.", + invalidPortfolio: "Voer een geldige portfolio-URL in.", + invalidWebsite: "Voer een geldige website-URL in.", + latitude: "Breedtegraad", + learnHow: "Zo werkt het", + locationError: "Locatiefout", + locationFound: "Locatie gevonden", + loginRequired: "Inloggen vereist", + loginRequiredDesc: "Je moet inloggen om een {{role}}-profiel aan te maken.", + loginRequiredDescCraft: "Je moet inloggen om een {{noun}}-profiel aan te maken.", + longitude: "Lengtegraad", + nip05Recommended: "NIP-05-verificatie aanbevolen", + nip05RecommendedDesc: "Verifieer je identiteit om vertrouwen bij klanten op te bouwen.", + noWallet: "Geen wallet gekoppeld", + otherSocial: "Overige socials", + paymentSetup: "⚡ Betalingsinstelling vereist", + phoneNumber: "Telefoonnummer", + profilePhoto: "Profielfoto", + profilePublished: "Je profiel is gepubliceerd.", + publishing: "Publiceren...", + socialMedia: "Social media", + tip: "💡 Tip: de meeste Lightning-wallets ondersteunen NWC (Alby, Minibits, Zeus, Coinos).", + tipWithTime: "💡 Tip: de meeste Lightning-wallets ondersteunen NWC (Alby, Minibits, Zeus, Coinos). Instellen kost 30 seconden.", + upload: "Uploaden", + uploadFailed: "Uploaden mislukt", + uploadImage: "Afbeelding uploaden", + uploading: "Uploaden…", + useCurrentLocation: "Huidige locatie gebruiken", + useMyLocation: "Mijn locatie gebruiken", + usingNwc: "Nostr Wallet Connect gebruiken", + usingWebln: "WebLN-browserextensie gebruiken", + walletConnected: "Wallet gekoppeld — klaar om betalingen te ontvangen!", + website: "Website", + yearsExperience: "Jaren ervaring", + }, + coachForm: { + anonymous: "Anonieme coach", + bioLabel: "Bio / Coachingsfilosofie", + bioPlaceholder: "Je achtergrond, lesstijl...", + create: "COACHPROFIEL AANMAKEN", + created: "Coachprofiel aangemaakt!", + createPro: "PRO-COACHPROFIEL AANMAKEN", + dmNote: "💬 Leerlingen kunnen je direct berichten via de versleutelde berichten van SkateSpots", + heading: "Word coach", + headlineExample: "Skate Coach Berlijn", + hourlyRate: "Uurtarief", + identity: "Je coachidentiteit", + nip05Reason: "Voeg een NIP-05-identificatie toe om je identiteit te verifiëren en vertrouwen bij leerlingen op te bouwen — het laat zien dat je een legitieme coach bent.", + paymentDesc: "Om lesbetalingen van leerlingen te ontvangen, moet je een Lightning-wallet koppelen. Leerlingen zappen je direct voor coachingssessies.", + profileDesc: "Vertel leerlingen over je ervaring", + profileTitle: "Coachprofiel", + ratePlaceholder: "5000 sats/uur", + selectSkill: "Selecteer minstens één vaardigheid.", + skillsLabel: "Vaardigheden die ik leer * (selecteer minstens één)", + skillsRequired: "Vaardigheden vereist", + formatsLabel: "Sessieformats", + formatsHint: "Hoe je coaching geeft.", + levelsLabel: "Niveaus die je lesgeeft", + agesLabel: "Leeftijdsgroepen", + credentialsLabel: "Kwalificaties & veiligheid", + credentialsHint: "Zelf opgegeven — SkateSpots verifieert deze niet.", + languagesLabel: "Gesproken talen", + languagesHint: "Voeg de talen toe waarin je les kunt geven.", + languagePlaceholder: "bijv. Nederlands, English", + availabilityLabel: "Beschikbaarheid", + bookingLabel: "Boekingslink", + bookingHint: "Optioneel — een pagina waar leerlingen kunnen boeken en betalen.", + galleryLabel: "Portfoliofoto's", + galleryHint: "Toon echte sessies, leerlingen en spots (max. 12).", + galleryAdd: "Portfoliofoto's toevoegen", + galleryUploaded: "{{count}} foto('s) geüpload", + videoLabel: "Highlight reel", + videoHint: "Optioneel — een YouTube- of Instagram-video van je coaching.", + formatOneOnOne: "1-op-1", + formatGroup: "Groep", + formatCamp: "Kamp", + formatVideo: "Video-analyse", + formatContestPrep: "Wedstrijdvoorbereiding", + formatParkLesson: "Parkles", + formatAdaptive: "Adaptief", + formatGirls: "Meidensessie", + formatAfterSchool: "Naschools", + levelBeginner: "Beginner", + levelIntermediate: "Gemiddeld", + levelAdvanced: "Gevorderd", + levelCompetition: "Competitie", + ageKids: "Kinderen", + ageTeens: "Tieners", + ageAdults: "Volwassenen", + ageSeniors: "Senioren", + certFirstAid: "EHBO", + certCpr: "Reanimatie", + certSafeguarding: "Kinderbescherming", + certBackgroundCheck: "Achtergrondcontrole", + certInsured: "Verzekerd", + certFederation: "Bondscoach", + certQualification: "Coachkwalificatie", + certJudge: "Wedstrijdjury", + certNoteLabel: "Overige kwalificaties (optioneel)", + certNotePlaceholder: "bijv. Skateboard GB Level 2, 8 jaar coaching…", + availWeekdays: "Doordeweeks", + availWeekends: "Weekenden", + availEvenings: "Avonden", + availAfterSchool: "Na school", + availHolidays: "Schoolvakanties", + availSeasonal: "Seizoensgebonden", + sectionWhatYouCoach: "Wat je coacht", + sectionCredentials: "Kwalificaties & veiligheid", + sectionAvailability: "Beschikbaarheid & boeken", + sectionWhereYouCoach: "Waar je coacht", + sectionPortfolio: "Portfolio", + rateAmountLabel: "Tarief", + rateCurrencySats: "sats", + rateCurrencyUsd: "USD", + rateCurrencyEur: "EUR", + rateCurrencyGbp: "GBP", + perHour: "per uur", + perSession: "per sessie", + perHalfDay: "per halve dag", + perDay: "per dag", + perCamp: "per kamp", + perProject: "per project", + perEvent: "per event", + perGig: "per optreden", + perShoot: "per shoot", + perPiece: "per stuk", + perCut: "per montage", + perMonth: "per maand", + availByAppointment: "Op afspraak", + rateNotesLabel: "Tariefnotities (optioneel)", + rateNotesPlaceholder: "Staffel, eerste sessie gratis, reiskosten inbegrepen…", + sectionPayments: "Betalingen", + paymentMethodsHint: "Hoe klanten je kunnen betalen. Dit is een verklaring — SkateSpots houdt nooit geld vast.", + payMethodCash: "Contant ter plaatse", + payMethodLightning: "Lightning", + payMethodCashu: "Cashu", + payMethodBank: "Bankoverschrijving", + payMethodOther: "Overig", + payWhatYouCanLabel: "Staffel / betaal wat je kunt", + bookingFeeLabel: "Boekingskosten (optioneel)", + bookingFeeHint: "Een kleine vergoeding die direct aan jou wordt betaald om een boeking te bevestigen. SkateSpots houdt deze niet vast en restitueert deze niet.", + paymentNoteLabel: "Betalingsnotitie (optioneel)", + paymentNotePlaceholder: "Eerste sessie gratis, reiskosten inbegrepen, betaal na de sessie…", + spotsDesc: "Selecteer spots waar je coachingssessies aanbiedt", + spotsLabel: "Spots waar je coacht", + tagline: "Deel je skateboardkennis", + update: "COACHPROFIEL BIJWERKEN", + updated: "Coachprofiel bijgewerkt!", + }, + filmerForm: { + anonymous: "Anonieme filmer", + bioPlaceholder: "Je achtergrond, stijl, uitrusting...", + camerasLabel: "Camera's & uitrusting * (selecteer minstens één)", + create: "FILMPROFIEL AANMAKEN", + created: "Filmprofiel aangemaakt!", + createPro: "PRO-FILMPROFIEL AANMAKEN", + dmNote: "💬 Klanten kunnen je direct berichten via de versleutelde berichten van SkateSpots", + gearHelper: "Vermeld je exacte camera's, lenzen en rigs — skaters vinden de setup belangrijk.", + gearLabel: "Wat in de tas zit (optioneel)", + gearPlaceholder: "bijv. Sony VX1000 + MK1 fisheye, Panasonic HVX200, DJI RS3 gimbal, GoPro Hero 12, Sennheiser-mic...", + heading: "Word filmer", + headlineExample: "Skate Filmer Berlijn", + identity: "Je filmeridentiteit", + nip05Reason: "Voeg een NIP-05-identificatie toe om je identiteit te verifiëren en vertrouwen bij klanten op te bouwen — het laat zien dat je een legitieme filmer bent.", + paymentDesc: "Om betalingen van klanten voor filmdiensten te ontvangen, moet je een Lightning-wallet koppelen. Klanten zappen je direct voor je werk.", + profileDesc: "Vertel klanten over je filmexpertise", + profileTitle: "Filmprofiel", + rate: "Tarief", + ratePlaceholder: "10000 sats/video", + reelLabel: "Reel / Portfolio", + selectService: "Selecteer minstens één dienst.", + selectSkill: "Selecteer minstens één filmvaardigheid.", + servicesLabel: "Aangeboden diensten * (selecteer minstens één)", + servicesRequired: "Diensten vereist", + skillsRequired: "Vaardigheden vereist", + spotsDesc: "Selecteer spots waar je filmdiensten aanbiedt", + spotsLabel: "Spots waar je filmt", + tagline: "Bied je skatevideofilmen aan — clips, lines, volledige parts & wedstrijdverslag", + update: "FILMPROFIEL BIJWERKEN", + updated: "Filmprofiel bijgewerkt!", + }, + editorForm: { + anonymous: "Anonieme editor", + bioPlaceholder: "Je montagestijl, achtergrond, noemenswaardige projecten…", + contactPortfolio: "Contact & portfolio", + create: "Editorprofiel publiceren", + created: "Editorprofiel aangemaakt!", + createPro: "Pro-editorprofiel publiceren", + editTypes: "Aangeboden montagetypes * (selecteer minstens één)", + hardware: "Hardware", + hardwarePlaceholder: "bijv. MacBook Pro M3, Sony FX3", + heading: "Word video-editor", + headlineExample: "Skatevideo-editor", + identity: "Je identiteit", + locationOptional: "Locatie (optioneel)", + loginDesc: "Log in om je video-editorprofiel aan te maken.", + phoneTelegram: "Telefoon / Telegram", + portfolioPlaceholder: "Portfolio (Vimeo, YouTube…)", + profileDesc: "Vertel de community over je montagestijl en vaardigheden", + profileTitle: "Editorprofiel", + published: "Je profiel is gepubliceerd op SkateSpots.", + rate: "Tarief / prijsstelling", + ratePlaceholder: "bijv. 50k sats/min, DM voor prijsopgave", + selectService: "Selecteer minstens één montagetype.", + servicesRequired: "Diensten vereist", + socialPlaceholder: "Instagram / social-handle", + software: "Software", + softwareHardware: "Software- & hardwarevaardigheden", + softwarePlaceholder: "bijv. DaVinci Resolve, Premiere", + tagline: "Bied je videomontagediensten aan de skatecommunity aan", + thumbnail: "Profiel- / showreelthumbnail", + update: "Editorprofiel bijwerken", + updated: "Editorprofiel bijgewerkt!", + walletConnected: "Wallet gekoppeld ✓", + walletDesc: "Ontvang direct Bitcoin ⚡-betalingen van klanten voor je montagewerk.", + walletTitle: "⚡ Lightning-wallet voor betalingen", + yearsExperience: "Jaren ervaring", + yearsPlaceholder: "bijv. 5 jaar", + }, + photoForm: { + anonymous: "Anonieme photographer", + bioPlaceholder: "Je achtergrond, stijl, wat je graag fotografeert...", + cameraLabel: "Camerabodies * (selecteer minstens één)", + cameraRequired: "Camera vereist", + contactDesc: "Hoe riders je werk kunnen zien en je kunnen bereiken (allemaal optioneel, maar aanbevolen)", + create: "FOTOGRAFISCH PROFIEL AANMAKEN", + created: "Fotografieprofiel aangemaakt!", + createPro: "PRO-FOTOGRAFISCH PROFIEL AANMAKEN", + dmNote: "💬 Riders kunnen je direct berichten via de versleutelde berichten van SkateSpots", + gearHelper: "Vermeld exacte bodies, lenzen en lampen — riders vinden het fijn de setup te kennen.", + gearPlaceholder: "bijv. Canon R6 II, 8-15mm fisheye, 70-200mm f/2.8, 2× Godox AD200, remote triggers, Manfrotto-statief...", + heading: "Word photographer", + headlineExample: "Skatefotografie", + identity: "Je photographeridentiteit", + lensesLabel: "Lenzen", + lightingLabel: "Belichtingsapparatuur", + nip05Reason: "Voeg een NIP-05-identificatie toe om je identiteit te verifiëren en vertrouwen bij klanten op te bouwen.", + paymentDesc: "Om betaald te worden voor shoots, koppel je een Lightning-wallet. Klanten zappen je direct voor je werk.", + portfolioLabel: "Portfolio / Instagram", + profileDesc: "Vertel riders over je oog, je uitrusting en je diensten", + profileTitle: "Fotografieprofiel", + ratePlaceholder: "20000 sats/shoot", + selectCamera: "Selecteer minstens één cameratype waarmee je fotografeert.", + selectService: "Selecteer minstens één dienst die je aanbiedt.", + servicesLabel: "Aangeboden diensten * (selecteer minstens één)", + servicesRequired: "Diensten vereist", + spotsDesc: "Selecteer spots waar je fotografie aanbiedt", + spotsLabel: "Spots waar je fotografeert", + styleLabel: "Fotostijl", + supportLabel: "Support & rig", + tagline: "Leg de sessies vast — bied je skatefotografie aan", + update: "FOTOGRAFISCH PROFIEL BIJWERKEN", + updated: "Fotografieprofiel bijgewerkt!", + }, + builderForm: { + anonymous: "Anonieme builder", + bioLabel: "Bio / Over je bouwwerken", + bioPlaceholder: "Je crew, noemenswaardige bouwwerken, hoe je een project aanpakt...", + buildTypesLabel: "Wat je bouwt * (selecteer minstens één)", + buildTypesRequired: "Bouwtypes vereist", + cityBase: "Stad / basis", + contactPortfolio: "Contact & portfolio", + contactPortfolioDesc: "Hoe de scene je bouwwerken kan zien en je kan bereiken (allemaal optioneel, maar aanbevolen)", + create: "BUILDERPROFIEL AANMAKEN", + created: "Builderprofiel aangemaakt!", + createPro: "PRO-BUILDERPROFIEL AANMAKEN", + dmNote: "💬 Klanten kunnen je direct berichten via de versleutelde berichten van SkateSpots", + gearHelper: "Crews en klanten vinden het fijn je uitrusting en werkwijze te kennen.", + gearLabel: "Hoe je werkt / uitrusting (optioneel)", + gearPlaceholder: "bijv. Volledige betoncrew, eigen mixer + shotcrete-rig, mobiel lassen, wij regelen vergunningen en drainage...", + heading: "Word builder", + headlineExample: "Ramp- & parkbuilder", + identity: "Je builderidentiteit", + insured: "Gelicenseerd / verzekerd", + insuredHelper: "Relevant voor openbare park- & gemeentewerk", + logoPhoto: "Logo / foto", + materialsLabel: "Materialen & vakvaardigheden", + nip05Reason: "Voeg een NIP-05-identificatie toe om je identiteit te verifiëren en vertrouwen bij klanten op te bouwen.", + pastBuilds: "Eerdere bouwwerken / Instagram", + paymentDesc: "Om betaald te worden voor bouwwerken, koppel je een Lightning-wallet. Klanten zappen je direct voor je werk.", + profileDesc: "Vertel de scene wat je bouwt en hoe je werkt", + profileTitle: "Builderprofiel", + rateLabel: "Tarief / prijsbasis", + ratePlaceholder: "per m² / per project", + scaleLabel: "Projectschaal", + selectBuild: "Selecteer minstens één ding dat je bouwt.", + serviceArea: "Werkgebied", + serviceAreaPlaceholder: "bijv. Catalonië, reis door heel de EU", + spotsDesc: "Koppel spots en parken die je hebt gebouwd zodat mensen je werk op de kaart zien", + spotsLabel: "Spots die je hebt gebouwd", + tagline: "Stort het, las het, bouw het — vermeld je ramp- & parkbouw", + update: "BUILDERPROFIEL BIJWERKEN", + updated: "Builderprofiel bijgewerkt!", + yearsBuilding: "Jaren bouwen", + }, + skaterForm: { + backToSkaters: "Terug naar skaters", + bioHelperPulled: "Overgenomen uit je profiel — pas het aan voor je skaterkaart, of laat het zo.", + bioHelperShort: "Een korte intro voor je skaterkaart.", + bioPlaceholder: "Hoelang je skatet, wat je leuk vindt, waar je aan werkt…", + browseSpots: "Spots bekijken", + changePhoto: "Profielfoto wijzigen", + chipBio: "Bio", + chipPhoto: "Foto", + cityArea: "Stad / omgeving", + created: "Je staat op de kaart! 🛹", + custom: "Aangepast", + customHelper: "Je eigen label — wordt op je skaterkaart getoond in plaats van een voorinstelling.", + customPlaceholder: "bijv. OG, Weekend Warrior, Gestopt…", + discoverable: "Andere skaters kunnen je nu vinden.", + editFullProfile: "bewerk je volledige profiel", + fromProfile: "Vanuit je profiel", + heroEditPrefix: "Bewerk je", + heroJoinPrefix: "Sluit je aan bij de", + heroSuffix: "Directory", + homeHelper: "Typ het vrij, of koppel een echte spot van de kaart zodat mensen er naartoe kunnen.", + homePlaceholder: "Lokaal park / plein — of tik op \u201cSpots bekijken\u201d", + homeSpot: "Thuisspot", + layerEnd: "om ze overal aan te passen.", + layerIntro: "Dit is je", + layerMid: ", gebouwd op je Nostr-profiel. Je naam, foto, bio, lightning & verificatie komen daarvandaan —", + layerWord: "skatelaag", + level: "Niveau", + linked: "Gekoppeld aan een spot op de kaart", + loadingProfile: "Je profiel laden…", + loadingSpots: "Spots laden…", + locationHelper: "Helpt anderen skaters in hun buurt te vinden. Alleen een globale omgeving wordt gedeeld.", + loginToJoin: "Log in om mee te doen", + loginToJoinDesc: "Maak je skaterprofiel aan zodat de community je kan vinden.", + mappedSpot: "Gekoppelde spot", + noSpots: "Nog geen spots gevonden.", + noSpotsMatch: "Geen spots komen overeen met je zoekopdracht.", + openMap: "Open de kaart", + pickEverything: "Kies alles wat bij je stijl past.", + pickHomeSpot: "Kies je thuisspot", + pickStyles: "Kies je stijlen", + pickStylesDesc: "Kies minstens één ding dat je skatet.", + profilePic: "Profielfoto", + profilePicHelper: "Je skaterkaart gebruikt je Nostr-profielfoto — overal dezelfde afbeelding.", + publishingAs: "Publiceren als", + putOnMap: "Zet me op de kaart", + searchSpots: "Zoek spots op naam of stad…", + skateStory: "Jouw skateverhaal", + stance: "Stance", + unlinkSpot: "Spot ontkoppelen", + updateButton: "Mijn profiel bijwerken", + updated: "Profiel bijgewerkt!", + whatYouSkate: "Wat je skatet *", + yearsPlaceholder: "bijv. 8", + yearsSkating: "Jaren skaten", + yourProfilePic: "Je profielfoto", + zapsOn: "Zaps aan", + }, + skaters: { + clearSearch: "Zoekopdracht wissen", + community: "De community", + countMany: "skaters", + countOne: "skater", + editProfile: "Mijn skaterprofiel bewerken", + heroDesc: "Vind je mensen. Blader door de crew skaters die SkateSpots vertegenwoordigen — op stijl, stance, niveau en stad.", + nip05Verified: "NIP-05 geverifieerd", + noMatches: "Geen overeenkomsten", + noneDesc: "Wees de eerste die zich bij de directory aansluit en SkateSpots op de kaart zet.", + noneTitle: "Nog geen skaters", + noVerifiedMatch: "Geen geverifieerde skaters gevonden voor", + searchPlaceholder: "Zoek op naam, stad of npub…", + tryDifferentSearch: "Probeer een andere zoekopdracht of wis je filters.", + tryTurnOffVerified: "Probeer het filter \u201cGeverifieerd\u201d uit te zetten om iedereen te zien.", + verifiedFilterTitle: "Alleen skaters met een geverifieerde NIP-05-identiteit tonen", + }, + skaterCard: { + inDirectory: "Je staat in de skaterdirectory", + joinDesc: "Voeg je stance, stijlen & niveau toe zodat skaters je kunnen vinden.", + joinTitle: "Sluit je aan bij de skaterdirectory", + }, + crewsStrip: { + allCrews: "Alle crews", + memberMany: "{{count}} leden", + memberOne: "{{count}} lid", + title: "Crews in deze scene", + }, + labLink: { + coach: "Coach", + filmer: "Filmer", + editor: "Editor", + photographer: "Photographer", + builder: "Builder", + artist: "Artiest", + graffiti: "Graffiti", + tattoo: "Tattoo", + trainer: "Trainer", + musician: "Muzikant", + judge: "Jurylid", + barber: "Kapper", + organizer: "Organisator", + lab: "Lab", + linkedProfiles: "Gekoppelde Lab-profielen", + desc: "Run je ook een studio, coaching of bouwservice? Koppel je Lab-vermeldingen zodat mensen je crew kunnen inhuren. Optioneel. Wanneer het Lab-profiel ook terugkoppelt naar deze crew, tonen beide een groene", + descEnd: "badge.", + empty: "Je hebt nog geen Lab-profielen. Maak er een aan in The Lab om die hier te koppelen.", + }, + proUpgrade: { + goPro: "Go Pro", + optional: "· optioneel", + freeTo: "Gratis vermelden. Pro voegt een", + proBadge: "Pro-badge", + featuredPlacement: "uitgelichte plaatsing", + atTop: "bovenaan The Lab toe.", + active: "Actief", + benefit1: "Gouden \u201cPro\u201d-badge op je profiel & kaarten", + benefit2: "Als eerste uitgelicht wanneer skaters The Lab bekijken", + benefit3: "Steunt SkateSpots — geen advertenties, geen tussenpersonen", + platformOwner: "Platformeigenaar — Pro staat altijd aan.", + proActiveOne: "Pro actief · nog {{count}} dag. Je profiel wordt uitgelicht.", + proActiveMany: "Pro actief · nog {{count}} dagen. Je profiel wordt uitgelicht.", + context: "Je profiel blijft gratis live na het verlopen van Pro — je verliest alleen de badge & boost.", + }, + profilePreview: { + viewPublic: "Openbaar bekijken", + unnamed: "Naamloze skater", + noHandle: "Nog geen handle", + }, + pyramid: { + pyramidWord: "PYRAMIDE", + rankingsWord: "RANKINGS", + subtitle: "Topbijdragers in jouw stad", + yourRank: "Jouw rang", + keepContributing: "Blijf bijdragen om hoger te klimmen!", + topContributors: "Topbijdragers", + noContributors: "Nog geen bijdragers. Wees de eerste die een spot toevoegt of een event aanmaakt!", + spots: "Spots", + events: "Events", + total: "Totaal", + trust: "Vertrouwen", + }, + detail: { + joined: "Lid sinds", + about: "Over", + howWeWork: "Hoe we werken", + inTheBag: "In de tas", + hardware: "Hardware", + software: "Software", + eventsJudged: "Gejureerde events", + eventsOrganized: "Georganiseerde events", + spots: "Spots", + viewSpot: "Spot bekijken", + credentialsTitle: "Kwalificaties & veiligheid", + selfAttested: "Zelf opgegeven door de coach — niet geverifieerd door SkateSpots.", + formats: "Formats", + levels: "Niveaus", + ages: "Leeftijden", + languages: "Talen", + availability: "Beschikbaarheid", + bookSession: "Sessie boeken", + portfolio: "Portfolio", + watchReel: "Bekijk op {{platform}}", + paymentsTitle: "Betalingen", + payWhatYouCan: "Betaal wat je kunt", + bookingFee: "Boekingskosten", + payBookingFee: "Boekingskosten betalen", + bookingFeeNote: "Direct aan de coach betaald. SkateSpots houdt dit niet vast en restitueert het niet.", + bookingFeeNoRail: "Deze coach heeft geen Lightning-adres ingesteld, dus betalen in de app is niet mogelijk — neem contact op om de betaling te regelen.", + serviceArea: "Werkgebied", + licensedInsured: "Gelicenseerd / verzekerd", + studio: "Studio", + shopStudio: "Winkel / studio", + booksOpen: "Boekt open", + credentials: "Kwalificaties", + remoteOnline: "Op afstand / online beschikbaar", + graffitiCrew: "Graffiticrew", + act: "Act", + listen: "Luisteren", + upcomingGigs: "Aankomende optredens", + past: "Verleden", + experience: "Ervaring", + yearsCount: "{{count}} jaar", + rate: "Tarief", + contact: "Contact", + sendMessage: "Bericht sturen", + bookGig: "Boeken voor een optreden", + portfolioDomain: "Portfolio · {{domain}}", + manage: "Beheren", + admin: "Admin", + editProfile: "Profiel bewerken", + publishedTitle: "Je staat live", + publishedBody: "Je profiel is gepubliceerd naar The Lab. Deel het zodat skaters je kunnen vinden.", + manageRemove: "Verwijder je {{noun}}-profiel uit The Lab.", + adminTakeDown: "Dit {{noun}}-profiel verwijderen. Het wordt verborgen in heel SkateSpots.", + entityLabel: "{{noun}}-profiel", + deleteProfile: "Profiel verwijderen", + location: "Locatie", + servicesSkills: "Diensten & vaardigheden", + noun: { + coach: "coach", + filmer: "filmer", + editor: "video-editor", + photographer: "photographer", + builder: "builder", + artist: "artiest", + graffiti: "graffitikunstenaar", + tattoo: "tattookunstenaar", + trainer: "trainer", + musician: "muzikant", + judge: "eventjurylid", + organizer: "eventorganisator", + barber: "kapper", + profile: "profiel", + }, + skillsTitle: { + skills: "Vaardigheden", + servicesGear: "Diensten & uitrusting", + whatWeBuild: "Wat we bouwen", + whatTheyMake: "Wat ze maken", + stylesWork: "Stijlen & werk", + styles: "Stijlen", + focusSpecialties: "Focus & specialiteiten", + genresInstruments: "Genres & instrumenten", + formatsSpecialties: "Formats & specialiteiten", + servicesStyles: "Diensten & stijlen", + eventTypesServices: "Eventtypes & diensten", + }, + }, + rider: { + heroDesc: "Je verifieerbare skateridentiteit. Nostr-ondertekend, printklaar, onmogelijk te vervalsen.", + heroDesc2: "Verdien getuigde vaardigheidsbadges van andere skaters. Krijg toegangspassen voor parken. Deel je kaart overal.", + headerTagline: "Nostr-ondertekend · printklaar · QR-geverifieerd", + tabCard: "Mijn kaart", + tabBadges: "Badges", + tabAward: "Toekennen", + rendering: "Weergeven…", + shareCard: "Kaart delen", + savePng: "PNG opslaan", + print: "Afdrukken", + copyId: "ID kopiëren", + cardType: "Kaarttype", + licenseLabel: "Skaterlicentie", + licenseSub: "Je persoonlijke rideridentiteit", + parkLabel: "Parktoegang", + parkSub: "Geef passen uit als parkeigenaar", + theme: "Thema", + holoTitle: "Holografische glans", + holoDesc: "Geanimeerd foileffect", + cardDetails: "Kaartdetails", + skateStyle: "Skatestijl", + ridesFor: "Rijdt voor", + ridesForPlaceholder: "Lokale shop…", + sponsors: "Sponsors", + sponsorsPlaceholder: "Merken…", + showOnCard: "Op kaart tonen", + zaps: "Zaps ⚡", + skills: "Vaardigheden", + selected: "{{count}}/6 geselecteerd", + goldBadgesHint1: "Gouden badges op je kaart komen van andere skaters die getuige waren — zie de", + goldBadgesHint2: ".", + parkOwnersOnly: "Alleen voor parkeigenaren.", + parkOwnersDesc: "Geef deze uit met dezelfde Nostr-sleutel die je parkvermelding heeft gepubliceerd. Iedereen kan de QR scannen en de handtekening on-chain verifiëren — geen centrale autoriteit nodig.", + parkDetails: "Parkdetails", + parkName: "Parknaam", + parkNamePlaceholder: "The Berrics…", + riderName: "Ridernaam", + riderNamePlaceholder: "Naam op kaart", + riderNpub: "Nostr-ID van rider (npub)", + accessLevel: "Toegangsniveau", + validThru: "Geldig tot", + publishToNostr: "Publiceren naar Nostr", + badgesIntro: "Deze badges zijn getuigd en ondertekend door andere skaters op Nostr. Ze verschijnen als gouden ⭐-chips op je kaart.", + earnMore: "Wil je er meer verdienen? Skate voor iemand en vraag hen je trick te getuigen.", + awardSomeone: "Een badge aan iemand anders toekennen", + youSawIt: "Je zag het gebeuren", + youSawItDesc: "Onderteken het bewijs op Nostr. Het wordt deel van hun permanente record — cryptografisch gekoppeld aan jouw sleutel.", + skillsWitnessed: "Vaardigheden die je hebt gezien", + whereSeen: "Waar zag je het?", + optional: "(optioneel)", + signingOnNostr: "Ondertekenen op Nostr…", + awardBadge: "Badge toekennen", + addRiderSkill: "Voeg rider-npub + minstens één vaardigheid toe", + invalidNpub: "Ongeldige npub", + badgeAwarded: "🏅 Badge toegekend!", + badgeSent: "{{skills}} verzonden.", + failed: "Mislukt", + couldNotRender: "Kaart kon niet worden weergegeven", + popupBlocked: "Popup geblokkeerd", + popupBlockedDesc: "Sta popups voor deze site toe.", + linkCopied: "🔗 Link gekopieerd!", + enterRiderNpub: "Voer de npub van de rider in", + parkPublished: "✅ Parktoegangskaart gepubliceerd!", + publishFailed: "Publiceren mislukt", + noBadges: "Nog geen badges. Skate voor iemand en vraag hen je tricks te getuigen!", + showMore: "{{count}} meer tonen", + witnessedBy: "Gezien door", + at: "bij", + previewLicense: "Skaterlicentie", + previewSince: "Sinds {{year}}", + previewEvts: "Evts", + previewScan: "Scan om te verifiëren", + previewSkatepark: "Skatepark", + previewAccessPass: "Toegangspas", + previewMemberName: "Naam lid", + previewIssuedBy: "Uitgegeven door parkeigenaar · Nostr-ondertekend", + previewValidThru: "Geldig tot", + previewNostrVerified: "Nostr-geverifieerd", + }, + craftFields: { + detailsTitle: "Extra details", + deliverables: "Op te leveren resultaten", + turnaround: "Doorlooptijd", + surfaces: "Oppervlakken / muren", + maxSize: "Max. grootte", + setLength: "Setlengte", + techRider: "Tech Rider", + travel: "Reizen", + certifications: "Certificeringen", + insurance: "Verzekering", + permits: "Vergunningen", + deposit: "Aanbetaling", + minimum: "Minimum", + modalities: "Modaliteiten", + duration: "Afspraakduur", + drone: "Drone", + leadTime: "Levertijd", + warranty: "Garantie", + }, + craftForm: { + profileImage: "Profielafbeelding", + nameHeadline: "Naam / kop", + about: "Over", + aboutPlaceholder: "Vertel skaters over je {{noun}}-werk…", + required: "vereist", + nip05Title: "Voeg NIP-05 toe om vertrouwen op te bouwen", + nip05Desc: "Een NIP-05-identificatie helpt skaters verifiëren dat je de echte bent. Sterk aanbevolen voordat je je vermeldt.", + editingNote: "Je bestaande {{noun}}-profiel bewerken — publiceren vervangt het.", + location: "Locatie", + pinned: "📍 Vastgezet op kaart ({{lat}}, {{lng}})", + experienceYears: "Ervaring (jaren)", + expPlaceholder: "bijv. 5", + ratePlaceholder: "bijv. 20k sats / per project", + contactLinks: "Contact & links", + phoneOptional: "Telefoon (optioneel)", + emailOptional: "E-mail (optioneel)", + socialPlaceholder: "Social (Instagram, enz.)", + gettingPaid: "Betaald krijgen", + updateProfile: "Profiel bijwerken", + publishProfile: "Profiel publiceren", + rateLeftBlankNote: "Optioneel — laat dit leeg als het tarief hierboven voldoende is.", + sectionRequired: "{{section}} vereist", + sectionRequiredDesc: "Selecteer minstens één optie onder \"{{section}}\".", + updated: "Profiel bijgewerkt!", + created: "Profiel aangemaakt!", + headlineExample: "Skate Coach Berlijn", + }, + }, + socialUi: { + agentPanel: { + spot: "Spot", + event: "Event", + labPro: "Lab Pro", + gear: "Gear", + crew: "Crew", + description: "Kent deze crew — de jams, het roster & de open call — plus de bredere scene met live data.", + greeting: "Yo! Ik ben Sasquatch, de gids van {{crew}}. Vraag me over de crew — onze volgende jam, wie hem runt, waar we naar op zoek zijn — of de bredere scene.", + suggestion1: "Wat is onze volgende jam?", + suggestion2: "Wie runt deze crew?", + suggestion3: "Waar zijn we naar op zoek?", + suggestion4: "Beste spots bij ons in de buurt?", + suggestion5: "Wat is het weer om te skaten?", + thinking: "Sasquatch denkt na…", + placeholder: "Vraag over je lokale scene…", + disclaimer: "AI kan fout zitten — links gaan naar echte vermeldingen.", + }, + badge: { + upcomingOne: "{{count}} aankomend event", + upcomingMany: "{{count}} aankomende events", + comingOne: "{{count}} event komt eraan", + comingMany: "{{count}} events komen eraan", + }, + bell: { + youAreIn: "Je zit in {{crew}}! 🛹", + membershipConfirmed: "Lidmaatschap bevestigd.", + couldNotConfirm: "Kon niet bevestigen", + addedYouTo: "heeft je toegevoegd aan", + confirmToAppear: "Bevestig om als lid te verschijnen.", + notifications: "Meldingen", + notificationsNew: "Meldingen ({{count}} nieuw)", + unreadCount: "{{count}} ongelezen meldingen", + markRead: "Als gelezen markeren", + allClear: "Alles bij", + tabAll: "Alle", + tabTrades: "Trades", + tabSocial: "Sociaal", + tabNews: "Nieuws", + tabCrews: "Crews", + checkingUpdates: "Controleren op updates…", + checkingTrades: "Aanbiedingen en trades controleren…", + loadingDrops: "De nieuwste drops laden…", + emptyAll: "Aanbiedingen, trades, zaps, reacties, nieuwsbrief-drops en crewactiviteit verschijnen hier.", + emptyTrades: "Aanbiedingen, tegenaanbiedingen en tradebevestigingen komen hier terecht — of je nu verkoopt, koopt of ruilt.", + emptySocial: "Zaps, reacties, reposts, vermeldingen, antwoorden, event-RSVP's en hostupdates komen hier terecht.", + emptyNews: "Drops van de SkateSpots-nieuwsbrief komen hier terecht. Abonneer je op de nieuwsbriefpagina.", + emptyCrews: "Crew-uitnodigingen, collectiefverzoeken en lidmaatschapsverzoeken verschijnen hier.", + subscribeBanner: "Abonneer je om nieuwe drops in je bel te krijgen", + read: "Gelezen", + allCaughtUp: "Je bent helemaal bij", + }, + chat: { + hidden: "Verborgen", + hideMessageAria: "Dit bericht verbergen", + hideMessageTitle: "Bericht verbergen (admin)", + messageHidden: "Bericht verborgen", + messageHiddenDesc: "Voor iedereen verborgen in de crewchat.", + messageHideFailed: "Bericht verbergen mislukt", + encryptionUnavailable: "Versleuteling niet beschikbaar", + encryptionUnavailableDesc: "Je signer ondersteunt NIP-44-versleuteling niet. Werk je extensie bij.", + messageFailed: "Bericht mislukt", + couldNotSend: "Kon bericht niet verzenden.", + noOneToMessage: "Nog niemand om te berichten", + noOneToMessageDesc: "Deze crew heeft geen andere leden om mee te chatten.", + subject: "{{crew}} crewchat", + title: "Crewchat", + cordnBadgeTitle: "Gerouteerd via de Cordn-coördinator van deze crew over ContextVM. End-to-end versleuteld.", + private: "Privé", + privateBadgeTitle: "End-to-end versleuteld — alleen crewleden kunnen deze berichten lezen.", + encryptedCordn: "Versleuteld & gerouteerd via de crewcoördinator (Cordn) — geen berichten komen op openbare relays terecht.", + encryptedNip17: "Versleutelde groepschat voor de oprichter & alle vermelde crewleden.", + moderatorNote: " Als moderator kun je berichten uit de crew verbergen.", + loginToSee: "Log in om te zien of je bij de crewchat kunt.", + membersOnly: "Deze chat is privé voor crewleden. Vraag de oprichter je aan de crew toe te voegen om mee te praten.", + noMessages: "Nog geen berichten. Trap de crewchat af — plan een sessie, deel een spot, hype een clip.", + newMessages: "Nieuwe berichten", + new: "Nieuw", + placeholder: "Bericht je crew…", + sendAria: "Bericht verzenden", + }, + collectiveJoinRequest: { + addedTitle: "{{name}} toegevoegd aan {{collective}} 🛹", + addedDesc: "Zij bevestigen van hun kant om als geverifieerd lid te verschijnen.", + couldNotAdd: "Kon lid niet toevoegen", + couldNotDismiss: "Kon niet negeren", + addedDone: "Toegevoegd", + addedTo: "aan", + dismissedDone: "Verzoek van {{name}} genegeerd", + wantsToJoin: "wil meedoen", + alreadyOnRoster: "Staat al op het roster", + openCollective: "Collectief openen", + dismiss: "Negeren", + addToCollective: "Aan collectief toevoegen", + }, + collectiveMembers: { + confirmed: "Bevestigd", + pending: "In behandeling", + pendingTooltip: "Vermeld door het collectief — wacht op bevestiging van dit lid.", + crewOnly: "Alleen crew", + crewOnlyTooltip: "Dit lid koos ervoor alleen zichtbaar te zijn voor crewgenoten. Je kunt hen zien omdat je in de crew zit.", + hiddenMember: "Verborgen lid", + title: "Leden", + verifiedOf: "{{confirmed}} van {{total}} geverifieerd — elk bevestigd lid ondertekende met hun eigen Nostr-sleutel.", + verifiedPerMember: "Lidmaatschap wordt per lid geverifieerd. Elk lid bevestigt met hun eigen Nostr-sleutel.", + adminsOne: "{{count}} admin helpt de crew te runnen.", + adminsMany: "{{count}} admins helpen de crew te runnen.", + }, + confirmMembership: { + public: "Openbaar", + crewOnly: "Alleen crew", + confirmedTitle: "Lidmaatschap bevestigd!", + confirmedCrew: "Je bent geverifieerd in {{name}} — alleen zichtbaar voor crewgenoten.", + confirmedPublic: "Je verschijnt nu als geverifieerd lid van {{name}}.", + failed: "Bevestigen mislukt", + addedTo: "Je bent toegevoegd aan {{name}}", + addedDesc: "Bevestig je lidmaatschap zodat het als geverifieerd op je profiel en dat van hen verschijnt.", + yourVisibility: "Je zichtbaarheid", + confirming: "Bevestigen…", + confirmButton: "Lidmaatschap bevestigen", + }, + contacts: { + message: "Bericht", + removePrivate: "Uit privécontacten verwijderen", + savePrivate: "Opslaan in privécontacten", + seoTitle: "Contacten - SkateSpots", + seoDescription: "Jouw scene — crewgenoten, mensen die je volgt en recente gesprekken, met privé versleutelde contacten.", + encryptionUnavailableDesc: "Je signer ondersteunt NIP-44-versleuteling niet.", + removed: "Verwijderd uit privécontacten", + saved: "Opgeslagen in privécontacten", + savedDesc: "Alleen jij kunt deze lijst zien.", + updateFailed: "Kon contacten niet bijwerken", + loginTitle: "Jouw scene, op één plek", + loginDesc: "Log in om je crewgenoten, mensen die je volgt en recente gesprekken te zien — en houd een privé, versleutelde contactenlijst bij.", + title: "Contacten", + subtitle: "Jouw scene — crewgenoten, volgers & gesprekken", + filterPlaceholder: "Filter op npub…", + tabCrew: "Crew", + tabFollows: "Volgend", + tabDms: "DM's", + tabSaved: "Opgeslagen", + emptyCrewmates: "Nog geen crewgenoten. Sluit je aan bij een crew of start er een om je scenedenetwerk op te bouwen.", + emptyFollowing: "Je volgt nog niemand.", + emptyDms: "Nog geen gesprekken. Bericht een skater om er een te starten.", + savedHint: "Deze lijst is versleuteld met jouw sleutel — alleen jij kunt hem lezen. Tik op de ster bij iemand om hen toe te voegen.", + emptySaved: "Nog geen opgeslagen contacten. Markeer mensen met een ster vanuit elk tabblad om je privéadresboek op te bouwen.", + }, + conversation: { + unknown: "Onbekend", + seoTitle: "Chat met {{name}} - SkateSpots", + seoDescription: "Privé versleuteld gesprek", + sendFailed: "Bericht verzenden mislukt", + sendFailedDesc: "Probeer het zo meteen opnieuw.", + tradeConfirmed: "Trade bevestigd", + tradeConfirmedDesc: "Reputatie bijgewerkt voor jullie beiden.", + tradeConfirmFailed: "Kon de trade niet bevestigen", + somethingWrong: "Er is iets misgegaan.", + soldNote: "Verkocht aan {{name}}.", + saleConfirmed: "Verkoop bevestigd", + saleConfirmedDesc: "{{name}} kan nu hun kant bevestigen.", + saleConfirmFailed: "Kon de verkoop niet bevestigen", + escrowRedeemed: "Escrow verzilverd", + escrowRedeemedDesc: "Het geld staat nu in je Cashu-wallet.", + escrowRedeemFailed: "Kon escrow niet verzilveren", + loginTitle: "Log in om berichten te bekijken", + secureLoginTitle: "Veilige login vereist", + secureLoginDesc: "Berichten vereisen een veilige signer-app.", + encrypted: "Versleuteld", + refresh: "Vernieuwen", + didCompleteTrade: "Heb je deze trade afgerond?", + recordedSale: "{{name}} registreerde de verkoop. Bevestig om de reputatie van jullie beiden bij te werken.", + confirm: "Bevestigen", + confirmSale: "Deze verkoop bevestigen?", + askedToRecord: "{{name}} vroeg je het te registreren. Bevestigen bouwt reputatie op voor jullie beiden.", + confirmSaleButton: "Verkoop bevestigen", + redeemEscrow: "Escrow verzilveren", + escrowAppOnly: "Cashu-escrow is alleen in de app — open SkateSpots op je telefoon om te verzilveren.", + startThread: "Stuur een bericht om het gesprek te starten", + placeholder: "Typ een bericht...", + e2eeNote: "Berichten zijn end-to-end versleuteld met NIP-17", + }, + coordinator: { + secondsAgo: "{{count}}s geleden", + minutesAgo: "{{count}}min geleden", + hoursAgo: "{{count}}u geleden", + daysAgo: "{{count}}d geleden", + statusIdle: "Niet gecontroleerd", + statusChecking: "Controleren…", + statusOnline: "Verbonden", + statusStale: "Stil", + statusOffline: "Niet gezien", + statusError: "Onbereikbaar", + notACoordinator: "Dat is geen coördinator", + notACoordinatorDesc: "Plak een nprofile, een npub of een cordn.net-link.", + added: "Coördinator toegevoegd", + relayOne: "{{count}} relay", + relayMany: "{{count}} relays", + lastSeen: "laatst gezien {{time}}", + onlineDesc: "Kondigt zich aan. Groepen die het gebruiken kunnen nu berichten leveren.", + staleDesc: "Gevonden, maar het heeft zich recent niet aangekondigd — het slaapt misschien.", + offlineDesc: "Geen aankondiging gezien. Het is misschien privé (dat is prima), of simpelweg offline.", + errorDesc: "Kon de relays niet bereiken.", + idleDesc: "Controleren…", + checkingDesc: "Aankondiging zoeken…", + eventFoundOne: "{{count}} event gevonden.", + eventFoundMany: "{{count}} events gevonden.", + check: "Controleren", + addLinkCopied: "Toevoeglink gekopieerd", + copyFailed: "Kopiëren mislukt", + copyManually: "Kopieer het handmatig.", + addLink: "Link toevoegen", + removeConfirm: "Deze coördinator van dit apparaat verwijderen?", + scanToJoin: "Scan in Cordn om lid te worden van deze coördinator.", + noCoordinator: "Nog geen coördinator", + noCoordinatorDescA: "Een coördinator levert de", + encryptedWord: "versleutelde", + noCoordinatorDescB: "groepsberichten van je crew in volgorde af. Hij ziet wie, wanneer en welke groep — nooit de inhoud. Kies er een, of run je eigen.", + change: "Coördinator wijzigen", + addTitle: "Een coördinator toevoegen", + add: "Toevoegen", + scanQR: "Een coördinator-QR scannen", + inputPlaceholder: "nprofile… of een cordn.net-link", + runOwn: "Run je eigen", + runOwnDesc: "Hij kan op een oude telefoon, een Raspberry Pi of elk klein kastje draaien dat je aan laat staan. Je groep blijft werken zolang hij aan staat — en je kunt de groep verplaatsen wanneer je maar wilt.", + onPhone: "Op een telefoon", + onPhoneDesc: "Gebruik de Cordn Coordinator-app en scan hier zijn QR om hem toe te voegen.", + openCordn: "Cordn openen", + scanItsQR: "Zijn QR scannen", + onServer: "Op een server", + commandCopied: "Commando gekopieerd", + copyCommand: "Commando kopiëren", + androidSleep: "Android kan een telefooncoördinator in slaap laten vallen. Verwacht dat je af en toe een groep moet verplaatsen.", + privacyNote: "🔒 Een coördinator ziet alleen ciphertext en metadata — nooit berichtinhoud. Run je eigen om zelfs de metadata van jou te houden.", + customTitle: "Aangepaste chatcoördinator", + customBadge: "· experimenteel · je eigen relay", + customDescShort: "Optioneel — je crew heeft al end-to-end versleutelde chat ingebouwd, dus je hebt dit niet nodig. Stel het alleen in als je je eigen chatcoördinator runt.", + remove: "Verwijderen", + pointerNote: "Voorlopig alleen een pointer: een wss://-endpoint wordt als chatrelay van de crew gebruikt; een https://-endpoint via de gedeelde ContextVM-relay. Echte Cordn MLS is nog niet aangesloten.", + cordnCoordinator: "Cordn-coördinator", + invalid: "Dat lijkt geen coördinator. Plak een nprofile, een cordn.net-link of een https/wss-URL.", + useMine: "Mijn coördinator gebruiken", + }, + createCrew: { + seoTitle: "Een crew aanmaken - SkateSpots", + seoDescription: "Maak je skatecrew — thuisbasis, leden en spots.", + loginRequired: "Inloggen vereist", + loginRequiredDesc: "Je moet inloggen om een crew aan te maken.", + backToCrews: "Terug naar crews", + title: "Een crew aanmaken", + intro: "Je skatefamilie — de mensen met wie je skatet. Alleen een naam is genoeg om te beginnen; al het andere is optioneel.", + }, + crew: { + seoTitleNamed: "{{name}} - SkateSpots-crew", + seoTitle: "Crew - SkateSpots", + seoDescription: "Een skatecrew op SkateSpots.", + postHidden: "Bericht verborgen", + postHiddenDesc: "Voor iedereen uit de crewfeed verwijderd.", + postHideFailed: "Bericht verbergen mislukt", + backToCrews: "Terug naar crews", + disband: "Ontbinden", + youAreCaptain: "Je bent captain", + member: "Lid", + askSasquatch: "Vraag Sasquatch", + agent: "Crew-agent", + agentDesc: "De AI-gids van je crew — spots, events, coaches & gear in de buurt, met live data.", + eventsTab: "Events", + chatTab: "Chat", + newMessages: "Nieuwe berichten", + hostJam: "Een jam hosten", + noEvents: "Nog geen crewevents. Host een jam, comp of meetup als de crew — het verbindt je crew met de evenementenkalender en laat mensen ervoor zappen.", + support: "Steun", + zapCrew: "Zap de crew", + bandTitle: "Crewband", + bandTagline: "Live muziek · skate & sound", + listenTitle: "Luister: {{domain}}", + listen: "Luister naar de muziek", + setUpGig: "Een optreden regelen", + bookGigMessage: "Hey {{crew}} — interesse om {{band}} te boeken voor een optreden. Ben je er om datums te bespreken?", + messageAboutGig: "Bericht over een optreden", + gigHintA: "voegt een muziekevent toe aan de kalender, gehost door deze crew.", + messageShort: "Bericht", + gigHintB: "opent een versleutelde DM naar de crew om datums & details te regelen.", + homeSpots: "Thuisspots", + viewSpot: "Spot bekijken", + seeOnMap: "Bekijk op de kaart →", + founderLinks: "Oprichter & links", + startedBy: "Gestart door {{name}}", + opens: "Opent: {{domain}}", + }, + crews: { + seoTitle: "Crews - SkateSpots", + seoDescription: "Vind je mensen. Ontdek lokale skatecrews, collectieven en communities bij jou in de buurt.", + videoPartTooltip: "Deze crew heeft een videopart", + part: "Part", + bandTooltip: "Crewband: {{name}}", + band: "Band", + focusAll: "Alle", + focusAllShort: "Alle", + focusDiy: "DIY", + focusPhoto: "Foto", + focusCoaching: "Coaching", + focusArt: "Kunst", + focusMusic: "Muziek", + focusPhysio: "Fysio", + focusMixed: "Gemengd", + title: "Crews", + heroLine: "Je kaartgebonden skatefamilie — de mensen met wie je skatet", + heroWith: "met", + heroRest: ", niet wie je inhuurt (dat is The Lab).", + crewCountOne: "{{count}} crew", + crewCountMany: "{{count}} crews", + cityCountOne: "{{count}} stad", + cityCountMany: "{{count}} steden", + createCrew: "Crew aanmaken", + create: "Aanmaken", + searchPlaceholder: "Zoek crews op naam of stad…", + filterTitle: "Crews filteren", + filterDesc: "Waar de crew in geïnteresseerd is.", + nearMe: "Bij mij in de buurt", + emptySearchTitle: "Geen crews komen overeen met je zoekopdracht", + emptySearchHint: "Niets gevonden voor \u201c{{query}}\u201d. Probeer een andere naam of stad.", + clearSearch: "Zoekopdracht wissen", + emptyFocusTitle: "Nog geen {{label}}-crews", + emptyFocusHint: "Niemand hijst hier nog de \u201c{{label}}\u201d-vlag. Toon alle crews, of start deze zelf.", + showAll: "Alle crews tonen", + claimTitle: "Claim je lokale scene", + claimHint: "Nog geen crews hier geplant. Wees de eerste — start je crew, koppel je thuisspots en zet je scene op de kaart zodat iedereen je kan vinden.", + }, + crewCoordinator: { + privateChat: "Privé crewchat", + on: "Aan", + defaultA: "Het tabblad", + chatWord: "Chat", + defaultB: "is", + e2ee: "end-to-end versleuteld", + defaultC: "voor de oprichter en alle vermelde leden — niets om in te stellen. Berichten worden verzegeld met de sleutel van elk lid (NIP-17), dus alleen je crew kan ze lezen.", + advancedA: "Geavanceerd: run je eigen", + cordnCoordinator: "Cordn-coördinator", + routeThrough: "Chat erdoorheen routeren", + coordinator: "Coördinator", + deliveredOver: "Geleverd via", + sharedRelay: "— de gedeelde ContextVM-relay.", + ownRelay: "— de eigen relay van je crew.", + chatLive: "Privéchat is live", + routesA: "Het tabblad", + routesB: "routeert via deze coördinator: berichten zijn end-to-end versleuteld (NIP-44, verzegeld met elk lid), dus hij verwerkt alleen verzegeld verkeer.", + publicWarning: "Let op: het is geadresseerd via de gedeelde ContextVM-relay, dus de ciphertext en de metadata (welke crew, en wanneer) zijn openbaar zichtbaar — alleen niet leesbaar. Richt de crew op een privé wss://-relay om zelfs dat privé te houden.", + ownRelaySafe: "Niets crewspecifieks verlaat de eigen relay van je crew.", + manage: "Coördinator beheren", + open: "{{domain}} openen", + runBy: "Coördinator gerund door", + }, + dms: { + securityReminder: "Veiligheidswaarschuwing", + phishingStrong: "SkateSpots zal je nooit DM'en", + phishingRest: "om je account te verifiëren, je sleutels te delen of betalingen te sturen. Als iemand via DM beweert SkateSpots-support te zijn — het is oplichting.", + dismissReminder: "Veiligheidswaarschuwing sluiten", + peopleCount: "{{count}} personen", + youPrefix: "Jij: ", + unreadMessages: "Ongelezen berichten", + seoTitle: "Berichten - SkateSpots", + seoDescription: "Privé versleutelde berichten met de skateboardcommunity", + loginTitle: "Log in om berichten te openen", + loginDesc: "Privé, versleutelde berichten met skaters in de community", + secureLoginTitle: "Veilige login vereist", + secureLoginDesc: "Privéberichten vereisen een veilige signer-app om je gesprekken te versleutelen.", + onAndroid: "Op Android:", + useAmber: "Gebruik de Amber-app", + getAmber: "Amber downloaden →", + onIOS: "Op iOS:", + iosHint: "Probeer in te loggen met een bunkerverbinding (nsec.app) via Instellingen", + browserHint: "Probeer in te loggen met een browserextensie zoals Alby of nos2x die versleuteling ondersteunt.", + title: "Berichten", + subtitleFull: "End-to-end versleuteld met NIP-17", + subtitleShort: "Versleuteld", + newMessage: "Nieuw bericht", + groups: "Groepen", + loadFailed: "Berichten laden mislukt", + emptyTitle: "Nog geen berichten", + emptyDesc: "Start een gesprek met iemand in de community", + startConversation: "Een gesprek starten", + undecryptableOne: "{{count}} versleuteld bericht kon niet door je signer worden geopend.", + undecryptableMany: "{{count}} versleutelde berichten konden niet door je signer worden geopend.", + }, + editCrew: { + seoTitleNamed: "{{name}} bewerken - SkateSpots", + seoTitle: "Crew bewerken - SkateSpots", + seoDescription: "Bewerk je skatecrew.", + loginRequired: "Inloggen vereist", + notYours: "Niet jouw crew", + notYoursDesc: "Alleen de oprichter van de crew kan deze crew bewerken.", + backToCrew: "Terug naar crew", + title: "Crew bewerken", + }, + form: { + add: "Toevoegen", + added: "Toegevoegd", + addNameInBasicsA: "Voeg terug een crewnaam toe in", + addNameInBasicsB: "om af te ronden.", + adminsDescA: "Maak vertrouwde leden", + adminsWord: "admins", + adminsDescB: "— zij kunnen leden uitnodigen en de crewfeed & chat modereren met hun eigen sleutels. Jij (de oprichter) blijft altijd de eigenaar van de identiteit van de crew.", + agentDescA: "Voeg", + agentDescB: "toe, een AI-gids die je crew echt kent. Leden kunnen vragen naar", + agentDescC: "— plus spots, events, coaches en gear in de buurt uit live SkateSpots-data. Draait direct in de browser; geen sleutels of setup. Het is vroeg (gratis AI-tier, dus soms traag).", + agentDescStrong: "je volgende jam, wie de crew runt, waar je naar op zoek bent en je vibe", + agentEnabledNote: "Sasquatch verschijnt op je crewpagina zodra je opslaat.", + bandDesc: "Heb je een band? Skatescenes en lokale muziek gaan hand in hand — vul je bandnaam en een link naar de muziek in.", + bandFooterA: "Voor een volledig bandprofiel (genres, instrumenten, optredens) maak je een", + musicianWord: "Muzikant", + bandFooterB: "aan in The Lab, en koppel die daarna in de", + linkedLabWord: "Gekoppelde Lab-profielen", + bandFooterC: "sectie hierboven.", + bandMusicWord: "Band & muziek", + bandName: "Bandnaam", + bandNamePlaceholder: "bijv. The Bail Outs", + bandNudgeA: "Je hebt een band — tik om je", + crewTypeWord: "Crewtype", + bandNudgeB: "in te stellen op", + bandNudgeC: "zodat je ook verschijnt in de muziekscene van The Lab.", + beta: "Beta", + bioLabel: "Over / manifest", + bioPlaceholder: "Wie je bent, wat je skatet, je verhaal...", + continue: "Doorgaan", + crewCreated: "Crew aangemaakt!", + crewUpdated: "Crew bijgewerkt!", + crewName: "Crewnaam", + crewOnlyWord: "Alleen crew", + crewType: "Crewtype", + crewTypeDescA: "Is je crew gericht op een vak? Kies er een om ook in die scene te verschijnen in", + theLab: "The Lab", + crewTypeDescB: ". Gewone skatecrews blijven", + mixedWord: "Gemengd", + crewTypeDescC: ".", + customVibeHint: "Voeg je eigen vibe of focus toe met een #", + customVibePlaceholder: "bijv. downhill, night-sessions, no-comply", + editDesc: "De identiteit, thuisbasis en leden van je crew", + enableAgent: "Crew-agent inschakelen", + enableTreasury: "Crewkas inschakelen", + failed: "Mislukt", + founded: "Opgericht (jaar)", + geolocationUnsupported: "Geolocatie wordt niet ondersteund", + gettingLocation: "Ophalen...", + goalHint: "Zorg dat je Nostr-profiel een Lightning-adres (lud16) heeft zodat bijdragen kunnen binnenkomen.", + goalPlaceholder: "bijv. De DIY-spot betonneren", + goalTarget: "Doel (sats)", + goalWhat: "Wat is het doel?", + homeSpots: "Thuisspots", + homeSpotsDesc: "Koppel de spots die je crew bezoekt — ze verbinden met je crew op de kaart", + homeTurf: "Thuisbasis (stad / omgeving)", + homeTurfPlaceholder: "Bristol, VK", + instagramDetected: "Instagram-clip gedetecteerd", + invalidMember: "Voer een geldige npub, nprofile of hex-pubkey in.", + latitude: "Breedtegraad", + leaveBlankLocation: "Laat leeg om de huidige locatie van de thuisbasis te behouden.", + links: "Links", + locationError: "Locatiefout", + locationFound: "Locatie gevonden", + logoAlt: "Crew", + logoHint: "Een logo maakt je crew direct herkenbaar op de kaart en in feeds. Vierkant werkt het beste.", + logoLabel: "Crewlogo / foto", + logoUploaded: "Logo geüpload", + longitude: "Lengtegraad", + looksGood: "Ziet er goed uit", + makeAdmin: "Admin maken", + mapPin: "Kaartmarkering", + mapPinHint: "Zet je crew op de kaart zodat locals je kunnen vinden. Tik op de knop — geen typen nodig.", + memberAlreadyAdded: "Dat lid is al toegevoegd.", + members: "Leden", + membersDesc: "Voeg de Nostr-accounts van je crew toe. Elk lid bevestigt met hun eigen sleutel — tot die tijd verschijnen ze als \u201cin behandeling\u201d.", + musicLink: "Muzieklink", + nameCrew: "Geef je crew een naam", + nameCrewDesc: "Een crew heeft een naam nodig voordat je doorgaat.", + nameCrewFirst: "Geef je crew eerst een naam", + nameHint: "Het enige dat je echt nodig hebt. Je kunt het later wijzigen.", + namePlaceholder: "bijv. Backyard Bandits", + nameRequired: "Naam vereist", + nameRequiredDesc: "Geef je crew een naam.", + nip05DescA: "Een verifieerbare handle die je op elk domein beheert, bijv.", + nip05DescB: ". Hij wordt geverifieerd tegen de oprichter-sleutel van deze crew, en je kunt er meerdere toevoegen — elk toont een groen vinkje wanneer het domein hem bevestigt.", + nip05Label: "Crew-NIP-05", + nip05Placeholder: "crew@jouwdomein.com", + nip05Add: "Toevoegen", + nip05Invalid: "Voer een handle in zoals crew@jouwdomein.com", + nip05TooMany: "Je kunt tot {{count}} handles toevoegen.", + nip05Unverified: "Niet gecontroleerd", + nip05Remove: "{{handle}} verwijderen", + notAKeyA: "Dat lijkt nog geen Nostr-sleutel — plak een", + notAKeyB: ",", + notAKeyC: ", of hex-pubkey.", + onlyYouTubeInstagram: "Alleen YouTube- en Instagram-links worden ondersteund.", + openCall: "Open call", + openCallDescA: "Zoek je een filmer, editor of vers bloed? Zet een oproep uit — hij verschijnt op je crewpagina zodat passende mensen van", + openCallDescB: "contact kunnen opnemen.", + optional: "· optioneel", + optionalParen: "(optioneel)", + otherSocials: "Overige socials", + otherSocialsDesc: "Voeg er zoveel toe als je wilt — YouTube, TikTok, Discord, Telegram, enz.", + ownVisibility: "eigen zichtbaarheid", + progress: "Voortgang", + publicWord: "Openbaar", + publishedToScene: "Gepubliceerd naar de scene.", + publishFailed: "Publiceren mislukt", + publishing: "Publiceren...", + ready: "Klaar", + readyToRollA: "Klaar om te gaan — druk op", + readyToRollB: "wanneer je maar wilt.", + removeAdminRole: "Adminrol verwijderen", + removeMember: "Lid verwijderen", + removeSocial: "Sociallink verwijderen", + removeVibe: "{{vibe}} verwijderen", + roles: "Rollen:", + sasquatch: "Sasquatch", + saveCrew: "Crew opslaan", + skipToEnd: "Naar het einde springen", + socialPlaceholder: "@gebruikersnaam of link", + sponsorDesc: "Als een lokale shop je crew steunt, kies die hier om een \u201cGesponsord door\u201d-banner te tonen die naar hun shop linkt.", + stepAria: "Stap {{step}}: {{title}}", + stepBasics: "De basis", + stepBasicsShort: "Basis", + stepBasicsHint: "Alleen het essentiële — met alleen deze stap kun je al een crew opzetten.", + stepVibe: "Identiteit & vibe", + stepVibeShort: "Vibe", + stepVibeHint: "Hoe je crew in de app verschijnt. Allemaal optioneel.", + stepSquad: "Squad & spots", + stepSquadShort: "Squad", + stepSquadHint: "Voeg je mensen en je thuisbasis toe. Dit kun je altijd later doen.", + stepExtras: "Extra's", + stepExtrasShort: "Extra's", + stepExtrasHint: "Power-ups voor later — sla over waar je niet zeker over bent.", + extrasAllOptional: "Alles in deze stap is optioneel.", + groupIdentity: "Identiteit", + groupIdentityHint: "Handle, links", + groupAi: "Sasquatch AI", + groupShowcase: "Showcase", + groupPayments: "Betalingen & kas", + groupIntegrations: "Integraties", + groupAdvanced: "Geavanceerd", + groupAdvancedHint: "experimenteel", + pro: "Pro", + agentProNote: "Mogelijk gemaakt door Sasquatch. Pro krijgt de beste modellen; zonder Pro gebruikt het een gratis fallback.", + stepOf: "Stap {{step}} van {{total}}", + treasuryDescA: "Haal sats op voor een gedeeld doel — de lokale DIY-spot opknappen, een crewtrip, een prijzenpot voor een comp. Het is een transparant Lightning-doel; zaps gaan", + treasuryDescStrong: "direct naar je wallet", + treasuryDescB: "(via het Lightning-adres van je profiel). SkateSpots houdt het geld nooit vast.", + upload: "Uploaden", + uploadFailed: "Uploaden mislukt", + useCurrentLocation: "Huidige locatie gebruiken", + vibeLabel: "Vibe / focus", + videoDescA: "De volledige part, montage of nieuwste clip van je crew. Plak een", + videoDescB: "link — hij speelt direct op je crewpagina.", + visibilityDescA: "Elk lid beheert hun", + visibilityDescB: "— wanneer ze met hun sleutel bevestigen kunnen ze kiezen", + visibilityDescC: "— verborgen voor buitenstaanders). Je kunt dit niet voor hen instellen; het is hun keuze.", + website: "Website", + yourRoles: "Jouw rollen (teamleider)", + youtubeDetected: "YouTube-video gedetecteerd", + invalidUrl: "Voer een geldige link in (bijv. https://example.com).", + }, + groupConversation: { + seoTitle: "Groepschat - SkateSpots", + invalidLink: "Deze groepschatlink is ongeldig.", + loginTitle: "Log in om deze groep te bekijken", + secureSignerTitle: "Veilige signer vereist", + secureSignerDesc: "Groepsberichten vereisen een NIP-44-capabele signer.", + encryptedGroup: "End-to-end versleutelde groep", + empty: "Nog geen berichten — zeg hallo tegen de groep.", + placeholder: "Bericht de groep...", + }, + hero: { + established: "Opgericht {{year}}", + teamLeader: "Teamleider: {{name}}", + ledBy: "Geleid door", + }, + inviteCard: { + acceptedTitle: "Uitnodiging geaccepteerd 🛹", + acceptedDesc: "De oprichter van de crew bevestigt leden op {{crew}}. Je verschijnt op het roster zodra ze goedkeuren.", + couldNotAccept: "Kon niet accepteren", + couldNotDecline: "Kon niet afwijzen", + acceptedDone: "Geaccepteerd —", + confirmsMembers: "bevestigt leden", + declinedDone: "Uitnodiging voor {{crew}} afgewezen", + invitedYou: "nodigde je uit om lid te worden van", + admin: "Admin", + accept: "Accepteren", + decline: "Afwijzen", + }, + inviteDialog: { + messageIntro: "Yo — word lid van de crew {{crew}} op SkateSpots 🛹", + messageBody: "Log in met je Nostr-sleutel en vraag dan via de crewpagina om lid te worden.", + copyFailed: "Kopiëren mislukt", + shareTitle: "Word lid van {{crew}}", + sentTitle: "Uitnodiging verzonden! 🛹", + sentDesc: "Ze krijgen een melding om te accepteren of af te wijzen.", + couldNotSend: "Kon uitnodiging niet verzenden", + trigger: "Uitnodigen", + title: "Uitnodigen voor {{crew}}", + description: "Stuur een uitnodiging naar iemands Nostr-sleutel, of deel een link.", + sendTab: "Uitnodiging sturen", + shareTab: "Link delen", + npubLabel: "npub van skater", + invalidNpub: "Dat lijkt geen geldige npub.", + noteLabel: "Notitie", + optional: "(optioneel)", + notePlaceholder: "Kom met ons skaten…", + inviteAsAdmin: "Uitnodigen als admin", + inviteAsAdminDesc: "Kan de crew beheren & anderen uitnodigen.", + sendButton: "Uitnodiging sturen", + sendFooter: "Ze krijgen een melding om te accepteren of af te wijzen. Lidmaatschap telt pas als ze accepteren.", + inviteLink: "Uitnodigingslink", + messageLabel: "Bericht", + copyMessage: "Bericht kopiëren", + founderHint: "Als oprichter kun je ook direct de sleutel van een lid toevoegen, waarna zij bevestigen.", + addMemberSettings: "Lid toevoegen in crewinstellingen", + }, + joinRequest: { + moreCount: "+{{count}} meer", + addedTitle: "{{name}} toegevoegd aan {{crew}} 🛹", + addedDesc: "Zij bevestigen van hun kant om als lid te verschijnen.", + vouchedTitle: "Je hebt ingestaan voor {{name}} 🤝", + vouchedDesc: "De oprichter van {{crew}} ziet je aanbeveling en kan hen toevoegen.", + couldNotEndorse: "Kon niet aanbevelen", + endorsedDoneA: "Je stond in voor", + endorsedDoneB: "— oprichter bevestigt", + vouchedBy: "Ingestaan door", + approveAndAdd: "Goedkeuren & toevoegen", + addToCrew: "Aan crew toevoegen", + vouchedWaiting: "Ingestaan — wacht op de oprichter", + vouchForThem: "Voor hen instaan", + leadershipOnly: "Alleen crewleiding.", + adminHelp: "Admins kunnen geen leden direct toevoegen — instaan vertelt de oprichter dat je deze rider steunt.", + }, + leadership: { + teamLeader: "Teamleider", + captain: "Captain", + verifiedMember: "Geverifieerd lid", + messageName: "Bericht {{name}}", + title: "Leiding", + captainsOne: "{{count}} captain", + captainsMany: "{{count}} captains", + footer: "De teamleider runt het roster; captains helpen met uitnodigen, jams hosten en de crew netjes houden.", + }, + linkField: { + title: "Gekoppelde crew", + description: "Run je ook een crew? Koppel die zodat mensen kunnen wisselen tussen je studio en je crew. Optioneel. Koppel deze crew terug aan het profiel vanuit de crew-editor en het toont een groene", + descriptionRest: "badge op beide.", + none: "Je hebt nog geen crews. Maak er een aan op de crewspagina om die hier te koppelen.", + linkedCrew: "Gekoppelde crew ({{id}})", + }, + lookingFor: { + title: "Open call", + subtitle: "Deze crew is op zoek naar:", + }, + memberVisibility: { + updatedTitle: "Zichtbaarheid bijgewerkt", + updatedCrew: "Je verschijnt nu alleen voor crewgenoten.", + updatedPublic: "Je verschijnt nu openbaar in deze crew.", + couldNotUpdate: "Kon niet bijwerken", + title: "Je zichtbaarheid in deze crew", + save: "Zichtbaarheid opslaan", + }, + newMessage: { + inCrew: "In je crew: {{crews}}", + crewmate: "Crewgenoot", + following: "Volgend", + invalidKey: "Dat lijkt geen geldige npub of publieke sleutel.", + description: "Zoek je mensen op naam, of plak een npub om iemand te berichten. Selecteer twee of meer om een groep te starten.", + searchPlaceholder: "Zoek naam of plak npub1...", + messageThisKey: "Deze sleutel berichten", + loadingPeople: "Je mensen laden...", + noPeople: "Nog geen crewgenoten of volgers.", + noPeopleHint: "Plak hierboven iemands npub om een gesprek te starten.", + yourCrews: "Je crews", + selected: "{{count}} geselecteerd", + startGroup: "Groep starten ({{count}})", + message: "Bericht", + }, + nip05: { + mismatch: "Dit domein wijst de handle toe aan een andere Nostr-sleutel dan de oprichter van de crew. Niet geverifieerd.", + verified: "Geverifieerd — het domein bevestigt dat deze handle bij de oprichter-sleutel van de crew hoort.", + }, + requestCollective: { + sentTitle: "Verzoek verzonden 🤝", + sentDesc: "{{name}} ziet het in hun meldingen en kan je toevoegen.", + couldNotSend: "Kon verzoek niet verzenden", + title: "Sluit je aan bij dit collectief", + waiting: "Verzoek verzonden — wacht op {{name}}.", + askA: "Vraag de crew achter", + askB: "om je aan het roster toe te voegen. Ze krijgen een melding en kunnen je met één tik toevoegen.", + placeholder: "Optioneel: vertel waarom je goed past…", + sendButton: "Verzoek verzenden", + }, + requestToJoin: { + sentTitle: "Verzoek verzonden! 🛹", + sentDesc: "De leiding van {{crew}} ziet het in hun meldingen.", + couldNotSend: "Kon verzoek niet verzenden", + trigger: "Verzoek om lid te worden", + title: "Word lid van {{crew}}", + description: "Informeert de oprichter & admins van de crew zodat ze je kunnen toevoegen.", + placeholder: "Zeg hallo — waar je skatet, wie je kent, waarom je erbij wilt…", + sending: "Verzenden…", + sendButton: "Lidmaatschapsverzoek verzenden", + }, + sponsorBanner: { + loading: "Sponsor laden…", + sponsoredBy: "Gesponsord door", + }, + sponsorPicker: { + selected: "Sponsor geselecteerd", + setLoading: "Sponsor ingesteld (shop laden…)", + set: "Sponsor ingesteld", + clearAria: "Sponsor wissen", + searchPlaceholder: "Zoek skateshops op naam of stad…", + loading: "Shops laden…", + noMatch: "Geen shops gevonden — probeer een andere zoekopdracht.", + none: "Nog geen shops gevonden.", + }, + treasury: { + title: "Crewkas", + ofGoal: "van {{target}}-doel", + goalReached: "Doel bereikt!", + funded: "{{percent}}% gefinancierd", + contributionOne: "{{count}} bijdrage", + contributionMany: "{{count}} bijdragen", + daysLeft: "nog {{days}}d", + closed: "gesloten", + nonCustodial: "Niet-bewaard · zaps gaan direct naar de Lightning-wallet van de crew", + }, + userStatus: { + atSpot: "📍 Bij een spot", + autoClears: "⏱️ Wordt automatisch gewist over {{min}} min", + }, + video: { + title: "De part", + fullVideo: "Volledige video · montage", + latestClip: "Nieuwste clip", + watch: "Bekijken", + iframeTitle: "{{crew}} — video", + playAria: "{{crew}}-video afspelen", + thumbAlt: "Videominiatuur van {{crew}}", + instagramTitle: "Instagram-clip", + }, + vouch: { + removedTitle: "Instemming verwijderd", + vouchedTitle: "Ingestaan!", + removedDesc: "Je staat niet meer in voor {{name}}.", + vouchedDesc: "Je stond in voor {{name}}. De scene vertrouwt zijn eigen mensen.", + couldNotVouch: "Kon niet instaan", + title: "Scene-instemmingen", + sceneVerified: "Scene-geverifieerd", + vouched: "Ingestaan", + newUnvouched: "Nieuw · niet ingestaan", + checking: "De scene controleren…", + empty: "Nog geen instemmingen. Instemming van skaters in je kringen is het beste signaal dat iemand de echte is — niet een willekeurige die binnenliep.", + countOne: "{{count}} instemming", + countMany: "{{count}} instemmingen", + trusted: "{{count}} van skaters in je vertrouwensnetwerk", + remove: "Instemming verwijderen", + vouchFor: "Instaan voor {{name}}", + ownerNote: "Skaters die je werk kennen kunnen hier voor je instaan.", + }, + }, +}; export default nlBatch5; diff --git a/src/i18n/nl/batch6.ts b/src/i18n/nl/batch6.ts index 500e7c7..54e7c9c 100644 --- a/src/i18n/nl/batch6.ts +++ b/src/i18n/nl/batch6.ts @@ -1,4 +1,1948 @@ -/** nl — batch 6. Filled by the translation pass; empty until then. */ -const nlBatch6 = {}; +/** nl — batch 6. Filled by the 2026-10-07 Dutch translation pass. */ +const nlBatch6 = { + placesUi: { + addToCalendar: { + add: "Toevoegen aan agenda", + appleOutlook: "Apple / Outlook (.ics)", + google: "Google Agenda", + }, + attendees: { + goingCount: "gaan", + goingTab: "Gaan ({{count}})", + interestedTab: "Geïnteresseerd ({{count}})", + nobodyGoing: "Niemand heeft zich nog bevestigd.", + nobodyInterested: "Niemand heeft zich nog geïnteresseerd gemeld.", + noRsvps: "Nog geen RSVP's — wees de eerste die zegt dat je komt.", + trusted: "Vertrouwd", + trustedTitle: "Iemand die je volgt of een vertrouwde mapper", + youTrust: "die je vertrouwt", + }, + bounty: { + addressCoords: "Adres en coördinaten", + basic: "Basis", + contactInfo: "Contactgegevens", + description: "Beschrijving", + earningPotential: "Verdienpotentieel", + excellent: "Uitstekend!", + gettingStarted: "Aan de slag", + good: "Goed", + onePhoto: "Minstens 1 foto", + openingHours: "Openingstijden", + shopName: "Naam van de shop", + threePhotos: "3+ foto's", + tip: "💡 Hogere kwaliteit = meer zaps van de community!", + }, + calendar: { + allDay: "Hele dag", + eventDay: "Eventdag", + eventsOnDay: "{{count}} events", + eventsThisMonth: "events deze maand", + going: "gaan", + months: { + january: "Januari", + february: "Februari", + march: "Maart", + april: "April", + may: "Mei", + june: "Juni", + july: "Juli", + august: "Augustus", + september: "September", + october: "Oktober", + november: "November", + december: "December", + }, + nextMonth: "Volgende maand", + nothingOnDay: "Niets op deze dag.", + prevMonth: "Vorige maand", + tapHighlighted: "Tik op een gemarkeerde dag om te zien wat er is.", + today: "Vandaag", + tourDay: "Tourdag", + toursOnDay: "{{count}} tours", + toursThisMonth: "tours deze maand", + weekdays: { + sun: "Zo", + mon: "Ma", + tue: "Di", + wed: "Wo", + thu: "Do", + fri: "Vr", + sat: "Za", + }, + weekdaysShort: { + sun: "Z", + mon: "M", + tue: "D", + wed: "W", + thu: "D", + fri: "V", + sat: "Z", + }, + }, + countdown: { + ended: "Afgelopen", + happeningNow: "Nu bezig", + inDays: "Over {{count}} dagen", + inHoursMins: "Over {{hours}}u {{mins}}m", + inMins: "Over {{count}} min", + startingNow: "Begint nu", + tomorrow: "Morgen", + }, + createEvent: { + add: "Toevoegen", + addNewSpot: "Nieuw spot toevoegen →", + changeSpot: "Spot wijzigen", + created: "Event aangemaakt!", + createdDesc: "Je event is gepubliceerd naar het netwerk.", + entryFee: "Toegangsprijs", + entryFeeHint: "(optioneel — bijv. \"500 sats\" of \"€10\")", + entryFeePlaceholder: "Laat leeg voor gratis events", + featuring: "Met {{name}}", + featuringDesc: "Deze act wordt getagd als live muziek en verschijnt in hun gigenlijst.", + fundingGoal: "Financieringsdoel", + fundingGoalHint: "(optioneel — sats om te crowdfunden via zaps)", + fundingGoalPlaceholder: "bijv. 50000", + geoNotSupported: "Geolocatie wordt niet ondersteund", + geoNotSupportedDesc: "Je browser ondersteunt geen geolocatie.", + hideSpots: "Spots verbergen", + hostingAs: "Host als {{name}}", + hostingAsDesc: "Dit event verschijnt op je crewpagina en wordt getagd als door crew gehost.", + imageUploaded: "Afbeelding geüpload", + imageUploadedDesc: "Je afbeelding is succesvol geüpload.", + invalidDate: "Ongeldige datum", + invalidDateDesc: "Voer een geldige startdatum en -tijd in.", + invalidEnd: "Ongeldige eindtijd", + invalidEndDesc: "De eindtijd moet na de starttijd liggen.", + linkedTo: "Gekoppeld aan: {{title}}", + linkToSpot: "Koppelen aan een Skate Spot", + linkToShop: "Koppelen aan een Shop", + selectedShop: "Gekoppeld aan {{name}}", + selectShopHint: "Optioneel — gehouden bij of gehost door een skate shop.", + selectShop: "Shop selecteren", + changeShop: "Shop wijzigen", + hideShops: "Shops verbergen", + searchShops: "Shops zoeken…", + noShopsMatch: "Geen shops komen overeen met je zoekopdracht.", + noShopsAvailable: "Nog geen shops beschikbaar.", + linkToTour: "Koppelen aan een Tour (optioneel)", + linkTourDesc: "Koppel dit event aan een tour om te laten zien dat het deel is van een grotere reeks. Ideaal voor nationale tours, internationale avonturen of World Destruction Tour-dagen.", + loadingSpots: "Spots laden...", + loadingTours: "Tours laden...", + locationError: "Locatiefout", + locationFound: "Locatie gevonden", + locationFoundDesc: "Je huidige locatie is ingesteld.", + logoUrl: "Logo-URL (optioneel)", + noSpotsAvailable: "Geen spots beschikbaar", + noSpotsMatch: "Geen spots komen overeen met je zoekopdracht", + noTourLinked: "Geen tour gekoppeld", + optional: "(optioneel)", + pastDesc: "Kies een datum en tijd in de toekomst zodat skaters kunnen RSVP'en en komen opdagen.", + pastTitle: "Die starttijd ligt in het verleden", + publishFailed: "Publiceren mislukt", + publishFeatured: "Uitgelicht event publiceren", + removeSponsor: "Sponsor verwijderen", + searchSpots: "Zoek spots op naam, locatie of categorie...", + selectedSpot: "Geselecteerd: {{name}}", + selectSpot: "Spot selecteren", + selectSpotHint: "Selecteer een spot op de kaart waar dit event plaatsvindt", + selectTour: "Tour selecteren", + somethingWrong: "Er is iets misgegaan", + sponsorName: "Naam van sponsor", + sponsors: "Sponsors", + sponsorsHint: "Heb je een shop of merk dat dit steunt? Voeg hun logo toe — het verschijnt als een \"Aangeboden door\"-strip op het event.", + startRequired: "Starttijd vereist", + startRequiredDesc: "Voer in wanneer het event begint.", + titleRequired: "Titel vereist", + titleRequiredDesc: "Voer een naam in voor dit event.", + uploadFailed: "Upload mislukt", + uploadFailedDesc: "Afbeelding uploaden mislukt", + websiteUrl: "Website-URL (optioneel)", + }, + createShop: { + address: "Adres van de shop", + addressPlaceholder: "bijv., 411 N Fairfax Ave, Los Angeles, CA 90036", + addressRequired: "Adres vereist", + addressRequiredDesc: "Voer het adres van je shop in.", + contactHint: "Help klanten je te bereiken (minstens één contactmethode aanbevolen)", + contactInfo: "Contactgegevens", + created: "🎉 Shop toegevoegd!", + createdDesc: "Je skate shop staat nu op de kaart. Skaters kunnen je zappen om te bedanken!", + descriptionPlaceholder: "Vertel mensen over je shop, wat je verkoopt, je specialiteit...", + detailsDesc: "Vertel de community over je shop. Alle velden met * zijn verplicht.", + email: "E-mail", + hoursOfOperation: "Openingstijden", + hoursPlaceholder: "bijv., ma-za 10:00-20:00, zo 12:00-18:00", + instagram: "Instagram", + invalidCoords: "Ongeldige coördinaten", + invalidCoordsDesc: "Voer een geldige breedtegraad (-90 tot 90) en lengtegraad (-180 tot 180) in.", + latPlaceholder: "Breedtegraad (bijv. 34.0737)", + lngPlaceholder: "Lengtegraad (bijv. -118.3614)", + locationRequired: "Locatie vereist", + locationRequiredDesc: "Voer coördinaten in of gebruik je huidige locatie.", + loginToAdd: "Je moet ingelogd zijn om een skate shop toe te voegen.", + namePlaceholder: "bijv. Supreme Los Angeles", + nameRequired: "Naam van shop vereist", + nameRequiredDesc: "Voer een naam in voor je shop.", + phoneNumber: "Telefoonnummer", + publishFailedDesc: "Er is iets misgegaan. Controleer de console voor details.", + shopPhotoAlt: "Shop", + shopPhotos: "Foto's van de shop", + subtitle: "Zet je shop op de kaart en kom in contact met de community", + upload: "Uploaden", + }, + createTour: { + acceptedClipSources: "Geaccepteerde clipbronnen", + acceptedClipSourcesDesc: "Welke formaten accepteer je voor clipinzendingen?", + accommodationInfo: "Verblijfsinformatie", + accommodationPlaceholder: "Verblijfsaanbevelingen of -regelingen, bijv. 'Budget hostels langs de route', 'Kampeergerei vereist', 'Airbnbs inbegrepen'", + addChallenge: "Uitdaging toevoegen", + addCity: "Een stad toevoegen...", + addCountry: "Een land toevoegen...", + addShopFirst: "Voeg eerst een shop toe", + alsoSelected: "Ook geselecteerd:", + availabilityPlaceholder: "bijv. Weekends, alleen ochtenden, op afspraak", + availabilityQuestion: "Wanneer ben je meestal beschikbaar?", + availableShops: "Beschikbare skate shops ({{count}})", + challengeDescPlaceholder: "Optionele beschrijving...", + challenges: "Uitdagingen", + challengesRequired: "Uitdagingen vereist", + challengesRequiredDesc: "Voeg minstens één uitdaging toe die teams moeten voltooien.", + challengesSecret: "Alle uitdagingen zijn GEHEIM tot de startdatum van de competitie. Teams zien ze pas dan!", + challengeTitlePlaceholder: "Titel van de uitdaging, bijv. 'Kickflip een 10 trap'", + citiesLabel: "Steden", + citiesOnTour: "Steden op de Tour", + cityPlaceholder: "bijv. Berlijn, Duitsland", + cityRegion: "Stad / regio", + cityRequired: "Stad/regio vereist", + cityRequiredDesc: "Voer je stad of regio in.", + clipAnyUrl: "🔗 Elke URL", + clipBlossom: "📦 Blossom-upload", + clipInstagram: "📸 Instagram", + clipYouTube: "▶️ YouTube", + competitionDates: "Competitiedata", + competitionDatesWarning: "⚠️ Alle uitdagingen zijn GEHEIM tot de startdatum! Teams zien de uitdagingen pas als de competitie begint.", + competitionLocations: "Competitielocaties", + competitionLocationsDesc: "Waar strijden de teams? Voeg alle betrokken steden en landen toe.", + coordsHint: "Coördinaten zijn optioneel. Voeg ze toe om je ontmoetingspunt op de kaart te zetten.", + countriesLabel: "Landen", + countriesRequired: "Landen vereist", + countriesRequiredDesc: "Voeg minstens één land toe voor je internationale tour.", + createdDestruction: "💀 WORLD DESTRUCTION TOUR AANGEMAAKT!", + createdDestructionDesc: "Teams kunnen zich inschrijven. Uitdagingen onthuld op de startdatum!", + createDestructionTour: "World Destruction Tour aanmaken", + createdInternational: "✈️ Internationale tour aangemaakt!", + createdInternationalDesc: "Je wereldavontuur staat online! Kom in contact met skaters wereldwijd.", + createdLocal: "🏠 Lokale tour aangemaakt!", + createdLocalDesc: "Je tour is nu zichtbaar. Skaters kunnen boeken via DM!", + createdNational: "🚐 Nationale tour aangemaakt!", + createdNationalDesc: "Je roadtrip is live! Begin met afstemmen met geïnteresseerde skaters.", + departure: "Vertrek *", + departureRequired: "Vertrekdatum vereist", + departureRequiredDesc: "Stel in wanneer de reis vertrekt zodat skaters kunnen plannen en boeken.", + descriptionPlaceholder: "Beschrijf wat skaters gaan meemaken: spots die je bezoekt, sfeer, wat je tour uniek maakt...", + destructionDesc: "Zet je wereldwijde KOTR-competitie op — jij bepaalt ALLES!", + discountHint: "Deelnemers aan de tour kunnen hun boekingsbevestiging in de shop tonen om deze korting te krijgen", + discountPercentage: "Kortingspercentage", + dropTour: "Een tour plaatsen", + duration: "Duur", + durationHintDestruction: "Hoe lang duurt de competitie? (1-12 maanden)", + durationHintInternational: "Hoeveel weken duurt het avontuur? (tot 2 maanden)", + durationHintLocal: "Hoe lang duurt je typische tour?", + durationHintNational: "Hoeveel dagen duurt de roadtrip?", + durationWeeksMonths: "{{weeks}} weken (~{{months}} maanden)", + editTour: "Tour bewerken", + enable: "Inschakelen", + enabled: "Ingeschakeld", + endBeforeStart: "Einde voor start", + endBeforeStartDesc: "De einddatum van de competitie moet op of na de startdatum liggen.", + endDate: "Einddatum", + entryFeeHint: "Jij houdt 95% • Platform neemt 5% • Laat leeg voor gratis deelname", + entryFeePerTeam: "Toegangsprijs per team (sats)", + entryFeePlaceholder: "bijv. 100000", + entryPrizes: "Deelname en prijzen", + filmPremieres: "Filmpremières van teams", + filmPremieresDesc: "Na de competitie worden de clips van elk team een volledige film die wereldwijd in lokale skate shops in première kan gaan.", + filmPremieresInfo: "🎥 Teams bundelen hun uitdagingsclips tot een definitieve film. Shops kunnen première-events hosten, zo wordt wereldwijde competitie verbonden met lokale communities.", + filmReleaseDate: "Releasedatum van de film (optioneel)", + filmReleaseDateHint: "Wanneer de films beschikbaar zijn. Laat leeg om direct na afloop van de competitie te releasen.", + fixedSession: "Vaste sessie", + fixedSessionDesc: "Een vaste datum en tijd", + flexible: "Flexibel", + flexibleDesc: "Boek wanneer je wilt via DM", + hide: "Verbergen", + howDestruction1: "• Wereldwijde teamcompetitie - tot 12 maanden lang", + howDestruction2: "• JIJ bepaalt uitdagingen, punten, prijzen - wij bieden alleen het platform", + howDestruction3: "• Alle uitdagingen zijn GEHEIM tot de startdatum van de competitie", + howDestruction4: "• Clips via Blossom-upload OF externe links (YouTube, Instagram, elke URL)", + howDestruction5: "• Alleen gevorderd niveau - alle spottypes automatisch inbegrepen", + howDestruction6: "• Platform neemt slechts 5% van de deelnamekosten (NIET de prijzenpot)", + howDestructionTitle: "💀 WORLD DESTRUCTION TOUR - KOTR-stijl", + howInternational1: "• Grensoverschrijdende avonturen in meerdere landen", + howInternational2: "• Jij bepaalt de prijs — platform neemt slechts 5%", + howInternational3: "• Stel vertrek- en retourdatums in zodat de crew vluchten kan boeken", + howInternational4: "• Verbind skaters van over de hele wereld", + howInternational5: "• Creëer onvergetelijke wereldavonturen!", + howInternationalTitle: "Hoe internationale tours werken", + howItWorks: "Hoe het werkt:", + howLocal1: "• Jij bepaalt je prijs — platform neemt 10%", + howLocal2: "• Verborgen spots blijven verborgen — je toont ze persoonlijk", + howLocal3: "• Draai een geplande sessie of houd het flexibel / op afspraak", + howLocal4: "• Skaters boeken via DM, betalen in Lightning en kunnen het aan hun agenda toevoegen", + howLocal5: "• Bouw je reputatie op met reviews en zaps", + howLocalTitle: "Hoe lokale tours werken", + howNational1: "• Roadtrips langs meerdere steden in je land", + howNational2: "• Jij bepaalt de prijs — platform neemt slechts 7%", + howNational3: "• Stel reisdatums in zodat skaters vrij kunnen nemen en kunnen reizen", + howNational4: "• Voeg transport-/verblijfinformatie toe voor de crew", + howNational5: "• Bouw legendarische skate-avonturen!", + howNationalTitle: "Hoe nationale tours werken", + imageUploadedDesc: "Je tourafbeelding is geüpload.", + incompleteCoords: "Onvolledige coördinaten", + incompleteCoordsDesc: "Voer zowel breedtegraad als lengtegraad in, of laat beide leeg.", + internationalDetails: "Details van het internationale avontuur", + languagesSelected: "{{count}} geselecteerd", + languagesSpoken: "Gesproken talen", + latOptional: "Breedtegraad (optioneel)", + lngOptional: "Lengtegraad (optioneel)", + loadingProfile: "Profiel laden...", + loadingProfileDesc: "Je NIP-05-verificatiestatus controleren.", + loadingShops: "Shops laden...", + localShopPremieres: "Premières in lokale shops", + localShopPremieresDesc: "Skate shops wereldwijd kunnen filmavonden hosten", + loginToCreate: "Je moet ingelogd zijn om een tour te maken.", + maxGroupSize: "Max. groepsgrootte", + maxTeams: "Max. teams", + maxTeamSize: "Max. teamgrootte", + meetingLocationSet: "Je huidige locatie is ingesteld als ontmoetingspunt.", + meetingPointDesc: "Waar ontmoet je de deelnemers van de tour? Kies een openbare, bekende plek.", + meetingPointLabel: "Ontmoetingspunt", + meetingPointPlaceholder: "bijv. Station Warschauer Straße", + meetingPointRequired: "Ontmoetingspunt vereist", + meetingPointRequiredDesc: "Voer in waar je de deelnemers van de tour ontmoet.", + minTeamSize: "Min. teamgrootte", + noChallenges: "Nog geen uitdagingen", + noChallengesDesc: "Voeg uitdagingen toe die teams moeten voltooien", + noPartnerShop: "Geen partnershop", + noShopsFound: "Nog geen skate shops gevonden op het netwerk.", + noShopsRegistered: "Nog geen skate shops geregistreerd", + onlineRelease: "Online release", + onlineReleaseDesc: "Films ook uitbrengen op YouTube/Nostr", + organizerContact: "Contactgegevens van de organisator", + organizerContactHint: "Dit is zichtbaar voor ingeschreven teams", + organizerContactPlaceholder: "Hoe kunnen teams je bereiken? bijv. Nostr npub, e-mail, Telegram, enz.", + partnerDiscountDesc: "Bied deelnemers van de tour korting bij een lokale skate shop", + partnerStep1: "1. Werk samen met een lokale skate shop die je vertrouwt", + partnerStep2: "2. Stel een kortingspercentage in voor deelnemers van de tour", + partnerStep3: "3. Geef deelnemers na de tour een bevestiging om in de shop te tonen", + partnerStep4: "4. De shop geeft de korting - bouwt community op en trekt bezoekers!", + percentOff: "{{percent}}% KORTING", + photoHint: "Voeg een foto toe van jezelf tijdens het skaten of een vette spot van je tour.", + pickRide: "Kies je ride", + place1: "🥇 1e", + place2: "🥈 2e", + place3: "🥉 3e", + platformFee: "Jij bepaalt de prijs • Platform neemt {{percent}}", + points: "Punten:", + pricePerPerson: "Prijs per persoon (sats)", + pricePlaceholder: "bijv. 25000", + prizeDistribution: "Prijzenverdeling", + prizePoolHint: "Optioneel - totaal beschikbare prijzen", + prizePoolPlaceholder: "bijv. 2000000", + proTipDesc: "Neem voordat je een partnerkorting plaatst contact op met de shop eigenaar via DM om het kortingspercentage af te spreken. Zo weet je zeker dat ze instemmen en de korting voor je deelnemers geven.", + proTipTitle: "💡 Pro-tip: Stem eerst af met de shop!", + return: "Retour", + returnBeforeDeparture: "Retour voor vertrek", + returnBeforeDepartureDesc: "De retourdatum moet op of na de vertrekdatum liggen.", + roadTripDetails: "Roadtrip-details", + schedule: "Planning", + scheduleDesc: "Draai dit als een eenmalige geplande sessie, of houd het flexibel en laat skaters een tijd boeken via DM.", + secretUntilStart: "Geheim tot de start", + selectPartnerShop: "Partnershop selecteren", + sessionDateRequired: "Sessiedatum vereist", + sessionDateRequiredDesc: "Kies de datum en tijd voor je geplande sessie, of schakel over op een flexibel schema.", + sessionDateTime: "Sessiedatum en -tijd", + sessionDateTimeHint: "Skaters zien deze tijd en kunnen die vanuit de tourpagina aan hun agenda toevoegen.", + shopPremieresContact: "Neem rechtstreeks contact op met deze shops om filmpremière-avonden te regelen. Alle afspraken zijn privé.", + shopPremieresHow: "💡 Hoe shoppremières werken: Neem rechtstreeks contact op met shops om première-avonden te regelen. Alle afspraken zijn privé tussen jou en de shops.", + shopsCanRegister: "Shops kunnen zich registreren op /create-shop", + show: "Tonen", + showAllLanguages: "Alle {{count}} talen tonen", + somethingWrong: "Er is iets misgegaan.", + spotTypes: "Soorten spots", + spotTypesRequired: "Spottypes vereist", + spotTypesRequiredDesc: "Selecteer minstens één type spot dat je laat zien.", + startDate: "Startdatum", + startDateRequired: "Startdatum vereist", + startDateRequiredDesc: "Stel in wanneer de competitie begint (uitdagingen worden op deze datum onthuld).", + startingCity: "Startstad", + startingCityPlaceholder: "bijv. Los Angeles, VS", + teamSettings: "Teaminstellingen", + teamsCount: "{{count}} teams", + titlePlaceholder: "bijv. Berlijn Kreuzberg - Underground Spots Tour", + titleRequired: "Titel van tour vereist", + titleRequiredDesc: "Voer een naam in voor je tour.", + totalPercent: "Totaal: {{percent}}%", + totalPrizePool: "Totale prijzenpot (sats)", + tourDesc: "Vertel skaters wat ze kunnen verwachten op je tour", + tourDetails: "Tourdetails", + tourPhoto: "Tourfoto", + tourTitle: "Titel van de tour", + transportDestructionPlaceholder: "Hoe reizen teams tussen locaties? Wordt er transport verzorgd of aanbevolen?", + transportInfo: "Transportinformatie", + transportPlaceholder: "Hoe reizen deelnemers? bijv. 'Busje verzorgd', 'Vlieg naar Barcelona, wij huren een busje', 'Trein tussen steden'", + tripDatesDesc: "Leg de datums vast zodat skaters vrij kunnen vragen, vluchten kunnen boeken en de reis kunnen plannen.", + tripDatesTitle: "Reisdatums", + updated: "Tour bijgewerkt!", + updatedDesc: "Je wijzigingen zijn gepubliceerd.", + upload: "Uploaden", + view: "Bekijken →", + worldDestruction: "World Destruction Tour", + youReceive: "Jij ontvangt: {{amount}} sats per persoon", + }, + editEvent: { + accessDenied: "Toegang geweigerd", + accessDeniedDesc: "Je kunt alleen events bewerken die je zelf hebt aangemaakt.", + backToEvent: "Terug naar event", + detailsDesc: "Werk de informatie over dit event bij. Alle velden met * zijn verplicht.", + eventCover: "Eventomslag", + locationUpdated: "Locatie bijgewerkt.", + loginToEdit: "Je moet ingelogd zijn om dit event te bewerken.", + newSpot: "Nieuwe spot: {{location}}.", + newTime: "Nieuwe tijd: {{date}} om {{time}}.", + saveChanges: "Wijzigingen opslaan", + saving: "Opslaan...", + title: "Event bewerken", + updated: "Event bijgewerkt!", + updatedDesc: "Je wijzigingen zijn gepubliceerd naar het netwerk.", + updateDetails: "Werk de details bij voor {{title}}", + updatedNotified: "Wijzigingen gepubliceerd — {{count}} aanwezigen op de hoogte gebracht.", + updateFailed: "Bijwerken mislukt", + updateMessage: "{{parts}} — bekijk het event voor details.", + }, + editShop: { + accessDeniedDesc: "Je kunt alleen shops bewerken die je zelf hebt aangemaakt.", + backToShop: "Terug naar shop", + detailsDesc: "Werk je shopgegevens bij. Alle velden met * zijn verplicht.", + loginToEdit: "Je moet ingelogd zijn om deze shop te bewerken.", + updated: "Shop bijgewerkt!", + updateDetails: "Werk de details bij voor {{name}}", + }, + editTour: { + accessDeniedDesc: "Je kunt alleen tours bewerken die je zelf hebt aangemaakt.", + loginToEdit: "Je moet ingelogd zijn om deze tour te bewerken.", + }, + eventCard: { + report: "Rapporteren", + }, + eventDetail: { + aCrew: "een crew", + addToCalendar: "Toevoegen aan agenda", + backToEvents: "Terug naar events", + cancelled: "Dit event is geannuleerd", + checkUpdate: "— bekijk de update", + copyFailed: "Kopiëren mislukt", + date: "Datum", + editEvent: "Event bewerken", + eventFallback: "Event", + eventOrganizer: "Eventorganisator", + getDirections: "Route", + linkCopied: "Link gekopieerd", + linkCopiedDesc: "Eventlink gekopieerd naar je klembord — plak hem waar je wilt.", + live: "Live:", + liveMusic: "live muziek", + location: "Locatie", + newLocation: "Nieuwe locatie", + noRsvps: "Geen RSVP's geregistreerd.", + organizer: "Organisator", + rsvpsClosed: "RSVP's zijn gesloten — dit event is geannuleerd door de host.", + seeMap: "Kaart bekijken", + shareEvent: "Event delen", + shareText: "{{title}} — een skate-event op SkateSpots", + shareTextFallback: "Bekijk dit skate-event op SkateSpots", + time: "Tijd", + timeChanged: "Tijd gewijzigd", + updatesFromHost: "Updates van de host", + where: "Waar", + whoCame: "Wie kwamen er", + whosGoing: "Wie gaan er", + }, + events: { + calendar: "Agenda", + createTour: "Tour aanmaken", + events: "Events", + faqFooter: "Vragen? Bekijk de FAQ →", + hosting: "Hosting", + hostingSubtitle: "Je events — RSVP's, updates en snelle bewerkingen", + list: "Lijst", + noEventsMatchFilters: "Geen events komen overeen met je filters. Pas ze aan of wis ze.", + noPast: "Geen afgelopen events", + noPastBody: "Geen afgelopen skate-events gevonden in je huidige filters.", + noTours: "Geen tours gevonden", + noToursBody: "Nog geen skate tours. Maak de eerste en neem skaters mee op spotontdekking!", + noToursMatchFilters: "Geen tours komen overeen met je filters. Pas ze aan of wis ze.", + noUpcoming: "Geen aankomende events", + noUpcomingBody: "Geen aankomende skate-events gevonden. Wees de eerste die er een aanmaakt!", + past: "Afgelopen", + resultsCount: "{{count}} resultaten", + searchCity: "Stad…", + searchEvent: "Naam van event…", + searchTour: "Naam van tour…", + tours: "Tours", + toursSubtitle: "Lokale gidsen, roadtrips en World Destruction-competities", + upcoming: "Aankomend", + }, + eventTypes: { + contest: "Wedstrijd", + demo: "Demo", + jam: "Jam", + meetup: "Meetup", + premiere: "Première", + session: "Sessie", + workshop: "Workshop", + }, + featured: { + active: "Actief", + bodyEvent: "Gratis te plaatsen. Uitgelichte events krijgen een badge en staan bovenaan de evenementenpagina.", + bodyTour: "Gratis te plaatsen. Uitgelichte tours krijgen een badge en staan bovenaan de tourslijst.", + contextEvent: "Je event blijft hoe dan ook gratis vermeld — uitgelicht voegt alleen de badge en boost toe.", + contextTour: "Je tour blijft hoe dan ook gratis vermeld — uitgelicht voegt alleen de badge en boost toe.", + daysRemaining: "Uitgelicht actief · nog {{count}} dagen.", + headingEvent: "Dit event uitlichten", + headingTour: "Deze tour uitlichten", + optional: "optioneel", + platformOwner: "Platformeigenaar — uitgelicht staat altijd aan.", + }, + filters: { + activeCount: "{{count}} actief", + all: "Alle", + allLevels: "Alle niveaus", + eventType: "Type event", + following: "Volgend", + newest: "Nieuwste", + popular: "Populair", + showResults: "Resultaten tonen", + showResultsActive: "Resultaten tonen · {{count}} actief", + skillLevel: "Vaardigheidsniveau", + sortBy: "Sorteren op", + topRated: "Best beoordeeld", + tourCategory: "Tourcategorie", + trusted: "Vertrouwd", + trustLevel: "Vertrouwensniveau", + verified: "Geverifieerd", + }, + food: { + bar: "Bar", + cafe: "Café", + call: "Bellen", + chooseSpot: "Kies een spot...", + directions: "Route", + fastFood: "Fastfood", + foodCourt: "Foodcourt", + locationLabel: "Locatie:", + noneFound: "Geen eetspots gevonden", + noneFoundDesc: "We konden geen restaurants of cafés binnen 1 km van deze spot vinden. Probeer een andere locatie te kiezen.", + placesFound: "{{count}} plekken gevonden binnen 1 km van {{spot}}", + pub: "Pub", + restaurant: "Restaurant", + selectSpot: "Selecteer een skate spot", + selectSpotDesc: "Kies een skate spot uit het dropdownmenu hierboven om nabijgelegen restaurants, cafés en andere eetgelegenheden te vinden.", + selectSpotTitle: "Selecteer een Skate Spot", + subtitle: "Vind plekken om te eten bij je favoriete skate spots", + title: "Eten bij spots", + unknown: "Onbekend", + website: "Website", + }, + rsvp: { + areYouGoing: "Ga je?", + cant: "Kan niet", + cantMakeIt: "Ik kan niet komen", + going: "Ik ga", + goingCount: "gaan", + goingShort: "Gaan", + hostNote: "Je host dit — maar je kunt nog steeds je status instellen.", + interested: "Geïnteresseerd", + interestedCount: "geïnteresseerd", + loginToRsvp: "Log in om te RSVP'en.", + maybe: "Misschien", + toastError: "RSVP'en mislukt", + toastGoing: "Je gaat! 🛹", + toastInterested: "Gemarkeerd als geïnteresseerd.", + toastNotGoing: "Gemarkeerd als niet komend.", + tryAgain: "Probeer het opnieuw.", + }, + shop: { + addNip05Settings: "NIP-05 toevoegen in Instellingen", + adminRemovedReason: "SkateSpots-beheerder heeft shop \"{{name}}\" verwijderd", + areYouOwner: "Ben je de eigenaar van de shop?", + backToMap: "Terug naar kaart", + claimDesc: "Als je eigenaar of beheerder van deze shop bent, kun je hem claimen om eigendom te verifiëren met NIP-05.", + claimNip05Intro: "Om deze shop te claimen, voeg je een NIP-05-identifier toe die overeenkomt met het websitedomein van de shop. Als de shopwebsite bijvoorbeeld is", + claimNip05Your: "dan moet je NIP-05 zijn", + contactShop: "Contact shop", + deleted: "Shop verwijderd", + deletedDesc: "Verwijderingsverzoek naar relays gestuurd. De meeste relays verwijderen deze inhoud.", + deleteDialogDesc: "Dit verwijdert \"{{name}}\" permanent van alle relays. Deze actie kan niet ongedaan worden gemaakt.", + deleteDialogTitle: "Shop verwijderen?", + deletedReason: "Verwijderde shop", + deleteFailed: "Verwijderen mislukt", + deleteShop: "Shop verwijderen", + linkCopied: "Link gekopieerd!", + linkCopiedDesc: "Shoplink gekopieerd naar klembord.", + nip05Required: "⚠️ NIP-05-verificatie vereist om shops te claimen", + opens: "Opent: {{domain}}", + removeAdmin: "Verwijderen (beheerder)", + removed: "Shop verwijderd", + removedDesc: "Deze shop is offline gehaald en wordt verborgen in heel SkateSpots.", + removeDialogDesc: "Als SkateSpots-beheerder haal je \"{{name}}\" offline. Het wordt voor iedereen in de app verborgen en er wordt een verwijderingsverzoek naar relays gestuurd.", + removeDialogTitle: "Deze shop verwijderen? (beheerder)", + removeShop: "Shop verwijderen", + tipMapper: "Beloon de mapper", + tipMapperDesc: "Deze shop is toegevoegd door een communitylid. Zap ze om te bedanken!", + updateNip05: "NIP-05 bijwerken om te claimen", + viewPhotoFull: "Foto op volledig scherm bekijken", + viewPhotoOf: "Foto {{index}} van {{total}} bekijken", + }, + sponsors: { + presentedBy: "Aangeboden door", + }, + tourCard: { + active: "Actief", + completed: "Afgerond", + contactForPrice: "Neem contact op voor prijs", + durationDays: "{{count}} dagen", + durationHours: "{{count}} uur", + durationMonths: "{{count}} maanden", + durationWeeks: "{{count}} weken", + entry: "Deelname: {{amount}} sats", + happeningNow: "Nu bezig", + inDays: "Over {{count}} dagen", + inHours: "Over {{count}}u", + inMonths: "Over {{count}} maanden", + inWeeks: "Over {{count}} weken", + maxGroup: "Max. {{count}}", + price: "{{amount}} sats", + prizePool: "{{amount}} sats", + registrationOpen: "Inschrijving open", + startingSoon: "Begint binnenkort", + teamsMax: "max. {{count}} teams", + tomorrow: "Morgen", + worldwide: "Wereldwijd", + }, + tourDetail: { + about: "Over deze tour", + availability: "Beschikbaarheid", + competitionWindow: "Competitievenster", + contactToBook: "Neem contact op met gids om te boeken", + discountAt: "{{percent}}% KORTING bij {{shop}}", + duration: "Duur", + languages: "Talen", + loginToBook: "Log in om te boeken", + loginToBookDesc: "Log in om contact op te nemen met de gids en deze tour te boeken", + maxGroup: "Max. groep", + meetingPoint: "Ontmoetingspunt", + notFound: "Tour niet gevonden", + notFoundDesc: "Deze tour is mogelijk verwijderd of bestaat niet.", + organizer: "Organisator", + partnerDiscount: "Korting bij partnershop", + partnerDiscountDesc: "Boek deze tour om korting te krijgen bij de partner skate shop. Toon je boekingsbevestiging aan het winkelpersoneel.", + people: "{{count}} personen", + perPerson: "per persoon", + price: "Prijs", + runsAbout: "Duurt ongeveer {{duration}}", + scheduledSession: "Geplande sessie", + shareText: "Bekijk deze lokale skate tour: {{title}}", + skillLevel: "Vaardigheidsniveau", + spotTypes: "Soorten spots", + tourGuide: "Tourgids", + tourSponsors: "Toursponsors", + tripDates: "Reisdatums", + viewProfile: "Profiel bekijken", + }, + updates: { + admin: "Beheerder", + adminNote: "Je plaatst als SkateSpots-beheerder. Het wordt duidelijk gelabeld als een beheerdersmelding, niet van de host.", + kindCancelled: "Geannuleerd", + kindNewSpot: "Nieuwe spot", + kindNewTime: "Nieuwe tijd", + kindUpdate: "Update", + loading: "Updates laden…", + notifiedCount: "{{count}} mensen op de hoogte gebracht.", + notifiedEveryone: "Iedereen ziet het op het event.", + notifiesRsvps: "Brengt {{count}} RSVP's op de hoogte", + noUpdates: "Nog geen updates van de host. RSVP en je wordt op de hoogte gebracht als er iets verandert.", + placeholder: "Regen — verplaatst naar zondag 14:00. Verzamelen bij de achterrand…", + post: "Plaatsen", + postAdminUpdate: "Een beheerdersupdate plaatsen", + posted: "Update geplaatst", + postError: "Update plaatsen mislukt", + postUpdate: "Een update plaatsen", + tryAgain: "Probeer het opnieuw.", + visibleToEveryone: "Zichtbaar voor iedereen op dit event", + }, + destination: { + bitcoin: "Bitcoin", + closeSearch: "Zoeken sluiten", + nothingMatches: "Niets komt overeen met “{{query}}”.", + placeholder: "Zoek spots, shops, Bitcoin-handelaren…", + shop: "Shop", + spot: "Spot", + typeChars: "Typ minstens 2 tekens. Zoekt in skate spots, skate shops en Bitcoin-handelaren.", + typeCharsNear: "Typ minstens 2 tekens. Zoekt in skate spots, skate shops en Bitcoin-handelaren in de buurt.", + }, + dateWindow: { + any: "Elke", + anytime: "Altijd", + month: "Deze maand", + monthShort: "Maand", + today: "Vandaag", + todayShort: "Vandaag", + week: "Deze week", + weekend: "Weekend", + weekendShort: "Wknd", + weekShort: "Week", + }, + }, + marketUi: { + gearSwap: { + title: "Gear Swap", + subtitle: "Koop en verkoop tweedehands skategear met andere skaters", + listGear: "Gear aanbieden", + searchPlaceholder: "Gear zoeken...", + allCategories: "Alle categorieën", + forSale: "Te koop", + wtb: "WTB", + trust: "Vertrouwen", + filterByTrust: "Filteren op vertrouwen", + allSellers: "Alle verkopers", + verifiedOnly: "Alleen geverifieerd", + trustedPlus: "Vertrouwd+", + followingOnly: "Alleen gevolgd", + pickupOrShip: "Ophalen of verzenden", + localPickup: "Lokaal ophalen", + ships: "Verzenden", + sortBy: "Sorteren op", + newest: "Nieuwste", + priceLowHigh: "Prijs: laag → hoog", + priceHighLow: "Prijs: hoog → laag", + trustScore: "Vertrouwensscore", + nearest: "Dichtstbij (lokaal)", + listingFound: "{{count}} advertentie gevonden", + listingsFound: "{{count}} advertenties gevonden", + loadFailed: "Advertenties laden mislukt", + tryLater: "Probeer het later opnieuw.", + noneTitle: "Geen advertenties gevonden", + noneFiltered: "Geen gear komt overeen met je huidige filters. Wis ze of zoek iets anders.", + noneFirst: "Wees de eerste die je gear aanbiedt — decks, trucks, wheels, schoenen, alles van skate!", + listYourGear: "Bied je gear aan", + faqLink: "Vragen? Bekijk de FAQ →", + }, + hub: { + browse: "Bladeren", + selling: "Verkopen", + myTrades: "Mijn transacties", + reputation: "Reputatie", + loginListings: "Log in om je advertenties te beheren.", + loginReputation: "Log in om je reputatie en reviews te zien.", + }, + marketplace: { + heroTitle: "Shops en Marketplace", + heroBefore: "Onze marketplace wordt mogelijk gemaakt door", + heroAfter: "- een gedecentraliseerde marketplace op Nostr. Skate shops kunnen hun producten aanbieden en jij kunt tweedehands gear rechtstreeks met Bitcoin kopen/verkopen.", + whatIsTitle: "Wat is Plebeian Market?", + whatIsBody: "Plebeian Market is een gedecentraliseerde marketplace gebouwd op Nostr. Koop en verkoop skateboardgear rechtstreeks met andere skaters met Bitcoin. Geen tussenpersonen, geen kosten, totale vrijheid.", + noFeesTitle: "Geen kosten", + noFeesBody: "Geen platform dat 30% pakt. Directe peer-to-peer verkoop.", + bitcoinTitle: "Bitcoin-betalingen", + bitcoinBody: "Betaal met Bitcoin. Snel, veilig, wereldwijd.", + decentralizedTitle: "Gedecentraliseerd", + decentralizedBody: "Gebouwd op Nostr. Geen bedrijf dat het beheert.", + visit: "Bezoek Plebeian Market", + buySellTitle: "Wat je kunt kopen en verkopen", + catCompletes: "Complete decks", + preBuilt: "Voorgemonteerde completes", + customSetups: "Custom setups", + beginnerBoards: "Beginnersboards", + catParts: "Deck-onderdelen", + decks: "Decks", + trucks: "Trucks", + wheels: "Wheels", + bearings: "Bearings", + gripTape: "Griptape", + hardware: "Hardware", + catApparel: "Kleding en bescherming", + skateShoes: "Skateschoenen", + clothing: "Kleding", + helmets: "Helmen", + pads: "Pads", + backpacks: "Rugzakken", + catAccessories: "Accessoires", + tools: "Gereedschap", + wax: "Wax", + rails: "Rails", + stickers: "Stickers", + videos: "Video's", + magazines: "Tijdschriften", + howItWorks: "Hoe het werkt", + step1Title: "Blader door producten", + step1Body: "Bezoek Plebeian Market en blader door skateboardgear van shops en particulieren wereldwijd.", + step2Title: "Neem contact op met verkopers", + step2Body: "Stuur verkopers rechtstreeks een bericht via Nostr. Onderhandel over prijzen, stel vragen, regel verzending.", + step3Title: "Betaal met Bitcoin", + step3Body: "Rond je aankoop af met Bitcoin Lightning voor directe betalingen met lage kosten.", + step4Title: "Laat een beoordeling achter", + step4Body: "Beoordeel je ervaring en bouw de verkopersreputatie op Nostr op. Je reviews helpen de community.", + needBitcoinTitle: "Bitcoin nodig?", + needBitcoinBefore: "Je hebt een Lightning-wallet met wat sats nodig om aankopen te doen. Bekijk de", + onboardingGuide: "onboardinggids", + needBitcoinAfter: "voor wallet-aanbevelingen.", + ownShopTitle: "Heb je een skate shop?", + ownShopBody: "Zet je shop op SkateSpots en verkoop je producten op Plebeian Market. Bereik klanten wereldwijd zonder platformkosten.", + addShop: "Voeg je shop toe", + startSelling: "Begin met verkopen", + }, + listingDetail: { + notFound: "Advertentie niet gevonden", + notFoundBody: "Hij is misschien verwijderd, of de link is verkeerd.", + backToGearSwap: "Terug naar Gear Swap", + gearSwap: "Gear Swap", + viewPhoto: "Foto {{n}} bekijken", + photoAlt: "{{title}} — foto {{n}}", + wantToBuy: "WIL KOPEN", + sold: "VERKOCHT", + description: "Beschrijving", + usuallyHere: "Meestal hier {{availability}}", + listed: "Geplaatst {{date}}", + listingCountOne: "{{count}} advertentie · {{age}}d oud", + listingCountMany: "{{count}} advertenties · {{age}}d oud", + relistActive: "Opnieuw als actief plaatsen", + markSold: "Markeer als verkocht", + deleteListing: "Advertentie verwijderen", + makeOffer: "Een bod doen", + shareListing: "Advertentie delen", + unknown: "Onbekend", + linkCopied: "Link gekopieerd", + linkCopiedBody: "Deel hem met een skater.", + copyFailed: "Kon de link niet kopiëren", + relisted: "Opnieuw geplaatst", + relistedBody: "Je advertentie is weer actief.", + couldNotUpdate: "Kon niet bijwerken", + somethingWrong: "Er is iets misgegaan", + }, + create: { + imageUploaded: "Afbeelding geüpload", + uploadFailed: "Upload mislukt", + failed: "Mislukt", + cooldownActive: "Cooldown actief", + cooldownWait: "Wacht {{time}} voordat je een nieuwe advertentie plaatst", + limitReached: "Advertentielimiet bereikt", + limitReachedBody: "Je hebt je maandelijkse limiet van {{limit}} advertenties bereikt", + feeRequired: "Vergoeding vereist", + feeRequiredBody: "Betaal de anti-spamvergoeding om door te gaan", + titleRequired: "Titel vereist", + categoryRequired: "Categorie vereist", + photoRequired: "Foto vereist", + photoRequiredBody: "Minstens één foto is vereist bij het verkopen van gear", + nip05Required: "NIP-05-verificatie vereist", + nip05RequiredBody: "Je hebt een geverifieerd Nostr-adres nodig om gear aan te bieden", + priceRequired: "Prijs vereist voor advertenties met vaste prijs", + sizeRequired: "Maat vereist", + sizeRequiredBody: "Selecteer een maat voor {{category}}", + conditionRequired: "Staat vereist", + conditionRequiredBody: "Selecteer de staat van je {{category}}", + wtbPosted: "Gezocht geplaatst!", + wtbPostedBody: "Verkopers kunnen je verzoek vinden.", + listingCreated: "Advertentie aangemaakt!", + listingCreatedBody: "Je gear staat nu te koop.", + publishFailed: "Publiceren mislukt", + loginRequired: "Inloggen vereist", + loginRequiredBody: "Je moet ingelogd zijn om gear aan te bieden.", + backToStash: "Terug naar Stash", + backToSpot: "Terug naar {{title}}", + backToMarketplace: "Terug naar Marketplace", + backToMap: "Terug naar kaart", + wantToBuy: "Gezocht", + listYourGear: "Bied je gear aan", + wtbSubtitle: "Vertel de community naar welke gear je op zoek bent", + sellSubtitle: "Verkoop skateboardgear aan de community", + fromStashTitle: "Advertentie vanuit je Stash", + fromStashBody: "Voorgevuld met de gegevens van je Stash-item. Controleer en kies een ontmoetingsplek!", + nip05Banner: "Om spam te voorkomen en kopers te beschermen heb je een geverifieerd Nostr-adres (NIP-05) nodig om gear aan te bieden.", + verifiedLabel: "Geverifieerd:", + checkingTrust: "Je vertrouwensniveau controleren...", + trustLevel: "Vertrouwensniveau:", + trusted: "Vertrouwd", + active: "Actief", + newcomer: "Nieuwkomer", + newUser: "Nieuwe gebruiker", + remaining: "nog {{remaining}} van {{limit}} advertenties deze maand", + cooldownBody: "Nieuwe gebruikers hebben een cooldown van 24 uur tussen advertenties.", + timeRemaining: "Resterende tijd: {{time}}", + monthlyLimitTitle: "Maandelijkse limiet bereikt", + monthlyLimitBody: "Je hebt je limiet van {{limit}} advertenties deze maand bereikt. Bouw je reputatie op door spots aan te maken of verkopen af te ronden om je limiet te verhogen.", + powAccepted: "Proof of work geaccepteerd!", + feePaid: "Vergoeding betaald!", + canCreateNow: "Je kunt nu je advertentie aanmaken.", + whatDoTitle: "Wat wil je doen?", + sellGear: "GEAR VERKOPEN", + categoryTitle: "Categorie *", + categoryHint: "Wat voor soort gear?", + detailsTitle: "Geargegevens", + detailsWtbHint: "Beschrijf waar je naar op zoek bent", + detailsSellHint: "Vertel kopers over je item", + titleLabel: "Titel *", + titlePlaceholderWtb: "Op zoek naar 8.0\" deck", + titlePlaceholderSell: "Bijna nieuwe Palace Deck 8.25\"", + summaryLabel: "Korte samenvatting", + summaryPlaceholderWtb: "Elk merk, liever minimale graphics", + summaryPlaceholderSell: "Uitstekende staat, nauwelijks gebruikt", + descriptionLabel: "Beschrijving", + descriptionPlaceholderWtb: "Beschrijf precies waar je naar op zoek bent - merkenvoorkeuren, eisen aan de staat, enz.", + descriptionPlaceholderSell: "Dit deck met Kerst gekregen maar liever een kleinere maat. Je mag het voor de aankoop gerust proberen!", + fulfilmentLabel: "Hoe wordt het geleverd?", + pickup: "Ophalen", + pickupHint: "Lokaal afspreken", + ships: "Verzenden", + shipsHint: "Opsturen", + both: "Beide", + bothHint: "Of", + addressNote: "We verzamelen nooit je adres — deel het voor verzending privé in de transactiechat.", + postageLabel: "Wie betaalt verzendkosten?", + requireEscrow: "Escrow vereisen", + requireEscrowHint: "Vraag de koper af te rekenen via Cashu-escrow.", + postageBuyer: "Koper betaalt", + postageSeller: "Ik betaal", + postageSplit: "Delen", + sizeLabel: "Maat", + selectSize: "Maat selecteren", + truckHeight: "Hoogte trucks", + selectHeight: "Hoogte selecteren", + wheelHardness: "Wheelhardheid", + selectHardness: "Hardheid selecteren", + pricingTitle: "Prijzen", + pricingWtbHint: "Hoe wil je betalen?", + pricingSellHint: "Hoe wil je verkopen?", + priceLabel: "Prijs *", + currencyLabel: "Valuta", + photosTitle: "Foto's", + photosSellHint: "Minstens één foto is vereist", + photosWtbHint: "Optioneel - voeg referentieafbeeldingen toe", + productPhoto: "Product {{n}}", + upload: "Uploaden", + photosNote: "Voeg tot 5 foto's toe. De eerste afbeelding wordt de hoofdfoto.", + pickupLocationTitle: "Ophaallocatie", + pickupLocationHint: "Koppel aan een skate spot voor makkelijk afspreken", + searchSpots: "Spots zoeken...", + noSpotsFound: "Geen spots gevonden. Probeer een andere zoekopdracht.", + availabilityLabel: "Wanneer ben je meestal beschikbaar?", + availabilityPlaceholder: "Weekends 10:00-14:00, di/do avond", + availabilityHint: "Helpt kopers afspraken met je te plannen", + durationTitle: "Looptijd van de advertentie", + durationHint: "Hoe lang moet deze advertentie actief blijven?", + publishing: "Publiceren...", + checkingEligibility: "Geschiktheid controleren...", + cooldownButton: "COOLDOWN: {{time}}", + limitReachedButton: "LIMIET BEREIKT", + payFeeButton: "BETAAL VERGOEDING OM DOOR TE GAAN", + postWtbButton: "GEZOCHT PLAATSEN", + listForSaleButton: "GEAR TE KOOP AANBIEDEN", + }, + trades: { + title: "Mijn transacties", + loginBody: "Log in om je marketplace-transacties en reputatie te beheren.", + subtitle: "Bevestigingen, verzoeken en de reputatie die ze opbouwen. Betaling regel je met de andere skater — de app registreert alleen de deal.", + actionNeeded: "Actie vereist", + askedToConfirmSale: "vroeg je een verkoop te bevestigen", + recordedSale: "registreerde een verkoop — bevestig jouw kant", + confirmSale: "Verkoop bevestigen", + confirm: "Bevestigen", + nothingWaiting: "Er wacht nu niets op je. 🛹", + yourRecords: "Je transactieregisters", + noTrades: "Nog geen transacties. Sluit een deal en bevestig hem om reputatie op te bouwen.", + browseGearSwap: "Blader door Gear Swap", + roleSold: "Verkocht", + roleBought: "Gekocht", + roleTrade: "Ruilen", + with: "met", + viewListing: "Advertentie bekijken", + revoke: "Intrekken", + revokeTitle: "Dit transactieregister intrekken?", + revokeBody: "Het telt dan niet meer mee voor je reputatie. De andere partij houdt zijn eigen verklaring. Gebruik dit voor een betwiste of foutieve deal.", + revokeNote: "Ingetrokken door de auteur.", + revoked: "Transactieregister ingetrokken", + revokedBody: "Het telt niet meer mee voor de reputatie.", + revokeFailed: "Kon de transactie niet intrekken", + saleConfirmed: "Verkoop bevestigd", + saleConfirmedBody: "Zij kunnen nu hun kant bevestigen.", + saleConfirmFailed: "Kon de verkoop niet bevestigen", + tradeConfirmed: "Transactie bevestigd", + tradeConfirmedBody: "Reputatie bijgewerkt voor jullie beiden.", + tradeConfirmFailed: "Kon de transactie niet bevestigen", + somethingWrong: "Er is iets misgegaan.", + }, + card: { + listingDeleted: "Advertentie verwijderd", + listingRemoved: "Advertentie verwijderd", + listingDeletedBody: "Je advertentie is verwijderd. Relays die verwijderingen respecteren, serveren hem niet meer.", + listingRemovedBody: "Deze advertentie is offline gehaald en wordt verborgen in heel SkateSpots.", + removeFailed: "Verwijderen mislukt", + somethingWrong: "Er is iets misgegaan", + markedSold: "Gemarkeerd als verkocht", + markedSoldBody: "Je advertentie wordt nu als verkocht getoond.", + couldNotUpdate: "Kon niet bijwerken", + relisted: "Opnieuw geplaatst", + relistedBody: "Je advertentie is weer actief.", + listingOptions: "Advertentie-opties", + report: "Rapporteren", + removeAdmin: "Verwijderen (beheerder)", + postage: "verzendkosten", + newSeller: "Nieuwe verkoper", + saleOne: "{{count}} verkoop", + saleMany: "{{count}} verkopen", + iHaveThis: "Ik heb dit!", + deleteTitle: "\"{{title}}\" verwijderen?", + adminRemoveTitle: "Deze advertentie verwijderen? (beheerder)", + deleteBody: "Dit vraagt relays om je advertentie \"{{title}}\" te verwijderen. Het kan hiervandaan niet ongedaan worden gemaakt — je zou een nieuwe moeten aanmaken.", + adminRemoveBody: "Als SkateSpots-beheerder haal je \"{{title}}\" offline. Het wordt voor iedereen in de app verborgen en er wordt een verwijderingsverzoek naar relays gestuurd.", + deleting: "Verwijderen…", + removing: "Verwijderen…", + deleteListing: "Advertentie verwijderen", + removeListing: "Advertentie verwijderen", + reportCount: "{{count}} melding", + reports: "{{count}} meldingen", + viewTitle: "{{title}} bekijken", + reportListing: "Advertentie rapporteren", + manageListing: "Advertentie beheren", + trusted: "Vertrouwd", + daysOld: "{{n}}d oud", + monthsOld: "{{n}}mnd oud", + yearsOld: "{{n}}j oud", + listingsCount: "{{count}} advertenties", + postageBuyer: "verzendkosten: koper", + postageSeller: "verzendkosten: verkoper", + postageSplit: "verzendkosten: gedeeld", + powTitle: "NIP-13 proof of work — gratis anti-spam", + verifiedTradeOne: "{{count}} geverifieerde transactie", + verifiedTrades: "{{count}} geverifieerde transacties", + reportSubmitted: "Melding verstuurd", + reportSubmittedBody: "Bedankt dat je de marketplace veilig houdt.", + reportFailed: "Melding versturen mislukt", + selectReason: "Selecteer een reden", + reportDialogBody: "Help de marketplace veilig te houden door ongepaste of misleidende advertenties te melden.", + reasonLabel: "Reden voor melding *", + detailsLabel: "Extra details (optioneel)", + detailsPlaceholder: "Geef eventuele extra context die kan helpen...", + reportNote: "Meldingen worden op Nostr gepubliceerd en helpen de community problematische advertenties te identificeren. Advertenties met meerdere meldingen kunnen automatisch worden verborgen.", + submitting: "Versturen...", + submitReport: "Melding versturen", + }, + tradeActions: { + tradeConfirmed: "Transactie bevestigd", + tradeConfirmedWithProof: "Een verifieerbaar bewijs is toegevoegd — dit telt mee voor geverifieerde transacties.", + tradeConfirmedBody: "Reputatie bijgewerkt voor jullie beiden.", + tradeConfirmFailed: "Kon de transactie niet bevestigen", + somethingWrong: "Er is iets misgegaan.", + requestNote: "Bevestig alsjeblieft onze transactie voor \"{{title}}\".", + requestSent: "Bevestiging aangevraagd", + requestSentBody: "De verkoper kan nu de verkoop bevestigen en beide reputaties opbouwen.", + requestFailed: "Kon het verzoek niet versturen", + escrowRefunded: "Escrow terugbetaald", + escrowRefundedBody: "Het geld staat weer in je Cashu-wallet.", + escrowRefundFailed: "Kon escrow niet terugbetalen", + confirmThisTrade: "Deze transactie bevestigen", + escrowAndRequest: "Escrow en verzoek", + shipsEscrowHint: "Verzenddeal — gebruik escrow zodat geen van beide partijen in het niets verzendt. Deel je adres privé in de transactiechat, nooit hier.", + shipsHint: "Verzenddeal — gebruik bij voorkeur escrow als de verkoper dat aanbiedt, en deel je adres alleen in de chat.", + askSeller: "Vraag verkoper te bevestigen", + waitingSeller: "Bevestiging aangevraagd — wacht op de verkoper.", + refundEscrow: "Escrow terugbetalen", + buyWithSats: "Kopen met sats", + depositTitle: "Waarborg (optioneel)", + payDeposit: "Waarborg betalen", + depositBefore: "Een ruil heeft geen factuur, dus zo krijgt het een", + verifiableCost: "verifieerbare kost", + depositAfter: ". Terugbetaling bij levering (of gebruik Cashu-escrow voor automatische terugbetaling). ⚠️ Bewijst toewijding, niet levering.", + depositPaid: "Waarborg betaald", + depositPaidBody: "Opgeslagen — het wordt toegevoegd wanneer de transactie wordt bevestigd.", + paid: "Betaald ⚡", + paidWithProof: "Verifieerbaar bewijs opgeslagen — bevestig de transactie om het te laten meetellen.", + paidBody: "Vraag de verkoper de transactie te bevestigen zodat het voor jullie beiden meetelt.", + }, + offers: { + accepted: "Geaccepteerd", + declined: "Afgewezen", + withdrawn: "Ingetrokken", + open: "Open", + noAmount: "geen bedrag", + titleOwner: "Biedingen ({{count}})", + titleBuyer: "Je onderhandelingen", + you: "Jij", + them: "Zij", + paidAskConfirm: "Betaald — vraag de verkoper de transactie te bevestigen.", + payWithSats: "Betalen met sats", + accept: "Accepteren", + decline: "Afwijzen", + counter: "Tegenbod", + counterPlaceholder: "Je tegenbod (sats)", + send: "Versturen", + counterItemPlaceholder: "…of doe een tegenbod met een item om te ruilen (optioneel)", + waitingOn: "Wachten op", + waitingOnSuffix: "— je bent weer aan de beurt als zij een tegenbod doen.", + withdraw: "Intrekken", + dmAccepted: "✅ Je bod is geaccepteerd! Stuur een bericht om de overdracht te regelen.", + dmDeclined: "❌ Je bod is afgewezen.", + offerAccepted: "Bod geaccepteerd", + offerDeclined: "Bod afgewezen", + respondFailed: "Kon niet reageren", + somethingWrong: "Er is iets misgegaan.", + offerWithdrawn: "Bod ingetrokken", + withdrawFailed: "Kon niet intrekken", + enterAmountOrItem: "Voer een bedrag of een item om te ruilen in", + counterDm: "Tegenbod", + counterSent: "Tegenbod verstuurd", + counterSentBody: "Zij zijn nu aan de beurt.", + counterFailed: "Kon het tegenbod niet versturen", + }, + offer: { + validAmount: "Voer een geldig bedrag in", + describeOffer: "Beschrijf je bod", + describeOfferBody: "Voeg een bedrag, een item om te ruilen of een bericht toe.", + dmAmount: " voor {{amount}} sats", + dmItem: " (aanbod: {{item}})", + dmBody: "🛹 Nieuw bod op je advertentie \"{{title}}\"{{amount}}{{item}}.{{note}}", + sent: "Bod verstuurd", + sentBody: "{{sellerName}} kan het accepteren of afwijzen.", + sendFailed: "Kon het bod niet versturen", + somethingWrong: "Er is iets misgegaan.", + title: "Een bod doen", + description: "Bied sats of ruil iets — {{sellerName}} kan accepteren, afwijzen of een tegenbod doen. De overdracht regel je onderling.", + amountLabel: "Bedrag (sats, optioneel)", + amountPlaceholder: "bijv. 45000", + itemLabel: "Of iets ruilen (optioneel)", + itemPlaceholder: "bijv. mijn 8.25 deck + reservewheels", + itemHint: "Ruilen? Zet hier wat je aanbiedt — je kunt het combineren met sats.", + messageLabel: "Bericht (optioneel)", + messagePlaceholder: "Iets wat de verkoper moet weten…", + send: "Bod versturen", + }, + markSold: { + enterBuyer: "Voer de npub van de koper in", + dealClosed: "Deal gesloten 🎉", + dealClosedBody: "Advertentie als verkocht gemarkeerd en de transactie is gepubliceerd voor de reputatie.", + closeFailed: "Kon de deal niet sluiten", + somethingWrong: "Er is iets misgegaan.", + title: "Sluit de deal", + description: "Markeert deze advertentie als verkocht en registreert een ondertekende transactieverklaring voor jou en de koper.", + buyerLabel: "npub van koper", + methodLabel: "Hoe is het betaald? (zelf gerapporteerd)", + amountLabel: "Bedrag in sats (optioneel)", + submit: "Markeer als verkocht", + }, + handoff: { + title: "Regel de overdracht", + suggest: "Stel een tijd en plek voor", + suggestDm: "Hoi! Ik wil \"{{title}}\" kopen. Stel een tijd en plek voor om af te spreken — het liefst op een openbare skate spot.", + orMeetAt: "Of spreek af bij een nabijgelegen openbare spot:", + spotDm: "Hoi! Ik wil \"{{title}}\" kopen. Zullen we afspreken bij {{spot}}? {{url}}", + shareDelivery: "Deel bezorggegevens", + deliveryDm: "Hoi! Ik wil \"{{title}}\" kopen. Hier zijn mijn bezorggegevens:\n\nNaam:\nAdres:\n\n(Deel alleen wat de koerier nodig heeft.)", + useLocker: "Gebruik een locker / pakketpunt", + lockerDm: "Hoi! Ik wil \"{{title}}\" kopen. Kunnen we een pakketautomaat / pakketpunt gebruiken in plaats van een huisadres?", + noteBefore: "Deze gegevens blijven in de privéchat — SkateSpots ziet ze nooit. Gebruik voor verzenddeals bij voorkeur", + escrow: "escrow", + noteMiddle: ", en", + neverPay: "betaal nooit buiten de kanalen van de app", + noteAfter: ". Spreek af op een openbare plek.", + }, + shipping: { + noCounterparty: "Nog geen tegenpartij", + noCounterpartyBody: "De verkoper moet eerst de verkoop registreren (met de koper erbij).", + markedShipped: "Gemarkeerd als verzonden", + markedReceived: "Gemarkeerd als ontvangen", + issueReported: "Probleem gemeld", + receivedBody: "Bedankt — dit geeft escrow niet vrij; reken direct af met de verkoper.", + notifiedBody: "De andere partij is op de hoogte gebracht.", + updateFailed: "Kon niet bijwerken", + somethingWrong: "Er is iets misgegaan.", + title: "Verzending", + shipped: "verzonden", + received: "ontvangen", + issue: "probleem", + trackingPlaceholder: "Trackingnummer (optioneel)", + iShipped: "Ik heb het verzonden", + iReceived: "Ik heb het ontvangen", + reportIssue: "Een probleem melden", + noteBefore: "Zelf gerapporteerd — een logistieke notitie,", + notProof: "geen bewijs", + noteAfter: ". Het markeren van \"ontvangen\" geeft escrow niet vrij. ⚠️ Maak geen foto van een pakket met een zichtbaar adres, en deel een trackingnummer alleen als je het prima vindt dat het openbaar is.", + }, + pay: { + sent: "Betaling verzonden ⚡", + sentWithProof: "Verifieerbaar betalingsbewijs opgeslagen — het telt als betalingsgeverifieerd.", + sentBody: "Laat de verkoper weten — die kan de transactie bevestigen zodat het voor jullie beiden meetelt.", + failed: "Betaling mislukt", + title: "Betalen met sats", + descSendPrefix: "Stuur", + descSendSuffix: "naar {{sellerName}} om deze deal af te rekenen.", + descSettle: "Reken deze deal direct af met {{sellerName}}.", + paid: "Betaald!", + paidBody: "Vraag de verkoper de transactie te bevestigen — twee bevestigingen bouwen beide reputaties op.", + noMethod: "{{sellerName}} heeft geen betaalmethode ingesteld (geen Lightning-factuur of -adres). Stuur een bericht om betaling te regelen.", + ownListing: "Dit is je eigen advertentie.", + paying: "Betalen…", + pay: "Betalen", + payAmount: "{{amount}} sats betalen", + footnote: "Betaalt vanaf je verbonden wallet (NWC, WebLN of Cashu) direct aan {{sellerName}} — SkateSpots houdt het geld nooit vast.", + }, + spamFee: { + invoiceComment: "SkateSpots advertentievergoeding", + generateFailed: "Factuur genereren mislukt", + paymentSuccess: "Betaling geslaagd!", + satsSent: "{{amount}} sats verzonden naar {{name}}", + autoPayFailed: "Automatisch betalen mislukt", + autoPayFailedBody: "Betaal handmatig met de QR-code of factuur", + invoiceCopied: "Factuur gekopieerd!", + copyFailed: "Kopiëren mislukt", + received: "Betaling ontvangen!", + receivedBody: "Je vergoeding van {{amount}} sats is betaald. Je kunt nu je advertentie aanmaken.", + title: "Eenmalige advertentievergoeding", + subtitle: "Als nieuw lid is een kleine vergoeding vereist voor je eerste advertentie.", + whyTitle: "Waarom moet ik betalen?", + spamLabel: "Spampreventie:", + spamBody: "Deze vergoeding houdt bots en oplichters tegen die de marketplace met nep-advertenties overspoelen.", + trustLabel: "Vertrouwen opbouwen:", + trustBody: "Nieuwe accounts moeten toewijding tonen voordat ze kunnen aanbieden. Na een paar succesvolle advertenties vervalt deze vergoeding.", + supportsLabel: "Steunt de community:", + supportsPrefix: "Vergoeding gaat naar", + supportsSpotOwner: " — de persoon die deze spot heeft aangemaakt!", + supportsPlatform: " — helpt SkateSpots draaiende te houden.", + oneTimeFee: "~${{usd}} USD • eenmalige vergoeding", + payToContinue: "Betaal {{amount}} sats om door te gaan", + proveWork: "Lever werk in plaats daarvan — gratis", + proveWorkBody: "Verbruik een paar seconden CPU in plaats van {{amount}} sats. Geen geld, geen wallet — een spambelasting, geen betaling.", + generating: "Factuur genereren...", + processing: "Betaling verwerken...", + qrAlt: "Betalings-QR-code", + copyInvoice: "Factuur kopiëren", + openWallet: "Wallet openen", + payWithWallet: "Betaal met verbonden wallet", + scanHint: "Scan de QR-code met een Lightning-wallet of gebruik de knoppen hierboven", + skipTitle: "Zo sla je deze vergoeding in de toekomst over:", + skip1: "Voeg een skate spot toe aan de kaart", + skip2: "Rond 2-3 succesvolle advertenties af", + skip3: "Bouw je communityreputatie op", + skipNote: "Vertrouwde leden krijgen onbeperkt gratis advertenties!", + }, + reputation: { + highlyTrusted: "Zeer vertrouwde handelaar", + building: "Reputatie opbouwen", + newTrader: "Nieuwe handelaar", + title: "Transacties", + verified: "Geverifieerd", + sales: "Verkopen", + purchases: "Aankopen", + tradeConfirmedOne: "wederzijds bevestigde transactie", + tradeConfirmedMany: "wederzijds bevestigde transacties", + with: "met", + personOne: "persoon", + personMany: "personen", + awaiting: "Wacht op wederzijdse bevestiging", + withPaymentProof: "met een betalingsbewijs", + selfReported: "(zelf gerapporteerd — niet geverifieerd)", + paymentVerified: "betalingsgeverifieerd", + zapReceipt: "(zapbewijs)", + singlePartnerWarning: "Elke bevestiging is met hetzelfde account. Wederzijdse bevestiging is zelf gerapporteerd, dus behandel dit register met zorg.", + lowDiversityWarning: "De meeste bevestigingen komen van heel weinig accounts. Een klein groepje dat elkaar bevestigt kan druk lijken — behandel dit register met zorg.", + ringWarning: "Deze accounts handelen vooral met elkaar — een gesloten cluster. Wederzijdse bevestiging binnen een ring is zwak bewijs.", + weighted: "Gewogen op vertrouwen en activiteit", + footnote: "Zelf gerapporteerd en wederzijds ondertekend — een signaal, geen betalingsbewijs.", + }, + reputationPanel: { + reviewOfYou: "Review over jou", + yourRecord: "jouw register", + listing: "Advertentie", + averageOne: "gemiddelde van {{count}} beoordeling", + averageMany: "gemiddelde van {{count}} beoordelingen", + reviewsTitle: "Reviews en transactieregisters", + fromOthers: "{{count}} van anderen", + emptyBefore: "Nog geen transactieregisters. Rond een deal af en bevestig hem in", + emptyAfter: "— elke bevestiging wordt een review op beide profielen.", + }, + recommendations: { + published: "Aanbeveling gepubliceerd", + publishedBody: "Bedankt voor je vertrouwensstem.", + failed: "Kon niet aanbevelen", + somethingWrong: "Er is iets misgegaan.", + title: "Vertrouwde handelaar", + recommendedBy: "Aanbevolen door", + skaterOne: "skater", + skaterMany: "skaters", + none: "Nog geen aanbevelingen.", + youRecommend: "Je beveelt deze handelaar aan ✓", + recommend: "Aanbevelen als vertrouwde handelaar", + }, + notification: { + newOffer: "Nieuw bod", + counterOffer: "Tegenbod", + offerAccepted: "Bod geaccepteerd", + offerDeclined: "Bod afgewezen", + offerWithdrawn: "Bod ingetrokken", + confirmTrade: "Bevestig een transactie", + tradeConfirmed: "Transactie bevestigd", + reviewOffer: "Bekijk het bod", + openListing: "Advertentie openen", + }, + confirmRow: { + rateTrade: "Beoordeel de transactie:", + }, + deckRating: { + title: "{{value}}/10 decks", + aria: "{{n}} van 10", + }, + clink: { + tip: "Fooi in Bitcoin", + copiedBody: "CLINK-code gekopieerd naar klembord.", + copyFailed: "Kopiëren mislukt", + copyFailedBody: "Kon geen toegang krijgen tot het klembord.", + whatIs: "Wat is CLINK?", + tooltipTitle: "Betaal direct met Bitcoin via Nostr", + tooltipBody: "CLINK is een self-custodial betaalcode — geen appaccount, geen tussenpersoon. Scan hem met een compatibele Lightning-wallet en de fooi gaat direct naar hen.", + descRecipient: "Stuur een self-custodial Bitcoin (Lightning)-betaling naar {{recipientName}} — geen tussenpersoon.", + descGeneric: "Stuur een self-custodial Bitcoin (Lightning)-betaling via Nostr — geen tussenpersoon.", + qrAlt: "CLINK Offer-QR-code", + copyCode: "CLINK-code kopiëren", + openWallet: "Openen in CLINK-wallet", + copyToWallet: "Code kopiëren voor je wallet", + priceFixed: "Vast — {{amount}} sats", + priceFixedShort: "Vaste prijs", + priceVariable: "Variabele prijs", + priceVariableCurrency: "Geprijsd in {{currency}}", + priceSpontaneous: "Jij kiest het bedrag", + footnote: "Scan met een CLINK-compatibele wallet (bijv. ShockWallet). Als er niets opent, kopieer de code hierboven — mogelijk heb je geen CLINK-compatibele wallet geïnstalleerd. Geen bewaarder, geen webserver: de factuur wordt direct via Nostr opgevraagd.", + }, + paymentReadiness: { + ready: "Je kunt betaald worden", + notReady: "Stel betalingen in om betaald te worden", + readyBefore: "Je Lightning-adres", + readyAfter: " staat op je profiel — mensen kunnen je direct zappen en betalen.", + silentSet: " Er is ook een Bitcoin Silent Payment-adres ingesteld.", + notReadyBefore: "Voeg een Lightning-adres toe (en optioneel een Bitcoin Silent Payment-adres) aan je", + nostrProfile: "Nostr-profiel", + notReadyAfter: "zodat skaters je kunnen betalen. Het wordt één keer ingesteld en werkt op elk profiel dat je hier hebt.", + }, + seller: { + trade: "Ruilen", + active: "Actief", + markSold: "Markeer als verkocht", + yourListings: "Je advertenties", + activeCount: "{{count}} actief", + listItem: "Een item aanbieden", + loading: "Je advertenties laden…", + empty: "Je hebt nog geen advertenties.", + listFirst: "Bied je eerste item aan", + }, + noffer: { + label: "CLINK Offer-code", + optional: "(optioneel, gevorderd)", + offerId: "Aanbod: {{id}}", + relay: "Relay: {{relay}}", + invalidBefore: "Dat lijkt geen geldige", + invalidAfter: "code.", + valid: "Geldige CLINK-code — er verschijnt een \"Betaal via CLINK\"-knop op je profiel.", + help: "Plak een self-custodial CLINK-betaalcode (bijv. van ShockWallet / Lightning.Pub) om Nostr-native Lightning-betalingen te accepteren — geen webserver of bewaarder.", + learnSpecs: "Specificaties bekijken", + }, + escrowPanel: { + escrowed: "{{amount}} sats in escrow", + mint: "Mint", + refundSinceBefore: "Koper kan terugbetalen sinds", + redeemBefore: "Verkoper kan nu inwisselen · koper betaalt terug na", + noExpiry: "Geen vervaldatum ingesteld op dit token.", + }, + escrowRequest: { + enterAmount: "Voer een escrowbedrag in", + minLock: "Vergrendel voor minstens {{days}} dag", + requestNote: "{{amount}} sats in escrow voor onze transactie — bevestig alsjeblieft de verkoop.", + created: "Escrow aangemaakt 🎉", + createdBody: "{{amount}} sats vergrendeld voor {{days}} dagen. {{sellerName}} kan bij levering inwisselen.", + createFailed: "Kon escrow niet aanmaken", + somethingWrong: "Er is iets misgegaan.", + title: "Deze transactie in escrow zetten", + description: "Geld is vergrendeld voor {{sellerName}} en door jou terug te vorderen als de deal na de deadline niet doorgaat. Vereist een verbonden Lightning-wallet.", + amountLabel: "Bedrag (sats)", + daysLabel: "Koper terugbetaling na (dagen)", + daysHint: "Na zoveel dagen kun je het geld terugvorderen als de verkoper niet heeft geleverd.", + nativeOnly: "Cashu-escrow is alleen beschikbaar in de SkateSpots-app (niet in de webversie).", + lockAndRequest: "Vergrendelen en aanvragen", + }, + }, + labOptions: { + coach: { + skill: { + basics: "Basics", + ollies: "Ollies", + kickflips: "Kickflips", + grinds: "Grinds en slides", + manuals: "Manuals", + inverts: "Inverts", + vert: "Vert/Ramp", + bowl: "Bowl", + street: "Street", + freestyle: "Freestyle", + safety: "Veiligheid", + diy: "DIY-skateonderdelen", + }, + skillDesc: { + basics: "Duwen, stance, balans, draaien", + ollies: "Ollie en variaties (nollie, fakie)", + kickflips: "Kickflip, heelflip en variaties", + grinds: "50-50, 5-0, boardslide en meer", + manuals: "Manual, nose manual, combo's", + inverts: "Invert, handplant, eggplant, andrecht", + vert: "Halfpipe, quarterpipe, drop-ins", + bowl: "Bowl carven, pompen, lines", + street: "Straatobstakels en creativiteit", + freestyle: "Flatground-trucs en flow", + safety: "Hoe je valt, beschermende gear, blessurepreventie", + diy: "Rampen, rails, ledges en andere skateobstakels bouwen", + }, + }, + filmer: { + service: { + miniclips: "Mini-clips", + longparts: "Lange videoparts", + koth: "King of the Road-stijl", + documentaries: "Documentaires", + contests: "Filmen voor wedstrijden", + raw: "Ruwe beelden", + followlines: "Follow / line-filmen", + lines: "Line- en B-roll-filmen", + }, + serviceDesc: { + miniclips: "Clips van 15-60 sec voor social media", + longparts: "Volledige videoparts van 3-10 min met muziek", + koth: "Skatevideo's in avontuur-/uitdagingsstijl", + documentaries: "Content over skatencultuur en verhalen", + contests: "Professionele verslaglegging van wedstrijden en competities", + raw: "Onbewerkte beelden vanuit meerdere hoeken", + followlines: "Fisheye follow-cam voor lines", + lines: "Lines met lange lens en cinematische b-roll", + }, + skill: { + vx1000: "VX1000", + hvx: "HVX / HPX", + cinema: "Cinemacamera", + dslr: "DSLR / systeemcamera", + actioncam: "GoPro / actiecamera", + phone: "Filmen met telefoon", + drone: "Drone / luchtbeelden", + gimbal: "Gimbal / stabilisator", + fisheye: "Fisheye-lens", + longlens: "Lange lens", + "4k": "4K / hoge framesnelheid", + editing: "Videobewerking", + color: "Kleurgradatie", + }, + skillDesc: { + vx1000: "Klassieke VX1000-skate-esthetiek", + hvx: "Panasonic HVX/HPX standaarddefinitie / HD-look", + cinema: "Cinemacamera (FX3, C-serie, RED, BMPCC)", + dslr: "Hoogwaardige DSLR- of systeemcamera", + actioncam: "GoPro / actiecamera POV en mounts", + phone: "Mobiel filmen met moderne smartphones", + drone: "Lucht- en dronebeelden", + gimbal: "Gestabiliseerde gimbalbeweging", + fisheye: "Groothoek-fisheyebeelden", + longlens: "Lange lens voor gedetailleerde beelden", + "4k": "4K-resolutie en slow-mo met hoge framesnelheid", + editing: "Professionele videobewerking en postproductie", + color: "Kleurcorrectie en grading", + }, + }, + editor: { + service: { + parts: "Videoparts", + montages: "Montages", + reels: "Reels / korte clips", + documentaries: "Documentaires", + contest: "Wedstrijdedits", + brand: "Merk-/promovideo's", + motion: "Motion graphics", + colorgrade: "Alleen kleurgradatie", + }, + serviceDesc: { + parts: "Volledige skate-videoparts met soundtrack", + montages: "Compilatie-edits van ruwe beelden", + reels: "Social-mediaclips en reels van 15–60 sec", + documentaries: "Verhalende films over skatencultuur", + contest: "Samenvattende edits voor wedstrijden en events", + brand: "Promotiecontent voor merken en shops", + motion: "Titels, overgangen, effecten en graphics", + colorgrade: "Kleurcorrectie en LUT-gebaseerde grading", + }, + skill: { + premiere: "Adobe Premiere", + resolve: "DaVinci Resolve", + finalcut: "Final Cut Pro", + aftereffects: "After Effects", + luts: "Aangepaste LUT's", + vhs: "VHS / retro-esthetiek", + "4k": "4K- en RAW-workflows", + sound: "Sounddesign / mix", + }, + skillDesc: { + premiere: "Bewerken met Adobe Premiere Pro", + resolve: "Bewerken en gradatie met DaVinci Resolve", + finalcut: "Bewerken met Final Cut Pro", + aftereffects: "Motion graphics en compositing", + luts: "Ontwikkeling van aangepaste kleurlooks", + vhs: "VHS-glitch, super-8, retro-filmlooks", + "4k": "RAW/LOG-camera-workflows op hoge resolutie", + sound: "Musicsync, SFX, audiomastering", + }, + }, + photo: { + service: { + action: "Actie- / trickbeelden", + sequence: "Sequentiële beelden", + portraits: "Portretten", + editorial: "Editorial / tijdschrift", + product: "Product- / shopfotografie", + events: "Verslaglegging van events", + lifestyle: "Lifestyle / documentair", + prints: "Prints en zines", + }, + serviceDesc: { + action: "Hoogtepuntactie van trucs en lines", + sequence: "Trucreeksen van meerdere frames", + portraits: "Rijdersportretten en teamfoto's", + editorial: "Tijdschriftklare editorial-spreads", + product: "Productfotografie van decks, gear en shop", + events: "Verslag van wedstrijden, jams en premières", + lifestyle: "Behind-the-scenes en cultuurdocumentaire", + prints: "Fysieke prints, zines en fotoboeken", + }, + camera: { + dslr: "DSLR", + mirrorless: "Systeemcamera", + medium: "Middenformaat", + film35: "35mm-film", + filmmedium: "Middenformaatfilm", + point: "Compactcamera", + phone: "Telefoon", + }, + lens: { + fisheye: "Fisheye", + wide: "Groothoek", + standard: "Standaard / prime", + telephoto: "Tele / lange lens", + macro: "Macro", + zoom: "Zoom", + }, + lighting: { + strobes: "Studiostrobes", + speedlights: "Speedlights / flitsers", + profoto: "Profoto", + elinchrom: "Elinchrom", + godox: "Godox", + triggers: "Draadloze triggers", + continuous: "Continu / LED", + reflectors: "Reflectoren / diffusers", + naturallight: "Alleen natuurlijk licht", + }, + support: { + tripod: "Statief", + monopod: "Monopod", + lightstands: "Lichtstatieven", + gimbal: "Gimbal", + bag: "Mobiele rig / tas", + laptop: "Tethering ter plaatse", + }, + style: { + flashfisheye: "Flits-fisheye", + natural: "Natuurlijk licht", + bw: "Zwart-wit", + film: "Film-esthetiek", + longlens: "Lange lens", + studio: "Studio / belicht", + street: "Straat / documentair", + }, + }, + builder: { + service: { + diy: "DIY-spots", + concrete: "Betonparken", + wood: "Houten ramps", + bowls: "Bowls en pools", + transitions: "Transitions en quarters", + rails: "Rails en ledges", + boxes: "Manny pads en boxes", + minis: "Mini-ramps", + pumptrack: "Pumptracks", + foam: "Foampits / indoor", + repairs: "Reparaties en nieuw oppervlak", + design: "Ontwerp en advies", + }, + serviceDesc: { + diy: "Community-DIY-spots en guerrilla-bouwsels", + concrete: "Gegoten betonnen skateparken en features", + wood: "Houten ramps, launch boxes en obstakels", + bowls: "Bowls, pools en diepe transition", + transitions: "Quarterpipes, banks en transition", + rails: "Stalen rails, ledges en grindfeatures", + boxes: "Manny pads, funboxes en straatfeatures", + minis: "Mini-ramps en tuinopstellingen", + pumptrack: "Pumptracks en flowlines", + foam: "Foampits, resi en indoor trainingsfeatures", + repairs: "Bestaande spots repareren, dichten en een nieuw oppervlak geven", + design: "Plannen, tekeningen en bouwadvies", + }, + skill: { + concretework: "Beton / shotcrete", + welding: "Lassen / staalfabricage", + carpentry: "Timmerwerk / houtbewerking", + formwork: "Bekisting en wapening", + masonry: "Metselwerk / blokken", + coping: "Coping (pool / staal)", + surfacing: "Skatelite / oppervlak", + earthworks: "Grondwerk / graafwerk", + }, + scale: { + backyard: "Tuin / mini", + diycommunity: "Community-DIY", + publicpark: "Volledig openbaar park", + indoor: "Indoorfaciliteit", + event: "Event- / wedstrijdparcours", + }, + }, + artist: { + service: { + boardart: "Boardgraphics", + logos: "Logo's en branding", + posters: "Posters en flyers", + merch: "Merch en kleding", + zines: "Zines en print", + illustration: "Illustratie", + stickers: "Stickers en decals", + webdesign: "Web / digitaal", + typography: "Typografie / letterwerk", + animation: "Animatie / motion", + }, + serviceDesc: { + boardart: "Deckgraphics en griptape-art", + logos: "Merkidentiteit, logo's en wordmarks", + posters: "Eventposters, flyers en gigart", + merch: "T-shirts, hoodies en kledinggraphics", + zines: "Zines, editorial en printopmaak", + illustration: "Aangepaste illustraties en karakterwerk", + stickers: "Stickerpacks, decals en slaps", + webdesign: "Websites, digitaal en UI", + typography: "Handlettering en aangepast lettertype", + animation: "Motion graphics en animatie", + }, + medium: { + digital: "Digitaal / vector", + handdrawn: "Handgetekend", + screenprint: "Zeefdruk", + paint: "Verf / acryl", + collage: "Collage / gemengd", + 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-ups", + pieces: "Pieces / burners", + murals: "Muurschilderingen", + characters: "Karakters", + lettering: "Letterwerk / wildstyle", + stencil: "Sjabloon", + handstyles: "Handstyles / tags", + "3dstyle": "3D-stijl", + abstract: "Abstract", + }, + styleDesc: { + throwups: "Snelle tweekleurige fills", + pieces: "Volwaardige pieces en burners", + murals: "Grootschalige muurschilderingen en producties", + characters: "Karakters en figuurwerk", + lettering: "Wildstyle en letterstructuur", + stencil: "Sjabloon- en street art", + handstyles: "Tags en handstyles", + "3dstyle": "3D- en anamorfe letters", + abstract: "Abstract en freestyle", + }, + medium: { + spray: "Spuitbussen", + rollers: "Rollers / emulsie", + markers: "Markers / inkten", + brush: "Kwijt / verf", + digital: "Digitaal / Procreate", + }, + context: { + legalwalls: "Legal walls", + commissions: "Opdrachten", + liveart: "Live schilderen", + skateparks: "Skatepark-muurschilderingen", + interiors: "Interieurs / shops", + workshops: "Workshops", + }, + }, + tattoo: { + style: { + traditional: "Traditional / old school", + neotraditional: "Neo-traditional", + fineline: "Fine line", + blackwork: "Blackwork", + realism: "Realisme", + lettering: "Letterwerk / script", + illustrative: "Illustratief", + skateflash: "Skate-flash", + ignorant: "Ignorant / handpoke-stijl", + japanese: "Japans / irezumi", + }, + styleDesc: { + traditional: "Vette lijnen, klassiek Americana", + neotraditional: "Traditional met modern detail", + fineline: "Delicaat werk met één naald", + blackwork: "Effen zwart en patroon", + realism: "Fotorealistisch en portretten", + lettering: "Script, letterwerk en quotes", + illustrative: "Illustratief en grafisch", + skateflash: "Flash-ontwerpen uit de skatecultuur", + ignorant: "Ignorant / naïeve handpoke-stijl", + japanese: "Japanse traditie / irezumi", + }, + method: { + machine: "Machine", + handpoke: "Hand-poke / stick & poke", + flash: "Flash beschikbaar", + custom: "Maatwerkontwerpen", + coverup: "Cover-ups", + }, + }, + trainer: { + focus: { + strength: "Kracht en conditie", + mobility: "Mobiliteit en flexibiliteit", + injuryprevention: "Blessurepreventie", + rehab: "Revalidatie / fysio", + recovery: "Herstel en bodywork", + balance: "Balans en stabiliteit", + cardio: "Cardio / uithoudingsvermogen", + nutrition: "Voedingsadvies", + }, + focusDesc: { + strength: "Kracht en power opbouwen voor het skaten", + mobility: "Bewegingsbereik en flexibiliteit", + injuryprevention: "Prehab en blessurerisico verkleinen", + rehab: "Fysiotherapie en revalidatie na een blessure", + recovery: "Massage, bodywork en herstel", + balance: "Proprioceptie, balans en stabiliteit", + cardio: "Conditie en uithoudingsvermogen", + nutrition: "Voeding en voedingsadvies", + }, + injury: { + ankles: "Enkels", + knees: "Knieën", + wrists: "Polsen", + hips: "Heupen", + back: "Rug / wervelkolom", + shoulders: "Schouders", + heelbruise: "Hielkneuzingen", + concussion: "Protocol bij hersenschudding", + }, + credential: { + physio: "Erkend fysiotherapeut", + osteo: "Osteopaat", + certtrainer: "Gecertificeerd trainer", + sportstherapist: "Sporttherapeut", + massage: "Massagetherapeut", + inperson: "Op locatie", + remote: "Op afstand / online", + }, + }, + musician: { + genre: { + punk: "Punk", + hardcore: "Hardcore", + metal: "Metal", + rock: "Rock", + indie: "Indie / alt", + hiphop: "Hiphop / rap", + electronic: "Elektronisch", + lofi: "Lo-fi / beats", + reggae: "Reggae / dub", + ska: "Ska", + jazz: "Jazz", + funk: "Funk / soul", + flamenco: "Flamenco", + folk: "Folk / akoestisch", + experimental: "Experimenteel", + grunge: "Grunge", + }, + instrument: { + vocals: "Zang", + guitar: "Gitaar", + bass: "Bas", + drums: "Drums", + keys: "Toetsen / synth", + dj: "DJ / draaitafels", + producer: "Producer / beats", + sax: "Sax / koper", + strings: "Strijkers", + other: "Overig", + }, + act: { + solo: "Soloartiest", + band: "Band", + dj: "DJ", + producer: "Producer", + collective: "Collectief", + }, + }, + judge: { + format: { + game_of_skate: "Game of S.K.A.T.E.", + best_trick: "Best Trick", + jam: "Jam-format", + contest: "Wedstrijd / comp", + street_league: "Street League-stijl", + bowl: "Bowl / vert", + mini_ramp: "Mini-ramp", + park: "Park", + street: "Street", + freestyle: "Freestyle", + world_tour: "World Destruction Tour", + am_series: "Am-serie / kwalificaties", + local_jam: "Lokale jam / grassroots", + online: "Online / IG-wedstrijd", + }, + specialty: { + head_judge: "Hoofdjury", + scoring: "Scoren / puntentelling", + mc: "MC / presentator", + format_design: "Formatontwerp", + rules: "Regels / leiding", + brackets: "Brackets / heats", + livestream: "Livestream-jurering", + am_scout: "Am-scouting", + }, + level: { + local: "Lokaal", + regional: "Regionaal", + national: "Nationaal", + international: "Internationaal", + pro: "Pro-circuit", + }, + }, + organizer: { + event: { + street_jam: "Street Jam", + best_trick: "Best Trick", + game_of_skate: "Game of S.K.A.T.E.", + contest: "Wedstrijd / comp", + bowl: "Bowl / vert", + mini_ramp: "Mini-ramp", + park: "Parksessie", + demo: "Pro-demo", + clinic: "Clinic / workshop", + meetup: "Meetup / cruise", + downhill: "Downhill / race", + slalom: "Slalom", + kids: "Kinderen / jeugd", + charity: "Goed doel / benefiet", + tour_stop: "Tourstop", + premiere: "Videopremière", + market: "Markt / kunstopstelling", + }, + service: { + organizing: "Volledige organisatie", + hosting: "Hosting / MC", + permits: "Vergunningen en gemeente", + sponsorship: "Sponsoring / merkdeals", + promotion: "Promotie en marketing", + livestream: "Livestream / verslag", + sound: "Geluid en muziek", + ramps: "Ramps en obstakels", + safety: "Veiligheid en EHBO", + vendors: "Eten en kraampjes", + media: "Foto- / videoverslag", + registration: "Inschrijvingen en brackets", + }, + scale: { + grassroots: "Grassroots", + local: "Lokaal", + regional: "Regionaal", + national: "Nationaal", + international: "Internationaal", + pro: "Pro-circuit", + }, + }, + barber: { + service: { + haircut: "Knippen", + fade: "Fade", + beard: "Baard trimmen", + lineup: "Line-up / shape-up", + colour: "Kleuren en verven", + kids: "Kinderkapsels", + }, + serviceDesc: { + haircut: "Een klassieke coupe — tondeuse en schaar.", + fade: "Een geleidelijke fade — laag, midden of hoog.", + beard: "Baard trimmen, vormen en bijwerken.", + lineup: "Strakke randen rond de haarlijn en nek.", + colour: "Kleuren, bleken, verven en tonen.", + kids: "Geduldige coupes voor jongere skaters.", + }, + style: { + skin_fade: "Skin fade", + taper: "Taper", + buzz: "Buzzcut", + mohawk: "Mohawk", + mullet: "Mullet", + curly: "Krulletjes / afro", + long: "Lang haar / lagen", + classic: "Klassieke schaarcoupe", + }, + setting: { + shop: "Shop / barbershop", + mobile: "Mobiel / aan huis", + event: "Skate-events en wedstrijden", + }, + }, + tour: { + skill: { + beginner: { + label: "Beginner", + description: "Nieuw met skaten of basistrucs", + }, + intermediate: { + label: "Gemiddeld", + description: "Voelt zich prettig op de meeste ondergrond", + }, + advanced: { + label: "Gevorderd", + description: "Ervaren skater, pittige spots", + }, + all: { + label: "Alle niveaus", + description: "Geschikt voor iedereen", + }, + }, + }, + }, +}; export default nlBatch6; diff --git a/src/i18n/nl/batch7.ts b/src/i18n/nl/batch7.ts index 6d669ad..00df9bd 100644 --- a/src/i18n/nl/batch7.ts +++ b/src/i18n/nl/batch7.ts @@ -1,4 +1,908 @@ -/** nl — batch 7. Filled by the translation pass; empty until then. */ -const nlBatch7 = {}; +/** nl — batch 7. Filled by the 2026-10-07 Dutch translation pass. */ +const nlBatch7 = { + events: { + title: "Skate-evenementen", + createEvent: "Evenement aanmaken", + editEvent: "Evenement bewerken", + eventDetails: "Evenementdetails", + eventName: "Naam van evenement", + eventType: "Type evenement", + date: "Datum", + time: "Tijd", + startDate: "Startdatum", + endDate: "Einddatum", + venue: "Locatie", + organizer: "Organisator", + attendees: "Deelnemers", + going: "Gaan", + interested: "Geïnteresseerd", + rsvp: "RSVP", + ticketPrice: "Ticketprijs", + freeEntry: "Gratis toegang", + register: "Registreren", + moreInfo: "Meer info", + upcomingEvents: "Aankomend", + pastEvents: "Verleden", + noEvents: "Geen evenementen gevonden", + findEvents: "Vind contests, demo's, sessies en meer", + searchPlaceholder: "Evenementen zoeken...", + loginToCreate: "Log in om evenementen aan te maken", + noEventsMatch: "Geen aankomende evenementen die bij je filters passen.", + noUpcoming: "Geen aankomende evenementen gevonden.", + noPast: "Geen afgelopen evenementen gevonden.", + types: { + contest: "Contest", + session: "Sessie", + meetup: "Meetup", + premiere: "Videopremière", + workshop: "Workshop", + demo: "Demo", + jam: "Jam", + }, + }, + wallet: { + title: "Wallet", + balance: "Saldo", + send: "Verzenden", + receive: "Ontvangen", + transactions: "Transacties", + history: "Geschiedenis", + noTransactions: "Nog geen transacties", + sendSats: "Sats verzenden", + receiveSats: "Sats ontvangen", + amount: "Bedrag", + recipient: "Ontvanger", + lightning: "Lightning", + onChain: "On-chain", + invoice: "Factuur", + address: "Adres", + scanQR: "QR scannen", + paste: "Plakken", + payInvoice: "Factuur betalen", + createInvoice: "Factuur aanmaken", + copied: "Gekopieerd naar klembord!", + insufficientFunds: "Onvoldoende saldo", + paymentSent: "Betaling verzonden!", + paymentReceived: "Betaling ontvangen!", + cashu: { + title: "Cashu Wallet", + tokens: "Tokens", + mint: "Mint", + mints: "Mints", + manageMints: "Mints beheren", + addMint: "Mint toevoegen", + removeMint: "Mint verwijderen", + defaultMint: "Standaardmint", + backup: "Back-up", + restore: "Herstellen", + recoveryPhrase: "Herstelzin", + viewRecoveryPhrase: "Herstelzin bekijken", + seedWarning: "Dit is net je Nostr-nsec - houd het geheim en maak er een back-up van!", + }, + }, + spots: { + addSpot: "Spot toevoegen", + editSpot: "Spot bewerken", + spotDetails: "Spotdetails", + spotName: "Naam van spot", + spotType: "Type spot", + description: "Beschrijving", + location: "Locatie", + address: "Adres", + photos: "Foto's", + addPhotos: "Foto's toevoegen", + obstacles: "Obstakels", + features: "Kenmerken", + bustLevel: "Bustniveau", + bestTime: "Beste tijd", + tips: "Tips", + reviews: "Beoordelingen", + addReview: "Beoordeling toevoegen", + reportSpot: "Spot melden", + directions: "Route", + shareSpot: "Spot delen", + createdBy: "Gemaakt door", + lastUpdated: "Laatst bijgewerkt", + types: { + park: "Skatepark", + street: "Streetspot", + diy: "DIY-spot", + plaza: "Plaza", + indoor: "Indoor", + bowl: "Bowl", + vert: "Vert", + miniramp: "Miniramp", + }, + bustLevels: { + chill: "Chill", + moderate: "Gematigd", + sketchy: "Sketchy", + heavy: "Heavy", + }, + }, + settings: { + title: "Instellingen", + profile: "Profiel", + editProfile: "Profiel bewerken", + account: "Account", + security: "Beveiliging", + relays: "Relays", + appearance: "Weergave", + language: "Taal", + notifications: "Meldingen", + privacy: "Privacy", + about: "Over", + help: "Help", + feedback: "Feedback", + version: "Versie", + displayName: "Weergavenaam", + username: "Gebruikersnaam", + bio: "Bio", + website: "Website", + lightningAddress: "Lightning-adres", + profilePicture: "Profielfoto", + banner: "Banner", + saveProfile: "Profiel opslaan", + backupKeys: "Sleutels back-uppen", + exportKeys: "Sleutels exporteren", + secretKey: "Geheime sleutel", + publicKey: "Publieke sleutel", + showSecretKey: "Geheime sleutel tonen", + hideSecretKey: "Geheime sleutel verbergen", + copyKey: "Sleutel kopiëren", + keysBackedUp: "Je hebt bevestigd dat je sleutels veilig zijn opgeslagen.", + keysNotBackedUp: "Zorg dat je je herstelzin of geheime sleutel back-upt!", + selectLanguage: "Taal selecteren", + english: "Engels", + spanish: "Spaans", + }, + createSpot: { + title: "Een skatespot toevoegen", + subtitle: "Deel een skateboardspot met de community", + backToMap: "Terug naar kaart", + namePlaceholder: "bijv. Hollywood High School", + descriptionPlaceholder: "Beschrijf de spot, obstakels, beste tijden om te skaten, beveiligingsinfo, enz.", + addressPlaceholder: "bijv. 1521 N Highland Ave, Los Angeles, CA", + selectType: "Kies een spottype", + selectBustLevel: "Kies een bustniveau", + uploadPhotos: "Uploaden", + dragDrop: "Sleep en zet neer of klik om te uploaden", + maxPhotos: "Max. 5 foto's", + publishing: "Publiceren...", + success: "Spot succesvol gepubliceerd!", + error: "Publiceren van spot mislukt", + locationRequired: "Kies een locatie op de kaart", + useCurrentLocation: "Mijn huidige locatie gebruiken", + pickOnMap: "Locatie op kaart kiezen", + loginToAdd: "Je moet ingelogd zijn om een skatespot toe te voegen.", + locationLabel: "Locatie", + tapToPlace: "Tik op de kaart om de pin te plaatsen, of sleep hem om bij te stellen.", + manualCoords: "Coördinaten handmatig invoeren", + moreDetails: "Meer details (optioneel)", + photoHint: "een foto is vereist om te publiceren", + nameRequired: "Voer een naam in voor deze spot.", + descriptionRequired: "Beschrijf deze spot.", + addressRequired: "Voeg een adres of gebiedsnaam toe.", + photoRequired: "Voeg minstens één foto toe.", + draftTitle: "Je hebt een niet-opgeslagen concept", + draftBody: "Ga verder waar je gebleven was, of gooi het weg.", + draftResume: "Doorgaan", + draftDiscard: "Concept weggooien", + requiredFields: "Vertel ons over deze spot. Alle velden met * zijn vereist.", + coordinates: "Coördinaten", + latitudePlaceholder: "Breedtegraad (bijv. 34.1012)", + longitudePlaceholder: "Lengtegraad (bijv. -118.3389)", + gettingLocation: "Locatie ophalen...", + accessType: "Toegangstype", + publicTitle: "Openbaar - voor iedereen toegankelijk", + publicDesc: "Skateparks, openbare pleinen, streetspots", + privateTitle: "Privéterrein - toestemming nodig", + privateDesc: "Rampen in de achtertuin, privéland, afgesloten spots", + localsTitle: "Vraag het eerst aan locals", + localsDesc: "Respecteer de spot, blaas hem niet op", + contactInfo: "Contactgegevens", + contactPlaceholder: "bijv. Telefoonnummer, Instagram, e-mail...", + contactHintPrivate: "Hoe kunnen mensen je contacteren voor toestemming?", + contactHintLocals: "Hoe kunnen mensen contact opnemen om naar de spot te vragen?", + }, + marketplace: { + title: "Marktplaats", + subtitle: "Koop, verkoop en ruil skategear", + addListing: "Advertentie toevoegen", + condition: "Staat", + conditions: { + new: "Nieuw", + likeNew: "Zo goed als nieuw", + good: "Goed", + fair: "Redelijk", + poor: "Slecht", + }, + categories: { + all: "Alle", + decks: "Decks", + trucks: "Trucks", + wheels: "Wielen", + bearings: "Lagers", + shoes: "Schoenen", + clothing: "Kleding", + protection: "Bescherming", + other: "Overig", + }, + priceRange: "Prijsbereik", + location: "Locatie", + seller: "Verkoper", + contact: "Contacteer verkoper", + makeOffer: "Bod doen", + sold: "Verkocht", + available: "Beschikbaar", + gear: "Gear", + sellGear: "Gear verkopen", + wantToBuy: "Gezocht", + }, + auth: { + login: "Inloggen", + logout: "Uitloggen", + signUp: "Aanmelden", + signUpTitle: "Nieuw bij Nostr?", + signUpDesc: "Maak een nieuw account aan om te beginnen. Het is gratis en open.", + orLogIn: "Of log in", + loginWithExtension: "Inloggen met extensie", + loginWithAmber: "Inloggen met Amber (Android)", + loginWithKey: "Geheime sleutel (nsec) of herstelzin", + loginWithBunker: "Inloggen met Nostr Connect", + bunkerUri: "Bunker-verbindingsreeks", + openAmber: "Amber openen", + connectToBunker: "Verbinden met Bunker", + noExtension: "Geen extensie gedetecteerd.", + extensionHelp: "Probeer de knop “Aanmelden” hierboven om een nieuw account aan te maken, of gebruik de tabbladen Amber, Sleutel of Bunker als je al inloggegevens hebt.", + amberDesc: "Amber is een veilige Nostr-signer-app voor Android-toestellen. Klik op de knop hieronder om Amber te openen en toegang te verlenen.", + bunkerDesc: "Open je account vanaf elk toestel met een remote signer (bunker). Je sleutels blijven veilig op de server en worden nooit aan websites blootgesteld.", + keyPlaceholder: "nsec1... of je herstelzin van 12 woorden", + keyHint: "Je kunt zowel je nsec-sleutel als een herstelzin van 12 woorden plakken", + uploadKeyFile: "Je sleutelbestand uploaden", + loggingIn: "Inloggen...", + connecting: "Verbinden...", + verifying: "Verifiëren...", + }, + createEvent: { + title: "Een evenement aanmaken", + subtitle: "Organiseer een skateboardevenement voor de community", + backToEvents: "Terug naar evenementen", + namePlaceholder: "bijv. Zomerse skate-sessie", + descriptionPlaceholder: "Beschrijf het evenement, wat er te verwachten is, regels, prijzen, enz.", + selectType: "Kies een evenementtype", + venuePlaceholder: "bijv. Venice Beach Skatepark, CA", + selectDate: "Kies een datum", + selectTime: "Kies een tijd", + ticketPricePlaceholder: "Laat leeg voor gratis evenementen", + publishing: "Publiceren...", + success: "Evenement succesvol gepubliceerd!", + error: "Publiceren van evenement mislukt", + loginToCreate: "Je moet ingelogd zijn om een evenement aan te maken.", + requiredFields: "Vertel ons over dit evenement. Alle velden met * zijn vereist.", + startDateTime: "Startdatum en -tijd", + endDateTime: "Einddatum en -tijd (optioneel)", + coordinatesOptional: "Coördinaten (optioneel)", + coverImage: "Omslagafbeelding", + uploadCover: "Omslagafbeelding uploaden", + nip05Recommended: "NIP-05-verificatie aanbevolen", + nip05Desc: "Voeg een NIP-05-identificatie toe aan je profiel om je identiteit te verifiëren en vertrouwen bij deelnemers op te bouwen.", + addNip05: "NIP-05 toevoegen in Instellingen", + }, + labPage: { + title: "The Lab", + subtitle: "Leer tricks. Leg momenten vast. Kom in contact met andere skaters", + coachesTab: "Coaching", + filmersTab: "Filmen", + offerCoaching: "COACHING AANBIEDEN", + offerFilming: "FILMEN AANBIEDEN", + loginToOffer: "Log in om diensten aan te bieden", + whatToLearn: "WAT WIL JE LEREN?", + whatContent: "WAT VOOR SOORT CONTENT?", + selectSkillsDesc: "Kies vaardigheden en we matchen je met coaches", + selectFilmingDesc: "Kies de filmdiensten die je zoekt", + searchPlaceholder: "Zoek op naam, locatie of vaardigheden...", + noServicesYet: "NOG GEEN DIENSTEN", + beFirstToOffer: "Wees de eerste die coaching- of filmdiensten aan de community aanbiedt!", + skills: "Vaardigheden", + rate: "Tarief", + perHour: "/uur", + contact: "Contact", + viewProfile: "Profiel bekijken", + noProfilesYet: "Nog geen profielen", + beFirstCoach: "Wees de eerste die zich als coach registreert!", + beFirstFilmer: "Wees de eerste die zich als filmer registreert!", + yearsExperience: "jaar ervaring", + }, + 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: "Til je skaten naar een hoger niveau", + coaches: "Coaches", + filmers: "Filmers", + findCoach: "Vind een coach", + becomeCoach: "Word coach", + findFilmer: "Vind een filmer", + becomeFilmer: "Word filmer", + hourlyRate: "Uurtarief", + experience: "Ervaring", + specialties: "Specialismen", + availability: "Beschikbaarheid", + bookSession: "Sessie boeken", + contactCoach: "Contacteer coach", + noCoaches: "Geen coaches gevonden in jouw buurt", + noFilmers: "Geen filmers gevonden in jouw buurt", + }, + shops: { + title: "Skateshops", + addShop: "Shop toevoegen", + editShop: "Shop bewerken", + shopDetails: "Shopdetails", + shopName: "Naam van shop", + hours: "Openingstijden", + phone: "Telefoon", + website: "Website", + services: "Diensten", + brands: "Merken", + supportLocal: "Steun locals", + nip05: "Shop-NIP-05", + nip05Hint: "Een optionele handle die je voor deze shop beheert (bijv. shop@yourdomain.com), geverifieerd tegen je sleutel. Voeg er tot 5 toe.", + }, + becomeFilmer: { + title: "Word filmer", + subtitle: "Leg de beste clips vast voor de community", + bioPlaceholder: "Vertel ons over je filmervaring en apparatuur...", + specialtiesPlaceholder: "bijv. fisheye, telelens, drone, montage", + selectSpecialties: "Kies je specialismen", + hourlyRate: "Uurtarief (sats)", + ratePlaceholder: "bijv. 5000", + locationPlaceholder: "Je stad of regio", + portfolioUrl: "Portfolio-URL", + portfolioPlaceholder: "Link naar je werk (YouTube, Instagram, enz.)", + publishing: "Profiel publiceren...", + success: "Filmerprofiel aangemaakt!", + error: "Profiel aanmaken mislukt", + }, + food: { + title: "Eetspots", + subtitle: "Tank bij voor of na je sessie", + addFood: "Eetspot toevoegen", + categories: { + all: "Alle", + burgers: "Burgers", + pizza: "Pizza", + tacos: "Taco's", + coffee: "Koffie", + drinks: "Drinks", + snacks: "Snacks", + }, + skaterFriendly: "Skatervriendelijk", + nearSpots: "Dicht bij skatespots", + }, + profile: { + posts: "Posts", + spots: "Spots", + events: "Evenementen", + following: "Volgend", + followers: "Volgers", + editProfile: "Profiel bewerken", + follow: "Volgen", + unfollow: "Ontvolgen", + noPostsYet: "Nog geen posts", + noBio: "Nog geen bio", + zapProfile: "Zap deze skater", + }, + becomeCoach: { + title: "Word coach", + subtitle: "Deel je vaardigheden en help andere skaters vooruitgang te boeken", + bioPlaceholder: "Vertel ons over je skateachtergrond en lesstijl...", + skillsPlaceholder: "bijv. kickflip, heelflip, grinds, bowls", + selectSkills: "Kies de vaardigheden die je kunt aanleren", + hourlyRate: "Uurtarief (sats)", + ratePlaceholder: "bijv. 5000", + locationPlaceholder: "Je stad of regio", + publishing: "Profiel publiceren...", + success: "Coachprofiel aangemaakt!", + error: "Profiel aanmaken mislukt", + }, + weather: { + title: "Weer", + current: "Huidige omstandigheden", + forecast: "Voorspelling", + humidity: "Vochtigheid", + wind: "Wind", + feelsLike: "Voelt als", + goodForSkating: "Goed om te skaten!", + notIdeal: "Geen ideale omstandigheden", + allWeather: "Alle weersomstandigheden", + goodWeather: "Goed weer", + perfectWeather: "Perfect weer", + }, + errors: { + somethingWentWrong: "Er is iets misgegaan", + tryAgainLater: "Probeer het later opnieuw", + notFound: "Niet gevonden", + pageNotFound: "Pagina niet gevonden", + unauthorized: "Niet geautoriseerd", + loginRequired: "Log in om verder te gaan", + networkError: "Netwerkfout", + checkConnection: "Controleer je internetverbinding", + invalidInput: "Ongeldige invoer", + requiredField: "Dit veld is vereist", + }, + time: { + today: "Vandaag", + yesterday: "Gisteren", + tomorrow: "Morgen", + thisWeek: "Deze week", + nextWeek: "Volgende week", + thisMonth: "Deze maand", + justNow: "Zojuist", + minutesAgo: "{{count}} minuten geleden", + hoursAgo: "{{count}} uur geleden", + daysAgo: "{{count}} dagen geleden", + }, + spotDetail: { + postedBy: "Geplaatst door", + getDirections: "Route", + reviews: "Beoordelingen", + noReviews: "Nog geen beoordelingen", + beFirstReview: "Wees de eerste die deze spot beoordeelt!", + writeReview: "Beoordeling schrijven", + submitReview: "Beoordeling versturen", + rating: "Beoordeling", + reviewPlaceholder: "Deel je ervaring op deze spot...", + relatedSpots: "Spots in de buurt", + }, + eventDetail: { + organizedBy: "Georganiseerd door", + eventInfo: "Evenementinfo", + location: "Locatie", + dateTime: "Datum en tijd", + price: "Prijs", + attendeeCount: "{{count}} gaan", + interested: "Geïnteresseerd", + going: "Gaan", + notGoing: "Gaan niet", + share: "Evenement delen", + }, + venueAccess: { + title: "Toegangspassen", + desc: "Geef een rider een ondertekende pas, zodat die aan de deur toegang kan bewijzen - die laat de kaart zien en iedereen kan de QR scannen om die te verifiëren.", + active: "{{count}} actief", + revoked: "{{count}} ingetrokken", + issue: "Pas uitgeven", + verifyHint: "Geverifieerd via scan - je hebt geen app of account nodig om te controleren.", + publicTitle: "Toegangspassen", + publicDesc: "Deze locatie geeft toegangspassen uit. Scan de kaart van een rider aan de deur om die te verifiëren.", + badge: "Passen", + sellerHint: "De locatie van deze verkoper geeft toegangspassen uit", + }, + zaps: { + zapButton: "Zap", + sendZap: "Zap verzenden", + zapAmount: "Zap-bedrag", + customAmount: "Aangepast bedrag", + addMessage: "Bericht toevoegen (optioneel)", + sending: "Verzenden...", + sent: "Zap verzonden!", + failed: "Zap mislukt", + received: "Je hebt een zap ontvangen!", + }, + rewards: { + title: "Beloningen", + yourPoints: "Jouw punten", + earnPoints: "Punten verdienen", + redeemPoints: "Punten inwisselen", + leaderboard: "Ranglijst", + achievements: "Prestaties", + dailyTasks: "Dagelijkse taken", + weeklyTasks: "Wekelijkse taken", + }, + errorsUi: { + slammedTitle: "Geslamd", + slammedBody: "Er is iets gestruikeld op dit scherm. Je account en gegevens zijn veilig - laten we je weer op weg helpen.", + tryAgain: "Opnieuw proberen", + reloadApp: "App herladen", + pageSlammedTitle: "Deze pagina is geslamd", + pageSlammedBody: "Er is iets op dit scherm gestruikeld. Je account en gegevens zijn veilig. Meestal lost een snelle herlaadbeurt het op.", + reload: "Herladen", + goBack: "Terug", + }, + backup: { + title: "Sla je login op", + subtitle: "Duurt 10 seconden - doe het één keer", + message: "Je herstelcode is de enige weg terug naar je account. Sla hem op en je kunt op elk toestel inloggen.", + warning: "Raak je hem kwijt, dan is er geen herstel - geen e-mail, geen wachtwoordherstel.", + backupNow: "Nu opslaan", + confirmed: "Ik heb hem opgeslagen", + remindLater: "Later", + }, + bootUi: { + ariaLoading: "SkateSpots laden", + ariaReady: "SkateSpots gereed", + ready: "Gereed", + statusWaking: "Het netwerk wordt wakker gemaakt", + statusTuning: "De relays worden afgestemd", + statusPulling: "Spots worden opgehaald", + statusDropping: "We komen eraan", + }, + footer: { + vibedWith: "Gevibed met", + poweredBy: "Mogelijk gemaakt door", + openSource: "Open source", + contribute: "Bijdragen", + decentralized: "Gedecentraliseerd", + communityOwned: "Eigendom van de community", + }, + role: { + owner: "Eigenaar", + admin: "Beheerder", + organiser: "Organisator", + verifiedOwner: "Geverifieerde eigenaar", + }, + nfc: { + write: "Naar NFC-tag schrijven", + written: "Tag beschreven", + writtenDesc: "Houd de tag tegen een telefoon om de verificatiepagina te openen.", + failed: "Kon de tag niet beschrijven", + }, + collectionUi: { + namePlaceholder: "Barcelona-reis 2024", + descriptionPlaceholder: "Mijn favoriete spots van mijn reis naar Barcelona...", + }, + toastsUi: { + followingSuccess: "Met succes gevolgd", + followingSuccessDesc: "Deze gebruiker zit nu in je netwerk", + followFailed: "Volgen mislukt", + unfollowSuccess: "Ontvolgd", + unfollowSuccessDesc: "Verwijderd uit je netwerk", + unfollowFailed: "Ontvolgen mislukt", + reportThanks: "Bedankt - ter beoordeling verstuurd", + reportFailed: "Kon het rapport niet versturen", + savedOffline: "Offline opgeslagen", + savedOfflineDesc: "We publiceren het automatisch zodra je weer online bent.", + cacheCleaned: "Cache opgeschoond", + cacheCleanedDesc: "{{count}} oude spots uit de cache verwijderd", + cacheCleared: "Cache geleegd", + cacheClearedDesc: "Alle gecachte spots zijn verwijderd", + backOnline: "Weer online", + backOnlineDesc: "{{count}} opgeslagen actie(s) verstuurd.", + postQueued: "Post in wachtrij", + postQueuedDesc: "Je post wordt gepubliceerd zodra je weer online bent", + invalidIdentifier: "Ongeldige identificatie. Gebruik npub1..., user@domain.com of een hex-pubkey", + notASpotThanks: "Bedankt - ter beoordeling verstuurd", + notASpotThanksDesc: "Geen hard feelings: dit markeert de pin als off-topic zodat mensen zelf kunnen beslissen.", + notASpotFailed: "Kon het rapport niet versturen", + pleaseTryAgain: "Probeer het opnieuw.", + relayUnreachable: "Kon geen enkele relay bereiken - controleer je verbinding en probeer het opnieuw.", + loginToReport: "Log in om een spot te melden.", + zapLoginRequired: "Inloggen vereist", + zapLoginRequiredDesc: "Je moet ingelogd zijn om een zap te verzenden.", + zapEventNotFound: "Evenement niet gevonden", + zapEventNotFoundDesc: "Kon het evenement om te zappen niet vinden.", + zapAuthorNotFound: "Auteur niet gevonden", + zapAuthorNotFoundDesc: "Kon de auteur van dit item niet vinden.", + zapSuccess: "Zap geslaagd!", + zapSuccessNwcDesc: "Je hebt {{amount}} sats via NWC naar de auteur verzonden.", + zapSuccessDesc: "Je hebt {{amount}} sats naar de auteur verzonden.", + zapStatusUnknown: "Betalingsstatus onbekend", + zapStatusUnknownDesc: "Je wallet verwerkt deze zap mogelijk nog. Controleer je wallet voordat je het opnieuw probeert - betaal niet dubbel.", + zapNwcFailed: "NWC-betaling mislukt", + zapWeblnFailed: "WebLN-betaling mislukt", + zapFallingBack: "{{error}}. Terugvallen op andere betaalmethoden...", + zapFailed: "Zap mislukt", + zapUnknownNwcError: "Onbekende NWC-fout", + zapUnknownWeblnError: "Onbekende WebLN-fout", + nwcInvalidUri: "Ongeldige NWC-URI", + nwcInvalidUriDesc: "Controleer de verbindingsreeks en probeer het opnieuw.", + nwcExists: "Verbinding bestaat al", + nwcExistsDesc: "Deze wallet is al verbonden.", + nwcConnected: "Wallet verbonden", + nwcConnectedDesc: "Succesvol verbonden met {{alias}}.", + nwcFailed: "Verbinding mislukt", + nwcFailedDesc: "Kon niet verbinden met de wallet: {{error}}", + nwcUnknownError: "Onbekende fout opgetreden", + nwcDisconnected: "Wallet losgekoppeld", + nwcDisconnectedDesc: "De walletverbinding is verwijderd.", + deleteApproveAmber: "Goedkeuren in Amber", + deleteApproveAmberDesc: "Amber wordt geopend - tik op Goedkeuren om de verwijdering te bevestigen.", + deleteCancelled: "Geannuleerd", + deleteCancelledDesc: "Je hebt het verzoek in Amber afgewezen.", + deleteCouldntSign: "Kon niet ondertekenen", + deletePublishing: "Stap 2/2: Publiceren…", + deletePublishingDesc: "Verwijdering naar relays verzenden.", + deleteStuck: "Vastgelopen bij PUBLICEREN", + deleteStuckDesc: "Relaystap mislukt: {{error}}. Het is goed ondertekend; de relay heeft niet bevestigd.", + stashMerged: "Wijzigingen van een ander toestel samengevoegd", + stashMergedDesc: "Je stash is elders bewerkt - beide sets wijzigingen zijn behouden.", + statusUpdated: "Status bijgewerkt!", + statusUpdatedDesc: "Je skatestatus is nu zichtbaar voor anderen.", + statusFailed: "Status instellen mislukt", + statusCleared: "Status gewist", + statusClearedDesc: "Je status is verwijderd.", + statusClearFailed: "Status wissen mislukt", + nutzapEnabled: "Nutzap ontvangen ingeschakeld", + nutzapEnabledDesc: "Je kunt nu ecash-zaps ontvangen!", + nutzapSetupFailed: "Instellen mislukt", + nutzapUnavailable: "Nutzap verzenden niet beschikbaar", + tokenReceived: "Token ontvangen", + tokenReceivedDesc: "Cashu-token succesvol ingewisseld!", + receiveFailed: "Ontvangen mislukt", + invalidAmount: "Ongeldig bedrag", + invalidAmountDesc: "Voer een geldig bedrag in", + tokenCreated: "Token aangemaakt", + sendFailed: "Verzenden mislukt", + mintAdded: "Mint toegevoegd", + mintAddedDesc: "Mint toegevoegd en succesvol vertrouwd", + mintAddFailed: "Mint toevoegen mislukt", + mintRemoved: "Mint verwijderd", + mintRemoveFailed: "Mint verwijderen mislukt", + paymentReceived: "Betaling ontvangen", + paymentReceivedDesc: "{{amount}} sats succesvol ontvangen!", + paymentSent: "Betaling verzonden", + paymentSentDesc: "Lightning-betaling succesvol afgerond", + loginRequired: "Inloggen vereist", + loginToFollowFounder: "Log in om de oprichter te volgen", + alreadyFollowing: "Al gevolgd", + alreadyFollowingDesc: "Je volgt {{name}} al!", + couldNotComplete: "Kon dat niet voltooien", + tryAgainLower: "Probeer het opnieuw.", + couldNotLoadProfile: "Kon profiel niet laden", + couldNotLoadProfileDesc: "Controleer je internetverbinding en probeer te vernieuwen.", + undone: "Ongedaan gemaakt", + undoneDesc: "Terug naar neutraal - niet verborgen, niet geborgd.", + confirmed: "Bevestigd", + confirmedDesc: "Borg voor gegeven - het valt uit deze wachtrij.", + hiddenToast: "Verborgen", + couldNotUndo: "Kon niet ongedaan maken", + couldNotConfirm: "Kon niet bevestigen", + deleteFailed: "Verwijderen mislukt", + somethingWentWrong: "Er is iets misgegaan", + }, + seoUi: { + becomeBuilderTitle: "Word bouwer - SkateSpots", + becomeBuilderDesc: "Adverteer je ramp-, park- en DIY-bouwdiensten - wat je bouwt, materialen en schaal.", + tradesTitle: "Mijn transacties — SkateSpots", + tradesDesc: "Beheer je marktplaatstransacties, bevestigingen en reputatie.", + eventsTitle: "Skate-evenementen & tours - SkateSpots", + eventsDesc: "Ontdek skateboardevenementen, wedstrijden, tours en sessies bij jou in de buurt.", + editShopDesc: "Bewerk je skateshop.", + createTourDesc: "Organiseer skate-tours - lokale hidden-gem-tours, nationale roadtrips, internationale avonturen of destructiewedstrijden in KOTR-stijl.", + deckDesignerTitle: "Deck-ontwerper — SkateSpots DIY", + deckDesignerDesc: "Ontwerp de omtrek van een skateboard of longboard en exporteer een printbaar 1:1-sjabloon, SVG of DXF - inclusief concave, kicks, wielbasis en truckgaten.", + createEventTitle: "Een skate-evenement aanmaken - SkateSpots", + createEventDesc: "Maak een nieuw skateboardevenement voor de community.", + editTourDesc: "Bewerk je skate-tour - werk stops, data en details bij.", + walletTitle: "Wallet - SkateSpots", + walletDesc: "Verbind je Lightning-wallet om zaps naar skaters en spotmakers te sturen.", + becomePhotographerTitle: "Word fotograaf - SkateSpots", + becomePhotographerDesc: "Maak je skatefotografieprofiel - camera's, lenzen, belichting en diensten.", + newsletterTitle: "Nieuwsbrief - SkateSpots", + newsletterDesc: "Wekelijkse updates uit de SkateSpots-community. App-updates, nieuwe spots, evenementen en de mensen die skateboarden levend houden.", + homeTitle: "SkateSpots - Ontdek wereldwijd skateboardlocaties", + zapLeaderboardTitle: "Zap-ranglijsten - SkateSpots", + zapLeaderboardDesc: "De meest gezapte skatespots en de communityleden die hen steunen.", + adminReviewTitle: "Beoordelingswachtrij — SkateSpots", + gearSwapTitle: "Gearruil - SkateSpots", + gearSwapDesc: "Koop en verkoop gebruikte skategear met andere skaters. Decks, trucks, wielen, schoenen en meer.", + donateTitle: "Doneren — SkateSpots", + donateDesc: "Steun SkateSpots - Lightning, privé on-chain (silent payments), of financier de bouw op Angor.", + verifyCardTitle: "Verifiëren — SkateSpots", + verifyCardDesc: "Verifieer een SkateSpots-kaart of toegangspas.", + mapTitle: "Skatespots-kaart - SkateSpots", + mapDesc: "Verken skateboardspots over de hele wereld op onze interactieve kaart.", + diyTitle: "DIY — Maak je eigen | SkateSpots", + diyDesc: "Gidsen, open tools en plannen om je eigen skateboards, ramps en betonnen spots te maken - en de mensen en plekken om dat mee te doen.", + appShopTitle: "App-winkel — SkateSpots", + becomeSkaterTitle: "Kom in de skatergids - SkateSpots", + becomeSkaterDesc: "Maak je skaterprofiel zodat de community je kan vinden.", + marketplaceTitle: "Marktplaats - SkateSpots", + marketplaceDesc: "Koop en verkoop skateboardgear op de gedecentraliseerde Plebeian Market.", + becomeEditorTitle: "Word video-editor - SkateSpots", + becomeEditorDesc: "Maak je profiel als skateboard-video-editor op SkateSpots.", + amberCallbackTitle: "Inloggen met Amber - SkateSpots", + amberCallbackDesc: "Je Amber-login (NIP-55) wordt afgerond.", + supportersTitle: "Supporters - SkateSpots", + supportersDesc: "De community die SkateSpots levend houdt - supporters, medewerkers, partners en vrienden.", + becomeCoachTitle: "Word coach - SkateSpots", + becomeCoachDesc: "Maak je skateboardcoachprofiel.", + riderCardTitle: "Skaterkaart — SkateSpots", + riderCardDesc: "Maak je printbare SkateSpots-skaterpas of parktoegangskaart.", + editEventDesc: "Bewerk je skateboardevenement.", + createShopTitle: "Een skateshop toevoegen - SkateSpots", + createShopDesc: "Voeg je skateshop toe aan de community.", + deckCostTitle: "Deckkosten-calculator — SkateSpots DIY", + deckCostDesc: "Bereken wat het maken van een deck kost - arbeid, apparatuur, materialen, procestijd, verpakking en marge - en een eerlijke verkoopprijs.", + pyramidTitle: "Piramide-ranglijsten - SkateSpots", + pyramidDesc: "Topbijdragers en communityleiders.", + foodTitle: "Eten dicht bij spots - SkateSpots", + foodDesc: "Vind restaurants, cafés en eetgelegenheden bij skateboardspots in de buurt.", + createListingTitle: "Gear aanbieden - SkateSpots", + createListingDesc: "Bied skateboardgear te koop aan of vind gear die je wilt kopen.", + becomeFilmerTitle: "Word filmer - SkateSpots", + becomeFilmerDesc: "Maak je skatefilmmakersprofiel.", + skatersTitle: "Skaters - SkateSpots", + skatersDesc: "Ontdek skaters in de SkateSpots-community. Blader op stijl, stand, niveau en locatie.", + communityStatsTitle: "Communitystatistieken — SkateSpots", + communityStatsDesc: "Live communitycijfers voor SkateSpots - spots, evenementen, coaches, filmers, editors, tours en groei in de tijd. Direct uit Nostr gehaald.", + labTitle: "The Lab - SkateSpots", + labDesc: "Vind skateboardcoaches, filmers, fotografen en video-editors.", + stashTitle: "Mijn Stash - SkateSpots", + stashDesc: "Beheer je privé-gearinventaris. Houd bij wat je bezit en wat je wilt verkopen of ruilen.", + bountyLeaderboardTitle: "Mappen & verdienen - SkateSpots", + bountyLeaderboardDesc: "Map skatespots en shops en verdien zaps van de community. Bekijk de topbijdragers.", + spotCollectionsTitle: "Mijn spotcollecties - SkateSpots", + spotCollectionsDesc: "Organiseer je favoriete skatespots in gepersonaliseerde collecties", + mintsTitle: "Cashu-mints — SkateSpots", + mintsDesc: "Blader door Cashu-mints, bekijk hun status en voeg er een toe aan je wallet.", + }, + miscUi: { + openingCamera: "Camera openen…", + usePhoneCamera: "Gebruik je telefooncamera en kom dan hier terug", + startingCamera: "Camera starten...", + cameraAccessRequired: "Cameratoegang vereist", + cameraAccessHint: "Sta cameratoegang toe in je browserinstellingen, of gebruik de bestandskiezer hieronder.", + cameraErrorTitle: "Camerafout", + cameraErrorDesc: "Kon de camera niet openen. Controleer de app-machtigingen in Instellingen.", + cameraDeniedTitle: "Cameratoegang geweigerd", + cameraDeniedDesc: "Sta cameratoegang toe in je browserinstellingen.", + uploadFromGallery: "Uploaden uit galerij", + uploading: "Uploaden...", + usePhoto: "Foto gebruiken", + earningPotential: "Verdienpotentieel", + qualityExcellent: "Uitstekend!", + qualityGood: "Goed", + qualityBasic: "Basis", + qualityGettingStarted: "Net begonnen", + qualityLocationAdded: "Locatie toegevoegd", + qualityOnePhoto: "Minstens 1 foto", + qualityThreePhotos: "3+ foto's", + qualityMoreAngles: "Meer hoeken = beter", + qualityDescription: "Beschrijving", + qualityDetailedDesc: "Gedetailleerde beschrijving (100+ tekens)", + qualityContact: "Contactgegevens", + qualityPhoneOrWebsite: "Telefoon of website", + qualityHours: "Openingstijden", + qualitySpotType: "Spottype gekozen", + failedToLoadComments: "Kon opmerkingen niet laden", + commentsTitle: "Opmerkingen", + noCommentsYet: "Nog geen opmerkingen", + beFirstComment: "Wees de eerste die zijn gedachten deelt!", + removeMember: "Lid verwijderen", + whoIsThisFor: "Voor wie is dit profiel?", + individual: "Individueel", + individualDesc: "Een enkele persoon", + collective: "Collectief", + collectiveDesc: "Crew, studio of bedrijf", + membersLabel: "Leden", + dismissReport: "Melding negeren", + reportedBy: "gemeld door", + completingLoginAmber: "Inloggen met Amber afronden...", + entityMembersHint: "Voeg de Nostr-accounts van je crew toe. Elk lid bevestigt zijn eigen spot met zijn sleutel - tot dan tonen ze als “in behandeling”.", + entityVerifiedHint: "Lidmaatschap wordt per lid geverifieerd - niemand kan aan je crew worden toegevoegd zonder bevestiging vanaf zijn eigen account.", + entityInvalidPubkey: "Voer een geldige npub, nprofile of hex-pubkey van 64 tekens in.", + entityAlreadyAdded: "Dat lid is al toegevoegd.", + offline: "Offline", + connected: "Verbonden", + offlineMode: "Offlinemodus", + allFeaturesAvailable: "Alle functies beschikbaar", + browsingCachedSpots: "Gecachte spots bekijken", + queuedActions: "{{count}} actie(s) in wachtrij", + syncing: "Synchroniseren", + publishingWhenStable: "Publiceren zodra de verbinding stabiel is...", + willPublishOnline: "Wordt gepubliceerd zodra je weer online bent", + availableOffline: "Offline beschikbaar:", + offlineBrowseSpots: "Eerder bekeken spots doorbladeren", + offlineViewDetails: "Gecachte spotdetails bekijken", + offlineKeepActing: "Blijf doen - posts, RSVP's, advertenties en berichten worden in de wachtrij gezet en verzonden zodra je weer verbonden bent", + }, + sasquatchGuide: { + homeTitle: "Welkom bij SkateSpots! 🦧", + homeMessage: "Yo, ik ben The Sasquatch. Bewaker van boards, trails en wilde rides. Welkom in de ongetemde skatewereld op Nostr - geen pakken, geen advertenties, alleen skaters die hun eigen pad banen. Hier ben je eigenaar van je tricks, je data, en verdien je zelfs Bitcoin door je sporen achter te laten. Kom in contact met skaters in je buurt of over de hele wereld. Geen regels behalve shredden, geen voetafdrukken behalve die van jou.", + homeQ1: "Plan 3 dagen voor me in Barcelona", + homeQ2: "Vind spots voor beginners", + homeQ3: "Nog aankomende evenementen?", + homeQ4: "Communitystatistieken", + homeQ5: "Vind coaches in mijn buurt", + homeQ6: "Gear te koop?", + homeQ7: "Wat is Nostr?", + homeQ8: "Is dit gratis?", + homeLearnMore: "Meer info", + onboardingTitle: "Aan de slag 🚀", + onboardingMessage: "Laat me je de basis uitleggen! Nostr is je identiteit, Bitcoin Lightning laat je sats verdienen voor bijdragen, en zaps zijn directe fooien. Vraag me alles over beginnen!", + onboardingQ1: "Hoe log ik in?", + onboardingQ2: "Wat is Nostr?", + onboardingQ3: "Hoe werkt Nostr?", + onboardingQ4: "Wat is Cashu?", + onboardingQ5: "Hoe gebruik ik de Cashu-wallet?", + onboardingQ6: "Wat zijn mints?", + onboardingQ7: "Wat zijn zaps?", + onboardingQ8: "Wat is NWC?", + onboardingStart: "Begin met verkennen", + onboardingLogin: "Log in om te beginnen", + labTitle: "Welkom bij The Lab! 🎓", + labMessage: "Hier gebeurt de magie! Vind coaches die je alles leren, van kickflips tot darkslides, of kom in contact met filmers die je beste sessies vastleggen. Filter op vaardigheden, bekijk hun ervaring en boek een sessie. Onthoud: iedereen is ooit ergens begonnen!", + labQ1: "Vind coaches", + labQ2: "Vind filmers", + labQ3: "Vind fotografen", + labQ4: "Vind video-editors", + labQ5: "Vind een rampbouwer", + labQ6: "Wat is The Lab?", + labQ7: "Wat is een builder?", + labQ8: "Hoe bied ik coaching aan?", + labLogin: "Log in om diensten aan te bieden", + crewsTitle: "Crews 🤘", + crewsMessage: "Crews zijn je op de kaart verankerde skatefamilie - de mensen met wie je samen skatet, niet wie je inhuurt. Elke crew heeft thuisbasis op de kaart, vaste spots, leden en een manifest. Leden bevestigen met hun eigen sleutels, dus het roster is legit. Start je eigen crew of vind je mensen!", + crewsQ1: "Wat zijn crews?", + crewsQ2: "Hoe start ik een crew?", + crewsQ3: "Hoe verschilt een crew van The Lab?", + crewsQ4: "Hoe bevestigen leden?", + crewsQ5: "Wat is Nostr?", + crewsQ6: "Hoe werken zaps?", + crewsLogin: "Log in om een crew te starten", + }, + supportUi: { + keepMapFree: "Houd de kaart gratis", + keepMapFreeDesc: "Geen advertenties, geen tracking, geen VC. Je sats betalen hosting, de AI-node en de relay.", + thankYou: "Bedankt! ⚡", + satsKeepMapFree: "Je sats houden de kaart gratis.", + keptFreeNext: "Je hebt SkateSpots net gratis gehouden voor de volgende skater.", + scanToPay: "Scan om te betalen", + zapSkateSpots: "Zap SkateSpots", + payQuietly: "Betaal stilletjes", + pickAmount: "Kies een bedrag", + enterAmount: "Voer in hoeveel sats je wilt verzenden.", + couldNotStartPayment: "Kon de betaling niet starten.", + customAmountAria: "Aangepast bedrag in sats", + commentPlaceholder: "Zeg iets (optioneel - alleen openbare zaps)", + publicZapTitle: "Openbare zap met je opmerking", + loginToZapTitle: "Log in om een openbare zap te verzenden", + anonymousTitle: "Anoniem - geen login, geen registratie", + copyLightningTitle: "Kopieer het Lightning-adres", + copiedSuffix: "{{label}} gekopieerd", + invoiceLabel: "Factuur", + addressLabel: "Adres", + notAPurchase: "Steun, geen aankoop - je krijgt er niets voor en er zijn geen terugbetalingen. Merch en Sasquatch Pro zijn apart. Je locatie en identiteit zijn nooit betrokken bij een stille betaling.", + }, + statusUi: { + quickStatus: "Snelle status", + skating: "Aan het skaten", + skatingDesc: "Skat nu", + filming: "Aan het filmen", + filmingDesc: "Tricks aan het filmen", + lookingForSesh: "Zoekt sessie", + lookingForSeshDesc: "Wil met anderen skaten", + coaching: "Aan het coachen", + coachingDesc: "Lesgeven/coachen", + chilling: "Aan het chillen", + chillingDesc: "Hangen op de spot", + onMyWay: "Onderweg", + onMyWayDesc: "Op weg naar een spot", + takingABreak: "Pauze", + takingABreakDesc: "Uitrusten/hydrateren", + doneForToday: "Klaar voor vandaag", + doneForTodayDesc: "Klaar met skaten", + }, +}; export default nlBatch7; diff --git a/src/i18n/nl/batch8.ts b/src/i18n/nl/batch8.ts index 21b6126..6abc03b 100644 --- a/src/i18n/nl/batch8.ts +++ b/src/i18n/nl/batch8.ts @@ -1,4 +1,628 @@ -/** nl — batch 8. Filled by the translation pass; empty until then. */ -const nlBatch8 = {}; +/** nl — batch 8. Nederlandse vertaling van `deckCostUi`, `becomeRolesUi`, + * `weatherUi`, `skaterLabelsUi`, `notifyUi` en `legacyMiscUi`. + * + * Skate- en merktermijnen blijven Engels (Deck, Trucks, Wheels, Bearings, + * Griptape, sats, Nostr, Lightning, Spot, Park, Bowl, Vert, Crew, Stash, + * The Lab, tricknamen). Placeholders blijven ongewijzigd. + */ +const nlBatch8 = { + deckCostUi: { + presetPrompt: "Geef deze preset een naam", + presetDefaultName: "Preset {{n}}", + summaryCopied: "Samenvatting gekopieerd", + couldNotCopy: "Kopiëren mislukt", + resetConfirm: "Alles terugzetten naar de voorbeeldwaarden?", + logoTooLarge: "Logo te groot (max. 500 KB)", + loginToFill: "Log in om te vullen vanuit je Nostr-profiel", + filledFromProfile: "Gevuld vanuit je Nostr-profiel", + warnRetailBelowOne: "De verkoopmarkup ligt onder 1× — je zou met verlies verkopen.", + warnWholesaleAboveRetail: "De groothandelsmarkup moet lager zijn dan de verkoopmarkup.", + warnZeroBoards: "{{count}} rij(en) gebruiken 0 boards — de kosten van die rij worden genegeerd.", + warnFixedNoBoards: "Er zijn vaste maandlasten ingesteld, maar boards/maand is 0, dus de operationele kosten worden genegeerd.", + warnNoMaterials: "Geen materiaalkosten — voeg minstens één materiaal toe.", + warnEquipmentOverhead: "Equipment + overhead zijn meer dan 60% van de kosten — dit model gaat uit van grote volumes; controleer je boardaantallen.", + warnOneBoard: "Sommige equipment wordt over één board verdeeld — verhoog het boardaantal om het af te schrijven.", + templateStarterName: "Hobby-start", + templateStarterBlurb: "Een paar rijen, geen vaste kosten", + templateShopName: "Kleine werkplaats", + templateShopBlurb: "Volledige sheet met huur en overhead", + currency: "Valuta", + noCurrencyMatches: "Geen valuta gevonden.", + ratesUnavailable: "Live koersen niet beschikbaar — wisselen herlabelt alleen.", + liveRates: "live BTC-koersen · sats inbegrepen", + chipCost: "kosten", + chipSell: "verkoop", + chipTotal: "totaal", + startFrom: "Start met", + advancedToggleHint: "Toon tarieven per bewerking en uitval, batchopzet, belasting en de kosten-versus-aantal-curve", + advanced: "Geavanceerd", + simple: "Eenvoudig", + sectionLabor: "Arbeid", + sectionEquipment: "Equipment", + sectionOperations: "Operationele kosten", + sectionMaterials: "Materialen", + sectionProcesses: "Proceskosten", + sectionPackaging: "Verpakking", + sectionMargins: "Marges", + subtotalLoaded: "{{value}}/uur belast", + subtotalPerBoard: "{{value}}/board", + hourlyRate: "Uurtarief ({{unit}})", + labourBurden: "Arbeidslasten (×)", + loadedRate: "Belast uurtarief", + loadedRateHintBefore: "Belast uurtarief = loon × arbeidslasten (werkgeversbelastingen en verzekeringen op arbeid). Huur en rekeningen horen onder ", + loadedRateHintAfter: " — tel ze niet dubbel.", + colEquipment: "Equipment", + colCostUnit: "Kosten ({{unit}})", + colCost: "Kosten", + colSetupH: "Opzet (u)", + colLifetimeBoards: "Boards (levensduur)", + colPerBoard: "Per board", + colMaterial: "Materiaal", + colOrderUnit: "Bestelling ({{unit}})", + colShipUnit: "Verzending ({{unit}})", + colBoardsOrder: "Boards / bestelling", + colOrderM: "Bestelling (m)", + colUnloadM: "Lossen (m)", + colOrder: "Bestelling", + colShipping: "Verzending", + colOrderMin: "Bestelling (min)", + colUnloadMin: "Lossen (min)", + colProcess: "Proces", + colTimeM: "Tijd (m)", + colBoardsRun: "Boards / run", + colRateHr: "Tarief/uur (0 = werkplaats)", + colRateHrShort: "Tarief/uur", + colScrapPct: "Uitval %", + colTimeMin: "Tijd (min)", + colPackaging: "Verpakking", + colTimeBoardM: "Tijd/board (m)", + colTimeBoardMin: "Tijd/board (min)", + colMaterialsBoardUnit: "Materialen/board ({{unit}})", + colMaterialsBoard: "Materialen/board", + equipmentPerBoard: "Equipment per board:", + materialsPerBoard: "Materialen per board:", + processesPerBoard: "Processen per board:", + packagingPerBoard: "Verpakking per board:", + perBoard: "Per board:", + addEquipment: "Equipment toevoegen", + addMaterial: "Materiaal toevoegen", + addProcess: "Proces toevoegen", + addPackagingStep: "Verpakkingsstap toevoegen", + duplicate: "Dupliceren", + remove: "Verwijderen", + boardsPerMonth: "Boards / maand", + rentPerMonth: "Huur / maand", + utilitiesPerMonth: "Nutsvoorzieningen / maand", + subscriptionsPerMonth: "Abonnementen / maand", + markup: "Markup (×)", + wholesaleMarkup: "Groothandelsmarkup (×)", + scrapWaste: "Uitval / verlies (%)", + quantityDecks: "Aantal (decks)", + targetMonthlyProfit: "Doel maandwinst ({{unit}})", + costNoPackaging: "Kosten / board (zonder verpakking)", + costWithPackaging: "Kosten / board (met verpakking)", + batchSetupHours: "Batchopzet (u / run)", + batchSetupCost: "Batchopzetkosten ({{unit}} / run)", + taxVat: "Belasting / btw (%)", + quoteTax: "Belasting op offerte", + includedInPrice: "Inbegrepen in prijs", + addedOnTop: "Bovenop geteld", + setupPerBoard: "Opzet / board", + marginNoteBefore: "Markup {{markup}}× ≈ ", + grossMargin: "{{pct}}% brutomarge", + marginNoteAfter: " · verlies {{waste}}% wordt verdeeld over de goede boards.", + sellingPriceNoPackaging: "Verkoopprijs · zonder verpakking", + sellingPriceWithPackaging: "Verkoopprijs · met verpakking", + profitPerDeck: "Winst / deck", + wholesalePerDeck: "Groothandel / deck", + orderTotalQty: "Besteltotaal ({{qty}})", + orderTotal: "Besteltotaal", + breakeven: "Break-even", + breakevenPerMonth: "{{count}}/mnd", + targetDecksHint: "Om {{amount}}/maand bovenop de vaste kosten te halen, verkoop je {{decks}} decks/maand.", + priceIncludesTax: "Prijs is inclusief {{pct}}% belasting: {{amount}} van het totaal.", + plusTax: "Plus {{pct}}% belasting: {{amount}} → {{total}} totaal.", + costVsQuantity: "Kosten vs aantal (opzet afgeschreven)", + deckOne: "deck", + deckOther: "decks", + perDeckSuffix: "/ deck", + orderSuffix: "bestelling {{amount}}", + shippingNotIncluded: "Verzending naar de koper is niet inbegrepen.", + clientQuoteDetails: "Klantoffertegegevens (voor de PDF)", + fillFromProfileTitle: "Vul naam, website, NIP-05, Lightning en npub vanuit je Nostr-profiel", + fillFromProfile: "Vullen vanuit profiel", + businessName: "Bedrijfs-/winkelnaam", + email: "E-mail", + phone: "Telefoon", + website: "Website", + address: "Adres", + quoteNumber: "Offerte #", + nextNumber: "Volgend nummer", + validDays: "Geldig (dagen)", + nip05: "NIP-05", + lightningAddress: "Lightning-adres", + nostrNpub: "Nostr (npub)", + depositPct: "Aanbetaling vooraf (%)", + deliveryTerms: "Leveringsvoorwaarden (Incoterm, optioneel)", + paymentMethods: "Betaalmethoden", + paymentTerms: "Betaalvoorwaarden", + paymentDetails: "Betaalgegevens", + notesTerms: "Opmerkingen / voorwaarden", + changeLogo: "Logo wijzigen", + addLogo: "Logo toevoegen", + incotermNone: "Geen", + incotermExw: "EXW — ophalen bij de verkoper", + incotermFca: "FCA — overhandigd aan het vervoer van de koper", + incotermDap: "DAP — geleverd op het adres van de koper", + incotermDdp: "DDP — geleverd, invoerrechten betaald", + payMethodCash: "Contant", + payMethodLightning: "Lightning", + payMethodCashu: "Cashu", + payMethodBank: "Bankoverschrijving", + payMethodCard: "Kaart", + payMethodOther: "Anders", + listDeckAtPrice: "Zet een deck te koop voor deze prijs", + getItMade: "Laat het maken — vind een bouwer", + savePreset: "Preset opslaan", + load: "Laden", + export: "Exporteren", + import: "Importeren", + reset: "Resetten", + deletePreset: "Preset verwijderen", + exportPdfFull: "PDF — volledige sheet", + exportPdfQuote: "PDF — klantofferte", + exportPng: "PNG-afbeelding", + exportXlsx: "XLSX-werkmap", + exportCsv: "CSV (spreadsheet)", + exportMarkdown: "Markdown", + exportJson: "JSON (back-up)", + exportCopySummary: "Samenvatting kopiëren" + }, + becomeRolesUi: { + artist: { + seoTitle: "Ontwerper / artiest worden - SkateSpots", + seoDescription: "Zet je skateontwerp en kunst in de kijker — boardgraphics, logo's, posters, merch en meer.", + heading: "Ontwerper / artiest", + tagline: "Boardgraphics, logo's, posters, merch — zet je kunst in de scene", + noun: "artiest", + rateLabel: "Tarief", + portfolioLabel: "Portfolio- / shoplink", + sectionWhatYouMake: "Wat je maakt", + sectionMedium: "Medium", + sectionSoftwareTools: "Software & tools", + deliverablesPlaceholder: "bijv. drukklare bestanden, bronbestanden, deckgraphics", + turnaroundPlaceholder: "bijv. 3–5 dagen" + }, + graffiti: { + seoTitle: "Graffiti / muurschilderingen aanbieden - SkateSpots", + seoDescription: "Zet je graffiti en muurschilderingen in de kijker — pieces, murals, skateparkkunst en meer.", + heading: "Graffiti- / muralartiest", + tagline: "Pieces, murals, skateparkkunst — verf de scene", + noun: "graffitiartiest", + rateLabel: "Tarief", + portfolioLabel: "Portfoliolink (IG, site)", + sectionStyle: "Stijl", + sectionMedium: "Medium", + sectionWorkContext: "Werkcontext", + crewLabel: "Graffiti-crew", + crewPlaceholder: "Je writing-crew (optioneel)", + crewHelper: "Los van je skate-crew — de writers met wie je schildert.", + surfacesPlaceholder: "bijv. beton, baksteen, toegestane muren", + maxSizePlaceholder: "bijv. tot 10 m" + }, + musician: { + seoTitle: "Muziekprofiel toevoegen - SkateSpots", + seoDescription: "Skate en maak je muziek? Zet je band of soloproject in de kijker — genres, instrumenten en links.", + heading: "Muzikant / band", + tagline: "Skate en maak je muziek? Laat je boeken voor demo's, jams en afterparty's", + noun: "muzikant", + rateLabel: "Boekingstarief", + portfolioLabel: "Website- / EPK-link", + sectionGenre: "Genre", + sectionInstruments: "Instrumenten & rol", + actLabel: "Soort act", + actPlaceholder: "solo / 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: "bijv. 30–45 min", + techRiderPlaceholder: "bijv. PA, microfoons, backline" + }, + judge: { + seoTitle: "Skate-evenementen jureren - SkateSpots", + seoDescription: "Zet jezelf als jurylid voor skate-evenementen — Game of S.K.A.T.E., besttrick-jams, wedstrijden, am-series en worldtourstops. Laat je boeken om eerlijke, geloofwaardige evenementen te draaien.", + heading: "Jurylid skate-evenement", + tagline: "Van flatground Game of S.K.A.T.E. tot de World Destruction Tour — draai het eerlijk en geloofwaardig", + noun: "jurylid", + rateLabel: "Dagtarief / vergoeding", + portfolioLabel: "Resultatenarchief- / profiellink", + sectionEventFormats: "Evenementformats", + sectionSpecialty: "Specialiteit", + sectionLevelCircuit: "Niveau / circuit", + eventsJudgedLabel: "Gejureerde evenementen", + eventsJudgedPlaceholder: "bijv. 40+ wedstrijden, 3 worldtourstops", + eventsJudgedHelper: "Noemenswaardige evenementen, wedstrijden of tours die je hebt geleid.", + travelPlaceholder: "bijv. regionaal / landelijk / internationaal", + certificationsPlaceholder: "bijv. nationale jurycursus" + }, + organizer: { + seoTitle: "Skate-evenementen organiseren - SkateSpots", + seoDescription: "Zet jezelf als organisator van skate-evenementen — straatjams, best trick, wedstrijden, meetups, demo's en tourstops. Laat je ontdekken en boeken om de sessie te draaien.", + heading: "Evenementorganisator", + tagline: "Jams, wedstrijden, meetups & demo's — zet de sessie op en breng de scene samen", + noun: "organisator", + rateLabel: "Evenementvergoeding / budget", + portfolioLabel: "Link naar eerdere evenementen / resultaten", + sectionEventTypes: "Soorten evenementen", + sectionWhatYouHandle: "Wat je regelt", + sectionScale: "Schaal", + eventsHostedLabel: "Georganiseerde evenementen", + eventsHostedPlaceholder: "bijv. 25 jams, 3 stadswedstrijden", + eventsHostedHelper: "Noemenswaardige evenementen, wedstrijden of meetups die je hebt gedraaid.", + insurancePlaceholder: "bijv. WA-verzekering inbegrepen", + permitsPlaceholder: "bijv. gemeentelijke vergunningen geregeld" + }, + tattoo: { + seoTitle: "Tatoeageartiest worden - SkateSpots", + seoDescription: "Zet je tatoeagewerk voor de skatescene in de kijker — stijlen, flash, custom en meer.", + heading: "Tatoeageartiest", + tagline: "Ink voor de scene — flash, custom, fine line & meer", + noun: "tatoeageartiest", + rateLabel: "Tarief / uur", + portfolioLabel: "Portfoliolink (IG, site)", + sectionStyles: "Stijlen", + sectionMethod: "Methode", + studioLabel: "Studio / shop", + studioPlaceholder: "Studionaam (optioneel)", + booksOpenLabel: "Boeken open", + booksOpenHelper: "Neem je momenteel boekingen aan?", + depositPlaceholder: "bijv. € 50 niet-restitueerbaar", + minimumPlaceholder: "bijv. € 80" + }, + trainer: { + seoTitle: "Trainer / fysio worden - SkateSpots", + seoDescription: "Help skaters sterk en gezond te blijven — kracht, mobiliteit, blessurepreventie en herstel.", + heading: "Trainer / fysio", + tagline: "Kracht, mobiliteit, blessurepreventie & herstel voor skaters", + noun: "trainer", + rateLabel: "Tarief / sessie", + portfolioLabel: "Profiel- / boekingslink", + sectionFocus: "Focus", + sectionInjuries: "Blessures waarmee je werkt", + sectionCredentialsSetting: "Kwalificaties & omgeving", + credentialsPlaceholder: "bijv. BSc fysiotherapie, CSCS…", + credentialsHelper: "Vermeld echte kwalificaties — skaters vertrouwen verifieerbare kwalificaties.", + remoteLabel: "Op afstand / online", + remoteHelper: "Bied je online coaching of consulten aan?", + modalitiesPlaceholder: "bijv. manuele therapie, S&C, dry needling" + }, + barber: { + seoTitle: "Barbier / kapper worden - SkateSpots", + seoDescription: "Zet je barbershop of stoel voor de skatescene in de kijker — cuts, fades, baardtrimmen, kleur en meer. Laat je boeken door skaters.", + heading: "Barbier / kapper", + tagline: "Cuts, fades & baardtrimmen voor de scene — stoel in de shop of mobiel", + noun: "barbier", + rateLabel: "Prijs / cut", + portfolioLabel: "Cuts-galerij / IG-link", + sectionWhatYouOffer: "Wat je aanbiedt", + sectionSignatureStyles: "Signatuur-stijlen", + sectionSetting: "Omgeving", + studioLabel: "Shop / studio", + studioPlaceholder: "Shop- of studionaam (optioneel)", + booksOpenLabel: "Boeken open", + booksOpenHelper: "Neem je momenteel boekingen aan?", + durationPlaceholder: "bijv. 30–45 min" + } + }, + weatherUi: { + condition: { + clearSky: "Heldere lucht", + mainlyClear: "Overwegend helder", + partlyCloudy: "Gedeeltelijk bewolkt", + overcast: "Bewolkt", + foggy: "Mistig", + depositingRimeFog: "Rijmnevel met aanslag", + lightDrizzle: "Lichte motregen", + moderateDrizzle: "Matige motregen", + denseDrizzle: "Dichte motregen", + lightFreezingDrizzle: "Lichte onderkoelde motregen", + denseFreezingDrizzle: "Dichte onderkoelde motregen", + slightRain: "Lichte regen", + moderateRain: "Matige regen", + heavyRain: "Zware regen", + lightFreezingRain: "Lichte onderkoelde regen", + heavyFreezingRain: "Zware onderkoelde regen", + slightSnow: "Lichte sneeuw", + moderateSnow: "Matige sneeuw", + heavySnow: "Zware sneeuw", + snowGrains: "Sneeuwkorrels", + slightRainShowers: "Lichte regenbuien", + moderateRainShowers: "Matige regenbuien", + violentRainShowers: "Hevige regenbuien", + slightSnowShowers: "Lichte sneeuwbuien", + heavySnowShowers: "Zware sneeuwbuien", + thunderstorm: "Onweer", + thunderstormSlightHail: "Onweer met lichte hagel", + thunderstormHeavyHail: "Onweer met zware hagel", + unknown: "Onbekend" + }, + aqi: { + good: "Goed", + moderate: "Matig", + unhealthySensitive: "Ongezond voor gevoelige groepen", + unhealthy: "Ongezond", + veryUnhealthy: "Zeer ongezond", + hazardous: "Gevaarlijk" + }, + skateability: { + perfect: "Perfect", + good: "Goed", + okay: "Oké", + poor: "Matig", + bad: "Slecht", + unrideable: "Onberijdbaar" + }, + reason: { + currentlyRaining: "Het regent nu", + raining: "Regen", + snowing: "Sneeuw", + thunderstorm: "Onweer", + freezingTemperature: "Vriestemperatuur", + veryCold: "Erg koud", + extremelyHot: "Extreem heet", + veryHot: "Erg heet", + veryStrongWind: "Zeer harde wind", + strongWind: "Harde wind", + moderateWind: "Matige wind", + veryUnhealthyAir: "Zeer ongezonde lucht", + unhealthyAir: "Ongezonde lucht", + moderateAirQuality: "Matige luchtkwaliteit", + veryHumid: "Erg vochtig", + humid: "Vochtig", + extremeUv: "Extreme uv - draag zonnebrand", + highUv: "Hoge uv - zonbescherming aanbevolen", + perfectConditions: "Perfecte skateomstandigheden" + } + }, + skaterLabelsUi: { + stance: { + regular: "Regular", + goofy: "Goofy" + }, + style: { + street: "Street", + park: "Park", + vert: "Vert", + transition: "Transition", + bowl: "Bowl", + cruising: "Cruising", + downhill: "Downhill", + freestyle: "Freestyle", + ledges: "Ledges", + stairs: "Stairs", + diy: "DIY" + }, + level: { + grom: "Grom", + intermediate: "Gemiddeld", + advanced: "Gevorderd", + ripper: "Ripper" + }, + sponsor: { + title: "Titelsponsor", + gold: "Goud", + silver: "Zilver", + partner: "Partner" + } + }, + notifyUi: { + activity: { + zappedWithAmount: "Je kreeg {{sats}} sats gezapt", + zapped: "Je kreeg een zap", + liked: "Iemand vindt je post leuk", + reposted: "Iemand repostte je", + mentioned: "Iemand noemde je", + replied: "Iemand antwoordde je", + rsvp: "Iemand gaf aan te komen voor je evenement", + eventUpdated: "Een evenement waar je naartoe gaat is bijgewerkt", + newActivity: "Nieuwe activiteit", + tapToOpen: "Tik om SkateSpots te openen" + }, + crew: { + inviteTitle: "Crew-uitnodiging", + inviteBody: "Je bent uitgenodigd voor {{crew}}", + addedTitle: "Je bent toegevoegd aan een crew", + addedBody: "{{crew}} — bevestig om lid te worden", + joinRequestTitle: "Verzoek om lid te worden", + joinRequestBody: "Iemand wil lid worden van {{name}}" + }, + dm: { + title: "Nieuw direct bericht", + body: "Tik om het te lezen" + }, + trade: { + confirm: "Bevestig een ruil", + confirmed: "Ruil bevestigd", + newOffer: "Nieuw bod op je advertentie", + counter: "Tegenbod", + accepted: "Bod geaccepteerd 🎉", + declined: "Bod afgewezen", + withdrawn: "Bod ingetrokken" + }, + newsletter: { + drop: "Nieuwe SkateSpots-drop" + }, + summary: { + moreUpdates: "{{count}} meer updates", + openToCatchUp: "Open SkateSpots om bij te praten" + } + }, + legacyMiscUi: { + hostingGoing: "{{count}} gaan", + hostingInterested: "{{count}} geïnteresseerd", + hostingPostUpdate: "Update plaatsen", + hostingEdit: "Bewerken", + hostingLoginToSee: "Log in om te zien welke evenementen je organiseert.", + hostingEmptyTitle: "Je organiseert nog niets", + hostingEmptyBody: "Draai een jam, wedstrijd of sessie. Maak een evenement en skaters kunnen zich aanmelden, updates ontvangen en langskomen.", + hostingCreateEvent: "Evenement aanmaken", + hostingUpcoming: "Komend · {{count}}", + hostingPast: "Voorbij · {{count}}", + sponsorPartners: "Partners", + sponsorTitleSponsor: "Titelsponsor", + sponsorPlatformPartners: "Platformpartners", + reportsUntitled: "(zonder titel)", + reportsResolveFailed: "Kon het gemelde evenement niet ophalen (misschien is het verwijderd, of de melding gaat over een profiel in plaats van een post).", + reportsLookAtIt: "Bekijk het", + reportsNoReports: "Nog geen meldingen. Of alles is in orde, of niemand heeft de knop gevonden.", + statusSetYourStatus: "Stel je status in", + statusSetDesc: "Laat anderen weten wat je doet. Je status is zichtbaar op je profiel en bij gekoppelde spots.", + statusClear: "Wissen", + statusOrWriteOwn: "Of schrijf je eigen", + statusCustomPlaceholder: "Wat ben je aan het doen?", + statusLinkToSpot: "Koppelen aan een Spot (optioneel)", + statusSpotSelected: "Spot geselecteerd", + statusSearchSpots: "Spots zoeken...", + statusNoSpotsFound: "Geen spots gevonden.", + statusSelectSpot: "Selecteer een spot", + statusAutoClearAfter: "Automatisch wissen na: {{time}}", + statusExpMin: "{{count}} min", + statusExpOneHour: "1 uur", + statusExpHours: "{{count}} uur", + statusExpOneDay: "1 dag", + statusExpDays: "{{count}} dagen", + statusSlider15: "15 min", + statusSlider1h: "1 uur", + statusSlider4h: "4 uur", + statusSlider24h: "24 uur", + statusSetting: "Status instellen...", + statusSet: "Status instellen", + statusSomethingWrong: "Er ging iets mis", + seoProfileTitle: "Profiel - SkateSpots", + seoViewProfile: "Profiel bekijken.", + bannerAlt: "Banner", + openInCordn: "Openen in Cordn", + modHelp: "Verbergen publiceert org.skatespots.moderation / hidden; Bevestigen publiceert … / verified; Ongedaan maken publiceert … / cleared (terug naar neutraal). Alle drie zijn openbare, omkeerbare labels — niets wordt ooit van relays verwijderd.", + zapNoActiveMint: "Geen actieve Cashu-mint gevonden.", + altProfile: "Profiel", + altCardPreview: "Kaartvoorbeeld", + altCard: "Kaart", + altCaptured: "Vastgelegd", + ariaPrevPhoto: "Vorige foto", + ariaNextPhoto: "Volgende foto", + ariaCommentOptions: "Reactie-opties", + ariaMessageConversation: "Gesprek", + exportTitle: "SkateSpots — Deckkostenberekening", + exportQuoteTitle: "OFFERTE", + exportPngTitle: "Deckkosten", + exportMarkdownTitle: "Deckkostenberekening", + exportSectionLabor: "Arbeid", + exportSectionEquipment: "Equipment", + exportSectionOperations: "Operationele kosten", + exportSectionMaterials: "Materialen", + exportSectionProcesses: "Proceskosten", + exportSectionPackaging: "Verpakking", + exportSectionResult: "Resultaat", + exportLabelOperations: "Operationeel", + exportLabelProcesses: "Processen", + exportKvHourlyRate: "Uurtarief", + exportKvLabourBurden: "Arbeidslasten", + exportKvLoadedRate: "Belast uurtarief", + exportKvEquipmentPerBoard: "Equipment per board", + exportKvBoardsPerMonth: "Boards / maand", + exportKvRentPerMonth: "Huur / maand", + exportKvUtilitiesPerMonth: "Nutsvoorzieningen / maand", + exportKvSubscriptionsPerMonth: "Abonnementen / maand", + exportKvPerBoard: "Per board", + exportKvMaterialsPerBoard: "Materialen per board", + exportKvProcessesPerBoard: "Processen per board", + exportKvPackagingPerBoard: "Verpakking per board", + exportKvMarkup: "Markup", + exportMarkupValue: "{{markup}}× (≈ {{pct}}% brutomarge)", + exportKvWasteEffective: "Verlies (effectief)", + exportKvCostNoPack: "Kosten / board (zonder verpakking)", + exportKvCostWithPack: "Kosten / board (met verpakking)", + exportKvBatchSetupPerBoard: "Batchopzet / board", + exportKvTax: "Belasting ({{pct}}%)", + exportKvTaxIncluded: "Belasting ({{pct}}%, inbegrepen)", + exportKvSellingNoPack: "Verkoopprijs (zonder verpakking)", + exportKvSellingWithPack: "Verkoopprijs (met verpakking)", + exportShippingNote: "Verzending naar de koper is niet inbegrepen.", + exportGeneratedBy: "Gegenereerd door SkateSpots · skate-spots.org", + exportGeneratedWith: "Gegenereerd met SkateSpots · skate-spots.org", + exportDetailSetup: "+ {{hours}}u opzet", + exportDetailBoards: "{{boards}} boards", + exportDetailShip: "+ {{amount}} verzending", + exportDetailMinutes: "{{minutes}} min", + exportDetailPerBoards: "/ {{boards}} boards", + exportDetailScrap: "{{pct}}% uitval", + exportDetailMaterials: "{{materials}} materialen", + exportQuoteRef: "Ref. {{ref}}", + exportQuoteLineItem: "Custom skateboarddeck", + exportQuoteLineItemQty: "Custom skateboarddeck × {{qty}}", + exportQuoteLineDesc: "Handgemaakt, afgewerkt en verpakt. Aantal 1.", + exportQuoteLineDescQty: "Handgemaakt, afgewerkt en verpakt. {{price}} per stuk.", + exportQuoteSubtotal: "Subtotaal", + exportQuoteSubtotalQty: "Subtotaal ({{qty}} decks)", + exportQuoteTax: "Belasting / btw ({{pct}}%)", + exportQuoteTotal: "Totaal", + exportQuoteTotalQty: "Totaal ({{qty}} decks)", + exportQuoteIncludesTax: "Inclusief {{pct}}% belasting ({{amount}})", + exportQuoteDeposit: "Nu te betalen aanbetaling ({{pct}}%)", + exportQuoteBalance: "Restbedrag bij oplevering", + exportQuotePayment: "Betaling: {{value}}", + exportQuoteLightning: "Lightning: {{value}}", + exportQuoteDetails: "Gegevens: {{value}}", + exportQuoteTerms: "Voorwaarden: {{value}}", + exportQuoteDelivery: "Levering: {{value}}", + exportQuoteValidUntil: "Verzending niet inbegrepen. Offerte geldig tot {{date}}.", + exportPngSellingWith: "VERKOOPPRIJS · MET VERPAKKING", + exportPngSellingNo: "VERKOOPPRIJS · ZONDER VERPAKKING", + exportPngCostWith: "KOSTEN / BOARD (MET VERPAKKING)", + exportPngDeposit: "Aanbetaling {{pct}}%: {{amount}}", + exportXlsxSummary: "Samenvatting", + exportXlsxCurrency: "Valuta", + exportXlsxDate: "Datum", + exportXlsxOperationsPerBoard: "Bewerkingen per board", + exportColCost: "Kosten", + exportColSetupH: "Opzet (u)", + exportColBoards: "Boards", + exportColPerBoard: "Per board", + exportColMaterial: "Materiaal", + exportColOrderCost: "Bestelkosten", + exportColShipping: "Verzending", + exportColOrderMin: "Bestelling (min)", + exportColUnloadMin: "Lossen (min)", + exportColProcess: "Proces", + exportColTimeMin: "Tijd (min)", + exportColTimeBoardMin: "Tijd/board (min)", + exportColMaterialsBoard: "Materialen/board", + exportCopyTitle: "Deckkosten — {{currency}}", + exportCopyCostWith: "Kosten / board (met verpakking): {{amount}}", + exportCopySellingNo: "Verkoopprijs (zonder verpakking): {{amount}}", + exportCopySellingWith: "Verkoopprijs (met verpakking): {{amount}}", + exportCopyBreakdown: "Equipment {{equipment}} · operationeel {{operations}} · materialen {{materials}} · processen {{processes}} · verpakking {{packaging}}", + exportMdHourlyRate: "Uurtarief: {{value}}", + exportMdLabourBurden: "Arbeidslasten: {{value}}", + exportMdLoadedRate: "Belast uurtarief: {{value}}", + exportMdBoardsPerMonth: "Boards/maand: {{value}}", + exportMdRent: "Huur: {{value}}", + exportMdUtilities: "Nutsvoorzieningen: {{value}}", + exportMdSubscriptions: "Abonnementen: {{value}}", + exportMdPerBoard: "Per board: {{value}}", + exportMdMarkupWaste: "Markup: {{markup}}× (≈ {{pct}}% brutomarge) · verlies: {{waste}}%", + exportMdCostNoPack: "Kosten/board (zonder verpakking): {{value}}", + exportMdCostWithPack: "Kosten/board (met verpakking): {{value}}", + exportMdBatchSetup: "Batchopzet/board: {{value}}", + exportMdSellingNo: "Verkoopprijs (zonder verpakking): {{value}}", + exportMdSellingWith: "Verkoopprijs (met verpakking): {{value}}", + exportMdDisclaimer: "Verzending naar de koper is niet inbegrepen. Gegenereerd door SkateSpots." + } +}; export default nlBatch8; diff --git a/src/i18n/pl/batch1.ts b/src/i18n/pl/batch1.ts index 407f432..897a4d4 100644 --- a/src/i18n/pl/batch1.ts +++ b/src/i18n/pl/batch1.ts @@ -1,4 +1,290 @@ -/** pl — batch 1. Filled by the translation pass; empty until then. */ -const plBatch1 = {}; +/** pl — batch 1. Namespaces: common, nav, chromeUi, desktopNav, navSheet, pwa, home, about, faq, onboarding. */ +const plBatch1 = { + common: { + loading: "Ładowanie...", + error: "Błąd", + save: "Zapisz", + cancel: "Anuluj", + delete: "Usuń", + edit: "Edytuj", + add: "Dodaj", + remove: "Usuń", + create: "Utwórz", + submit: "Wyślij", + close: "Zamknij", + back: "Wstecz", + next: "Dalej", + done: "Gotowe", + search: "Szukaj", + filter: "Filtruj", + sort: "Sortuj", + share: "Udostępnij", + more: "Więcej", + copy: "Kopiuj", + copied: "Skopiowano!", + viewAll: "Zobacz wszystkie", + seeMore: "Zobacz więcej", + showMore: "Pokaż więcej", + showLess: "Pokaż mniej", + noResults: "Brak wyników", + tryAgain: "Spróbuj ponownie", + learnMore: "Dowiedz się więcej", + getStarted: "Zacznij", + yes: "Tak", + no: "Nie", + or: "lub", + and: "i", + free: "Za darmo", + new: "Nowe", + popular: "Popularne", + featured: "Wyróżnione", + verified: "Zweryfikowane", + sats: "sats", + clear: "Wyczyść", + clearFilters: "Wyczyść filtry", + clearAll: "Wyczyść wszystko", + hide: "Ukryj", + undo: "Cofnij", + }, + nav: { + home: "Główna", + map: "Spoty", + lab: "The Lab", + events: "Wydarzenia", + crews: "Crew", + wallet: "Portfel", + settings: "Ustawienia", + more: "Więcej", + rewards: "Nagrody", + stats: "Statystyki społeczności", + about: "O nas", + food: "Jedzenie", + marketplace: "Giełda", + mints: "Mennice", + appShop: "Sklep", + diy: "DIY", + trades: "Giełda", + stash: "Stash", + collections: "Kolekcje", + contacts: "Kontakty", + messages: "Wiadomości", + skaters: "Skaterzy", + glossary: "Słownik", + riderCard: "Karta ridera", + supporters: "Wspierający ⚡", + newsletter: "Newsletter", + viewProfile: "Zobacz profil", + leaderboards: "Rankingi", + }, + chromeUi: { + skipToContent: "Przejdź do treści", + menu: "Menu", + inBadge: "In", + loggedIn: "Zalogowany", + profile: "Profil", + logIn: "Zaloguj się", + logOut: "Wyloguj się", + notLoggedIn: "Niezalogowany", + loggedOutPrompt: "Zaloguj się, aby dodawać spoty, wysyłać Zaps skaterom i zapisywać ulubione", + accounts: "Konta", + addAnotherAccount: "Dodaj kolejne konto", + setStatus: "Ustaw status", + setYourStatus: "Ustaw swój status", + status: "Status", + addSpot: "Dodaj spot", + myData: "Moje dane", + myStash: "Mój Stash", + myCollections: "Moje kolekcje", + viewMyProfile: "Zobacz mój profil", + customizeNavBar: "Dostosuj pasek nawigacji", + ecash: "Ecash", + madeWith: "Zrobione z", + forSkateCommunity: "dla społeczności skaterów", + beta: "Beta", + license: "Licencja", + privacy: "Prywatność", + collaborators: "Współpracownicy i przyjaciele", + notSponsoredBy: "Nie sponsorowane przez", + errorTitle: "Nie udało się załadować", + errorDescription: "Żądanie sieciowe nie powiodło się. Sprawdź połączenie i spróbuj ponownie.", + tryAgain: "Spróbuj ponownie", + weatherOn: "Pogoda włączona", + weatherOff: "Pogoda wyłączona", + trustFilter: "Filtr zaufania", + filterByTrustLevel: "Filtruj według poziomu zaufania", + trust: { + all: "Wszyscy użytkownicy", + allDesc: "Pokaż treści od wszystkich", + verified: "Zweryfikowani", + verifiedDesc: "Obserwujesz ich lub są zweryfikowani (zaufanie ≥90)", + trusted: "Zaufani", + trustedDesc: "Znajomi znajomych lub zweryfikowani przez NIP-05 (zaufanie ≥60)", + following: "Tylko obserwowani", + followingDesc: "Pokaż tylko treści od osób, które obserwujesz", + followingShort: "Obserwowani", + }, + sort: { + recent: "Najnowsze", + recentDesc: "Najpierw najnowsze", + trust: "Najwyższe zaufanie", + trustDesc: "Najbardziej zaufani twórcy", + proximity: "Najbliżej mnie", + proximityDesc: "Najbliższe lokalizacje", + popular: "Najpopularniejsze", + popularDesc: "Najwięcej komentarzy/reakcji", + zaps: "Najwięcej Zaps", + zapsDesc: "Najwyższa otrzymana wartość", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + diy: "DIY", + bowl: "Bowl", + vert: "Vert", + indoor: "Kryte", + skatepark: "Skatepark", + miniramp: "Mini Ramp", + }, + }, + desktopNav: { + title: "Nawigacja na pulpicie", + desc: "Wybierz, które zakładki pojawiają się na górnym pasku i w jakiej kolejności. Ukryte zakładki nadal są w menu „Więcej”.", + fixed: "Stałe", + shownInTopBar: "Wyświetlane na górnym pasku ({{count}})", + noExtraTabs: "Brak dodatkowych zakładek — wszystko jest w menu „Więcej”. Dodaj kilka poniżej.", + inMoreMenu: "W menu „Więcej” ({{count}})", + moveUp: "Przenieś {{name}} w górę", + moveDown: "Przenieś {{name}} w dół", + hide: "Ukryj {{name}}", + moveToMore: "Przenieś do menu Więcej", + show: "Pokaż", + showInTopBar: "Pokaż {{name}} na górnym pasku", + showInTopBarTitle: "Pokaż na górnym pasku", + reset: "Przywróć domyślne", + }, + navSheet: { + title: "Dostosuj swój pasek", + desc: "Wybierz {{count}} zakładek, których używasz najczęściej. Wszystko inne zostaje w menu.", + preview: "Podgląd", + empty: "Puste", + order: "Kolejność ({{done}}/{{total}})", + available: "Dostępne zakładki", + full: "Pasek pełny — usuń jedną, aby zamienić", + moveUp: "Przenieś {{name}} w górę", + moveDown: "Przenieś {{name}} w dół", + login: "Zaloguj się", + profile: "Profil", + reset: "Resetuj", + done: "Gotowe", + }, + pwa: { + installTitle: "Zainstaluj SkateSpots", + installSubtitle: "Zyskaj pełne doświadczenie aplikacji", + addToHomeScreen: "Dodaj do ekranu głównego", + installApp: "Zainstaluj aplikację", + maybeLater: "Może później", + gotIt: "Rozumiem!", + benefits: { + fast: "Błyskawicznie szybka", + offline: "Działa offline", + fullAccess: "Pełny dostęp", + }, + iosStep1: "Dotknij przycisku Udostępnij", + iosStep1Hint: "na dole Safari", + iosStep2: "Przewiń i dotknij „Dodaj do ekranu głównego”", + iosStep2Hint: "w menu udostępniania", + iosStep3: "Dotknij „Dodaj”, aby zainstalować", + iosStep3Hint: "Aplikacja pojawi się na ekranie głównym", + androidStep1: "Dotknij przycisku menu", + androidStep1Hint: "(trzy kropki) w przeglądarce", + androidStep2: "Wybierz „Dodaj do ekranu głównego”", + androidStep2Hint: "lub „Zainstaluj aplikację”", + androidStep3: "Potwierdź instalację", + androidStep3Hint: "Aplikacja pojawi się na ekranie głównym", + tagline: "Za darmo • Działa offline • Szybka i niezawodna", + }, + home: { + tagline: "Tworzona przez społeczność • Oparta na Relayach", + title: "SKATE SPOTS", + subtitle: "Odkrywaj spoty • Spotykaj się • Ucz się trików • Wspieraj lokalnych", + description: "Prawdziwy skateboarding dzieje się offline — to narzędzie pomoże ci go znaleźć.", + betaWarning: "BETA — W budowie • Używaj na własne ryzyko", + pwaHint: "Progresywna aplikacja webowa — zainstaluj na swoim urządzeniu", + exploreMap: "Odkrywaj mapę", + addSpot: "Dodaj spot", + globalSpots: "Spoty na świecie", + openCommunity: "Otwarta społeczność", + lightningZaps: "Zaps Lightning", + featuredSpots: "Wyróżnione spoty", + featuredSpotsDesc: "Zweryfikowane przez społeczność spoty z całego świata", + upcomingEvents: "Nadchodzące wydarzenia", + upcomingEventsDesc: "Zawody, spotkania i sesje już wkrótce", + noSpotsYet: "Nie znaleziono jeszcze żadnych spotów", + noSpotsHint: "Bądź pierwszy, który doda spot!", + noEventsYet: "Brak nadchodzących wydarzeń", + noEventsHint: "Zajrzyj później lub utwórz wydarzenie!", + theLab: "The Lab", + theLabDesc: "Ucz się trików, znajdź trenerów i podnieś swój poziom jazdy", + coaches: "Trenerzy", + coachesDesc: "Ucz się od doświadczonych skaterów, którzy pomogą ci się rozwijać", + filmers: "Filmerzy", + filmersDesc: "Nawiąż kontakt z filmerami, aby uchwycić swoje najlepsze klipy", + findCoach: "Znajdź trenera", + becomeCoach: "Zostań trenerem", + findFilmer: "Znajdź filmera", + becomeFilmer: "Zostań filmerem", + viewAllSpots: "Zobacz wszystkie spoty", + viewAllEvents: "Zobacz wszystkie wydarzenia", + createEvent: "Utwórz wydarzenie", + readyToShare: "Gotowy do udostępnienia?", + readyToShareDesc: "Pomóż społeczności skateboardingowej rosnąć, dodając swoje ulubione spoty. Każda lokalizacja, którą udostępnisz, pomaga innym skaterom odkryć nowe miejsca do jazdy.", + }, + about: { + title: "O SkateSpots", + subtitle: "Zdecentralizowana społeczność skateboardingowa", + whatIs: "Czym jest SkateSpots?", + whatIsDesc: "SkateSpots to tworzona przez społeczność platforma do odkrywania miejsc skateboardingowych na całym świecie. Zbudowana na Nostr, daje skaterom prawdziwą własność ich danych.", + features: "Funkcje", + featuresDesc: "Znajduj spoty, twórz wydarzenia, łącz się z trenerami i wspieraj lokalne sklepy — wszystko w jednym miejscu.", + nostr: "Zbudowana na Nostr", + nostrDesc: "Nostr to prosty, otwarty protokół umożliwiający naprawdę odporną na cenzurę globalną komunikację. Twoje konto i dane należą do ciebie.", + openSource: "Open Source", + openSourceDesc: "SkateSpots jest w pełni open source. Współtwórz, forkuj lub uruchom własną instancję.", + lightning: "Płatności Lightning", + lightningDesc: "Wysyłaj Zaps swoim ulubionym skaterom, trenerom i twórcom dzięki płatnościom Bitcoin Lightning.", + }, + faq: { + title: "Najczęściej zadawane pytania", + subtitle: "Wszystko, co musisz wiedzieć o SkateSpots", + whatIsNostr: "Czym jest Nostr?", + whatIsNostrAnswer: "Nostr to otwarty protokół do zdecentralizowanych sieci społecznościowych. W przeciwieństwie do tradycyjnych platform, twoje dane i tożsamość należą do ciebie.", + howToStart: "Jak zacząć?", + howToStartAnswer: "Kliknij „Zarejestruj się”, aby utworzyć nowe konto Nostr, lub „Zaloguj się”, jeśli już je masz. Możesz użyć rozszerzenia przeglądarki, aplikacji mobilnej lub klucza tajnego.", + whatAreZaps: "Czym są Zaps?", + whatAreZapsAnswer: "Zaps to napiwki Bitcoin Lightning, które możesz wysyłać innym użytkownikom. To sposób na okazanie uznania za świetne treści lub wsparcie twórców.", + howToAddSpot: "Jak dodać spot?", + howToAddSpotAnswer: "Zaloguj się na swoje konto, kliknij „Dodaj spot” i uzupełnij szczegóły, w tym lokalizację, zdjęcia i opis.", + isItFree: "Czy SkateSpots jest darmowe?", + isItFreeAnswer: "Tak! SkateSpots jest całkowicie darmowe. Opcjonalnie możesz wysyłać Zaps (napiwki Bitcoin) innym użytkownikom.", + canIEditSpot: "Czy mogę edytować lub usunąć swoje spoty?", + canIEditSpotAnswer: "Tak, możesz edytować utworzone przez siebie spoty. Ze względu na zdecentralizowany charakter Nostr, żądania usunięcia są wysyłane, ale niektóre Relay mogą zachować dane.", + }, + onboarding: { + welcome: "Witaj w SkateSpots!", + welcomeDesc: "Skonfigurujmy wszystko w kilku krokach.", + step1Title: "Utwórz swoje konto", + step1Desc: "Twoje klucze Nostr są generowane. To coś jak hasło, które kontrolujesz.", + step2Title: "Zrób kopię zapasową kluczy", + step2Desc: "Zapisz swoją frazę odzyskiwania w bezpiecznym miejscu. To jedyny sposób na odzyskanie konta!", + step3Title: "Skonfiguruj swój profil", + step3Desc: "Opowiedz społeczności o sobie.", + step4Title: "Jesteś gotowy!", + step4Desc: "Zacznij odkrywać spoty i wydarzenia oraz łączyć się ze skaterami.", + skipForNow: "Pomiń na razie", + continueToApp: "Przejdź do aplikacji", + }, +}; export default plBatch1; diff --git a/src/i18n/pl/batch2.ts b/src/i18n/pl/batch2.ts index 85dba4f..84266ee 100644 --- a/src/i18n/pl/batch2.ts +++ b/src/i18n/pl/batch2.ts @@ -1,4 +1,1652 @@ -/** pl — batch 2. Filled by the translation pass; empty until then. */ -const plBatch2 = {}; +/** pl — batch 2. Filled by the 2026-10-07 Polish translation pass. */ +const plBatch2 = { + mapUi: { + mapFooter: { + links: "Linki", + hide: "Ukryj pasek linków mapy", + }, + findingSpots: "Szukanie Spotów", + loadingSpots: "Wczytywanie Spotów", + loadingMap: "Wczytywanie mapy...", + mapViewAria: "Widok mapy", + listViewAria: "Widok listy", + layers: "Warstwy", + mapLayers: "Warstwy mapy", + showOnMap: "Pokaż na mapie", + showResults: "Pokaż wyniki", + quickActions: "Szybkie akcje", + spots: "Spoty", + shops: "Sklepy", + gear: "Sprzęt", + tours: "Toury", + events: "Wydarzenia", + crews: "Crewy", + spotType: "Typ Spotu", + sortBy: "Sortuj według", + trustLevel: "Poziom zaufania", + weather: "Pogoda", + buySellGear: "Kup/Sprzedaj sprzęt", + stash: "Stash", + more: "Więcej", + newHere: "Nowy tutaj?", + welcomeDesc: "Odkrywaj Spoty, wydarzenia i społeczność.", + getOnZapstore: "Pobierz z Zapstore", + dismiss: "Zamknij", + addedBy: "Dodane przez", + directions: "Nawigacja", + viewDetails: "Zobacz szczegóły", + viewDetailsArrow: "Zobacz szczegóły →", + spotDetails: "Szczegóły Spotu", + skateShop: "Skate Shop", + skateSpot: "Skate Spot", + youAreHere: "Jesteś tutaj", + conditions: "Warunki", + weatherScoreSuffix: "pogoda {{score}}/100", + wind: "Wiatr", + humidity: "Wilgotność", + airQuality: "Jakość powietrza", + threeDayForecast: "Prognoza na 3 dni", + gearForSale: "Sprzęt na sprzedaż ({{count}})", + viewItems: "Zobacz przedmioty →", + viewAllItems: "Zobacz wszystkie przedmioty ({{count}}) →", + viewGear: "Zobacz sprzęt →", + localTour: "Lokalny Tour", + meetAt: "Spotkanie: {{place}}", + hours: "{{count}} godz.", + level: "poziom {{level}}", + viewTour: "Zobacz Tour →", + upcomingEvent: "Nadchodzące wydarzenie", + viewEvent: "Zobacz wydarzenie →", + skateCrew: "Skate Crew", + members: "{{count}} członków", + since: "Od {{year}}", + viewCrew: "Zobacz Crew →", + acceptsBitcoin: "Przyjmuje Bitcoin", + boosted: "Wyróżnione", + website: "Strona internetowa", + offlineSavedSpots: "Offline · wyświetlanie zapisanych Spotów", + cantReachRelays: "Nie można połączyć się z Relayami", + relayOnlineNoAnswer: "Jesteś online, ale Relay społeczności nie odpowiada.", + youreOffline: "Jesteś offline.", + savedOnDevice: "Spoty, które już widziałeś, są zapisane na tym urządzeniu i pojawią się tutaj.", + noSpotsMatchTitle: "Brak pasujących Spotów", + noSpotsMatchDesc: "Spróbuj innego wyszukiwania lub wyczyść filtry.", + noSpotsMappedYet: "Brak zmapowanych Spotów", + noSpotsMappedDesc: "Bądź pierwszy i dodaj swój park do mapy — to zajmuje minutę, jest twój, a następny skater, który tu zajrzy, podziękuje ci.", + addFirstSpot: "Dodaj pierwszy Spot", + findSpotsNearMe: "Znajdź Spoty w pobliżu", + locating: "Ustalanie lokalizacji…", + refiningLocation: "Doprecyzowywanie lokalizacji…", + refiningLocationDesc: "Wyśrodkowano na ostatnim Spocie — ustalanie świeżej pozycji GPS.", + locatingYou: "Ustalanie twojej lokalizacji…", + locatingDesc: "Ustalanie pozycji GPS. Za pierwszym razem może to potrwać do minuty.", + foundYou: "Znaleziono cię", + foundYouDesc: "Wyśrodkowano mapę na twojej lokalizacji.", + locationPermissionNeeded: "Wymagane pozwolenie na lokalizację", + permissionNeededDesc: "Zezwól SkateSpots na lokalizację w Ustawieniach urządzenia → Aplikacje → SkateSpots → Uprawnienia, a następnie ponownie dotknij Blisko mnie.", + locationTimedOut: "Przekroczono czas lokalizacji", + timeoutNativeDesc: "Nie udało się ustalić lokalizacji na czas. Jeśli jesteś w budynku, GPS nie widzi satelitów — włącz lokalizację sieciową (Ustawienia → Lokalizacja) lub wyjdź na zewnątrz i spróbuj ponownie.", + timeoutWebDesc: "Nie udało się ustalić lokalizacji na czas. Sprawdź sygnał i spróbuj ponownie.", + noLocationProvider: "Brak dostawcy lokalizacji", + noProviderNativeDesc: "Twój telefon nie udostępnia lokalizacji. W systemach nastawionych na prywatność (np. GrapheneOS) włącz lokalizację sieciową w Ustawienia → Lokalizacja albo upewnij się, że GPS jest włączony, i spróbuj na zewnątrz.", + noProviderWebDesc: "Żaden dostawca lokalizacji nie jest dostępny. Włącz usługi lokalizacyjne i spróbuj ponownie.", + locationUnavailable: "Lokalizacja niedostępna", + unavailableNativeDesc: "Włącz lokalizację/GPS w ustawieniach telefonu, zezwól SkateSpots na lokalizację (Ustawienia → Aplikacje → SkateSpots → Uprawnienia) i spróbuj ponownie.", + unavailableWebDesc: "Nie udało się ustalić twojej lokalizacji. Upewnij się, że usługi lokalizacyjne są włączone.", + locationBlocked: "Lokalizacja zablokowana", + locationBlockedDesc: "Twoja przeglądarka zablokowała dostęp do lokalizacji dla tej witryny. Oto jak go ponownie włączyć:", + locationPlatformAndroid: "Android Chrome", + locationPlatformIos: "iOS Safari", + locationPlatformDesktop: "Desktop Chrome", + locationPlatformFirefox: "Firefox", + locationStepsAndroid: "Dotknij ikony kłódki na pasku adresu → Ustawienia witryny → Lokalizacja → Zezwól", + locationStepsIos: "Aplikacja Ustawienia → Safari → Lokalizacja → Zezwól (lub dotknij przycisku AA na pasku adresu Safari)", + locationStepsDesktop: "Kliknij ikonę kłódki → Ustawienia witryny → Lokalizacja → Zezwól", + locationStepsFirefox: "Kliknij ikonę kłódki → Połączenie bezpieczne → Więcej informacji → Uprawnienia → Dostęp do lokalizacji → Zezwól", + gotIt: "Rozumiem", + addSpot: "Dodaj Spot", + addShop: "Dodaj sklep", + addEvent: "Dodaj wydarzenie", + addSpotHereTitle: "Dodać tu Spot?", + addSpotHereDesc: "Upuść pinezkę w miejscu dotknięcia", + sellGear: "Sprzedaj sprzęt", + offerTour: "Zaproponuj Tour", + closeAddMenu: "Zamknij menu dodawania", + addMenuAria: "Dodaj Spot, sklep, wydarzenie, sprzęt lub Tour", + localChat: "Lokalny czat", + localChatDesc: "Czat na żywo dla miejsca, na którym wyśrodkowana jest mapa. Wybierz zasięg kanału.", + btcMapShowing: "Pokazywanie {{count}} miejsc w pobliżu, gdzie możesz wydać swoje sats", + btcMapShow: "Pokaż miejsca, w których możesz wydać swoje sats (przez BTC Map)", + yourPrivateStash: "Twój prywatny Stash", + stashIntro: "Śledź swój sprzęt, ustalaj ceny i znajduj wymiany z innymi skaterami.", + encryptionRequired: "Wymagane szyfrowanie", + encryptionRequiredDesc: "Użyj signera z obsługą NIP-44 (Alby, nos2x, Amber).", + myStash: "Mój Stash", + encrypted: "Zaszyfrowane", + itemsCount: "{{count}} przedmiotów", + items: "Przedmioty", + wishlist: "Lista życzeń", + types: "Typy", + stashEmpty: "Twój Stash jest pusty", + addFirstItem: "Dodaj pierwszy przedmiot", + wishlistCount: "Lista życzeń ({{count}})", + myGearCount: "Mój sprzęt ({{count}})", + openFullStash: "Otwórz pełny Stash", + addItem: "Dodaj przedmiot", + searchSpotsPlaceholder: "Szukaj Spotów...", + selected: "Wybrane", + noSpotsFound: "Nie znaleziono Spotów. Spróbuj innego wyszukiwania.", + addingSpotsHint: "Dodawanie Spotów pomaga innym cię znaleźć podczas przeglądania konkretnych lokalizacji", + report: "Zgłoś", + spotSingular: "1 Spot", + spotPlural: "{{count}} Spotów", + view: "Zobacz", + myCollections: "Moje kolekcje", + collectionsSubtitle: "Porządkuj ulubione Spoty w spersonalizowanych listach", + newCollection: "Nowa kolekcja", + loginToCreate: "Zaloguj się, aby tworzyć kolekcje", + loginToCreateDesc: "Zapisuj ulubione Spoty na spersonalizowanych listach, takich jak Wycieczka do Barcelony 2024 czy Najlepsze Raile w LA", + noCollections: "Brak kolekcji", + noCollectionsDesc: "Utwórz pierwszą kolekcję, aby zacząć porządkować Spoty", + createFirstCollection: "Utwórz pierwszą kolekcję", + createNewCollection: "Utwórz nową kolekcję", + createCollectionDesc: "Nadaj kolekcji nazwę i opcjonalny opis", + collectionName: "Nazwa kolekcji", + collectionNamePlaceholder: "Wycieczka do Barcelony 2024", + descriptionOptional: "Opis (opcjonalnie)", + descriptionPlaceholder: "Moje ulubione Spoty z wycieczki do Barcelony...", + creating: "Tworzenie...", + createCollection: "Utwórz kolekcję", + editCollection: "Edytuj kolekcję", + saving: "Zapisywanie...", + saveChanges: "Zapisz zmiany", + deleteCollectionTitle: "Usunąć kolekcję?", + deleteCollectionDesc: "Spowoduje to trwałe usunięcie „{{title}}”. Same Spoty nie zostaną naruszone.", + deleting: "Usuwanie...", + collectionCreated: "Kolekcja utworzona!", + collectionCreatedDesc: "„{{title}}” jest gotowa na Spoty", + collectionCreateFailed: "Nie udało się utworzyć kolekcji", + collectionUpdated: "Kolekcja zaktualizowana!", + changesSaved: "Zmiany zostały zapisane", + collectionUpdateFailed: "Nie udało się zaktualizować kolekcji", + collectionDeleted: "Kolekcja usunięta", + collectionDeletedDesc: "„{{title}}” została usunięta", + collectionDeleteFailed: "Nie udało się usunąć kolekcji", + somethingWentWrong: "Coś poszło nie tak", + }, + mapPage: { + title: "Sklepy i Spoty", + spots: "Spoty", + shops: "Sklepy", + filters: "Filtry", + listView: "Lista", + mapView: "Mapa", + nearMe: "Blisko mnie", + searchPlaceholder: "Szukaj Spotów...", + noSpotsInArea: "Brak Spotów w tym obszarze", + zoomIn: "Przybliż", + zoomOut: "Oddal", + myLocation: "Moja lokalizacja", + locationsFound: "Znaleziono {{count}} lokalizacji", + spotsOnly: "Tylko Spoty", + shopsOnly: "Tylko sklepy", + spotsAndShops: "Spoty i sklepy", + noSpotsMatch: "Żaden Spot nie pasuje do filtrów.", + noSpotsYet: "Nie dodano jeszcze żadnych Spotów.", + addFirstSpot: "Dodaj pierwszy Spot", + }, + spotUi: { + claim: { + areYouOwner: "Czy to twój Spot?", + privateDesc: "Ten Spot jest oznaczony jako prywatny. Jeśli jesteś jego właścicielem lub zarządzasz nim, przejmij go — moderator SkateSpots potwierdza własność, a następnie przejmujesz wpis.", + claimSpot: "Przejmij ten Spot", + nip05Required: "Aby przejąć prywatny Spot, potrzebujesz zweryfikowanego adresu NIP-05 (dowód kontroli nad tożsamością Nostr). Dodaj go w profilu i wróć.", + addNip05: "Dodaj NIP-05 w Ustawieniach", + pendingTitle: "Przejęcie oczekuje na weryfikację", + pendingDesc: "Twoje przejęcie zostało zgłoszone. Moderator SkateSpots je sprawdzi — po zatwierdzeniu możesz dokończyć przejmowanie Spotu.", + approvedTitle: "Przejęcie zatwierdzone", + approvedDesc: "Moderator zatwierdził twoje przejęcie. Dokończ, aby zostać właścicielem tego Spotu.", + complete: "Dokończ przejmowanie", + submitted: "Przejęcie zgłoszone", + submittedDesc: "Moderator sprawdzi twoje przejęcie. Przejmiesz Spot po zatwierdzeniu.", + submitFailed: "Nie udało się zgłosić przejęcia", + submit: "Zgłoś przejęcie", + submitting: "Zgłaszanie…", + confirmTitle: "Przejąć „{{title}}”?", + confirmIntro: "Prosisz o zostanie właścicielem tego prywatnego Spotu.", + confirmBullet1: "Moderator SkateSpots sprawdza wniosek (nie możemy zweryfikować własności, tylko klucze Nostr)", + confirmBullet2: "Po zatwierdzeniu dokończysz przejęcie, zostaniesz właścicielem i będziesz mógł edytować Spot", + confirmBullet3: "Oryginalny Spot pozostaje na Nostr — sieć jest zdecentralizowana", + adminTitle: "Oczekujące przejęcia własności", + adminApprove: "Zatwierdź", + adminApproved: "Zatwierdzono", + adminApprovedDesc: "Mogą teraz dokończyć przejmowanie Spotu.", + adminApproveFailed: "Nie udało się zatwierdzić przejęcia", + loginRequired: "Zaloguj się, aby przejąć ten prywatny Spot lub poprosić o własność.", + }, + abandonedDesc: "Ostatnia aktualizacja {{time}}. Jeśli pierwotny właściciel jest nieaktywny, możesz przejąć ten Spot, aby go utrzymywać i ulepszać.", + claimedNotice: "Przejęty wpis", + claimedNoticeDesc: "Ten Spot został opublikowany ponownie przez nowego właściciela po przejęciu. Oryginalny wpis może nadal istnieć osobno.", + abandonedLoginDesc: "Ostatnia aktualizacja {{time}}. Zaloguj się, aby przejąć i utrzymywać ten Spot.", + accessDeniedDesc: "Możesz edytować tylko Spoty, które utworzyłeś.", + accessDeniedTitle: "Odmowa dostępu", + addAtLeastOneTag: "Dodaj co najmniej jeden tag.", + additionalDetails: "Dodatkowe szczegóły (opcjonalnie)", + additionalDetailsPlaceholder: "Podaj dodatkowy kontekst, który może pomóc...", + addNewTags: "Dodaj nowe tagi:", + addNip05InSettings: "Dodaj NIP-05 w Ustawieniach", + addPhoto: "Dodaj zdjęcie", + addPhotoDesc: "Dodaj zdjęcie, aby pomóc innym odkryć ten Spot.", + addPhotoOrDescription: "Dodaj zdjęcie lub opis", + addPhotoOrDescriptionDesc: "Daj skaterom coś na start — zdjęcie albo kilka słów o tym miejscu.", + addPhotos: "Dodaj zdjęcia", + addPhotoToSpot: "Dodaj zdjęcie do Spotu", + adminDeleteDialogDesc: "Jako administrator SkateSpots usuwasz „{{title}}”. Zostanie on ukryty w całej aplikacji dla wszystkich, a do Relayów zostanie wysłane żądanie usunięcia.", + adminDeleteReason: "Administrator SkateSpots usunął Spot „{{title}}”", + airQuality: "Jakość powietrza", + altSkateSpot: "Skate Spot: {{title}}", + areYouShopOwner: "Czy jesteś właścicielem sklepu?", + askBeforeSkating: "Zapytaj przed jazdą", + backToSpot: "Powrót do Spotu", + beFirstToListGear: "Bądź pierwszy i wystaw sprzęt na tym Spocie!", + beFirstToSay: "Bądź pierwszy i napisz coś.", + byAuthor: "autor: {{name}}", + captionPlaceholder: "Dodaj podpis (opcjonalnie) — opisz, co jest na zdjęciu, kiedy zostało zrobione itp.", + chatPublicNote: "Każdy może to przeczytać — wiadomości są publiczne i ulotne. Do prywatnych rozmów użyj wiadomości bezpośrednich.", + checkPinBelow: "Sprawdź poniższą pinezkę, zanim dodasz duplikat.", + claimBullet1: "Zostajesz właścicielem i możesz edytować Spot", + claimBullet2: "Oryginalny Spot pozostaje (Nostr jest zdecentralizowany)", + claimBullet3: "Twoja wersja może pojawić się obok oryginału", + claimFailed: "Przejęcie nie powiodło się", + claiming: "Przejmowanie...", + claimIntro: "Zamierzasz przejąć własność tego Spotu. Utworzy to twoją własną wersję Spotu, którą możesz edytować i utrzymywać.", + claimSpot: "Przejmij Spot", + claimThisSpot: "Przejmij ten Spot", + claimTitle: "Przejąć „{{title}}”?", + claimWhatHappens: "Co się dzieje, gdy przejmujesz:", + coachesAndFilmersAvailable: "Trenerzy i filmerzy dostępni na tym Spocie", + coachesCount: "Trenerzy ({{count}})", + coachHere: "Trener tutaj", + community: "Społeczność", + communityVerified: "Zweryfikowane przez społeczność", + communityVerifiedTitle: "Inny skater coś tu wniósł (zdjęcie lub raport o stanie).", + conditions: "Warunki", + contactForPermission: "Kontakt w sprawie pozwolenia", + contactInfo: "Dane kontaktowe", + contributePhoto: "Dodaj zdjęcie", + contributing: "Dodawanie...", + couldNotSendMessage: "Nie udało się wysłać wiadomości.", + couldNotSubmit: "Nie udało się zgłosić", + couldNotUploadPhoto: "Nie udało się wgrać zdjęcia. Możesz dodać je poniżej.", + crewsThatSkateHere: "Crewy, które tu jeżdżą", + current: "Aktualnie:", + currentTags: "Aktualne tagi tego Spotu:", + daysAgo: "{{count}} dzień temu", + daysAgoPlural: "{{count}} dni temu", + deleteDialogDesc: "Spowoduje to trwałe usunięcie „{{title}}” ze wszystkich Relayów. Tej czynności nie można cofnąć.", + deletedSpotReason: "Usunięty Spot", + deleteFailed: "Usuwanie nie powiodło się", + deleteSpot: "Usuń Spot", + deleteSpotTitle: "Usunąć Spot?", + differentSpotPublishAnyway: "To inny Spot — opublikuj mimo to", + dragDropOrClick: "Przeciągnij i upuść lub kliknij", + dropPhotos: "Upuść zdjęcia", + duplicateOne: "W promieniu 60 m od twojej pinezki znajduje się Spot. Jeśli to to samo miejsce, dodaj tam swoje zdjęcie lub raport o stanie zamiast tworzyć duplikat.", + duplicateOther: "W promieniu 60 m od twojej pinezki znajdują się Spoty. Jeśli to to samo miejsce, dodaj tam swoje zdjęcie lub raport o stanie zamiast tworzyć duplikat.", + editSpotSeoDesc: "Edytuj swój skate Spot.", + failedToContribute: "Nie udało się dodać", + failedToPublish: "Nie udało się opublikować", + failedToPublishDesc: "Coś poszło nie tak. Sprawdź konsolę, aby poznać szczegóły.", + failedToSubmitReport: "Nie udało się zgłosić raportu", + failedToSuggestTags: "Nie udało się zaproponować tagów", + failedToUpdate: "Nie udało się zaktualizować", + failedToUploadImage: "Nie udało się wgrać obrazu", + failedToUploadPhoto: "Nie udało się wgrać zdjęcia", + feelsLikeTemp: "Odczuwalna {{temp}}°C", + filmersCount: "Filmerzy ({{count}})", + filmHere: "Filmuj tutaj", + gearSwap: "Wymiana sprzętu", + geolocationNotSupported: "Geolokalizacja nieobsługiwana", + geolocationNotSupportedDesc: "Twoja przeglądarka nie obsługuje geolokalizacji.", + getDirections: "Wyznacz trasę", + hangTight: "Chwilka", + hangTightDesc: "Twoje zdjęcie wciąż się wgrywa. Zostanie dołączone za chwilę.", + helpImproveSpot: "Pomóż ulepszyć ten Spot, dodając zdjęcia lub proponując tagi", + hiddenByModerator: "Ukryte przez moderatora", + hiddenByModeratorDesc: "Ten Spot nie jest pokazywany na mapie ani w wyszukiwaniu. Nadal go widzisz, bo jest twój. Edycja go nie odsłoni — pozostanie ukryty, dopóki moderator nie cofnie decyzji.", + humidity: "Wilgotność", + imageUploaded: "Obraz wgrany", + imageUploadedDesc: "Twój obraz został pomyślnie wgrany.", + imHere: "Jestem tutaj", + invalidCoordinates: "Nieprawidłowe współrzędne", + invalidCoordinatesDesc: "Podaj prawidłową szerokość geograficzną (od -90 do 90) i długość (od -180 do 180).", + invalidNpub: "Nieprawidłowy npub", + invalidNpubDesc: "Podaj prawidłowy adres npub.", + lastReported: "ostatnio {{time}}", + listGear: "Wystaw sprzęt", + listYourGearHere: "Wystaw tu swój sprzęt", + loadingChat: "Wczytywanie czatu…", + locationError: "Błąd lokalizacji", + locationFound: "Znaleziono lokalizację", + locationFoundDesc: "Twoja bieżąca lokalizacja została ustawiona.", + locationRequired: "Wymagana lokalizacja", + locationRequiredDesc: "Podaj współrzędne lub użyj bieżącej lokalizacji.", + loginRequiredTitle: "Wymagane zalogowanie", + logInToChat: "Zaloguj się, aby dołączyć do lokalnego czatu.", + logInToContributePhotos: "Zaloguj się, aby dodawać zdjęcia", + loginToEditSpot: "Musisz się zalogować, aby edytować ten Spot.", + logInToReport: "Musisz być zalogowany, aby zgłaszać treści.", + logInToReportStatus: "Zaloguj się, aby zgłosić stan tego Spotu.", + logInToSuggestTags: "Zaloguj się, aby proponować tagi", + manageNip05ToClaim: "Zarządzaj NIP-05, aby przejąć", + meetAtSpotForPickup: "💡 Spotkaj się na tym Spocie, aby bezpiecznie odebrać", + memberOne: "{{count}} członek", + memberOther: "{{count}} członków", + messageFailed: "Wiadomość nie została wysłana", + messageMapper: "Napisz do twórcy mapy", + messagePlaceholder: "Napisz na tym Spocie… (spróbuj /me lub /who)", + messagesHiddenOne: "{{count}} wiadomość ukryta przez filtr zaufania. Obniż filtr, aby zobaczyć więcej.", + messagesHiddenOther: "{{count}} wiadomości ukrytych przez filtr zaufania. Obniż filtr, aby zobaczyć więcej.", + messagesHiddenShortOne: "{{count}} wiadomość ukryta przez filtr zaufania", + messagesHiddenShortOther: "{{count}} wiadomości ukrytych przez filtr zaufania", + metresAway: "{{distance}} m stąd", + moderatorVouchedDesc: "Moderator sprawdził ten Spot i poręczył za niego. Dobra robota.", + monthsAgo: "{{count}} miesiąc temu", + monthsAgoPlural: "{{count}} miesięcy temu", + newOwnerNpub: "npub nowego właściciela", + newOwnerNpubHint: "Podaj npub użytkownika, któremu chcesz przekazać ten Spot.", + nip05RequiredToClaim: "⚠️ Do przejęcia sklepów wymagana jest weryfikacja NIP-05", + noCommunitySignalTitle: "Brak zdjęcia społeczności lub raportu o stanie — nikt nie potwierdził tego miejsca.", + breakdownPhotos: "{{count}} zdjęć", + breakdownStatus: "{{count}} raportów o stanie", + breakdownComments: "{{count}} komentarzy", + breakdownReactions: "{{count}} reakcji", + breakdownCollections: "{{count}} zapisów", + breakdownZaps: "{{count}} Zapów", + breakdownTags: "{{count}} propozycji tagów", + breakdownCrews: "{{count}} Crewów", + breakdownLab: "{{count}} linków Pro", + verifyNudgeTitle: "Bądź pierwszy i potwierdź ten Spot", + verifyNudgeBody: "Zdjęcie albo „jeździłem tutaj” to sposób na weryfikację Spotu — pomóż następnemu skaterowi.", + verifyNudgeStatus: "Jeździłem tutaj", + communityChip: "Społeczność", + seenChip: "Widziane", + noGearListedYet: "Brak wystawionego sprzętu", + noMessagesYet: "Brak wiadomości na tym lokalnym kanale. Przywitaj się — „ktoś dziś jeździ?”", + noPhoto: "Brak zdjęcia", + noReportsYet: "Brak raportów", + noTags: "Brak tagów", + notASkateSpot: "To nie jest skate Spot", + offerServicesHere: "💡 Zaoferuj swoje usługi na tym Spocie", + photoCaptured: "Zdjęcie zrobione!", + photoCapturedDesc: "Twoje zdjęcie zostało pomyślnie wgrane.", + photoContributed: "Zdjęcie dodane!", + photoContributedDesc: "Twoje zdjęcie zostało dodane do tego Spotu.", + photosAdded: "Twoje zdjęcia zostały dodane.", + photosRecommended: "zdecydowanie zalecane — Spoty bez zdjęcia pozostają oznaczone jako niezweryfikowane", + photosUploaded: "Wgrano {{count}} zdjęć", + photoUploaded: "Zdjęcie wgrane", + photoUploadedDesc: "Dodaj podpis i zatwierdź, aby dodać zdjęcie!", + photoUploadFailed: "Wgrywanie zdjęcia nie powiodło się", + pleaseTryAgain: "Spróbuj ponownie", + public: "Publiczne", + publicChatTitle: "Każdy może czytać wiadomości na tym kanale — jest publiczny i nieszyfrowany.", + recentReports: "Ostatnie raporty", + recipientRequired: "Wymagany odbiorca", + recipientRequiredDesc: "Podaj npub nowego właściciela.", + removeAdmin: "Usuń (administrator)", + removeSpot: "Usuń Spot", + removeSpotAdminTitle: "Usunąć ten Spot? (administrator)", + reportOne: "zgłoszenie", + reportContent: "Zgłoś treść", + reportContentDesc: "Pomóż zadbać o bezpieczeństwo społeczności, zgłaszając nieodpowiednie treści.", + reportedBySkaters: " — zgłoszone przez {{count}} skaterów, w trakcie weryfikacji. Jeśli to prawdziwy Spot, dodaj zdjęcie lub raport o stanie, aby go potwierdzić.", + reportedNotASpot: "Zgłoszone jako nie-skate Spot", + reportingType: "Zgłaszanie: {{type}}", + reports: "zgłoszenia", + reportShop: "Zgłoś sklep", + reportSpot: "Zgłoś Spot", + reportStatus: "Zgłoś stan", + reportSubmitted: "Raport zgłoszony", + reportSubmittedDesc: "Dziękujemy za pomoc w utrzymaniu bezpieczeństwa SkateSpots.", + reportSubmittedLong: "Dziękujemy za pomoc w utrzymaniu SkateSpots jako bezpiecznego i rzetelnego. Twoje zgłoszenie sprawdzą zaufani członkowie społeczności.", + reportSubmittedTitle: "Zgłoszenie wysłane", + report: { + notASkateSpot: { + label: "To nie jest skate Spot", + description: "Wpis testowy lub miejsce zupełnie nieprzeznaczone do jazdy", + }, + fakeSpot: { + label: "Fałszywy/nieistniejący Spot", + description: "Ten Spot nie istnieje lub lokalizacja jest błędna", + }, + stolenPhotos: { + label: "Ukradzione/fałszywe zdjęcia", + description: "Zdjęcia to obrazy stockowe lub ukradzione z innego miejsca", + }, + spamAd: { + label: "Spam lub reklama", + description: "Treści promocyjne lub zduplikowane wpisy", + }, + dangerousLocation: { + label: "Niebezpieczna lokalizacja", + description: "Prywatna własność, niebezpieczne lub nielegalne wejście", + }, + inappropriateContent: { + label: "Nieodpowiednie treści", + description: "Zawiera obraźliwe lub dla dorosłych treści", + }, + impersonation: { + label: "Podszywanie się", + description: "Ktoś podaje się za kogoś innego", + }, + other: { + label: "Inne", + description: "Coś jeszcze, co nie zostało wymienione powyżej", + }, + }, + targetType: { + spot: "Spot", + event: "Wydarzenie", + tour: "Tour", + shop: "Sklep", + user: "Użytkownik", + listing: "Ogłoszenie", + coach: "Trener", + filmer: "Filmer", + }, + sameOwner: "Ten sam właściciel", + sameOwnerDesc: "Nie można przekazać obecnemu właścicielowi.", + saveChanges: "Zapisz zmiany", + saving: "Zapisywanie...", + services: "Usługi", + shareSpotText: "Zobacz ten skate Spot: {{title}}", + shelter: "Zadaszenie", + shelterHint: "Czy ten Spot jest narażony na warunki atmosferyczne? Pomaga skaterom znaleźć suche miejsca, gdy pada.", + shopClaimDesc: "Jeśli jesteś właścicielem lub zarządzasz tym sklepem, możesz go przejąć, aby zweryfikować własność i zarządzać wpisem.", + shopClaimNip05Hint: "Aby przejąć ten sklep, dodaj identyfikator NIP-05 zgodny z domeną strony sklepu.", + skatersActiveDesc: "Osoby, które pisały na tym kanale w ciągu ostatnich 24 godzin.", + skatersActiveOne: "{{count}} aktywny skater", + skatersActiveOther: "{{count}} aktywnych skaterów", + skatersSellingGear: "Skaterzy na tym Spocie sprzedają sprzęt", + skateSpot: "Skate Spot", + somethingWentWrong: "Coś poszło nie tak", + spot: "Spot", + spotAdded: "Spot dodany!", + spotAddedDesc: "Twój skate Spot został opublikowany w sieci.", + spotAddedNoPhoto: "Opublikowano — oznaczono jako niezweryfikowane, dopóki ktoś nie doda zdjęcia. Zdjęcie Spotu znaczy wiele.", + spotChat: "Czat Spotu", + spotClaimed: "Spot przejęty!", + spotClaimedDesc: "Jesteś teraz właścicielem tego Spotu. Możesz go edytować ze swojego profilu.", + spotDeleted: "Spot usunięty", + spotDeletedDesc: "Żądanie usunięcia wysłane do Relayów. Większość Relayów usunie tę treść.", + spotMayAlreadyBeOnMap: "Ten Spot może już być na mapie", + spotMayAlreadyExist: "Ten Spot może już istnieć", + spotMayBeAbandoned: "Spot może być porzucony", + spotPhotoAlt: "Spot", + spotRemoved: "Spot usunięty", + spotRemovedDesc: "Ten Spot został usunięty i będzie ukryty w całym SkateSpots.", + spotSeoDesc: "Zobacz ten skate Spot w SkateSpots.", + spotStatus: "Stan Spotu", + spotStatusDesc: "Czy „{{title}}” nadal nadaje się do jazdy? Poinformuj społeczność o jego aktualnym stanie.", + spotTypeRequired: "Wymagany typ Spotu", + spotTypeRequiredDesc: "Wybierz typ Spotu, aby skaterzy wiedzieli, na co się piszą.", + spotUpdated: "Spot zaktualizowany!", + spotUpdatedDesc: "Twoje zmiany zostały opublikowane w sieci.", + staffVerifiedTitle: "Administrator SkateSpots sprawdził ten Spot i poręczył za niego.", + statusNotePlaceholder: "Opcjonalnie: dodaj szczegóły (np. „nowe knoby na Ledge”, „ochrona wygania po 18:00”)", + statusReported: "Stan zgłoszony", + statusReportedDesc: "Dziękujemy za utrzymanie mapy w świeżości. Twój raport jest już widoczny.", + submitReport: "Zgłoś raport", + submitting: "Zgłaszanie...", + suggestedByUser: "Zaproponowane przez {{count}} użytkownika", + suggestedByUsers: "Zaproponowane przez {{count}} użytkowników", + suggestedTagsContent: "Zaproponowane tagi dla {{title}}: {{tags}}", + suggestNTags: "Zaproponuj {{count}} tagów", + suggestOneTag: "Zaproponuj 1 tag", + suggestTags: "Zaproponuj tagi", + suggestTagsDesc: "Pomóż skategoryzować ten Spot, proponując odpowiednie tagi.", + tags: "Tagi", + tagsHint: "Dodaj tagi dla cech, nawierzchni, klimatu (maks. {{max}})", + tagsSuggested: "Tagi zaproponowane!", + tagsSuggestedDesc: "Twoje propozycje tagów zostały zgłoszone.", + takePhoto: "Zrób zdjęcie", + threeDayForecast: "Prognoza na 3 dni", + tipTheMapper: "Daj napiwek autorowi mapy", + tipTheMapperDesc: "Uznajesz ten Spot za przydatny? Wyślij Zap, aby podziękować autorowi mapy!", + titleRequired: "Wymagany tytuł", + titleRequiredDesc: "Podaj nazwę tego Spotu.", + today: "Dzisiaj", + tomorrow: "Jutro", + transferDesc: "Przekaż „{{title}}” innemu użytkownikowi. Tej czynności nie można cofnąć.", + transferFailed: "Przekazanie nie powiodło się", + transferOwnership: "Przekaż własność", + transferRequestContent: "Prośba o przekazanie własności Spotu „{{title}}”", + transferRequested: "Poproszono o przekazanie", + transferRequestedDesc: "Nowy właściciel będzie musiał przejąć Spot, aby dokończyć przekazanie.", + transferring: "Przekazywanie...", + transferSpotOwnership: "Przekaż własność Spotu", + transferWarningDesc: "Po przekazaniu nie będziesz już mógł edytować ani usuwać tego Spotu.", + typeToSearchTags: "Wpisz, aby wyszukać lub dodać tagi...", + underReview: " — w trakcie weryfikacji. Jeśli to prawdziwy Spot, dodaj zdjęcie lub raport o stanie, aby go potwierdzić.", + untitledSpot: "Spot bez nazwy", + unverified: "Niezweryfikowane", + updateDetailsFor: "Zaktualizuj szczegóły dla {{title}}", + updateSpotDesc: "Zaktualizuj informacje o tym Spocie. Wszystkie pola oznaczone * są wymagane.", + uploadAPhoto: "Wgraj zdjęcie", + uploadAPhotoHint: "Przeciągnij i upuść lub kliknij · JPG, PNG, WebP", + uploadedAlt: "Wgrano", + uploadFailed: "Wgrywanie nie powiodło się", + uploadingPhoto: "Wgrywanie zdjęcia…", + uploadPhotoFirst: "Najpierw wgraj zdjęcie.", + uvIndex: "Indeks UV", + verifiedBySkateSpots: "Zweryfikowane przez SkateSpots", + viewPhotoFullScreen: "Zobacz zdjęcie na pełnym ekranie", + viewPhotoOf: "Zobacz zdjęcie {{n}} z {{total}}", + warning: "Ostrzeżenie", + weatherConditions: "Warunki pogodowe", + weatherOnly: "tylko pogoda", + weatherOnlyUnconfirmed: "Tylko pogoda. Nikt jeszcze nie potwierdził, że to skate Spot, więc nie ma oceny warunków — dodaj zdjęcie lub raport o stanie, aby go potwierdzić.", + whyReporting: "Dlaczego to zgłaszasz?", + wind: "Wiatr", + yearsAgo: "{{count}} rok temu", + yearsAgoPlural: "{{count}} lat temu", + }, + diyUi: { + title: "DIY — Zrób to sam", + tagline: "Poradniki, otwarte narzędzia i plany, jak zbudować własne Decki, rampy i betonowe Spoty — a potem znajdź do tego ludzi, miejsca i rynek.", + doItWithPeople: "Zrób to z ludźmi", + backToDiy: "Powrót do DIY", + calc: { + title: "Kalkulator kosztów Decku", + intro: "Ile kosztuje wykonanie Decku — robocizna, sprzęt, materiały, czas procesu, opakowanie i marża — oraz uczciwa cena sprzedaży. Zapisane na tym urządzeniu.", + }, + designer: { + title: "Projektant Decku", + intro: "Ukształtuj obrys deskorolki lub longboardu, a następnie wyeksportuj szablon 1:1 do druku, SVG lub DXF dla CNC. Zapisane na tym urządzeniu.", + presets: "Ustawienia wstępne", + dimensions: "Wymiary", + shape: "Kształt", + kicks: "Kicki", + hardware: "Otwory na Trucks", + width: "Maks. szerokość", + wheelbase: "Rozstaw osi", + nose: "Długość nose", + tail: "Długość taila", + length: "Długość całkowita", + waist: "Talia", + endRound: "Zaokrąglenie końców", + concave: "Concave", + thickness: "Grubość", + tailKick: "Kick taila", + noseKick: "Kick nose", + holeNew: "New school (2.125″)", + holeOld: "Old school (2.5″)", + holeSpacing: "New school to 2.125″ × 1.625″ (54 × 41 mm); old school to 2.5″ × 1.625″. Otwory montażowe 3/16″.", + topView: "Widok z góry", + sideView: "Profil z boku", + concaveSection: "Przekrój Concave", + export: "Eksportuj", + pdfA4: "1:1 PDF · A4", + pdfLetter: "1:1 PDF · Letter", + printNote: "Wydrukuj PDF w 100% (bez „dopasuj do strony”), a następnie sklej arkusze, używając krzyżyków w narożnikach. SVG również ma rzeczywisty rozmiar.", + note: "To dwuwymiarowy obrys, który odrysowujesz i wycinasz. Do pełnych kształtów 3D i projektowania form nadal najlepszym wyborem jest prawdziwe narzędzie CAD.", + }, + source: "Źródło", + comingSoon: "Wkrótce", + footer: "Poradniki krok po kroku są w drodze. Na razie: znajdź ludzi, którzy budują w The Lab, dodaj swój Spot do mapy i kupuj lub sprzedawaj w Marketplace. Pracuj bezpiecznie — ochraniacze, rękawice i okulary ochronne.", + categories: { + boards: "Deski", + ramps: "Rampy i drewniane przeszkody", + concrete: "Beton i Spoty DIY", + repairs: "Naprawy i tuning", + tools: "Narzędzia i plany", + }, + cards: { + ossBuild: { + title: "Zbuduj deskorolkę", + blurb: "Tworzenie Decku krok po kroku — fornir, formy, prasy i wykończenie.", + }, + sk8cad: { + title: "SK8CAD", + blurb: "Otwartoźródłowy CAD do kształtów Decków, Concave i projektowania form.", + }, + deckCost: { + title: "Koszt i cena Decku", + blurb: "Oblicz materiały, robociznę i uczciwą cenę sprzedaży, zanim zaczniesz budować.", + }, + deckDesigner: { + title: "Projektant Decku", + blurb: "Ukształtuj obrys i wydrukuj szablon 1:1 — lub wyeksportuj SVG/DXF dla CNC.", + }, + ledgeBox: { + title: "Zbuduj Ledge lub box", + blurb: "Przyjazna dla początkujących drewniana przeszkoda do zbudowania w weekend.", + }, + quarterpipe: { + title: "Zbuduj quarterpipe", + blurb: "Plany rampy, transition i coping dla przydomowego miniparku.", + }, + flatbar: { + title: "Zbuduj flatbar", + blurb: "Tani, przenośny i najlepszy sposób na naukę Raili.", + }, + concreteBasics: { + title: "Podstawy betonu", + blurb: "Mieszanie, formowanie i wykańczanie trwałego Ledge'a lub banku.", + }, + coping: { + title: "Coping i krawędzie", + blurb: "Jak osadzić coping i wykończyć transition, aby grind był gładki.", + }, + buyParts: { + title: "Kup części i sprzęt", + blurb: "Zdobądź Decki, osprzęt i narzędzia od sprzedawców w Marketplace.", + }, + mapSpot: { + title: "Dodaj swój Spot DIY do mapy", + blurb: "Coś zbudowałeś? Dodaj to do mapy, aby inni mogli to znaleźć i pojeździć.", + }, + regrip: { + title: "Zmiana Griptape'u", + blurb: "Zdejmij stary Griptape i nałóż nowy równo.", + }, + tune: { + title: "Serwis Bearings i Trucks", + blurb: "Wyczyść Bearings, wymień bushings i ustaw geometrię Trucks.", + }, + printMolds: { + title: "Formy drukowane w 3D", + blurb: "Pliki form i podstaw wyrównujących do druku od społeczności.", + }, + sk8cadTools: { + title: "Narzędzia do form i wyrównywania", + blurb: "Projektuj formy z wbudowanymi podstawami wyrównującymi.", + }, + }, + actions: { + findBuilder: { + title: "Znajdź budowniczego", + blurb: "Budowniczowie ramp i DIY w The Lab, którzy zaprojektują lub wyleją to dla ciebie.", + }, + findCrew: { + title: "Znajdź Crew DIY", + blurb: "Crewy skupione na budowaniu — dołącz do tych, które zamieniają Spoty w rzeczywistość.", + }, + mapSpot: { + title: "Dodaj Spot DIY do mapy", + blurb: "Dodaj Spot, który zbudowałeś, aby żył na mapie.", + }, + sellBuilds: { + title: "Sprzedaj swoje konstrukcje", + blurb: "Wystaw w Marketplace robione przez siebie Decki, rampy lub części.", + }, + findCoach: { + title: "Znajdź trenera", + blurb: "Trenerzy uczący skate modułów DIY i budowania Spotów.", + }, + }, + }, + labelsUi: { + spotCategory: { + street: { + label: "Street", + description: "Znalezione przypadkowe Spoty, miejski teren", + }, + transition: { + label: "Transition", + description: "Zakrzywione lub nachylone powierzchnie", + }, + park: { + label: "Park", + description: "Zbudowane skateparki", + }, + plaza: { + label: "Plaza", + description: "Miejskie place (jak MACBA, Love Park)", + }, + }, + spotFeature: { + wallrides: "Wallrides", + stairs: "Schody i poręcze", + rails: "Raile", + ledges: "Ledge'y i krawężniki", + gaps: "Gapy", + flatground: "Flatground", + "manual-pads": "Manual Pads", + "half-pipes": "Half-pipe'y", + "quarter-pipes": "Quarter-pipe'y", + "mini-ramps": "Minirampy", + bowls: "Bowle", + vert: "Rampy Vert", + "mega-ramps": "Megarampy", + hubbas: "Hubby", + "euro-gaps": "Euro Gaps", + banks: "Banki", + "spine-ramps": "Spine rampy", + "roll-ins": "Roll-iny", + hips: "Hipsy", + volcano: "Volcano", + pyramids: "Piramidy / Funboxy", + "snake-runs": "Snake Runs", + "pump-track": "Rollery Pump Track", + "flat-bars": "Flat Bary", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + wallrides: "Wallrides", + stairs: "Schody i poręcze", + rails: "Raile", + ledges: "Ledge'y i krawężniki", + gaps: "Gapy", + flatground: "Flatground", + "manual-pads": "Manual Pads", + "half-pipes": "Half-pipe'y", + "quarter-pipes": "Quarter-pipe'y", + "mini-ramps": "Minirampy", + bowls: "Bowle", + vert: "Rampy Vert", + "mega-ramps": "Megarampy", + hubbas: "Hubby", + "euro-gaps": "Euro Gaps", + banks: "Banki", + "spine-ramps": "Spine rampy", + "roll-ins": "Roll-iny", + hips: "Hipsy", + volcano: "Volcano", + pyramids: "Piramidy / Funboxy", + "snake-runs": "Snake Runs", + "pump-track": "Rollery Pump Track", + "flat-bars": "Flat Bary", + diy: "DIY", + rail: "Rail", + ledge: "Ledge", + gap: "Gap", + bowl: "Bowl", + stall: "Stall", + slappy: "Slappy", + }, + access: { + public: { + label: "Publiczne — otwarte dla wszystkich", + }, + private: { + label: "Prywatna własność — wymagane pozwolenie", + }, + locals: { + label: "Najpierw spytaj lokalnych", + }, + }, + shelter: { + outdoor: { + label: "Na zewnątrz", + short: "Na zewnątrz", + description: "Całkowicie odsłonięte — deszcz przerywa jazdę", + }, + partial: { + label: "Częściowo zadaszone", + short: "Częściowo zadaszone", + description: "Niektóre przeszkody pozostają suche", + }, + covered: { + label: "Zadaszone", + short: "Zadaszone", + description: "Na zewnątrz, ale pod dachem", + }, + indoor: { + label: "W pomieszczeniu", + short: "W pomieszczeniu", + description: "Całkowicie zamknięte — jeździj bez względu na pogodę", + }, + }, + eventType: { + contest: "Zawody", + demo: "Demo", + session: "Sesja", + workshop: "Warsztaty", + premiere: "Premiera", + tradeshow: "Targi", + gameskate: "Game of Skate", + concert: "🎸 Koncert", + jam: "🎵 Jam", + festival: "🎪 Festiwal", + popup: "🎯 Pop-up", + }, + gearCategory: { + deck: "Deck", + trucks: "Trucks", + wheels: "Wheels", + bearings: "Bearings", + shoes: "Buty do jazdy", + clothing: "Odzież", + protective: "Sprzęt ochronny", + stickers: "Naklejki", + wax: "Wosk", + tools: "Narzędzia", + griptape: "Griptape", + rubbrick: "Rub Brick", + }, + gearCondition: { + new: { + label: "Nowe", + description: "Nigdy nieużywane, nadal w opakowaniu", + }, + like_new: { + label: "Jak nowe", + description: "Ledwo używane, doskonały stan", + }, + good: { + label: "Dobry", + description: "Normalne zużycie, działa idealnie", + }, + well_used: { + label: "Mocno używane", + description: "Widać zużycie, ale nadal działa", + }, + }, + priceType: { + fixed: { + label: "Cena stała", + description: "Ustalona cena w USD lub sats", + }, + free: { + label: "Za darmo", + description: "Oddaję za darmo", + }, + trade: { + label: "Wymiana", + description: "Chęć zamiany", + }, + offer: { + label: "Złóż ofertę", + description: "Cena do negocjacji", + }, + }, + listingType: { + selling: { + label: "Sprzedam", + description: "Wystawianie sprzętu na sprzedaż", + }, + wtb: { + label: "Kupię", + description: "Szukam konkretnego sprzętu", + }, + }, + tour: { + spotType: { + street: "Street", + park: "Park", + diy: "DIY", + transition: "Transition", + hidden: "Ukryte perełki", + }, + category: { + local: { + label: "Lokalny Tour", + description: "Pokaż ukryte Spoty w swoim mieście", + }, + national: { + label: "Krajowy Tour", + description: "Podróże po wielu miastach w całym kraju", + }, + international: { + label: "Międzynarodowy Tour", + description: "Przygody przez granice w kilku krajach", + }, + destruction: { + label: "World Destruction", + description: "Globalne zawody drużynowe w stylu KOTR", + }, + }, + }, + crew: { + vibe: { + street: "Street", + transition: "Transition / Vert", + park: "Park", + diy: "DIY", + cruising: "Cruising / Filmowanie", + oldschool: "Old School", + allterrain: "All Terrain", + girls: "Dziewczyny / Kobiety", + youth: "Młodzież / Gromy", + adaptive: "Adaptacyjne", + punk: "Punk", + hiphop: "Rap / Hip-Hop", + }, + focus: { + mixed: "Mieszany / Ogólny", + builder: "DIY i budowniczowie", + photo: "Foto i film", + coaching: "Coaching", + art: "Sztuka i design", + music: "Zespół i muzyka", + wellness: "Trening i fizjoterapia", + }, + focusDescription: { + mixed: "Zwykły skate Crew — widoczny tylko na stronie Crewów.", + builder: "Crew DIY / budujący parki — widoczny także w The Lab w sekcji Budowniczowie.", + photo: "Crew filmowy, fotograficzny lub montażowy — widoczny także w The Lab w sekcji Foto i film.", + coaching: "Crew trenerski / prowadzący lekcje — widoczny także w The Lab w sekcji Coaching.", + art: "Kolektyw artystyczny, projektowy, graffiti lub tatuażu — widoczny także w The Lab w sekcji Sztuka i design.", + music: "Zespół lub kolektyw muzyczny — widoczny także w The Lab w sekcji Muzyka.", + wellness: "Crew treningowy, fitness lub fizjoterapeutyczny — widoczny także w The Lab w sekcji Trening.", + }, + lookingFor: { + filmer: "Filmer", + photographer: "Fotograf", + editor: "Montażysta wideo", + coach: "Trener", + builder: "Budowniczy ramp", + artist: "Artysta / projektant", + musician: "Muzyk / zespół", + members: "Nowi członkowie", + }, + role: { + filmer: "Filmer", + photographer: "Fotograf", + editor: "Montażysta", + coach: "Trener", + builder: "Budowniczy", + artist: "Artysta", + graffiti: "Graffiti", + tattoo: "Tatuaż", + trainer: "Trener", + musician: "Muzyk", + judge: "Sędzia", + manager: "Menedżer zespołu", + og: "OG", + }, + }, + memberVisibility: { + public: { + label: "Publiczna", + description: "Każdy może cię zobaczyć w tym Crew — na publicznej stronie Crewu i w wyszukiwaniu członków.", + }, + crew: { + label: "Tylko Crew", + description: "Widzą cię tu tylko potwierdzeni członkowie Crewu i założyciel. Dla wszystkich innych jesteś anonimowym „ukrytym członkiem”. Uwaga: to prywatność na poziomie aplikacji — twój tag członkostwa nadal publicznie istnieje na Relayach, po prostu nigdy nie jest pokazywany osobom z zewnątrz.", + }, + }, + tagCategory: { + features: { + name: "Cechy", + description: "Przeszkody i teren", + }, + surfaces: { + name: "Nawierzchnie", + description: "Materiały i faktury", + }, + sizes: { + name: "Rozmiary", + description: "Wymiary i skala", + }, + stairs: { + name: "Liczba schodów", + description: "Liczba schodów", + }, + vibes: { + name: "Klimat", + description: "Atmosfera i stan", + }, + location: { + name: "Lokalizacja", + description: "Kontekst lokalizacji", + }, + tricks: { + name: "Tricki", + description: "Dobre do konkretnych tricków", + }, + }, + spotTagCategory: { + street: { + label: "Street", + description: "Spoty uliczne — schody, Raile, Ledge'y", + }, + park: { + label: "Park", + description: "Skateparki — publiczne lub prywatne", + }, + diy: { + label: "DIY", + description: "Spoty DIY/domowej roboty", + }, + plaza: { + label: "Plaza", + description: "Publiczne place z architekturą przyjazną deskorolkarzom", + }, + }, + status: { + active: { + label: "Aktywne", + description: "Wszystko gra — jedź.", + }, + bust: { + label: "Wpadka", + description: "Wysokie ryzyko wyproszenia — ochrona lub policja.", + }, + skate_stopped: { + label: "Zablokowane dla deskorolek", + description: "Z knoby lub nakładkami, ale częściowo przejezdne.", + }, + closed: { + label: "Zamknięte", + description: "Tymczasowo zamknięte — budowa lub wydarzenie.", + }, + gone: { + label: "Zniknęło", + description: "Zburzone, zabrukowane lub trwale odgrodzone.", + }, + }, + price: { + free: "ZA DARMO", + trade: "Wymiana", + makeOffer: "Złóż ofertę", + offer: "Oferta", + }, + }, + feesUi: { + feeFeaturedEventLabel: "Wyróżnione wydarzenie", + feeFeaturedEventDesc: "Wyróżnij swoje wydarzenie w SkateSpots", + feeFeaturedEventBenefit: "Twoje wydarzenie pojawi się na górze strony wydarzeń", + feeLabProfileLabel: "Profil Lab Pro", + feeLabProfileDesc: "Wyróżnij swoje usługi w The Lab", + feeLabProfileBenefit: "Odznaka Pro + wyróżnione miejsce, gdy skaterzy przeglądają The Lab", + feeFeaturedShopLabel: "Wyróżniony sklep", + feeFeaturedShopDesc: "Wyróżnij swój skate shop na mapie i w katalogu", + feeFeaturedShopBenefit: "Odznaka weryfikacji + wyróżniona pinezka na mapie", + feeFeaturedTourLabel: "Wyróżniony Tour", + feeFeaturedTourDesc: "Wyróżnij swój Tour w SkateSpots", + feeFeaturedTourBenefit: "Odznaka Pro + najwyższe miejsce, gdy skaterzy przeglądają Toury", + duration7d: "7 dni", + duration30d: "1 miesiąc", + duration90d: "3 miesiące", + duration365d: "12 miesięcy", + metaActive: "{{label}} — aktywne", + daysRemainingOne: "pozostał {{count}} dzień", + daysRemainingMany: "pozostało {{count}} dni", + zapRequestContent: "SkateSpots {{label}} ({{tier}})", + errGenerate: "Nie udało się wygenerować faktury", + paymentReceived: "⚡ Otrzymano płatność!", + paymentReceivedDesc: "{{amount}} sats — {{label}} jest teraz aktywne.", + autoPayFailed: "Automatyczna płatność nie powiodła się", + autoPayFailedDesc: "Zapłać ręcznie, używając poniższego kodu QR lub faktury.", + payStatusUnknown: "Status płatności nieznany — płatność mogła zostać zrealizowana. Sprawdź portfel przed ponowną zapłatą.", + invoiceCopied: "Faktura skopiowana!", + activeBang: "{{label}} aktywne!", + chooseDuration: "Wybierz czas trwania", + bestValue: "Najlepsza wartość", + perDay: "{{price}}/dzień", + validFor: "Ważne przez", + amountLine: "~${{usd}} USD · dla {{name}} · {{tier}}", + payToContinue: "Zapłać {{amount}} sats, aby kontynuować", + generating: "Generowanie faktury…", + processing: "Przetwarzanie płatności…", + invoiceQrAlt: "Kod QR faktury Lightning", + copyInvoice: "Skopiuj fakturę", + openWallet: "Otwórz portfel", + payConnected: "Zapłać połączonym portfelem", + scanAny: "Zeskanuj w dowolnym portfelu Lightning", + tryAgain: "Spróbuj ponownie", + proReceiptTitle: "🦧⚡ Sasquatch Pro — jesteś w środku!", + proReceiptPass: "Przepustka: {{pass}} ({{sats}} sats)", + proReceiptActiveUntil: "Aktywne do: {{until}}", + proReceiptUnlocked: "Co odblokowałeś:", + proReceiptBullet1: "• Osobisty asystent — czytam twój Stash, Crewy, Spoty i ogłoszenia", + proReceiptBullet2: "• Projekty akcji — wystaw sprzęt, opublikuj stan Spotu, zaplanuj wycieczki (ty potwierdzasz)", + proReceiptBullet3: "• Odpowiedzi korzystające z twojego osobistego kontekstu, nie tylko danych publicznych", + proReceiptBullet4: "• ⚡ Bezpośrednio wspierasz SkateSpots i utrzymujesz go darmowym i bez reklam", + proReceiptThanks: "Dzięki za utrzymanie SkateSpots darmowym i bez reklam. A teraz idź jeździć. 🛹", + proReceiptSubject: "Potwierdzenie Sasquatch Pro", + receiptContent: "Sasquatch Pro — przepustka wspierającego {{tier}} 🦧⚡", + receiptAlt: "Przepustka wspierającego Sasquatch Pro ({{tier}}), ważna do {{until}}", + purchaseComment: "Sasquatch Pro — {{tier}} 🦧", + errLogin: "Zaloguj się, aby uaktualnić do Pro.", + errStart: "Nie udało się rozpocząć zakupu.", + errRecord: "Nie udało się zapisać twojej przepustki.", + }, + cardUi: { + save: "Zapisz kartę do Nostr", + saved: "Karta zapisana", + savedDesc: "Twoja karta jest teraz podpisana i weryfikowalna.", + saveFailed: "Nie udało się zapisać karty", + notPublished: "Nieopublikowana", + titleNeon: "Rider", + titleRest: "Karta", + saveFrontPng: "Zapisz przód (PNG)", + expired: "WYGASŁA", + logoUploaded: "Logo wgrane", + logoUploadFailed: "Nie udało się wgrać logo", + venue: "Powiązane miejsce (opcjonalnie)", + venueNone: "Brak miejsca", + venueHint: "Wybierz jeden ze swoich Spotów, aby powiązać tę przepustkę z miejscem. Weryfikujący potwierdzi, że jesteś jego właścicielem.", + venuePick: "Wybierz swoje miejsce", + parkNoVenue: "Przepustkę Park może wystawić tylko właściciel miejsca — najpierw dodaj do mapy Spot, którego jesteś właścicielem.", + parkAddVenue: "Dodaj Spot", + parkNeedsVenue: "Wybierz miejsce, którego jesteś właścicielem", + parkIssued: "Wystawione przepustki", + parkRevoke: "Unieważnij", + parkRevoked: "Unieważniono", + parkRevokeFailed: "Nie udało się unieważnić", + v: { + valid: "Ważna", + validDesc: "Podpis ważny i wystawiony przez miejsce.", + expired: "Wygasła", + expiredDesc: "Minęła data ważności.", + revoked: "Unieważniona", + revokedDesc: "Wystawca anulował tę przepustkę — nie przyjmuj jej.", + invalid: "Nieprawidłowa", + invalidDesc: "Podpis się nie weryfikuje. Nie ufaj jej.", + notFound: "Nie znaleziono", + notFoundDesc: "Brak pasującego rekordu na Relayach.", + unverifiedIssuer: "Niezweryfikowany wystawca", + unverifiedIssuerDesc: "Ta przepustka wskazuje miejsce, którego nie posiada klucz wystawcy.", + notBound: "Niepowiązana", + notBoundDesc: "Niepowiązana z miejscem — nic nie dowodzi w kwestii dostępu.", + noRsvp: "Brak RSVP", + noRsvpDesc: "Posiadacz nie ma zapisanego RSVP na to wydarzenie.", + admitted: "Wpuszczony", + admittedDesc: "Wydarzenie organizatora + posiadacz potwierdził RSVP.", + noHolder: "Brak posiadacza w linku", + noHolderDesc: "Ten kod QR nie ma posiadacza biletu (`?h=`), więc nie można sprawdzić posiadacza.", + }, + passes: { + tab: "Moje przepustki", + pass: "Przepustka dostępu", + none: "Brak przepustek. Gdy miejsce lub organizator ci ją wystawi, pojawi się tutaj.", + }, + facets: { + title: "Pokaż elementy tożsamości", + crews: "Crewy", + local: "Lokalny", + roles: "Role w The Lab", + }, + roles: { + coach: "Trener", + filmer: "Filmer", + editor: "Montażysta", + photographer: "Fotograf", + builder: "Budowniczy", + artist: "Artysta", + graffiti: "Graffiti", + tattoo: "Tatuaż", + trainer: "Trener", + musician: "Muzyk", + judge: "Sędzia", + organizer: "Organizator", + barber: "Barber", + }, + crew: { + crewCard: "KARTA CREW", + crewSub: "Twój Crew na karcie", + pick: "Wybierz Crew", + none: "Nie należysz jeszcze do żadnego Crewu — najpierw dołącz lub załóż jeden.", + hint: "Karta jest tworzona na podstawie własnych podpisanych danych Crewu. Aby ją zmienić, edytuj Crew na jego stronie.", + members: "CZŁONKOWIE", + spots: "SPOTY", + est: "Od {{year}}", + openCall: "Otwarty nabór", + verifiedCrew: "Zweryfikowany Crew", + viewCrew: "Zobacz Crew", + }, + event: { + pass: "PRZEPUSTKA NA WYDARZENIE", + passSub: "Przepustka na wydarzenie, na które się wybierasz", + pick: "Wybierz wydarzenie", + none: "Brak wydarzeń — najpierw utwórz jedno lub potwierdź RSVP.", + hint: "Przepustka jest tworzona na podstawie własnych podpisanych danych wydarzenia. Tylko organizator może ją zmienić.", + admits: "WSTĘP DLA", + going: "{{count}} obecnych", + verifiedEvent: "Zweryfikowane wydarzenie", + viewEvent: "Zobacz wydarzenie", + issuePass: "Wystaw przepustkę meldunkową", + issuePassBtn: "Wystaw przepustkę", + issuePassHint: "Podpisana przepustka dla konkretnego uczestnika — pokazuje ją przy wejściu.", + notOrganiser: "Tylko organizator może wystawiać przepustki", + passIssued: "Przepustka wystawiona", + issueFailed: "Nie udało się wystawić przepustki", + issuedPasses: "Wystawione przepustki meldunkowe", + }, + studio: { + unsaved: "Niezapisane zmiany", + saved: "Zapisano", + saveChanges: "Zapisz zmiany", + allSaved: "Zapisano — aktualne", + showOnCard: "Pokaż na karcie", + derived: "Z twojego profilu skatera", + noSkaterProfile: "Brak jeszcze profilu skatera —", + editSkaterProfile: "dodaj swoje style i poziom", + noPhoto: "Brak zdjęcia profilowego —", + addPhoto: "dodaj je w profilu", + finishTitle: "Dokończ swoją kartę", + finishDesc: "Zdjęcie i profil skatera sprawiają, że wygląda autentycznie.", + checkPhoto: "Zdjęcie profilowe", + checkName: "Nazwa wyświetlana", + checkProfile: "Style i poziom", + checkCrew: "Dołącz do Crewu", + moreTypes: "Kolejne typy kart odblokowują się, gdy dodasz swoje Spoty do mapy, dołączysz do Crewów lub potwierdzisz RSVP na wydarzenia.", + accent: "Kolor akcentu", + accentHint: "Zastępuje akcent motywu", + accentClear: "Użyj koloru motywu", + logo: "Własne logo / herb", + logoAdd: "Wgraj", + logoChange: "Zmień", + logoClear: "Usuń", + }, + back: { + title: "Drukowana strona odwrotna", + desc: "Crewy, role, sponsorzy i linki na odwrocie", + showBack: "Pokaż tył", + showFront: "Pokaż przód", + empty: "Nic tu jeszcze nie ma — dodaj Crewy, role lub sponsorów.", + }, + verify: { + checking: "Sprawdzanie karty…", + notFound: "Nie znaleziono karty", + notFoundDesc: "Na Relayach nie znaleziono pasującego wydarzenia. Mogło zostać usunięte lub link jest błędny.", + invalid: "Nieprawidłowy podpis", + invalidDesc: "To wydarzenie istnieje, ale jego podpis się nie weryfikuje. Nie ufaj mu.", + authentic: "Autentyczna", + authenticDesc: "Podpis wystawcy jest ważny.", + kind: "Typ", + kindPark: "Karta dostępu Park", + kindRider: "Karta Ridera", + kindCrew: "Karta Crew", + kindEvent: "Przepustka na wydarzenie", + organiser: "Organizator", + expired: "Wygasła", + valid: "Ważna", + holder: "Posiadacz", + ticketHolder: "Posiadacz biletu", + rsvp: "RSVP", + rsvpGoing: "Idę", + rsvpInterested: "Zainteresowany", + rsvpNone: "Nie znaleziono RSVP", + revoked: "Przepustka unieważniona", + revokedDesc: "Wystawca anulował tę przepustkę — nie przyjmuj jej.", + issuedBy: "Wystawiona przez", + accessLevel: "Poziom dostępu", + validThru: "Ważna do", + selfIssued: "Status", + selfIssuedDesc: "Samodzielnie wystawiona karta tożsamości", + venue: "Miejsce", + venueVerified: "Zweryfikowano — klucz właściciela miejsca pasuje do wystawcy.", + venueMismatch: "Ta przepustka wskazuje miejsce, którego nie posiada klucz wystawcy.", + venueNone: "Niepowiązana z miejscem.", + viewCard: "Zobacz kartę", + disclaimer: "Ważny podpis dowodzi, kto podpisał tę kartę — nie jest dowodem umiejętności ani praw dostępu wykraczających poza to, co wystawiło miejsce.", + details: "Szczegóły", + invalidLink: "Nieprawidłowy link", + invalidLinkDesc: "To nie wygląda na prawidłowy link do karty.", + }, + public: { + invalid: "To nie wygląda na prawidłowy link do karty.", + createYourOwn: "Utwórz własną kartę", + editYourCard: "Edytuj swoją kartę", + backToEditor: "Powrót do edytora", + backHome: "Powrót do domu", + notCustomised: "Ten skater nie dostosował jeszcze swojej karty — to wygląd domyślny.", + verifyNote: "Zeskanuj kod QR na karcie, aby ją zweryfikować.", + }, + }, + routeUi: { + destination: "Cel", + routeTo: "Trasa do {{label}}", + routeToLabel: "Trasa do", + search: "Szukaj", + description: "Opcje trasy i nawigacja w aplikacji.", + routeMapAria: "Mapa trasy", + findingLocation: "Ustalanie twojej lokalizacji…", + plottingRoute: "Wyznaczanie trasy…", + refiningLocation: "Doprecyzowywanie lokalizacji…", + offlineSavedRoute: "Offline · zapisana trasa {{age}}", + tapMapStart: "Dotknij mapy, aby ustawić punkt startowy", + fitRouteAria: "Dopasuj całą trasę na mapie", + wholeRoute: "Cała trasa", + next: "Dalej", + nextStep: "Dalej · krok {{n}}", + followTheLine: "Jedź po linii", + toTheTurn: "do zakrętu", + toGo: "do celu", + tryAgain: "Spróbuj ponownie", + mode: { + foot: "Skate / pieszo", + bike: "Rower", + moto: "Moto", + car: "Samochód", + transit: "Transport publiczny", + }, + from: "Z", + myLocation: "Moja lokalizacja", + tapTheMap: "Dotknij mapy…", + chooseOnMap: "Wybierz na mapie", + direct: "bezpośrednio", + transferOne: "1 przesiadka", + transfers: "{{count}} przesiadek", + options: "{{count}} opcji", + ride: "jazda", + arrive: "przyjazd", + speedAvg: "średnio {{speed}} km/h", + stepsCount: "{{count}} kroków", + onABoard: "na desce", + usesDrivingRoads: "korzysta z dróg dla samochodów", + drivingEstimate: "szacunek dla samochodu", + updating: "aktualizowanie…", + pickMode: "Wybierz tryb, aby zobaczyć trasę.", + waitingLocation: "Oczekiwanie na twoją lokalizację…", + routeSteps: "Kroki trasy", + walkingRoute: "trasa piesza — szybciej na desce", + planningView: "Widok planowania — dotknij Start, aby podążać z nawigacją na żywo, głosem i powiadomieniem o przybyciu.", + leaveNow: "Wyjedź teraz", + departAt: "Wyjazd o", + arriveBy: "Przyjazd do", + departureTime: "Czas wyjazdu", + arrivalTime: "Czas przyjazdu", + only: "Tylko", + clear: "wyczyść", + itinerary: "Plan podróży", + group: { + bus: "Autobus", + tram: "Tramwaj", + metro: "Metro", + train: "Pociąg", + ferry: "Prom", + }, + walk: "Pieszo", + rideVerb: "Jedź", + walkLower: "pieszo", + rideLower: "jazda", + toStop: "do", + track: "peron {{track}}", + stopOne: "1 przystanek", + stopsCount: "{{count}} przystanków", + tickets: "bilety ↗", + done: "Gotowe", + stop: "Zatrzymaj", + start: "Start", + arrived: "Dotarłeś na miejsce. 🛹", + voiceOnNote: "Ekran pozostaje włączony · głos włączony — zakręty i przybycie są wypowiadane.", + voiceOffNote: "Ekran pozostaje włączony · głos wyłączony.", + followNote: "Zakręty, głos i przybycie podczas jazdy. Utrzymuje ekran włączony.", + voiceOffAria: "Wyłącz nawigację głosową", + voiceOnAria: "Włącz nawigację głosową", + voiceStart: "Rozpoczynanie nawigacji", + voiceArrived: "Dotarłeś na miejsce", + voiceIn: "Za {{metres}} metrów, {{instruction}}", + voiceContinue: "jedź dalej", + voiceContinueCaps: "Jedź dalej", + errPermissionDenied: "Odmówiono pozwolenia na lokalizację.", + errWaitingGps: "Oczekiwanie na sygnał GPS…", + errPermissionDeniedLong: "Odmówiono pozwolenia na lokalizację. Włącz lokalizację, aby wyznaczyć trasę z miejsca, w którym jesteś.", + errNoLocation: "Nie udało się ustalić twojej lokalizacji. Spróbuj ponownie.", + errNoLocationShort: "Nie udało się ustalić twojej lokalizacji.", + errTransitNoRouteFiltered: "Brak trasy dla tej godziny lub środka transportu — spróbuj innej godziny lub uwzględnij więcej trybów.", + errTransitNoRoute: "Nie znaleziono tu trasy komunikacją publiczną — ten obszar może nie publikować otwartych rozkładów.", + errTransitUnreachable: "Nie udało się połączyć z usługą transportu publicznego. Sprawdź połączenie i spróbuj ponownie.", + errRoutingBusy: "Usługa wyznaczania tras jest teraz zajęta — spróbuj za chwilę.", + errNoRouteMode: "Brak trasy dla tego trybu — cel może znajdować się poza siecią dróg. Spróbuj innego trybu.", + errRoutingUnreachable: "Nie udało się połączyć z usługą wyznaczania tras. Sprawdź połączenie i spróbuj ponownie.", + departures: "Odjazdy", + upcomingFrom: "Nadchodzące odjazdy z {{stop}}", + loadingDepartures: "Wczytywanie odjazdów…", + noDepartures: "Nie znaleziono nadchodzących odjazdów z tego przystanku.", + live: "na żywo", + cancelled: "odwołany", + refresh: "Odśwież", + tripLoginTitle: "Zaloguj się, aby zapisać", + tripLoginDesc: "Zaloguj się, aby zachować tę wycieczkę jako kolekcję.", + tripCollectionTitle: "skate wycieczka do {{destination}} 🛹", + tripCollectionDesc: "Plan wycieczki autorstwa The Sasquatch — {{count}} dni w {{destination}}.", + tripCollectionDescOne: "Plan wycieczki autorstwa The Sasquatch — {{count}} dzień w {{destination}}.", + tripSavedTitle: "Zapisano w kolekcjach 🦧", + tripSavedDesc: "Twoja wycieczka do {{destination}} została zapisana.", + tripSaveFailed: "Nie udało się zapisać", + tripSaveFailedDesc: "Spróbuj za chwilę.", + daysInDestinationOne: "{{count}} dzień w {{destination}}", + daysInDestination: "{{count}} dni w {{destination}}", + wetForecast: "Deszczowa prognoza — zapytaj lokalny Crew o kryte/zadaszone opcje.", + dayLabel: "Dzień {{n}}", + freeSkate: "Wolna jazda — zwiedzaj i filmuj. 🎥", + tapToBook: "dotknij, aby zarezerwować / Zap ⚡", + localCrews: "Lokalne Crewy", + saving: "Zapisywanie…", + savedToCollections: "Zapisano w kolekcjach", + saveSpotOne: "Zapisz {{count}} Spot w kolekcji", + saveSpots: "Zapisz {{count}} Spotów w kolekcji", + flights: "Loty", + stays: "Noclegi", + gettingAround: "Poruszanie się", + noMiddleman: "Ja planuję jazdę — loty i noclegi otwierają się na prawdziwych stronach (bez KYC, bez pośredników).", + ageJustNow: "przed chwilą", + ageMinAgo: "{{count}} min temu", + ageHourAgo: "{{count}} godz. temu", + ageDayAgo: "{{count}} dni temu", + skateRightHere: "dokładnie tutaj", + skateMin: "~{{count}} min jazdy", + skateHours: "~{{hours}} godz. jazdy", + maneuver: { + headOut: "Ruszaj", + arrive: "Dotrzyj na Spot", + continueStraight: "Jedź dalej", + bearLeft: "Lekko w lewo", + bearRight: "Lekko w prawo", + turnLeft: "Skręć w lewo", + turnRight: "Skręć w prawo", + sharpLeft: "Ostro w lewo", + sharpRight: "Ostro w prawo", + turn: "Skręć", + keepLeft: "Trzymaj się lewej", + keepRight: "Trzymaj się prawej", + takeFork: "Wjedź na rozwidlenie", + merge: "Włącz się do ruchu", + roundabout: "Wjedź na rondo", + takeRamp: "Wjedź na wjazd", + takeExit: "Zjedź zjazdem", + }, + maneuverOnto: "{{instruction}} w {{road}}", + }, + sasquatchUi: { + live: "na żywo", + offline: "offline", + genericTitle: "Asystent SkateSpots 🦧", + genericGreeting: "Cześć! Jestem The Sasquatch. Pytaj mnie o wszystko — Spoty, wydarzenia, trenerzy, sprzęt albo jak działa aplikacja. Mam dane na żywo z Relay SkateSpots!", + q1: "Zaplanuj mi 3 dni w Lizbonie", + q2: "Znajdź Spoty w pobliżu", + q3: "Jakieś nadchodzące wydarzenia?", + q4: "Czym są Crewy?", + q5: "Jak działają Zapy?", + q6: "Czym jest Nostr?", + q7: "Czym jest Mój Stash?", + q8: "Czy to jest darmowe?", + bubbleTitle: "Naciśnij i przeciągnij, aby przesunąć · Dotknij, aby otworzyć", + openGuideAria: "Otwórz przewodnik Sasquatch", + hideAria: "Ukryj asystenta Sasquatch", + hide: "Ukryj asystenta", + showAria: "Pokaż asystenta Sasquatch", + activeUntil: "Aktywne do {{date}}", + platformOwner: "Właściciel platformy", + upgradeTitle: "Uaktualnij do Sasquatch Pro", + goPro: "Przejdź na Pro", + goProBlurb: "Osobista AI · od 2 tys. sats", + aiBalanceTitle: "Saldo kredytów Sasquatch AI (tylko dla właściciela) — doładuj na {{provider}}", + aiChip: "⚡ AI {{balance}}", + minimizeToBubbleAria: "Zminimalizuj do bańki", + minimize: "Minimalizuj", + closePanelAria: "Zamknij panel", + close: "Zamknij", + askLab: "Pytaj o Coaching i filmowanie", + askMap: "Pytaj o Spoty, sklepy i sprzęt", + askAnything: "Pytaj o wszystko 🛹", + quickQuestions: "Szybkie pytania:", + you: "🧑 Ty", + thinking: "myślę...", + inputPlaceholder: "Pytaj o Spoty, wydarzenia, trenerów...", + liveDataFrom: "Dane na żywo z", + nostrRelays: "Relayów Nostr", + clear: "wyczyść", + gettingLocation: "📍 Ustalanie twojej lokalizacji…", + findingClosest: "🔍 Szukanie najbliższych Spotów…", + checkingLive: "🔍 Sprawdzanie danych na żywo…", + planningTrip: "🗺️ Planowanie wycieczki do {{destination}}...", + searchingRelays: "🔍 Przeszukiwanie Relayów w poszukiwaniu {{tool}}...", + perk1: "Osobisty asystent — Sasquatch czyta twój Stash, Crewy, Spoty i ogłoszenia", + perk2: "Projekty akcji: wystaw sprzęt, opublikuj skate status, zaplanuj wycieczkę — potwierdzasz, zanim cokolwiek się opublikuje", + perk3: "Odpowiedzi korzystają z twojego osobistego kontekstu, nie tylko danych publicznych", + perk4: "⚡ Bezpośrednio wspieraj SkateSpots i utrzymuj go darmowym i bez reklam", + welcomeTitle: "Dziękujemy za wsparcie Sasquatch Pro! 🦧⚡", + welcomeDesc: "Płatność wysłana — twoja przepustka aktywuje się, gdy dostawca ją potwierdzi (zwykle w ciągu minuty). Dzięki za utrzymanie ulic wolnych.", + invoiceCopied: "Faktura skopiowana", + dialogDesc: "Wzmocnij swój przewodnik AI po skate. 100% finansuje darmową aplikację społecznościową bez reklam.", + proSupporter: "Jesteś wspierającym Pro ⚡", + extendPrompt: "Chcesz przedłużyć? Wybierz poniższy pakiet, aby dodać więcej czasu.", + scanToPayPre: "Zeskanuj, aby zapłacić", + scanToPayAmount: "{{sats}} sats", + scanToPayPost: "za {{label}} Pro", + invoiceQrAlt: "Kod QR faktury Lightning", + copyInvoice: "Skopiuj fakturę", + ivePaid: "Zapłaciłem", + ivePaidHint: "Dotknij „Zapłaciłem” po potwierdzeniu w portfelu — to zapisze twoją przepustkę w twojej tożsamości Nostr.", + freeStaysPre: "Darmowy Sasquatch pozostaje darmowy — publiczne wyszukiwanie Spotów/wydarzeń/trenerów, planowanie wycieczek i pełny słownik tricków. Pro dodaje ", + freeStaysEmphasis: "osobistą i akcji", + freeStaysPost: " warstwę.", + loginFirst: "Najpierw zaloguj się, aby uaktualnić.", + paysTo: "Płaci do", + overLightning: "przez Lightning. Powiązane z twoim npub.", + popular: "Popularne", + sats: "sats", + extend: "Przedłuż", + done: "Gotowe!", + cancelledNothing: "Anulowano — nic nie zostało opublikowane.", + draftReview: "Projekt — przejrzyj i potwierdź", + statusTextPlaceholder: "Treść statusu", + titlePlaceholder: "Tytuł", + priceSatsPlaceholder: "Cena (sats)", + conditionPlaceholder: "Stan", + cancel: "Anuluj", + aiTitle: "Sasquatch AI", + owner: "Właściciel", + notConfigured: "nieskonfigurowane", + unavailable: "niedostępne", + satsValue: "{{balance}} sats", + theNode: "węzeł", + lowBalance: "Kończy się — doładuj na {{provider}} albo AI przełączy się na dostawcę bez klucza.", + aiDesc: "AI płatne za zapytanie, finansowane w sats przez Routstr. Doładowuje się, gdy jest mało.", + tier7d: "7 dni", + tier1m: "1 miesiąc", + tier3m: "3 miesiące", + tier1y: "1 rok", + badgeTry: "Wypróbuj", + badgeOff20: "20% taniej", + badgeBest: "Najlepsza wartość · 40% taniej", + draftPostStatusTitle: "Opublikuj status jazdy", + draftAutoExpires: "Wygasa automatycznie za {{count}} min", + draftPostStatusCta: "Opublikuj status", + draftCategory: "Kategoria: {{value}}", + draftSize: "Rozmiar: {{value}}", + draftCondition: "Stan: {{value}}", + draftMaxPrice: "Maks. cena: {{price}} {{currency}}", + draftPriceOpen: "Cena: otwarta", + draftLookingForTitle: "Szukam „{{title}}”", + draftWantedCta: "Opublikuj ogłoszenie „kupię”", + draftPrice: "Cena: {{price}} {{currency}}", + draftPriceOffer: "Cena: złóż ofertę", + draftListTitle: "Wystaw „{{title}}” na sprzedaż", + draftPublishCta: "Opublikuj ogłoszenie", + statusPosted: "Status opublikowany 🛹", + wantedPublished: "Ogłoszenie „kupię” opublikowane 🔎", + listingPublished: "Ogłoszenie opublikowane 💸", + mustBeLoggedIn: "Musisz być zalogowany.", + }, + sasquatchChat: { + faq: { + hi: "Hej! Jestem The Sasquatch 🦧 Twój przewodnik AI po skate. Pytaj mnie o Spoty, wydarzenia, trenerów, sprzęt — albo o cokolwiek związanego z aplikacją. Czego potrzebujesz?", + hello: "Siema! 🛹 Jestem The Sasquatch. Pytaj mnie o skate Spoty, wydarzenia, trenerów albo jak działa aplikacja. Co słychać?", + hey: "Hej skaterze! 🤙 Pytaj mnie o Spoty w pobliżu, nadchodzące wydarzenia, trenerów albo cokolwiek ze SkateSpots.", + whoAreYou: "Jestem The Sasquatch 🦧 — przewodnik AI po SkateSpots. Potrafię znaleźć skate Spoty na całym świecie, wyszukać wydarzenia, trenerów, filmerów i ogłoszenia sprzętowe. Wszystko napędzane danymi Nostr na żywo. Pytaj!", + whatCanYouDo: "Potrafię znaleźć skate Spoty po mieście lub kraju, wyszukać nadchodzące wydarzenia, znaleźć trenerów i filmerów w The Lab, przeszukać ogłoszenia sprzętowe i odpowiedzieć na pytania o działanie aplikacji. Spróbuj: „Spoty w Bangkoku” lub „znajdź trenera”! 🛹", + whatIsNostr: "Nostr to prosty, otwarty protokół zdecentralizowanych sieci społecznościowych. Pomyśl o Twitterze, ale bez jednej firmy, która nim rządzi — używasz kluczy kryptograficznych zamiast nazw użytkownika, wybierasz, które Relaye przechowują twoje dane (albo uruchamiasz własne), a jedno konto działa we wszystkich aplikacjach Nostr! 🔑", + isThisPrivate: "Oto szczera rozpisówka 🛡️\n\n• Twoja **lokalizacja GPS pozostaje na urządzeniu** — „Blisko mnie” tylko centruje mapę. Nigdy nie jest wysyłana do nas ani publikowana.\n• **Spoty, które dodajesz, są publiczne** (na tym polega wspólna mapa) — więc nie upuszczaj pinezki na własnych drzwiach.\n• **Wiadomości prywatne i czaty Crewów są szyfrowane end-to-end** — mogą je czytać tylko członkowie.\n• Jak w każdej witrynie, serwery, z którymi się łączysz (kafle mapy, Relaye), widzą twoje **IP**. Chcesz to też ukryć? Użyj VPN lub Tora.\n\nPełne szczegóły na [stronie prywatności](/privacy). 🛹", + privacy: "W skrócie 🛡️: twój GPS nigdy nie opuszcza urządzenia, publikowane Spoty są publiczne z założenia, a wiadomości prywatne/czaty Crewów są szyfrowane end-to-end. Serwery nadal mogą zobaczyć twoje IP (normalne dla każdej witryny) — VPN lub Tor to ukryje, jeśli chcesz. Pełne omówienie na [stronie prywatności](/privacy).", + amITracked: "SkateSpots cię nie śledzi — bez reklam, bez profilowania analitycznego, bez sprzedaży danych, i nie ma serwera SkateSpots zbierającego twoją lokalizację. Twój GPS pozostaje na urządzeniu. Jedyne, co widzą serwery (kafle mapy, Relaye), to twoje **IP** — tak samo jak w każdej witrynie. Użyj VPN lub Tora, aby to ukryć. Więcej na [stronie prywatności](/privacy). 🛡️", + doYouTrack: "Nie — bez śledzenia, bez reklam, bez zbierania danych. Twój GPS pozostaje na urządzeniu i nie ma centralnego serwera, który cię loguje. Serwery, z którymi się łączysz, widzą twoje IP (jak w każdej witrynie); VPN/Tor to ukryje. Zobacz [stronę prywatności](/privacy). 🛹", + vpn: "Całkowicie opcjonalne, ale solidne, jeśli chcesz dodatkowej prywatności 🛡️. VPN ukrywa twoje **IP** (przybliżoną lokalizację) przed serwerami, z którymi rozmawia SkateSpots — kafle mapy, Relaye itd. Wybierz dostawcę bez logów, któremu ufasz (np. Mullvad); unikaj podejrzanych darmowych.\n\nUwaga: VPN **nie** ukrywa publikowanych przez ciebie Spotów (są publiczne) i nie włączaj GPS przeglądarki, jeśli chcesz zachować anonimowość. Pełne szczegóły na [stronie prywatności](/privacy).", + tor: "Tor Browser daje najsilniejszą prywatność IP — kieruje cię przez kilka Relayów, więc serwery nie widzą twojego prawdziwego IP 🧅. Kompromis: jest wolniejszy, a mapy i niektóre Relaye Nostr mogą zwalniać lub blokować wyjścia Tora. Świetny dla bardzo ostrożnych.\n\nPamiętaj: Tor ukrywa twoje IP, a nie publikowane Spoty, i nie włączaj GPS przeglądarki, jeśli zależy ci na anonimowości. Więcej na [stronie prywatności](/privacy).", + hideMyIp: "Dwie darmowe opcje 🛡️: **renomowany VPN** (prosty, szybki — ukrywa twoje IP za swoimi serwerami) lub **Tor Browser** (maksymalna prywatność, wolniejszy). Każda z nich powstrzymuje serwery, z którymi łączy się SkateSpots, przed zobaczeniem twojego prawdziwego IP. Uwaga: nie ukrywają publikowanych przez ciebie Spotów. Zobacz [stronę prywatności](/privacy).", + isMyLocation: "Twoja lokalizacja jest bezpieczna 📍 — „Blisko mnie” odczytuje twój GPS tylko na urządzeniu, aby wyśrodkować mapę i posortować pobliskie Spoty. Nigdy nie jest publikowana w Nostr, nigdy nie jest wysyłana do nas, nigdy nie jest udostępniana. Publiczne są tylko Spoty, które świadomie dodasz. Szczegóły na [stronie prywatności](/privacy).", + whatAreZaps: "Zapy to natychmiastowe napiwki w Bitcoinie przez Lightning wysyłane przez Nostr! Kliknij ⚡ przy dowolnej treści i wyślij sats bezpośrednio do portfela twórcy. Jak polubienie, ale z prawdziwymi pieniędzmi. Natychmiastowe, peer-to-peer, bez pośredników. ⚡", + howToLogin: "Dwa sposoby:\n1. **Rozszerzenie przeglądarki** (komputer): zainstaluj Alby lub nos2x, a następnie kliknij „Zaloguj się”\n2. **Nowy użytkownik**: kliknij „Zarejestruj się”, aby wygenerować klucze. Pobierz swój nsec (klucz tajny) i ZAPISZ GO — to twoje konto na zawsze!", + whatIsCashu: "Wbudowany portfel Bitcoin! Tokeny ecash Cashu oparte na Lightning — działają offline na Spotach, nastawione na prywatność (minty nie mogą śledzić płatności). Przejdź do Portfela w Ustawieniach, aby go użyć. 🥜", + whatIsNwc: "Nostr Wallet Connect — jak USB-C dla portfeli Lightning. Połącz Alby, Minibits, Zeus lub Coinos raz i zapuj jednym kliknięciem na zawsze. Szyfrowane, ty kontrolujesz limity wydatków. 🔌⚡", + isItFree: "W 100% darmowe. Bez reklam, bez subskrypcji, bez korporacyjnego bzdetu. Stworzone przez skaterów dla skaterów. Finansowane przez społeczność przez Angor — sprawdź stronę Wspierających. Możesz też zarabiać Bitcoiny dzięki społecznościowym Zapom za dodawanie jakościowych Spotów. 🛹", + whatCanIDo: "Odkrywaj Spoty na całym świecie na mapie, zatrudniaj profesjonalistów w The Lab (trenerzy, filmerzy, fotografowie, montażyści, budowniczowie ramp), jeździj z Crewem, dołączaj do wydarzeń, bierz udział w Tourach, kupuj i sprzedawaj sprzęt, śledź swój prywatny Stash, zapuj twórców, sprawdzaj pogodę na Spocie i buduj zdecentralizowaną społeczność skate!", + whatIsTheLab: "The Lab to miejsce, gdzie zatrudniasz profesjonalistów sceny skate: trenerów, filmerów, fotografów, montażystów wideo oraz budowniczych ramp/parków/DIY. Każdy może być osobą lub kolektywem (crew/studio) — członkowie potwierdzają własnymi kluczami, więc to jest legitne. Wszystko na Nostr, bez fałszywych kont. 🎓", + whatIsACrew: "Crewy to twoja skate rodzina zakotwiczona na mapie — ci, z którymi jeździsz, a nie których zatrudniasz. Każdy Crew ma swój rewir na mapie (turkusowe pinezki), domowe Spoty, członków, klimat i manifest. Członkowie potwierdzają własnym kluczem. Utwórz Crew w Crewy → „Utwórz Crew”. 🤘", + whatAreCrews: "Crewy to twoja skate rodzina zakotwiczona na mapie — ci, z którymi jeździsz, a nie których zatrudniasz. Każdy Crew ma swój rewir na mapie (turkusowe pinezki), domowe Spoty, członków i manifest. Członkowie potwierdzają własnym kluczem. Przejdź do zakładki Crewy, aby założyć lub dołączyć do Crewu! 🤘", + howToStartACrew: "Przejdź do zakładki Crewy → „Utwórz Crew”. Nazwij go, upuść swój rewir na mapie, dodaj klimaty (lub własny #hashtag), połącz swoje domowe Spoty i dodaj członków przez npub. Każdy członek potwierdza własnym kluczem, więc skład jest legitny. 🤘", + whatIsMyStash: "Mój Stash to twój PRYWATNY, zaszyfrowany schowek na sprzęt (szyfrowanie NIP-44). Śledź swoje Decki, Trucks, Wheels, buty — z miejscem przechowywania, stanem, rzadkością i ceną. Tylko TY możesz to czytać, chyba że oznaczysz przedmioty jako publiczne. Świetne do ubezpieczenia lub planowania wymiany. 🎒", + whatIsStash: "Mój Stash to twój PRYWATNY, zaszyfrowany inwentarz sprzętu. Zapisuj wszystko, co posiadasz — stan, gdzie jest przechowywane, wartość — wszystko zaszyfrowane, więc tylko ty to widzisz. Oznacz przedmioty jako publiczne, jeśli chcesz je sprzedać lub pokazać. 🎒", + whatIsABuilder: "Budowniczowie to Crewy ramp/parków/DIY w The Lab, które możesz zatrudnić do budowy transition, Bowli, Raili lub całego parku. Wystawiają, co budują, materiały, skalę projektu i mogą mieć licencje/ubezpieczenie. Często kolektywy — i mogą połączyć zbudowane Spoty z mapą. 🏗️", + whatIsANutzap: "Nutzapy (NIP-61) to napiwki ecash wysyłane przez Nostr — prywatne tokeny Cashu zapowane prosto do kogoś. Możesz skonfigurować ODBIERANIE nutzapów w Portfelu. (Wysyłanie pełnych nutzapów jest wdrażane — na razie używaj Zapów Lightning.) 🥜⚡", + whatIsClink: "CLINK to natywny dla Nostr kod płatności („noffer”). Sklepy, Crewy i profesjonaliści z The Lab mogą go dodać, abyś mógł im zapłacić bez adresu Lightning — zobaczysz przycisk „Zapłać przez CLINK” z kodem QR. Zeskanuj go portfelem CLINK, np. ShockWallet. 🔗⚡ [specs](https://clinkme.dev/specs.html) [apps](https://clinkme.dev/apps.html)", + whatIsNoffer: "Noffer to kod płatności CLINK — wielorazowy, natywny dla Nostr sposób na otrzymywanie płatności bez serwera ani adresu Lightning. Dodaj swój w profilu sklepu/Crewu/The Lab, a ludzie będą mogli płacić ci bezpośrednio. 🔗", + whatAreTours: "Toury to wycieczki skate z przewodnikiem — lokalne sesje, krajowe wyprawy lub toury world destruction. Znajdź je na mapie lub w sekcji Toury, spotkaj się i pojeźdź po nowym terenie z lokalnymi. 🗺️🛹", + whatIsAShop: "Skate Sklepy to lokalne sklepy na mapie. Odkrywaj i wspieraj prawdziwe stacjonarne (lub internetowe) skate sklepy w twojej okolicy — niektóre przyjmują nawet Bitcoina. 🏪", + howToSellGear: "Przejdź do Wymiany sprzętu / Marketplace i utwórz ogłoszenie (NIP-99). Dodaj zdjęcia, cenę w sats, stan i opcjonalnie przypisz do Spotu, aby pojawiło się na mapie. Kupujący zapują lub piszą do ciebie bezpośrednio. 🛹💸", + supporters: "SkateSpots jest finansowany przez społeczność przez Angor (zdecentralizowane crowdfunding Bitcoin) — bez reklam, bez inwestorów, bez sprzedaży danych. Sprawdź stronę Wspierających, aby wesprzeć projekt i utrzymać ulice wolne. ❤️⚡", + trustScore: "Oceny zaufania (0-100) napędzane przez Relatr. Analizuje twoją sieć Nostr: obserwujących, aktywność, zaangażowanie, Zapy. Wyżej = bardziej zaufany. Pomaga filtrować boty i spam. Sprawdź dowolny profil, aby zobaczyć jego ocenę. 🛡️", + whatRelay: "SkateSpots używa: 🛹 goskatespots.nostr1.com (główny, na liście dozwolonych dla jakości) + relay.ditto.pub (globalny) + purplepag.es (agregator profili). Twoje dane są replikowane na wszystkie z nich dla nadmiarowości.", + tripPlanner: "Podaj miasto, a zbuduję dzień po dniu skate wycieczkę 🗺️ — Spoty, wydarzenia, trenerów i lokalne Crewy, z uwzględnieniem pogody (deszczowy dzień = wskazówka Crewu o krytych Spotach). Spróbuj „zaplanuj mi 3 dni w Lizbonie”. Mogę zapisać to wszystko w kolekcji i przekazać cię do lotów/noclegów na prawdziwych stronach (bez KYC, bez pośredników). 🛹", + planATrip: "Po prostu powiedz „zaplanuj mi 3 dni w Barcelonie” (lub w dowolnym mieście), a rozpiszę Spoty, sesje, trenerów i lokalne Crewy na każdy dzień. Zapisz to jako kolekcję i jedź. 🗺️🛹", + sasquatchPro: "**Sasquatch Pro** 🦧⚡ to przepustka wspierającego przez Lightning, która odblokowuje moją osobistą stronę:\n\n• 🧠 **Osobisty asystent** — czytam twój własny Stash, Crewy, Spoty i ogłoszenia\n• ✨ **Projekty akcji** — wystaw sprzęt, opublikuj swój skate status, zaplanuj wycieczki (zawsze potwierdzasz, zanim cokolwiek się opublikuje)\n• 💬 **Osobisty kontekst** — moje odpowiedzi korzystają z twoich danych, nie tylko wyników publicznych\n• ⚡ **Wsparcie projektu** — utrzymujesz SkateSpots darmowym i bez reklam\n\nDarmowy Sasquatch pozostaje darmowy: publiczne wyszukiwanie Spotów/wydarzeń/trenerów/Crewów, słownik i planowanie wycieczek działają bez Pro. Pro dodaje tylko rzeczy *osobiste*. Dotknij **⚡ Przejdź na Pro** u góry. Pakiety: 7 dni ~2 tys. sats, 1 miesiąc ~5 tys., 3 miesiące ~12 tys., 1 rok ~36 tys.", + proPerks: "Zalety Pro 🦧⚡: osobisty asystent (czyta twój Stash/Crewy/Spoty/ogłoszenia), projekty akcji (wystaw sprzęt, opublikuj status, zaplanuj wycieczki — ty potwierdzasz) oraz odpowiedzi korzystające z twojego osobistego kontekstu. Do tego bezpośrednio wspierasz SkateSpots i utrzymujesz go darmowym + bez reklam. Darmowy plan zostaje darmowy — Pro dodaje warstwę osobistą. Dotknij **⚡ Przejdź na Pro** u góry.", + proVersion: "Wersja Pro mnie 🦧⚡ dodaje **osobistego asystenta**: mogę czytać twój własny Stash, Crewy, Spoty i ogłoszenia, przygotowywać projekty akcji (wystaw sprzęt, opublikuj status, zaplanuj wycieczkę — zawsze najpierw potwierdzasz) i używać twojego osobistego kontekstu w odpowiedziach. Bezpośrednio wspiera też projekt. Darmowy Sasquatch (wyszukiwanie Spotów/wydarzeń/trenerów/Crewów, słownik, planer wycieczek) zostaje darmowy. Dotknij **⚡ Przejdź na Pro** u góry.", + perks: "Zalety Pro 🦧⚡: osobisty asystent (twój Stash/Crewy/Spoty/ogłoszenia), projekty akcji, które potwierdzasz, i odpowiedzi korzystające z twojego kontekstu — a do tego utrzymujesz aplikację darmową i bez reklam. Dotknij **⚡ Przejdź na Pro** u góry.", + goPro: "Dotknij przycisku **⚡ Przejdź na Pro** u góry, aby otworzyć okno uaktualnienia. Pro odblokowuje mojego osobistego asystenta (Stash/Crewy/Spoty/ogłoszenia) i projekty akcji oraz bezpośrednio wspiera projekt. Płać Lightningiem — od 7 dni ~2 tys. sats do 1 roku ~36 tys. sats. Funkcje darmowe zostają darmowe. 🦧", + proPricing: "Pakiety Pro (płać Lightningiem ⚡): **7 dni** ~2 000 sats (~1,20 $), **1 miesiąc** ~5 000 sats (~3 $), **3 miesiące** ~12 000 sats (~7 $, 20% taniej), **1 rok** ~36 000 sats (~21 $, najlepsza wartość). Dotknij **⚡ Przejdź na Pro** u góry.", + howMuchIsPro: "Pakiety Pro: 7 dni ~2 000 sats, 1 miesiąc ~5 000 sats, 3 miesiące ~12 000 sats (20% taniej), 1 rok ~36 000 sats (najlepsza wartość). Płać Lightningiem ⚡. Dotknij **⚡ Przejdź na Pro** u góry.", + upgrade: "Aby uaktualnić do Sasquatch Pro, dotknij przycisku **⚡ Przejdź na Pro** u góry. Płać Lightningiem (od 7 dni ~2 tys. sats do 1 roku ~36 tys.). Pro odblokowuje mojego osobistego asystenta i projekty akcji oraz bezpośrednio wspiera projekt. 🦧⚡", + }, + statsTitle: "📊 **SkateSpots w liczbach**", + weatherTemp: "• {{temp}}°C (odczuwalna {{feels}}°C)", + weatherSkateability: "• Jazda: **{{label}}** ({{score}}/100)", + weatherError: "Nie udało się teraz odczytać pogody. Spróbuj za chwilę. 🌧️", + labelSpots: "Spotów", + labelEvents: "wydarzeń", + labelLabPros: "profesjonalistów The Lab", + labelCrews: "Crewów", + labelShops: "skate sklepów", + labelTours: "Tourów", + labelGear: "ogłoszeń sprzętowych", + unnamed: "Bez nazwy", + emptyWhere: " w **{{place}}**", + emptyResult: "Nie znalazłem teraz żadnych {{label}}{{where}} 🦧\n\nTo może oznaczać, że nic jeszcze nie jest wystawione — albo Relaye odpowiadały wolno. Spróbuj za chwilę, sprawdź pisownię lub [dodaj pierwszy wpis na mapie](https://skate-spots.org/map). 🛹", + foundTitle: "{{emoji}} Znalazłem **{{count}}** {{label}}:\n{{lines}}{{more}}", + moreResults: "\n\n…i **{{count}}** więcej — [zobacz wszystkie na mapie](https://skate-spots.org/map) 🗺️", + locationDenied: "Nie widzę twojej lokalizacji — nic nigdy nie opuszcza twojego urządzenia; czytam ją lokalnie tylko, gdy poprosisz, a przeglądarka odmówiła. Dotknij 🎯 **Blisko mnie** na mapie albo podaj miasto: „Spoty w Bangkoku”. 🛹", + noNearbySpots: "Brak zmapowanych Spotów w pobliżu 🦧 — [bądź pierwszy i dodaj jeden](https://skate-spots.org/create-spot). 🛹", + closestTitle: "Najbliżej ciebie teraz:", + closestFooter: "_Obliczone na twoim urządzeniu — twoja lokalizacja go nie opuściła._", + proNudge: "To funkcja **Sasquatch Pro** 🦧⚡ — z Pro mogę czytać twój Stash, Crewy, Spoty i ogłoszenia, przygotowywać ogłoszenia sprzętowe, ogłoszenia „kupię” i skate statusy oraz planować wycieczki. To przepustka wspierającego przez Lightning, która utrzymuje SkateSpots darmowym i bez reklam. Dotknij przycisku **⚡ Przejdź na Pro** u góry, aby ją odblokować. 🛹", + draftingProPerk: "Przygotowywanie akcji (publikowanie statusu, wystawianie sprzętu) to przywilej **Sasquatch Pro** 🦧⚡ — dotknij **⚡ Przejdź na Pro** u góry, aby go odblokować.", + draftIntro: "Oto projekt — przejrzyj go i dotknij, aby opublikować. Nic nie zostanie opublikowane, dopóki nie potwierdzisz. 🛹", + draftFailed: "Nie udało mi się zbudować tego projektu — powiedz mi szczegóły jeszcze raz (np. „wystaw moje Wheels Spitfire za 8000 sats”).", + tripAskCity: "Dokąd? Podaj miasto (np. „zaplanuj mi 3 dni w Lizbonie”), a zbuduję wycieczkę. 🗺️", + tripEmptyMap: "Na mapie nie ma jeszcze nic dla **{{destination}}** 🦧 — bądź pierwszy i dodaj Spoty na [skate-spots.org](https://skate-spots.org). Gdy lokalni dodadzą Spoty, Crewy i wydarzenia, zbuduję ci pełną wycieczkę.", + tripLocked: "Zamknąłem dla ciebie misję w **{{destination}}** 🛹 — Spoty, sesje i lokalni poniżej. Popraw ją lub zapisz.", + tripFailed: "Nie udało się teraz dotrzeć do danych na żywo, aby to zaplanować. Spróbuj ponownie za chwilę! 🛹", + tripEmptyMapLocal: "Na mapie nie ma jeszcze nic dla **{{destination}}** 🦧 — bądź pierwszy na [skate-spots.org](https://skate-spots.org).", + tripMissionLocal: "Oto misja w **{{destination}}** 🛹 — Spoty, sesje i lokalni poniżej.", + relayFailed: "Relaye nie odpowiedziały teraz na czas 🛰️ — to zwykle wolne połączenie, a nie brakujący Spot. Spróbuj jeszcze raz za chwilę. 🛹", + couldNotProcess: "Hmm, nie udało się tego przetworzyć. Spróbuj przeredagować!", + freeTierFallback: "To wymaga rozumowania AI — funkcja **Sasquatch Pro** ⚡🦧\n\nNadal mogę znaleźć **Spoty, wydarzenia, trenerów, Crewy, sklepy, Toury i sprzęt** prosto z Relayów — zapytaj mnie np. „Spoty w Barcelonie” — a [Słownik](/glossary) obejmuje ponad 150 tricków i pojęć. Dotknij **⚡ Przejdź na Pro** u góry, aby odblokować odpowiedzi AI.", + aiDownFallback: "Mój mózg AI łapie teraz trochę powietrza 🦧 — ale nadal mam dla ciebie:\n\n• 🗺️ [Mapa](/) — Spoty, sklepy, wydarzenia w pobliżu\n• 🧪 [The Lab](/lab) — trenerzy, filmerzy, montażyści\n• 📖 [Słownik](/glossary) — ponad 150 tricków i pojęć\n• 👥 [Crewy](/crews) — znajdź swoich ludzi\n\nAlbo po prostu podaj mi **miasto** („Spoty w Barcelonie”) lub **trick** („czym jest nollie”), a odpowiem od razu. 🛹", + wentWrong: "Coś poszło nie tak po mojej stronie. Spróbuj ponownie za chwilę! 🦧", + publishError: "Nie udało się tego opublikować: {{error}}. Spróbuj ponownie za chwilę.", + unknownError: "nieznany błąd", + }, +}; export default plBatch2; diff --git a/src/i18n/pl/batch3.ts b/src/i18n/pl/batch3.ts index 794556e..7a1f013 100644 --- a/src/i18n/pl/batch3.ts +++ b/src/i18n/pl/batch3.ts @@ -1,4 +1,1294 @@ -/** pl — batch 3. Filled by the translation pass; empty until then. */ -const plBatch3 = {}; +/** pl — batch 3. */ +const plBatch3 = { + settingsUi: { + proSupport: { + title: "Pro i wsparcie", + subtitle: "Opcjonalne dodatki, dzięki którym SkateSpots jest darmowy", + prepaidTitle: "Przedpłata, nie subskrypcja", + prepaidBody: "Każdy zakup to jednorazowa płatność w Bitcoinie/Lightningu — bez konta, bez cyklicznych opłat, bez powiernictwa. Kolejna płatność wydłuża Twój czas.", + sasquatchTitle: "Sasquatch Pro", + sasquatchBenefit: "Odblokowuje osobistego asystenta AI — może czytać Twój Stash, ekipy i ogłoszenia — i pomaga finansować projekt.", + active: "Aktywny", + activeUntil: "Aktywne do {{date}}", + daysLeft: "Pozostało {{count}} dni", + notActive: "Nieaktywne", + goPro: "Przejdź na Pro", + extend: "Przedłuż Pro", + day: "dzień", + featuredTitle: "Wyróżnione miejsce", + featuredBenefit: "Wypchnij ogłoszenie na górę z odznaką Pro — dla profili The Lab, wydarzeń, sklepów i wycieczek.", + featuredHow: "Progi czasowe dotyczą każdego typu; dłuższe zobowiązania kosztują mniej za dzień. Ogłoszenie wyróżniasz podczas jego tworzenia lub edycji.", + featuredUntil: "Do {{date}}", + yourFeatured: "Twoje wyróżnione ogłoszenia", + noneFeatured: "Brak aktywnych wyróżnień.", + freeTitle: "Darmowe ścieżki", + freeBody: "FAQ AI i lokalne wyszukiwanie są zawsze darmowe, a ogłoszenie na marketplace możesz opublikować za darmowy proof-of-work zamiast opłaty w sats." + }, + notFound: { + seoTitle: "404 — nie znaleziono strony", + seoDescription: "Strona, której szukasz, nie została znaleziona. Wróć na stronę główną, aby kontynuować przeglądanie.", + message: "Ups! Nie znaleziono strony", + returnHome: "Wróć do strony głównej" + }, + loginArea: { + signUp: "Zarejestruj się", + logIn: "Zaloguj się" + }, + accountSwitcher: { + switchAccount: "Przełącz konto", + walletSettings: "Ustawienia portfela", + addAccount: "Dodaj kolejne konto", + logout: "Wyloguj się" + }, + amberHint: { + defaultAction: "wysłać", + multiBefore: "Twój signer poprosi Cię o zatwierdzenie", + multiTimes: "{{approvals}} razy", + multiAfter: ", aby {{action}} — to normalne dla zaszyfrowanych wiadomości (jedno zatwierdzenie na odbiorcę). Zatwierdź każde.", + single: "Twój signer poprosi Cię o zatwierdzenie, aby {{action}}." + }, + amberCallback: { + processing: "Przetwarzanie logowania przez Amber...", + gotResult: "Otrzymano wynik: {{result}}", + noResultDebug: "Brak wyniku z Amber", + noResultToast: "Nie otrzymano wyniku z Amber. Operacja mogła zostać anulowana.", + validPubkey: "Prawidłowy pubkey! Logowanie...", + loginSuccessful: "Logowanie udane!", + loginErrorDebug: "Błąd logowania: {{error}}", + invalidResultDebug: "Nieprawidłowy format wyniku: {{result}}", + loggedInTitle: "Zalogowano", + amberLoginDesc: "Pomyślnie zalogowano przez Amber!", + loginFailedTitle: "Logowanie nie powiodło się", + loginFailedDesc: "Nie udało się dokończyć logowania przez Amber. Spróbuj ponownie.", + invalidPubkeyDesc: "Otrzymano nieprawidłowy pubkey z Amber.", + sessionLostToast: "Dane sesji zostały utracone. Spróbuj ponownie.", + eventSignedTitle: "Wydarzenie podpisane", + eventSignedDesc: "Twoje wydarzenie zostało podpisane przez Amber.", + signingFailedTitle: "Podpisywanie nie powiodło się", + signingFailedDesc: "Nie udało się przetworzyć podpisanego wydarzenia z Amber.", + operationCompleteTitle: "Operacja zakończona", + operationCompleteDesc: "{{op}} zakończono." + }, + loginDialog: { + loginWithAmber: "Zaloguj się przez Amber (Android)", + welcomeTitle: "Witaj w SkateSpots", + welcomeSubtitle: "Zarejestruj się lub zaloguj, aby kontynuować", + newHere: "Jesteś tu nowy?", + createFree: "Załóż darmowe konto. E-mail nie jest wymagany.", + createAccount: "Załóż konto", + orLogIn: "Albo zaloguj się", + loggedInTitle: "🛹 Zalogowano!", + loggedIn: "Zalogowano!", + connectedAmber: "Połączono przez Amber!", + amberLoginFailed: "Logowanie przez Amber nie powiodło się", + amberCancelled: "Logowanie anulowane. Dotknij „Open Amber”, aby spróbować ponownie.", + amberNotFound: "Nie znaleziono Amber. Upewnij się, że Amber jest zainstalowany ze ZapStore.", + loginFailed: "Logowanie nie powiodło się", + pubkeyError: "Wklej swój pubkey hex (64 znaki) lub npub z Amber", + pairedSigner: "Sparowano z Twoim signerem.", + connectFailed: "Nie udało się połączyć z Twoim signerem.", + openedEncrypted: "Otwarto Twój zaszyfrowany klucz.", + openKeyFailed: "Nie udało się otworzyć tego klucza.", + bunkerPrefix: "Musi zaczynać się od bunker://", + connectedBunker: "Połączono przez bunker!", + bunkerFailed: "Nie powiodło się: {{error}}", + checkBunkerUri: "Sprawdź swój URI bunkera", + nsecPrefix: "Musi zaczynać się od nsec1", + invalidNsec: "Nieprawidłowy nsec: {{error}}", + checkKey: "Sprawdź swój klucz", + noExtensionTitle: "Nie znaleziono rozszerzenia", + noExtensionDesc: "Zainstaluj Alby lub inne rozszerzenie NIP-07.", + amberIdleDesc: "Twój klucz pozostaje wewnątrz Amber. Jedno dotknięcie — zatwierdź w Amber i wracasz tutaj, zalogowany. Nic do kopiowania.", + continueWithAmber: "Kontynuuj z Amber", + noAmberGetIt: "Nie masz Amber? Pobierz go →", + waitingAmberTitle: "Czekam na Amber…", + waitingAmberDesc: "Zatwierdź prośbę w Amber. Zostaniesz zalogowany automatycznie, gdy tylko wrócisz.", + openAmberAgain: "Otwórz Amber ponownie", + havingTrouble: "Masz problem? Wpisz klucz ręcznie", + enterPublicKey: "Wpisz swój klucz publiczny", + enterPublicKeyDescBefore: "Tylko jeśli automatyczny proces nie zadziałał. W Amber: dotknij swojego profilu →", + copyPublicKey: "Skopiuj klucz publiczny", + enterPublicKeyDescAfter: "następnie wklej go tutaj.", + connect: "Połącz", + back: "← Wstecz", + signInWithPhone: "Zaloguj się telefonem", + signInWithPhoneDesc: "Zeskanuj aplikacją signera (Amber, nsec.app). Twój klucz nigdy nie opuszcza telefonu.", + showPairingCode: "Pokaż kod parowania", + waitingSigner: "Czekam na Twój signer…", + copyLink: "Skopiuj link", + orPasteBunker: "albo wklej adres URL bunkera", + bunkerTitle: "Bunker (NIP-46)", + bunkerPasteBefore: "Wklej swój", + bunkerPasteAfter: "URI.", + amberInstructions: "Ustawienia → Bunker NIP-46 → Utwórz → Skopiuj", + nsecAppInstructions: "Połącz aplikację → Skopiuj URI bunkera", + secretKeyTitle: "Klucz tajny", + secretKeyRawDesc: "Wklej bezpośrednio swój klucz tajny Nostr.", + secretKeyEncDesc: "Otwórz kopię zapasową klucza chronioną hasłem.", + rawNsec: "Surowy nsec", + encryptedNip49: "Zaszyfrowany (NIP-49)", + nsecWarning: "⚠️ Używaj tego tylko na zaufanym urządzeniu. Nigdy nie udostępniaj swojego nsec.", + login: "Zaloguj się", + encSaferDesc: "Bezpieczniej: klucz pozostaje zaszyfrowany, dopóki nie wpiszesz hasła, więc kopię zapasową można bezpiecznie trzymać w chmurze lub menedżerze haseł.", + password: "Hasło", + openEncryptedKey: "Otwórz zaszyfrowany klucz", + browserExtensionTitle: "Rozszerzenie przeglądarki (NIP-07)", + browserExtensionDesc: "Najlepsze na komputer. Działa z Alby, nos2x, Flamingo.", + loginWithExtension: "Zaloguj się przez rozszerzenie" + }, + signupDialog: { + download: "Pobierz", + stepChoose: "Wybierz", + stepProfile: "Profil", + stepSaveKey: "Zapisz klucz", + somethingWrong: "Coś poszło nie tak", + createFailed: "Nie udało się utworzyć Twojego konta. Spróbuj ponownie.", + keySavedTitle: "Klucz tajny zapisany!", + keySavedDesc: "Twój klucz został bezpiecznie zapisany.", + downloadFailedTitle: "Pobieranie nie powiodło się", + downloadFailedDesc: "Nie udało się pobrać pliku z kluczem. Skopiuj go ręcznie.", + encSavedTitle: "Zaszyfrowana kopia zapasowa zapisana 🔐", + encSavedDesc: "Zachowaj plik ORAZ hasło — potrzebujesz obu, aby się ponownie zalogować.", + encFailed: "Nie udało się zaszyfrować tego klucza.", + invalidFileTitle: "Nieprawidłowy typ pliku", + invalidFileDesc: "Wybierz plik obrazu na swój avatar.", + fileTooLargeTitle: "Plik jest za duży", + fileTooLargeDesc: "Obraz avatara musi być mniejszy niż 5 MB.", + avatarUploadedTitle: "Avatar przesłany!", + avatarUploadedDesc: "Twój avatar został pomyślnie przesłany.", + uploadFailedTitle: "Przesyłanie nie powiodło się", + uploadFailedDesc: "Nie udało się przesłać avatara. Spróbuj ponownie.", + nameRequiredTitle: "Wymagana nazwa wyświetlana", + nameRequiredDesc: "Wybierz nazwę wyświetlaną, aby inni skaterzy wiedzieli, kim jesteś. Możesz ją zmienić w dowolnym momencie.", + reserveFailedTitle: "Nie udało się zarezerwować tej nazwy", + reserveFailedDesc: "{{error}} Możesz ją zarezerwować później w Ustawieniach.", + profileCreatedTitle: "Profil utworzony!", + profileCreatedDesc: "Twój profil został skonfigurowany.", + profileFailedTitle: "Konfiguracja profilu nie powiodła się", + profileFailedDesc: "Twoje konto zostało utworzone, ale konfiguracja profilu nie powiodła się. Możesz go zaktualizować później.", + welcomeToastTitle: "Witaj!", + welcomeToastDesc: "Twoje konto jest gotowe.", + titleWelcome: "Dołącz do SkateSpots", + titleProfile: "Skonfiguruj swój profil", + titleDone: "Witaj!", + createFreeAccount: "Załóż darmowe konto", + createFreeAccountDesc: "Bez e-maila, bez telefonu, bez hasła. Twoje konto to klucz Nostr — wybierz, gdzie ma mieszkać.", + recommended: "Zalecane", + signUpWithAmber: "Zarejestruj się przez Amber", + signUpWithAmberDesc: "Twój klucz jest tworzony i przechowywany w aplikacji Amber — SkateSpots nigdy go nie dotyka. Najbezpieczniej. Jedno dotknięcie, aby zatwierdzić.", + continueWithAmber: "Kontynuuj z Amber", + orQuickWay: "albo szybka droga", + quickAccount: "Szybkie konto na tym urządzeniu", + quickAccountDesc: "Generujemy klucz, który mieszka na tym urządzeniu. Najszybszy start — pomożemy Ci zaraz zapisać kopię zapasową.", + createQuickAccount: "Utwórz szybkie konto", + quickReassurance: "Zajmuje 5 sekund · mieszka na tym urządzeniu · pomożemy Ci je zaraz zapisać", + preferAnotherSigner: "Wolisz inny signer?", + iosDesktopNudge: "Na iOS lub komputerze? Aplikacja signera lub rozszerzenie przeglądarki to najbezpieczniejsza opcja —", + seeAllOptions: "Zobacz wszystkie opcje", + youreInPickName: "Jesteś w środku! 🛹 Wybierz nazwę wyświetlaną, aby skaterzy wiedzieli, kim jesteś", + changeAnytime: "Możesz ją zmienić później w dowolnym momencie. Bio i avatar są opcjonalne.", + publishingProfile: "Publikowanie Twojego profilu...", + displayName: "Nazwa wyświetlana", + displayNamePlaceholder: "np. Tony, gnarlyGrind albo nazwa Twojej ekipy", + displayNameHint: "Wymagane — tak będziesz widoczny w całym SkateSpots. Zmień w dowolnym momencie.", + skateName: "Twoja nazwa w SkateSpots", + skateNameHint: "Darmowa i opcjonalna — zweryfikowany handle, który pokazuje ✓ na Twoim profilu.", + bio: "Bio", + bioPlaceholder: "Opowiedz innym o sobie...", + avatar: "Avatar", + uploadAvatar: "Prześlij obraz avatara", + saving: "Zapisywanie...", + saveAndStart: "Zapisz i zacznij jeździć", + addNameToContinue: "Dodaj nazwę wyświetlaną, aby kontynuować.", + savingPublishesNote: "Zapis publikuje Twój profil w Nostr — Twój signer może poprosić Cię o jednorazowe zatwierdzenie.", + youreIn: "Jesteś w środku! 🛹", + oneQuickThing: "Jeszcze jedna szybka rzecz, zanim wskoczysz…", + saveLoginKey: "Zapisz swój klucz logowania", + saveLoginKeyBefore: "To jest", + only: "jedyna", + saveLoginKeyAfter: "droga powrotna do Twojego konta — bez e-maila, bez resetowania hasła. Zapisz go teraz, a będziesz mógł zalogować się na dowolnym urządzeniu, gdziekolwiek jeździsz.", + revealSaveKey: "Pokaż i zapisz mój klucz", + recoveryCopied: "Kod odzyskiwania skopiowany. Trzymaj go w bezpiecznym miejscu.", + saved: "Zapisano", + treatLikeBoardKeys: "Traktuj go jak klucze do swojej deski — każdy, kto ma ten kod, kontroluje Twoje konto. Nigdy go nie udostępniaj.", + hideEncBackup: "Ukryj zaszyfrowaną kopię zapasową", + saveEncBackup: "Zapisz zaszyfrowaną kopię zapasową", + encBackupBefore: "Kopia chroniona hasłem — bezpieczna w chmurze lub menedżerze haseł. Będziesz potrzebować pliku", + and: "i", + encBackupAfter: "hasła.", + choosePassword: "Wybierz hasło", + saveEncBackupCta: "Zapisz zaszyfrowaną kopię zapasową", + savedCodeAria: "Zapisałem swój kod odzyskiwania", + savedCodeLabel: "Zapisałem swój kod odzyskiwania w bezpiecznym miejscu — w menedżerze haseł lub offline na papierze.", + letsSkate: "Jedziemy", + saveLater: "Zapiszę go później w Ustawieniach", + advancedSigner: "Zaawansowane: użyj aplikacji signera" + }, + mnemonic: { + generatedTitle: "Fraza odzyskiwania wygenerowana! 🎉", + generatedDesc: "Zapisz te 12 słów w kolejności. To klucz do Twojego konta!", + savedTitle: "Fraza odzyskiwania zapisana!", + savedDesc: "Trzymaj ten plik w bezpiecznym miejscu.", + downloadFailedTitle: "Pobieranie nie powiodło się", + downloadFailedDesc: "Nie udało się pobrać pliku. Skopiuj go ręcznie.", + copiedTitle: "Skopiowano do schowka!", + copiedDesc: "Twoja fraza odzyskiwania została skopiowana.", + qrWindowTitle: "Kod QR frazy odzyskiwania", + qrHeading: "Twój kod QR frazy odzyskiwania", + qrAlt: "Kod QR frazy odzyskiwania", + qrWarning: "Trzymaj ten kod QR prywatnie i bezpiecznie!", + qrPrint: "Wydrukuj kod QR", + qrFailedTitle: "Kod QR nie powiódł się", + qrFailedDesc: "Nie udało się wygenerować kodu QR.", + accountCreatedTitle: "Konto utworzone! 🎉", + accountCreatedDesc: "Wszystko gotowe! Twoja fraza odzyskiwania jest bezpieczna.", + loginFailedTitle: "Logowanie nie powiodło się", + loginFailedDesc: "Nie udało się utworzyć konta. Spróbuj ponownie.", + verifyFailedTitle: "Weryfikacja nie powiodła się", + verifyFailedDesc: "Słowa się nie zgadzają. Sprawdź i spróbuj ponownie.", + titlePrefix: "Załóż konto za pomocą", + titleSuffix: "frazy odzyskiwania", + twelveWordTitle: "12-słowna fraza odzyskiwania", + twelveWordDesc: "Twoja fraza odzyskiwania jest jak hasło główne. Zapisz ją na papierze i trzymaj bezpiecznie. Będziesz jej potrzebować, aby dostać się do konta z innych urządzeń lub jeśli wyczyścisz dane przeglądarki.", + generate: "Wygeneruj frazę odzyskiwania", + useNsecInstead: "Użyj zamiast tego zaawansowanego klucza nsec", + yourPhrase: "Twoja fraza odzyskiwania", + copy: "Kopiuj", + download: "Pobierz", + qrCode: "Kod QR", + criticalWarning: "Krytyczne ostrzeżenie o bezpieczeństwie", + warnWriteStrong: "Zapisz to", + warnWrite: "na papierze i przechowuj bezpiecznie", + warnNeverShareStrong: "Nigdy nie udostępniaj", + warnNeverShare: "swojej frazy odzyskiwania nikomu", + warnBackupsStrong: "Trzymaj wiele kopii zapasowych", + warnBackups: "w różnych bezpiecznych miejscach", + warnAnyoneStrong: "Każdy, kto ma tę frazę", + warnAnyone: "kontroluje Twoje konto na zawsze", + warnLoseStrong: "Jeśli ją zgubisz", + warnLose: "trwale tracisz swoje konto", + savedSecurely: "Zapisałem ją bezpiecznie", + verifyTitle: "Zweryfikuj swoją frazę odzyskiwania", + verifyDesc: "Aby upewnić się, że zapisałeś ją poprawnie, wpisz te słowa:", + wordLabel: "Słowo nr {{n}}", + wordPlaceholder: "Wpisz słowo nr {{n}}", + goBack: "Wróć", + verifyCreate: "Zweryfikuj i utwórz konto", + completeTitle: "Konto utworzone!", + completeDesc: "Twoje konto Nostr jest gotowe!", + signerTitle: "Zalecane: skonfiguruj aplikację signera", + signerSubtitle: "Trzymaj klucze jeszcze bezpieczniej", + signerDesc: "Dla lepszego bezpieczeństwa użyj dedykowanej aplikacji signera zamiast wklejać swoją frazę odzyskiwania wszędzie. Aplikacje signera chronią klucze, pozwalając korzystać z dowolnej aplikacji Nostr.", + signerCta: "Dowiedz się o aplikacjach signera", + skip: "Na razie pomiń" + }, + signupMethod: { + titlePrefix: "Wybierz swoją", + titleSuffix: "metodę rejestracji", + subtitle: "Obie metody są bezpieczne. Wybierz tę, która najbardziej Ci odpowiada!", + recommended: "Zalecane", + mnemonicTitle: "Fraza odzyskiwania", + mnemonicDesc: "12 łatwych do zapamiętania słów. Standard branżowy używany przez Bitcoin, Ethereum i większość portfeli krypto.", + mnemonicF1: "Łatwa do zapisania na papierze", + mnemonicF2: "Działa z innymi aplikacjami Nostr (NIP-06)", + mnemonicF3: "Może generować wiele kont", + mnemonicF4: "Znana użytkownikom krypto", + useMnemonic: "Użyj frazy odzyskiwania", + advanced: "Zaawansowane", + nsecTitle: "Klucz tajny (nsec)", + nsecDesc: "Surowy klucz kryptograficzny. Bardziej techniczny, ale daje bezpośredni dostęp do Twojej tożsamości Nostr.", + nsecF1: "Bezpośrednia kontrola kryptograficzna", + nsecF2: "Zgodny ze wszystkimi aplikacjami Nostr", + nsecF3: "Pojedynczy ciąg do kopii zapasowej", + nsecF4: "Bez warstwy pochodnej", + useNsec: "Użyj klucza tajnego", + footer: "🔒 Obie metody są równie bezpieczne. Wybierz według własnych preferencji!" + }, + skateNip05: { + placeholder: "twojanazwa", + claimedSuffix: "jest Twoja — zapisz profil, aby ją opublikować.", + checking: "Sprawdzanie dostępności…", + available: "{{name}}@{{domain}} jest dostępna", + claim: "Zarezerwuj ją", + hint: "Litery, cyfry, myślniki. Darmowa, pokazywana jako odznaka ✓ na Twoim profilu." + }, + nip05Required: { + getFree: "Zdobądź darmowy / tani NIP-05", + paid: "Płatne", + requiredTitle: "Wymagana weryfikacja NIP-05", + bannerReason: "Aby zapobiegać spamowi i budować zaufanie, {{role}} potrzebuje zweryfikowanego adresu Nostr (NIP-05).", + gateReason: "Aby zapobiegać spamowi i budować zaufanie, {{role}} musi mieć weryfikację NIP-05.", + addInSettings: "Dodaj NIP-05 w Ustawieniach", + explainer: "NIP-05 potwierdza Twoją tożsamość, łącząc Twój profil Nostr z domeną — na przykład", + updateProfile: "Zaktualizuj swój profil" + }, + editProfile: { + uploadSuccessTitle: "Sukces", + uploadSuccessDesc: "{{field}} przesłano pomyślnie", + uploadErrorDesc: "Nie udało się przesłać {{field}}. Spróbuj ponownie.", + mustBeLoggedIn: "Musisz być zalogowany, aby zaktualizować swój profil", + invalidClinkTitle: "Nieprawidłowy kod CLINK", + invalidClinkDesc: "To nie wygląda na prawidłowy kod noffer1… Wyczyść go lub wklej prawidłowy.", + invalidLightningTitle: "Nieprawidłowy adres Lightning", + invalidLightningDesc: "Użyj adresu podobnego do e-maila, np. ty@walletofsatoshi.com.", + invalidSpTitle: "Nieprawidłowy adres Silent Payment", + invalidSpDesc: "Adres Silent Payment zaczyna się od „sp1” i jest dość długi. Wyczyść go lub wklej prawidłowy.", + invalidCordnTitle: "Nieprawidłowy link Cordn", + invalidCordnDesc: "Wklej pełny link kontaktowy Cordn https://…", + updateSuccessTitle: "Sukces", + updateSuccessDesc: "Twój profil został zaktualizowany", + updateErrorDesc: "Nie udało się opublikować profilu. Sprawdź połączenia z relayami w Ustawienia > Relays", + identityTitle: "Tożsamość", + identityDesc: "Jak się prezentujesz w całym SkateSpots.", + displayName: "Nazwa wyświetlana", + displayNamePlaceholder: "Twoja nazwa", + bio: "Bio", + bioPlaceholder: "Kilka słów o Tobie i Twoim jeżdżeniu…", + profilePicture: "Zdjęcie profilowe", + pictureDesc: "Prześlij lub wklej kwadratowy obraz.", + bannerImage: "Obraz banera", + bannerDesc: "Szeroki obraz na górę Twojego profilu.", + website: "Strona internetowa", + bitcoinTitle: "Bitcoin i płatności", + bitcoinDesc: "Pozwól ludziom wysyłać Ci zaps, napiwki i płatności bezpośrednio — bez pośredników.", + lightningAddress: "Adres Lightning", + lud16Invalid: "Użyj adresu podobnego do e-maila, np. ty@twojadomena.com.", + lud16Ok: "Zasila przycisk „Zap” na Twoim profilu.", + lud16Hint: "Natychmiastowe napiwki Bitcoin. Zasila przycisk „Zap” na Twoim profilu.", + silentPaymentAddress: "Adres Silent Payment", + spInvalid: "Powinien zaczynać się od „sp1” i być dość długi.", + spOk: "Prawidłowy — adres on-chain wielokrotnego użytku i prywatny.", + spHint: "Statyczny adres on-chain wielokrotnego użytku (BIP-352). Udostępnij raz; każda płatność jest niepowiązywalna.", + clinkTipCode: "Kod napiwku CLINK", + nofferInvalid: "To nie wygląda na prawidłowy kod noffer1…", + nofferOk: "Prawidłowy — na Twoim profilu pojawi się przycisk „Napiwek w Bitcoinie”.", + nofferHint: "Samodzielny kod CLINK, dzięki któremu każdy może wysłać Ci napiwek przez Nostr — bez pośredników.", + skateProfileTitle: "Profil skatera", + skateProfileDesc: "Twoi sponsorzy i sposób, w jaki ekipa się z Tobą kontaktuje.", + badges: "Odznaki", + badgesHint: "(etykieta + opcjonalny link)", + badgeExample: "np. Independent Trucks", + badgeLabelPlaceholder: "Etykieta odznaki…", + badgeUrlPlaceholder: "https://… (opcjonalnie)", + removeBadge: "Usuń odznakę", + addBadge: "Dodaj odznakę", + badgesDescBefore: "Sponsorzy, sklepy lub osoby wspierające Twoje jeżdżenie — i cokolwiek innego, czym chcesz się pochwalić. Każda staje się klikalnym chipem na Twoim profilu. Twoja", + badgesDescAfter: "odznaka członka jest dodawana automatycznie.", + coordinator: "Koordynator", + cordnInvalid: "To nie wygląda na koordynatora. Wklej nprofile, link cordn.net lub adres URL https://.", + cordnOk: "Pokazywany na Twoim profilu — inni mogą dodać go jednym dotknięciem.", + cordnHint: "Koordynator Cordn, którego inni używają, aby pisać do Ciebie. Prywatny, zaszyfrowany, Twój.", + useMyCoordinator: "Użyj mojego koordynatora", + accountTitle: "Konto", + accountDesc: "Dodatkowe ustawienia konta.", + botAccount: "Konto bota", + botAccountDesc: "Oznacz to konto jako zautomatyzowane lub bota.", + saving: "Zapisywanie…", + saveProfile: "Zapisz profil", + nip05VerifiedHandle: "Zweryfikowany handle NIP-05", + nip05How: "Jak?", + extraHandles: "Dodatkowe handle", + extraHandlesHint: "opcjonalne — dodaj do 5", + nip05HintEmpty: "Zweryfikowany handle, taki jak ty@twojadomena.com — odpowiednik niebieskiego znaczka w Nostr. Pokazuje odznakę ✓ na Twoim profilu i odblokowuje filtr „Zweryfikowani” w katalogu skaterów.", + nip05Invalid: "Użyj handle podobnego do e-maila, np. ty@twojadomena.com — bez „https://” i spacji.", + nip05Checking: "Sprawdzanie Twojej domeny…", + nip05Verified: "Zweryfikowano — Twoja domena potwierdza, że ten handle należy do Ciebie. ✓", + nip05Mismatch: "Twoja domena mapuje ten handle na INNY klucz. Popraw swój .well-known/nostr.json, aby wskazywał na to konto.", + nip05Unreachable: "Nie udało się jeszcze dotrzeć do /.well-known/nostr.json Twojej domeny. Zapisane handle nadal działają, gdy domena będzie poprawnie skonfigurowana.", + nip05Enter: "Wpisz swój handle NIP-05.", + freeHandleBefore: "Nie masz własnej domeny? Zarezerwuj darmowy handle", + freeHandleAfter: "od SkateSpots.", + uploadLabel: "Prześlij {{label}}", + previewLabel: "Podgląd {{label}}" + }, + security: { + recoveryCopied: "Kod odzyskiwania skopiowany. Przechowuj go w bezpiecznym miejscu.", + savedTitle: "Zapisano!", + recoveryDownloaded: "Kod odzyskiwania pobrany. Trzymaj go w bezpiecznym miejscu.", + downloadFailedTitle: "Pobieranie nie powiodło się", + downloadFailedDesc: "Skopiuj go ręcznie.", + loginRequired: "Wymagane logowanie", + loginRequiredDesc: "Zaloguj się, aby uzyskać dostęp do ustawień bezpieczeństwa.", + backupConfirmedTitle: "Kopia zapasowa potwierdzona! ✅", + backupConfirmedDesc: "Świetnie! Twoje klucze są bezpieczne.", + yourRecoveryCode: "Twój kod odzyskiwania", + recoveryCodeDesc: "Nie zapisałeś go przy rejestracji? Możesz go stąd odebrać w dowolnym momencie.", + recoveryCodeBefore: "Ten kod to", + only: "jedyna", + recoveryCodeAfter: "droga do ponownego zalogowania się na nowym urządzeniu lub w przeglądarce. Zapisz go w bezpiecznym miejscu (menedżer haseł lub na papierze). Każdy, kto go ma, kontroluje Twoje konto — nigdy go nie udostępniaj.", + revealRecovery: "Pokaż mój kod odzyskiwania", + qrHint: "Zeskanuj inną aplikacją Nostr, aby się zalogować. Trzymaj ten ekran prywatnie.", + neverShareHide: "⚠️ Nigdy tego nie udostępniaj. Ukryj, gdy skończysz.", + hide: "Ukryj", + amberNoteBefore: "Jesteś zalogowany przez", + amberNoteAfter: ". Twój kod odzyskiwania znajduje się w Amber — otwórz aplikację Amber, aby zrobić kopię zapasową. SkateSpots nigdy nie widzi Twojego klucza.", + bunkerNoteBefore: "Jesteś zalogowany przez", + remoteSigner: "zdalny signer (bunker)", + bunkerNoteAfter: ". Twój kod odzyskiwania jest przechowywany przez usługę signera, nie przez SkateSpots. Zrób tam kopię zapasową.", + extensionNoteBefore: "Jesteś zalogowany przez", + browserExtension: "rozszerzenie przeglądarki", + extensionNoteAfter: ". Twój kod odzyskiwania znajduje się w rozszerzeniu — użyj jego własnej opcji kopii zapasowej/eksportu. SkateSpots nigdy nie widzi Twojego klucza.", + otherNote: "Twoim kodem odzyskiwania zarządza aplikacja signera, nie SkateSpots. Zrób tam kopię zapasową.", + backupWarningTitle: "⚠️ Czy zrobiłeś kopię zapasową frazy odzyskiwania lub klucza tajnego?", + backupWarningBody: "Twoje klucze to JEDYNY sposób dostępu do konta. Jeśli je zgubisz, tracisz wszystko — nie ma resetowania hasła!", + iveBackedUp: "Zrobiłem kopię zapasową kluczy", + backupConfirmed: "✅ Kopia zapasowa potwierdzona", + backupNotConfirmed: "⚠️ Kopia zapasowa niepotwierdzona", + backupConfirmedStatusDesc: "Potwierdziłeś, że Twoje klucze są bezpiecznie zapisane.", + backupNotConfirmedDesc: "Pamiętaj, aby zrobić kopię zapasową frazy odzyskiwania lub klucza tajnego!", + notSavedYetBefore: "Nie zapisałeś jeszcze kodu odzyskiwania? Nie ma problemu — odbierz go z sekcji", + notSavedYetAfter: "powyżej, zapisz w bezpiecznym miejscu, a następnie potwierdź poniżej.", + yesBackedUp: "Tak, zrobiłem kopię zapasową kluczy", + bestPracticesTitle: "Najlepsze praktyki bezpieczeństwa kluczy", + bestPracticesDesc: "Jak chronić swoje konto Nostr", + bp1Title: "Zapisz to na papierze", + bp1Desc: "Fizyczna kopia zapasowa jest najbezpieczniejsza. Przechowuj ją w bezpiecznym miejscu, np. w sejfie.", + bp2Title: "Wiele kopii zapasowych", + bp2Desc: "Trzymaj kopie w różnych bezpiecznych miejscach (sejf w domu, skrytka bankowa itp.)", + bp3Title: "Nigdy nie udostępniaj kluczy", + bp3Desc: "Prawdziwe aplikacje Nostr NIGDY nie proszą o Twój nsec ani frazę odzyskiwania po pierwszym zalogowaniu", + bp4Title: "Nie trzymaj w chmurze bez szyfrowania", + bp4Desc: "Unikaj Google Docs, wersji roboczych e-maili czy zwykłego tekstu w chmurze", + bp5Title: "Rozważ użycie rozszerzenia przeglądarki", + bp5Desc: "Alby, nos2x lub Flamingo chronią Twoje klucze i nigdy nie ujawniają ich stronom", + importantReminders: "⚠️ Ważne przypomnienia", + rem1: "Jeśli zgubisz klucze, trwale tracisz konto", + rem2: "Żadna firma ani osoba nie może zresetować Twojego hasła — nawet my", + rem3: "Każdy, kto ma Twoje klucze, ma pełną kontrolę nad Twoim kontem", + rem4: "Twoje klucze kontrolują wszystkie Twoje dane Nostr we WSZYSTKICH aplikacjach", + recommendedSigners: "🔌 Zalecane signery Nostr", + recommendedSignersDesc: "Użyj signera Nostr dla lepszego bezpieczeństwa i wygody", + recommended: "Zalecane", + amberDesc: "Bezpieczny signer Nostr na Androida. Chroni klucze na telefonie i podpisuje wydarzenia, nie ujawniając ich.", + albyDesc: "Pełnoprawne rozszerzenie z portfelem Lightning, WebLN i obsługą NWC.", + flamingoDesc: "Prosty, przejrzysty interfejs. Skupia się na podpisywaniu Nostr bez funkcji portfela.", + nos2xDesc: "Minimalne, lekkie rozszerzenie dla zaawansowanych użytkowników.", + nostrConnectTitle: "☁️ Nostr Connect (zdalne signery)", + nostrConnectDesc: "Użyj zdalnego signera, aby uzyskać dostęp do konta z dowolnego urządzenia", + nostrConnectBody: "Nostr Connect (zwany też „bunkerami”) pozwala przechowywać klucze na bezpiecznym serwerze i logować się z dowolnego urządzenia. Twoje klucze nigdy nie opuszczają serwera, ale możesz korzystać z konta wszędzie!", + nsecAppDesc: "Darmowy, bezpieczny zdalny signer. Utwórz URI bunker:// i wklej go przy logowaniu.", + nostrumDesc: "Kolejna opcja zdalnego signera z obsługą mobilną.", + howToUse: "💡 Jak używać:", + howToUseDesc: "Załóż konto w jednej z tych usług, pobierz swój ciąg połączenia bunker://, a następnie wklej go w zakładce „Nostr Connect” podczas logowania." + }, + relayList: { + connected: "Połączono", + connecting: "Łączenie…", + offline: "Offline", + removeUrl: "Usuń {{url}}", + add: "Dodaj", + publishedTitle: "Lista relayów opublikowana", + publishedDesc: "Zsynchronizowano z Nostr (kind 10002).", + publishFailedTitle: "Nie udało się opublikować listy relayów", + invalidUrlTitle: "Nieprawidłowy URL relaya", + invalidUrlDesc: "Spróbuj czegoś takiego jak wss://relay.example.com", + alreadyInList: "Relay jest już na Twojej liście", + keepReadWriteTitle: "Zachowaj odczyt lub zapis", + keepReadWriteDesc: "Relay potrzebuje co najmniej jednego z: odczyt/zapis.", + alreadyInThisList: "Relay jest już na tej liście", + dmPublishedTitle: "Relaye DM opublikowane", + dmPublishedDesc: "Skrzynka NIP-17 zaktualizowana.", + dmPublishFailedTitle: "Nie udało się opublikować relayów DM", + nip65Title: "Relaye (NIP-65)", + nip65DescUser: "Dotknij Odczyt / Zapis, aby przełączyć. Publikowane w Nostr jako Twoja lista kind 10002.", + nip65DescLoggedOut: "Dotknij Odczyt / Zapis, aby przełączyć. Zaloguj się, aby opublikować listę w Nostr.", + noRelays: "Brak relayów — dodaj jeden poniżej.", + local: "Lokalny", + read: "Odczyt", + readHint: "Pobieraj treści z tego relaya", + write: "Zapis", + writeHint: "Publikuj swoje wydarzenia na tym relayu", + dmTitle: "Relaye skrzynki DM", + dmDesc: "Gdzie odbierasz bezpośrednie wiadomości NIP-17 (kind 10050). Gdy puste, używa Twoich relayów zapisu.", + localTitle: "Relaye lokalne", + localDesc: "Tylko w aplikacji (np. węzeł LAN). Używane do odczytu i zapisu; nigdy niepublikowane.", + blockedTitle: "Zablokowane relaye", + blockedDesc: "Nigdy się z nimi nie łącz — wykluczone z każdego odczytu i zapisu." + }, + relatr: { + searchingTitle: "Szukam usługi Relatr...", + searchingDesc: "Odpytywanie Nostr o profile Relatr", + foundTitle: "Znaleziono usługę Relatr!", + foundDesc: "Usługa: {{name}}", + unknown: "Nieznana", + notFoundTitle: "Nie znaleziono usługi Relatr", + notFoundDesc: "Spróbuj wpisać pubkey ręcznie lub sprawdź https://www.relatr.xyz/", + searchFailedTitle: "Wyszukiwanie nie powiodło się", + searchFailedDesc: "Nie udało się odpytać Nostr o profile Relatr", + invalidPubkeyTitle: "Nieprawidłowy pubkey", + invalidPubkeyDesc: "Wpisz prawidłowy 64-znakowy pubkey hex", + enabledTitle: "Relatr włączony!", + enabledDesc: "Globalne oceny zaufania są teraz aktywne.", + disabledTitle: "Relatr wyłączony", + disabledDesc: "Oceny zaufania nie są już pobierane.", + title: "Oceny zaufania Relatr", + desc: "Globalne oceny zaufania pomagają identyfikować godnych zaufania użytkowników i ograniczać spam", + status: "Status", + active: "Aktywny", + disabled: "Wyłączony", + activeStrong: "Relatr jest aktywny.", + activeDesc: "Oceny zaufania z globalnej analizy sieci ContextVM pomagają identyfikować godnych zaufania skaterów i ograniczać spam.", + disabledStrong: "Relatr jest wyłączony.", + disabledHint: "Włącz go, aby otrzymywać oceny zaufania z globalnej sieci Nostr.", + disable: "Wyłącz Relatr", + enable: "Włącz Relatr", + advancedSettings: "Ustawienia zaawansowane", + servicePubkey: "Pubkey usługi Relatr", + pubkeyPlaceholder: "Wpisz 64-znakowy pubkey hex...", + searching: "Szukam...", + autoDiscover: "Automatyczne wykrywanie", + pubkeyDefault: "Domyślnie: oficjalna usługa Relatr ContextVM (npub1dvmc...)", + relayLabel: "Relay (gdzie Relatr publikuje oceny)", + relayDefault: "Domyślnie: wss://relay.contextvm.org (oficjalny relay ContextVM)", + applyChanges: "Zastosuj zmiany", + learnMore: "Dowiedz się więcej:", + website: "Strona Relatr", + github: "GitHub Relatr", + nip85Spec: "Specyfikacja NIP-85" + }, + followList: { + unfollow: "Przestań obserwować", + title: "Twoja sieć Nostr", + desc: "Zarządzaj tym, kogo obserwujesz. Obserwowanie użytkowników pomaga budować Twoją sieć zaufania i decyduje, które spoty pokazują odznaki zaufania.", + following: "Obserwowani ({{count}})", + followers: "Obserwujący ({{count}})", + follow: "Obserwuj", + followHint: "💡 Wklej pubkey Nostr (npub1...), adres NIP-05 (user@domain.com) lub pubkey hex", + notFollowing: "Nikogo jeszcze nie obserwujesz", + notFollowingHint: "Obserwuj skaterów, aby widzieć ich spoty z odznakami ✅ ZWERYFIKOWANE", + trustActiveStrong: "✅ Odznaki zaufania aktywne:", + trustActive: "Spoty tworzone przez osoby, które obserwujesz, będą teraz pokazywać odznaki ZWERYFIKOWANE. Spoty ich znajomych będą pokazywać odznaki ZAUFANE.", + noFollowers: "Brak obserwujących", + noFollowersHint: "Udostępnij swój profil Nostr, aby zdobyć obserwujących!", + howTitle: "💡 Jak obserwowanie wpływa na odznaki zaufania", + verifiedStrong: "✅ ZWERYFIKOWANE (zielone):", + verifiedDesc: "Spoty tworzone przez osoby, które bezpośrednio obserwujesz", + trustedStrong: "🟡 ZAUFANE (żółte):", + trustedDesc: "Spoty tworzone przez osoby, które obserwują Twoi znajomi (2 kroki)", + unverifiedStrong: "⚪ Niezweryfikowane:", + unverifiedDesc: "Spoty użytkowników bez powiązania z Twoją siecią", + tip: "💡 Wskazówka: Obserwuj aktywnych skaterów, aby widzieć więcej zweryfikowanych spotów i budować swoją sieć zaufania!" + }, + notify: { + enableTitle: "Włącz powiadomienia", + enableDesc: "Powiadom to urządzenie, gdy coś Cię dotyczy.", + checkingPermission: "Sprawdzanie uprawnień…", + unsupported: "To urządzenie nie obsługuje tutaj powiadomień. Przebuduj aplikację na Androida, aby włączyć je na telefonie.", + denied: "Powiadomienia są zablokowane dla tej strony. Zezwól na nie w ustawieniach przeglądarki/systemu i spróbuj ponownie.", + backgroundTitle: "Powiadomienia w tle", + backgroundDesc: "Otrzymuj powiadomienia o wiadomościach i transakcjach, nawet gdy SkateSpots jest zamknięty.", + pushUnsupported: "Ta przeglądarka nie obsługuje push w tle. Na telefonie dodaj SkateSpots do ekranu głównego.", + pushPrivacy: "Aby dotrzeć do Ciebie, gdy aplikacja jest zamknięta, serwer powiadomień SkateSpots otrzymuje sygnał z Twojego relaya, gdy coś przychodzi na Twój klucz, i przekazuje go do usługi push Twojego telefonu. Widzi tylko, że Twój klucz ma coś — nigdy kto to wysłał ani co mówi, i nie może odszyfrować Twoich wiadomości. Włącz to dla każdego urządzenia osobno.", + bgDeliveryTitle: "Dostarczanie w tle (Android)", + bgDeliveryDesc: "Sprawdzaj nowe wiadomości, oferty i transakcje, gdy aplikacja jest zamknięta — bez usług Google.", + off: "Wyłączone", + standard: "Standardowe (~15 min)", + fast: "Szybkie (~5 min)", + bgDeliveryNote: "Standardowe działa w miarę możliwości — Android może je odroczyć w trybie Doze. Szybkie pokazuje stałe powiadomienie i zużywa więcej baterii. Nic nie jest odszyfrowywane na naszym serwerze.", + notifyMeAbout: "Powiadom mnie o", + couldNotEnable: "Nie udało się włączyć", + sendTest: "Wyślij testowe powiadomienie", + testTitle: "Powiadomienia SkateSpots są włączone 🛹", + testBody: "Tak będzie wyglądać DM, zap lub zaproszenie do ekipy.", + footerBefore: "Alerty są tworzone na Twoim urządzeniu na podstawie danych, które aplikacja już ma, a alerty o wiadomościach bezpośrednich nigdy nie odszyfrowują wiadomości — więc Amber nigdy nie jest proszony o ich otwarcie. Gdy", + footerAfter: "jest wyłączone, całkowicie zamknięta aplikacja jest nieosiągalna, więc alerty dotrą przy następnym otwarciu SkateSpots.", + cat_dms_label: "Wiadomości bezpośrednie", + cat_dms_hint: "Ktoś wysyła Ci prywatną wiadomość", + cat_crew_label: "Ekipy", + cat_crew_hint: "Zaproszenia, prośby o dołączenie i potwierdzenia członkostwa", + cat_social_label: "Zapsy, odpowiedzi i wzmianki", + cat_social_hint: "Reakcje, reposty, zapsy, odpowiedzi i aktualizacje wydarzeń", + cat_newsletter_label: "Newsletter", + cat_newsletter_hint: "Nowości SkateSpots (tylko dla subskrybentów)", + cat_trades_label: "Oferty i transakcje", + cat_trades_hint: "Oferty, kontroferty i potwierdzenia transakcji", + cat_reminders_label: "Przypomnienia o wydarzeniach", + cat_reminders_hint: "Przypomnienie godzinę przed wydarzeniami, na które się wybierasz (aplikacja Android)" + }, + regionBackfill: { + taggedTitle: "Oznaczono {{count}} spot{{s}}", + taggedSkipped: "{{count}} pominięto (brak współrzędnych lub brak dopasowania geokodera).", + taggedOk: "Tagi regionu zapisane na relayu społeczności.", + nothingTitle: "Nie ma czego oznaczać", + nothingDesc: "Nie udało się zgeokodować żadnych pinezek. Spróbuj ponownie później.", + failedTitle: "Uzupełnianie nie powiodło się", + title: "Uzupełnij tagi regionu", + admin: "Admin", + descBefore: "Pinezki utworzone przed wprowadzeniem geokodowania mają współrzędne, ale nie mają tagu miasta/kraju, więc mapa je rysuje, a Statystyki społeczności mogą powiedzieć tylko „Nieskategoryzowane”. To ponownie wyprowadza tagi z każdej pinezki i publikuje na nowo", + descStrong: "Twoje własne", + descAfter: "nieoznaczone spoty i sklepy.", + scanning: "Skanowanie Twoich spotów…", + allTagged: "Każdy spot i sklep, który posiadasz, ma już tag regionu. 🎉 Pozostałe „Nieskategoryzowane” pinezki należą do innych mapujących — tylko ich własne klucze mogą je oznaczyć.", + countLine: "{{count}} z Twoich spot{{s}}/sklepów nie ma tagu regionu. Twój signer może poprosić o zatwierdzenie każdego z osobna.", + tagging: "Oznaczanie {{done}}/{{total}}…", + run: "Uzupełnij tagi regionu", + summary: "{{updated}} zaktualizowano · {{skipped}} pominięto · {{failed}} niepowodzeń" + }, + adminReview: { + title: "Kolejka przeglądu", + flagged: "{{count}} spot{{s}} wyzwala sygnały junk — ukryj lub odrzuć.", + clean: "Spoty, które wyglądają na wpisy testowe lub pinezki nie na temat." + }, + grantPro: { + invalidNpub: "Wpisz prawidłowy npub (lub pubkey hex)", + invalidDays: "Liczba dni musi być liczbą dodatnią", + grantedTitle: "Pro przyznane ⚡", + grantedDesc: "{{npub}} do {{date}}", + failedTitle: "Przyznawanie nie powiodło się", + title: "Przyznaj Sasquatch Pro", + owner: "Właściciel", + desc: "Ręczne obejście dla zweryfikowanej płatności, którą przegapił paragon zapsa. Publikuje przyznanie podpisane przez właściciela; użytkownik nie może go podrobić.", + targetPlaceholder: "npub1… (lub hex)", + grant: "Przyznaj" + }, + myData: { + reactionTitle: "Reakcja {{emoji}}", + deleting: "Usuwanie...", + requestDeletion: "Poproś o usunięcie", + selectContentTitle: "Wybierz treści do usunięcia", + selectContentDesc: "Wybierz konkretne elementy, dla których chcesz poprosić o usunięcie.", + all: "Wszystko", + spots: "Spoty", + events: "Wydarzenia", + shops: "Sklepy", + listings: "Ogłoszenia", + collections: "Kolekcje", + lab: "The Lab", + posts: "Posty", + reactions: "Reakcje", + selectAll: "Zaznacz wszystko", + selectAllVisible: "Zaznacz wszystkie widoczne", + selectedCount: "Zaznaczono {{count}}", + noItemsCategory: "Brak elementów w tej kategorii", + decentralizedStrong: "Ważne:", + decentralizedNote: "Nostr jest zdecentralizowany. Relaye powinny honorować prośby o usunięcie, ale niektóre mogą tego nie robić. To nie jest gwarantowane trwałe usunięcie.", + deleteCount: "Usuń {{count}} element{{s}}", + noDataTitle: "Brak danych do eksportu", + noDataDesc: "Nie opublikowałeś jeszcze żadnych wydarzeń.", + exportedTitle: "Dane wyeksportowane!", + exportedDesc: "Pobrano {{count}} wydarzeń jako JSON.", + deletionRequestedTitle: "Poproszono o usunięcie", + deletionRequestedDesc: "Prośba o usunięcie została opublikowana na relayach.", + deletionRequestedMany: "Poproszono o usunięcie {{count}} elementów. Uwaga: niektóre relaye mogą nie honorować tej prośby.", + deletionFailedTitle: "Usuwanie nie powiodło się", + deletionFailedDesc: "Nie udało się opublikować prośby o usunięcie. Spróbuj ponownie.", + loginRequired: "Wymagane logowanie", + loginRequiredDesc: "Zaloguj się, aby przeglądać swoje dane i zarządzać nimi.", + title: "Moje dane", + desc: "Twoje treści w sieci Nostr. Dane należą do Ciebie — eksportuj je w dowolnym momencie lub poproś o usunięcie.", + coachFilmer: "Trener/Filmer", + zaps: "Zapsy", + received: "Otrzymane", + exportAll: "Eksportuj wszystkie dane", + recentActivity: "Ostatnia aktywność", + viewAll: "Zobacz wszystkie ({{count}})", + noDataPublished: "Nie opublikowano jeszcze żadnych danych", + startBy: "Zacznij od", + addingASpot: "dodania spotu", + aboutYourData: "O Twoich danych", + ownDataStrong: "Posiadasz swoje dane.", + ownData: "Wszystkie treści są podpisane Twoimi kluczami kryptograficznymi i przechowywane na relayach Nostr. Żadna firma ich nie kontroluje.", + exportAnytimeStrong: "Eksportuj w dowolnym momencie", + exportAnytime: "- Pobierz wszystkie swoje wydarzenia jako JSON", + portableStrong: "Przenośne", + portable: "- Używaj swoich kluczy w dowolnej aplikacji Nostr", + selectiveStrong: "Selektywne usuwanie", + selective: "- Wybierz dokładnie, co usunąć", + caveatStrong: "Zastrzeżenie o decentralizacji", + caveat: "- Niektóre relaye mogą zachować dane mimo próśb o usunięcie" + }, + settingsPage: { + seoTitle: "Ustawienia — SkateSpots", + seoDescription: "Zarządzaj ustawieniami swojego konta SkateSpots.", + heading: "USTAWIENIA", + subtitle: "Preferencje konta i aplikacji", + editProfile: "Edytuj profil", + profileRefreshed: "Profil odświeżony!", + found: "Znaleziono: {{name}}", + unnamed: "bez nazwy", + profileNotFound: "Nie znaleziono profilu", + notFoundOnRelay: "Nie znaleziono na żadnym relayu.", + refreshFailed: "Odświeżanie nie powiodło się", + refreshFailedDesc: "Nie udało się połączyć z relayami.", + loginToEdit: "Zaloguj się, aby edytować swój profil", + noProfileRelays: "Nie udało się znaleźć profilu na relayach. Jeśli ustawiłeś go wcześniej, spróbuj odświeżyć.", + checkDisplayName: "nazwę wyświetlaną", + checkPhoto: "zdjęcie profilowe", + checkBio: "krótkie bio", + checkLightning: "adres Lightning, aby ludzie mogli wysyłać Ci zapsy", + checkHandle: "darmowy handle @skate-spots.org", + finishProfile: "Dokończ swój profil", + addItem: "Dodaj {{item}}", + nip05Title: "Weryfikacja NIP-05", + nip05Desc: "Zdobądź zweryfikowany adres Nostr (np. imie@domena.com), aby budować zaufanie. Wymagany do tworzenia wydarzeń, profili trenerskich i sklepów.", + freeFromSkateSpots: "Darmowy od SkateSpots", + claimHandleBefore: "Zarezerwuj handle taki jak", + claimHandleAfter: "— bez rejestracji, bez kosztów, bez własnej domeny. Zarezerwuj go w zakładce Profil, a następnie zapisz.", + claimInProfile: "Zarezerwuj w Profilu", + nip05Footer: "Po uzyskaniu NIP-05 dodaj go w polu Profil i zapisz.", + localRelayOn: "Relay lokalny włączony", + localRelayOff: "Relay lokalny wyłączony", + lookingForCitrine: "Szukam Citrine na tym urządzeniu…", + noLongerUsing: "Nie używasz już relaya na urządzeniu.", + localRelay: "Relay lokalny", + citrineOff: "Szybsze odczyty i kopia offline na tym urządzeniu", + citrineSearching: "Szukam Citrine na tym urządzeniu…", + citrineLive: "Połączono — odczyt i kopia lokalna", + citrineWaiting: "Włączono — uruchom Citrine, aby się połączyć", + toggleCitrine: "Przełącz lokalny relay Citrine", + citrineDetected: "Wykryto relay Citrine", + citrineLooking: "Szukam Citrine…", + citrineNotDetected: "Nie wykryto Citrine", + recheckCitrine: "Sprawdź ponownie relay Citrine", + checking: "Sprawdzanie", + recheck: "Sprawdź ponownie", + chipInstantReads: "Natychmiastowe odczyty", + chipWorksOffline: "Działa offline", + chipOnDeviceBackup: "Kopia na urządzeniu", + cantReachStrong: "Nie można połączyć się z Citrine.", + cantReachBefore: "Upewnij się, że darmowa aplikacja Citrine jest zainstalowana, a jej relay jest", + started: "uruchomiony", + cantReachAfter: ", a następnie dotknij Sprawdź ponownie. Uruchamia prywatny relay Nostr na Twoim telefonie dla natychmiastowych odczytów i kopii offline.", + citrineStep1Before: "Otwórz Citrine → dotknij", + start: "Start", + citrineStep2Before: "Wróć tutaj → dotknij", + getCitrine: "Pobierz Citrine", + citrinePrivacy: "Twój Stash i wiadomości pozostają tu kompleksowo szyfrowane, dokładnie jak wszędzie indziej. Lokalny relay tylko przyspiesza działanie i trzyma kopię na urządzeniu — nigdy nie zastępuje szyfrowania.", + communityRelayDisabled: "Relay społeczności wyłączony", + communityRelayEnabled: "Relay społeczności włączony", + usingOnlyPersonal: "Używasz tylko swoich skonfigurowanych relayów.", + skateRelayIncluded: "Relay SkateSpots włączony.", + relays: "Relaye", + relayPrivacyBefore: "Relaye mogą zobaczyć Twój", + ipAddress: "adres IP", + relayPrivacyAfter: "gdy się łączysz. Tor go ukrywa — a „darmowy” VPN traktuj jako sygnał ostrzegawczy; zwykle zarabiają na Twoim ruchu.", + communityRelay: "Relay społeczności", + syncingGlobal: "Synchronizacja z globalną społecznością skate", + usingOnlyPersonalShort: "Używasz tylko osobistych relayów", + appearance: "Wygląd", + language: "Język", + darkModeOnly: "Tylko tryb ciemny", + darkModeDesc: "SkateSpots działa w ciemnej, neonowej estetyce inspirowanej kulturą skate. Czarne tło, neonowy róż, limonka i pomarańcz.", + navigation: "Nawigacja", + sasquatchExpanded: "Sasquatch został rozwinięty! 🦧 Odśwież stronę, aby go zobaczyć.", + advanced: "Zaawansowane", + sasquatchGuide: "🦧 Przewodnik Sasquatcha", + sasquatchResetDesc: "Zresetuj przewodnik powitalny do widoku rozwiniętego", + expandSasquatch: "Rozwiń The Sasquatch", + wallet: "Portfel", + loginToWallet: "Zaloguj się, aby zarządzać portfelem", + openWallet: "Otwórz portfel", + balanceSendReceive: "Saldo, wyślij, odbierz", + connectNwc: "Połącz portfel NWC", + account: "Konto", + security: "Bezpieczeństwo", + securitySub: "Klucze, podpisywanie, Amber", + nip05Sub: "Zdobądź zweryfikowany adres Nostr", + app: "Aplikacja", + myStash: "My Stash", + myStashSub: "Prywatny inwentarz sprzętu", + relaysSub: "Połączenia z relayami Nostr", + appearanceSub: "Język i motyw", + assistant: "Asystent", + showSasquatch: "Pokaż asystenta Sasquatch", + showSasquatchDesc: "Pokaż pływający przycisk Sasquatcha na mapie i innych ekranach.", + showMapFooter: "Pokaż pasek linków mapy", + showMapFooterDesc: "Pokaż cienki pasek linków na dole mapy.", + notifications: "Powiadomienia", + notificationsSub: "Alerty o DM, ekipach i zapsach", + coordinator: "Koordynator", + coordinatorSub: "Twój serwer grupowy Cordn", + data: "Dane", + myData: "Moje dane", + myDataSub: "Eksportuj, importuj, zarządzaj", + advancedSub: "Relatr, Sasquatch, narzędzia", + notLoaded: "Nie wczytano", + notLoggedIn: "Nie zalogowano" + }, + onboarding: { + seoTitle: "Zacznij — SkateSpots", + seoDescription: "Dołącz do zdecentralizowanej społeczności skateboardingu. Znajdź spoty, połącz się z trenerami, wysyłaj zapsy. Darmowe na zawsze.", + homeSetTitle: "Dom ustawiony 🛹", + homeSetDesc: "Mapa będzie się teraz otwierać na Twoim obszarze.", + locationFailedTitle: "Nie udało się pobrać Twojej lokalizacji", + locationFailedDesc: "Sprawdź uprawnienia do lokalizacji lub wybierz swój obszar na mapie.", + niceTitle: "🎉 Świetnie!", + niceDesc: "Rozumiesz już, jak działa Nostr. Jedziemy!", + npubCopied: "npub skopiowany do schowka.", + saveLoginNow: "Zapisz swój login — zrób to teraz", + saveLoginNowDesc: "Twój kod odzyskiwania to jedyna droga powrotna do konta. Bez e-maila, bez resetowania hasła.", + betaBadge: "Beta — otwarte dla skaterów na całym świecie", + headline1: "JEŹDŹ", + headline2: "W SWOIM ŚWIECIE", + heroBefore: "To", + decentralized: "zdecentralizowana", + heroAfter: "społeczność skate. Żadna firma jej nie posiada. Żaden algorytm nie zakopuje Twoich spotów. Żaden ban. Tylko skaterzy.", + pillMap: "Mapa spotów", + pillCoaches: "Trenerzy i filmerzy", + pillEvents: "Wydarzenia", + pillGear: "Kup/sprzedaj sprzęt", + pillZaps: "Zapsy Bitcoin", + pillStash: "Stash sprzętu", + pillCrews: "Ekipy", + createFreeAccount: "Załóż darmowe konto", + noEmailNoPassword: "Bez e-maila. Bez hasła. Twoja tożsamość na zawsze należy do Ciebie.", + findSpots: "Znajdź spoty w pobliżu", + addFirstSpot: "Dodaj swój pierwszy spot", + accountCreated: "Jesteś w środku! Konto utworzone ✓", + identityYours: "Twoja tożsamość należy do Ciebie — przechowywana w Twoim kluczu, nie na naszych serwerach.", + whereSkate: "Gdzie jeździsz?", + whereSkateDesc: "Ustaw swój domowy obszar raz, a mapa będzie się otwierać na Twoich spotach za każdym razem. Twój GPS nigdy nie opuszcza urządzenia.", + useMyLocation: "Użyj mojej lokalizacji", + pickOnMap: "Wybierz na mapie", + loginSaved: "Login zapisany — Twoje konto można bezpiecznie odzyskać.", + whyBother: "Po co się tym przejmować?", + why1Title: "Każdy spot, jedna mapa", + why1Body: "Krawężniki, poręcze, DIY, parki — mapowane przez skaterów, którzy naprawdę na nich jeżdżą. Sprawdź status, zanim ruszysz, żeby nie zmarnować sesji na wyproszeniu.", + why2Title: "Tworzone przez skaterów, nie garnitury", + why2Body: "Bez reklam, bez algorytmu wpychającego śmieci w Twarz, bez zbierania danych. Open source. Mapa należy do społeczności — w tym do Ciebie.", + why3Title: "Zarabiaj za jeżdżenie", + why3Body: "Zamapuj perełkę, nagraj kocura, poprowadź sesję — i zgarniaj prawdziwego Bitcoina zapsem prosto do portfela. Bez prowizji platformy, bez pośredników.", + why4Title: "Twoje konto naprawdę należy do Ciebie", + why4Body: "Jeden klucz loguje Cię do każdej aplikacji Nostr. Żadna firma nie może Cię zablokować ani usunąć konta według kaprysu. Zabierz swoją tożsamość wszędzie.", + everythingFree: "Wszystko, co możesz robić — za darmo", + featSpots: "Odkrywaj spoty", + featSpotsDesc: "Interaktywna mapa z tysiącami spotów na całym świecie", + featLab: "The Lab", + featLabDesc: "Znajdź trenerów, filmerów i montażystów wideo w pobliżu", + featEvents: "Wydarzenia", + featEventsDesc: "Zawody, sesje, spotkania", + featGear: "Kup / sprzedaj sprzęt", + featGearDesc: "Marketplace peer-to-peer na używany sprzęt skate", + featStash: "My Stash", + featStashDesc: "Prywatny, zaszyfrowany inwentarz wszystkiego, co posiadasz", + featCrews: "Ekipy", + featCrewsDesc: "Jeźdź ze swoją ekipą — wspólne spoty, czat i sesje", + whatIsNostr: "Czym jest Nostr?", + whatIsNostrSub: "Protokół, który napędza SkateSpots", + nostrBefore: "Nostr to otwarty protokół — jak e-mail, ale dla aplikacji społecznościowych. Twoje konto to", + cryptoKeyPair: "para kluczy kryptograficznych", + nostrAfter: "która należy do Ciebie. Żadna pojedyncza firma nie kontroluje Twojego konta ani danych — Ty wybierasz, które relaye je przechowują, i możesz nawet uruchomić własny. Twoja tożsamość działa w każdej aplikacji Nostr.", + nostrPoint1: "Posiadasz swoje dane i klucze", + nostrPoint2: "Żadna firma nie może Cię zbanować", + nostrPoint3: "Tożsamość działa wszędzie", + nostrPoint4: "Bezpośrednie napiwki Bitcoin", + deepDive: "Głębiej: jak działa Nostr", + privacyTip: "Wskazówka o prywatności: Twój GPS nigdy nie opuszcza urządzenia. Serwery, z którymi się łączysz (np. kafle mapy), nadal mogą widzieć Twoje IP — jeśli chcesz ukryć i to, VPN lub Tor działa. Całkowicie opcjonalne.", + readPrivacy: "Przeczytaj naszą stronę o prywatności", + zapsWallet: "⚡ Zapsy i portfel", + optional: "Opcjonalne", + walletDesc: "Zapsy to napiwki Bitcoin, które wysyłasz bezpośrednio skaterowi, który dodał zajebisty spot, nagrał kocura lub poprowadził świetną sesję. Bez opłat platformy. Bez pośredników. 100% trafia do niego.", + builtInWallet: "Wbudowany portfel Cashu", + builtInWalletDesc: "Otrzymuj płatności Lightning prosto w aplikacji. Bez konfiguracji.", + balance: "Saldo", + connectExternal: "Połącz zewnętrzny portfel", + connectExternalDesc: "Masz Alby, Mutiny lub inny portfel? Połącz go przez NWC.", + connectViaNwc: "Połącz przez NWC", + loginToConnect: "Zaloguj się, aby połączyć własny portfel.", + fiveDollars: "💡 5 $ w Bitcoinie = setki zapsów do rozdania w społeczności", + commonQuestions: "Częste pytania", + faq1Q: "Czy SkateSpots jest darmowy?", + faq1A: "W 100% darmowy. Przeglądaj spoty, dodawaj lokalizacje, znajdź trenerów, twórz wydarzenia, dołączaj do sesji — wszystko darmowe, na zawsze. Bitcoin (zapsy) jest opcjonalny, jeśli chcesz dawać napiwki twórcom.", + faq2Q: "Czym jest Nostr i dlaczego SkateSpots go używa?", + faq2Before: "Nostr to otwarty protokół dla zdecentralizowanych aplikacji — pomyśl o nim jak o samym internecie, nieposiadanym przez żadną firmę. Twoje konto SkateSpots to para kluczy kryptograficznych, którą", + faq2Strong: "posiadasz", + faq2After: ". Żadna pojedyncza firma nie może zbanować Twojego konta ani przetrzymywać Twoich danych jako zakładnika — Ty wybierasz, które relaye przechowują Twoje dane, i możesz nawet uruchomić własne. Twoja tożsamość działa też w innych aplikacjach Nostr, takich jak Primal, Damus czy Amethyst.", + faq3Q: "Czym jest nsec i dlaczego jest ważny?", + faq3Before: "Twój", + faq3Mid: "to Twój klucz prywatny — jedyny dowód, że posiadasz swoje konto. W przeciwieństwie do haseł istnieje", + faq3Strong: "brak „nie pamiętam hasła”", + faq3After: ". Jeśli zgubisz swój nsec, Twoje konto przepadnie na zawsze. Gdy tworzysz konto, od razu pobierz kopię zapasową i przechowuj ją w bezpiecznym miejscu (menedżer haseł, zapisana offline).", + faq4Q: "Które signery / aplikacje działają ze SkateSpots?", + faq4Desktop: "Na komputerze:", + faq4Extensions: "rozszerzenia przeglądarki.", + faq4Android: "Na Androidzie:", + faq4AndroidAfter: "(najlepsze doświadczenie z aplikacją natywną).", + faq4Ios: "Na iOS:", + faq4IosAfter: "lub wklej swój nsec bezpośrednio (mniej bezpieczne).", + faq4Note: "Możesz też zalogować się, wklejając swój nsec bezpośrednio — ale użycie rozszerzenia signera jest bezpieczniejsze.", + faq5Q: "Czy mogę używać SkateSpots na telefonie?", + faq5Before: "Tak! SkateSpots to PWA (Progressive Web App). Odwiedź", + faq5Mid: "w przeglądarce telefonu i dotknij", + faq5Em: "„Dodaj do ekranu głównego”", + faq5After: "aby uzyskać pełne doświadczenie aplikacji. Możesz też pobrać ją z", + faq5End: "— zdecentralizowanego sklepu z aplikacjami.", + faq6Q: "Czym jest zap?", + faq6A: "Zap to natychmiastowy napiwek Bitcoin wysyłany przez Lightning Network. Gdy wysyłasz zaps skaterowi, sats trafiają do jego portfela w kilka sekund — bez PayPal, bez Venmo, bez prowizji. Osoba, która nagrała ten set, dostaje zapłatę bezpośrednio od fanów.", + faq7Q: "Czy moje spoty zostaną usunięte, jeśli SkateSpots zostanie zamknięty?", + faq7A: "Nie. Twoje spoty są publikowane na relayach Nostr — rozproszonych serwerach, które każdy może prowadzić. Nawet jeśli SkateSpots jako produkt zniknąłby jutro, Twoje dane nadal istniałyby na relayach i każdy klient Nostr mógłby je wyświetlić.", + faq8Q: "Czy mogę dodać spot na prywatnym terenie?", + faq8A: "Możesz, ale kieruj się zdrowym rozsądkiem. Spoty na prywatnym terenie powinny być odpowiednio oznaczone, żeby skaterzy wiedzieli, na czym stoją. SkateSpots nie odpowiada za wtargnięcie — zawsze szanuj właścicieli i miejscowych.", + faq9Q: "Jak zgłosić błąd lub przekazać opinię?", + faq9Before: "Napisz bezpośrednio do zespołu SkateSpots na Nostr lub skontaktuj się z naszym koordynatorem bety:", + faq9Link: "Opinie o becie → cordn.net", + readyToShred: "GOTOWY DO SHREDOWANIA?", + stopScrolling: "Przestań przewijać. Weź aplikację. Znajdź spot. Pojeźdź.", + exploreSpots: "Przeglądaj spoty", + betaFeedbackTitle: "Beta — chcemy Twojej opinii", + betaFeedbackDesc: "SkateSpots jest w aktywnym rozwoju. Możesz natrafić na niedoróbki — to nasza wina, nie Twoja. Zgłaszaj błędy, proponuj funkcje, mów nam, co jest do bani.", + betaCoordinator: "Koordynator bety", + betaCoordinatorDesc: "cordn.net → napisz do nas", + dmOnNostr: "DM na Nostr", + fixSameDay: "Znalazłeś błąd? Naprawiamy go tego samego dnia. Twoje zgłoszenia czynią aplikację lepszą dla każdego skatera.", + relaySetup: "Konfiguracja relayów" + }, + relayEdu: { + understandingNostr: "Zrozumieć Nostr", + stepOf: "Krok {{current}} z {{total}}", + step1Title: "Zrozumieć relaye", + step1Desc: "Wyobraź sobie relaye jako sklepy skate'owe, które dzielą się wieściami o spotach", + you: "Ty", + relays: "Relaye", + skaters: "Skaterzy", + s1Good1: "Żadna firma nie jest właścicielem Twojego konta", + s1Good1Desc: "Twoja tożsamość mieszka na wielu serwerach relay", + s1Good2: "Kontrolujesz, gdzie mieszkają Twoje dane", + s1Good2Desc: "Twoje posty synchronizują się między wybranymi relayami — wybierz własne lub uruchom własny", + s1Warn: "Operatorzy relayów widzą publiczne posty", + s1WarnDesc: "Pomyśl o tym jak o publikowaniu na tablicy ogłoszeń", + step2Title: "Publiczne vs prywatne", + step2Desc: "Wiedz, co jest widoczne, a co zaszyfrowane", + publicTitle: "Publiczne (każdy może zobaczyć)", + pub1: "Spoty, które dodajesz do mapy", + pub2: "Opinie i komentarze", + pub3: "Informacje z Twojego profilu (imię, zdjęcie)", + pub4: "Kogo obserwujesz", + privateTitle: "Prywatne (zaszyfrowane)", + priv1: "Wiadomości bezpośrednie", + priv2: "Komunikacja z portfelem", + noteStrong: "Uwaga:", + note: "Posty mogą być przechowywane na relayach na stałe. Pomyśl, zanim coś opublikujesz — tak jak w prawdziwym życiu!", + step3Title: "Twoje klucze = Twoje konto", + step3Desc: "To najważniejsza rzecz do zrozumienia", + secretKeyTitle: "Twój klucz tajny (nsec)", + secretKeyDesc: "Pomyśl o nim jak o swojej desce — nigdy nikomu jej nie pożyczaj. Potwierdza, że posiadasz swoje konto.", + s3Bad1: "Jeśli go zgubisz, konta nie da się odzyskać", + s3Bad2: "Bez „nie pamiętam hasła” — nikt nie może go zresetować", + s3Good: "Zrób kopię zapasową i przechowuj go bezpiecznie", + publicKeyTitle: "Twój klucz publiczny (npub)", + publicKeyDesc: "To jak Twoja nazwa użytkownika — udostępniaj go swobodnie, aby inni mogli Cię znaleźć!", + inControl: "🔐 Masz kontrolę — żadna firma nie może Cię zablokować!", + skip: "Pomiń", + gotIt: "Rozumiem!" + }, + about: { + seoTitle: "O nas — SkateSpots", + seoDescription: "Dowiedz się o SkateSpots i naszej misji budowania zdecentralizowanej społeczności skateboardingu.", + npubCopied: "npub skopiowany do schowka. Wklej go w ulubionym kliencie Nostr, aby wysłać DM.", + bugReport: "🐛 Zgłoszenie błędu", + bugWhatHappened: "Co się stało:", + bugExpected: "Czego oczekiwałem:", + bugSteps: "Kroki do odtworzenia:", + aboutWord: "O NAS", + heroBefore: "Łącz się z lokalnymi scenami skate'owymi na całym świecie.", + skaterOwned: "Dane należące do skaterów", + heroAfter: ", relaye prowadzone przez społeczność.", + viewStats: "Zobacz statystyki społeczności", + missionTitle: "Nasza misja", + mission1: "SkateSpots pomaga skaterom odkrywać spoty, łączyć się z profesjonalistami w The Lab i organizować sesje — bez korporacyjnej kontroli. Prawdziwe jeżdżenie dzieje się offline, to narzędzie tylko Cię z nim łączy.", + mission2: "Wiedza o skateboardingu powinna mieszkać ze społecznością, a nie być zamknięta w korporacyjnych aplikacjach. Dlatego SkateSpots działa na Nostr — systemie opartym na relayach, w którym skaterzy kontrolują własne dane, wybierają, które relaye je przechowują, i mogą nawet uruchomić własne. Żadna firma nie jest właścicielem mapy.", + whyNostr: "Dlaczego Nostr?", + why1Title: "Kontrolowany przez społeczność", + why1Desc: "Twoje spoty mieszkają na relayach społeczności. Serwery prowadzą skaterzy, nie korporacje.", + why2Title: "Posiadasz swoje dane", + why2Desc: "Twoja tożsamość Nostr należy do Ciebie. Zabierz ją do dowolnej aplikacji Nostr — bez przywiązania.", + why3Title: "Integracja z Bitcoinem", + why3Desc: "Wysyłaj zapsy twórcom bezpośrednio w Bitcoinie. Żadna platforma nie zabiera 30%.", + why4Title: "Open source", + why4Desc: "Tworzony otwarcie. Każdy może współtworzyć lub rozwidlić kod.", + getInvolved: "Zaangażuj się", + getInvolvedDesc: "SkateSpots jest open source i napędzany przez społeczność. Współtwórz kod, udostępniaj spoty lub pomagaj innym zacząć.", + betaTitle: "Testy beta", + betaDesc: "Drogi Użytkowniku! Dziękujemy za testowanie SkateSpots w wersji beta. Pamiętaj, że aplikacja jest wciąż w fazie beta i mogą występować błędy lub problemy z bezpieczeństwem. Jeśli napotkasz problemy lub chcesz zgłosić błąd, odezwij się!", + giveFeedback: "Przekaż nam opinię:", + copyNpub: "Kopiuj npub", + reportBug: "Zgłoś błąd", + viewProfile: "Zobacz profil", + downloadApp: "Pobierz aplikację", + downloadAppDesc: "Zainstaluj SkateSpots na Androidzie przez Zapstore — open source'owy sklep z aplikacjami natywny dla Bitcoina.", + getOnZapstore: "Pobierz z Zapstore", + credits: "Twórcy", + creditPoweredBy: "Napędzane przez", + creditNostr: "Zdecentralizowany protokół", + creditCrewChat: "Czat ekipy przez", + creditCordn: "Kompleksowo szyfrowany czat grupowy", + creditEcash: "Ecash przez", + creditCashu: "Ecash Chaumiana dla Lightning", + creditWalletConnect: "Połączenie z portfelem przez", + creditNwc: "Nostr Wallet Connect (NIP-47)", + creditSigning: "Podpisywanie na Androidzie z", + creditAmber: "Signer Nostr na Androida", + creditMapData: "Dane mapy Bitcoin z", + creditBtcmap: "Miejsca akceptujące Bitcoina", + creditCrowdfunding: "Crowdfunding", + creditAngor: "Zdecentralizowany crowdfunding Bitcoin", + creditDistributed: "Dystrybuowane przez", + creditZapstore: "Sklep z aplikacjami open source", + creditTrust: "Zaufanie i czat ekipy przez", + creditContextvm: "Oceny zaufania Relatr i koordynacja szyfrowanego czatu ekipy", + stillQuestions: "Masz jeszcze pytania?", + stillQuestionsDesc: "Sasquatch to nasz przewodnik AI — napędzany danymi SkateSpots na żywo. Zapytaj go o spoty, wydarzenia, trenerów, sprzęt lub jak coś działa.", + askSasquatch: "Zapytaj The Sasquatch", + poweredBy: "Napędzane przez", + decentralized: "Zdecentralizowany", + communityOwned: "Należący do społeczności" + }, + faq: { + seoTitle: "FAQ — SkateSpots", + seoDescription: "Zapytaj The Sasquatch o cokolwiek związanego z SkateSpots.", + greeting: "Hej! Jestem The Sasquatch 🦧 — pytaj mnie o cokolwiek związanego z SkateSpots. Spoty, wydarzenia, sprzęt, portfele, prywatność, Nostr — służę pomocą. Co chcesz wiedzieć?", + gotQuestions: "Masz pytania?", + heroDesc: "Zapytaj The Sasquatch — wie wszystko o SkateSpots, Nostr, Bitcoinie i skateboardingu.", + askTitle: "Zapytaj The Sasquatch", + askDesc: "The Sasquatch jest otwarty w lewym dolnym rogu ekranu — kliknij go i wpisz swoje pytanie. Ma dostęp na żywo do spotów, wydarzeń, trenerów i pogody.", + askQuestion: "W czym możesz mi pomóc w SkateSpots?", + openSasquatch: "Otwórz The Sasquatch", + commonQuestions: "Częste pytania — dotknij, aby zapytać", + quickAnswers: "Szybkie odpowiedzi", + footerHint: "The Sasquatch korzysta z danych Nostr na żywo z relaya SkateSpots + AI, aby odpowiadać na Twoje pytania. 🛹", + chip1Label: "Czym jest SkateSpots?", + chip1Q: "Czym jest SkateSpots i jak działa?", + chip2Label: "Jak dodać spot?", + chip2Q: "Jak dodać spot do mapy?", + chip3Label: "Czym są zapsy?", + chip3Q: "Czym są zapsy?", + chip4Label: "Czy to darmowe?", + chip4Q: "Czy SkateSpots jest darmowy?", + chip5Label: "Czym jest My Stash?", + chip5Q: "Czym jest My Stash?", + chip6Label: "Jak się zalogować?", + chip6Q: "Jak się zalogować lub utworzyć konto?", + chip7Label: "Czym jest Nostr?", + chip7Q: "Czym jest Nostr?", + chip8Label: "Prywatność i dane", + chip8Q: "Które dane są publiczne, a które prywatne w SkateSpots?", + chip9Label: "Jak sprzedać sprzęt?", + chip9Q: "Jak sprzedać sprzęt na SkateSpots?", + chip10Label: "Czym jest The Lab?", + chip10Q: "Czym jest The Lab?", + fact1Label: "Spoty na całym świecie", + fact1Value: "Odkrywaj i dodawaj", + fact2Label: "Zapsy Bitcoin Lightning", + fact2Value: "100% darmowe", + fact3Label: "Zdecentralizowany na Nostr", + fact3Value: "Posiadasz swoje dane", + fact4Label: "Prywatny inwentarz sprzętu", + fact4Value: "Zaszyfrowany Stash", + s1Q: "Czym jest SkateSpots?", + s1A: "Zdecentralizowana mapa i społeczność skateboardingu, zbudowana na Nostr. Odkrywaj spoty, znajdź trenerów i filmerów, dołączaj do ekip, publikuj wydarzenia i kupuj/sprzedawaj sprzęt — bez firmy pośrodku.", + s2Q: "Jak dodać spot?", + s2A: "Dotknij mapy lub użyj przycisku + / „Dodaj spot”, następnie upuść pinezkę i wypełnij szczegóły. Potrzebujesz darmowego konta Nostr (dotknij Zaloguj się → Utwórz konto — e-mail nie jest wymagany).", + s3Q: "Czym są zapsy?", + s3A: "Zapsy to napiwki Bitcoin Lightning. Możesz wysyłać zapsy spotom, wydarzeniom, ekipom i osobom, które doceniasz. Trafiają prosto do odbiorcy przez Lightning — SkateSpots nigdy nie przechowuje Twoich środków.", + s4Q: "Czy to darmowe?", + s4A: "Tak. Tworzenie konta, dodawanie spotów i przeglądanie są darmowe. Opcjonalne płatne dodatki (np. wyróżnione ogłoszenia) i napiwki (zapsy) są płacone bezpośrednio między ludźmi.", + s5Q: "Które dane są publiczne?", + s5A: "Wszystko, co publikujesz — spoty, wydarzenia, Twój profil — jest publiczne na relayach Nostr. Twoje prywatne wiadomości i Twój Stash są kompleksowo szyfrowane. Szczegóły znajdziesz na stronie Prywatność.", + s6Q: "Czym jest The Lab?", + s6A: "The Lab to miejsce, w którym znajdziesz osoby do zatrudnienia lub nauki: trenerów, szkoleniowców, filmerów, montażystów wideo, fotografów, budowniczych, artystów i innych." + }, + privacy: { + seoTitle: "Prywatność — SkateSpots", + seoDescription: "Jak SkateSpots obchodzi się z Twoimi danymi: Twój GPS zostaje na urządzeniu, publikowane spoty są publiczne, a oto jak ukryć IP przez VPN lub Tor, jeśli chcesz.", + heroBefore: "Twoja", + heroHighlight: "Prywatność", + heroDesc: "Bez śledzenia, bez reklam, bez sprzedaży danych. Oto dokładnie, co zostaje na Twoim urządzeniu, co jest publiczne i jak dodatkowo się zabezpieczyć, jeśli chcesz.", + locationTitle: "Twoja lokalizacja zostaje na urządzeniu", + locationBefore: "Gdy dotkniesz", + nearMe: "„W pobliżu”,", + locationAfter: "Twoja lokalizacja GPS jest odczytywana na urządzeniu i używana tylko do wyśrodkowania mapy i sortowania pobliskich spotów.", + locationGood1: "Nigdy nie jest publikowana w Nostr.", + locationGood2: "Nigdy nie jest wysyłana do SkateSpots — nie ma serwera SkateSpots, który by ją zbierał.", + locationGood3: "Nigdy nie jest udostępniana żadnej stronie trzeciej.", + locationGood4: "W aplikacji natywnej używamy bezpośrednio systemu lokalizacji telefonu i pomijamy Google Play Services — więc działa na telefonach bez Google (GrapheneOS, /e/OS), a Google nigdy jej nie widzi.", + weatherBefore: "Pogoda jest domyślnie wyłączona. Gdy ją włączysz, sprawdza warunki dla", + weatherEm: "publicznej", + weatherAfter: "lokalizacji spotu — nie Twojej.", + publicTitle: "Co jest publiczne z założenia", + publicDesc: "SkateSpots to wspólna mapa, więc niektóre rzeczy są przeznaczone dla wszystkich. Gdy zdecydujesz się je opublikować, są publiczne w sieci Nostr:", + public1Strong: "Spoty, które dodajesz", + public1: "— wraz z ich współrzędnymi. Jeśli dodasz spot w swojej dokładnej lokalizacji, ta lokalizacja staje się publiczna. Pomyśl, zanim upuścisz pinezkę na własnym podjeździe.", + public2Strong: "Opinie, komentarze i Twój publiczny profil", + public2: "(imię, zdjęcie).", + public3: "Kogo obserwujesz i publiczne reakcje.", + public4Strong: "Zapsy", + public4: "są domyślnie publiczne: zap łączy Twoje konto — często Twój adres Lightning — z postem, za który zapłaciłeś, i z samym napiwkiem. Twój portfel może wysłać go anonimowo, jeśli wolisz, żeby tak nie było.", + publicNoteBefore: "VPN lub Tor", + notWord: "nie", + publicNoteAfter: "ukrywa treści tego, co publikujesz — współrzędne spotu są publiczne niezależnie od tego. Narzędzia prywatności ukrywają Twoją tożsamość sieciową (IP), a nie rzeczy, które zdecydujesz się opublikować.", + encryptedTitle: "Co jest prywatne i zaszyfrowane", + enc1Strong: "Wiadomości bezpośrednie", + enc1Mid: "i", + enc1Strong2: "czaty ekip", + enc1: "są kompleksowo szyfrowane (NIP-17). Tylko uczestnicy mogą je czytać.", + enc2Strong: "My Stash", + enc2: "— Twój prywatny inwentarz sprzętu — jest zaszyfrowany Twoim własnym kluczem.", + enc3Strong: "Członkowie tylko swojej ekipy", + enc3: "mogą wybrać widoczność wyłącznie dla swoich kolegów z ekipy.", + ipTitle: "Co opuszcza Twoje urządzenie: Twoje IP", + ipBefore: "Jak każda strona internetowa, serwery, z którymi rozmawia SkateSpots, mogą zobaczyć Twój", + ipAddress: "adres IP", + ipAfter: "(przybliżony wskaźnik Twojego regionu). To normalne dla każdej aplikacji webowej i mapowej i nie jest czymś, co wyróżnia nas. Te serwery to:", + ipTileStrong: "Kafle mapy", + ipTile: "(OpenStreetMap) — widzą Twoje IP i to, na który obszar mapy patrzysz.", + ipGeoStrong: "Geokodowanie spotów/sklepów", + ipGeo: "— gdy tworzysz lub edytujesz spot lub sklep, jego współrzędne trafiają do OpenStreetMap Nominatim, aby uzupełnić tag miasta/kraju. Gdy otwierasz Statystyki społeczności, współrzędne pinezek bez tagu lokalizacji trafiają do BigDataCloud, aby można je było pogrupować według regionu (buforowane na urządzeniu — najwyżej raz na pinezkę). Oba widzą Twoje IP. To pinezka, którą umieściłeś / publiczne współrzędne pinezki, nigdy bieżący GPS Twojego urządzenia.", + ipPushStrong: "Powiadomienia w tle", + ipPush: "(opcjonalne) — jeśli je włączysz, serwer push SkateSpots widzi, że Twój klucz coś otrzymał i kiedy (nigdy kto to wysłał ani co mówi — wiadomości pozostają zaszyfrowane), a usługa push Twojego systemu (Google/Mozilla/Apple) dostarcza alert.", + ipBtcStrong: "Miejsca Bitcoin", + ipBtc: "(BTCMap, gdy włączysz tę warstwę) — widzą Twoje IP i obszar, który przeglądasz.", + ipRelayStrong: "Relaye Nostr", + ipRelay: "— widzą Twoje IP, gdy aplikacja czyta lub publikuje.", + ipMintStrong: "Minty Cashu", + ipMint: "— widzą Twoje IP, gdy Twój portfel wysyła, odbiera lub wymienia.", + ipRouteStrong: "Trasy", + ipRoute: "(OSRM, a dla transportu publicznego Transitous) — otrzymują początek i koniec każdej trasy, o którą poprosisz, nie tylko Twoje IP. Wyznaczanie trasy zostaje w aplikacji: Twój start i cel nigdy nie są przekazywane do Map Google ani Apple.", + ipWeatherStrong: "Pogoda", + ipWeatherMid: "(Open-Meteo, opcjonalnie) i", + ipUploadStrong: "przesyłanie obrazów", + ipWeather: "(Blossom), gdy z nich korzystasz.", + ipAiStrong: "AI Sasquatcha", + ipAi: "— Twoja wiadomość trafia na nasz własny serwer, a następnie do dostawcy modelu.", + ipLink1: "Ponieważ wysyłasz swój klucz publiczny (npub) na tym samym połączeniu, relay może powiązać Twoje IP z Tobą — nie tylko „ktoś się połączył”, ale „ta osoba, z tego adresu”.", + ipShieldBefore: "Jedna rzecz, którą osłaniamy:", + ipMintsStrong: "katalog mintów", + ipShieldAfter: "jest pobierany przez nasz serwer, więc MintRadar nigdy nie widzi Twojego IP.", + vpnTitle: "Chcesz więcej prywatności? VPN lub Tor (opcjonalnie)", + vpnDesc: "Dla większości skaterów nie jest to konieczne — ale jeśli chcesz ukryć swoje IP i przybliżoną lokalizację przed powyższymi serwerami, masz dwie darmowe opcje:", + vpnReputable: "🛡️ Zaufany VPN", + vpnReputableDesc: "Ukrywa Twoje IP za serwerami VPN. Łatwy i szybki. Używaj takiego, za który płacisz i któremu ufasz; darmowe VPN-y zwykle zarabiają na Twoim ruchu, więc „darmowy” traktuj jako sygnał ostrzegawczy.", + torBrowser: "🧅 Przeglądarka Tor", + torDesc: "Darmowa, maksymalna prywatność IP, prowadzi ruch przez wiele relayów. Wolniejsza — mapy i niektóre relaye Nostr mogą zwalniać lub blokować węzły wyjściowe Tora. Świetna dla szczególnie ostrożnych.", + readThis: "Przeczytaj to, żeby się nie dać nabrać", + caveat1Before: "VPN/Tor ukrywa Twój", + ipWord: "IP", + caveat1: "— a nie spoty, które publikujesz. Pinezka w Twoim domu jest publiczna niezależnie od tego, czy używasz VPN.", + caveat2Before: "Nie włączaj", + nearMeGps: "„W pobliżu” / GPS przeglądarki", + caveat2: "jeśli zależy Ci na anonimowości — dokładny GPS niweczy każde ukrycie IP.", + caveat3: "Żadne narzędzie nie czyni Cię w pełni „anonimowym”. To tylko ogranicza to, co serwery mogą wywnioskować o Twojej lokalizacji sieciowej — i tyle.", + keysTitle: "Twoje klucze, Twoje konto", + keysBefore: "Twoje konto to para kluczy kryptograficznych, którą posiadasz. Najbezpieczniejszym sposobem logowania jest", + signer: "signer", + keysAfter: "(Alby, nos2x lub Amber na Androidzie), aby Twój klucz tajny nigdy nie został wklejony do aplikacji.", + keysCaveatBefore: "Jeśli wkleisz swój", + keysCaveatAfter: "bezpośrednio, zostanie zapisany w przeglądarce. Gdy możesz, użyj rozszerzenia signera i trzymaj kopię zapasową nsec w bezpiecznym miejscu offline.", + footerBefore: "Pytania? Zapytaj", + sasquatchName: "The Sasquatch", + footerMid: "w aplikacji lub przeczytaj", + gettingStarted: "przewodnik na start", + about: "O nas" + }, + license: { + seoTitle: "Licencja — SkateSpots", + seoDescription: "Licencja SkateSpots. Możesz swobodnie jeździć na deskorolce.", + tagline: "Jeźdź, zarabiaj, baw się dobrze i wydawaj Sats, gdziekolwiek jesteś.", + copyright: "Współtwórcy SkateSpots i społeczność", + licenseLabel: "Licencja", + freeLine1: "MASZ WOLNOŚĆ", + freeLine2: "JEŹDZIĆ NA DESKOROLCE", + body: "Ten projekt jest otwarty. Udostępniaj go, rozwidlaj, buduj na nim, jeźdź. Ulice należą do wszystkich. Ten kod też. Jeźdź dalej, baw się dobrze, ucz się trików, wspieraj budowniczych i jeźdź znowu.", + builtBefore: "Zbudowane z ❤️ na", + builtMid: "· Napędzane przez", + lightning: "Bitcoin Lightning ⚡", + viewSource: "Zobacz źródło", + aboutSkateSpots: "O SkateSpots", + supporters: "Wspierający" + }, + glossary: { + seoTitle: "Glosariusz trików · SkateSpots", + seoDescription: "Kompletny glosariusz skateboardingu — {{count}} haseł obejmujących flips, grinds, slides, grabs, airs, tricki na lipie, handplante, freestyle, terminy transition, stance i sprzęt, wraz z alternatywnymi nazwami.", + heading: "GLOSARIUSZ TRIKÓW", + subheading: "{{count}} haseł · tricki, transition, freestyle, stance i sprzęt", + searchPlaceholder: "Szukaj trików lub przezwisk — tre flip, crooks, method…", + clearSearch: "Wyczyść wyszukiwanie", + all: "Wszystkie", + results: "{{count}} wynik{{s}} dla", + noMatch: "Żaden trik nie pasuje. Spróbuj przezwiska takiego jak „tre flip”, „crooks” lub „melon”.", + tricksCount: "{{count}} trików", + footerBefore: "Znasz trik lub przezwisko, które przegapiliśmy? Triki dostają różne nazwy w każdej scenie — napisz do", + sasquatch: "The Sasquatch 🦧", + footerAfter: "i daj nam znać." + }, + signers: { + seoTitle: "Aplikacje signera — zabezpiecz klucze Nostr | SkateSpots", + seoDescription: "Dowiedz się o aplikacjach signera, które chronią Twoje klucze Nostr. Znajdź najlepszą opcję na Androida, iOS lub przeglądarkę na komputerze.", + securityGuide: "Przewodnik po bezpieczeństwie", + protect: "Chroń swoje", + nostrKeys: "klucze Nostr", + heroDesc: "Aplikacje signera chronią Twoje klucze prywatne, podpisując wydarzenia bez ich ujawniania. Zamiast wklejać klucz do każdej aplikacji, pozwól signerowi zrobić to bezpiecznie.", + whySignerStrong: "Po co używać signera?", + whySigner: "Twój klucz prywatny Nostr jest jak hasło, którego nie można nigdy zmienić. Aplikacja signera chroni go, pozwalając korzystać z dowolnej aplikacji Nostr.", + androidTitle: "Signery na Androida", + androidDesc: "Natywne aplikacje signera na urządzenia z Androidem, w tym GrapheneOS.", + iosTitle: "Signery na iOS", + iosDesc: "Opcje signera dla użytkowników iPhone'a i iPada.", + browserTitle: "Rozszerzenia przeglądarki", + browserDesc: "Rozszerzenia do przeglądarek na komputerze do podpisywania w aplikacjach webowych.", + recommended: "Zalecane", + yourPlatform: "Twoja platforma", + get: "Pobierz {{name}}", + protocolsTitle: "Zrozumieć protokoły", + nip07Desc: "Standard rozszerzeń przeglądarki. Rozszerzenie wstrzykuje możliwości podpisywania do aplikacji webowych. Używany przez Alby, nos2x, Flamingo i podobne rozszerzenia.", + nip46Desc: "Protokół zdalnego podpisywania („bunker”). Twoja aplikacja signera zatwierdza żądania z innych aplikacji bez udostępniania kluczy. Używany przez Nsec.app, Nostria i Nowser.", + nip55Desc: "Protokół signera specyficzny dla Androida. Aplikacje natywne mogą prosić Amber o podpisy bez ujawniania kluczy. Najpłynniejsze doświadczenie na Androidzie.", + whichChoose: "Co wybrać?", + chooseAndroid: "Android:", + chooseAndroidDesc: "Amber (NIP-55) dla aplikacji natywnych", + chooseIos: "iOS:", + chooseIosDesc: "Nsec.app (NIP-46) dla najlepszej zgodności", + chooseDesktop: "Komputer:", + chooseDesktopDesc: "Alby, nos2x lub Flamingo (NIP-07)", + amberDesc: "Natywny signer na Androida skupiony na bezpieczeństwie i łatwości użycia. Najlepszy wybór dla użytkowników Androida.", + nsecAppDesc: "Wieloplatformowy zdalny signer działający jako bezpieczny sejf na Twoje klucze.", + nostriaDesc: "Aplikacja zdalnego signera z kluczami przechowywanymi w bezpiecznej pamięci urządzenia.", + nowserDesc: "Signer z wieloma metodami uwierzytelniania obsługujący zarówno rozszerzenia przeglądarki, jak i protokoły zdalnego podpisywania.", + nsecAppIosDesc: "Najlepsza opcja na iOS. Używaj go jako zdalnego signera z dowolnym klientem Nostr.", + nowserTfDesc: "Signer na iOS dostępny przez TestFlight z możliwościami podpisywania podobnymi do Androida.", + nostriaIosDesc: "Zdalny signer z bezpiecznym przechowywaniem kluczy na urządzeniu.", + nos2xDesc: "Proste i niezawodne rozszerzenie przeglądarki do podpisywania wydarzeń Nostr.", + albyDesc: "Portfel Bitcoin Lightning z wbudowanym zarządzaniem kluczami Nostr i WebLN.", + flamingoDesc: "Rozszerzenie przeglądarki skupione na Nostr z przejrzystym interfejsem.", + kiwiDesc: "Na Androidzie/GrapheneOS użyj przeglądarki Kiwi, aby załadować rozszerzenia nos2x lub Alby.", + fNativeApp: "Aplikacja natywna", + fMultiKey: "Obsługa wielu kluczy", + fEventSigning: "Podpisywanie wydarzeń", + fSecureStorage: "Bezpieczne przechowywanie kluczy", + fRemoteSigning: "Zdalne podpisywanie", + fAnyClient: "Działa z dowolnym klientem", + fCrossDevice: "Synchronizacja między urządzeniami", + fMultiKeySupport: "Obsługa wielu kluczy", + fNip07: "Obsługa NIP-07", + fNip46: "Obsługa NIP-46", + fFlexibleSigning: "Elastyczne podpisywanie", + fNativeIos: "Natywna aplikacja na iOS", + fLightweight: "Lekki", + fEasyToUse: "Łatwy w użyciu", + fChromeSupport: "Obsługa Chrome/Brave/Edge", + fLightningPayments: "Płatności Lightning", + fNostrSigning: "Podpisywanie Nostr", + fWebln: "Obsługa WebLN", + fNwc: "Obsługa NWC", + fCleanUi: "Przejrzysty interfejs", + fPrivacyFocused: "Nastawiony na prywatność", + fExtensionMobile: "Obsługa rozszerzeń na telefonie", + fFullBrowser: "Pełne doświadczenie przeglądarki", + fGraphene: "Działa na GrapheneOS" + }, + betaDisclaimer: { + title: "Uwaga — to wersja beta", + subtitle: "Kilka słów, zanim wskoczysz.", + ossTitle: "Open source i eksperymentalne", + ossBody: "Tworzone otwarcie przez społeczność. Grzeb w nim, rozwidlaj, psuj.", + betaTitle: "W wersji beta — bez audytu", + betaBody: "Kod nie przeszedł jeszcze formalnego audytu bezpieczeństwa. Błędy się zdarzają.", + moneyTitle: "Obsługuje prawdziwego Bitcoina i Lightning", + moneyBody: "Używaj na nim pieniędzy na własne ryzyko. Ładuj tylko tyle, ile możesz stracić.", + finePrint: "Bez jakiejkolwiek gwarancji. Odpowiadasz wyłącznie za własne środki i klucze.", + viewCode: "Zobacz kod", + accept: "Rozumiem, wpuszczaj mnie" + } + }, +}; export default plBatch3; diff --git a/src/i18n/pl/batch4.ts b/src/i18n/pl/batch4.ts index b4fa5e7..a8aaeff 100644 --- a/src/i18n/pl/batch4.ts +++ b/src/i18n/pl/batch4.ts @@ -1,4 +1,1115 @@ -/** pl — batch 4. Filled by the translation pass; empty until then. */ -const plBatch4 = {}; +/** pl — batch 4. Polish translation of the `walletUi` namespace. */ +const plBatch4 = { + walletUi: { + page: { + title: "Portfel", + subtitle: "Bitcoin Lightning + Cashu", + manage: "Zarządzaj", + getAWallet: "Zdobądź portfel", + learnPlanB: "Dowiedz się więcej w Plan B Academy", + walletMinibits: "Mobilny Cashu · NWC", + walletAlby: "Rozszerzenie przeglądarki · WebLN + NWC", + walletZeus: "Lightning z własną kustodią", + walletCoinos: "Webowy · działa wszędzie", + whatAreZaps: "Czym są zapy?", + whatAreZapsShort: "Czym są zapy?", + zapsDesc: "Natychmiastowe płatności Bitcoin Lightning. Wysyłaj sats do dowolnego skatera, twórcy spota lub trenera — bez pośredników, bez prowizji platformy.", + instant: "Natychmiast", + instantDesc: "Rozlicza się w kilka sekund", + flexible: "Elastycznie", + flexibleDesc: "Twój portfel, twoje klucze", + private: "Prywatnie", + privateDesc: "Cashu ukrywa, kto płaci", + direct: "Bezpośrednio", + directDesc: "Wartość trafia do twórcy", + loginRequired: "Wymagane logowanie", + loginRequiredDesc: "Zaloguj się swoim kontem Nostr, aby podłączyć portfel Lightning i zacząć wysyłać zapy.", + browseMints: "Przeglądaj minty Cashu" + }, + modal: { + walletName: "Nazwa portfela (opcjonalnie)", + walletNamePlaceholder: "Mój portfel Lightning", + connectionUri: "URI połączenia", + spendLimitTitle: "Najpierw ustaw limit wydatków", + spendLimitBody1: "Ten ciąg pozwala SkateSpots opłacać faktury Lightning z twojego portfela. W aplikacji portfela nadaj temu połączeniu mały", + dailyBudget: "dzienny budżet", + spendLimitBody2: "(np. kilka tysięcy sats) i włącz tylko", + spendLimitBody3: "Nigdy nie wklejaj połączenia bez limitu budżetu. Możesz je w każdej chwili cofnąć w swoim portfelu.", + addWallet: "Dodaj portfel", + nwcConnection: "Połączenie NWC", + lightningWallet: "Portfel Lightning", + pasteNwc: "Wklej ciąg połączenia NWC, aby wysyłać zapy", + connectWallet: "Podłącz portfel", + browserExtension: "Rozszerzenie przeglądarki (WebLN)", + autoDetected: "Wykrywane automatycznie, jeśli zainstalowane", + ready: "Gotowe", + notFound: "Nie znaleziono", + getNwcFrom: "Pobierz NWC z:", + connectionRequired: "Wymagany URI połączenia", + connectionRequiredDesc: "Podaj prawidłowy URI połączenia NWC.", + activeChanged: "Zmieniono aktywny portfel", + activeChangedDesc: "Wybrany portfel jest teraz aktywny dla zapów.", + connectNwc: "Podłącz portfel NWC", + connectNwcDesc: "Wprowadź ciąg połączenia z kompatybilnego portfela.", + connect: "Podłącz", + connecting: "Podłączanie...", + walletSettings: "Ustawienia portfela", + connectDesc: "Podłącz swój portfel Lightning, aby natychmiast wysyłać zapy." + }, + cashu: { + title: "Portfel Cashu", + desc: "Wbudowany portfel ecash — bez zewnętrznej konfiguracji", + initializing: "Inicjowanie portfela...", + walletError: "Błąd portfela", + balance: "Saldo", + balanceAria: "Saldo portfela {{amount}} sats", + activeMint: "Aktywny mint", + selectMint: "Wybierz mint", + receive: "Odbierz", + send: "Wyślij", + receiveViaLightning: "⚡ Odbierz przez Lightning", + amountSats: "Kwota w sats", + generateInvoice: "Wygeneruj fakturę", + generating: "Generowanie…", + or: "Lub", + receiveCashu: "🥜 Odbierz token Cashu", + scanQr: "Skanuj QR", + pasteCashu: "Wklej token Cashu (cashu...)", + receiveToken: "Odbierz token", + receiving: "Odbieranie…", + createCashu: "🥜 Utwórz token Cashu", + createToken: "Utwórz token", + creating: "Tworzenie…", + payInvoice: "⚡ Zapłać fakturę Lightning", + pasteInvoice: "Wklej fakturę Lightning (lnbc...)", + payInvoiceBtn: "Zapłać fakturę", + processing: "Przetwarzanie...", + payAddress: "📧 Zapłać na adres Lightning", + sendToAddress: "Wyślij na adres", + sending: "Wysyłanie…", + recentActivity: "Ostatnia aktywność", + receivedLightning: "Otrzymano ⚡ Lightning", + sentLightning: "Wysłano ⚡ Lightning", + sentToken: "Wysłano 🥜 token", + receivedToken: "Otrzymano 🥜 token", + whatIsCashu: "Czym jest Cashu?", + whatIsCashuDesc: "Cashu to cyfrowa gotówka oparta na Bitcoin Lightning. Pomyśl o nim jak o tokenach Bitcoin, które trzymasz w przeglądarce.", + benefitOffline: "Działa offline na spotach", + benefitInstant: "Natychmiastowe płatności peer-to-peer", + benefitPrivacy: "Nastawione na prywatność (minty nie mogą cię śledzić)", + benefitRedeemable: "Zawsze wymienialne na sats Lightning", + findMints: "Znajdź minty na mintradar.pedani.eu", + backupTitle: "Zrób kopię zapasową portfela", + backupDesc: "Twój portfel jest zabezpieczony 12-wyrazową frazą odzyskiwania. Zapisz ją bezpiecznie — będzie potrzebna do przywrócenia salda, jeśli wyczyścisz dane przeglądarki.", + viewRecovery: "Pokaż frazę odzyskiwania", + backupNote: "To jak twój nsec Nostr — trzymaj to w tajemnicy i rób kopie!", + tokenReceived: "Otrzymano token", + tokenReceivedDesc: "Token Cashu wymieniony pomyślnie!", + receiveFailed: "Odbieranie nie powiodło się", + unknownError: "Nieznany błąd", + requestUnsupported: "Żądania Cashu nie są jeszcze obsługiwane", + requestUnsupportedDesc: "Ten portfel nie potrafi jeszcze zapłacić żądania Cashu (creq) — poproś o fakturę Lightning lub adres.", + onchainUnsupported: "On-chain nie jest tu obsługiwany", + onchainUnsupportedDesc: "To adres Bitcoin. Ten portfel wysyła tylko tokeny Cashu i płatności Lightning.", + nostrProfile: "To profil Nostr", + nostrProfileDesc: "Zeskanuj token Cashu, fakturę Lightning lub adres Lightning, aby zapłacić.", + clinkUnsupported: "Kod płatności nie jest jeszcze obsługiwany", + clinkUnsupportedDesc: "Ten portfel nie potrafi jeszcze zapłacić kodów CLINK. Użyj faktury Lightning lub adresu.", + unrecognizedQr: "Nierozpoznany kod QR", + unrecognizedQrDesc: "Zeskanuj token Cashu, fakturę Lightning lub adres Lightning.", + invalidAmount: "Nieprawidłowa kwota", + invalidAmountDesc: "Podaj prawidłową kwotę", + paymentSent: "Płatność wysłana", + paymentSentDesc: "Wysłano {{amount}} sats na {{address}}", + paymentFailed: "Płatność nie powiodła się", + copied: "Skopiowano", + copiedDesc: "{{label}} skopiowano do schowka", + receiveSats: "Odbierz {{amount}} sats", + payInvoiceHint: "Zapłać tę fakturę z dowolnego portfela Lightning", + invoiceQrAlt: "Kod QR faktury", + lightningInvoice: "Faktura Lightning", + invoiceLabel: "Faktura", + waiting: "⏳ Oczekiwanie na płatność...", + tokenReady: "Token gotowy do wysłania", + shareToken: "Udostępnij ten token odbiorcy", + tokenQrAlt: "Kod QR tokena", + cashuToken: "Token Cashu", + tokenLabel: "Token", + copyToken: "Kopiuj token", + tokenWarning: "Każdy, kto ma ten token, może go zrealizować — traktuj go jak gotówkę!", + browser: { + title: "Wbudowany portfel ecash", + appOnly: "Tylko w aplikacji", + desc: "Samodzielnie przechowywany ecash Cashu, napędzany przez Bitcoin Lightning", + unlockTitle: "Odblokuj pełny portfel w aplikacji SkateSpots", + unlockDesc: "Wbudowany portfel ecash pozwala tworzyć, wysyłać i realizować tokeny Cashu prosto na spocie. Mieszka w natywnej aplikacji, gdzie może bezpośrednio rozmawiać z mintami — przeglądarki izolują te połączenia dla twojego bezpieczeństwa.", + zapTipTitle: "Zap i napiwek — działa już w przeglądarce", + zapTipDesc: "Wysyłanie sats do spotów, wydarzeń, trenerów i ekip działa od razu tutaj. Wystarczy podłączyć portfel Lightning poniżej — Nostr Wallet Connect lub rozszerzenie przeglądarki, takie jak Alby. Mint Cashu nie jest potrzebny." + } + }, + escrow: { + title: "Depozyt", + desc: "Sprzedawaj bezpiecznie: włącz depozyt, a kupujący może zablokować swoje sats dla ciebie w ramach transakcji. Uwalniasz je, gdy dostarczysz — jeśli tego nie zrobisz, kupujący może je odzyskać po ustalonym czasie.", + active: "Depozyt jest włączony", + publish: "Włącz depozyt", + published: "Depozyt jest włączony", + publishedDesc: "Kupujący mogą teraz zablokować środki dla ciebie w ramach transakcji.", + failed: "Nie udało się włączyć depozytu" + }, + escrowSettings: { + title: "Ustawienia depozytu", + desc: "Domyślne ustawienia transakcji depozytowych Cashu. Lokalne dla urządzenia.", + lockWindow: "Domyślny czas blokady", + lockWindowHint: "Jak długo środki pozostają zablokowane, zanim kupujący może je odzyskać. Dłużej jest bezpieczniej dla sprzedawcy.", + days: "dni", + preferredMint: "Mint dla depozytu", + activeMint: "Aktywny mint", + preferredMintHint: "Który mint finansuje depozyt. Użyj godnego zaufania.", + requireListings: "Wymagaj depozytu przy nowych ofertach", + requireListingsHint: "Wstępnie zaznacza „Wymagaj depozytu”, gdy wystawiasz przedmiot." + }, + privacy: { + title: "Porady dotyczące prywatności", + subtitle: "Dowiedz się, jak chronić swoją prywatność finansową", + cashuRecommended: "CASHU (Zalecane)", + anon: "Anonimowe transakcje", + blind: "Ślepe podpisy ukrywają aktywność", + noIp: "Brak ujawniania IP", + trustMint: "Zaufanie mintowi w kwestii środków", + lightningAddress: "LIGHTNING ADDRESS", + linked: "Można powiązać z tożsamością", + traceable: "Historia płatności możliwa do prześledzenia", + ipVisible: "IP widoczne przy wystawianiu faktury", + selfCustody: "Możliwa własna kustodia", + bestPractices: "Najlepsze praktyki", + tip1Title: "Używaj Cashu do odbierania napiwków", + tip1Desc: "Wbudowany portfel Cashu to najbardziej prywatny sposób odbierania zapów", + tip2Title: "Używaj osobnego portfela dla SkateSpots", + tip2Desc: "Nie używaj głównego portfela oszczędnościowego — trzymaj środki aplikacji osobno", + tip3Title: "Rozważ używanie VPN lub Tor", + tip3Desc: "Ukrywa twój adres IP podczas transakcji", + tip4Title: "Unikaj adresów Lightning powiązanych z tożsamością", + tip4Desc: "Używaj pseudonimowych adresów niezwiązanych z twoim prawdziwym nazwiskiem", + proTip: "Wskazówka:", + proTipDesc: "Odbieraj płatności najpierw do portfela Cashu, a potem okresowo przenoś większe kwoty do portfela osobistego, używając VPN do transferu.", + warnTitle: "Uwaga o prywatności", + warnDesc: "Adresy Lightning mogą potencjalnie powiązać twoją aktywność w SkateSpots z twoją prawdziwą tożsamością.", + betterPrivacy: "Dla lepszej prywatności:", + bullet1: "Używaj dedykowanego portfela dla tej aplikacji", + bullet2: "Rozważ zamiast tego portfel Cashu", + bullet3: "Używaj VPN/Tor do transakcji", + useCashu: "Użyj zamiast tego Cashu", + understand: "Rozumiem" + }, + mintPrivacy: { + title: "Prywatność mintów", + desc: "Korzystanie z wielu mintów poprawia prywatność, ponieważ żaden pojedynczy mint nie widzi wszystkich twoich transakcji", + distribution: "Rozkład środków", + singleWarning: "Korzystanie z jednego minta oznacza, że widzi on cały czas i kwoty twoich transakcji. Rozważ dodanie kolejnych mintów dla lepszej prywatności.", + yourMints: "Twoje minty ({{count}})", + default: "Domyślny", + addMint: "Dodaj mint", + addMintDesc: "Dodaj nowy mint Cashu do swojego portfela", + mintUrl: "URL minta", + add: "Dodaj", + adding: "Dodawanie...", + orChoose: "Lub wybierz z listy", + recommended: "Zalecane minty", + allMints: "Wszystkie minty (katalog)", + searchMints: "Szukaj mintów…", + noDirectoryMints: "Żaden mint nie pasuje do wyszukiwania.", + directoryHint: "Ze społecznościowego katalogu MintRadar — nieoficjalny i może być nieaktualny.", + added: "Dodano", + soon: "Wkrótce", + autoDistribute: "Automatycznie rozdzielaj środki", + autoDesc: "Rozdzielaj otrzymane środki między wiele mintów", + autoAria: "Automatycznie rozdzielaj środki (wkrótce)", + tip1: "Używaj co najmniej 2–3 różnych mintów dla lepszej prywatności", + tip2: "Nie trzymaj wszystkich środków w jednym mincie — rozłóż je", + tip3: "Weź pod uwagę jurysdykcję minta (różne kraje = różny dostęp prawny)", + tip4: "Minty widzą czas transakcji, ale NIE to, komu płacisz (ślepe podpisy)", + future: "Przyszłe funkcje: rotacja mintów i ocena prywatności — bądź czujny!", + findMore: "Znajdź więcej mintów na mintradar.pedani.eu", + trustWarning: "Ostrzeżenie o zaufaniu:", + trustWarningDesc: "Minty są powiernicze — przechowują twoje środki. Używaj tylko mintów, którym ufasz. Jeśli mint zniknie, twoje środki mogą przepaść. Rozłożenie środków na wiele mintów zmniejsza ryzyko.", + removeTitle: "Usunąć mint?", + removeDesc: "Czy na pewno chcesz usunąć {{name}}?", + removeMint: "Usuń mint", + warning: "Uwaga:", + withdrawWarning: "Ten mint ma {{amount}} sats. Wypłać środki przed usunięciem!", + invalidUrl: "Nieprawidłowy URL", + invalidUrlDesc: "URL minta musi zaczynać się od https://", + mintAdded: "Dodano mint", + mintAddedDesc: "Nowy mint został pomyślnie dodany", + mintAddedNamed: "{{name}} został pomyślnie dodany", + failedAdd: "Nie udało się dodać minta", + failed: "Nie powiodło się", + noMints: "Brak mintów", + singleMint: "Pojedynczy mint", + concentrated: "Skoncentrowane", + moderate: "Umiarkowane", + wellDistributed: "Dobrze rozłożone", + mintCoinosWebDesc: "Mint przyjazny dla sieci (zalecany dla przeglądarek)", + mintMinibitsWebDesc: "⚠ Tylko natywna aplikacja — niedostępny z przeglądarek", + mintMinibitsNativeDesc: "Mint SkateSpots — zalecany", + mintCoinosDesc: "Mint przyjazny dla sieci", + mintLnbitsDesc: "Społecznościowy mint na LNbits" + }, + nwc: { + title: "Portfel Lightning", + noConnection: "Portfel NWC", + refresh: "Odśwież saldo", + createInvoice: "Utwórz fakturę", + copyInvoice: "Kopiuj fakturę", + pasteInvoice: "Wklej fakturę Lightning (lnbc…)", + amount: "Kwota: {{amount}} sats", + pasteToSee: "Wklej fakturę, aby zobaczyć kwotę", + pay: "Zapłać", + invoiceQrAlt: "Kod QR faktury Lightning", + enterAmount: "Wprowadź kwotę w sats", + readBalanceFailed: "Nie udało się odczytać salda", + readBalanceFailedDesc: "Twój portfel nie odpowiedział.", + createInvoiceFailed: "Nie udało się utworzyć faktury", + createInvoiceFailedDesc: "Spróbuj ponownie za chwilę.", + paymentSent: "Płatność wysłana", + paidAmount: "Zapłacono {{amount}} sats.", + paid: "Zapłacono.", + paymentRejected: "Portfel odrzucił płatność." + }, + qr: { + title: "Skanuj kod QR", + desc: "Umieść kod QR w polu widzenia aparatu, aby go zeskanować", + paste: "Wklej ze schowka", + hint: "Zeskanuj token Cashu, fakturę Lightning lub adres Lightning", + clipboardEmpty: "Schowek jest pusty", + clipboardEmptyDesc: "Nie znaleziono tekstu w schowku", + pasteFailed: "Wklejanie nie powiodło się", + pasteFailedDesc: "Nie udało się odczytać ze schowka" + }, + recovery: { + title: "Fraza odzyskiwania", + desc: "Te 12 słów to jedyny sposób na przywrócenie salda ecash. Zapisz je w kolejności i przechowuj offline — nigdy nie udostępniaj ich nikomu.", + tapReveal: "Dotknij, aby pokazać", + noWatching: "Upewnij się, że nikt nie patrzy", + hide: "Ukryj", + reveal: "Pokaż", + paperHint: "Najbezpieczniej jest zapisać je na papierze — skopiowanie do schowka może wyciec do innych aplikacji.", + written: "Zapisałem je", + revealFirst: "Najpierw pokaż słowa", + copiedDesc: "Fraza odzyskiwania skopiowana — wklej ją w bezpiecznym miejscu, a potem wyczyść schowek.", + copyFailed: "Kopiowanie nie powiodło się", + copyFailedDesc: "Zapisz słowa na papierze." + }, + guide: { + quickGuide: "Szybki przewodnik", + fullGuide: "Przewodnik po portfelach (edycja skatera)", + cashuSummary: "Prywatność + wygoda", + mintHoldsFunds: "(mint przechowuje środki)", + lightningSummary: "Kontrola + bezpieczeństwo", + youHoldKeys: "(ty trzymasz klucze)", + useBoth: "Używaj obu: Cashu do napiwków, Lightning do oszczędności", + cashuTitle: "PORTFEL CASHU", + cashuTagline: "Jak gotówka w kieszeni na skateparku", + cashuBullet1: "Szybko wyjąć na napiwek", + cashuBullet2: "Nie noś tu swoich życiowych oszczędności", + cashuBullet3: "Jeśli mint zniknie, środki mogą przepaść", + cashuBullet4: "Nikt nie wie, ile masz (prywatność!)", + cashuPerfectFor: "Przekąski na sesji, zapowanie klipów, małe napiwki", + lightningTitle: "PORTFEL LIGHTNING", + lightningTagline: "Jak twoje konto bankowe — masz kontrolę", + lightningBullet1: "Bezpieczny, ty kontrolujesz klucze", + lightningBullet2: "Konfiguracja zajmuje chwilę", + lightningBullet3: "Pełna historia transakcji", + lightningBullet4: "Lepszy do większych kwot", + lightningPerfectFor: "Zakupy sprzętu, oszczędności, duże zapy", + perfectFor: "Idealny do:", + proTips: "WSKAZÓWKI", + tip1Title: "Używaj obu portfeli", + tip1Desc: "Trzymaj pieniądze na sesję w Cashu, oszczędności w Lightning", + tip2Title: "Wypróbuj różne portfele", + tip2Desc: "Eksperymentuj, aby znaleźć to, co ci pasuje. Każdy ma inne funkcje i kompromisy", + tip3Title: "Lepsza prywatność", + tip3Desc: "Korzystanie z wielu portfeli oznacza, że żadna pojedyncza aplikacja nie widzi całej twojej aktywności", + tip4Title: "Zdobądź doświadczenie", + tip4Desc: "Im więcej narzędzi znasz, tym więcej masz opcji. Zacznij od małych rzeczy, ucz się w miarę upływu czasu", + tldr: "W skrócie:", + tldrDesc: "Nie ma „najlepszego” portfela — wszystko zależy od twoich potrzeb. Wypróbuj oba, używaj tego, co ci pasuje, i nie trzymaj wszystkich sats w jednym miejscu!" + }, + zap: { + count: "{{count}} zapów", + connectFirst: "Najpierw podłącz swój portfel", + connectFirstDesc: "Aby wysyłać zapy (napiwki Bitcoin), musisz podłączyć portfel Lightning.", + quickSetup: "Szybka konfiguracja (30 sekund)", + quickSetupDesc: "Podłącz swój istniejący portfel Lightning przez Nostr Wallet Connect (NWC). Nie trzeba dodatkowych kont.", + connectNwc: "Podłącz portfel przez NWC", + noWallet: "Nie masz portfela? Dowiedz się jak", + skip: "Pomiń na razie (ręczna faktura)", + note: "ℹ️ Uwaga:", + noteDesc: "Nadal możesz utworzyć fakturę bez podłączania portfela, ale musisz ją skopiować ręcznie, aby zapłacić.", + payWithWebln: "Zapłać przez WebLN", + processing: "Przetwarzanie...", + openInWallet: "Otwórz w portfelu Lightning", + scanHint: "Zeskanuj kod QR lub skopiuj fakturę, aby zapłacić dowolnym portfelem Lightning.", + cashuInstant: "Zapłać natychmiast swoim wbudowanym portfelem", + satsAvailable: "sats dostępnych", + or: "LUB", + customAmount: "Własna kwota", + addComment: "Dodaj komentarz (opcjonalnie)", + insufficientBanner: "⚠️ Niewystarczające saldo Cashu. Potrzebujesz {{amount}} sats więcej. Przełącz na Lightning lub doładuj portfel Cashu.", + creatingInvoice: "Tworzenie faktury...", + zapAmount: "Zapnij {{amount}} sats", + zapAmountCashu: "Zapnij {{amount}} sats przez Cashu", + lightningInvoice: "Faktura Lightning", + qrAlt: "Kod QR faktury Lightning", + enterAmount: "Wprowadź kwotę", + enterAmountDesc: "Wybierz wartość z listy lub wpisz prawidłową liczbę sats.", + cashuUnavailable: "Portfel Cashu niedostępny", + cashuUnavailableDesc: "Twój portfel Cashu nie jest gotowy. Przełącz na Lightning lub najpierw otwórz portfel.", + insufficientCashu: "Niewystarczające saldo Cashu", + insufficientCashuDesc: "Potrzebujesz {{amount}} sats więcej. Przełącz na Lightning lub doładuj.", + zapSentCashu: "Zap wysłany! 🥜", + zapSentCashuDesc: "Zapnięto {{amount}} sats z twojego portfela Cashu.", + cashuFailed: "Płatność Cashu nie powiodła się", + cashuFailedDesc: "Nie udało się zapłacić portfelem Cashu.", + invoiceCopied: "Faktura skopiowana", + invoiceCopiedDesc: "Faktura Lightning skopiowana do schowka", + defaultComment: "Zapnięte na SkateSpots! 🛹", + titleConnect: "Podłącz portfel", + titlePayment: "Płatność Lightning", + titleZap: "Wyślij zap", + descConnect: "Podłącz swój portfel Lightning, aby wysyłać zapy", + descPayment: "Zapłać przez sieć Bitcoin Lightning", + descZap: "Zapy to małe płatności Bitcoin, które wspierają twórcę tego elementu. Jeśli ci się podobało, rozważ wysłanie zapa!", + descZapShort: "Zapy to małe płatności Bitcoin, które wspierają twórców. Rozważ wysłanie zapa!" + }, + zapCrew: { + title: "Zapnij ekipę", + desc: "Podziel zap równo między {{count}} członków ekipy z adresem Lightning.", + noMembers: "Obecnie brak innych członków ekipy do zapowania.", + totalAmount: "Łączna kwota", + customTotal: "Własna suma", + each: "sats na osobę", + rounded: "(zaokrąglone)", + noWallet: "Brak podłączonego portfela — otrzymasz fakturę dla każdego członka do ręcznej zapłaty. Podłącz portfel, aby dzielić jednym dotknięciem.", + zapAcross: "Zapnij {{amount}} sats na {{count}}", + sentTo: "⚡ Wysłano do {{done}}/{{total}}", + none: "Nie ukończono żadnych automatycznych płatności", + copyPending: "Skopiuj oczekujące faktury, aby dokończyć płatność ręcznie.", + thanks: "Dzięki za wsparcie ekipy!", + payingCrew: "Opłacanie ekipy…", + defaultComment: "Zapnięto ekipę {{crew}}! 🤘", + sent: "Wysłano", + paying: "Opłacanie", + resolving: "Rozwiązywanie", + skipped: "Pominięto", + failed: "Nie powiodło się", + waiting: "Oczekiwanie", + copyInvoice: "Kopiuj fakturę", + invoiceCopied: "Faktura skopiowana", + invoiceCopiedDesc: "Wklej ją do dowolnego portfela Lightning" + }, + zapBadges: { + title: "Odznaki za zapy", + zaps: "zapów", + satsSent: "wysłanych sats", + rank: "ranga", + footnote: "Na podstawie ostatnich 30 dni zapów.", + first: "Pierwszy zap", + firstHint: "Wyślij swój pierwszy zap", + regular: "Stały bywalec", + regularHint: "Wyślij 10 zapów", + generous: "Hojny", + generousHint: "Wyślij 10 000 sats", + patron: "Patron", + patronHint: "Wyślij 100 000 sats", + top10: "Top 10", + top10Hint: "Wejdź do top 10 wspierających" + }, + trust: { + unavailable: "Ocena zaufania niedostępna", + yourContent: "To twoja treść", + following: "Obserwujesz tego użytkownika", + friendOfFriend: "Znajomy znajomego (2 skoki)", + nip05: "Użytkownik zweryfikowany przez NIP-05", + unknown: "Nieznany użytkownik", + help: "Oceny zaufania pomagają rozpoznać wiarygodnych współtwórców w społeczności skateboardingu." + }, + share: { + title: "Udostępnij profil", + desc: "Skieruj aparat telefonu na kod, aby otworzyć profil {{name}}.", + qrAlt: "Kod QR profilu", + copyLink: "Kopiuj link", + copyFailed: "Kopiowanie nie powiodło się", + copyFailedDesc: "Nie udało się skopiować linku.", + shareEllipsis: "Udostępnij…" + }, + addToCollection: { + title: "Zapisz w kolekcji", + desc: "Zapisz „{{spot}}” w jednej ze swoich kolekcji", + loginRequired: "Zaloguj się, aby zapisywać spoty w kolekcjach", + noCollections: "Nie masz jeszcze żadnych kolekcji", + createFirst: "Utwórz swoją pierwszą poniżej!", + spotCount: "{{count}} spotów", + alreadySavedTag: "Już zapisano", + alreadySaved: "Już zapisano", + alreadySavedDesc: "„{{spot}}” jest już w „{{collection}}”", + saved: "Spot zapisany!", + savedDesc: "Dodano „{{spot}}” do „{{collection}}”", + saveFailed: "Nie udało się zapisać", + somethingWrong: "Coś poszło nie tak", + created: "Kolekcja utworzona!", + createdDesc: "Dodano „{{spot}}” do nowej kolekcji „{{collection}}”", + createFailed: "Nie udało się utworzyć kolekcji", + name: "Nazwa kolekcji", + descriptionOptional: "Opis (opcjonalnie)", + creating: "Tworzenie...", + createAndSave: "Utwórz i zapisz", + createNew: "Utwórz nową kolekcję" + }, + collection: { + back: "Powrót do kolekcji", + created: "Utworzono {{date}}", + deleteTitle: "Usunąć kolekcję?", + deleteDesc: "Spowoduje to trwałe usunięcie „{{title}}”. Same spoty pozostaną nietknięte.", + deleting: "Usuwanie...", + deleteFailed: "Nie udało się usunąć kolekcji", + deleted: "Kolekcja usunięta", + deletedDesc: "„{{title}}” została usunięta", + empty: "Brak spotów w tej kolekcji", + emptyOwner: "Dodaj spoty do swojej kolekcji, klikając „Zapisz w kolekcji” na dowolnym spocie", + emptyOther: "Ta kolekcja jest pusta", + browseSpots: "Przeglądaj spoty", + linkCopied: "Link skopiowany!", + linkCopiedDesc: "Link do kolekcji został skopiowany do schowka", + map: "Mapa kolekcji", + removeFailed: "Nie udało się usunąć spota", + shareText: "Zobacz tę kolekcję spotów: {{title}}", + spotRemoved: "Spot usunięty", + spotRemovedDesc: "„{{title}}” został usunięty z tej kolekcji" + }, + mints: { + title: "Minty", + subtitle: "Przeglądaj minty Cashu i ich kondycję. Operacje portfela Cashu działają w aplikacji SkateSpots.", + searchPlaceholder: "Szukaj mintów po nazwie lub URL…", + onlineOnly: "Tylko online", + count: "{{filtered}} z {{total}} mintów", + directoryError: "Nie udało się wczytać katalogu mintów.", + directoryHint: "Katalog jest prowadzony społecznościowo i ma limity — może być chwilowo niedostępny.", + goToWallet: "Przejdź do portfela", + appOnly: "Dodawanie minta odbywa się w aplikacji SkateSpots (Cashu tylko w aplikacji).", + noMatch: "Żaden mint nie pasuje do „{{query}}”.", + footer: "Dane o kondycji ze społecznościowego projektu MintRadar — nieoficjalne i mogą być nieaktualne. Zawsze sprawdź warunki minta, zanim powierzysz mu środki.", + archived: "Zarchiwizowany", + degraded: "Pogorszony", + offline: "Offline", + online: "Online", + terms: "Warunki", + reliability: "niezawodność", + add: "Dodaj", + addToWallet: "Dodaj do portfela", + copyUrl: "Kopiuj URL", + openMint: "Otwórz mint", + inWallet: "W twoim portfelu", + addedBadge: "Dodano", + urlCopied: "URL minta skopiowany", + added: "Dodano mint", + addedDesc: "{{host}} jest teraz w twoim portfelu.", + couldNotAdd: "Nie udało się dodać minta", + communityRating: "Ocena społeczności", + reliabilityLabel: "Niezawodność", + uptime: "Dostępność 24 godz. / 7 dni", + location: "Lokalizacja", + latency: "Opóźnienie", + nuts: "Obsługiwane NUTs", + units: "Jednostki", + version: "Wersja", + ratedBy: "Oceniony {{rating}}/5 przez {{count}} osób na MintRadar.", + noRating: "Brak oceny społeczności na MintRadar.", + reviewsNote1: "Pisane recenzje nie są częścią katalogu —", + openMintRadar: "otwórz MintRadar", + reviewsNote2: "aby przeczytać lub zostawić recenzję.", + liveness: "Audyt aktywności: przetestowano {{mints}} mintów i {{melts}} meltów", + livenessErrors: " · {{errors}}/{{total}} ostatnich błędów", + whatsAMint: "Czym jest mint?", + whatsAMintDesc: "Mint Cashu emituje i wymienia ecash w twoim portfelu. Przechowuje Bitcoin zabezpieczający twoje tokeny — więc mint, którego sam nie prowadzisz, to taki, któremu musisz zaufać.", + mintWarning: "Minty mogą stać się niedostępne, zmienić warunki lub zniknąć ze środkami. Trzymaj tylko małe salda, chyba że ufasz operatorowi.", + healthDisclaimer: "Dane o kondycji są prowadzone społecznościowo (MintRadar) — nieoficjalne i być może nieaktualne." + }, + appShop: { + title: "Sklep", + subtitle: "Gadżety SkateSpots dla ludzi, którzy kręcą tę scenę.", + comingSoon: "Wkrótce", + wearThe: "Noś", + scene: "Scenę", + heroDesc1: "Gadżety dla ludzi, którzy kręcą ten cały interes — sprzedawane", + locally: "lokalnie, na zamówienie", + heroDesc2: ". Napisz do mnie, ustalimy szczegóły, a zapłacisz w", + heroDesc3: "— Lightning lub Cashu — przy odbiorze. Bez kart, bez kont, bez robota od płatności, bez pośrednika zgarniającego część dropu.", + requestItem: "Poproś o przedmiot", + dmHint: "Otwiera prywatną, zaszyfrowaną wiadomość ze mną.", + lightning: "Lightning", + cashu: "Cashu", + localHandover: "Odbiór lokalny", + inTheWorks: "W przygotowaniu", + notForSale: "jeszcze nie w sprzedaży", + soon: "wkrótce", + tees: "Koszulki i bluzy", + decks: "Deski", + shopTools: "Narzędzia", + stickerPacks: "Pakiety naklejek", + stickerPacksDesc: "Pakiety nadchodzą. Projekty jeszcze nie — wydrukuj te dwa już teraz, za darmo.", + sticker: "Naklejka", + stickerTip: "Czarny wykrój. Wydrukuj na papierze na naklejki, wytnij wzdłuż czarnej krawędzi.", + poster: "Plakat", + posterTip: "Drukuje się na A3; pomniejsz do A4 (50%), a nadal skanuje się dobrze.", + printableAlt: "SkateSpots {{title}} — do druku", + print: "Drukuj", + printNote1: "Drukuj w", + actualSize: "100% / „Rozmiar rzeczywisty”", + printNote2: ", aby rozmiar był dokładny, a kod QR pozostał ostry — prowadzi do skate-spots.org. Pliki wektorowe, więc skalują się bez rozmycia.", + howBuying: "Jak działa kupowanie", + dmNotCart: "to DM, nie koszyk", + step1Title: "Napisz do mnie", + step1Desc: "Wyślij DM z tym, czego chcesz — przedmiot, rozmiar, kolor, cokolwiek.", + step2Title: "Ustalamy szczegóły", + step2Desc: "Cena w sats oraz gdzie i kiedy się spotkać. To rozmowa, nie kasa.", + step3Title: "Zapłać w sats", + step3Desc: "Lightning lub Cashu przy przekazaniu, potem twoje. Bez wysyłki, bez poczekalni." + }, + newsletter: { + newIssue: "Nowe wydanie", + composerTitle: "Opublikuj wydanie newslettera", + composerDesc: "Publikowane jako artykuł NIP-23 (kind 30023) na relayu społeczności. Subskrybenci zobaczą je w dzwonku powiadomień. Treść obsługuje Markdown.", + fieldTitle: "Tytuł", + identifier: "Identyfikator (slug)", + leaveBlank: "zostaw puste, aby wygenerować automatycznie", + reusingSlug: "Użycie istniejącego sluga edytuje tamto wydanie zamiast tworzyć nowe.", + summary: "Podsumowanie", + optional: "opcjonalne", + coverImage: "URL obrazka okładki", + bodyMarkdown: "Treść (Markdown)", + characters: "{{count}} znaków", + publishIssue: "Opublikuj wydanie", + issuePublished: "Wydanie opublikowane! 🛹", + issuePublishedDesc: "Subskrybenci zobaczą je w dzwonku powiadomień.", + publishFailed: "Publikowanie nie powiodło się", + couldNotReachRelay: "Nie udało się dotrzeć do żadnego relaya — sprawdź połączenie i spróbuj ponownie.", + tryAgain: "Spróbuj ponownie.", + publishedToNostr: "Opublikowano w Nostr", + publishedToast: "Opublikowano!", + postedToNostr: "Drop {{number}} opublikowany w Nostr.", + postToNostr: "Opublikuj w Nostr", + previewLabel: "Podgląd", + editFirst: "Najpierw edytuj", + previewNoteDesc: "Tak notka będzie wyglądać w większości klientów Nostr. Formatowanie różni się w zależności od klienta.", + editNoteDesc: "Edytuj tekst notki poniżej. Zmiany dotyczą tylko tej publikacji — plik źródłowy pozostaje niezmieniony.", + dropNumber: "Drop {{number}}", + publish: "Opublikuj", + publishing: "Publikowanie...", + dropIsOut: "Drop {{number}} jest dostępny", + daysAgo: "{{count}} dni temu", + dismiss: "Zamknij", + itsMonday: "To poniedziałek", + mondayDesc: "Czas na cotygodniowy newsletter. Jedno kliknięcie i AI napisze go z dziennika git.", + writeDrop: "Napisz Drop {{number}}", + dismissReminder: "Zamknij przypomnienie", + loginPrompt: "Zaloguj się przez Nostr, aby otrzymywać nowe dropy do skrzynki.", + subscribedToast: "Subskrybujesz! 🛹", + subscribedToastDesc: "Nowe dropy pojawią się w twoim dzwonku powiadomień w sekcji „News”.", + unsubscribed: "Anulowano subskrypcję", + unsubscribedDesc: "Nadal możesz czytać każde wydanie tutaj w dowolnym momencie.", + checking: "Sprawdzanie…", + subscribed: "Subskrybujesz", + unsubscribe: "Anuluj subskrypcję", + subscribeCta: "Zapisz się do newslettera", + archiveSynced: "Archiwum zsynchronizowane z Nostr", + missingCount: "{{count}} wydań archiwum nie ma jeszcze w Nostr", + backfillDesc: "Opublikuj {{list}} jako artykuły NIP-23, aby subskrybenci i czytelnicy długich treści mogli zobaczyć pełne archiwum. Strona zachowuje bogaty układ niezależnie od tego.", + backfill: "Uzupełnij {{count}} w Nostr", + publishing2: "Publikowanie…", + publishingLabel: "Publikowanie…", + backfilled: "Uzupełniono {{count}} wydań 🛹", + backfilledDesc: "Archiwum jest teraz dostępne w Nostr dla subskrybentów i czytelników.", + partialBackfill: "Opublikowano {{published}}, {{failed}} nie powiodło się", + retryFinish: "Ponów, aby dokończyć: {{list}}.", + notLoggedIn: "Nie zalogowano", + allIssues: "Wszystkie wydania", + brand: "Newsletter SkateSpots", + digTheDrop: "Podoba ci się drop? Zapnij go i nie przegap kolejnego.", + sectionStats: "Społeczność w liczbach", + sectionWhatsNew: "Co nowego", + sectionSpotOfWeek: "Spot tygodnia", + sectionCommunity: "Społeczność", + sectionSupport: "Wesprzyj projekt", + sectionLatestDrops: "Najnowsze dropy · na żywo z Nostr", + mappedBy: "Zmapowane przez", + viewOnMap: "Zobacz na mapie", + noSpotPicked: "W tym tygodniu nie wybrano spota. Zgłoś swój, a może trafi do kolejnego dropu.", + browseMap: "Przeglądaj mapę", + spotMap: "Mapa spotów", + statsBadge: "Statystyki", + supportDesc: "100% open source, finansowane przez społeczność, bez reklam, bez inwestorów. Jeśli to przydatne, zapnij to lub wesprzyj na Angor.", + readFull: "Przeczytaj pełne wydanie", + joinSkaters: "Dołącz do {{count}} skaterów otrzymujących dropy", + weeklyDrops: "Cotygodniowe dropy", + tagline: "Cotygodniowy newsletter · wysyłany, kiedy tylko chcemy", + freeNote: "Za darmo. Napędzane przez Nostr — twoja subskrypcja żyje na twoich kluczach i podąża za tobą między urządzeniami. Nowe dropy trafiają do twojego dzwonka powiadomień.", + live: "Na żywo", + builtOn: "Zbudowane na", + openSource: "Open source", + supportUs: "Wesprzyj nas", + freeToSkate: "Możesz swobodnie jeździć na deskorolce" + }, + stats: { + subtitle: "Metryki na żywo pobierane bezpośrednio z sieci Nostr. Przejrzyste, zdecentralizowane, weryfikowalne przez każdego.", + dataSource: "Źródło danych:", + updated: "zaktualizowano {{age}}", + refresh: "Odśwież", + partial: "Nie udało się dotrzeć do każdego relaya — te liczby mogą być niepełne.", + error: "Nie można teraz dotrzeć do relaya. Statystyki wczytają się po przywróceniu połączenia.", + atAGlance: "Społeczność w skrócie", + skateSpots: "Spoty", + listedShops: "Wymienione sklepy", + events: "Wydarzenia", + mappers: "Mapujący", + uniqueContributors: "unikalnych współtwórców", + labHeader: "The Lab · Kreatywni i usługi", + total: "{{count}} łącznie", + coaches: "Trenerzy", + filmers: "Filmowcy", + editors: "Montażyści", + photographers: "Fotografowie", + builders: "Budowniczowie", + artists: "Artyści", + graffiti: "Graffiti", + tattoo: "Tatuaże", + trainers: "Instruktorzy", + musicians: "Muzycy", + judges: "Sędziowie", + organizers: "Organizatorzy", + barbers: "Barberzy", + showFewer: "Pokaż mniej", + showAllCrafts: "Pokaż wszystkie 13 rzemiosł", + community: "Społeczność", + tours: "Wycieczki", + crews: "Ekipy", + marketplace: "Marketplace", + liveListings: "Aktywne oferty", + tradesRecorded: "Zarejestrowane transakcje", + satsTraded: "Wymienione sats", + zapsToMappers: "Zapy dla mapujących", + tradesNote1: "wzajemnych transakcji wśród", + tradesNote2: "osób. Sats są zgłaszane samodzielnie przez handlujących — aplikacja nie może zaobserwować płatności poza aplikacją — więc nagłówek liczy tylko", + mutual: "wzajemne", + tradesNote3: "transakcje z limitem na parę; surowe zgłoszenie to", + tradesNote4: "sats. „Zapy dla mapujących” liczy tylko potwierdzenia skierowane do naszych najlepszych współtwórców — to", + not: "nie", + tradesNote5: "globalny wolumen zapów.", + byRegion: "Spoty i sklepy według regionu", + resolving: "Rozwiązywanie {{count}} nieoznaczonych lokalizacji na podstawie współrzędnych… jednorazowo, potem zapisane w pamięci tego urządzenia.", + topCountries: "Najlepsze kraje", + topCities: "Najlepsze miasta", + other: "Inne", + otherCountriesTitle: "Kraje poza pierwszą szóstką", + otherCitiesTitle: "Miasta poza pierwszą szóstką", + uncategorised: "Nieskategoryzowane", + uncategorisedTitle: "Brak tagu miasta/kraju", + regionNote1: "Liczy", + spotsAndShops: "spoty i sklepy", + regionNote2: ", a nie skaterów — z własnego tagu miasta/kraju każdego z nich lub, gdy go brak, wyprowadzone ze współrzędnych pinezki (zapisane na twoim urządzeniu; kraje grupowane po kodzie ISO, jeśli jest), tylko relay społeczności, z wyłączeniem treści ukrytych przez moderację.", + ofTotal: "{{count}} z {{total}}", + regionNote3: "lokalizacji nie ma tagu lokalizacji i pokazują się jako „Nieskategoryzowane”.", + growth: "Wzrost w czasie", + chartCumulativeTitle: "Zmapowane spoty (narastająco)", + chartCumulativeDesc: "Łączna liczba spotów dodanych do mapy w czasie", + chartMonthlyTitle: "Aktywność miesięczna", + chartMonthlyDesc: "Nowe treści publikowane każdego miesiąca", + chartMappersTitle: "Aktywni mapujący / miesiąc", + chartMappersDesc: "Unikalni współtwórcy publikujący każdego miesiąca", + chartMixTitle: "Miks treści", + chartMixDesc: "Podział według typu treści (cały okres)", + noData: "Brak danych", + topMappers: "Najlepsi mapujący", + mostSpots: "— najwięcej dodanych spotów", + noMapperData: "Brak danych o mapujących", + topShops: "Najlepsze sklepy", + mostShops: "— najwięcej dodanych sklepów", + shopCount: "{{count}} sklepów", + noShopData: "Brak danych o sklepach", + supporters: "Wspierający społeczność", + fundedTitle: "Finansowane przez społeczność", + fundedDesc1: "Zdecentralizowany crowdfunding Bitcoin przez Angor.", + fundedDesc2: "Bez reklam, bez inwestorów, bez sprzedaży danych.", + backAngor: "Wesprzyj nas na Angor", + communityLink: "Społeczność →", + footer1: "Wszystkie dane są pobierane na żywo z", + footer2: "— publicznego relaya Nostr.", + footer3: "Każde zdarzenie jest podpisane przez swojego twórcę i weryfikowalne kryptograficznie.", + footer4: "Żadnej liczby nie da się sfałszować.", + spots: "Spoty", + shops: "Sklepy", + lab: "The Lab", + thisMonth: "+{{count}} w tym miesiącu", + fromActive: "{{count}} z aktywnych kont", + viewAll: "Zobacz wszystkie", + spotCount: "{{count}} spotów" + }, + leaderboard: { + mapEarn: "Mapuj i zarabiaj", + helpMap: "POMÓŻ MAPOWAĆ ŚWIAT", + intro: "Dodawaj spoty i sklepy, a wdzięczni skaterzy będą wysyłać ci zapy. Najlepsi współtwórcy mogą otrzymać dodatkowe nagrody!", + howItWorks: "Jak to działa", + step1Title: "1. Mapuj", + step1Desc: "Dodawaj spoty i sklepy ze zdjęciami i szczegółami", + step2Title: "2. Zbieraj zapy", + step2Desc: "Skaterzy, którym twoje spoty się przydadzą, dadzą ci napiwek", + step3Title: "3. Dodatkowe nagrody", + step3Desc: "Najlepsi mapujący mogą otrzymać dodatkowe nagrody z naszego funduszu", + proTips: "💡 Wskazówki, jak zdobyć więcej zapów:", + tipPhotos: "Dodaj 3+ zdjęcia", + tipDescriptions: "Pisz szczegółowe opisy", + tipLocation: "Dokładna lokalizacja", + mapShop: "Zmapuj sklep", + mapShopDesc: "Skateshopy, sklepy z deskorolkami", + mapSpot: "Zmapuj spota", + mapSpotDesc: "Parki, spoty uliczne, DIY", + shops: "Sklepy", + spotsLower: "spotów", + shopsLower: "sklepów", + contributions: "wkładu", + yourRanking: "Twoja pozycja", + spotsShops: "{{spots}} spotów • {{shops}} sklepów", + totalLower: "łącznie", + overall: "Ogólnie", + noContributions: "Brak wkładu. Bądź pierwszy!", + addFirstSpot: "Dodaj pierwszy spot", + noShops: "Nie zmapowano jeszcze żadnych sklepów", + addFirstShop: "Dodaj pierwszy sklep", + noSpots: "Nie zmapowano jeszcze żadnych spotów", + poweredBy: "Napędzane zapami społeczności", + poweredByDesc: "Gdy spot okaże się pomocny, zapnij mapującego! To najlepszy sposób, by podziękować i zachęcić do kolejnego wkładu.", + you: "Ty", + zapTitle: "Rankingi zapów", + zapSubtitle: "Spoty, które dostają najwięcej miłości — i skaterzy, którzy ją dają.", + thisWeek: "W tym tygodniu", + thisMonth: "W tym miesiącu", + allTime: "Wszech czasów", + topZappedSpots: "Najczęściej zapowane spoty", + noZaps: "Brak zapów w tym okresie. Bądź pierwszy — traf w ⚡ na spocie, który lubisz.", + topSupporters: "Najwięksi wspierający", + noZapsSent: "Brak wysłanych zapów w tym okresie.", + fromTop10: "⚡ {{amount}} sats od top 10", + supporter: "Wspierający", + skateShop: "Skateshop", + skateSpot: "Spot" + }, + supporters: { + our: "NASZA", + community: "SPOŁECZNOŚĆ", + heroDesc: "SkateSpots jest tworzone przez społeczność i dla niej. Wspierający, współpracownicy, partnerzy i przyjaciele, którzy utrzymują to darmowym i zdecentralizowanym.", + backAngor: "Wesprzyj nas na Angor", + backers: "Wspierający", + backersDesc: "Skaterzy, którzy wsparli SkateSpots — finansowanie on-chain przez Angor i zapy Lightning dla projektu.", + sourceAngor: "Angor", + supportersTotals: "{{count}} wspierających · {{angor}} sats przez Angor · {{zap}} sats zapowanych", + quietNote: "Plus wszyscy, którzy wsparli po cichu — dziękujemy. ❤️", + silentTitle: "Prywatnie on-chain (płatności ciche)", + silentDesc: "Jedna nazwa, świeży adres dla każdej płatności — on-chain przez płatności ciche lub Lightning z tego samego rekordu. Nic do ponownego użycia, nic do powiązania.", + silentCopyName: "Kopiuj nazwę", + silentCopied: "Skopiowano", + silentWallets: "Wymaga portfela obsługującego nazwy płatności / płatności ciche: Sparrow, Cake, Dana, Phoenix, BlueWallet, Wasabi, Nunchuk lub BitBox02.", + wayLightningTitle: "Natychmiast i publicznie", + wayLightningDesc: "Zapnij SkateSpots albo zapłać po cichu. Działa bez logowania.", + waySilentTitle: "Prywatnie on-chain", + waySilentDesc: "Nazwa płatności cichych — nowy adres dla każdej płatności.", + wayAngorTitle: "Sfinansuj rozwój", + wayAngorDesc: "Angor — etapowe wydanie, zwrotne powyżej 100 tys. sats.", + donateTitle: "Wesprzyj SkateSpots", + donateDesc: "Trzy tory, trzy powody — wybierz, co ci pasuje. Każdy sat utrzymuje mapę darmową, bez reklam i open source.", + donatePageLink: "Otwórz prostą stronę do wpłat", + updatedAt: "Zaktualizowano {{when}}", + tiersNote: "Poziomy: Wspierający poniżej 100 tys. sats · Patron 100 tys.–1 mln · Legenda 1 mln+", + tierEmpty: "Jeszcze nikogo — bądź pierwszy.", + joinSupporters: "Dołącz do {{count}} wspierających", + showAll: "Pokaż wszystkich {{count}}", + showLess: "Pokaż mniej", + impactSeeStats: "Zobacz pełny obraz →", + impactAsOf: "na żywo z relayów społeczności", + anonymousBacker: "Anonimowy wspierający", + beFirstBacker: "Brak publicznych wspierających — bądź pierwszy.", + backersTotal: "{{count}} wspierających · zebrano {{amount}} sats", + verifiedOnChain: "Zweryfikowane on-chain", + supportedBy: "Wspierane przez {{count}}", + tierSupporter: "Wspierający", + tierPatron: "Patron", + tierLegend: "Legenda", + topZappers: "Zapowali SkateSpots", + topZappersDesc: "Skaterzy, którzy wysłali publiczny zap bezpośrednio do projektu. Ciche płatności nie są tu wymienione.", + paysFor: "Na co idzie twoje wsparcie", + paysForDesc: "Gdzie trafia każdy sat — bez pensji, bez biur, bez reklam.", + payRelay: "Hosting relayów", + payDomain: "Domena i TLS", + payAi: "Węzeł AI / ContextVM", + payDev: "Czas programowania", + payOps: "Operacje", + payMarketing: "Marketing", + payRelayDesc: "Utrzymuje mapę online i odporną.", + payDomainDesc: "Nazwa, certyfikat, bezpieczne połączenie.", + payAiDesc: "Sasquatch, przewodnik społeczności.", + payDevDesc: "Budowanie i naprawianie SkateSpots.", + payOpsDesc: "Mało efektowna praca, która utrzymuje to działanie.", + payMarketingDesc: "Docieranie do nowych lokalnych scen i skateshopów.", + impact: "Dotychczasowy wpływ", + impactDesc: "Co zbudowała społeczność — sfinansowane przez skaterów.", + impactSpots: "Spoty", + impactCrews: "Ekipy", + impactEvents: "Wydarzenia", + impactLab: "Profesjonaliści The Lab", + impactShops: "Sklepy", + impactMappers: "Mapujący", + support: "Wesprzyj", + supportDesc: "Sfinansuj SkateSpots na Angor — zdecentralizowany, on-chain crowdfunding Bitcoin. Bez pośredników, bez KYC.", + collaborators: "Współpracownicy", + collaboratorsDesc: "Osoby aktywnie budujące SkateSpots — deweloperzy, projektanci, operatorzy relayów.", + partners: "Partnerzy", + partnersDesc: "Organizacje i projekty, z którymi blisko współpracujemy.", + friends: "Przyjaciele", + friendsDesc: "Ludzie, z którymi się zgadzamy.", + backTitle: "Wesprzyj projekt na Angor", + backDesc: "Angor to zdecentralizowane, on-chain finansowanie Bitcoin oparte na Nostr — twoje środki pozostają pod twoją kontrolą, uwalniane etapowo, bez powiernika trzymającego pulę. Wpłaty do 100 000 sats działają jak darowizna (bez uścisku odzyskiwania); większe kwoty to inwestycje, których niewydane środki można odzyskać. Każdy sat idzie na rozwój, hosting relayów i utrzymanie SkateSpots darmowym dla każdego skatera na ziemi.", + donateNote: "Wolisz zwykłą darowiznę? ⚡ Zapnij poniżej — nic do zwrotu, nic do odzyskania.", + openAngor: "Otwórz Angor", + orZap: "albo ⚡ zapnij dowolny spot, ekipę lub twórcę bezpośrednio w aplikacji", + wantCollaborate: "Chcesz współpracować?", + wantCollaborateDesc: "Deweloperzy, projektanci, skaterzy z umiejętnościami — odezwij się.", + viewNostrHub: "Zobacz na NostrHub", + wantPartner: "Chcesz nawiązać współpracę ze SkateSpots? Odezwij się na Nostr.", + comingSoon: "Wkrótce", + wantListed: "Chcesz znaleźć się na liście?", + wantListedDesc: "Wyślij logo (PNG/WebP, przezroczyste tło, min. 200×200 px) i swój URL przez DM na Nostr — tylko jeśli masz dobry vibe.", + whyTitle1: "Dlaczego potrzebujemy", + whyTitle2: "wsparcia", + whyDesc: "SkateSpots jest w 100% darmowe, open source i zbudowane na Nostr — zdecentralizowanym protokole bez centralnego serwera, który można wyłączyć. Bez reklam, bez sprzedaży danych, bez inwestorów. Każdy sat idzie bezpośrednio na rozwój, hosting relayów i utrzymanie tego darmowym dla każdego skatera na ziemi.", + why1Title: "Natywne dla Nostr", + why1Desc: "Bez centralnego serwera. Twoje dane żyją na relayach, które wybierzesz.", + why2Title: "Napędzane Bitcoinem", + why2Desc: "Zarabiaj sats za mapowanie spotów. Wydawaj je w lokalnych sklepach.", + why3Title: "Darmowe na zawsze", + why3Desc: "Open source, bez paywalli, bez śledzenia, bez finansowania VC.", + thankYou: "Dziękujemy. Każdy sat utrzymuje spoty na mapie. 🛹⚡", + license: "Licencja", + faq: "FAQ" + }, + admin: { + confirmed: "Potwierdzone", + title: "Kolejka przeglądu", + subtitle: "Spoty, sklepy, wydarzenia, wycieczki i sprzęt, które wyzwalają sygnały spamu. Ukryj i Potwierdź to miękkie, odwracalne etykiety; zgłoszenia mają pierwszeństwo. Nic nie jest usuwane.", + tabReports: "Zgłoszenia", + tabSpots: "Spoty", + tabShops: "Sklepy", + tabEvents: "Wydarzenia", + tabTours: "Wycieczki", + tabGear: "Sprzęt", + tabCrews: "Ekipy", + tabLab: "The Lab", + tabClaims: "Roszczenia", + nothingToReview: "Nie ma nic do przeglądu — nic tego rodzaju nie wyzwala sygnałów spamu.", + hideActioned: "Ukryj obsłużone", + showActioned: "Pokaż obsłużone ({{count}})", + undoAll: "Cofnij wszystkie {{count}}", + undoAllTitle: "Cofnąć każdy werdykt w tej zakładce?", + undoAllDesc: "To przywraca każdy element do neutralnego stanu — nie ukryty, nie poświadczony. Publikuje jedną publiczną etykietę na element, więc z Amber zobaczysz {{count}} ekranów zatwierdzenia.", + undoCount: "Cofnij {{count}}", + undo: "Cofnij", + confirm: "Potwierdź", + hide: "Ukryj", + hideIt: "Ukryj to", + hideForEveryone: "Ukryć to dla wszystkich?", + hideForEveryoneDesc: "To usuwa element z przeglądania i wyszukiwania dla każdego użytkownika SkateSpots. To publiczna, odwracalna etykieta — możesz ją cofnąć z tej kolejki.", + hidden: "Ukryte", + hiddenDesc: "Usunięte z aplikacji przez publiczną etykietę. Odwracalne.", + couldNotHide: "Nie udało się ukryć", + notASpot: "To nie jest spot", + lookAtIt: "Spójrz" + }, + profile: { + nip05Verified: "Zweryfikowano NIP-05", + nip05NotVerified: "NIP-05 niezweryfikowany względem tego klucza", + message: "Wiadomość", + zapsReceived: "otrzymanych zapów", + memberSince: "Członek od", + badges: "Odznaki", + sponsorsSupport: "Sponsorzy i wsparcie", + skater: "Skater", + stance: "Postawa", + skating: "Jazda", + homeSpot: "Domowy spot", + basedIn: "Mieszka w", + addSkateDetails: "Dodaj swoje dane skatera", + addSkateDetailsDesc: "Ustaw postawę, style i poziom, aby pojawić się w katalogu skaterów.", + spotsAdded: "Dodane spoty", + shopsAdded: "Dodane sklepy", + noSpots: "Nie dodałeś jeszcze żadnych spotów", + noSpotsDesc: "Umieść swój lokalny spot na mapie →", + stash: "Stash", + gear: "Sprzęt", + crews: "Ekipy", + info: "Info", + lightning: "Lightning", + silentPayment: "Płatność cicha", + coordinator: "Koordynator", + coordinatorAdded: "Dodano koordynatora", + add: "Dodaj", + messagePrivately: "Napisz prywatnie", + founder: "Założyciel", + member: "Członek", + supportSkater: "Wesprzyj tego skatera", + supportSkaterDesc: "Wyślij napiwek, aby podziękować za wkład" + }, + index: { + joinCommunity: "Dołącz do społeczności, aby dodawać spoty, tworzyć wydarzenia i nie tylko", + topZapped: "NAJCZĘŚCIEJ ZAPOWANE", + topZappedDesc: "Najczęściej wspierane spoty w tym miesiącu", + leaderboard: "Ranking", + newHere: "NOWY TU?", + newHereDesc: "Utwórz darmowe konto, aby dodawać spoty, dołączać do wydarzeń, łączyć się ze skaterami i stać się częścią społeczności. Bez e-maila.", + followFounder: "Obserwuj założyciela", + followFounderDesc: "Przytrzymaj awatar przez 3 sekundy, aby obserwować i być na bieżąco z nowymi funkcjami i wydarzeniami!", + createAccount: "Utwórz konto", + accountWorks: "Twoje konto działa we wszystkich aplikacjach w sieci", + footerTagline: "Open Source • Własność społeczności • Bez reklam" + }, + stash: { + title: "Mój Stash", + loginDesc: "Twój prywatny inwentarz sprzętu. Śledź, co posiadasz, ustalaj ceny i wybiórczo udostępniaj handlującym.", + encrypted: "Zaszyfrowane", + syncsEverywhere: "Synchronizuje się wszędzie", + p2pTrading: "Handel P2P", + encryptionRequired: "Wymagane szyfrowanie", + encryptionRequiredDesc: "Twój Stash jest zaszyfrowany dla prywatności. Użyj signera obsługującego szyfrowanie NIP-44 (takiego jak Alby, nos2x lub Amber).", + learnSigners: "Dowiedz się o signerach", + select: "Wybierz", + stash: "Stash", + wishlist: "Lista życzeń", + allCategories: "Wszystkie kategorie", + sortNewest: "Najnowsze", + sortValue: "Wartość", + sortCondition: "Stan", + sortAz: "A–Z", + friendsOnly: "Tylko znajomi", + addToWishlist: "Dodaj do listy życzeń", + addItemToStash: "Dodaj przedmiot do Stasha", + addItem: "Dodaj przedmiot", + editItem: "Edytuj przedmiot", + publicStash: "Publiczny Stash", + listView: "Widok listy", + gridView: "Widok siatki", + uploading: "Wysyłanie...", + addPhotos: "Dodaj zdjęcia", + wishlistReqPlaceholder: "Jakieś szczególne wymagania...", + itemDescPlaceholder: "Opisz przedmiot, ewentualne uszkodzenia...", + itemsCount: "{{count}} przedmiotów", + wishlistEmpty: "Lista życzeń jest pusta", + wishlistEmptyDesc: "Dodaj sprzęt, którego szukasz — dopasujemy cię do Stashów twoich znajomych.", + stashEmpty: "Twój Stash jest pusty", + stashEmptyDesc: "Zacznij śledzić swój sprzęt. Deski, trucki, buty — dodaj raz, miej dostęp wszędzie przez Nostr.", + noMatch: "Brak pasujących przedmiotów", + noMatchDesc: "Spróbuj dostosować filtry.", + backupTransfer: "Kopia zapasowa i transfer", + backupDesc: "Twój Stash jest zaszyfrowany w Nostr. Trzymaj kopię, którą kontrolujesz — martwy relay lub nowe konto nie zgubią twojej listy sprzętu.", + exportTitle: "Zaszyfrowana kopia zapasowa", + exportDialogDesc: "Zapisz {{count}} przedmiotów do pliku. Zaszyfruj go, aby wyciekły plik nie był wyciekiem.", + modePassword: "Hasło", + modeKey: "Mój klucz", + password: "Hasło", + confirmPassword: "Potwierdź hasło", + passwordHint: "Użyj co najmniej 8 znaków. Nie ma odzyskiwania — nie zapomnij go.", + keyModeHint: "Zaszyfrowane twoim kluczem Nostr. Tylko ten klucz może je otworzyć — nic do zapamiętania.", + exportPlaintext: "Eksportuj bez szyfrowania", + pwTooShort: "Użyj co najmniej 8 znaków.", + pwMismatch: "Hasła nie są zgodne.", + exportFailed: "Nie udało się utworzyć kopii zapasowej.", + unlockTitle: "Odblokuj kopię zapasową", + unlockDesc: "Ta kopia zapasowa jest chroniona hasłem.", + unlock: "Odblokuj", + unlockFailed: "Nie udało się odblokować kopii zapasowej.", + show: "Pokaż", + hide: "Ukryj", + strength: "Siła hasła", + strengthWeak: "Słabe", + strengthFair: "Średnie", + strengthGood: "Dobre", + strengthStrong: "Silne", + filenameWillSave: "Zapisze się jako {{name}}", + export: "Eksportuj", + import: "Importuj", + exported: "Stash wyeksportowany", + exportedDesc: "Zapisano {{count}} przedmiotów do pliku.", + noItemsInFile: "Nie znaleziono przedmiotów w tym pliku.", + noValidItems: "Nie znaleziono prawidłowych przedmiotów w tym pliku.", + imported: "Zaimportowano {{count}} przedmiotów", + importSkipped: "{{count}} pominięto (już są w twoim Stashu).", + importAdded: "Dodano do twojego Stasha.", + importFailed: "Import nie powiódł się", + couldNotRead: "Nie udało się odczytać tego pliku.", + updateFailed: "Nie udało się zaktualizować twojego Stasha", + updatedCount: "Zaktualizowano {{count}} przedmiotów", + markedForSale: "Oznaczono {{count}} do sprzedaży", + unmarkedCount: "Odznaczono {{count}}", + removedCount: "Usunięto {{count}} przedmiotów", + selectedCount: "{{count}} wybranych", + selectAll: "Zaznacz wszystkie", + visibilityPublic: "Publiczny", + visibilityPrivate: "Prywatny", + forSale: "Na sprzedaż", + remove: "Usuń", + bulkDeleteTitle: "Usunąć {{count}} przedmiotów?", + bulkDeleteDesc: "To przepisuje twój zaszyfrowany Stash w jednym podpisie i nie można tego tu cofnąć. Wyeksportuj najpierw kopię zapasową, jeśli nie jesteś pewien.", + deleteTitle: "Usunąć ze Stasha?", + deleteDesc: "„{{title}}” zostanie usunięty z twojego Stasha", + deleteDescPublic: " i usunięty z publicznej witryny", + deleteUndone: ". Tego nie można cofnąć.", + deleteDescGeneric: "Ten przedmiot zostanie usunięty z twojego Stasha. Tego nie można cofnąć.", + listOnMarketplace: "Wystaw na Marketplace", + noPriceSet: "Nie ustawiono ceny", + categoryLabel: "Kategoria", + photosLabel: "Zdjęcia", + willingToSell: "Chętny do sprzedaży", + willingToTrade: "Chętny do wymiany", + whereIsThisItem: "Gdzie jest ten przedmiot?", + visibilityLabel: "Widoczność", + visibilityPrivateOnlyYou: "Prywatny — tylko ty", + visibilityFriendsMutual: "Znajomi — wzajemne obserwacje", + visibilityPublicAnyone: "Publiczny — każdy", + visibilityFriends: "Znajomi", + brandLabel: "Marka", + sizeLabel: "Rozmiar", + descriptionLabel: "Opis", + conditionLabel: "Stan", + itemName: "Nazwa przedmiotu", + saveChanges: "Zapisz zmiany", + listItemDialogTitle: "Wystaw „{{title}}”", + pickUpWhere: "Gdzie kupujący mogą odebrać ten przedmiot?", + linkToSpot: "Powiąż ze spotem", + linkToSpotDesc: "Najlepsze do lokalnej sprzedaży • Pojawia się na stronie spota i mapie", + recommended: "Zalecane", + noSpecificSpot: "Bez konkretnego spota", + noSpecificSpotDesc: "Widoczne tylko na stronie Marketplace", + tipLinkedSpots: "💡 Wskazówka: oferty powiązane ze spotami łatwiej znaleźć lokalnym skaterom.", + anyoneCanSee: "Każdy może je zobaczyć na twoim profilu.", + seeWhatOthersSee: "Zobacz, co widzą inni", + inventory: "Inwentarz", + publicWantsNote: "Publiczne poszukiwania są publikowane na Marketplace jako ogłoszenia „poszukiwane”, aby sprzedający mogli cię znaleźć.", + howItWorks: "Jak to działa", + tapToMarketplace: "Dotknij, aby przejść do Marketplace →", + viewWishlist: "Zobacz listę życzeń", + tipEditItems: "Edytuj przedmioty przyciskiem ołówka", + tipListForSale: "Wystaw na sprzedaż przyciskiem sklepu", + tipAddPhotos: "Dodaj zdjęcia dla lepszych ofert wymiany", + tipKeySyncs: "Klucz Nostr synchronizuje się na wszystkie urządzenia", + itemsReadyToSell: "{{count}} przedmiotów gotowych do sprzedaży" + } + }, +}; export default plBatch4; diff --git a/src/i18n/pl/batch5.ts b/src/i18n/pl/batch5.ts index 6461a15..3410db1 100644 --- a/src/i18n/pl/batch5.ts +++ b/src/i18n/pl/batch5.ts @@ -1,4 +1,1597 @@ -/** pl — batch 5. Filled by the translation pass; empty until then. */ -const plBatch5 = {}; +/** pl — batch 5. Filled by the 2026-10-07 Polish translation pass. */ +const plBatch5 = { + labUi: { + activeCount: "{{count}} aktywnych", + addMusicProfile: "Dodaj profil muzyczny", + all: "Wszystkie", + clearAll: "Wyczyść wszystko", + collective: "Kolektyw", + filters: "Filtry", + following: "Obserwowani", + getRiderCard: "Zdobądź kartę ridera", + judgeEvents: "Sędziuj wydarzenia", + justASkater: "Po prostu", + labForServices: "The Lab jest dla usług. Przeglądaj i dołącz do całej społeczności skaterów", + loginToOffer: "Zaloguj się, aby oferować usługi", + newest: "Najnowsze", + noResults: "Brak wyników", + offer: "Oferuj", + offerBuilding: "Oferuj budowanie", + offerCoaching: "Oferuj coaching", + offerCuts: "Oferuj strzyżenie", + offerDesignArt: "Oferuj design / sztukę", + offerEditing: "Oferuj montaż", + offerFilming: "Oferuj filmowanie", + offerGraffiti: "Oferuj graffiti", + offerPhotography: "Oferuj fotografię", + offerServices: "Oferuj usługi", + yourProfiles: "Twoje profile w The Lab", + preview: { + button: "Podgląd", + title: "Podgląd na żywo", + desc: "Tak będzie wyglądał Twój profil {{noun}} po opublikowaniu.", + untitled: "Twoje imię", + noBio: "Nie ma jeszcze bio — dodaj zdanie o tym, co oferujesz.", + years: "{{count}} lat doświadczenia", + portfolio: "Portfolio", + note: "Tylko podgląd — nic nie zostało jeszcze opublikowane." + }, + draft: { + title: "Masz niezapisany szkic", + body: "Wróć tam, gdzie skończyłeś — nic nie zostanie opublikowane, dopóki nie naciśniesz Opublikuj.", + resume: "Wróć do szkicu", + discard: "Odrzuć szkic" + }, + progress: { + title: "Kompletność profilu", + count: "{{done}} z {{total}} gotowe", + photo: "Zdjęcie", + bio: "Bio", + skills: "Umiejętności", + rate: "Stawka", + location: "Lokalizacja", + contact: "Kontakt" + }, + wizard: { + identity: "Tożsamość", + offer: "Co oferujesz", + rates: "Stawki", + contact: "Kontakt", + media: "Media" + }, + offerTattoo: "Oferuj tatuaże", + offerTraining: "Oferuj trening / fizjoterapię", + organizeEvents: "Organizuj wydarzenia", + resultsMany: "{{count}} wyników", + resultsOne: "{{count}} wynik", + searchCityPlaceholder: "Miasto…", + searchNamePlaceholder: "Imię, bio…", + showResults: "Pokaż wyniki", + showResultsActive: "Pokaż wyniki · {{count}} aktywnych", + skaterWord: "skater", + sortBy: "Sortuj według", + theCrew: "The Crew", + topRated: "Najwyżej oceniani", + trusted: "Zaufani", + trustLevel: "Poziom zaufania", + yearsExp: "{{count}} lat dośw.", + tabCoaches: "Coachowie", + tabFilmers: "Filmerzy", + tabPhoto: "Fotografia", + tabEditors: "Montażyści", + tabBuilders: "Builderzy", + tabArtists: "Artyści", + tabGraffiti: "Graffiti", + tabTattoo: "Tatuaże", + tabTrainers: "Trenerzy", + tabMusic: "Muzyka", + tabJudges: "Sędziowie", + tabOrganizers: "Organizatorzy", + tabBarbers: "Barberzy", + filterSkillsToLearn: "Umiejętności do nauki", + filterContentType: "Typ treści", + filterEquipmentStyle: "Sprzęt i styl", + filterServices: "Usługi", + filterCamera: "Kamera", + filterLenses: "Obiektywy", + filterLighting: "Oświetlenie", + filterSupportRig: "Podparcie i rig", + filterStyle: "Styl", + filterWhatTheyBuild: "Co budują", + filterMaterialsTrade: "Materiały i rzemiosło", + filterProjectScale: "Skala projektu", + filterWhatTheyMake: "Co tworzą", + filterMedium: "Medium", + filterSoftwareTools: "Oprogramowanie i narzędzia", + filterWorkContext: "Kontekst pracy", + filterMethod: "Metoda", + filterFocus: "Specjalizacja", + filterInjuriesTreated: "Leczone urazy", + filterCredentialsSetting: "Kwalifikacje i miejsce", + filterGenre: "Gatunek", + filterInstrumentsRole: "Instrumenty i rola", + filterEventFormats: "Formaty wydarzeń", + filterSpecialty: "Specjalność", + filterLevelCircuit: "Poziom / cykl", + filterEventTypes: "Typy wydarzeń", + filterWhatYouHandle: "Co obsługujesz", + filterScale: "Skala", + filterWhatTheyOffer: "Co oferują", + filterSignatureStyles: "Charakterystyczne style", + filterSetting: "Miejsce", + filterEditType: "Typ montażu", + role: { + coach: "Coach", + filmer: "Filmer", + builder: "Builder", + editor: "Montażysta wideo", + photographer: "Photographer", + skater: "Skater" + }, + empty: { + footer: "Masz pytania? Sprawdź FAQ →", + loginSuffix: "aby utworzyć profil.", + coachesTitle: "Nie ma jeszcze coachów", + coachesBody: "Bądź pierwszy i zaoferuj coaching skateboardingu w swojej okolicy.", + filmersTitle: "Nie ma jeszcze filmerów", + filmersBody: "Bądź pierwszy i zaoferuj filmowanie skateboardingu — klipy, pełne partie, relacje z zawodów i więcej.", + photographersTitle: "Nie ma jeszcze fotografów", + photographersBody: "Bądź pierwszy i zaoferuj fotografię skateboardingu w swojej okolicy — ujęcia akcji, sekwencje, sesje edytorskie i więcej.", + editorsTitle: "Nie ma jeszcze montażystów wideo", + editorsBody: "Bądź pierwszy i zaoferuj usługi montażu wideo ze skateboardingu.", + buildersTitle: "Nie ma jeszcze builderów", + buildersBody: "Bądź pierwszy i dodaj budowę ramp, parków lub DIY — beton, drewno, poręcze i więcej.", + artistsTitle: "Nie ma jeszcze artystów", + artistsBody: "Bądź pierwszy i zaoferuj grafiki deskorolek, logotypy, plakaty i merch dla sceny.", + graffitiTitle: "Nie ma jeszcze grafficiarzy", + graffitiBody: "Bądź pierwszy i zaoferuj piece, murale i sztukę do skateparków w swojej okolicy.", + tattooTitle: "Nie ma jeszcze tatuażystów", + tattooBody: "Bądź pierwszym tatuażystą ze sceny deskorolkowej w katalogu — flash, custom, fine line i więcej.", + trainersTitle: "Nie ma jeszcze trenerów", + trainersBody: "Bądź pierwszym trenerem lub fizjoterapeutą, który pomaga skaterom być silnymi i zdrowymi.", + musiciansTitle: "Nie ma jeszcze muzyków", + musiciansBody: "Skate'ujesz i tworzysz muzykę? Dodaj swój zespół lub projekt solowy — gatunki, instrumenty i linki.", + judgesTitle: "Nie ma jeszcze sędziów", + judgesBody: "Prowadzisz uczciwe zawody? Dopisz się, aby sędziować Game of S.K.A.T.E., jamy best trick, zawody i przystanki tras.", + organizersTitle: "Nie ma jeszcze organizatorów", + organizersBody: "Organizujesz jamy, zawody, spotkania lub dema? Dopisz się, aby skaterzy mogli Cię znaleźć i zarezerwować.", + barbersTitle: "Nie ma jeszcze barberów", + barbersBody: "Strzyżesz skaterów? Dodaj swoje krzesło lub usługę mobilną, żeby scena mogła się odświeżyć." + }, + become: { + addNip05: "Dodaj NIP-05 w ustawieniach", + backToLab: "Powrót do The Lab", + bioWorkLabel: "Bio / o Twojej pracy", + checkContact: "Sprawdź swoje dane kontaktowe", + cityArea: "Miasto / obszar", + cityCountry: "Miasto, kraj", + connectWallet: "Połącz portfel", + connectWalletNwc: "Połącz portfel przez NWC", + contactInfo: "Dane kontaktowe", + contactInfoDesc: "Jak klienci mogą się z Tobą skontaktować (wszystko opcjonalne, ale zalecane)", + coordinatesOptional: "Współrzędne (opcjonalne)", + email: "E-mail", + failedToPublish: "Nie udało się opublikować", + fromNostrProfile: "Z Twojego profilu Nostr", + geolocationUnsupported: "Geolokalizacja nie jest obsługiwana", + getting: "Pobieranie…", + headline: "Nagłówek", + headlineHint: "Wyświetlany jako tytuł na Twojej karcie w The Lab — np. „{{example}}”. Domyślnie Twoje imię.", + imageUploaded: "Zdjęcie przesłane", + instagram: "Instagram", + invalidEmail: "Podaj prawidłowy adres e-mail.", + invalidPortfolio: "Podaj prawidłowy URL portfolio.", + invalidWebsite: "Podaj prawidłowy URL strony.", + latitude: "Szerokość geograficzna", + learnHow: "Dowiedz się jak", + locationError: "Błąd lokalizacji", + locationFound: "Znaleziono lokalizację", + loginRequired: "Wymagane logowanie", + loginRequiredDesc: "Musisz się zalogować, aby utworzyć profil ({{role}}).", + loginRequiredDescCraft: "Musisz się zalogować, aby utworzyć profil {{noun}}.", + longitude: "Długość geograficzna", + nip05Recommended: "Zalecana weryfikacja NIP-05", + nip05RecommendedDesc: "Zweryfikuj swoją tożsamość, aby zbudować zaufanie klientów.", + noWallet: "Brak połączonego portfela", + otherSocial: "Inne media społecznościowe", + paymentSetup: "⚡ Wymagana konfiguracja płatności", + phoneNumber: "Numer telefonu", + profilePhoto: "Zdjęcie profilowe", + profilePublished: "Twój profil został opublikowany.", + publishing: "Publikowanie...", + socialMedia: "Media społecznościowe", + tip: "💡 Wskazówka: większość portfeli Lightning obsługuje NWC (Alby, Minibits, Zeus, Coinos).", + tipWithTime: "💡 Wskazówka: większość portfeli Lightning obsługuje NWC (Alby, Minibits, Zeus, Coinos). Konfiguracja zajmuje 30 sekund.", + upload: "Prześlij", + uploadFailed: "Przesyłanie nie udało się", + uploadImage: "Prześlij zdjęcie", + uploading: "Przesyłanie…", + useCurrentLocation: "Użyj bieżącej lokalizacji", + useMyLocation: "Użyj mojej lokalizacji", + usingNwc: "Używanie Nostr Wallet Connect", + usingWebln: "Używanie rozszerzenia przeglądarki WebLN", + walletConnected: "Portfel połączony — gotowy do przyjmowania płatności!", + website: "Strona internetowa", + yearsExperience: "Lata doświadczenia" + }, + coachForm: { + anonymous: "Anonimowy coach", + bioLabel: "Bio / filozofia coachingu", + bioPlaceholder: "Twoje doświadczenie, styl nauczania...", + create: "UTWÓRZ PROFIL COACHA", + created: "Profil coacha utworzony!", + createPro: "UTWÓRZ PROFIL PRO COACHA", + dmNote: "💬 Uczniowie mogą pisać do Ciebie bezpośrednio przez szyfrowane wiadomości SkateSpots", + heading: "Zostań coachem", + headlineExample: "Skate Coach Berlin", + hourlyRate: "Stawka godzinowa", + identity: "Twoja tożsamość coacha", + nip05Reason: "Dodaj identyfikator NIP-05, aby zweryfikować swoją tożsamość i zbudować zaufanie uczniów — pokazuje im, że jesteś prawdziwym coachem.", + paymentDesc: "Aby otrzymywać płatności za lekcje od uczniów, musisz połączyć portfel Lightning. Uczniowie zapłacą Ci bezpośrednio za sesje coachingowe.", + profileDesc: "Opowiedz uczniom o swoim doświadczeniu", + profileTitle: "Profil coacha", + ratePlaceholder: "5000 sats/godz.", + selectSkill: "Wybierz co najmniej jedną umiejętność.", + skillsLabel: "Umiejętności, których uczę * (wybierz co najmniej jedną)", + skillsRequired: "Umiejętności są wymagane", + formatsLabel: "Formaty sesji", + formatsHint: "Jak prowadzisz coaching.", + levelsLabel: "Nauczane poziomy", + agesLabel: "Grupy wiekowe", + credentialsLabel: "Kwalifikacje i bezpieczeństwo", + credentialsHint: "Deklarowane samodzielnie — SkateSpots ich nie weryfikuje.", + languagesLabel: "Języki, w których mówisz", + languagesHint: "Dodaj języki, w których możesz prowadzić coaching.", + languagePlaceholder: "np. polski, angielski", + availabilityLabel: "Dostępność", + bookingLabel: "Link do rezerwacji", + bookingHint: "Opcjonalne — strona, na której uczniowie mogą zarezerwować i zapłacić.", + galleryLabel: "Zdjęcia portfolio", + galleryHint: "Pokaż prawdziwe sesje, uczniów i spoty (do 12).", + galleryAdd: "Dodaj zdjęcia portfolio", + galleryUploaded: "Przesłane zdjęcia: {{count}}", + videoLabel: "Showreel", + videoHint: "Opcjonalne — film z Twojego coachingu na YouTube lub Instagramie.", + formatOneOnOne: "1 na 1", + formatGroup: "Grupowe", + formatCamp: "Camp", + formatVideo: "Analiza wideo", + formatContestPrep: "Przygotowanie do zawodów", + formatParkLesson: "Lekcja w parku", + formatAdaptive: "Adaptacyjne", + formatGirls: "Sesja dla dziewczyn", + formatAfterSchool: "Po szkole", + levelBeginner: "Początkujący", + levelIntermediate: "Średniozaawansowany", + levelAdvanced: "Zaawansowany", + levelCompetition: "Zawodniczy", + ageKids: "Dzieci", + ageTeens: "Nastolatki", + ageAdults: "Dorośli", + ageSeniors: "Seniorzy", + certFirstAid: "Pierwsza pomoc", + certCpr: "RKO", + certSafeguarding: "Ochrona małoletnich", + certBackgroundCheck: "Sprawdzenie niekaralności", + certInsured: "Ubezpieczenie", + certFederation: "Trener federacji narodowej", + certQualification: "Kwalifikacje trenerskie", + certJudge: "Sędzia zawodów", + certNoteLabel: "Inne kwalifikacje (opcjonalne)", + certNotePlaceholder: "np. Skateboard GB Level 2, 8 lat coachingu…", + availWeekdays: "Dni robocze", + availWeekends: "Weekendy", + availEvenings: "Wieczory", + availAfterSchool: "Po szkole", + availHolidays: "Wakacje szkolne", + availSeasonal: "Sezonowo", + sectionWhatYouCoach: "Czego uczysz", + sectionCredentials: "Kwalifikacje i bezpieczeństwo", + sectionAvailability: "Dostępność i rezerwacja", + sectionWhereYouCoach: "Gdzie prowadzisz coaching", + sectionPortfolio: "Portfolio", + rateAmountLabel: "Stawka", + rateCurrencySats: "sats", + rateCurrencyUsd: "USD", + rateCurrencyEur: "EUR", + rateCurrencyGbp: "GBP", + perHour: "za godzinę", + perSession: "za sesję", + perHalfDay: "za pół dnia", + perDay: "za dzień", + perCamp: "za camp", + perProject: "za projekt", + perEvent: "za wydarzenie", + perGig: "za koncert", + perShoot: "za sesję zdjęciową", + perPiece: "za piece", + perCut: "za montaż", + perMonth: "za miesiąc", + availByAppointment: "Po umówieniu", + rateNotesLabel: "Uwagi do stawki (opcjonalne)", + rateNotesPlaceholder: "Elastyczna stawka, pierwsza sesja gratis, dojazd w cenie…", + sectionPayments: "Płatności", + paymentMethodsHint: "Jak klienci mogą Ci płacić. To tylko deklaracja — SkateSpots nigdy nie przechowuje środków.", + payMethodCash: "Gotówka na miejscu", + payMethodLightning: "Lightning", + payMethodCashu: "Cashu", + payMethodBank: "Przelew bankowy", + payMethodOther: "Inne", + payWhatYouCanLabel: "Elastyczna stawka / zapłać, ile możesz", + bookingFeeLabel: "Opłata rezerwacyjna (opcjonalna)", + bookingFeeHint: "Niewielka opłata płacona bezpośrednio Tobie, aby potwierdzić rezerwację. SkateSpots jej nie przechowuje ani nie zwraca.", + paymentNoteLabel: "Uwagi do płatności (opcjonalne)", + paymentNotePlaceholder: "Pierwsza sesja gratis, dojazd w cenie, płatność po sesji…", + spotsDesc: "Wybierz spoty, w których oferujesz sesje coachingowe", + spotsLabel: "Spoty, w których prowadzisz coaching", + tagline: "Podziel się swoją wiedzą o deskorolce", + update: "ZAKTUALIZUJ PROFIL COACHA", + updated: "Profil coacha zaktualizowany!" + }, + filmerForm: { + anonymous: "Anonimowy filmer", + bioPlaceholder: "Twoje doświadczenie, styl, sprzęt...", + camerasLabel: "Kamery i sprzęt * (wybierz co najmniej jeden)", + create: "UTWÓRZ PROFIL FILMOWANIA", + created: "Profil filmowania utworzony!", + createPro: "UTWÓRZ PROFIL PRO FILMOWANIA", + dmNote: "💬 Klienci mogą pisać do Ciebie bezpośrednio przez szyfrowane wiadomości SkateSpots", + gearHelper: "Wymień dokładne kamery, obiektywy i rigi — skaterzy zwracają uwagę na setup.", + gearLabel: "Co masz w torbie (opcjonalne)", + gearPlaceholder: "np. Sony VX1000 + MK1 fisheye, Panasonic HVX200, gimbal DJI RS3, GoPro Hero 12, mikrofon Sennheiser...", + heading: "Zostań filmerem", + headlineExample: "Skate Filmer Berlin", + identity: "Twoja tożsamość filmera", + nip05Reason: "Dodaj identyfikator NIP-05, aby zweryfikować swoją tożsamość i zbudować zaufanie klientów — pokazuje im, że jesteś prawdziwym filmerem.", + paymentDesc: "Aby otrzymywać płatności od klientów za usługi filmowania, musisz połączyć portfel Lightning. Klienci zapłacą Ci bezpośrednio za Twoją pracę.", + profileDesc: "Opowiedz klientom o swoim doświadczeniu w filmowaniu", + profileTitle: "Profil filmowania", + rate: "Stawka", + ratePlaceholder: "10000 sats/wideo", + reelLabel: "Reel / portfolio", + selectService: "Wybierz co najmniej jedną usługę.", + selectSkill: "Wybierz co najmniej jedną umiejętność filmowania.", + servicesLabel: "Oferowane usługi * (wybierz co najmniej jedną)", + servicesRequired: "Usługi są wymagane", + skillsRequired: "Umiejętności są wymagane", + spotsDesc: "Wybierz spoty, w których oferujesz usługi filmowania", + spotsLabel: "Spoty, w których filmujesz", + tagline: "Oferuj filmowanie wideo ze skateboardingu — klipy, line'y, pełne partie i relacje z zawodów", + update: "ZAKTUALIZUJ PROFIL FILMOWANIA", + updated: "Profil filmowania zaktualizowany!" + }, + editorForm: { + anonymous: "Anonimowy montażysta", + bioPlaceholder: "Twój styl montażu, doświadczenie, znane projekty…", + contactPortfolio: "Kontakt i portfolio", + create: "Opublikuj profil montażysty", + created: "Profil montażysty utworzony!", + createPro: "Opublikuj profil Pro montażysty", + editTypes: "Oferowane typy montażu * (wybierz co najmniej jeden)", + hardware: "Sprzęt", + hardwarePlaceholder: "np. MacBook Pro M3, Sony FX3", + heading: "Zostań montażystą wideo", + headlineExample: "Skate Video Editor", + identity: "Twoja tożsamość", + locationOptional: "Lokalizacja (opcjonalna)", + loginDesc: "Zaloguj się, aby utworzyć profil montażysty wideo.", + phoneTelegram: "Telefon / Telegram", + portfolioPlaceholder: "Portfolio (Vimeo, YouTube…)", + profileDesc: "Opowiedz społeczności o swoim stylu montażu i umiejętnościach", + profileTitle: "Profil montażysty", + published: "Twój profil został opublikowany w SkateSpots.", + rate: "Stawka / cennik", + ratePlaceholder: "np. 50k sats/min, cena w DM", + selectService: "Wybierz co najmniej jeden typ montażu.", + servicesRequired: "Usługi są wymagane", + socialPlaceholder: "Instagram / nazwa w social mediach", + software: "Oprogramowanie", + softwareHardware: "Umiejętności w zakresie oprogramowania i sprzętu", + softwarePlaceholder: "np. DaVinci Resolve, Premiere", + tagline: "Oferuj swoje usługi montażu wideo społeczności deskorolkowej", + thumbnail: "Miniatura profilu / showreela", + update: "Zaktualizuj profil montażysty", + updated: "Profil montażysty zaktualizowany!", + walletConnected: "Portfel połączony ✓", + walletDesc: "Otrzymuj płatności w Bitcoinach ⚡ bezpośrednio od klientów za pracę montażową.", + walletTitle: "⚡ Portfel Lightning do płatności", + yearsExperience: "Lata doświadczenia", + yearsPlaceholder: "np. 5 lat" + }, + photoForm: { + anonymous: "Anonimowy fotograf", + bioPlaceholder: "Twoje doświadczenie, styl, to, co lubisz fotografować...", + cameraLabel: "Korpusy aparatów * (wybierz co najmniej jeden)", + cameraRequired: "Kamera jest wymagana", + contactDesc: "Jak riderzy mogą zobaczyć Twoją pracę i się z Tobą skontaktować (wszystko opcjonalne, ale zalecane)", + create: "UTWÓRZ PROFIL FOTOGRAFICZNY", + created: "Profil fotograficzny utworzony!", + createPro: "UTWÓRZ PROFIL PRO FOTOGRAFICZNY", + dmNote: "💬 Riderzy mogą pisać do Ciebie bezpośrednio przez szyfrowane wiadomości SkateSpots", + gearHelper: "Wymień dokładne korpusy, obiektywy i światła — riderzy lubią znać setup.", + gearPlaceholder: "np. Canon R6 II, fisheye 8-15mm, 70-200mm f/2.8, 2× Godox AD200, wyzwalacze radiowe, statyw Manfrotto...", + heading: "Zostań fotografem", + headlineExample: "Fotografia deskorolkowa", + identity: "Twoja tożsamość fotografa", + lensesLabel: "Obiektywy", + lightingLabel: "Sprzęt oświetleniowy", + nip05Reason: "Dodaj identyfikator NIP-05, aby zweryfikować swoją tożsamość i zbudować zaufanie klientów.", + paymentDesc: "Aby otrzymywać wynagrodzenie za sesje, połącz portfel Lightning. Klienci płacą Ci bezpośrednio za Twoją pracę.", + portfolioLabel: "Portfolio / Instagram", + profileDesc: "Opowiedz riderom o swoim oku, sprzęcie i usługach", + profileTitle: "Profil fotograficzny", + ratePlaceholder: "20000 sats/sesja", + selectCamera: "Wybierz co najmniej jeden typ aparatu, na którym fotografujesz.", + selectService: "Wybierz co najmniej jedną oferowaną usługę.", + servicesLabel: "Oferowane usługi * (wybierz co najmniej jedną)", + servicesRequired: "Usługi są wymagane", + spotsDesc: "Wybierz spoty, w których oferujesz fotografię", + spotsLabel: "Spoty, w których fotografujesz", + styleLabel: "Styl fotografowania", + supportLabel: "Podparcie i rig", + tagline: "Fotografuj sesje — oferuj swoją fotografię deskorolkową", + update: "ZAKTUALIZUJ PROFIL FOTOGRAFICZNY", + updated: "Profil fotograficzny zaktualizowany!" + }, + builderForm: { + anonymous: "Anonimowy builder", + bioLabel: "Bio / o Twoich budowach", + bioPlaceholder: "Twój crew, znane budowy, jak podchodzisz do projektu...", + buildTypesLabel: "Co budujesz * (wybierz co najmniej jedno)", + buildTypesRequired: "Typy budowli są wymagane", + cityBase: "Miasto / baza", + contactPortfolio: "Kontakt i portfolio", + contactPortfolioDesc: "Jak scena może zobaczyć Twoje budowy i się z Tobą skontaktować (wszystko opcjonalne, ale zalecane)", + create: "UTWÓRZ PROFIL BUILDERA", + created: "Profil buildera utworzony!", + createPro: "UTWÓRZ PROFIL PRO BUILDERA", + dmNote: "💬 Klienci mogą pisać do Ciebie bezpośrednio przez szyfrowane wiadomości SkateSpots", + gearHelper: "Crew i klienci lubią znać Twój sprzęt i proces.", + gearLabel: "Jak pracujesz / sprzęt (opcjonalne)", + gearPlaceholder: "np. pełna ekipa betoniarska, własna betoniarka + sprzęt do shotcrete'u, spawanie mobilne, zajmujemy się pozwoleniami i odwodnieniem...", + heading: "Zostań builderem", + headlineExample: "Builder ramp i parków", + identity: "Twoja tożsamość buildera", + insured: "Licencja / ubezpieczenie", + insuredHelper: "Istotne przy pracy nad parkami publicznymi i zleceniach samorządowych", + logoPhoto: "Logo / zdjęcie", + materialsLabel: "Materiały i umiejętności rzemieślnicze", + nip05Reason: "Dodaj identyfikator NIP-05, aby zweryfikować swoją tożsamość i zbudować zaufanie klientów.", + pastBuilds: "Poprzednie budowy / Instagram", + paymentDesc: "Aby otrzymywać wynagrodzenie za budowy, połącz portfel Lightning. Klienci płacą Ci bezpośrednio za Twoją pracę.", + profileDesc: "Opowiedz scenie, co budujesz i jak pracujesz", + profileTitle: "Profil buildera", + rateLabel: "Stawka / podstawa wyceny", + ratePlaceholder: "za m² / za projekt", + scaleLabel: "Skala projektu", + selectBuild: "Wybierz co najmniej jedną rzecz, którą budujesz.", + serviceArea: "Obszar działania", + serviceAreaPlaceholder: "np. Katalonia, dojazd w całej UE", + spotsDesc: "Podłącz spoty i parki, które zbudowałeś, aby ludzie mogli zobaczyć Twoją pracę na mapie", + spotsLabel: "Spoty, które zbudowałeś", + tagline: "Wylej, zespawaj, zbuduj — dodaj swoją budowę ramp i parków", + update: "ZAKTUALIZUJ PROFIL BUILDERA", + updated: "Profil buildera zaktualizowany!", + yearsBuilding: "Lata budowania" + }, + skaterForm: { + backToSkaters: "Powrót do skaterów", + bioHelperPulled: "Pobrane z Twojego profilu — dostosuj je do swojej karty skatera lub zostaw bez zmian.", + bioHelperShort: "Krótkie intro do Twojej karty skatera.", + bioPlaceholder: "Od jak dawna jeździsz, co Cię kręci, nad czym pracujesz…", + browseSpots: "Przeglądaj spoty", + changePhoto: "Zmień zdjęcie profilowe", + chipBio: "Bio", + chipPhoto: "Zdjęcie", + cityArea: "Miasto / obszar", + created: "Jesteś na mapie! 🛹", + custom: "Własne", + customHelper: "Twoja własna etykieta — wyświetlana na karcie skatera zamiast presetu.", + customPlaceholder: "np. OG, Weekend Warrior, Emeryt…", + discoverable: "Inni skaterzy mogą Cię teraz odkryć.", + editFullProfile: "edytuj cały profil", + fromProfile: "Z Twojego profilu", + heroEditPrefix: "Edytuj swoją", + heroJoinPrefix: "Dołącz do", + heroSuffix: "Katalogu", + homeHelper: "Wpisz dowolnie lub podłącz prawdziwy spot z mapy, aby ludzie mogli tam pojechać.", + homePlaceholder: "Lokalny park / plac — albo dotknij „Przeglądaj spoty”", + homeSpot: "Ulubiony spot", + layerEnd: "aby zmienić je wszędzie.", + layerIntro: "To jest Twoja", + layerMid: ", zbudowana na Twoim profilu Nostr. Twoje imię, zdjęcie, bio, Lightning i weryfikacja pochodzą stamtąd —", + layerWord: "warstwa skatera", + level: "Poziom", + linked: "Podłączony do spotu na mapie", + loadingProfile: "Ładowanie profilu…", + loadingSpots: "Ładowanie spotów…", + locationHelper: "Pomaga innym znaleźć skaterów w pobliżu. Udostępniany jest tylko przybliżony obszar.", + loginToJoin: "Zaloguj się, aby dołączyć", + loginToJoinDesc: "Utwórz profil skatera, aby społeczność mogła Cię znaleźć.", + mappedSpot: "Spot na mapie", + noSpots: "Nie znaleziono jeszcze spotów.", + noSpotsMatch: "Żaden spot nie pasuje do wyszukiwania.", + openMap: "Otwórz mapę", + pickEverything: "Wybierz wszystko, co pasuje do Twojego stylu.", + pickHomeSpot: "Wybierz swój ulubiony spot", + pickStyles: "Wybierz swoje style", + pickStylesDesc: "Wybierz co najmniej jedną rzecz, którą jeździsz.", + profilePic: "Zdjęcie profilowe", + profilePicHelper: "Twoja karta skatera używa zdjęcia z profilu Nostr — ten sam obraz wszędzie.", + publishingAs: "Publikujesz jako", + putOnMap: "Umieść mnie na mapie", + searchSpots: "Szukaj spotów po nazwie lub mieście…", + skateStory: "Twoja historia", + stance: "Stance", + unlinkSpot: "Odłącz spot", + updateButton: "Zaktualizuj mój profil", + updated: "Profil zaktualizowany!", + whatYouSkate: "Co jeździsz *", + yearsPlaceholder: "np. 8", + yearsSkating: "Lata jazdy", + yourProfilePic: "Twoje zdjęcie profilowe", + zapsOn: "Zaps włączone" + }, + skaters: { + clearSearch: "Wyczyść wyszukiwanie", + community: "Społeczność", + countMany: "skaterów", + countOne: "skater", + editProfile: "Edytuj mój profil skatera", + heroDesc: "Znajdź swoich ludzi. Przeglądaj ekipę skaterów reprezentujących SkateSpots — według stylu, stance'u, poziomu i miasta.", + nip05Verified: "NIP-05 zweryfikowane", + noMatches: "Brak dopasowań", + noneDesc: "Bądź pierwszy, dołącz do katalogu i umieść SkateSpots na mapie.", + noneTitle: "Nie ma jeszcze skaterów", + noVerifiedMatch: "Żaden zweryfikowany skater nie pasuje", + searchPlaceholder: "Szukaj po imieniu, mieście lub npub…", + tryDifferentSearch: "Spróbuj innego wyszukiwania lub wyczyść filtry.", + tryTurnOffVerified: "Spróbuj wyłączyć filtr „Zweryfikowani”, aby zobaczyć wszystkich.", + verifiedFilterTitle: "Pokaż tylko skaterów ze zweryfikowaną tożsamością NIP-05" + }, + skaterCard: { + inDirectory: "Jesteś w katalogu skaterów", + joinDesc: "Dodaj swój stance, style i poziom, aby skaterzy mogli Cię znaleźć.", + joinTitle: "Dołącz do katalogu skaterów" + }, + crewsStrip: { + allCrews: "Wszystkie crew", + memberMany: "{{count}} członków", + memberOne: "{{count}} członek", + title: "Crew w tej scenie" + }, + labLink: { + coach: "Coach", + filmer: "Filmer", + editor: "Editor", + photographer: "Photographer", + builder: "Builder", + artist: "Artysta", + graffiti: "Graffiti", + tattoo: "Tatuaże", + trainer: "Trener", + musician: "Muzyk", + judge: "Sędzia", + barber: "Barber", + organizer: "Organizator", + lab: "Lab", + linkedProfiles: "Podłączone profile w The Lab", + desc: "Prowadzisz też studio, coaching lub usługi budowlane? Podłącz swoje ogłoszenia w The Lab, aby ludzie mogli wynająć Twój crew. Opcjonalne. Gdy profil w The Lab również linkuje z powrotem do tego crew, oba pokazują zieloną", + descEnd: "plakietkę.", + empty: "Nie masz jeszcze żadnych profili w The Lab. Utwórz jeden w The Lab, aby go tu podłączyć." + }, + proUpgrade: { + goPro: "Przejdź na Pro", + optional: "· opcjonalne", + freeTo: "Dodawanie jest darmowe. Pro dodaje", + proBadge: "plakietkę Pro", + featuredPlacement: "wyróżnione miejsce", + atTop: "na górze The Lab.", + active: "Aktywne", + benefit1: "Złota plakietka \"Pro\" na Twoim profilu i kartach", + benefit2: "Wyróżniony jako pierwszy, gdy skaterzy przeglądają The Lab", + benefit3: "Wspiera SkateSpots — bez reklam, bez pośredników", + platformOwner: "Właściciel platformy — Pro jest zawsze włączone.", + proActiveOne: "Pro aktywne · pozostał {{count}} dzień. Twój profil będzie wyróżniony.", + proActiveMany: "Pro aktywne · pozostało {{count}} dni. Twój profil będzie wyróżniony.", + context: "Twój profil pozostaje darmowy po wygaśnięciu Pro — tracisz tylko plakietkę i wyróżnienie." + }, + profilePreview: { + viewPublic: "Zobacz publicznie", + unnamed: "Skater bez nazwy", + noHandle: "Brak nazwy użytkownika" + }, + pyramid: { + pyramidWord: "PYRAMIDA", + rankingsWord: "RANKINGI", + subtitle: "Najlepsi kontrybutorzy w Twoim mieście", + yourRank: "Twoja pozycja", + keepContributing: "Współtwórz dalej, aby wspinać się wyżej!", + topContributors: "Najlepsi kontrybutorzy", + noContributors: "Nie ma jeszcze kontrybutorów. Bądź pierwszy i dodaj spot lub utwórz wydarzenie!", + spots: "Spoty", + events: "Wydarzenia", + total: "Razem", + trust: "Zaufanie" + }, + detail: { + joined: "Dołączył", + about: "O mnie", + howWeWork: "Jak pracujemy", + inTheBag: "W torbie", + hardware: "Sprzęt", + software: "Oprogramowanie", + eventsJudged: "Sędziowane wydarzenia", + eventsOrganized: "Organizowane wydarzenia", + spots: "Spoty", + viewSpot: "Zobacz spot", + credentialsTitle: "Kwalifikacje i bezpieczeństwo", + selfAttested: "Deklarowane samodzielnie przez coacha — niezweryfikowane przez SkateSpots.", + formats: "Formaty", + levels: "Poziomy", + ages: "Wiek", + languages: "Języki", + availability: "Dostępność", + bookSession: "Zarezerwuj sesję", + portfolio: "Portfolio", + watchReel: "Obejrzyj na {{platform}}", + paymentsTitle: "Płatności", + payWhatYouCan: "Zapłać, ile możesz", + bookingFee: "Opłata rezerwacyjna", + payBookingFee: "Zapłać opłatę rezerwacyjną", + bookingFeeNote: "Płacone bezpośrednio coachowi. SkateSpots jej nie przechowuje ani nie zwraca.", + bookingFeeNoRail: "Ten coach nie ma ustawionego adresu Lightning, więc płatność w aplikacji nie jest dostępna — skontaktuj się z nim, aby ustalić płatność.", + serviceArea: "Obszar działania", + licensedInsured: "Licencja / ubezpieczenie", + studio: "Studio", + shopStudio: "Sklep / studio", + booksOpen: "Przyjmuje rezerwacje", + credentials: "Kwalifikacje", + remoteOnline: "Zdalnie / online", + graffitiCrew: "Crew graffiti", + act: "Występ", + listen: "Słuchaj", + upcomingGigs: "Nadchodzące koncerty", + past: "Przeszłe", + experience: "Doświadczenie", + yearsCount: "{{count}} lat", + rate: "Stawka", + contact: "Kontakt", + sendMessage: "Wyślij wiadomość", + bookGig: "Zarezerwuj na koncert", + portfolioDomain: "Portfolio · {{domain}}", + manage: "Zarządzaj", + admin: "Admin", + editProfile: "Edytuj profil", + publishedTitle: "Jesteś online", + publishedBody: "Twój profil został opublikowany w The Lab. Udostępnij go, aby skaterzy mogli Cię znaleźć.", + manageRemove: "Usuń swój profil {{noun}} z The Lab.", + adminTakeDown: "Usuń ten profil {{noun}}. Zostanie ukryty w całym SkateSpots.", + entityLabel: "profil {{noun}}", + deleteProfile: "Usuń profil", + location: "Lokalizacja", + servicesSkills: "Usługi i umiejętności", + noun: { + coach: "coacha", + filmer: "filmera", + editor: "montażysty wideo", + photographer: "fotografa", + builder: "buildera", + artist: "artysty", + graffiti: "grafficiarza", + tattoo: "tatuażysty", + trainer: "trenera", + musician: "muzyka", + judge: "sędziego wydarzeń", + organizer: "organizatora wydarzeń", + barber: "barbera", + profile: "profilu" + }, + skillsTitle: { + skills: "Umiejętności", + servicesGear: "Usługi i sprzęt", + whatWeBuild: "Co budujemy", + whatTheyMake: "Co tworzą", + stylesWork: "Style i praca", + styles: "Style", + focusSpecialties: "Specjalizacja i specjalności", + genresInstruments: "Gatunki i instrumenty", + formatsSpecialties: "Formaty i specjalności", + servicesStyles: "Usługi i style", + eventTypesServices: "Typy wydarzeń i usługi" + } + }, + rider: { + heroDesc: "Twoja weryfikowalna tożsamość skatera. Podpisana w Nostr, gotowa do druku, niemożliwa do podrobienia.", + heroDesc2: "Zdobywaj poświadczane przez innych skaterów plakietki umiejętności. Otrzymuj przepustki do parków. Udostępniaj swoją kartę wszędzie.", + headerTagline: "Podpisane w Nostr · gotowe do druku · zweryfikowane QR", + tabCard: "Moja karta", + tabBadges: "Plakietki", + tabAward: "Przyznaj", + rendering: "Renderowanie…", + shareCard: "Udostępnij kartę", + savePng: "Zapisz PNG", + print: "Drukuj", + copyId: "Kopiuj ID", + cardType: "Typ karty", + licenseLabel: "Licencja skatera", + licenseSub: "Twoja osobista tożsamość ridera", + parkLabel: "Dostęp do parku", + parkSub: "Wydawaj przepustki jako właściciel parku", + theme: "Motyw", + holoTitle: "Holograficzny połysk", + holoDesc: "Animowany efekt folii", + cardDetails: "Szczegóły karty", + skateStyle: "Styl jazdy", + ridesFor: "Jeździ dla", + ridesForPlaceholder: "Lokalny sklep…", + sponsors: "Sponsorzy", + sponsorsPlaceholder: "Marki…", + showOnCard: "Pokaż na karcie", + zaps: "Zaps ⚡", + skills: "Umiejętności", + selected: "wybrano {{count}}/6", + goldBadgesHint1: "Złote plakietki na Twojej karcie pochodzą od innych skaterów, którzy Cię poświadczyli — zobacz", + goldBadgesHint2: ".", + parkOwnersOnly: "Tylko dla właścicieli parków.", + parkOwnersDesc: "Wydaj to tym samym kluczem Nostr, którym opublikowałeś ogłoszenie parku. Każdy może zeskanować kod QR i zweryfikować podpis on-chain — bez centralnego organu.", + parkDetails: "Szczegóły parku", + parkName: "Nazwa parku", + parkNamePlaceholder: "The Berrics…", + riderName: "Imię ridera", + riderNamePlaceholder: "Imię na karcie", + riderNpub: "Nostr ID ridera (npub)", + accessLevel: "Poziom dostępu", + validThru: "Ważne do", + publishToNostr: "Opublikuj w Nostr", + badgesIntro: "Te plakietki zostały poświadczone i podpisane przez innych skaterów w Nostr. Pojawiają się jako złote ⭐ chipy na Twojej karcie.", + earnMore: "Chcesz zdobyć więcej? Jedź przed kimś i poproś, aby poświadczył Twój trick.", + awardSomeone: "Przyznaj plakietkę komuś innemu", + youSawIt: "Widziałeś to", + youSawItDesc: "Podpisz dowód w Nostr. Staje się częścią ich trwałego rekordu — kryptograficznie powiązany z Twoim kluczem.", + skillsWitnessed: "Umiejętności, które poświadczyłeś", + whereSeen: "Gdzie to widziałeś?", + optional: "(opcjonalne)", + signingOnNostr: "Podpisywanie w Nostr…", + awardBadge: "Przyznaj plakietkę", + addRiderSkill: "Dodaj npub ridera + co najmniej jedną umiejętność", + invalidNpub: "Nieprawidłowy npub", + badgeAwarded: "🏅 Plakietka przyznana!", + badgeSent: "Wysłano: {{skills}}.", + failed: "Nie udało się", + couldNotRender: "Nie udało się wyrenderować karty", + popupBlocked: "Wyskakujące okno zablokowane", + popupBlockedDesc: "Zezwól na wyskakujące okna dla tej strony.", + linkCopied: "🔗 Link skopiowany!", + enterRiderNpub: "Wprowadź npub ridera", + parkPublished: "✅ Karta dostępu do parku opublikowana!", + publishFailed: "Publikacja nie udała się", + noBadges: "Nie ma jeszcze plakietek. Jedź przed kimś i poproś, aby poświadczył Twoje tricky!", + showMore: "Pokaż jeszcze {{count}}", + witnessedBy: "Poświadczone przez", + at: "w", + previewLicense: "Licencja skatera", + previewSince: "Od {{year}}", + previewEvts: "Wyd.", + previewScan: "Zeskanuj, aby zweryfikować", + previewSkatepark: "Skatepark", + previewAccessPass: "Przepustka", + previewMemberName: "Imię członka", + previewIssuedBy: "Wydane przez właściciela parku · podpisane w Nostr", + previewValidThru: "Ważne do", + previewNostrVerified: "Zweryfikowane w Nostr" + }, + craftFields: { + detailsTitle: "Dodatkowe szczegóły", + deliverables: "Rezultaty", + turnaround: "Czas realizacji", + surfaces: "Powierzchnie / ściany", + maxSize: "Maks. rozmiar", + setLength: "Długość setu", + techRider: "Tech Rider", + travel: "Dojazd", + certifications: "Certyfikaty", + insurance: "Ubezpieczenie", + permits: "Pozwolenia", + deposit: "Zaliczka", + minimum: "Minimum", + modalities: "Metody", + duration: "Długość wizyty", + drone: "Dron", + leadTime: "Czas realizacji", + warranty: "Gwarancja" + }, + craftForm: { + profileImage: "Zdjęcie profilowe", + nameHeadline: "Imię / nagłówek", + about: "O mnie", + aboutPlaceholder: "Opowiedz skaterom o swojej pracy {{noun}}…", + required: "wymagane", + nip05Title: "Dodaj NIP-05, aby zbudować zaufanie", + nip05Desc: "Identyfikator NIP-05 pomaga skaterom zweryfikować, że jesteś prawdziwy. Gorąco zalecany przed dodaniem ogłoszenia.", + editingNote: "Edytujesz swój istniejący profil {{noun}} — publikacja go zastąpi.", + location: "Lokalizacja", + pinned: "📍 Przypięte do mapy ({{lat}}, {{lng}})", + experienceYears: "Doświadczenie (lata)", + expPlaceholder: "np. 5", + ratePlaceholder: "np. 20k sats / za projekt", + contactLinks: "Kontakt i linki", + phoneOptional: "Telefon (opcjonalny)", + emailOptional: "E-mail (opcjonalny)", + socialPlaceholder: "Social (Instagram itp.)", + gettingPaid: "Płatności", + updateProfile: "Zaktualizuj profil", + publishProfile: "Opublikuj profil", + rateLeftBlankNote: "Opcjonalne — zostaw puste, jeśli powyższa stawka wystarczy.", + sectionRequired: "{{section}} — wymagane", + sectionRequiredDesc: "Wybierz co najmniej jedną opcję w sekcji \"{{section}}\".", + updated: "Profil zaktualizowany!", + created: "Profil utworzony!", + headlineExample: "Skate Coach Berlin" + } + }, + socialUi: { + agentPanel: { + spot: "Spot", + event: "Wydarzenie", + labPro: "Lab Pro", + gear: "Sprzęt", + crew: "Crew", + description: "Zna to crew — jego jamy, skład i open call — a także szerszą scenę z danymi na żywo.", + greeting: "Yo! Jestem Sasquatch, przewodnik crew {{crew}}. Pytaj mnie o crew — następny jam, kto nim rządzi, czego szukamy — albo o szerszą scenę.", + suggestion1: "Kiedy nasz następny jam?", + suggestion2: "Kto prowadzi to crew?", + suggestion3: "Czego szukamy?", + suggestion4: "Najlepsze spoty w pobliżu?", + suggestion5: "Jaka jest pogoda do jazdy?", + thinking: "Sasquatch myśli…", + placeholder: "Zapytaj o swoją lokalną scenę…", + disclaimer: "AI może się mylić — linki prowadzą do prawdziwych ogłoszeń." + }, + badge: { + upcomingOne: "{{count}} nadchodzące wydarzenie", + upcomingMany: "{{count}} nadchodzących wydarzeń", + comingOne: "{{count}} wydarzenie nadchodzi", + comingMany: "{{count}} wydarzeń nadchodzi" + }, + bell: { + youAreIn: "Jesteś w {{crew}}! 🛹", + membershipConfirmed: "Członkostwo potwierdzone.", + couldNotConfirm: "Nie udało się potwierdzić", + addedYouTo: "dodał Cię do", + confirmToAppear: "Potwierdź, aby pojawić się jako członek.", + notifications: "Powiadomienia", + notificationsNew: "Powiadomienia ({{count}} nowych)", + unreadCount: "{{count}} nieprzeczytanych powiadomień", + markRead: "Oznacz jako przeczytane", + allClear: "Wszystko na bieżąco", + tabAll: "Wszystkie", + tabTrades: "Wymiany", + tabSocial: "Social", + tabNews: "Nowości", + tabCrews: "Crew", + checkingUpdates: "Sprawdzanie aktualizacji…", + checkingTrades: "Sprawdzanie ofert i wymian…", + loadingDrops: "Ładowanie najnowszych nowości…", + emptyAll: "Oferty, wymiany, zaps, odpowiedzi, wysyłki newslettera i aktywność crew pojawią się tutaj.", + emptyTrades: "Oferty, kontroferty i potwierdzenia wymian trafiają tutaj — niezależnie od tego, czy sprzedajesz, kupujesz czy wymieniasz.", + emptySocial: "Zaps, reakcje, reposty, wzmianki, odpowiedzi, RSVP na wydarzenia i aktualizacje hostów trafiają tutaj.", + emptyNews: "Wysyłki newslettera SkateSpots pojawią się tutaj. Zapisz się na stronie Newsletter.", + emptyCrews: "Zaproszenia do crew, prośby kolektywów i prośby o członkostwo pojawią się tutaj.", + subscribeBanner: "Zapisz się, aby otrzymywać nowości w dzwonku", + read: "Przeczytane", + allCaughtUp: "Wszystko nadrobione" + }, + chat: { + hidden: "Ukryte", + hideMessageAria: "Ukryj tę wiadomość", + hideMessageTitle: "Ukryj wiadomość (admin)", + messageHidden: "Wiadomość ukryta", + messageHiddenDesc: "Ukryta dla wszystkich w czacie crew.", + messageHideFailed: "Nie udało się ukryć wiadomości", + encryptionUnavailable: "Szyfrowanie niedostępne", + encryptionUnavailableDesc: "Twój signer nie obsługuje szyfrowania NIP-44. Zaktualizuj rozszerzenie.", + messageFailed: "Wiadomość nie została wysłana", + couldNotSend: "Nie udało się wysłać wiadomości.", + noOneToMessage: "Nie ma jeszcze do kogo pisać", + noOneToMessageDesc: "To crew nie ma innych członków, z którymi można czatować.", + subject: "Czat crew {{crew}}", + title: "Czat crew", + cordnBadgeTitle: "Kierowane przez koordynatora Cordn tego crew przez ContextVM. Szyfrowane end-to-end.", + private: "Prywatne", + privateBadgeTitle: "Szyfrowane end-to-end — tylko członkowie crew mogą czytać te wiadomości.", + encryptedCordn: "Szyfrowane i kierowane przez koordynatora crew (Cordn) — wiadomości nie trafiają do publicznych relayów.", + encryptedNip17: "Szyfrowany czat grupowy dla założyciela i wszystkich wymienionych członków crew.", + moderatorNote: " Jako moderator możesz ukrywać wiadomości w crew.", + loginToSee: "Zaloguj się, aby sprawdzić, czy możesz dołączyć do czatu crew.", + membersOnly: "Ten czat jest prywatny dla członków crew. Poproś założyciela o dodanie Cię do crew, aby dołączyć do rozmowy.", + noMessages: "Nie ma jeszcze wiadomości. Rozkręć czat crew — zaplanuj sesję, udostępnij spot, rozpromuj klip.", + newMessages: "Nowe wiadomości", + new: "Nowe", + placeholder: "Napisz do swojego crew…", + sendAria: "Wyślij wiadomość" + }, + collectiveJoinRequest: { + addedTitle: "Dodano {{name}} do {{collective}} 🛹", + addedDesc: "Potwierdzi po swojej stronie, aby pojawić się jako zweryfikowany członek.", + couldNotAdd: "Nie udało się dodać członka", + couldNotDismiss: "Nie udało się odrzucić", + addedDone: "Dodano", + addedTo: "do", + dismissedDone: "Odrzucono prośbę od {{name}}", + wantsToJoin: "chce dołączyć", + alreadyOnRoster: "Już jest w składzie", + openCollective: "Otwórz kolektyw", + dismiss: "Odrzuć", + addToCollective: "Dodaj do kolektywu" + }, + collectiveMembers: { + confirmed: "Potwierdzony", + pending: "Oczekuje", + pendingTooltip: "Wymieniony przez kolektyw — oczekuje na potwierdzenie tego członka.", + crewOnly: "Tylko crew", + crewOnlyTooltip: "Ten członek zdecydował się być widoczny tylko dla kolegów z crew. Widzisz go, bo jesteś w crew.", + hiddenMember: "Ukryty członek", + title: "Członkowie", + verifiedOf: "{{confirmed}} z {{total}} zweryfikowanych — każdy potwierdzony członek podpisał własnym kluczem Nostr.", + verifiedPerMember: "Członkostwo jest weryfikowane indywidualnie. Każdy członek potwierdza własnym kluczem Nostr.", + adminsOne: "{{count}} admin pomaga prowadzić crew.", + adminsMany: "{{count}} adminów pomaga prowadzić crew." + }, + confirmMembership: { + public: "Publiczny", + crewOnly: "Tylko crew", + confirmedTitle: "Członkostwo potwierdzone!", + confirmedCrew: "Jesteś zweryfikowany w {{name}} — widoczny tylko dla kolegów z crew.", + confirmedPublic: "Teraz widniejesz jako zweryfikowany członek {{name}}.", + failed: "Nie udało się potwierdzić", + addedTo: "Dodano Cię do {{name}}", + addedDesc: "Potwierdź swoje członkostwo, aby pojawiło się jako zweryfikowane na Twoim profilu i ich.", + yourVisibility: "Twoja widoczność", + confirming: "Potwierdzanie…", + confirmButton: "Potwierdź członkostwo" + }, + contacts: { + message: "Wiadomość", + removePrivate: "Usuń z prywatnych kontaktów", + savePrivate: "Zapisz w prywatnych kontaktach", + seoTitle: "Kontakty - SkateSpots", + seoDescription: "Twoja scena — koledzy z crew, obserwowani i ostatnie rozmowy, z prywatnymi szyfrowanymi kontaktami.", + encryptionUnavailableDesc: "Twój signer nie obsługuje szyfrowania NIP-44.", + removed: "Usunięto z prywatnych kontaktów", + saved: "Zapisano w prywatnych kontaktach", + savedDesc: "Tylko Ty widzisz tę listę.", + updateFailed: "Nie udało się zaktualizować kontaktów", + loginTitle: "Twoja scena w jednym miejscu", + loginDesc: "Zaloguj się, aby zobaczyć kolegów z crew, obserwowanych i ostatnie rozmowy — oraz prowadzić prywatną, szyfrowaną listę kontaktów.", + title: "Kontakty", + subtitle: "Twoja scena — koledzy z crew, obserwowani i rozmowy", + filterPlaceholder: "Filtruj po npub…", + tabCrew: "Crew", + tabFollows: "Obserwowani", + tabDms: "DM-y", + tabSaved: "Zapisane", + emptyCrewmates: "Brak kolegów z crew. Dołącz do crew lub załóż własne, aby zbudować swoją sieć.", + emptyFollowing: "Nikogo jeszcze nie obserwujesz.", + emptyDms: "Brak rozmów. Napisz do skatera, aby zacząć.", + savedHint: "Ta lista jest szyfrowana Twoim kluczem — tylko Ty możesz ją czytać. Dotknij gwiazdki przy dowolnej osobie, aby ją dodać.", + emptySaved: "Brak zapisanych kontaktów. Oznacz gwiazdką osoby z dowolnej zakładki, aby zbudować prywatną książkę adresową." + }, + conversation: { + unknown: "Nieznany", + seoTitle: "Czat z {{name}} - SkateSpots", + seoDescription: "Prywatna szyfrowana rozmowa", + sendFailed: "Nie udało się wysłać wiadomości", + sendFailedDesc: "Spróbuj ponownie za chwilę.", + tradeConfirmed: "Wymiana potwierdzona", + tradeConfirmedDesc: "Reputacja zaktualizowana dla was obu.", + tradeConfirmFailed: "Nie udało się potwierdzić wymiany", + somethingWrong: "Coś poszło nie tak.", + soldNote: "Sprzedano {{name}}.", + saleConfirmed: "Sprzedaż potwierdzona", + saleConfirmedDesc: "{{name}} może teraz potwierdzić po swojej stronie.", + saleConfirmFailed: "Nie udało się potwierdzić sprzedaży", + escrowRedeemed: "Escrow zrealizowane", + escrowRedeemedDesc: "Środki są teraz w Twoim portfelu Cashu.", + escrowRedeemFailed: "Nie udało się zrealizować escrow", + loginTitle: "Zaloguj się, aby zobaczyć wiadomości", + secureLoginTitle: "Wymagane bezpieczne logowanie", + secureLoginDesc: "Wiadomości wymagają bezpiecznej aplikacji signera.", + encrypted: "Szyfrowane", + refresh: "Odśwież", + didCompleteTrade: "Czy zakończyłeś tę wymianę?", + recordedSale: "{{name}} zapisał sprzedaż. Potwierdź, aby zaktualizować reputację dla was obu.", + confirm: "Potwierdź", + confirmSale: "Potwierdzić tę sprzedaż?", + askedToRecord: "{{name}} poprosił Cię o jej zapisanie. Potwierdzenie buduje reputację dla was obu.", + confirmSaleButton: "Potwierdź sprzedaż", + redeemEscrow: "Zrealizuj escrow", + escrowAppOnly: "Escrow Cashu działa tylko w aplikacji — otwórz SkateSpots na telefonie, aby zrealizować.", + startThread: "Wyślij wiadomość, aby rozpocząć rozmowę", + placeholder: "Wpisz wiadomość...", + e2eeNote: "Wiadomości są szyfrowane end-to-end przy użyciu NIP-17" + }, + coordinator: { + secondsAgo: "{{count}} s temu", + minutesAgo: "{{count}} min temu", + hoursAgo: "{{count}} godz. temu", + daysAgo: "{{count}} dni temu", + statusIdle: "Niesprawdzone", + statusChecking: "Sprawdzanie…", + statusOnline: "Połączony", + statusStale: "Cichy", + statusOffline: "Nie widziany", + statusError: "Nieosiągalny", + notACoordinator: "To nie jest koordynator", + notACoordinatorDesc: "Wklej nprofile, npub lub link cordn.net.", + added: "Koordynator dodany", + relayOne: "{{count}} relay", + relayMany: "{{count}} relaye", + lastSeen: "ostatnio widziany {{time}}", + onlineDesc: "Ogłasza się. Grupy, które go używają, mogą teraz dostarczać wiadomości.", + staleDesc: "Znaleziony, ale nie ogłaszał się ostatnio — może spać.", + offlineDesc: "Nie widziano ogłoszenia. Może być prywatny (to w porządku) lub po prostu offline.", + errorDesc: "Nie udało się dotrzeć do relayów.", + idleDesc: "Sprawdzanie…", + checkingDesc: "Szukanie jego ogłoszenia…", + eventFoundOne: "Znaleziono {{count}} wydarzenie.", + eventFoundMany: "Znaleziono {{count}} wydarzeń.", + check: "Sprawdź", + addLinkCopied: "Link do dodania skopiowany", + copyFailed: "Kopiowanie nie udało się", + copyManually: "Skopiuj go ręcznie.", + addLink: "Dodaj link", + removeConfirm: "Usunąć tego koordynatora z tego urządzenia?", + scanToJoin: "Zeskanuj w Cordn, aby dołączyć do tego koordynatora.", + noCoordinator: "Brak koordynatora", + noCoordinatorDescA: "Koordynator dostarcza", + encryptedWord: "szyfrowane", + noCoordinatorDescB: "wiadomości grupowe Twojego crew w kolejności. Widzi kto, kiedy i która grupa — nigdy treści. Wybierz jednego lub uruchom własnego.", + change: "Zmień koordynatora", + addTitle: "Dodaj koordynatora", + add: "Dodaj", + scanQR: "Zeskanuj kod QR koordynatora", + inputPlaceholder: "nprofile… lub link cordn.net", + runOwn: "Uruchom własnego", + runOwnDesc: "Może działać na starym telefonie, Raspberry Pi lub dowolnym małym urządzeniu, które zostawisz włączone. Twoja grupa działa, dopóki jest włączony — a grupę możesz przenieść, kiedy chcesz.", + onPhone: "Na telefonie", + onPhoneDesc: "Użyj aplikacji Cordn Coordinator, a następnie zeskanuj tutaj jej kod QR, aby ją dodać.", + openCordn: "Otwórz Cordn", + scanItsQR: "Zeskanuj jej kod QR", + onServer: "Na serwerze", + commandCopied: "Polecenie skopiowane", + copyCommand: "Kopiuj polecenie", + androidSleep: "Android może usypiać koordynatora na telefonie. Licz się z tym, że od czasu do czasu trzeba przenieść grupę.", + privacyNote: "🔒 Koordynator widzi tylko szyfrogram i metadane — nigdy treści wiadomości. Uruchom własnego, aby nawet metadane były Twoje.", + customTitle: "Własny koordynator czatu", + customBadge: "· eksperymentalne · własny relay", + customDescShort: "Opcjonalne — Twój crew ma już wbudowany szyfrowany czat end-to-end, więc nie potrzebujesz tego. Ustaw tylko, jeśli prowadzisz własny", + remove: "Usuń", + pointerNote: "Na razie to tylko wskaźnik: endpoint wss:// jest używany jako relay czatu crew; endpoint https:// przez współdzielony relay ContextVM. Prawdziwe Cordn MLS nie jest jeszcze podłączone.", + cordnCoordinator: "Koordynator Cordn", + invalid: "To nie wygląda na koordynatora. Wklej nprofile, link cordn.net lub URL https/wss.", + useMine: "Użyj mojego koordynatora" + }, + createCrew: { + seoTitle: "Załóż crew - SkateSpots", + seoDescription: "Załóż swój crew deskorolkowy — teren, członkowie i spoty.", + loginRequired: "Wymagane logowanie", + loginRequiredDesc: "Musisz się zalogować, aby założyć crew.", + backToCrews: "Powrót do crew", + title: "Załóż crew", + intro: "Twoja deskorolkowa rodzina — ludzie, z którymi jeździsz. Wystarczy nazwa, żeby zacząć; wszystko inne jest opcjonalne." + }, + crew: { + seoTitleNamed: "{{name}} - crew w SkateSpots", + seoTitle: "Crew - SkateSpots", + seoDescription: "Crew deskorolkowe w SkateSpots.", + postHidden: "Post ukryty", + postHiddenDesc: "Usunięty dla wszystkich z feedu crew.", + postHideFailed: "Nie udało się ukryć posta", + backToCrews: "Powrót do crew", + disband: "Rozwiąż", + youAreCaptain: "Jesteś kapitanem", + member: "Członek", + askSasquatch: "Zapytaj Sasquatcha", + agent: "Agent crew", + agentDesc: "Przewodnik AI Twojego crew — pobliskie spoty, wydarzenia, coachowie i sprzęt, z danymi na żywo.", + eventsTab: "Wydarzenia", + chatTab: "Czat", + newMessages: "Nowe wiadomości", + hostJam: "Zorganizuj jam", + noEvents: "Brak jeszcze wydarzeń crew. Zorganizuj jam, zawody lub spotkanie jako crew — połączy to Twój crew z kalendarzem wydarzeń i pozwoli ludziom to zapować.", + support: "Wsparcie", + zapCrew: "Zap dla Crew", + bandTitle: "Zespół crew", + bandTagline: "Muzyka na żywo · jazda i dźwięk", + listenTitle: "Słuchaj: {{domain}}", + listen: "Posłuchaj kawałków", + setUpGig: "Zorganizuj koncert", + bookGigMessage: "Hej {{crew}} — jestem zainteresowany rezerwacją {{band}} na koncert. Masz czas pogadać o terminach?", + messageAboutGig: "Napisz w sprawie koncertu", + gigHintA: "dodaje wydarzenie muzyczne do kalendarza hostowane przez to crew.", + messageShort: "Wiadomość", + gigHintB: "otwiera szyfrowany DM do crew, aby ustalić terminy i szczegóły.", + homeSpots: "Ulubione spoty", + viewSpot: "Zobacz spot", + seeOnMap: "Zobacz na mapie →", + founderLinks: "Założyciel i linki", + startedBy: "Załozone przez {{name}}", + opens: "Otwiera: {{domain}}" + }, + crews: { + seoTitle: "Crew - SkateSpots", + seoDescription: "Znajdź swoich ludzi. Odkrywaj lokalne crew deskorolkowe, kolektywy i społeczności w pobliżu.", + videoPartTooltip: "To crew ma video part", + part: "Part", + bandTooltip: "Zespół crew: {{name}}", + band: "Zespół", + focusAll: "Wszystkie", + focusAllShort: "Wszystkie", + focusDiy: "DIY", + focusPhoto: "Fotografia", + focusCoaching: "Coaching", + focusArt: "Sztuka", + focusMusic: "Muzyka", + focusPhysio: "Fizjoterapia", + focusMixed: "Mieszane", + title: "Crew", + heroLine: "Twoja deskorolkowa rodzina zakotwiczona na mapie — ludzie, z którymi jeździsz", + heroWith: "z", + heroRest: ", a nie ci, których wynajmujesz (to The Lab).", + crewCountOne: "{{count}} crew", + crewCountMany: "{{count}} crew", + cityCountOne: "{{count}} miasto", + cityCountMany: "{{count}} miast", + createCrew: "Załóż crew", + create: "Załóż", + searchPlaceholder: "Szukaj crew po nazwie lub mieście…", + filterTitle: "Filtruj crew", + filterDesc: "Czym interesuje się crew.", + nearMe: "W pobliżu", + emptySearchTitle: "Żadne crew nie pasuje do wyszukiwania", + emptySearchHint: "Nic nie znaleziono dla „{{query}}”. Spróbuj innej nazwy lub miasta.", + clearSearch: "Wyczyść wyszukiwanie", + emptyFocusTitle: "Brak crew {{label}}", + emptyFocusHint: "Nikt tu jeszcze nie wywiesza flagi „{{label}}”. Pokaż wszystkie crew albo załóż to sam.", + showAll: "Pokaż wszystkie crew", + claimTitle: "Zaznacz swoją lokalną scenę", + claimHint: "Nie ma tu jeszcze żadnych crew. Bądź pierwszy — załóż crew, podłącz swoje ulubione spoty i umieść swoją scenę na mapie, aby wszyscy mogli ją znaleźć." + }, + crewCoordinator: { + privateChat: "Prywatny czat crew", + on: "Włączony", + defaultA: "Zakładka", + chatWord: "Czat", + defaultB: "jest", + e2ee: "szyfrowana end-to-end", + defaultC: "dla założyciela i wszystkich wymienionych członków — nic nie trzeba konfigurować. Wiadomości są zapieczętowane kluczem każdego członka (NIP-17), więc tylko Twój crew może je czytać.", + advancedA: "Zaawansowane: uruchom własny", + cordnCoordinator: "Koordynator Cordn", + routeThrough: "Kieruj czat przez niego", + coordinator: "Koordynator", + deliveredOver: "Dostarczane przez", + sharedRelay: "— współdzielony relay ContextVM.", + ownRelay: "— własny relay Twojego crew.", + chatLive: "Prywatny czat działa", + routesA: "Zakładka", + routesB: "kieruje ruch przez tego koordynatora: wiadomości są szyfrowane end-to-end (NIP-44, zapieczętowane dla każdego członka), więc obsługuje wyłącznie zapieczętowany ruch.", + publicWarning: "Uwaga: jest adresowany przez współdzielony relay ContextVM, więc szyfrogram i jego metadane (które crew i kiedy) są publicznie widoczne — tylko nieczytelne. Skieruj crew na prywatny relay wss://, aby zachować prywatność nawet tego.", + ownRelaySafe: "Nic związanego z crew nie opuszcza własnego relayu Twojego crew.", + manage: "Zarządzaj koordynatorem", + open: "Otwórz {{domain}}", + runBy: "Koordynator prowadzony przez" + }, + dms: { + securityReminder: "Przypomnienie o bezpieczeństwie", + phishingStrong: "SkateSpots nigdy nie napisze do Ciebie na DM", + phishingRest: "z prośbą o weryfikację konta, udostępnienie kluczy lub wysłanie płatności. Jeśli ktoś podaje się za support SkateSpots przez DM — to oszustwo.", + dismissReminder: "Odrzuć przypomnienie o bezpieczeństwie", + peopleCount: "{{count}} osób", + youPrefix: "Ty: ", + unreadMessages: "Nieprzeczytane wiadomości", + seoTitle: "Wiadomości - SkateSpots", + seoDescription: "Prywatne szyfrowane wiadomości ze społecznością deskorolkową", + loginTitle: "Zaloguj się, aby uzyskać dostęp do wiadomości", + loginDesc: "Prywatne, szyfrowane wiadomości ze skaterami w społeczności", + secureLoginTitle: "Wymagane bezpieczne logowanie", + secureLoginDesc: "Prywatne wiadomości wymagają bezpiecznej aplikacji signera, aby szyfrować rozmowy.", + onAndroid: "Na Androidzie:", + useAmber: "Użyj aplikacji Amber", + getAmber: "Pobierz Amber →", + onIOS: "Na iOS:", + iosHint: "Spróbuj zalogować się przez połączenie bunker (nsec.app) w Ustawieniach", + browserHint: "Spróbuj zalogować się przez rozszerzenie przeglądarki, takie jak Alby lub nos2x, które obsługuje szyfrowanie.", + title: "Wiadomości", + subtitleFull: "Szyfrowane end-to-end z NIP-17", + subtitleShort: "Szyfrowane", + newMessage: "Nowa wiadomość", + groups: "Grupy", + loadFailed: "Nie udało się załadować wiadomości", + emptyTitle: "Brak jeszcze wiadomości", + emptyDesc: "Rozpocznij rozmowę z kimś ze społeczności", + startConversation: "Rozpocznij rozmowę", + undecryptableOne: "Twój signer nie mógł otworzyć {{count}} szyfrowanej wiadomości.", + undecryptableMany: "Twój signer nie mógł otworzyć {{count}} szyfrowanych wiadomości." + }, + editCrew: { + seoTitleNamed: "Edytuj {{name}} - SkateSpots", + seoTitle: "Edytuj crew - SkateSpots", + seoDescription: "Edytuj swój crew deskorolkowy.", + loginRequired: "Wymagane logowanie", + notYours: "To nie Twoje crew", + notYoursDesc: "Tylko założyciel crew może edytować to crew.", + backToCrew: "Powrót do crew", + title: "Edytuj crew" + }, + form: { + add: "Dodaj", + added: "Dodano", + addNameInBasicsA: "Dodaj nazwę crew z powrotem w", + addNameInBasicsB: "aby dokończyć.", + adminsDescA: "Uczyń zaufanych członków", + adminsWord: "adminami", + adminsDescB: "— mogą zapraszać członków i moderować feed oraz czat crew własnymi kluczami. Ty (założyciel) zawsze pozostajesz właścicielem tożsamości crew.", + agentDescA: "Dodaj", + agentDescB: ", przewodnika AI, który naprawdę zna Twój crew. Członkowie mogą pytać o", + agentDescC: "— plus pobliskie spoty, wydarzenia, coachów i sprzęt z danych SkateSpots na żywo. Działa w przeglądarce; bez kluczy i konfiguracji. To wczesna wersja (AI w darmowym planie, więc czasem wolna).", + agentDescStrong: "Twój następny jam, kto prowadzi crew, czego szukacie i jaki macie vibe", + agentEnabledNote: "Sasquatch pojawi się na stronie Twojego crew po zapisaniu.", + bandDesc: "Masz zespół? Sceny deskorolkowe i lokalna muzyka idą w parze — podaj nazwę zespołu i link do kawałków.", + bandFooterA: "Aby uzyskać pełny profil zespołu (gatunki, instrumenty, koncerty), utwórz", + musicianWord: "Muzyk", + bandFooterB: "w The Lab, a następnie podłącz go w sekcji", + linkedLabWord: "Podłączone profile w The Lab", + bandFooterC: "powyżej.", + bandMusicWord: "Zespół i muzyka", + bandName: "Nazwa zespołu", + bandNamePlaceholder: "np. The Bail Outs", + bandNudgeA: "Masz zespół — dotknij, aby ustawić", + crewTypeWord: "Typ crew", + bandNudgeB: "na", + bandNudgeC: "abyś pojawił się także w scenie Muzyka w The Lab.", + beta: "Beta", + bioLabel: "O nas / manifest", + bioPlaceholder: "Kim jesteście, co jeździcie, wasza historia...", + continue: "Kontynuuj", + crewCreated: "Crew utworzone!", + crewUpdated: "Crew zaktualizowane!", + crewName: "Nazwa crew", + crewOnlyWord: "Tylko crew", + crewType: "Typ crew", + crewTypeDescA: "Czy Twój crew skupia się na jakimś rzemiośle? Wybierz jedno, aby pojawić się także w tej scenie w", + theLab: "The Lab", + crewTypeDescB: ". Zwykłe crew deskorolkowe pozostają", + mixedWord: "Mieszane", + crewTypeDescC: ".", + customVibeHint: "Dodaj własny vibe lub temat przez #", + customVibePlaceholder: "np. downhill, night-sessions, no-comply", + editDesc: "Tożsamość, teren i członkowie Twojego crew", + enableAgent: "Włącz agenta crew", + enableTreasury: "Włącz skarbiec crew", + failed: "Nie udało się", + founded: "Założone (rok)", + geolocationUnsupported: "Geolokalizacja nie jest obsługiwana", + gettingLocation: "Pobieranie...", + goalHint: "Upewnij się, że Twój profil Nostr ma adres Lightning (lud16), aby wpłaty mogły dotrzeć.", + goalPlaceholder: "np. Zabetonować DIY spot", + goalTarget: "Cel (sats)", + goalWhat: "Jaki jest cel?", + homeSpots: "Ulubione spoty", + homeSpotsDesc: "Podłącz spoty, które odwiedza Twój crew — połączą się z Twoim crew na mapie", + homeTurf: "Teren (miasto / obszar)", + homeTurfPlaceholder: "Bristol, UK", + instagramDetected: "Wykryto klip z Instagrama", + invalidMember: "Podaj prawidłowy npub, nprofile lub klucz publiczny hex.", + latitude: "Szerokość geograficzna", + leaveBlankLocation: "Zostaw puste, aby zachować obecną lokalizację terenu.", + links: "Linki", + locationError: "Błąd lokalizacji", + locationFound: "Znaleziono lokalizację", + logoAlt: "Crew", + logoHint: "Logo sprawia, że Twoje crew jest od razu rozpoznawalne na mapie i w feedach. Kwadrat sprawdza się najlepiej.", + logoLabel: "Logo / zdjęcie crew", + logoUploaded: "Logo przesłane", + longitude: "Długość geograficzna", + looksGood: "Wygląda dobrze", + makeAdmin: "Nadaj admina", + mapPin: "Punkt na mapie", + mapPinHint: "Umieść swoje crew na mapie, aby miejscowi mogli Cię znaleźć. Dotknij przycisku — bez wpisywania.", + memberAlreadyAdded: "Ten członek jest już dodany.", + members: "Członkowie", + membersDesc: "Dodaj konta Nostr swojego crew. Każdy członek potwierdza własnym kluczem — do tego czasu widnieje jako „oczekujący”.", + musicLink: "Link do muzyki", + nameCrew: "Nazwij swoje crew", + nameCrewDesc: "Crew potrzebuje nazwy, zanim przejdziesz dalej.", + nameCrewFirst: "Najpierw nazwij swoje crew", + nameHint: "Jedyne, czego naprawdę potrzebujesz. Możesz to zmienić później.", + namePlaceholder: "np. Backyard Bandits", + nameRequired: "Nazwa jest wymagana", + nameRequiredDesc: "Nadaj swojemu crew nazwę.", + nip05DescA: "Weryfikowalna nazwa, którą kontrolujesz na dowolnej domenie, np.", + nip05DescB: ". Jest weryfikowana względem klucza założyciela tego crew, a możesz dodać kilka — każda pokazuje zielony znacznik, gdy jej domena ją potwierdzi.", + nip05Label: "NIP-05 crew", + nip05Placeholder: "crew@yourdomain.com", + nip05Add: "Dodaj", + nip05Invalid: "Podaj nazwę w formacie crew@yourdomain.com", + nip05TooMany: "Możesz dodać do {{count}} nazw.", + nip05Unverified: "Niesprawdzone", + nip05Remove: "Usuń {{handle}}", + notAKeyA: "To jeszcze nie wygląda na klucz Nostr — wklej", + notAKeyB: ",", + notAKeyC: "lub klucz publiczny hex.", + onlyYouTubeInstagram: "Obsługiwane są tylko linki do YouTube i Instagrama.", + openCall: "Open Call", + openCallDescA: "Szukasz filmera, montażysty lub świeżej krwi? Ogłoś to — pojawi się na stronie Twojego crew, aby pasujący ludzie z", + openCallDescB: "mogli się odezwać.", + optional: "· opcjonalne", + optionalParen: "(opcjonalne)", + otherSocials: "Inne social media", + otherSocialsDesc: "Dodaj ile chcesz — YouTube, TikTok, Discord, Telegram itp.", + ownVisibility: "własną widoczność", + progress: "Postęp", + publicWord: "Publiczny", + publishedToScene: "Opublikowano dla sceny.", + publishFailed: "Nie udało się opublikować", + publishing: "Publikowanie...", + ready: "Gotowe", + readyToRollA: "Gotowe do startu — naciśnij", + readyToRollB: "kiedy chcesz.", + removeAdminRole: "Usuń rolę admina", + removeMember: "Usuń członka", + removeSocial: "Usuń link do social media", + removeVibe: "Usuń {{vibe}}", + roles: "Role:", + sasquatch: "Sasquatch", + saveCrew: "Zapisz crew", + skipToEnd: "Przejdź do końca", + socialPlaceholder: "@nazwa lub link", + sponsorDesc: "Jeśli lokalny sklep wspiera Twój crew, wybierz go tutaj, aby pokazać baner „Sponsorowane przez” z linkiem do jego sklepu.", + stepAria: "Krok {{step}}: {{title}}", + stepBasics: "Podstawy", + stepBasicsShort: "Podstawy", + stepBasicsHint: "Tylko to, co niezbędne — crew możesz założyć już na tym kroku.", + stepVibe: "Tożsamość i vibe", + stepVibeShort: "Vibe", + stepVibeHint: "Jak Twój crew prezentuje się w aplikacji. Wszystko opcjonalne.", + stepSquad: "Ekipa i spoty", + stepSquadShort: "Ekipa", + stepSquadHint: "Dodaj swoich ludzi i swój teren. Zawsze możesz zrobić to później.", + stepExtras: "Dodatki", + stepExtrasShort: "Dodatki", + stepExtrasHint: "Ulepszenia na później — pomiń wszystko, czego nie jesteś pewien.", + extrasAllOptional: "Wszystko na tym kroku jest opcjonalne.", + groupIdentity: "Tożsamość", + groupIdentityHint: "Nazwa, linki", + groupAi: "Sasquatch AI", + groupShowcase: "Prezentacja", + groupPayments: "Płatności i skarbiec", + groupIntegrations: "Integracje", + groupAdvanced: "Zaawansowane", + groupAdvancedHint: "eksperymentalne", + pro: "Pro", + agentProNote: "Napędzane przez Sasquatch. Pro korzysta z najlepszych modeli; bez Pro używa darmowego fallbacku.", + stepOf: "Krok {{step}} z {{total}}", + treasuryDescA: "Zbierz sats na wspólny cel — remont lokalnego DIY spotu, wyjazd crew, pulę nagród na zawody. To przejrzysty cel Lightning; zaps trafiają", + treasuryDescStrong: "prosto do Twojego portfela", + treasuryDescB: "(przez adres Lightning z Twojego profilu). SkateSpots nigdy nie przechowuje środków.", + upload: "Prześlij", + uploadFailed: "Przesyłanie nie udało się", + useCurrentLocation: "Użyj bieżącej lokalizacji", + vibeLabel: "Vibe / temat", + videoDescA: "Pełna part, montaż lub najnowszy klip Twojego crew. Wklej", + videoDescB: "link — odtworzy się od razu na stronie Twojego crew.", + visibilityDescA: "Każdy członek kontroluje swoją", + visibilityDescB: "— gdy potwierdza własnym kluczem, może wybrać", + visibilityDescC: "— ukryta dla osób z zewnątrz). Nie możesz ustawić tego za nich; to ich decyzja.", + website: "Strona internetowa", + yourRoles: "Twoje role (Team Leader)", + youtubeDetected: "Wykryto film z YouTube", + invalidUrl: "Podaj prawidłowy link (np. https://example.com)." + }, + groupConversation: { + seoTitle: "Czat grupowy - SkateSpots", + invalidLink: "Ten link do czatu grupowego jest nieprawidłowy.", + loginTitle: "Zaloguj się, aby zobaczyć tę grupę", + secureSignerTitle: "Wymagany bezpieczny signer", + secureSignerDesc: "Wiadomości grupowe wymagają signera obsługującego NIP-44.", + encryptedGroup: "Grupa szyfrowana end-to-end", + empty: "Brak wiadomości — przywitaj się z grupą.", + placeholder: "Napisz do grupy..." + }, + hero: { + established: "Od {{year}}", + teamLeader: "Team leader: {{name}}", + ledBy: "Prowadzone przez" + }, + inviteCard: { + acceptedTitle: "Zaproszenie przyjęte 🛹", + acceptedDesc: "Założyciel crew potwierdza członków w {{crew}}. Pojawisz się w składzie, gdy zatwierdzi.", + couldNotAccept: "Nie udało się przyjąć", + couldNotDecline: "Nie udało się odrzucić", + acceptedDone: "Przyjęto —", + confirmsMembers: "potwierdza członków", + declinedDone: "Odrzucono zaproszenie do {{crew}}", + invitedYou: "zaprosił Cię do dołączenia", + admin: "Admin", + accept: "Przyjmij", + decline: "Odrzuć" + }, + inviteDialog: { + messageIntro: "Yo — dołącz do crew {{crew}} na SkateSpots 🛹", + messageBody: "Zaloguj się kluczem Nostr, a następnie poproś o dołączenie na stronie crew.", + copyFailed: "Kopiowanie nie udało się", + shareTitle: "Dołącz do {{crew}}", + sentTitle: "Zaproszenie wysłane! 🛹", + sentDesc: "Otrzymają powiadomienie, aby przyjąć lub odrzucić.", + couldNotSend: "Nie udało się wysłać zaproszenia", + trigger: "Zaproś", + title: "Zaproś do {{crew}}", + description: "Wyślij zaproszenie na czyjś klucz Nostr lub udostępnij link.", + sendTab: "Wyślij zaproszenie", + shareTab: "Udostępnij link", + npubLabel: "npub skatera", + invalidNpub: "To nie wygląda na prawidłowy npub.", + noteLabel: "Notatka", + optional: "(opcjonalne)", + notePlaceholder: "Przyjdź z nami pojeździć…", + inviteAsAdmin: "Zaproś jako admina", + inviteAsAdminDesc: "Może zarządzać crew i zapraszać innych.", + sendButton: "Wyślij zaproszenie", + sendFooter: "Otrzymają powiadomienie, aby przyjąć lub odrzucić. Członkostwo liczy się dopiero po przyjęciu.", + inviteLink: "Link zaproszenia", + messageLabel: "Wiadomość", + copyMessage: "Kopiuj wiadomość", + founderHint: "Jako założyciel możesz też dodać klucz członka bezpośrednio, a on go potwierdzi.", + addMemberSettings: "Dodaj członka w ustawieniach crew" + }, + joinRequest: { + moreCount: "+{{count}} więcej", + addedTitle: "Dodano {{name}} do {{crew}} 🛹", + addedDesc: "Potwierdzi po swojej stronie, aby pojawić się jako członek.", + vouchedTitle: "Poręczyłeś za {{name}} 🤝", + vouchedDesc: "Założyciel {{crew}} zobaczy Twoje poparcie i będzie mógł ich dodać.", + couldNotEndorse: "Nie udało się poprzeć", + endorsedDoneA: "Poręczyłeś za", + endorsedDoneB: "— założyciel potwierdzi", + vouchedBy: "Poręczone przez", + approveAndAdd: "Zatwierdź i dodaj", + addToCrew: "Dodaj do crew", + vouchedWaiting: "Poręczone — czeka na założyciela", + vouchForThem: "Poręcz za nich", + leadershipOnly: "Tylko dla kadry crew.", + adminHelp: "Admini nie mogą dodawać członków bezpośrednio — poręczenie mówi założycielowi, że popierasz tego ridera." + }, + leadership: { + teamLeader: "Team Leader", + captain: "Kapitan", + verifiedMember: "Zweryfikowany członek", + messageName: "Napisz do {{name}}", + title: "Kadra", + captainsOne: "{{count}} kapitan", + captainsMany: "{{count}} kapitanów", + footer: "Team Leader prowadzi skład; kapitanowie pomagają zapraszać, organizować jamy i dbać o porządek w crew." + }, + linkField: { + title: "Podłączone crew", + description: "Prowadzisz też crew? Podłącz je, aby ludzie mogli przeskakiwać między Twoim studiem a Twoim crew. Opcjonalne. Podłącz to crew z powrotem do profilu w edytorze crew, a pokaże zieloną", + descriptionRest: "plakietkę na obu.", + none: "Nie masz jeszcze żadnych crew. Załóż jedno na stronie Crew, aby je tu podłączyć.", + linkedCrew: "Podłączone crew ({{id}})" + }, + lookingFor: { + title: "Open Call", + subtitle: "To crew szuka:" + }, + memberVisibility: { + updatedTitle: "Widoczność zaktualizowana", + updatedCrew: "Teraz widniejesz tylko dla kolegów z crew.", + updatedPublic: "Teraz widniejesz publicznie w tym crew.", + couldNotUpdate: "Nie udało się zaktualizować", + title: "Twoja widoczność w tym crew", + save: "Zapisz widoczność" + }, + newMessage: { + inCrew: "W Twoim crew: {{crews}}", + crewmate: "Kolega z crew", + following: "Obserwujesz", + invalidKey: "To nie wygląda na prawidłowy npub lub klucz publiczny.", + description: "Szukaj swoich ludzi po imieniu lub wklej npub, aby napisać do kogokolwiek. Wybierz dwie lub więcej osób, aby rozpocząć grupę.", + searchPlaceholder: "Szukaj imienia lub wklej npub1...", + messageThisKey: "Napisz na ten klucz", + loadingPeople: "Ładowanie Twoich ludzi...", + noPeople: "Brak kolegów z crew lub obserwowanych.", + noPeopleHint: "Wklej czyjś npub powyżej, aby rozpocząć rozmowę.", + yourCrews: "Twoje crew", + selected: "wybrano {{count}}", + startGroup: "Rozpocznij grupę ({{count}})", + message: "Wiadomość" + }, + nip05: { + mismatch: "Ta domena wskazuje tę nazwę na inny klucz Nostr niż klucz założyciela crew. Niezweryfikowana.", + verified: "Zweryfikowana — domena potwierdza, że ta nazwa należy do klucza założyciela crew." + }, + requestCollective: { + sentTitle: "Prośba wysłana 🤝", + sentDesc: "{{name}} zobaczy ją w powiadomieniach i będzie mógł Cię dodać.", + couldNotSend: "Nie udało się wysłać prośby", + title: "Dołącz do tego kolektywu", + waiting: "Prośba wysłana — czekamy na {{name}}.", + askA: "Poproś crew stojące za", + askB: "o dodanie Cię do składu. Otrzymają powiadomienie i mogą dodać Cię jednym dotknięciem.", + placeholder: "Opcjonalne: napisz, dlaczego pasujesz…", + sendButton: "Wyślij prośbę" + }, + requestToJoin: { + sentTitle: "Prośba wysłana! 🛹", + sentDesc: "Kadra {{crew}} zobaczy ją w powiadomieniach.", + couldNotSend: "Nie udało się wysłać prośby", + trigger: "Poproś o dołączenie", + title: "Dołącz do {{crew}}", + description: "Powiadamia założyciela i adminów crew, aby mogli Cię dodać.", + placeholder: "Przywitaj się — gdzie jeździsz, kogo znasz, dlaczego chcesz dołączyć…", + sending: "Wysyłanie…", + sendButton: "Wyślij prośbę o dołączenie" + }, + sponsorBanner: { + loading: "Ładowanie sponsora…", + sponsoredBy: "Sponsorowane przez" + }, + sponsorPicker: { + selected: "Sponsor wybrany", + setLoading: "Sponsor ustawiony (sklep się ładuje…)", + set: "Sponsor ustawiony", + clearAria: "Wyczyść sponsora", + searchPlaceholder: "Szukaj sklepów deskorolkowych po nazwie lub mieście…", + loading: "Ładowanie sklepów…", + noMatch: "Żaden sklep nie pasuje — spróbuj innego wyszukiwania.", + none: "Nie znaleziono jeszcze sklepów." + }, + treasury: { + title: "Skarbiec crew", + ofGoal: "z celu {{target}}", + goalReached: "Cel osiągnięty!", + funded: "sfinansowane w {{percent}}%", + contributionOne: "{{count}} wpłata", + contributionMany: "{{count}} wpłat", + daysLeft: "pozostało {{days}} dni", + closed: "zamknięty", + nonCustodial: "Bez depozytu · zaps trafiają prosto do portfela Lightning crew" + }, + userStatus: { + atSpot: "📍 Na spocie", + autoClears: "⏱️ Automatycznie usunie się za {{min}} min" + }, + video: { + title: "Part", + fullVideo: "Pełny film · montaż", + latestClip: "Najnowszy klip", + watch: "Oglądaj", + iframeTitle: "{{crew}} — wideo", + playAria: "Odtwórz wideo {{crew}}", + thumbAlt: "Miniatura wideo {{crew}}", + instagramTitle: "Klip z Instagrama" + }, + vouch: { + removedTitle: "Poręczenie usunięte", + vouchedTitle: "Poręczone!", + removedDesc: "Nie poręczasz już za {{name}}.", + vouchedDesc: "Poręczyłeś za {{name}}. Scena ufa swoim.", + couldNotVouch: "Nie udało się poręczyć", + title: "Poręczenia sceny", + sceneVerified: "Zweryfikowany przez scenę", + vouched: "Poręczony", + newUnvouched: "Nowy · bez poręczenia", + checking: "Sprawdzanie sceny…", + empty: "Brak poręczeń. Poręczenia od skaterów z Twoich kręgów to najlepszy sygnał, że ktoś jest prawdziwy — a nie przypadkowy przybysz.", + countOne: "{{count}} poręczenie", + countMany: "{{count}} poręczeń", + trusted: "{{count}} od skaterów w Twojej sieci zaufania", + remove: "Usuń poręczenie", + vouchFor: "Poręcz za {{name}}", + ownerNote: "Skaterzy, którzy znają Twoją pracę, mogą tu za Ciebie poręczyć." + } + } +}; export default plBatch5; diff --git a/src/i18n/pl/batch6.ts b/src/i18n/pl/batch6.ts index 26e28a5..2bc4e92 100644 --- a/src/i18n/pl/batch6.ts +++ b/src/i18n/pl/batch6.ts @@ -1,4 +1,1958 @@ -/** pl — batch 6. Filled by the translation pass; empty until then. */ -const plBatch6 = {}; +/** + * pl — batch 6: places / marketplace / lab option labels. + * + * Keep 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; trick/brand names. + * `{{placeholders}}` are preserved exactly. + * + * Keys MUST match the `en` namespaces exactly; missing keys fall back to + * English (the `check:i18n` script reports Polish coverage). + */ +const plBatch6 = { + placesUi: { + addToCalendar: { + add: "Dodaj do kalendarza", + appleOutlook: "Apple / Outlook (.ics)", + google: "Kalendarz Google", + }, + attendees: { + goingCount: "idzie", + goingTab: "Idą ({{count}})", + interestedTab: "Zainteresowani ({{count}})", + nobodyGoing: "Nikt jeszcze nie potwierdził.", + nobodyInterested: "Nikt jeszcze nie oznaczył zainteresowania.", + noRsvps: "Brak RSVP — bądź pierwszą osobą, która potwierdzi udział.", + trusted: "Zaufany", + trustedTitle: "Osoba, którą obserwujesz, lub zaufany twórca mapy", + youTrust: "któremu ufasz", + }, + bounty: { + addressCoords: "Adres i współrzędne", + basic: "Podstawowe", + contactInfo: "Dane kontaktowe", + description: "Opis", + earningPotential: "Możliwości zarobku", + excellent: "Doskonale!", + gettingStarted: "Pierwsze kroki", + good: "Dobrze", + onePhoto: "Co najmniej 1 zdjęcie", + openingHours: "Godziny otwarcia", + shopName: "Nazwa Shopu", + threePhotos: "3+ zdjęcia", + tip: "💡 Wyższa jakość = więcej Zapów od społeczności!", + }, + calendar: { + allDay: "Cały dzień", + eventDay: "Dzień Eventu", + eventsOnDay: "{{count}} Eventów", + eventsThisMonth: "Eventów w tym miesiącu", + going: "idzie", + months: { + january: "Styczeń", + february: "Luty", + march: "Marzec", + april: "Kwiecień", + may: "Maj", + june: "Czerwiec", + july: "Lipiec", + august: "Sierpień", + september: "Wrzesień", + october: "Październik", + november: "Listopad", + december: "Grudzień", + }, + nextMonth: "Następny miesiąc", + nothingOnDay: "Nic w tym dniu.", + prevMonth: "Poprzedni miesiąc", + tapHighlighted: "Dotknij podświetlonego dnia, aby zobaczyć, co się dzieje.", + today: "Dzisiaj", + tourDay: "Dzień Touru", + toursOnDay: "{{count}} Tourów", + toursThisMonth: "Tourów w tym miesiącu", + weekdays: { + sun: "Nd", + mon: "Pn", + tue: "Wt", + wed: "Śr", + thu: "Cz", + fri: "Pt", + sat: "So", + }, + weekdaysShort: { + sun: "N", + mon: "P", + tue: "W", + wed: "Ś", + thu: "C", + fri: "P", + sat: "S", + }, + }, + countdown: { + ended: "Zakończone", + happeningNow: "Trwa teraz", + inDays: "Za {{count}} dni", + inHoursMins: "Za {{hours}} godz. {{mins}} min", + inMins: "Za {{count}} min", + startingNow: "Zaczyna się teraz", + tomorrow: "Jutro", + }, + createEvent: { + add: "Dodaj", + addNewSpot: "Dodaj nowy Spot →", + changeSpot: "Zmień Spot", + created: "Event utworzony!", + createdDesc: "Twój Event został opublikowany w sieci.", + entryFee: "Opłata za wstęp", + entryFeeHint: "(opcjonalnie — np. \"500 sats\" lub \"40 zł\")", + entryFeePlaceholder: "Zostaw puste dla darmowych Eventów", + featuring: "Występ: {{name}}", + featuringDesc: "Ten występ zostanie oznaczony jako muzyka na żywo i pojawi się na liście koncertów.", + fundingGoal: "Cel finansowania", + fundingGoalHint: "(opcjonalnie — sats do zebrania przez Zapy)", + fundingGoalPlaceholder: "np. 50000", + geoNotSupported: "Geolokalizacja nieobsługiwana", + geoNotSupportedDesc: "Twoja przeglądarka nie obsługuje geolokalizacji.", + hideSpots: "Ukryj Spoty", + hostingAs: "Organizujesz jako {{name}}", + hostingAsDesc: "Ten Event pojawi się na stronie Twojego Crew i zostanie oznaczony jako organizowany przez Crew.", + imageUploaded: "Zdjęcie przesłane", + imageUploadedDesc: "Twoje zdjęcie zostało pomyślnie przesłane.", + invalidDate: "Nieprawidłowa data", + invalidDateDesc: "Podaj prawidłową datę i godzinę rozpoczęcia.", + invalidEnd: "Nieprawidłowa godzina zakończenia", + invalidEndDesc: "Godzina zakończenia musi być późniejsza niż godzina rozpoczęcia.", + linkedTo: "Powiązane z: {{title}}", + linkToSpot: "Powiąż ze Spotem", + linkToShop: "Powiąż z Shopem", + selectedShop: "Powiązane z {{name}}", + selectShopHint: "Opcjonalnie — odbywa się w skate Shopie lub jest przez niego organizowane.", + selectShop: "Wybierz Shop", + changeShop: "Zmień Shop", + hideShops: "Ukryj Shopy", + searchShops: "Szukaj Shopów…", + noShopsMatch: "Brak Shopów pasujących do wyszukiwania.", + noShopsAvailable: "Brak dostępnych Shopów.", + linkToTour: "Powiąż z Tourem (opcjonalnie)", + linkTourDesc: "Powiąż ten Event z Tourem, aby pokazać, że jest częścią większej serii. Świetne dla tourów krajowych, międzynarodowych wypraw lub dni wyzwań World Destruction Tour.", + loadingSpots: "Ładowanie Spotów...", + loadingTours: "Ładowanie Tourów...", + locationError: "Błąd lokalizacji", + locationFound: "Znaleziono lokalizację", + locationFoundDesc: "Twoja bieżąca lokalizacja została ustawiona.", + logoUrl: "URL logo (opcjonalnie)", + noSpotsAvailable: "Brak dostępnych Spotów", + noSpotsMatch: "Brak Spotów pasujących do wyszukiwania", + noTourLinked: "Brak powiązanego Touru", + optional: "(opcjonalnie)", + pastDesc: "Wybierz datę i godzinę w przyszłości, aby skaterzy mogli potwierdzić RSVP i przyjść.", + pastTitle: "Ta godzina rozpoczęcia jest w przeszłości", + publishFailed: "Nie udało się opublikować", + publishFeatured: "Opublikuj wyróżniony Event", + removeSponsor: "Usuń sponsora", + searchSpots: "Szukaj Spotów po nazwie, lokalizacji lub kategorii...", + selectedSpot: "Wybrano: {{name}}", + selectSpot: "Wybierz Spot", + selectSpotHint: "Wybierz Spot z mapy, w którym odbywa się ten Event", + selectTour: "Wybierz Tour", + somethingWrong: "Coś poszło nie tak", + sponsorName: "Nazwa sponsora", + sponsors: "Sponsorzy", + sponsorsHint: "Masz sklep lub markę, które to wspierają? Dodaj ich logo — pojawi się jako pasek \"Prezentowane przez\" na Evencie.", + startRequired: "Wymagana godzina rozpoczęcia", + startRequiredDesc: "Podaj, kiedy zaczyna się Event.", + titleRequired: "Wymagany tytuł", + titleRequiredDesc: "Podaj nazwę tego Eventu.", + uploadFailed: "Przesyłanie nie powiodło się", + uploadFailedDesc: "Nie udało się przesłać zdjęcia", + websiteUrl: "URL strony (opcjonalnie)", + }, + createShop: { + address: "Adres Shopu", + addressPlaceholder: "np. ul. Marszałkowska 1, 00-001 Warszawa", + addressRequired: "Wymagany adres", + addressRequiredDesc: "Podaj adres swojego Shopu.", + contactHint: "Pomóż klientom się z Tobą skontaktować (zalecana co najmniej jedna metoda kontaktu)", + contactInfo: "Dane kontaktowe", + created: "🎉 Shop dodany!", + createdDesc: "Twój skate Shop jest już na mapie. Skaterzy mogą Cię Zapować w podziękowaniu!", + descriptionPlaceholder: "Opowiedz o swoim Shopie, co sprzedajesz, w czym się specjalizujesz...", + detailsDesc: "Opowiedz społeczności o swoim Shopie. Wszystkie pola oznaczone * są wymagane.", + email: "E-mail", + hoursOfOperation: "Godziny otwarcia", + hoursPlaceholder: "np. pon.–sob. 10:00–20:00, niedz. 12:00–18:00", + instagram: "Instagram", + invalidCoords: "Nieprawidłowe współrzędne", + invalidCoordsDesc: "Podaj prawidłową szerokość geograficzną (–90 do 90) i długość (–180 do 180).", + latPlaceholder: "Szerokość geograficzna (np. 52.2297)", + lngPlaceholder: "Długość geograficzna (np. 21.0122)", + locationRequired: "Wymagana lokalizacja", + locationRequiredDesc: "Wprowadź współrzędne lub użyj bieżącej lokalizacji.", + loginToAdd: "Musisz się zalogować, aby dodać skate Shop.", + namePlaceholder: "np. Supreme Warszawa", + nameRequired: "Wymagana nazwa Shopu", + nameRequiredDesc: "Podaj nazwę swojego Shopu.", + phoneNumber: "Numer telefonu", + publishFailedDesc: "Coś poszło nie tak. Sprawdź konsolę, aby poznać szczegóły.", + shopPhotoAlt: "Shop", + shopPhotos: "Zdjęcia Shopu", + subtitle: "Dodaj swój Shop na mapę i połącz się ze społecznością", + upload: "Prześlij", + }, + createTour: { + acceptedClipSources: "Akceptowane źródła klipów", + acceptedClipSourcesDesc: "Jakie formaty będziesz akceptować przy zgłaszaniu klipów?", + accommodationInfo: "Informacje o zakwaterowaniu", + accommodationPlaceholder: "Rekomendacje lub ustalenia dotyczące zakwaterowania, np. 'Tanie hostele na trasie', 'Wymagany sprzęt biwakowy', 'Airbnb w cenie'", + addChallenge: "Dodaj wyzwanie", + addCity: "Dodaj miasto...", + addCountry: "Dodaj kraj...", + addShopFirst: "Najpierw dodaj Shop", + alsoSelected: "Wybrano również:", + availabilityPlaceholder: "np. Weekendy, Tylko rano, Po uzgodnieniu", + availabilityQuestion: "Kiedy zwykle masz dostępność?", + availableShops: "Dostępne skate Shopy ({{count}})", + challengeDescPlaceholder: "Opcjonalny opis...", + challenges: "Wyzwania", + challengesRequired: "Wymagane wyzwania", + challengesRequiredDesc: "Dodaj co najmniej jedno wyzwanie dla drużyn do wykonania.", + challengesSecret: "Wszystkie wyzwania są TAJNE do dnia rozpoczęcia zawodów. Drużyny zobaczą je dopiero wtedy!", + challengeTitlePlaceholder: "Tytuł wyzwania, np. 'Kickflip z 10-stopniowych schodów'", + citiesLabel: "Miasta", + citiesOnTour: "Miasta na Tourze", + cityPlaceholder: "np. Berlin, Niemcy", + cityRegion: "Miasto / region", + cityRequired: "Wymagane miasto/region", + cityRequiredDesc: "Podaj swoje miasto lub region.", + clipAnyUrl: "🔗 Dowolny URL", + clipBlossom: "📦 Przesyłanie przez Blossom", + clipInstagram: "📸 Instagram", + clipYouTube: "▶️ YouTube", + competitionDates: "Daty zawodów", + competitionDatesWarning: "⚠️ Wszystkie wyzwania są TAJNE do dnia rozpoczęcia! Drużyny zobaczą je dopiero, gdy zaczną się zawody.", + competitionLocations: "Lokalizacje zawodów", + competitionLocationsDesc: "Gdzie będą rywalizować drużyny? Dodaj wszystkie miasta i kraje.", + coordsHint: "Współrzędne są opcjonalne. Dodaj je, aby przypiąć miejsce spotkania na mapie.", + countriesLabel: "Kraje", + countriesRequired: "Wymagane kraje", + countriesRequiredDesc: "Dodaj co najmniej jeden kraj dla swojego międzynarodowego Touru.", + createdDestruction: "💀 WORLD DESTRUCTION TOUR UTWORZONY!", + createdDestructionDesc: "Drużyny mogą się rejestrować. Wyzwania zostaną ujawnione w dniu rozpoczęcia!", + createDestructionTour: "Utwórz World Destruction Tour", + createdInternational: "✈️ Międzynarodowy Tour utworzony!", + createdInternationalDesc: "Twoja globalna przygoda jest na liście! Połącz się ze skaterami z całego świata.", + createdLocal: "🏠 Lokalny Tour utworzony!", + createdLocalDesc: "Twój Tour jest już widoczny. Skaterzy mogą rezerwować przez DM!", + createdNational: "🚐 Krajowy Tour utworzony!", + createdNationalDesc: "Twój road trip jest już na żywo! Zacznij koordynować z zainteresowanymi skaterami.", + departure: "Wyjazd *", + departureRequired: "Wymagana data wyjazdu", + departureRequiredDesc: "Ustaw, kiedy zaczyna się wyprawa, aby skaterzy mogli zaplanować i zarezerwować.", + descriptionPlaceholder: "Opisz, czego doświadczą skaterzy: miejsca, które odwiedzicie, atmosferę, co czyni Twój Tour wyjątkowym...", + destructionDesc: "Zorganizuj globalne zawody w stylu KOTR — Ty ustalasz WSZYSTKO!", + discountHint: "Uczestnicy Touru mogą pokazać potwierdzenie rezerwacji w Shopie, aby otrzymać ten rabat", + discountPercentage: "Procent rabatu", + dropTour: "Dodaj Tour", + duration: "Czas trwania", + durationHintDestruction: "Jak długo trwają zawody? (1–12 miesięcy)", + durationHintInternational: "Ile tygodni trwa przygoda? (do 2 miesięcy)", + durationHintLocal: "Jak długo trwa Twój typowy Tour?", + durationHintNational: "Ile dni trwa road trip?", + durationWeeksMonths: "{{weeks}} tyg. (~{{months}} mies.)", + editTour: "Edytuj Tour", + enable: "Włącz", + enabled: "Włączone", + endBeforeStart: "Koniec przed początkiem", + endBeforeStartDesc: "Data zakończenia zawodów musi być równa lub późniejsza niż data rozpoczęcia.", + endDate: "Data zakończenia", + entryFeeHint: "Zatrzymujesz 95% • Platforma pobiera 5% • Zostaw puste dla darmowego wstępu", + entryFeePerTeam: "Opłata za drużynę (sats)", + entryFeePlaceholder: "np. 100000", + entryPrizes: "Wstęp i nagrody", + filmPremieres: "Premiery filmów drużyn", + filmPremieresDesc: "Po zakończeniu zawodów klipy każdej drużyny staną się pełnym filmem, który może mieć premierę w lokalnych skate Shopach na całym świecie.", + filmPremieresInfo: "🎥 Drużyny łączą swoje klipy z wyzwaniami w finalny film. Shopy mogą organizować premiery, łącząc globalne zawody z lokalnymi społecznościami.", + filmReleaseDate: "Data premiery filmu (opcjonalnie)", + filmReleaseDateHint: "Kiedy filmy będą dostępne. Zostaw puste, aby wydać od razu po zakończeniu zawodów.", + fixedSession: "Stała sesja", + fixedSessionDesc: "Ustalona data i godzina", + flexible: "Elastycznie", + flexibleDesc: "Rezerwuj w dowolnym momencie przez DM", + hide: "Ukryj", + howDestruction1: "• Globalne zawody drużynowe — do 12 miesięcy", + howDestruction2: "• TY ustalasz wyzwania, punkty, nagrody — my dajemy tylko platformę", + howDestruction3: "• Wszystkie wyzwania są TAJNE do dnia rozpoczęcia zawodów", + howDestruction4: "• Klipy przez przesyłanie na Blossom LUB linki zewnętrzne (YouTube, Instagram, dowolny URL)", + howDestruction5: "• Tylko poziom zaawansowany — wszystkie typy Spotów wliczone automatycznie", + howDestruction6: "• Platforma pobiera tylko 5% opłat wpisowych (NIE z puli nagród)", + howDestructionTitle: "💀 WORLD DESTRUCTION TOUR — styl KOTR", + howInternational1: "• Transgraniczne przygody w wielu krajach", + howInternational2: "• Ty ustalasz cenę — platforma pobiera tylko 5%", + howInternational3: "• Ustaw daty wyjazdu i powrotu, aby Crew mogło zarezerwować loty", + howInternational4: "• Połącz skaterów z całego świata", + howInternational5: "• Twórz niezapomniane globalne doświadczenia!", + howInternationalTitle: "Jak działają międzynarodowe Toury", + howItWorks: "Jak to działa:", + howLocal1: "• Ty ustalasz cenę — platforma pobiera 10%", + howLocal2: "• Ukryte Spoty pozostają ukryte — pokazujesz je osobiście", + howLocal3: "• Prowadź zaplanowaną sesję lub zachowaj elastyczność / umawianie indywidualne", + howLocal4: "• Skaterzy rezerwują przez DM, płacą w Lightning i mogą dodać to do kalendarza", + howLocal5: "• Buduj swoją reputację dzięki opiniom i Zapom", + howLocalTitle: "Jak działają lokalne Toury", + howNational1: "• Road tripy po wielu miastach w Twoim kraju", + howNational2: "• Ty ustalasz cenę — platforma pobiera tylko 7%", + howNational3: "• Ustaw daty wyprawy, aby skaterzy mogli zaplanować urlop i podróż", + howNational4: "• Dodaj informacje o transporcie / zakwaterowaniu dla Crew", + howNational5: "• Buduj legendarne skate przygody!", + howNationalTitle: "Jak działają krajowe Toury", + imageUploadedDesc: "Zdjęcie Twojego Touru zostało przesłane.", + incompleteCoords: "Niekompletne współrzędne", + incompleteCoordsDesc: "Podaj zarówno szerokość, jak i długość geograficzną albo pozostaw oba pola puste.", + internationalDetails: "Szczegóły międzynarodowej przygody", + languagesSelected: "Wybrano {{count}}", + languagesSpoken: "Języki", + latOptional: "Szerokość geograficzna (opcjonalnie)", + lngOptional: "Długość geograficzna (opcjonalnie)", + loadingProfile: "Ładowanie profilu...", + loadingProfileDesc: "Sprawdzanie statusu weryfikacji NIP-05.", + loadingShops: "Ładowanie Shopów...", + localShopPremieres: "Lokalne premiery w Shopach", + localShopPremieresDesc: "Skate Shopy na całym świecie mogą organizować wieczory filmowe", + loginToCreate: "Musisz się zalogować, aby utworzyć Tour.", + maxGroupSize: "Maks. wielkość grupy", + maxTeams: "Maks. drużyn", + maxTeamSize: "Maks. wielkość drużyny", + meetingLocationSet: "Twoja bieżąca lokalizacja została ustawiona jako miejsce spotkania.", + meetingPointDesc: "Gdzie spotkasz się z uczestnikami Touru? Wybierz publiczne, dobrze znane miejsce.", + meetingPointLabel: "Miejsce spotkania", + meetingPointPlaceholder: "np. Dworzec Centralny", + meetingPointRequired: "Wymagane miejsce spotkania", + meetingPointRequiredDesc: "Podaj, gdzie spotkasz się z uczestnikami Touru.", + minTeamSize: "Min. wielkość drużyny", + noChallenges: "Brak wyzwań", + noChallengesDesc: "Dodaj wyzwania dla drużyn do wykonania", + noPartnerShop: "Brak partnerskiego Shopu", + noShopsFound: "Nie znaleziono jeszcze żadnych skate Shopów w sieci.", + noShopsRegistered: "Brak zarejestrowanych skate Shopów", + onlineRelease: "Wydanie online", + onlineReleaseDesc: "Wydaj filmy także na YouTube/Nostr", + organizerContact: "Dane kontaktowe organizatora", + organizerContactHint: "Będą widoczne dla zarejestrowanych drużyn", + organizerContactPlaceholder: "Jak drużyny mogą się z Tobą skontaktować? np. npub na Nostr, e-mail, Telegram itp.", + partnerDiscountDesc: "Zaoferuj uczestnikom Touru rabat w lokalnym skate Shopie", + partnerStep1: "1. Nawiąż współpracę z zaufanym lokalnym skate Shopem", + partnerStep2: "2. Ustaw procent rabatu dla uczestników Touru", + partnerStep3: "3. Po Tourze daj uczestnikom potwierdzenie do okazania w Shopie", + partnerStep4: "4. Shop honoruje rabat — buduje społeczność i przyciąga klientów!", + percentOff: "{{percent}}% ZNIŻKI", + photoHint: "Dodaj zdjęcie siebie na desce lub fajnego Spotu z Twojego Touru.", + pickRide: "Wybierz swój środek transportu", + place1: "🥇 1. miejsce", + place2: "🥈 2. miejsce", + place3: "🥉 3. miejsce", + platformFee: "Ty ustalasz cenę • Platforma pobiera {{percent}}", + points: "Punkty:", + pricePerPerson: "Cena za osobę (sats)", + pricePlaceholder: "np. 25000", + prizeDistribution: "Podział nagród", + prizePoolHint: "Opcjonalnie — łączne dostępne nagrody", + prizePoolPlaceholder: "np. 2000000", + proTipDesc: "Przed dodaniem rabatu partnerskiego skontaktuj się z właścicielem Shopu przez DM, aby uzgodnić procent rabatu. Dzięki temu będzie poinformowany i honoruje rabat dla uczestników Twojego Touru.", + proTipTitle: "💡 Wskazówka: najpierw uzgodnij ze Shopem!", + return: "Powrót", + returnBeforeDeparture: "Powrót przed wyjazdem", + returnBeforeDepartureDesc: "Data powrotu musi być równa lub późniejsza niż data wyjazdu.", + roadTripDetails: "Szczegóły road tripu", + schedule: "Harmonogram", + scheduleDesc: "Prowadź to jako jednorazową zaplanowaną sesję albo zachowaj elastyczność i pozwól skaterom zarezerwować termin przez DM.", + secretUntilStart: "Tajne do rozpoczęcia", + selectPartnerShop: "Wybierz partnerski Shop", + sessionDateRequired: "Wymagana data sesji", + sessionDateRequiredDesc: "Wybierz datę i godzinę zaplanowanej sesji lub przełącz na elastyczny harmonogram.", + sessionDateTime: "Data i godzina sesji", + sessionDateTimeHint: "Skaterzy zobaczą ten czas i będą mogli dodać go do kalendarza ze strony Touru.", + shopPremieresContact: "Skontaktuj się z tymi Shopami bezpośrednio, aby umówić wieczory premier filmowych. Wszystkie ustalenia są prywatne.", + shopPremieresHow: "💡 Jak działają premiery w Shopach: skontaktuj się z Shopami bezpośrednio, aby umówić wieczory premier. Wszystkie ustalenia są prywatne między Tobą a Shopami.", + shopsCanRegister: "Shopy mogą się zarejestrować na /create-shop", + show: "Pokaż", + showAllLanguages: "Pokaż wszystkie {{count}} języków", + somethingWrong: "Coś poszło nie tak.", + spotTypes: "Typy Spotów", + spotTypesRequired: "Wymagane typy Spotów", + spotTypesRequiredDesc: "Wybierz co najmniej jeden typ Spotu, który pokażesz.", + startDate: "Data rozpoczęcia", + startDateRequired: "Wymagana data rozpoczęcia", + startDateRequiredDesc: "Ustaw, kiedy zaczynają się zawody (wyzwania zostaną ujawnione tego dnia).", + startingCity: "Miasto startowe", + startingCityPlaceholder: "np. Warszawa, Polska", + teamSettings: "Ustawienia drużyn", + teamsCount: "{{count}} drużyn", + titlePlaceholder: "np. Warszawa Śródmieście — Tour po undergroundowych Spotach", + titleRequired: "Wymagany tytuł Touru", + titleRequiredDesc: "Podaj nazwę swojego Touru.", + totalPercent: "Razem: {{percent}}%", + totalPrizePool: "Łączna pula nagród (sats)", + tourDesc: "Opowiedz skaterom, czego mogą się spodziewać na Twoim Tourze", + tourDetails: "Szczegóły Touru", + tourPhoto: "Zdjęcie Touru", + tourTitle: "Tytuł Touru", + transportDestructionPlaceholder: "Jak drużyny będą podróżować między lokalizacjami? Zapewniasz lub zalecasz jakiś transport?", + transportInfo: "Informacje o transporcie", + transportPlaceholder: "Jak będą podróżować uczestnicy? np. 'Zapewniamy vana', 'Lot do Barcelony, wynajmujemy vana', 'Pociąg między miastami'", + tripDatesDesc: "Ustal daty, aby skaterzy mogli poprosić o urlop, zarezerwować loty i zaplanować wyprawę.", + tripDatesTitle: "Daty wyprawy", + updated: "Tour zaktualizowany!", + updatedDesc: "Twoje zmiany zostały opublikowane.", + upload: "Prześlij", + view: "Zobacz →", + worldDestruction: "World Destruction Tour", + youReceive: "Otrzymujesz: {{amount}} sats za osobę", + }, + editEvent: { + accessDenied: "Brak dostępu", + accessDeniedDesc: "Możesz edytować tylko Eventy, które utworzyłeś.", + backToEvent: "Powrót do Eventu", + detailsDesc: "Zaktualizuj informacje o tym Evencie. Wszystkie pola oznaczone * są wymagane.", + eventCover: "Okładka Eventu", + locationUpdated: "Lokalizacja zaktualizowana.", + loginToEdit: "Musisz się zalogować, aby edytować ten Event.", + newSpot: "Nowy Spot: {{location}}.", + newTime: "Nowy czas: {{date}} o {{time}}.", + saveChanges: "Zapisz zmiany", + saving: "Zapisywanie...", + title: "Edytuj Event", + updated: "Event zaktualizowany!", + updatedDesc: "Twoje zmiany zostały opublikowane w sieci.", + updateDetails: "Zaktualizuj szczegóły dla {{title}}", + updatedNotified: "Zmiany opublikowane — powiadomiono {{count}} uczestników.", + updateFailed: "Nie udało się zaktualizować", + updateMessage: "{{parts}} — zobacz Event, aby poznać szczegóły.", + }, + editShop: { + accessDeniedDesc: "Możesz edytować tylko Shopy, które utworzyłeś.", + backToShop: "Powrót do Shopu", + detailsDesc: "Zaktualizuj informacje o swoim Shopie. Wszystkie pola oznaczone * są wymagane.", + loginToEdit: "Musisz się zalogować, aby edytować ten Shop.", + updated: "Shop zaktualizowany!", + updateDetails: "Zaktualizuj szczegóły dla {{name}}", + }, + editTour: { + accessDeniedDesc: "Możesz edytować tylko Toury, które utworzyłeś.", + loginToEdit: "Musisz się zalogować, aby edytować ten Tour.", + }, + eventCard: { + report: "Zgłoś", + }, + eventDetail: { + aCrew: "Crew", + addToCalendar: "Dodaj do kalendarza", + backToEvents: "Powrót do Eventów", + cancelled: "Ten Event został odwołany", + checkUpdate: "— sprawdź aktualizację", + copyFailed: "Kopiowanie nie powiodło się", + date: "Data", + editEvent: "Edytuj Event", + eventFallback: "Event", + eventOrganizer: "Organizator Eventu", + getDirections: "Wyznacz trasę", + linkCopied: "Link skopiowany", + linkCopiedDesc: "Link do Eventu skopiowany do schowka — wklej go gdziekolwiek.", + live: "Na żywo:", + liveMusic: "muzyka na żywo", + location: "Lokalizacja", + newLocation: "Nowa lokalizacja", + noRsvps: "Nie odnotowano żadnych RSVP.", + organizer: "Organizator", + rsvpsClosed: "RSVP są zamknięte — ten Event został odwołany przez gospodarza.", + seeMap: "Zobacz mapę", + shareEvent: "Udostępnij Event", + shareText: "{{title}} — skate Event na SkateSpots", + shareTextFallback: "Sprawdź ten skate Event na SkateSpots", + time: "Godzina", + timeChanged: "Zmieniono godzinę", + updatesFromHost: "Aktualizacje od gospodarza", + where: "Gdzie", + whoCame: "Kto przyszedł", + whosGoing: "Kto idzie", + }, + events: { + calendar: "Kalendarz", + createTour: "Utwórz Tour", + events: "Eventy", + faqFooter: "Masz pytania? Sprawdź FAQ →", + hosting: "Organizowanie", + hostingSubtitle: "Twoje Eventy — RSVP, aktualizacje i szybkie edycje", + list: "Lista", + noEventsMatchFilters: "Żadne Eventy nie pasują do Twoich filtrów. Spróbuj je zmienić lub wyczyścić.", + noPast: "Brak przeszłych Eventów", + noPastBody: "Nie znaleziono przeszłych skate Eventów w Twoich filtrach.", + noTours: "Nie znaleziono Tourów", + noToursBody: "Nie ma jeszcze skate Tourów. Utwórz pierwszy i zabierz skaterów na odkrywanie Spotów!", + noToursMatchFilters: "Żadne Toury nie pasują do Twoich filtrów. Spróbuj je zmienić lub wyczyścić.", + noUpcoming: "Brak nadchodzących Eventów", + noUpcomingBody: "Nie znaleziono nadchodzących skate Eventów. Bądź pierwszą osobą, która go utworzy!", + past: "Przeszłe", + resultsCount: "{{count}} wyników", + searchCity: "Miasto…", + searchEvent: "Nazwa Eventu…", + searchTour: "Nazwa Touru…", + tours: "Toury", + toursSubtitle: "Lokalni przewodnicy, road tripy i zawody World Destruction", + upcoming: "Nadchodzące", + }, + eventTypes: { + contest: "Zawody", + demo: "Demo", + jam: "Jam", + meetup: "Spotkanie", + premiere: "Premiera", + session: "Sesja", + workshop: "Warsztaty", + }, + featured: { + active: "Aktywne", + bodyEvent: "Dodanie jest darmowe. Wyróżnione Eventy dostają odznakę i trafiają na górę strony Eventów.", + bodyTour: "Dodanie jest darmowe. Wyróżnione Toury dostają odznakę i trafiają na górę listy Tourów.", + contextEvent: "Twój Event i tak pozostaje na liście bezpłatnie — wyróżnienie dodaje tylko odznakę i wzmocnienie.", + contextTour: "Twój Tour i tak pozostaje na liście bezpłatnie — wyróżnienie dodaje tylko odznakę i wzmocnienie.", + daysRemaining: "Wyróżnienie aktywne · pozostało {{count}} dni.", + headingEvent: "Wyróżnij ten Event", + headingTour: "Wyróżnij ten Tour", + optional: "opcjonalnie", + platformOwner: "Właściciel platformy — wyróżnienie jest zawsze włączone.", + }, + filters: { + activeCount: "{{count}} aktywnych", + all: "Wszystkie", + allLevels: "Wszystkie poziomy", + eventType: "Typ Eventu", + following: "Obserwowani", + newest: "Najnowsze", + popular: "Popularne", + showResults: "Pokaż wyniki", + showResultsActive: "Pokaż wyniki · {{count}} aktywnych", + skillLevel: "Poziom umiejętności", + sortBy: "Sortuj według", + topRated: "Najwyżej oceniane", + tourCategory: "Kategoria Touru", + trusted: "Zaufane", + trustLevel: "Poziom zaufania", + verified: "Zweryfikowane", + }, + food: { + bar: "Bar", + cafe: "Kawiarnia", + call: "Zadzwoń", + chooseSpot: "Wybierz Spot...", + directions: "Trasa", + fastFood: "Fast food", + foodCourt: "Food court", + locationLabel: "Lokalizacja:", + noneFound: "Nie znaleziono miejsc z jedzeniem", + noneFoundDesc: "Nie mogliśmy znaleźć żadnych restauracji ani kawiarni w promieniu 1 km od tego Spotu. Spróbuj wybrać inną lokalizację.", + placesFound: "Znaleziono {{count}} miejsc w promieniu 1 km od {{spot}}", + pub: "Pub", + restaurant: "Restauracja", + selectSpot: "Wybierz skate Spot", + selectSpotDesc: "Wybierz skate Spot z listy powyżej, aby znaleźć pobliskie restauracje, kawiarnie i inne opcje jedzenia.", + selectSpotTitle: "Wybierz skate Spot", + subtitle: "Znajdź miejsca z jedzeniem w pobliżu ulubionych Spotów", + title: "Jedzenie przy Spotach", + unknown: "Nieznane", + website: "Strona", + }, + rsvp: { + areYouGoing: "Idziesz?", + cant: "Nie mogę", + cantMakeIt: "Nie dam rady", + going: "Idę", + goingCount: "idzie", + goingShort: "Idę", + hostNote: "Organizujesz to — ale nadal możesz ustawić swój status.", + interested: "Zainteresowany", + interestedCount: "zainteresowanych", + loginToRsvp: "Zaloguj się, aby potwierdzić RSVP.", + maybe: "Może", + toastError: "Nie udało się potwierdzić RSVP", + toastGoing: "Idziesz! 🛹", + toastInterested: "Oznaczono jako zainteresowany.", + toastNotGoing: "Oznaczono jako nieobecność.", + tryAgain: "Spróbuj ponownie.", + }, + shop: { + addNip05Settings: "Dodaj NIP-05 w Ustawieniach", + adminRemovedReason: "Administrator SkateSpots usunął Shop \"{{name}}\"", + areYouOwner: "Jesteś właścicielem Shopu?", + backToMap: "Powrót do mapy", + claimDesc: "Jeśli jesteś właścicielem lub zarządzasz tym Shopem, możesz go zastrzec, aby zweryfikować własność przez NIP-05.", + claimNip05Intro: "Aby zastrzec ten Shop, dodaj identyfikator NIP-05 zgodny z domeną strony Shopu. Na przykład, jeśli strona Shopu to", + claimNip05Your: "Twój NIP-05 powinien być", + contactShop: "Skontaktuj się ze Shopem", + deleted: "Shop usunięty", + deletedDesc: "Żądanie usunięcia wysłane do Relayów. Większość Relayów usunie tę treść.", + deleteDialogDesc: "Spowoduje to trwałe usunięcie \"{{name}}\" ze wszystkich Relayów. Tej operacji nie można cofnąć.", + deleteDialogTitle: "Usunąć Shop?", + deletedReason: "Usunięty Shop", + deleteFailed: "Usuwanie nie powiodło się", + deleteShop: "Usuń Shop", + linkCopied: "Link skopiowany!", + linkCopiedDesc: "Link do Shopu skopiowany do schowka.", + nip05Required: "⚠️ Do zastrzeżenia Shopu wymagana jest weryfikacja NIP-05", + opens: "Otwiera: {{domain}}", + removeAdmin: "Usuń (administrator)", + removed: "Shop usunięty", + removedDesc: "Ten Shop został zdjęty i będzie ukryty w całym SkateSpots.", + removeDialogDesc: "Jako administrator SkateSpots zdejmujesz \"{{name}}\". Będzie ukryty w całej aplikacji dla wszystkich, a do Relayów zostanie wysłane żądanie usunięcia.", + removeDialogTitle: "Usunąć ten Shop? (administrator)", + removeShop: "Usuń Shop", + tipMapper: "Wspomóż twórcę mapy", + tipMapperDesc: "Ten Shop został dodany przez członka społeczności. Zapnij go w podziękowaniu!", + updateNip05: "Zaktualizuj NIP-05, aby zastrzec", + viewPhotoFull: "Wyświetl zdjęcie pełnoekranowo", + viewPhotoOf: "Wyświetl zdjęcie {{index}} z {{total}}", + }, + sponsors: { + presentedBy: "Prezentowane przez", + }, + tourCard: { + active: "Aktywny", + completed: "Zakończony", + contactForPrice: "Skontaktuj się w sprawie ceny", + durationDays: "{{count}} dni", + durationHours: "{{count}} godz.", + durationMonths: "{{count}} mies.", + durationWeeks: "{{count}} tyg.", + entry: "Wpisowe: {{amount}} sats", + happeningNow: "Trwa teraz", + inDays: "Za {{count}} dni", + inHours: "Za {{count}} godz.", + inMonths: "Za {{count}} mies.", + inWeeks: "Za {{count}} tyg.", + maxGroup: "Maks. {{count}}", + price: "{{amount}} sats", + prizePool: "{{amount}} sats", + registrationOpen: "Rejestracja otwarta", + startingSoon: "Wkrótce start", + teamsMax: "Maks. {{count}} drużyn", + tomorrow: "Jutro", + worldwide: "Cały świat", + }, + tourDetail: { + about: "O tym Tourze", + availability: "Dostępność", + competitionWindow: "Okno zawodów", + contactToBook: "Skontaktuj się z przewodnikiem, aby zarezerwować", + discountAt: "{{percent}}% ZNIŻKI w {{shop}}", + duration: "Czas trwania", + languages: "Języki", + loginToBook: "Zaloguj się, aby zarezerwować", + loginToBookDesc: "Zaloguj się, aby skontaktować się z przewodnikiem i zarezerwować ten Tour", + maxGroup: "Maks. grupa", + meetingPoint: "Miejsce spotkania", + notFound: "Nie znaleziono Touru", + notFoundDesc: "Ten Tour mógł zostać usunięty lub nie istnieje.", + organizer: "Organizator", + partnerDiscount: "Rabat w partnerskim Shopie", + partnerDiscountDesc: "Zarezerwuj ten Tour, aby otrzymać rabat w partnerskim skate Shopie. Pokaż potwierdzenie rezerwacji obsłudze Shopu.", + people: "{{count}} osób", + perPerson: "za osobę", + price: "Cena", + runsAbout: "Trwa około {{duration}}", + scheduledSession: "Zaplanowana sesja", + shareText: "Sprawdź ten lokalny skate Tour: {{title}}", + skillLevel: "Poziom umiejętności", + spotTypes: "Typy Spotów", + tourGuide: "Przewodnik Touru", + tourSponsors: "Sponsorzy Touru", + tripDates: "Daty wyprawy", + viewProfile: "Zobacz profil", + }, + updates: { + admin: "Administrator", + adminNote: "Publikujesz jako administrator SkateSpots. Zostanie to wyraźnie oznaczone jako ogłoszenie administratora, a nie od gospodarza.", + kindCancelled: "Odwołane", + kindNewSpot: "Nowy Spot", + kindNewTime: "Nowa godzina", + kindUpdate: "Aktualizacja", + loading: "Ładowanie aktualizacji…", + notifiedCount: "Powiadomiono {{count}} osób.", + notifiedEveryone: "Wszyscy zobaczą to na Evencie.", + notifiesRsvps: "Powiadamia {{count}} RSVP", + noUpdates: "Brak aktualizacji od gospodarza. Potwierdź RSVP, a otrzymasz powiadomienie o zmianach.", + placeholder: "Deszcz — przeniesione na niedzielę 14:00. Spotkanie przy tylnym murku…", + post: "Opublikuj", + postAdminUpdate: "Opublikuj aktualizację administratora", + posted: "Aktualizacja opublikowana", + postError: "Nie udało się opublikować aktualizacji", + postUpdate: "Opublikuj aktualizację", + tryAgain: "Spróbuj ponownie.", + visibleToEveryone: "Widoczne dla wszystkich w tym Evencie", + }, + destination: { + bitcoin: "Bitcoin", + closeSearch: "Zamknij wyszukiwanie", + nothingMatches: "Nic nie pasuje do „{{query}}”.", + placeholder: "Szukaj Spotów, Shopów, sprzedawców Bitcoin…", + shop: "Shop", + spot: "Spot", + typeChars: "Wpisz co najmniej 2 znaki. Wyszukuje skate Spoty, skate Shopy i sprzedawców Bitcoin.", + typeCharsNear: "Wpisz co najmniej 2 znaki. Wyszukuje skate Spoty, skate Shopy i sprzedawców Bitcoin w pobliżu.", + }, + dateWindow: { + any: "Dowolne", + anytime: "Kiedykolwiek", + month: "Ten miesiąc", + monthShort: "Miesiąc", + today: "Dzisiaj", + todayShort: "Dzisiaj", + week: "Ten tydzień", + weekend: "Weekend", + weekendShort: "Weekend", + weekShort: "Tydzień", + }, + }, + marketUi: { + gearSwap: { + title: "Gear Swap", + subtitle: "Kupuj i sprzedawaj używany skate Gear innym skaterom", + listGear: "Wystaw Gear", + searchPlaceholder: "Szukaj Gear...", + allCategories: "Wszystkie kategorie", + forSale: "Na sprzedaż", + wtb: "WTB", + trust: "Zaufanie", + filterByTrust: "Filtruj według zaufania", + allSellers: "Wszyscy sprzedawcy", + verifiedOnly: "Tylko zweryfikowani", + trustedPlus: "Zaufani+", + followingOnly: "Tylko obserwowani", + pickupOrShip: "Odbiór lub wysyłka", + localPickup: "Odbiór osobisty", + ships: "Wysyłka", + sortBy: "Sortuj według", + newest: "Najnowsze", + priceLowHigh: "Cena: od najniższej", + priceHighLow: "Cena: od najwyższej", + trustScore: "Wskaźnik zaufania", + nearest: "Najbliżej (lokalnie)", + listingFound: "Znaleziono {{count}} ogłoszenie", + listingsFound: "Znaleziono {{count}} ogłoszeń", + loadFailed: "Nie udało się załadować ogłoszeń", + tryLater: "Spróbuj ponownie później.", + noneTitle: "Nie znaleziono ogłoszeń", + noneFiltered: "Żaden Gear nie pasuje do Twoich filtrów. Spróbuj je wyczyścić lub poszukaj czegoś innego.", + noneFirst: "Wystaw swój Gear jako pierwszy — Deck, Trucks, Wheels, buty, cokolwiek skate!", + listYourGear: "Wystaw swój Gear", + faqLink: "Masz pytania? Sprawdź FAQ →", + }, + hub: { + browse: "Przeglądaj", + selling: "Sprzedaż", + myTrades: "Moje transakcje", + reputation: "Reputacja", + loginListings: "Zaloguj się, aby zarządzać swoimi ogłoszeniami.", + loginReputation: "Zaloguj się, aby zobaczyć swoją reputację i opinie.", + }, + marketplace: { + heroTitle: "Shopy i Marketplace", + heroBefore: "Nasz Marketplace działa dzięki", + heroAfter: " — zdecentralizowanemu Marketplace na Nostr. Skate Shopy mogą wystawiać swoje produkty, a Ty możesz kupować i sprzedawać używany Gear bezpośrednio za Bitcoin.", + whatIsTitle: "Czym jest Plebeian Market?", + whatIsBody: "Plebeian Market to zdecentralizowany Marketplace zbudowany na Nostr. Kupuj i sprzedawaj Gear skateboardingowy bezpośrednio innym skaterom za Bitcoin. Bez pośredników, bez opłat, pełna wolność.", + noFeesTitle: "Bez opłat", + noFeesBody: "Żadna platforma nie bierze 30%. Sprzedaż bezpośrednio między osobami.", + bitcoinTitle: "Płatności Bitcoin", + bitcoinBody: "Płać Bitcoinem. Szybko, bezpiecznie, globalnie.", + decentralizedTitle: "Zdecentralizowany", + decentralizedBody: "Zbudowany na Nostr. Żadna firma nim nie zarządza.", + visit: "Odwiedź Plebeian Market", + buySellTitle: "Co możesz kupić i sprzedać", + catCompletes: "Kompletne deskorolki", + preBuilt: "Gotowe komplety", + customSetups: "Niestandardowe zestawy", + beginnerBoards: "Deski dla początkujących", + catParts: "Części do deski", + decks: "Decks", + trucks: "Trucks", + wheels: "Wheels", + bearings: "Bearings", + gripTape: "Griptape", + hardware: "Hardware", + catApparel: "Odzież i ochrona", + skateShoes: "Buty skate", + clothing: "Odzież", + helmets: "Kaski", + pads: "Ochraniacze", + backpacks: "Plecaki", + catAccessories: "Akcesoria", + tools: "Narzędzia", + wax: "Wosk", + rails: "Rail'e", + stickers: "Naklejki", + videos: "Filmy", + magazines: "Magazyny", + howItWorks: "Jak to działa", + step1Title: "Przeglądaj produkty", + step1Body: "Odwiedź Plebeian Market i przeglądaj Gear skateboardingowy z Shopów i od osób z całego świata.", + step2Title: "Skontaktuj się ze sprzedawcami", + step2Body: "Napisz do sprzedawców bezpośrednio przez Nostr. Negocjuj ceny, zadawaj pytania, ustal wysyłkę.", + step3Title: "Płać Bitcoinem", + step3Body: "Sfinalizuj zakup za pomocą Bitcoin Lightning, aby otrzymać natychmiastowe płatności o niskich opłatach.", + step4Title: "Zostaw opinię", + step4Body: "Oceń swoje doświadczenie i buduj reputację sprzedawcy na Nostr. Twoje opinie pomagają społeczności.", + needBitcoinTitle: "Potrzebujesz Bitcoin?", + needBitcoinBefore: "Do zakupów potrzebujesz portfela Lightning z kilkoma sats. Sprawdź", + onboardingGuide: "przewodnik dla początkujących", + needBitcoinAfter: "z rekomendacjami portfeli.", + ownShopTitle: "Masz skate Shop?", + ownShopBody: "Dodaj swój Shop na SkateSpots i sprzedawaj produkty na Plebeian Market. Docieraj do klientów na całym świecie bez opłat platformy.", + addShop: "Dodaj swój Shop", + startSelling: "Zacznij sprzedawać", + }, + listingDetail: { + notFound: "Nie znaleziono ogłoszenia", + notFoundBody: "Mogło zostać usunięte lub link jest nieprawidłowy.", + backToGearSwap: "Powrót do Gear Swap", + gearSwap: "Gear Swap", + viewPhoto: "Wyświetl zdjęcie {{n}}", + photoAlt: "{{title}} — zdjęcie {{n}}", + wantToBuy: "CHCĘ KUPIĆ", + sold: "SPRZEDANE", + description: "Opis", + usuallyHere: "Zwykle tutaj {{availability}}", + listed: "Wystawiono {{date}}", + listingCountOne: "{{count}} ogłoszenie · {{age}} dni temu", + listingCountMany: "{{count}} ogłoszeń · {{age}} dni temu", + relistActive: "Wznów jako aktywne", + markSold: "Oznacz jako sprzedane", + deleteListing: "Usuń ogłoszenie", + makeOffer: "Złóż ofertę", + shareListing: "Udostępnij ogłoszenie", + unknown: "Nieznane", + linkCopied: "Link skopiowany", + linkCopiedBody: "Udostępnij go skaterowi.", + copyFailed: "Nie udało się skopiować linku", + relisted: "Wznowione", + relistedBody: "Twoje ogłoszenie jest znowu aktywne.", + couldNotUpdate: "Nie udało się zaktualizować", + somethingWrong: "Coś poszło nie tak", + }, + create: { + imageUploaded: "Zdjęcie przesłane", + uploadFailed: "Przesyłanie nie powiodło się", + failed: "Nie udało się", + cooldownActive: "Aktywny okres oczekiwania", + cooldownWait: "Poczekaj {{time}}, zanim utworzysz kolejne ogłoszenie", + limitReached: "Osiągnięto limit ogłoszeń", + limitReachedBody: "Osiągnąłeś miesięczny limit {{limit}} ogłoszeń", + feeRequired: "Wymagana opłata", + feeRequiredBody: "Zapłać opłatę antyspamową, aby kontynuować", + titleRequired: "Wymagany tytuł", + categoryRequired: "Wymagana kategoria", + photoRequired: "Wymagane zdjęcie", + photoRequiredBody: "Przy sprzedaży Gear wymagane jest co najmniej jedno zdjęcie", + nip05Required: "Wymagana weryfikacja NIP-05", + nip05RequiredBody: "Potrzebujesz zweryfikowanego adresu Nostr, aby wystawiać Gear", + priceRequired: "Cena wymagana dla ogłoszeń z ceną stałą", + sizeRequired: "Wymagany rozmiar", + sizeRequiredBody: "Wybierz rozmiar dla {{category}}", + conditionRequired: "Wymagany stan", + conditionRequiredBody: "Wybierz stan swojego {{category}}", + wtbPosted: "Ogłoszenie „Chcę kupić” opublikowane!", + wtbPostedBody: "Sprzedawcy będą mogli znaleźć Twoją prośbę.", + listingCreated: "Ogłoszenie utworzone!", + listingCreatedBody: "Twój Gear jest już wystawiony.", + publishFailed: "Nie udało się opublikować", + loginRequired: "Wymagane logowanie", + loginRequiredBody: "Musisz się zalogować, aby wystawić Gear.", + backToStash: "Powrót do Stash", + backToSpot: "Powrót do {{title}}", + backToMarketplace: "Powrót do Marketplace", + backToMap: "Powrót do mapy", + wantToBuy: "Chcę kupić", + listYourGear: "Wystaw swój Gear", + wtbSubtitle: "Powiedz społeczności, jakiego Gearu szukasz", + sellSubtitle: "Sprzedaj Gear skateboardingowy społeczności", + fromStashTitle: "Ogłoszenie z Twojego Stash", + fromStashBody: "Wstępnie wypełnione danymi przedmiotu z Twojego Stash. Sprawdź i wybierz miejsce spotkania!", + nip05Banner: "Aby zapobiegać spamowi i chronić kupujących, potrzebujesz zweryfikowanego adresu Nostr (NIP-05), aby wystawiać Gear.", + verifiedLabel: "Zweryfikowany:", + checkingTrust: "Sprawdzanie Twojego poziomu zaufania...", + trustLevel: "Poziom zaufania:", + trusted: "Zaufany", + active: "Aktywny", + newcomer: "Nowicjusz", + newUser: "Nowy użytkownik", + remaining: "Pozostało {{remaining}} z {{limit}} ogłoszeń w tym miesiącu", + cooldownBody: "Nowi użytkownicy mają 24-godzinny okres oczekiwania między ogłoszeniami.", + timeRemaining: "Pozostały czas: {{time}}", + monthlyLimitTitle: "Osiągnięto miesięczny limit", + monthlyLimitBody: "Osiągnąłeś limit {{limit}} ogłoszeń w tym miesiącu. Buduj reputację, tworząc Spoty lub finalizując sprzedaże, aby zwiększyć limit.", + powAccepted: "Proof of work zaakceptowany!", + feePaid: "Opłata zapłacona!", + canCreateNow: "Możesz teraz utworzyć swoje ogłoszenie.", + whatDoTitle: "Co chcesz zrobić?", + sellGear: "SPRZEDAJ GEAR", + categoryTitle: "Kategoria *", + categoryHint: "Jaki rodzaj Gearu?", + detailsTitle: "Szczegóły Gearu", + detailsWtbHint: "Opisz, czego szukasz", + detailsSellHint: "Opowiedz kupującym o swoim przedmiocie", + titleLabel: "Tytuł *", + titlePlaceholderWtb: "Szukam Deck 8.0\"", + titlePlaceholderSell: "Prawie nowy Palace Deck 8.25\"", + summaryLabel: "Krótkie podsumowanie", + summaryPlaceholderWtb: "Dowolna marka, preferuję minimalistyczne grafiki", + summaryPlaceholderSell: "Świetny stan, ledwo używany", + descriptionLabel: "Opis", + descriptionPlaceholderWtb: "Opisz dokładnie, czego szukasz — preferencje marek, wymagania dotyczące stanu itp.", + descriptionPlaceholderSell: "Dostałem ten Deck na święta, ale wolę mniejszy rozmiar. Chętnie pozwolę Ci go wypróbować przed zakupem!", + fulfilmentLabel: "Jak ma być zrealizowane?", + pickup: "Odbiór", + pickupHint: "Spotkanie lokalnie", + ships: "Wysyłka", + shipsHint: "Wyślij pocztą", + both: "Oba", + bothHint: "Dowolnie", + addressNote: "Nigdy nie zbieramy Twojego adresu — przy wysyłce udostępnij go prywatnie na czacie transakcji.", + postageLabel: "Kto płaci za przesyłkę?", + requireEscrow: "Wymagaj escrow", + requireEscrowHint: "Poproś kupującego o rozliczenie przez Cashu escrow.", + postageBuyer: "Płaci kupujący", + postageSeller: "Płacę ja", + postageSplit: "Podział", + sizeLabel: "Rozmiar", + selectSize: "Wybierz rozmiar", + truckHeight: "Wysokość Trucks", + selectHeight: "Wybierz wysokość", + wheelHardness: "Twardość Wheels", + selectHardness: "Wybierz twardość", + pricingTitle: "Cena", + pricingWtbHint: "Jak chcesz zapłacić?", + pricingSellHint: "Jak chcesz sprzedać?", + priceLabel: "Cena *", + currencyLabel: "Waluta", + photosTitle: "Zdjęcia", + photosSellHint: "Wymagane co najmniej jedno zdjęcie", + photosWtbHint: "Opcjonalnie — dodaj zdjęcia referencyjne", + productPhoto: "Produkt {{n}}", + upload: "Prześlij", + photosNote: "Dodaj do 5 zdjęć. Pierwsze zdjęcie będzie zdjęciem głównym.", + pickupLocationTitle: "Miejsce odbioru", + pickupLocationHint: "Powiąż ze Spotem, aby ułatwić spotkania", + searchSpots: "Szukaj Spotów...", + noSpotsFound: "Nie znaleziono Spotów. Spróbuj innego wyszukiwania.", + availabilityLabel: "Kiedy zwykle masz dostępność?", + availabilityPlaceholder: "Weekendy 10:00–14:00, wt./czw. wieczorem", + availabilityHint: "Pomaga kupującym koordynować z Tobą spotkania", + durationTitle: "Czas trwania ogłoszenia", + durationHint: "Jak długo to ogłoszenie ma pozostać aktywne?", + publishing: "Publikowanie...", + checkingEligibility: "Sprawdzanie uprawnień...", + cooldownButton: "OCZEKIWANIE: {{time}}", + limitReachedButton: "OSIĄGNIĘTO LIMIT", + payFeeButton: "ZAPŁAĆ OPŁATĘ, ABY KONTYNUOWAĆ", + postWtbButton: "OPUBLIKUJ „CHCĘ KUPIĆ”", + listForSaleButton: "WYSTAW GEAR NA SPRZEDAŻ", + }, + trades: { + title: "Moje transakcje", + loginBody: "Zaloguj się, aby zarządzać transakcjami i reputacją w Marketplace.", + subtitle: "Potwierdzenia, prośby i budowana przez nie reputacja. Płatność ustalasz z drugim skaterem — aplikacja tylko rejestruje transakcję.", + actionNeeded: "Wymagane działanie", + askedToConfirmSale: "poprosił Cię o potwierdzenie sprzedaży", + recordedSale: "zarejestrował sprzedaż — potwierdź swoją stronę", + confirmSale: "Potwierdź sprzedaż", + confirm: "Potwierdź", + nothingWaiting: "Nic nie czeka na Ciebie w tej chwili. 🛹", + yourRecords: "Twoje zapisy transakcji", + noTrades: "Brak transakcji. Zamknij umowę i potwierdź ją, aby zacząć budować reputację.", + browseGearSwap: "Przeglądaj Gear Swap", + roleSold: "Sprzedane", + roleBought: "Kupione", + roleTrade: "Wymiana", + with: "z", + viewListing: "Zobacz ogłoszenie", + revoke: "Wycofaj", + revokeTitle: "Wycofać ten zapis transakcji?", + revokeBody: "Przestanie liczyć się do Twojej reputacji. Druga strona zachowa swoje poświadczenie. Użyj tego w przypadku sporu lub pomyłki.", + revokeNote: "Wycofane przez autora.", + revoked: "Zapis transakcji wycofany", + revokedBody: "Nie liczy się już do reputacji.", + revokeFailed: "Nie udało się wycofać transakcji", + saleConfirmed: "Sprzedaż potwierdzona", + saleConfirmedBody: "Druga strona może teraz potwierdzić swoją stronę.", + saleConfirmFailed: "Nie udało się potwierdzić sprzedaży", + tradeConfirmed: "Transakcja potwierdzona", + tradeConfirmedBody: "Reputacja zaktualizowana dla Was obojga.", + tradeConfirmFailed: "Nie udało się potwierdzić transakcji", + somethingWrong: "Coś poszło nie tak.", + }, + card: { + listingDeleted: "Ogłoszenie usunięte", + listingRemoved: "Ogłoszenie zdjęte", + listingDeletedBody: "Twoje ogłoszenie zostało usunięte. Relay'e, które honorują usunięcia, przestaną je udostępniać.", + listingRemovedBody: "To ogłoszenie zostało zdjęte i będzie ukryte w całym SkateSpots.", + removeFailed: "Usuwanie nie powiodło się", + somethingWrong: "Coś poszło nie tak", + markedSold: "Oznaczono jako sprzedane", + markedSoldBody: "Twoje ogłoszenie jest teraz wyświetlane jako sprzedane.", + couldNotUpdate: "Nie udało się zaktualizować", + relisted: "Wznowione", + relistedBody: "Twoje ogłoszenie jest znowu aktywne.", + listingOptions: "Opcje ogłoszenia", + report: "Zgłoś", + removeAdmin: "Usuń (administrator)", + postage: "przesyłka", + newSeller: "Nowy sprzedawca", + saleOne: "{{count}} sprzedaż", + saleMany: "{{count}} sprzedaży", + iHaveThis: "Mam to!", + deleteTitle: "Usunąć \"{{title}}\"?", + adminRemoveTitle: "Usunąć to ogłoszenie? (administrator)", + deleteBody: "To prosi Relay'e o usunięcie Twojego ogłoszenia \"{{title}}\". Nie można tego cofnąć z tego miejsca — trzeba utworzyć nowe.", + adminRemoveBody: "Jako administrator SkateSpots zdejmujesz \"{{title}}\". Będzie ukryte w całej aplikacji dla wszystkich, a do Relayów zostanie wysłane żądanie usunięcia.", + deleting: "Usuwanie…", + removing: "Usuwanie…", + deleteListing: "Usuń ogłoszenie", + removeListing: "Zdejmij ogłoszenie", + reportCount: "{{count}} zgłoszenie", + reports: "{{count}} zgłoszeń", + viewTitle: "Zobacz {{title}}", + reportListing: "Zgłoś ogłoszenie", + manageListing: "Zarządzaj ogłoszeniem", + trusted: "Zaufany", + daysOld: "{{n}} dni", + monthsOld: "{{n}} mies.", + yearsOld: "{{n}} lat", + listingsCount: "{{count}} ogłoszeń", + postageBuyer: "przesyłka: kupujący", + postageSeller: "przesyłka: sprzedawca", + postageSplit: "przesyłka: podział", + powTitle: "NIP-13 proof of work — darmowy antyspam", + verifiedTradeOne: "{{count}} zweryfikowana transakcja", + verifiedTrades: "{{count}} zweryfikowanych transakcji", + reportSubmitted: "Zgłoszenie wysłane", + reportSubmittedBody: "Dziękujemy za pomoc w utrzymaniu bezpieczeństwa Marketplace.", + reportFailed: "Nie udało się wysłać zgłoszenia", + selectReason: "Wybierz powód", + reportDialogBody: "Pomóż utrzymać bezpieczeństwo Marketplace, zgłaszając nieodpowiednie lub wprowadzające w błąd ogłoszenia.", + reasonLabel: "Powód zgłoszenia *", + detailsLabel: "Dodatkowe szczegóły (opcjonalnie)", + detailsPlaceholder: "Podaj dodatkowy kontekst, który może pomóc...", + reportNote: "Zgłoszenia są publikowane na Nostr i pomagają społeczności identyfikować problematyczne ogłoszenia. Ogłoszenia z wieloma zgłoszeniami mogą zostać automatycznie ukryte.", + submitting: "Wysyłanie...", + submitReport: "Wyślij zgłoszenie", + }, + tradeActions: { + tradeConfirmed: "Transakcja potwierdzona", + tradeConfirmedWithProof: "Dołączono weryfikowalny paragon — liczy się do zweryfikowanych transakcji.", + tradeConfirmedBody: "Reputacja zaktualizowana dla Was obojga.", + tradeConfirmFailed: "Nie udało się potwierdzić transakcji", + somethingWrong: "Coś poszło nie tak.", + requestNote: "Proszę o potwierdzenie naszej transakcji dla \"{{title}}\".", + requestSent: "Poproszono o potwierdzenie", + requestSentBody: "Sprzedawca może teraz potwierdzić sprzedaż i zbudować reputację obu stron.", + requestFailed: "Nie udało się wysłać prośby", + escrowRefunded: "Escrow zwrócone", + escrowRefundedBody: "Środki wróciły do Twojego portfela Cashu.", + escrowRefundFailed: "Nie udało się zwrócić escrow", + confirmThisTrade: "Potwierdź tę transakcję", + escrowAndRequest: "Escrow i prośba", + shipsEscrowHint: "Wysyłkowa transakcja — użyj escrow, aby żadna strona nie wysłała w próżnię. Adres udostępnij prywatnie na czacie transakcji, nigdy tutaj.", + shipsHint: "Wysyłkowa transakcja — preferuj escrow, jeśli sprzedawca je oferuje, a adres udostępniaj tylko na czacie.", + askSeller: "Poproś sprzedawcę o potwierdzenie", + waitingSeller: "Poproszono o potwierdzenie — czekamy na sprzedawcę.", + refundEscrow: "Zwróć escrow", + buyWithSats: "Kup za sats", + depositTitle: "Zadatek dobrej woli (opcjonalnie)", + payDeposit: "Zapłać zadatek", + depositBefore: "Wymiana nie ma faktury, więc w ten sposób zyskuje", + verifiableCost: "weryfikowalny koszt", + depositAfter: ". Zwrot przy dostawie (albo użyj Cashu escrow dla automatycznego zwrotu). ⚠️ Dowodzi zaangażowania, nie dostawy.", + depositPaid: "Zadatek zapłacony", + depositPaidBody: "Zapisano — zostanie dołączony przy potwierdzeniu transakcji.", + paid: "Zapłacono ⚡", + paidWithProof: "Zapisano weryfikowalny paragon — potwierdź transakcję, aby został zaliczony.", + paidBody: "Poproś sprzedawcę o potwierdzenie transakcji, aby została zaliczona Wam obojgu.", + }, + offers: { + accepted: "Zaakceptowana", + declined: "Odrzucona", + withdrawn: "Wycofana", + open: "Otwarta", + noAmount: "brak kwoty", + titleOwner: "Oferty ({{count}})", + titleBuyer: "Twoje negocjacje", + you: "Ty", + them: "Oni", + paidAskConfirm: "Zapłacono — poproś sprzedawcę o potwierdzenie transakcji.", + payWithSats: "Zapłać sats", + accept: "Akceptuj", + decline: "Odrzuć", + counter: "Kontroferta", + counterPlaceholder: "Twoja kontroferta (sats)", + send: "Wyślij", + counterItemPlaceholder: "…albo kontroferta z przedmiotem na wymianę (opcjonalnie)", + waitingOn: "Czekamy na", + waitingOnSuffix: "— Twoja kolej wróci, jeśli złożą kontrofertę.", + withdraw: "Wycofaj", + dmAccepted: "✅ Twoja oferta została zaakceptowana! Napisz, aby ustalić przekazanie.", + dmDeclined: "❌ Twoja oferta została odrzucona.", + offerAccepted: "Oferta zaakceptowana", + offerDeclined: "Oferta odrzucona", + respondFailed: "Nie udało się odpowiedzieć", + somethingWrong: "Coś poszło nie tak.", + offerWithdrawn: "Oferta wycofana", + withdrawFailed: "Nie udało się wycofać", + enterAmountOrItem: "Wpisz kwotę lub przedmiot na wymianę", + counterDm: "Kontroferta", + counterSent: "Kontroferta wysłana", + counterSentBody: "Teraz ich kolej.", + counterFailed: "Nie udało się wysłać kontroferty", + }, + offer: { + validAmount: "Wpisz prawidłową kwotę", + describeOffer: "Opisz swoją ofertę", + describeOfferBody: "Dodaj kwotę, przedmiot na wymianę lub wiadomość.", + dmAmount: " za {{amount}} sats", + dmItem: " (w ofercie: {{item}})", + dmBody: "🛹 Nowa oferta na Twoje ogłoszenie \"{{title}}\"{{amount}}{{item}}.{{note}}", + sent: "Oferta wysłana", + sentBody: "{{sellerName}} może ją zaakceptować lub odrzucić.", + sendFailed: "Nie udało się wysłać oferty", + somethingWrong: "Coś poszło nie tak.", + title: "Złóż ofertę", + description: "Zaoferuj sats albo wymień coś — {{sellerName}} może zaakceptować, odrzucić lub złożyć kontrofertę. Przekazanie ustalacie między sobą.", + amountLabel: "Kwota (sats, opcjonalnie)", + amountPlaceholder: "np. 45000", + itemLabel: "Albo wymiana przedmiotu (opcjonalnie)", + itemPlaceholder: "np. mój Deck 8.25 + zapasowe Wheels", + itemHint: "Wymiana? Wpisz tutaj, co oferujesz — możesz połączyć to z sats.", + messageLabel: "Wiadomość (opcjonalnie)", + messagePlaceholder: "Wszystko, co sprzedawca powinien wiedzieć…", + send: "Wyślij ofertę", + }, + markSold: { + enterBuyer: "Wpisz npub kupującego", + dealClosed: "Umowa zamknięta 🎉", + dealClosedBody: "Ogłoszenie oznaczone jako sprzedane, a transakcja opublikowana dla reputacji.", + closeFailed: "Nie udało się zamknąć umowy", + somethingWrong: "Coś poszło nie tak.", + title: "Zamknij umowę", + description: "Oznacza to ogłoszenie jako sprzedane i rejestruje podpisane poświadczenie transakcji dla Ciebie i kupującego.", + buyerLabel: "npub kupującego", + methodLabel: "Jak zapłacono? (samodzielnie zgłoszone)", + amountLabel: "Kwota w sats (opcjonalnie)", + submit: "Oznacz jako sprzedane", + }, + handoff: { + title: "Ustal przekazanie", + suggest: "Zaproponuj czas i miejsce", + suggestDm: "Cześć! Chciałbym kupić \"{{title}}\". Zaproponuj czas i miejsce spotkania — chętnie spotkam się w publicznym skate Spocie.", + orMeetAt: "Albo spotkaj się w pobliskim publicznym Spocie:", + spotDm: "Cześć! Chciałbym kupić \"{{title}}\". Może spotkamy się w {{spot}}? {{url}}", + shareDelivery: "Udostępnij dane dostawy", + deliveryDm: "Cześć! Chciałbym kupić \"{{title}}\". Oto moje dane dostawy:\n\nImię i nazwisko:\nAdres:\n\n(Udostępnij tylko to, czego potrzebuje kurier.)", + useLocker: "Użyj skrytki / punktu odbioru", + lockerDm: "Cześć! Chciałbym kupić \"{{title}}\". Czy możemy użyć skrytki / punktu odbioru zamiast adresu domowego?", + noteBefore: "Te dane pozostają na prywatnym czacie — SkateSpots nigdy ich nie widzi. Przy wysyłce preferuj", + escrow: "escrow", + noteMiddle: ", i", + neverPay: "nigdy nie płać poza systemem aplikacji", + noteAfter: ". Spotykaj się w miejscach publicznych.", + }, + shipping: { + noCounterparty: "Brak drugiej strony", + noCounterpartyBody: "Sprzedawca powinien najpierw zarejestrować sprzedaż (podając kupującego).", + markedShipped: "Oznaczono jako wysłane", + markedReceived: "Oznaczono jako otrzymane", + issueReported: "Zgłoszono problem", + receivedBody: "Dziękujemy — to nie zwalnia escrow; rozlicz się bezpośrednio ze sprzedawcą.", + notifiedBody: "Druga strona została powiadomiona.", + updateFailed: "Nie udało się zaktualizować", + somethingWrong: "Coś poszło nie tak.", + title: "Wysyłka", + shipped: "wysłane", + received: "otrzymane", + issue: "problem", + trackingPlaceholder: "Numer śledzenia (opcjonalnie)", + iShipped: "Wysłałem to", + iReceived: "Otrzymałem to", + reportIssue: "Zgłoś problem", + noteBefore: "Samodzielnie zgłoszone — notatka logistyczna,", + notProof: "nie dowód", + noteAfter: ". Oznaczenie \"otrzymane\" nie zwalnia escrow. ⚠️ Nie fotografuj paczki z widocznym adresem i udostępniaj numer śledzenia tylko, jeśli nie masz nic przeciwko jego publiczności.", + }, + pay: { + sent: "Płatność wysłana ⚡", + sentWithProof: "Zapisano weryfikowalny paragon płatności — zostanie zaliczony jako zweryfikowana płatność.", + sentBody: "Daj znać sprzedawcy — może potwierdzić transakcję, aby została zaliczona Wam obojgu.", + failed: "Płatność nie powiodła się", + title: "Zapłać sats", + descSendPrefix: "Wyślij", + descSendSuffix: "do {{sellerName}}, aby rozliczyć tę transakcję.", + descSettle: "Rozlicz tę transakcję bezpośrednio z {{sellerName}}.", + paid: "Zapłacono!", + paidBody: "Poproś sprzedawcę o potwierdzenie transakcji — dwa potwierdzenia budują reputację obu stron.", + noMethod: "{{sellerName}} nie ustawił metody płatności (brak faktury Lightning lub adresu). Napisz do niego, aby ustalić płatność.", + ownListing: "To Twoje własne ogłoszenie.", + paying: "Płacenie…", + pay: "Zapłać", + payAmount: "Zapłać {{amount}} sats", + footnote: "Płaci z Twojego połączonego portfela (NWC, WebLN lub Cashu) bezpośrednio do {{sellerName}} — SkateSpots nigdy nie przechowuje środków.", + }, + spamFee: { + invoiceComment: "Opłata za ogłoszenie SkateSpots", + generateFailed: "Nie udało się wygenerować faktury", + paymentSuccess: "Płatność zakończona sukcesem!", + satsSent: "Wysłano {{amount}} sats do {{name}}", + autoPayFailed: "Automatyczna płatność nie powiodła się", + autoPayFailedBody: "Zapłać ręcznie, używając kodu QR lub faktury", + invoiceCopied: "Faktura skopiowana!", + copyFailed: "Nie udało się skopiować", + received: "Płatność otrzymana!", + receivedBody: "Twoja opłata {{amount}} sats została zapłacona. Możesz teraz utworzyć swoje ogłoszenie.", + title: "Jednorazowa opłata za ogłoszenie", + subtitle: "Jako nowy członek musisz zapłacić niewielką opłatę za pierwsze ogłoszenie.", + whyTitle: "Dlaczego muszę zapłacić?", + spamLabel: "Zapobieganie spamowi:", + spamBody: "Ta opłata powstrzymuje boty i oszustów przed zalewaniem Marketplace fałszywymi ogłoszeniami.", + trustLabel: "Budowanie zaufania:", + trustBody: "Nowe konta muszą udowodnić zaangażowanie przed wystawieniem. Po kilku udanych ogłoszeniach opłata jest znoszona.", + supportsLabel: "Wspiera społeczność:", + supportsPrefix: "Opłata trafia do", + supportsSpotOwner: " — osoby, która utworzyła ten Spot!", + supportsPlatform: " — pomagając utrzymać SkateSpots.", + oneTimeFee: "~${{usd}} USD • Opłata jednorazowa", + payToContinue: "Zapłać {{amount}} sats, aby kontynuować", + proveWork: "Wykonaj pracę zamiast tego — za darmo", + proveWorkBody: "Poświęć kilka sekund CPU zamiast {{amount}} sats. Bez pieniędzy, bez portfela — podatek antyspamowy, nie płatność.", + generating: "Generowanie faktury...", + processing: "Przetwarzanie płatności...", + qrAlt: "Kod QR płatności", + copyInvoice: "Skopiuj fakturę", + openWallet: "Otwórz portfel", + payWithWallet: "Zapłać połączonym portfelem", + scanHint: "Zeskanuj kod QR portfelem Lightning lub użyj powyższych przycisków", + skipTitle: "Jak w przyszłości pominąć tę opłatę:", + skip1: "Dodaj skate Spot na mapę", + skip2: "Zakończ 2–3 udane ogłoszenia", + skip3: "Buduj swoją reputację w społeczności", + skipNote: "Zaufani członkowie mają nielimitowane darmowe ogłoszenia!", + }, + reputation: { + highlyTrusted: "Wysoce zaufany handlarz", + building: "Budowanie reputacji", + newTrader: "Nowy handlarz", + title: "Transakcje", + verified: "Zweryfikowane", + sales: "Sprzedaże", + purchases: "Zakupy", + tradeConfirmedOne: "wzajemnie potwierdzona transakcja", + tradeConfirmedMany: "wzajemnie potwierdzone transakcje", + with: "z", + personOne: "osoba", + personMany: "osoby", + awaiting: "Oczekuje na wzajemne potwierdzenie", + withPaymentProof: "z dołączonym dowodem płatności", + selfReported: "(samodzielnie zgłoszone — niezweryfikowane)", + paymentVerified: "płatność zweryfikowana", + zapReceipt: "(paragon Zap)", + singlePartnerWarning: "Każde potwierdzenie jest z tym samym kontem. Wzajemne potwierdzenie jest samodzielnie zgłaszane, więc podchodź do tego zapisu ostrożnie.", + lowDiversityWarning: "Większość potwierdzeń pochodzi z bardzo niewielu kont. Mała grupa poręczająca sobie nawzajem może wyglądać na aktywną — podchodź do tego zapisu ostrożnie.", + ringWarning: "Te konta handlują głównie ze sobą — zamknięty klaster. Wzajemne potwierdzenia w takim kręgu to słaby dowód.", + weighted: "Ważone zaufaniem i aktywnością", + footnote: "Samodzielnie zgłoszone i wzajemnie podpisane — sygnał, nie dowód płatności.", + }, + reputationPanel: { + reviewOfYou: "Opinia o Tobie", + yourRecord: "Twój zapis", + listing: "Ogłoszenie", + averageOne: "średnia z {{count}} oceny", + averageMany: "średnia z {{count}} ocen", + reviewsTitle: "Opinie i zapisy transakcji", + fromOthers: "{{count}} od innych", + emptyBefore: "Brak zapisów transakcji. Zakończ umowę i potwierdź ją w", + emptyAfter: "— każde potwierdzenie staje się opinią na obu profilach.", + }, + recommendations: { + published: "Rekomendacja opublikowana", + publishedBody: "Dziękujemy za poręczenie.", + failed: "Nie udało się polecić", + somethingWrong: "Coś poszło nie tak.", + title: "Zaufany handlarz", + recommendedBy: "Polecany przez", + skaterOne: "skater", + skaterMany: "skaterów", + none: "Brak rekomendacji.", + youRecommend: "Polecasz tego handlarza ✓", + recommend: "Poleć jako zaufanego handlarza", + }, + notification: { + newOffer: "Nowa oferta", + counterOffer: "Kontroferta", + offerAccepted: "Oferta zaakceptowana", + offerDeclined: "Oferta odrzucona", + offerWithdrawn: "Oferta wycofana", + confirmTrade: "Potwierdź transakcję", + tradeConfirmed: "Transakcja potwierdzona", + reviewOffer: "Przejrzyj ofertę", + openListing: "Otwórz ogłoszenie", + }, + confirmRow: { + rateTrade: "Oceń transakcję:", + }, + deckRating: { + title: "{{value}}/10 Decks", + aria: "{{n}} z 10", + }, + clink: { + tip: "Wspomóż w Bitcoin", + copiedBody: "Kod CLINK skopiowany do schowka.", + copyFailed: "Kopiowanie nie powiodło się", + copyFailedBody: "Nie udało się uzyskać dostępu do schowka.", + whatIs: "Czym jest CLINK?", + tooltipTitle: "Płać bezpośrednio Bitcoinem przez Nostr", + tooltipBody: "CLINK to samodzielnie przechowywany kod płatności — bez konta w aplikacji, bez pośrednika. Zeskanuj go kompatybilnym portfelem Lightning, a datek trafi prosto do odbiorcy.", + descRecipient: "Wyślij samodzielnie przechowywaną płatność Bitcoin (Lightning) do {{recipientName}} — bez pośrednika.", + descGeneric: "Wyślij samodzielnie przechowywaną płatność Bitcoin (Lightning) przez Nostr — bez pośrednika.", + qrAlt: "Kod QR oferty CLINK", + copyCode: "Skopiuj kod CLINK", + openWallet: "Otwórz w portfelu CLINK", + copyToWallet: "Skopiuj kod do portfela", + priceFixed: "Stała — {{amount}} sats", + priceFixedShort: "Cena stała", + priceVariable: "Cena zmienna", + priceVariableCurrency: "Wycena w {{currency}}", + priceSpontaneous: "Ty wybierasz kwotę", + footnote: "Zeskanuj portfelem zgodnym z CLINK (np. ShockWallet). Jeśli nic się nie otworzy, skopiuj kod powyżej — możesz nie mieć zainstalowanego portfela zgodnego z CLINK. Bez powiernika, bez serwera: faktura jest pobierana bezpośrednio przez Nostr.", + }, + paymentReadiness: { + ready: "Możesz otrzymywać płatności", + notReady: "Skonfiguruj płatności, aby otrzymywać pieniądze", + readyBefore: "Twój adres Lightning", + readyAfter: " jest na Twoim profilu — ludzie mogą Cię Zapować i płacić bezpośrednio.", + silentSet: " Ustawiono też adres Bitcoin Silent Payment.", + notReadyBefore: "Dodaj adres Lightning (i opcjonalnie adres Bitcoin Silent Payment) do swojego", + nostrProfile: "profilu Nostr", + notReadyAfter: ", aby skaterzy mogli Ci płacić. Ustawia się to raz i działa na każdym profilu, który tu masz.", + }, + seller: { + trade: "Wymiana", + active: "Aktywne", + markSold: "Oznacz jako sprzedane", + yourListings: "Twoje ogłoszenia", + activeCount: "{{count}} aktywne", + listItem: "Wystaw przedmiot", + loading: "Ładowanie Twoich ogłoszeń…", + empty: "Nie masz jeszcze żadnych ogłoszeń.", + listFirst: "Wystaw pierwszy przedmiot", + }, + noffer: { + label: "Kod oferty CLINK", + optional: "(opcjonalnie, zaawansowane)", + offerId: "Oferta: {{id}}", + relay: "Relay: {{relay}}", + invalidBefore: "To nie wygląda na prawidłowy", + invalidAfter: "kod.", + valid: "Prawidłowy kod CLINK — przycisk \"Zapłać przez CLINK\" pojawi się na Twoim profilu.", + help: "Wklej samodzielnie przechowywany kod płatności CLINK (np. z ShockWallet / Lightning.Pub), aby przyjmować płatności Lightning natywne dla Nostr — bez serwera i powiernika.", + learnSpecs: "Poznaj specyfikację", + }, + escrowPanel: { + escrowed: "Zabezpieczono {{amount}} sats", + mint: "Mint", + refundSinceBefore: "Kupujący może zwrócić od", + redeemBefore: "Sprzedawca może zrealizować teraz · kupujący zwrot po", + noExpiry: "Dla tego tokena nie ustawiono terminu ważności.", + }, + escrowRequest: { + enterAmount: "Wpisz kwotę escrow", + minLock: "Zablokuj na co najmniej {{days}} dzień", + requestNote: "Zabezpieczono {{amount}} sats na naszą transakcję — proszę o potwierdzenie sprzedaży.", + created: "Escrow utworzone 🎉", + createdBody: "{{amount}} sats zablokowane na {{days}} dni. {{sellerName}} może zrealizować po dostawie.", + createFailed: "Nie udało się utworzyć escrow", + somethingWrong: "Coś poszło nie tak.", + title: "Zabezpiecz tę transakcję escrow", + description: "Środki są zablokowane dla {{sellerName}} i zwracalne przez Ciebie, jeśli umowa nie dojdzie do skutku po terminie. Wymaga połączonego portfela Lightning.", + amountLabel: "Kwota (sats)", + daysLabel: "Zwrot dla kupującego po (dniach)", + daysHint: "Po tylu dniach możesz odzyskać środki, jeśli sprzedawca nie dostarczył.", + nativeOnly: "Cashu escrow jest dostępne tylko w aplikacji SkateSpots (nie w wersji web).", + lockAndRequest: "Zablokuj i poproś", + }, + }, + labOptions: { + coach: { + skill: { + basics: "Podstawy", + ollies: "Ollies", + kickflips: "Kickflips", + grinds: "Grindy i slidery", + manuals: "Manuale", + inverts: "Inverty", + vert: "Vert/Ramp", + bowl: "Bowl", + street: "Street", + freestyle: "Freestyle", + safety: "Bezpieczeństwo", + diy: "Moduły DIY Skate", + }, + skillDesc: { + basics: "Odpychanie, postawa, równowaga, skręcanie", + ollies: "Ollie i warianty (nollie, fakie)", + kickflips: "Kickflip, heelflip i warianty", + grinds: "50-50, 5-0, boardslide i więcej", + manuals: "Manual, nose manual, kombinacje", + inverts: "Invert, handplant, eggplant, andrecht", + vert: "Half-pipe, quarter-pipe, drop-iny", + bowl: "Jazda w bowl, pompowanie, linie", + street: "Przeszkody uliczne i kreatywność", + freestyle: "Tricki na płaskim i flow", + safety: "Jak upadać, sprzęt ochronny, zapobieganie kontuzjom", + diy: "Budowanie ramp, rail'i, krawężników i innych przeszkód skate", + }, + }, + filmer: { + service: { + miniclips: "Mini klipy", + longparts: "Długie video party", + koth: "Styl King of the Road", + documentaries: "Dokumenty", + contests: "Filmowanie zawodów", + raw: "Surowy materiał", + followlines: "Filmowanie follow / linii", + lines: "Filmowanie linii i B-roll", + }, + serviceDesc: { + miniclips: "Klipy 15–60 s do mediów społecznościowych", + longparts: "Pełne video party 3–10 min z muzyką", + koth: "Skate video w stylu przygodowym / wyzwań", + documentaries: "Treści o kulturze skate i oparte na historii", + contests: "Profesjonalne relacje z zawodów i konkursów", + raw: "Nieobrobiony materiał z wielu kątów", + followlines: "Follow-cam typu fisheye do linii", + lines: "Linie z długim obiektywem i filmowy b-roll", + }, + skill: { + vx1000: "VX1000", + hvx: "HVX / HPX", + cinema: "Kamera filmowa", + dslr: "DSLR / bezlusterkowiec", + actioncam: "GoPro / kamera akcji", + phone: "Filmowanie telefonem", + drone: "Dron / ujęcia z powietrza", + gimbal: "Gimbal / stabilizator", + fisheye: "Obiektyw fisheye", + longlens: "Długi obiektyw", + "4k": "4K / wysoka liczba klatek", + editing: "Montaż wideo", + color: "Korekcja kolorów", + }, + skillDesc: { + vx1000: "Klasyczna estetyka skateboardingu VX1000", + hvx: "Look standard-def / HD Panasonic HVX/HPX", + cinema: "Kamera filmowa (FX3, seria C, RED, BMPCC)", + dslr: "Wysokiej jakości aparat DSLR lub bezlusterkowy", + actioncam: "GoPro / kamera akcji POV i mocowania", + phone: "Filmowanie telefonem z nowoczesnymi smartfonami", + drone: "Ujęcia z powietrza i drona", + gimbal: "Stabilizowany ruch gimbala", + fisheye: "Ujęcia szerokokątnym obiektywem fisheye", + longlens: "Długi obiektyw do szczegółowych ujęć", + "4k": "Rozdzielczość 4K i slow-mo z wysoką liczbą klatek", + editing: "Profesjonalny montaż i postprodukcja wideo", + color: "Korekcja i grading kolorów", + }, + }, + editor: { + service: { + parts: "Video party", + montages: "Montaże", + reels: "Reels / krótkie klipy", + documentaries: "Dokumenty", + contest: "Montaże z zawodów", + brand: "Filmy marki / promocyjne", + motion: "Motion graphics", + colorgrade: "Tylko grading kolorów", + }, + serviceDesc: { + parts: "Pełne skate video party ze ścieżką dźwiękową", + montages: "Montaże kompilacyjne z surowego materiału", + reels: "Klipy i reels 15–60 s do mediów społecznościowych", + documentaries: "Filmy o kulturze skate oparte na historii", + contest: "Montaże podsumowujące z zawodów i Eventów", + brand: "Treści promocyjne dla marek i Shopów", + motion: "Tytuły, przejścia, efekty i grafiki", + colorgrade: "Korekcja kolorów i grading oparty na LUT", + }, + skill: { + premiere: "Adobe Premiere", + resolve: "DaVinci Resolve", + finalcut: "Final Cut Pro", + aftereffects: "After Effects", + luts: "Własne LUT", + vhs: "Estetyka VHS / retro", + "4k": "Praca w 4K i RAW", + sound: "Sound design / miks", + }, + skillDesc: { + premiere: "Montaż w Adobe Premiere Pro", + resolve: "Montaż i grading w DaVinci Resolve", + finalcut: "Montaż w Final Cut Pro", + aftereffects: "Motion graphics i kompozycja", + luts: "Tworzenie własnych looków kolorystycznych", + vhs: "Glitch VHS, super-8, retro looki filmowe", + "4k": "Praca z kamerami wysokiej rozdzielczości RAW/LOG", + sound: "Synchronizacja muzyki, SFX, mastering audio", + }, + }, + photo: { + service: { + action: "Ujęcia akcji / tricków", + sequence: "Ujęcia sekwencyjne", + portraits: "Portrety", + editorial: "Editorial / magazyn", + product: "Fotografia produktowa / Shopowa", + events: "Relacje z Eventów", + lifestyle: "Lifestyle / dokument", + prints: "Odbitki i ziny", + }, + serviceDesc: { + action: "Zdjęcia szczytowej akcji tricków i linii", + sequence: "Wieloklatkowe sekwencje tricków", + portraits: "Portrety riderów i zdjęcia drużyny", + editorial: "Rozkładówki editorial gotowe do magazynu", + product: "Fotografia produktowa Decków, Gearu i Shopu", + events: "Relacje z zawodów, jamów i premier", + lifestyle: "Kulisy i dokument kulturowy", + prints: "Fizyczne odbitki, ziny i albumy fotograficzne", + }, + camera: { + dslr: "DSLR", + mirrorless: "Bezlusterkowiec", + medium: "Średni format", + film35: "Film 35 mm", + filmmedium: "Film średnioformatowy", + point: "Mały kompakt", + phone: "Telefon", + }, + lens: { + fisheye: "Fisheye", + wide: "Szerokokątny", + standard: "Standardowy / stały", + telephoto: "Teleobiektyw / długi obiektyw", + macro: "Makro", + zoom: "Zoom", + }, + lighting: { + strobes: "Lampy studyjne", + speedlights: "Lampy błyskowe", + profoto: "Profoto", + elinchrom: "Elinchrom", + godox: "Godox", + triggers: "Zdalne wyzwalacze", + continuous: "Światło ciągłe / LED", + reflectors: "Odbłyśniki / dyfuzory", + naturallight: "Tylko światło naturalne", + }, + support: { + tripod: "Statyw", + monopod: "Monopod", + lightstands: "Stojaki oświetleniowe", + gimbal: "Gimbal", + bag: "Mobilny rig / torba", + laptop: "Tethering na miejscu", + }, + style: { + flashfisheye: "Fisheye z lampą", + natural: "Światło naturalne", + bw: "Czerń i biel", + film: "Estetyka filmowa", + longlens: "Długi obiektyw", + studio: "Studio / oświetlenie", + street: "Ulica / dokument", + }, + }, + builder: { + service: { + diy: "Spoty DIY", + concrete: "Betonowe skateparki", + wood: "Drewniane rampy", + bowls: "Bowle i baseny", + transitions: "Transition i quartery", + rails: "Rail'e i krawężniki", + boxes: "Manny pady i boxy", + minis: "Mini rampy", + pumptrack: "Pumptracki", + foam: "Foam pity / hala", + repairs: "Naprawy i renowacje", + design: "Projekt i doradztwo", + }, + serviceDesc: { + diy: "Społecznościowe Spoty DIY i partyzanckie budowy", + concrete: "Skateparki i elementy z lanego betonu", + wood: "Drewniane rampy, launch boxy i przeszkody", + bowls: "Bowle, baseny i głębokie transition", + transitions: "Quarterpipe'y, najazdy i transition", + rails: "Stalowe rail'e, krawężniki i przeszkody do grindowania", + boxes: "Manny pady, funboxy i przeszkody uliczne", + minis: "Mini rampy i zestawy na podwórku", + pumptrack: "Pumptracki i płynne linie", + foam: "Foam pity, resi i elementy treningowe w hali", + repairs: "Naprawa, łatanie i renowacja istniejących Spotów", + design: "Plany, rysunki i doradztwo budowlane", + }, + skill: { + concretework: "Beton / shotcrete", + welding: "Spawanie / stal", + carpentry: "Ciesielstwo / drewno", + formwork: "Szalunki i zbrojenie", + masonry: "Murarstwo / bloczki", + coping: "Coping (basen / stal)", + surfacing: "Skatelite / nawierzchnia", + earthworks: "Roboty ziemne / wykopy", + }, + scale: { + backyard: "Podwórko / mini", + diycommunity: "Społecznościowe DIY", + publicpark: "Pełny publiczny skatepark", + indoor: "Obiekt w hali", + event: "Trasa Eventu / zawodów", + }, + }, + artist: { + service: { + boardart: "Grafiki na deski", + logos: "Loga i branding", + posters: "Plakaty i ulotki", + merch: "Merch i odzież", + zines: "Ziny i druk", + illustration: "Ilustracja", + stickers: "Naklejki i kalkomanie", + webdesign: "Web / digital", + typography: "Typografia / liternictwo", + animation: "Animacja / motion", + }, + serviceDesc: { + boardart: "Grafiki na Deck i sztuka na Griptape", + logos: "Identyfikacja marki, loga i wordmarki", + posters: "Plakaty Eventów, ulotki i grafiki koncertowe", + merch: "Grafiki na koszulki, bluzy i odzież", + zines: "Ziny, editorial i skład druku", + illustration: "Ilustracje na zamówienie i prace z postaciami", + stickers: "Pakiety naklejek, kalkomanie i slapy", + webdesign: "Strony internetowe, digital i UI", + typography: "Liternictwo ręczne i typografia na zamówienie", + animation: "Motion graphics i animacja", + }, + medium: { + digital: "Digital / wektor", + handdrawn: "Rysunek ręczny", + screenprint: "Sitodruk", + paint: "Farba / akryl", + collage: "Kolaż / techniki mieszane", + photo: "Fotografia / 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-upy", + pieces: "Piece / burnery", + murals: "Murale", + characters: "Postacie", + lettering: "Liternictwo / wildstyle", + stencil: "Szablon", + handstyles: "Handstyle / tagi", + "3dstyle": "Styl 3D", + abstract: "Abstrakcja", + }, + styleDesc: { + throwups: "Szybkie dwukolorowe wypełnienia", + pieces: "Pełnokolorowe piece i burnery", + murals: "Murale i produkcje w dużej skali", + characters: "Prace z postaciami i figurami", + lettering: "Wildstyle i struktura liter", + stencil: "Szablon i street art", + handstyles: "Tagi i handstyle", + "3dstyle": "Liternictwo 3D i anamorficzne", + abstract: "Abstrakcja i freestyle", + }, + medium: { + spray: "Spreje", + rollers: "Wałki / emulsja", + markers: "Markery / tusze", + brush: "Pędzel / farba", + digital: "Digital / Procreate", + }, + context: { + legalwalls: "Legalne ściany", + commissions: "Zamówienia", + liveart: "Malowanie na żywo", + skateparks: "Murale w skateparkach", + interiors: "Wnętrza / Shopy", + workshops: "Warsztaty", + }, + }, + tattoo: { + style: { + traditional: "Traditional / old school", + neotraditional: "Neo-traditional", + fineline: "Fine line", + blackwork: "Blackwork", + realism: "Realizm", + lettering: "Liternictwo / skrypt", + illustrative: "Ilustracyjny", + skateflash: "Skate flash", + ignorant: "Ignorant / styl handpoke", + japanese: "Japoński / irezumi", + }, + styleDesc: { + traditional: "Grube linie, klasyczna americana", + neotraditional: "Traditional z nowoczesnymi detalami", + fineline: "Delikatna praca pojedynczą igłą", + blackwork: "Lity czarny i wzory", + realism: "Fotorealizm i portrety", + lettering: "Skrypt, liternictwo i cytaty", + illustrative: "Ilustracyjny i graficzny", + skateflash: "Wzory flash z kultury skate", + ignorant: "Ignorant / naiwny styl handpoke", + japanese: "Japoński traditional / irezumi", + }, + method: { + machine: "Maszynka", + handpoke: "Hand-poke / stick & poke", + flash: "Dostępny flash", + custom: "Projekty na zamówienie", + coverup: "Cover-upy", + }, + }, + trainer: { + focus: { + strength: "Siła i kondycja", + mobility: "Mobilność i elastyczność", + injuryprevention: "Zapobieganie kontuzjom", + rehab: "Rehabilitacja / fizjoterapia", + recovery: "Regeneracja i praca z ciałem", + balance: "Równowaga i stabilność", + cardio: "Cardio / wytrzymałość", + nutrition: "Poradnictwo żywieniowe", + }, + focusDesc: { + strength: "Budowanie siły i mocy do jazdy", + mobility: "Zakres ruchu i elastyczność", + injuryprevention: "Prehab i zmniejszanie ryzyka kontuzji", + rehab: "Fizjoterapia i rehabilitacja po kontuzji", + recovery: "Masaż, praca z ciałem i regeneracja", + balance: "Propriocepcja, równowaga i stabilność", + cardio: "Kondycja i wytrzymałość", + nutrition: "Odżywianie i porady żywieniowe", + }, + injury: { + ankles: "Kostki", + knees: "Kolana", + wrists: "Nadgarstki", + hips: "Biodra", + back: "Plecy / kręgosłup", + shoulders: "Barki", + heelbruise: "Stłuczenia pięty", + concussion: "Protokół wstrząśnienia mózgu", + }, + credential: { + physio: "Licencjonowany fizjoterapeuta", + osteo: "Osteopata", + certtrainer: "Certyfikowany trener", + sportstherapist: "Terapeuta sportowy", + massage: "Masażysta", + inperson: "Osobiście", + remote: "Zdalnie / online", + }, + }, + musician: { + genre: { + punk: "Punk", + hardcore: "Hardcore", + metal: "Metal", + rock: "Rock", + indie: "Indie / alt", + hiphop: "Hip-hop / rap", + electronic: "Elektronika", + lofi: "Lo-fi / beaty", + reggae: "Reggae / dub", + ska: "Ska", + jazz: "Jazz", + funk: "Funk / soul", + flamenco: "Flamenco", + folk: "Folk / akustyczny", + experimental: "Eksperymentalny", + grunge: "Grunge", + }, + instrument: { + vocals: "Wokal", + guitar: "Gitara", + bass: "Bas", + drums: "Perkusja", + keys: "Klawisze / synth", + dj: "DJ / gramofony", + producer: "Producent / beaty", + sax: "Saksofon / instrumenty dęte", + strings: "Instrumenty smyczkowe", + other: "Inne", + }, + act: { + solo: "Solowy artysta", + band: "Zespół", + dj: "DJ", + producer: "Producent", + collective: "Kolektyw", + }, + }, + judge: { + format: { + game_of_skate: "Game of S.K.A.T.E.", + best_trick: "Best Trick", + jam: "Format jam", + contest: "Zawody / comp", + street_league: "Styl Street League", + bowl: "Bowl / vert", + mini_ramp: "Mini rampa", + park: "Park", + street: "Street", + freestyle: "Freestyle", + world_tour: "World Destruction Tour", + am_series: "Seria am / kwalifikacje", + local_jam: "Lokalny jam / grassroots", + online: "Online / konkurs IG", + }, + specialty: { + head_judge: "Główny sędzia", + scoring: "Punktacja / tabela", + mc: "MC / spiker", + format_design: "Projekt formatu", + rules: "Zasady / sędziowanie", + brackets: "Drabinki / rundy", + livestream: "Sędziowanie na livestreamie", + am_scout: "Skauting am", + }, + level: { + local: "Lokalny", + regional: "Regionalny", + national: "Krajowy", + international: "Międzynarodowy", + pro: "Obieg pro", + }, + }, + organizer: { + event: { + street_jam: "Street jam", + best_trick: "Best Trick", + game_of_skate: "Game of S.K.A.T.E.", + contest: "Zawody / comp", + bowl: "Bowl / vert", + mini_ramp: "Mini rampa", + park: "Sesja w skateparku", + demo: "Pro demo", + clinic: "Klinika / warsztaty", + meetup: "Spotkanie / przejażdżka", + downhill: "Downhill / wyścig", + slalom: "Slalom", + kids: "Dzieci / młodzież", + charity: "Charytatywne / zbiórka", + tour_stop: "Etap Touru", + premiere: "Premiera wideo", + market: "Targi / wystawa sztuki", + }, + service: { + organizing: "Pełna organizacja", + hosting: "Prowadzenie / MC", + permits: "Pozwolenia i urząd", + sponsorship: "Sponsoring / umowy z markami", + promotion: "Promocja i marketing", + livestream: "Livestream / relacja", + sound: "Dźwięk i muzyka", + ramps: "Rampy i przeszkody", + safety: "Bezpieczeństwo i pierwsza pomoc", + vendors: "Jedzenie i wystawcy", + media: "Relacja foto / wideo", + registration: "Zapisy i drabinki", + }, + scale: { + grassroots: "Grassroots", + local: "Lokalny", + regional: "Regionalny", + national: "Krajowy", + international: "Międzynarodowy", + pro: "Obieg pro", + }, + }, + barber: { + service: { + haircut: "Strzyżenie", + fade: "Fade", + beard: "Trymowanie brody", + lineup: "Line-up / shape-up", + colour: "Koloryzacja i farbowanie", + kids: "Strzyżenie dzieci", + }, + serviceDesc: { + haircut: "Klasyczne strzyżenie — maszynką i nożyczkami.", + fade: "Płynne przejście — niski, średni lub wysoki fade.", + beard: "Trymowanie, formowanie i pielęgnacja brody.", + lineup: "Czyste krawędzie wokół linii włosów i karku.", + colour: "Koloryzacja, rozjaśnianie, farbowanie i tonowanie.", + kids: "Cierpliwe strzyżenie dla młodszych skaterów.", + }, + style: { + skin_fade: "Skin fade", + taper: "Taper", + buzz: "Strzyżenie na jeża", + mohawk: "Irokez", + mullet: "Mullet", + curly: "Loki / afro", + long: "Długie włosy / warstwy", + classic: "Klasyczne cięcie nożyczkami", + }, + setting: { + shop: "Shop / barbershop", + mobile: "Mobilnie / z dojazdem", + event: "Skate Eventy i zawody", + }, + }, + tour: { + skill: { + beginner: { + label: "Początkujący", + description: "Stawiasz pierwsze kroki w skate lub znasz podstawowe tricki", + }, + intermediate: { + label: "Średniozaawansowany", + description: "Komfortowo czujesz się na większości terenu", + }, + advanced: { + label: "Zaawansowany", + description: "Doświadczony skater, mocne Spoty", + }, + all: { + label: "Wszystkie poziomy", + description: "Odpowiedni dla każdego", + }, + }, + }, + }, +}; export default plBatch6; diff --git a/src/i18n/pl/batch7.ts b/src/i18n/pl/batch7.ts index 24991dd..8c0af00 100644 --- a/src/i18n/pl/batch7.ts +++ b/src/i18n/pl/batch7.ts @@ -1,4 +1,908 @@ -/** pl — batch 7. Filled by the translation pass; empty until then. */ -const plBatch7 = {}; +/** pl — batch 7. */ +const plBatch7 = { + events: { + title: 'Wydarzenia skateboardingowe', + createEvent: 'Utwórz wydarzenie', + editEvent: 'Edytuj wydarzenie', + eventDetails: 'Szczegóły wydarzenia', + eventName: 'Nazwa wydarzenia', + eventType: 'Typ wydarzenia', + date: 'Data', + time: 'Godzina', + startDate: 'Data rozpoczęcia', + endDate: 'Data zakończenia', + venue: 'Miejsce', + organizer: 'Organizator', + attendees: 'Uczestnicy', + going: 'Idę', + interested: 'Zainteresowany', + rsvp: 'RSVP', + ticketPrice: 'Cena biletu', + freeEntry: 'Wstęp wolny', + register: 'Zapisz się', + moreInfo: 'Więcej informacji', + upcomingEvents: 'Nadchodzące', + pastEvents: 'Minione', + noEvents: 'Nie znaleziono wydarzeń', + findEvents: 'Znajdź zawody, pokazy, sesje i wiele więcej', + searchPlaceholder: 'Szukaj wydarzeń...', + loginToCreate: 'Zaloguj się, aby tworzyć wydarzenia', + noEventsMatch: 'Żadne nadchodzące wydarzenie nie pasuje do filtrów.', + noUpcoming: 'Nie znaleziono nadchodzących wydarzeń.', + noPast: 'Nie znaleziono minionych wydarzeń.', + types: { + contest: 'Zawody', + session: 'Sesja', + meetup: 'Spotkanie', + premiere: 'Premiera wideo', + workshop: 'Warsztaty', + demo: 'Pokaz', + jam: 'Jam', + }, + }, + wallet: { + title: 'Portfel', + balance: 'Saldo', + send: 'Wyślij', + receive: 'Odbierz', + transactions: 'Transakcje', + history: 'Historia', + noTransactions: 'Brak transakcji', + sendSats: 'Wyślij sats', + receiveSats: 'Odbierz sats', + amount: 'Kwota', + recipient: 'Odbiorca', + lightning: 'Lightning', + onChain: 'On-chain', + invoice: 'Faktura', + address: 'Adres', + scanQR: 'Skanuj kod QR', + paste: 'Wklej', + payInvoice: 'Zapłać fakturę', + createInvoice: 'Utwórz fakturę', + copied: 'Skopiowano do schowka!', + insufficientFunds: 'Niewystarczające środki', + paymentSent: 'Płatność wysłana!', + paymentReceived: 'Płatność otrzymana!', + cashu: { + title: 'Portfel Cashu', + tokens: 'Tokeny', + mint: 'Mint', + mints: 'Minty', + manageMints: 'Zarządzaj mintami', + addMint: 'Dodaj mint', + removeMint: 'Usuń mint', + defaultMint: 'Domyślny mint', + backup: 'Kopia zapasowa', + restore: 'Przywróć', + recoveryPhrase: 'Fraza odzyskiwania', + viewRecoveryPhrase: 'Pokaż frazę odzyskiwania', + seedWarning: 'To jak twój nsec w Nostr — trzymaj to w tajemnicy i rób kopie zapasowe!', + }, + }, + spots: { + addSpot: 'Dodaj Spot', + editSpot: 'Edytuj Spot', + spotDetails: 'Szczegóły Spotu', + spotName: 'Nazwa Spotu', + spotType: 'Typ Spotu', + description: 'Opis', + location: 'Lokalizacja', + address: 'Adres', + photos: 'Zdjęcia', + addPhotos: 'Dodaj zdjęcia', + obstacles: 'Przeszkody', + features: 'Cechy', + bustLevel: 'Poziom ryzyka', + bestTime: 'Najlepszy czas', + tips: 'Wskazówki', + reviews: 'Opinie', + addReview: 'Dodaj opinię', + reportSpot: 'Zgłoś Spot', + directions: 'Trasa', + shareSpot: 'Udostępnij Spot', + createdBy: 'Utworzone przez', + lastUpdated: 'Ostatnia aktualizacja', + types: { + park: 'Skatepark', + street: 'Street Spot', + diy: 'DIY Spot', + plaza: 'Plaza', + indoor: 'Kryty', + bowl: 'Bowl', + vert: 'Vert', + miniramp: 'Miniramp', + }, + bustLevels: { + chill: 'Luźno', + moderate: 'Umiarkowanie', + sketchy: 'Ryzykownie', + heavy: 'Ciężko', + }, + }, + settings: { + title: 'Ustawienia', + profile: 'Profil', + editProfile: 'Edytuj profil', + account: 'Konto', + security: 'Bezpieczeństwo', + relays: 'Relay', + appearance: 'Wygląd', + language: 'Język', + notifications: 'Powiadomienia', + privacy: 'Prywatność', + about: 'O aplikacji', + help: 'Pomoc', + feedback: 'Opinia', + version: 'Wersja', + displayName: 'Nazwa wyświetlana', + username: 'Nazwa użytkownika', + bio: 'Bio', + website: 'Strona internetowa', + lightningAddress: 'Adres Lightning', + profilePicture: 'Zdjęcie profilowe', + banner: 'Baner', + saveProfile: 'Zapisz profil', + backupKeys: 'Kopia zapasowa kluczy', + exportKeys: 'Eksportuj klucze', + secretKey: 'Klucz prywatny', + publicKey: 'Klucz publiczny', + showSecretKey: 'Pokaż klucz prywatny', + hideSecretKey: 'Ukryj klucz prywatny', + copyKey: 'Kopiuj klucz', + keysBackedUp: 'Potwierdzasz, że twoje klucze są bezpiecznie zapisane.', + keysNotBackedUp: 'Pamiętaj, aby zapisać frazę odzyskiwania lub klucz prywatny!', + selectLanguage: 'Wybierz język', + english: 'Angielski', + spanish: 'Hiszpański', + }, + createSpot: { + title: 'Dodaj Spot', + subtitle: 'Podziel się Spotem ze społecznością', + backToMap: 'Powrót do mapy', + namePlaceholder: 'np. Hollywood High School', + descriptionPlaceholder: 'Opisz Spot, przeszkody, najlepsze godziny, informacje o ochronie itd.', + addressPlaceholder: 'np. ul. Marszałkowska 1, Warszawa', + selectType: 'Wybierz typ Spotu', + selectBustLevel: 'Wybierz poziom ryzyka', + uploadPhotos: 'Prześlij', + dragDrop: 'Przeciągnij i upuść lub kliknij, aby przesłać', + maxPhotos: 'Maks. 5 zdjęć', + publishing: 'Publikowanie...', + success: 'Spot opublikowany pomyślnie!', + error: 'Nie udało się opublikować Spotu', + locationRequired: 'Wybierz lokalizację na mapie', + useCurrentLocation: 'Użyj mojej bieżącej lokalizacji', + pickOnMap: 'Wskaż lokalizację na mapie', + loginToAdd: 'Musisz się zalogować, aby dodać Spot.', + locationLabel: 'Lokalizacja', + tapToPlace: 'Dotknij mapy, aby umieścić pinezkę, lub przeciągnij ją, aby doprecyzować.', + manualCoords: 'Wprowadź współrzędne ręcznie', + moreDetails: 'Więcej szczegółów (opcjonalnie)', + photoHint: 'zdjęcie jest wymagane do publikacji', + nameRequired: 'Podaj nazwę tego Spotu.', + descriptionRequired: 'Opisz ten Spot.', + addressRequired: 'Dodaj adres lub nazwę okolicy.', + photoRequired: 'Dodaj co najmniej jedno zdjęcie.', + draftTitle: 'Masz niezapisany szkic', + draftBody: 'Kontynuuj od miejsca, w którym skończyłeś, albo go odrzuć.', + draftResume: 'Wznów', + draftDiscard: 'Odrzuć szkic', + requiredFields: 'Opowiedz nam o tym Spocie. Wszystkie pola oznaczone * są wymagane.', + coordinates: 'Współrzędne', + latitudePlaceholder: 'Szerokość geograficzna (np. 52.2297)', + longitudePlaceholder: 'Długość geograficzna (np. 21.0122)', + gettingLocation: 'Pobieranie lokalizacji...', + accessType: 'Typ dostępu', + publicTitle: 'Publiczny — otwarty dla wszystkich', + publicDesc: 'Skateparki, publiczne place, spoty uliczne', + privateTitle: 'Prywatny — wymagana zgoda', + privateDesc: 'Rampy na podwórku, prywatny teren, spoty za bramą', + localsTitle: 'Najpierw zapytaj miejscowych', + localsDesc: 'Szanuj Spot, nie spal go', + contactInfo: 'Dane kontaktowe', + contactPlaceholder: 'np. numer telefonu, Instagram, e-mail...', + contactHintPrivate: 'Jak ludzie powinni się z tobą kontaktować w sprawie zgody?', + contactHintLocals: 'Jak ludzie powinni się odezwać, aby zapytać o Spot?', + }, + marketplace: { + title: 'Marketplace', + subtitle: 'Kupuj, sprzedawaj i wymieniaj Gear', + addListing: 'Dodaj ogłoszenie', + condition: 'Stan', + conditions: { + new: 'Nowy', + likeNew: 'Jak nowy', + good: 'Dobry', + fair: 'Dostateczny', + poor: 'Słaby', + }, + categories: { + all: 'Wszystkie', + decks: 'Deski', + trucks: 'Trucki', + wheels: 'Kółka', + bearings: 'Łożyska', + shoes: 'Buty', + clothing: 'Odzież', + protection: 'Ochrona', + other: 'Inne', + }, + priceRange: 'Zakres cen', + location: 'Lokalizacja', + seller: 'Sprzedawca', + contact: 'Skontaktuj się ze sprzedawcą', + makeOffer: 'Złóż ofertę', + sold: 'Sprzedane', + available: 'Dostępne', + gear: 'Gear', + sellGear: 'Sprzedaj Gear', + wantToBuy: 'Kupię', + }, + auth: { + login: 'Zaloguj się', + logout: 'Wyloguj się', + signUp: 'Zarejestruj się', + signUpTitle: 'Nowy w Nostr?', + signUpDesc: 'Utwórz nowe konto, aby zacząć. Jest darmowe i otwarte.', + orLogIn: 'Albo się zaloguj', + loginWithExtension: 'Zaloguj się przez rozszerzenie', + loginWithAmber: 'Zaloguj się przez Amber (Android)', + loginWithKey: 'Klucz prywatny (nsec) lub fraza odzyskiwania', + loginWithBunker: 'Zaloguj się przez Nostr Connect', + bunkerUri: 'Ciąg połączenia Bunker', + openAmber: 'Otwórz Amber', + connectToBunker: 'Połącz z Bunker', + noExtension: 'Nie wykryto rozszerzenia.', + extensionHelp: 'Spróbuj użyć przycisku Zarejestruj się powyżej, aby utworzyć nowe konto, albo użyj kart Amber, Klucz lub Bunker, jeśli masz już dane logowania.', + amberDesc: 'Amber to bezpieczna aplikacja podpisująca Nostr na urządzenia Android. Kliknij przycisk poniżej, aby otworzyć Amber i autoryzować dostęp.', + bunkerDesc: 'Uzyskaj dostęp do konta z dowolnego urządzenia za pomocą zdalnego podpisywania (bunker). Twoje klucze pozostają bezpieczne na serwerze, nigdy nie są ujawniane stronom internetowym.', + keyPlaceholder: 'nsec1... lub twoja 12-słowna fraza odzyskiwania', + keyHint: 'Możesz wkleić swój klucz nsec lub 12-słowną frazę odzyskiwania', + uploadKeyFile: 'Prześlij plik z kluczem', + loggingIn: 'Logowanie...', + connecting: 'Łączenie...', + verifying: 'Weryfikowanie...', + }, + createEvent: { + title: 'Utwórz wydarzenie', + subtitle: 'Zorganizuj wydarzenie skateboardingowe dla społeczności', + backToEvents: 'Powrót do wydarzeń', + namePlaceholder: 'np. Letnia sesja skate', + descriptionPlaceholder: 'Opisz wydarzenie, czego się spodziewać, zasady, nagrody itd.', + selectType: 'Wybierz typ wydarzenia', + venuePlaceholder: 'np. Skatepark w Venice Beach, CA', + selectDate: 'Wybierz datę', + selectTime: 'Wybierz godzinę', + ticketPricePlaceholder: 'Zostaw puste dla darmowych wydarzeń', + publishing: 'Publikowanie...', + success: 'Wydarzenie opublikowane pomyślnie!', + error: 'Nie udało się opublikować wydarzenia', + loginToCreate: 'Musisz się zalogować, aby utworzyć wydarzenie.', + requiredFields: 'Opowiedz nam o tym wydarzeniu. Wszystkie pola oznaczone * są wymagane.', + startDateTime: 'Data i godzina rozpoczęcia', + endDateTime: 'Data i godzina zakończenia (opcjonalnie)', + coordinatesOptional: 'Współrzędne (opcjonalnie)', + coverImage: 'Zdjęcie okładki', + uploadCover: 'Prześlij zdjęcie okładki', + nip05Recommended: 'Zalecana weryfikacja NIP-05', + nip05Desc: 'Dodaj identyfikator NIP-05 do swojego profilu, aby zweryfikować tożsamość i zbudować zaufanie wśród uczestników.', + addNip05: 'Dodaj NIP-05 w Ustawieniach', + }, + labPage: { + title: 'The Lab', + subtitle: 'Ucz się trików. Łap momenty. Łącz się z innymi Skaterami', + coachesTab: 'Treningi', + filmersTab: 'Filmowanie', + offerCoaching: 'ZAPROPONUJ TRENINGI', + offerFilming: 'ZAPROPONUJ FILMOWANIE', + loginToOffer: 'Zaloguj się, aby zaoferować usługi', + whatToLearn: 'CZEGO CHCESZ SIĘ NAUCZYĆ?', + whatContent: 'JAKI TYP TREŚCI?', + selectSkillsDesc: 'Wybierz umiejętności, a dopasujemy cię do trenerów', + selectFilmingDesc: 'Wybierz usługi filmowe, których szukasz', + searchPlaceholder: 'Szukaj po nazwie, lokalizacji lub umiejętnościach...', + noServicesYet: 'BRAK USŁUG', + beFirstToOffer: 'Bądź pierwszy, który zaproponuje społeczności treningi lub usługi filmowe!', + skills: 'Umiejętności', + rate: 'Stawka', + perHour: '/godz.', + contact: 'Kontakt', + viewProfile: 'Zobacz profil', + noProfilesYet: 'Brak profili', + beFirstCoach: 'Bądź pierwszy, który zarejestruje się jako trener!', + beFirstFilmer: 'Bądź pierwszy, który zarejestruje się jako filmer!', + yearsExperience: 'lat doświadczenia', + }, + 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: 'Podnieś poziom swojego skateboardingu', + coaches: 'Trenerzy', + filmers: 'Filmerzy', + findCoach: 'Znajdź trenera', + becomeCoach: 'Zostań trenerem', + findFilmer: 'Znajdź filmera', + becomeFilmer: 'Zostań filmerem', + hourlyRate: 'Stawka godzinowa', + experience: 'Doświadczenie', + specialties: 'Specjalizacje', + availability: 'Dostępność', + bookSession: 'Zarezerwuj sesję', + contactCoach: 'Skontaktuj się z trenerem', + noCoaches: 'Nie znaleziono trenerów w twojej okolicy', + noFilmers: 'Nie znaleziono filmerów w twojej okolicy', + }, + shops: { + title: 'Skate Shopy', + addShop: 'Dodaj Shop', + editShop: 'Edytuj Shop', + shopDetails: 'Szczegóły Shopu', + shopName: 'Nazwa Shopu', + hours: 'Godziny otwarcia', + phone: 'Telefon', + website: 'Strona internetowa', + services: 'Usługi', + brands: 'Marki', + supportLocal: 'Wspieraj lokalnych', + nip05: 'NIP-05 Shopu', + nip05Hint: 'Opcjonalny identyfikator, który kontrolujesz dla tego Shopu (np. shop@twojadomena.com), weryfikowany względem twojego klucza. Dodaj maks. 5.', + }, + becomeFilmer: { + title: 'Zostań filmerem', + subtitle: 'Nagrywaj najlepsze klipy dla społeczności', + bioPlaceholder: 'Opowiedz nam o swoim doświadczeniu w filmowaniu i sprzęcie...', + specialtiesPlaceholder: 'np. fisheye, długi obiektyw, dron, montaż', + selectSpecialties: 'Wybierz swoje specjalizacje', + hourlyRate: 'Stawka godzinowa (sats)', + ratePlaceholder: 'np. 5000', + locationPlaceholder: 'Twoje miasto lub okolica', + portfolioUrl: 'URL portfolio', + portfolioPlaceholder: 'Link do twoich prac (YouTube, Instagram itd.)', + publishing: 'Publikowanie profilu...', + success: 'Profil filmera utworzony!', + error: 'Nie udało się utworzyć profilu', + }, + food: { + title: 'Miejsca z jedzeniem', + subtitle: 'Zatankuj przed lub po sesji', + addFood: 'Dodaj miejsce z jedzeniem', + categories: { + all: 'Wszystkie', + burgers: 'Burgery', + pizza: 'Pizza', + tacos: 'Tacos', + coffee: 'Kawa', + drinks: 'Napoje', + snacks: 'Przekąski', + }, + skaterFriendly: 'Przyjazne skaterom', + nearSpots: 'Blisko Spotów', + }, + profile: { + posts: 'Posty', + spots: 'Spoty', + events: 'Wydarzenia', + following: 'Obserwowani', + followers: 'Obserwujący', + editProfile: 'Edytuj profil', + follow: 'Obserwuj', + unfollow: 'Przestań obserwować', + noPostsYet: 'Brak postów', + noBio: 'Brak bio', + zapProfile: 'Wyślij Zapa temu skaterowi', + }, + becomeCoach: { + title: 'Zostań trenerem', + subtitle: 'Podziel się swoimi umiejętnościami i pomóż innym skaterom się rozwijać', + bioPlaceholder: 'Opowiedz nam o swoim doświadczeniu w skateboardingu i stylu nauczania...', + skillsPlaceholder: 'np. kickflip, heelflip, grindy, bowl', + selectSkills: 'Wybierz umiejętności, których możesz uczyć', + hourlyRate: 'Stawka godzinowa (sats)', + ratePlaceholder: 'np. 5000', + locationPlaceholder: 'Twoje miasto lub okolica', + publishing: 'Publikowanie profilu...', + success: 'Profil trenera utworzony!', + error: 'Nie udało się utworzyć profilu', + }, + weather: { + title: 'Pogoda', + current: 'Aktualne warunki', + forecast: 'Prognoza', + humidity: 'Wilgotność', + wind: 'Wiatr', + feelsLike: 'Odczuwalna', + goodForSkating: 'Dobre warunki do jazdy!', + notIdeal: 'Nieidealne warunki', + allWeather: 'Każda pogoda', + goodWeather: 'Dobra pogoda', + perfectWeather: 'Idealna pogoda', + }, + errors: { + somethingWentWrong: 'Coś poszło nie tak', + tryAgainLater: 'Spróbuj ponownie później', + notFound: 'Nie znaleziono', + pageNotFound: 'Nie znaleziono strony', + unauthorized: 'Brak autoryzacji', + loginRequired: 'Zaloguj się, aby kontynuować', + networkError: 'Błąd sieci', + checkConnection: 'Sprawdź połączenie z internetem', + invalidInput: 'Nieprawidłowe dane', + requiredField: 'To pole jest wymagane', + }, + time: { + today: 'Dzisiaj', + yesterday: 'Wczoraj', + tomorrow: 'Jutro', + thisWeek: 'W tym tygodniu', + nextWeek: 'W następnym tygodniu', + thisMonth: 'W tym miesiącu', + justNow: 'Przed chwilą', + minutesAgo: '{{count}} minut temu', + hoursAgo: '{{count}} godzin temu', + daysAgo: '{{count}} dni temu', + }, + spotDetail: { + postedBy: 'Opublikowane przez', + getDirections: 'Wyznacz trasę', + reviews: 'Opinie', + noReviews: 'Brak opinii', + beFirstReview: 'Bądź pierwszy, który oceni ten Spot!', + writeReview: 'Napisz opinię', + submitReview: 'Wyślij opinię', + rating: 'Ocena', + reviewPlaceholder: 'Podziel się swoim doświadczeniem z tego Spotu...', + relatedSpots: 'Pobliskie Spoty', + }, + eventDetail: { + organizedBy: 'Zorganizowane przez', + eventInfo: 'Informacje o wydarzeniu', + location: 'Lokalizacja', + dateTime: 'Data i godzina', + price: 'Cena', + attendeeCount: '{{count}} uczestników', + interested: 'Zainteresowany', + going: 'Idę', + notGoing: 'Nie idę', + share: 'Udostępnij wydarzenie', + }, + venueAccess: { + title: 'Przepustki dostępu', + desc: 'Wydaj podpisaną przepustkę riderowi, aby mógł potwierdzić dostęp przy wejściu — pokazuje swoją kartę, a każdy może zeskanować kod QR, aby ją zweryfikować.', + active: '{{count}} aktywnych', + revoked: '{{count}} unieważnionych', + issue: 'Wydaj przepustkę', + verifyHint: 'Zweryfikowano przez skanowanie — do sprawdzenia nie jest potrzebna aplikacja ani konto.', + publicTitle: 'Przepustki dostępu', + publicDesc: 'To miejsce wydaje przepustki dostępu. Zeskanuj kartę ridera przy wejściu, aby ją zweryfikować.', + badge: 'Przepustki', + sellerHint: 'Miejsce tego sprzedawcy wydaje przepustki dostępu', + }, + zaps: { + zapButton: 'Zap', + sendZap: 'Wyślij Zapa', + zapAmount: 'Kwota Zapa', + customAmount: 'Własna kwota', + addMessage: 'Dodaj wiadomość (opcjonalnie)', + sending: 'Wysyłanie...', + sent: 'Zap wysłany!', + failed: 'Zap nie powiódł się', + received: 'Otrzymałeś Zapa!', + }, + rewards: { + title: 'Nagrody', + yourPoints: 'Twoje punkty', + earnPoints: 'Zdobywaj punkty', + redeemPoints: 'Wymień punkty', + leaderboard: 'Ranking', + achievements: 'Osiągnięcia', + dailyTasks: 'Zadania dzienne', + weeklyTasks: 'Zadania tygodniowe', + }, + errorsUi: { + slammedTitle: 'Wygleba', + slammedBody: 'Coś potknęło ten ekran. Twoje konto i dane są bezpieczne — wracajmy do jazdy.', + tryAgain: 'Spróbuj ponownie', + reloadApp: 'Odśwież aplikację', + pageSlammedTitle: 'Ta strona zaliczyła slam', + pageSlammedBody: 'Coś na tym ekranie się potknęło. Twoje konto i dane są bezpieczne. Zwykle szybkie odświeżenie załatwia sprawę.', + reload: 'Odśwież', + goBack: 'Wróć', + }, + backup: { + title: 'Zapisz swoje logowanie', + subtitle: 'Zajmuje 10 sekund — zrób to raz', + message: 'Twój kod odzyskiwania to jedyny sposób powrotu do konta. Zapisz go, a będziesz mógł zalogować się na dowolnym urządzeniu.', + warning: 'Jeśli go zgubisz, nie ma resetu — żadnego e-maila, żadnego odzyskiwania hasła.', + backupNow: 'Zapisz go teraz', + confirmed: 'Zapisałem go', + remindLater: 'Później', + }, + bootUi: { + ariaLoading: 'Ładowanie SkateSpots', + ariaReady: 'SkateSpots gotowe', + ready: 'Gotowe', + statusWaking: 'Budzenie sieci', + statusTuning: 'Strojenie relayów', + statusPulling: 'Ściąganie Spotów', + statusDropping: 'Wjazd', + }, + footer: { + vibedWith: 'Z vibem od', + poweredBy: 'Napędzane przez', + openSource: 'Open Source', + contribute: 'Współtwórz', + decentralized: 'Zdecentralizowane', + communityOwned: 'Własność społeczności', + }, + role: { + owner: 'Właściciel', + admin: 'Admin', + organiser: 'Organizator', + verifiedOwner: 'Zweryfikowany właściciel', + }, + nfc: { + write: 'Zapisz na tag NFC', + written: 'Tag zapisany', + writtenDesc: 'Przyłóż tag do telefonu, aby otworzyć stronę weryfikacji.', + failed: 'Nie udało się zapisać tagu', + }, + collectionUi: { + namePlaceholder: 'Wycieczka do Barcelony 2024', + descriptionPlaceholder: 'Moje ulubione Spoty z wycieczki do Barcelony...', + }, + toastsUi: { + followingSuccess: 'Obserwowanie rozpoczęte', + followingSuccessDesc: 'Ten użytkownik jest teraz w twojej sieci', + followFailed: 'Nie udało się zaobserwować', + unfollowSuccess: 'Przestałeś obserwować', + unfollowSuccessDesc: 'Usunięto z twojej sieci', + unfollowFailed: 'Nie udało się przestać obserwować', + reportThanks: 'Dzięki — wysłano do przeglądu', + reportFailed: 'Nie udało się wysłać zgłoszenia', + savedOffline: 'Zapisano offline', + savedOfflineDesc: 'Opublikujemy to automatycznie, gdy wrócisz online.', + cacheCleaned: 'Pamięć podręczna wyczyszczona', + cacheCleanedDesc: 'Usunięto {{count}} starych Spotów z pamięci podręcznej', + cacheCleared: 'Pamięć podręczna wyczyszczona', + cacheClearedDesc: 'Wszystkie zapisane Spoty zostały usunięte', + backOnline: 'Znów online', + backOnlineDesc: 'Wysłano {{count}} zapisanych akcji.', + postQueued: 'Post w kolejce', + postQueuedDesc: 'Twój post zostanie opublikowany, gdy wrócisz online', + invalidIdentifier: 'Nieprawidłowy identyfikator. Użyj npub1..., user@domain.com lub pubkeya hex', + notASpotThanks: 'Dzięki — wysłano do przeglądu', + notASpotThanksDesc: 'Bez urazy: to oznacza pinezkę jako niepasującą, aby ludzie mogli sami zdecydować.', + notASpotFailed: 'Nie udało się wysłać zgłoszenia', + pleaseTryAgain: 'Spróbuj ponownie.', + relayUnreachable: 'Nie udało się połączyć z żadnym relayem — sprawdź połączenie i spróbuj ponownie.', + loginToReport: 'Zaloguj się, aby zgłosić Spot.', + zapLoginRequired: 'Wymagane zalogowanie', + zapLoginRequiredDesc: 'Musisz być zalogowany, aby wysłać Zapa.', + zapEventNotFound: 'Nie znaleziono wydarzenia', + zapEventNotFoundDesc: 'Nie udało się znaleźć wydarzenia do zapowania.', + zapAuthorNotFound: 'Nie znaleziono autora', + zapAuthorNotFoundDesc: 'Nie udało się znaleźć autora tego elementu.', + zapSuccess: 'Zap zakończony sukcesem!', + zapSuccessNwcDesc: 'Wysłałeś {{amount}} sats przez NWC autorowi.', + zapSuccessDesc: 'Wysłałeś {{amount}} sats autorowi.', + zapStatusUnknown: 'Status płatności nieznany', + zapStatusUnknownDesc: 'Twój portfel może wciąż rozliczać tego Zapa. Sprawdź portfel przed ponowną próbą — nie płać dwa razy.', + zapNwcFailed: 'Płatność NWC nie powiodła się', + zapWeblnFailed: 'Płatność WebLN nie powiodła się', + zapFallingBack: '{{error}}. Przechodzenie do innych metod płatności...', + zapFailed: 'Zap nie powiódł się', + zapUnknownNwcError: 'Nieznany błąd NWC', + zapUnknownWeblnError: 'Nieznany błąd WebLN', + nwcInvalidUri: 'Nieprawidłowy URI NWC', + nwcInvalidUriDesc: 'Sprawdź ciąg połączenia i spróbuj ponownie.', + nwcExists: 'Połączenie już istnieje', + nwcExistsDesc: 'Ten portfel jest już połączony.', + nwcConnected: 'Portfel połączony', + nwcConnectedDesc: 'Pomyślnie połączono z {{alias}}.', + nwcFailed: 'Połączenie nie powiodło się', + nwcFailedDesc: 'Nie udało się połączyć z portfelem: {{error}}', + nwcUnknownError: 'Wystąpił nieznany błąd', + nwcDisconnected: 'Portfel rozłączony', + nwcDisconnectedDesc: 'Połączenie z portfelem zostało usunięte.', + deleteApproveAmber: 'Zatwierdź w Amber', + deleteApproveAmberDesc: 'Otworzy się Amber — dotknij Zatwierdź, aby potwierdzić usunięcie.', + deleteCancelled: 'Anulowano', + deleteCancelledDesc: 'Odrzuciłeś żądanie w Amber.', + deleteCouldntSign: 'Nie udało się podpisać', + deletePublishing: 'Krok 2/2: Publikowanie…', + deletePublishingDesc: 'Wysyłanie usunięcia do relayów.', + deleteStuck: 'Zatrzymane na PUBLIKOWANIU', + deleteStuckDesc: 'Krok z relayem nie powiódł się: {{error}}. Podpisano poprawnie; relay nie potwierdził.', + stashMerged: 'Scalono zmiany z innego urządzenia', + stashMergedDesc: 'Twój Stash został zmieniony gdzie indziej — oba zestawy zmian zostały zachowane.', + statusUpdated: 'Status zaktualizowany!', + statusUpdatedDesc: 'Twój status jazdy jest teraz widoczny dla innych.', + statusFailed: 'Nie udało się ustawić statusu', + statusCleared: 'Status wyczyszczony', + statusClearedDesc: 'Twój status został usunięty.', + statusClearFailed: 'Nie udało się wyczyścić statusu', + nutzapEnabled: 'Odbieranie Nutzap włączone', + nutzapEnabledDesc: 'Możesz teraz odbierać e-cashowe Zapy!', + nutzapSetupFailed: 'Konfiguracja nie powiodła się', + nutzapUnavailable: 'Wysyłanie Nutzap niedostępne', + tokenReceived: 'Token otrzymany', + tokenReceivedDesc: 'Token Cashu zrealizowany pomyślnie!', + receiveFailed: 'Odbieranie nie powiodło się', + invalidAmount: 'Nieprawidłowa kwota', + invalidAmountDesc: 'Podaj prawidłową kwotę', + tokenCreated: 'Token utworzony', + sendFailed: 'Wysyłanie nie powiodło się', + mintAdded: 'Mint dodany', + mintAddedDesc: 'Mint dodany i zaufany pomyślnie', + mintAddFailed: 'Nie udało się dodać mintu', + mintRemoved: 'Mint usunięty', + mintRemoveFailed: 'Nie udało się usunąć mintu', + paymentReceived: 'Płatność otrzymana', + paymentReceivedDesc: 'Pomyślnie otrzymano {{amount}} sats!', + paymentSent: 'Płatność wysłana', + paymentSentDesc: 'Płatność Lightning zakończona pomyślnie', + loginRequired: 'Wymagane zalogowanie', + loginToFollowFounder: 'Zaloguj się, aby obserwować założyciela', + alreadyFollowing: 'Już obserwujesz', + alreadyFollowingDesc: 'Już obserwujesz {{name}}!', + couldNotComplete: 'Nie udało się tego ukończyć', + tryAgainLower: 'Spróbuj ponownie.', + couldNotLoadProfile: 'Nie udało się załadować profilu', + couldNotLoadProfileDesc: 'Sprawdź połączenie z internetem i spróbuj odświeżyć.', + undone: 'Cofnięte', + undoneDesc: 'Powrót do neutralnego — nie ukryte, nie poświadczone.', + confirmed: 'Potwierdzone', + confirmedDesc: 'Poświadczone — znika z tej kolejki.', + hiddenToast: 'Ukryte', + couldNotUndo: 'Nie udało się cofnąć', + couldNotConfirm: 'Nie udało się potwierdzić', + deleteFailed: 'Usuwanie nie powiodło się', + somethingWentWrong: 'Coś poszło nie tak', + }, + seoUi: { + becomeBuilderTitle: 'Zostań budowniczym - SkateSpots', + becomeBuilderDesc: 'Wystaw swoje usługi budowy ramp, parków i konstrukcji DIY — co budujesz, materiały i skalę.', + tradesTitle: 'Moje wymiany — SkateSpots', + tradesDesc: 'Zarządzaj swoimi wymianami na marketplace, potwierdzeniami i reputacją.', + eventsTitle: 'Wydarzenia i trasy skate - SkateSpots', + eventsDesc: 'Odkrywaj wydarzenia skateboardingowe, zawody, trasy i sesje w twojej okolicy.', + editShopDesc: 'Edytuj swój skate Shop.', + createTourDesc: 'Organizuj trasy skate — lokalne wycieczki po ukrytych perełkach, krajowe wyprawy, międzynarodowe przygody lub konkursy zniszczenia w stylu KOTR.', + deckDesignerTitle: 'Projektant deskorolki — SkateSpots DIY', + deckDesignerDesc: 'Zaprojektuj obrys deskorolki lub longboardu, a następnie wyeksportuj szablon do druku 1:1, SVG lub DXF — z wklęsłością, kickami, rozstawem osi i otworami na trucki.', + createEventTitle: 'Utwórz wydarzenie skate - SkateSpots', + createEventDesc: 'Utwórz nowe wydarzenie skateboardingowe dla społeczności.', + editTourDesc: 'Edytuj swoją trasę skate — zaktualizuj przystanki, daty i szczegóły.', + walletTitle: 'Portfel - SkateSpots', + walletDesc: 'Połącz swój portfel Lightning, aby wysyłać Zapy skaterom i twórcom Spotów.', + becomePhotographerTitle: 'Zostań fotografem - SkateSpots', + becomePhotographerDesc: 'Utwórz swój profil fotografii skate — aparaty, obiektywy, oświetlenie i usługi.', + newsletterTitle: 'Newsletter - SkateSpots', + newsletterDesc: 'Cotygodniowe nowości od społeczności SkateSpots. Aktualizacje aplikacji, nowe Spoty, wydarzenia i ludzie, którzy utrzymują skateboarding przy życiu.', + homeTitle: 'SkateSpots - Odkrywaj miejsca do skateboardingu na całym świecie', + zapLeaderboardTitle: 'Rankingi Zapów - SkateSpots', + zapLeaderboardDesc: 'Najczęściej zapowane Spoty i członkowie społeczności, którzy je wspierają.', + adminReviewTitle: 'Kolejka przeglądu — SkateSpots', + gearSwapTitle: 'Wymiana Gear - SkateSpots', + gearSwapDesc: 'Kupuj i sprzedawaj używany Gear od innych skaterów. Deski, trucki, kółka, buty i więcej.', + donateTitle: 'Wesprzyj — SkateSpots', + donateDesc: 'Wesprzyj SkateSpots — Lightning, prywatny on-chain (płatności ciche) lub finansowanie rozwoju na Angor.', + verifyCardTitle: 'Weryfikacja — SkateSpots', + verifyCardDesc: 'Zweryfikuj kartę SkateSpots lub przepustkę dostępu.', + mapTitle: 'Mapa Spotów - SkateSpots', + mapDesc: 'Odkrywaj miejsca do skateboardingu na całym świecie na naszej interaktywnej mapie.', + diyTitle: 'DIY — Zrób to sam | SkateSpots', + diyDesc: 'Poradniki, otwarte narzędzia i plany, jak zrobić własne deskorolki, rampy i betonowe Spoty — oraz ludzie i miejsca, z którymi to zrobisz.', + appShopTitle: 'App Shop — SkateSpots', + becomeSkaterTitle: 'Dołącz do katalogu skaterów - SkateSpots', + becomeSkaterDesc: 'Utwórz swój profil skatera, aby społeczność mogła cię znaleźć.', + marketplaceTitle: 'Marketplace - SkateSpots', + marketplaceDesc: 'Kupuj i sprzedawaj Gear skateboardingowy na zdecentralizowanym Plebeian Market.', + becomeEditorTitle: 'Zostań montażystą wideo - SkateSpots', + becomeEditorDesc: 'Utwórz swój profil montażysty wideo skateboardingowego na SkateSpots.', + amberCallbackTitle: 'Logowanie przez Amber - SkateSpots', + amberCallbackDesc: 'Kończenie logowania przez Amber (NIP-55).', + supportersTitle: 'Wspierający - SkateSpots', + supportersDesc: 'Społeczność utrzymująca SkateSpots przy życiu — wspierający, współpracownicy, partnerzy i przyjaciele.', + becomeCoachTitle: 'Zostań trenerem - SkateSpots', + becomeCoachDesc: 'Utwórz swój profil trenera skateboardingu.', + riderCardTitle: 'Karta skatera — SkateSpots', + riderCardDesc: 'Utwórz swoją kartę skatera SkateSpots do druku lub kartę dostępu do parku.', + editEventDesc: 'Edytuj swoje wydarzenie skateboardingowe.', + createShopTitle: 'Dodaj skate Shop - SkateSpots', + createShopDesc: 'Dodaj swój skate Shop do społeczności.', + deckCostTitle: 'Kalkulator kosztu deski — SkateSpots DIY', + deckCostDesc: 'Oblicz, ile kosztuje wykonanie deski — robocizna, sprzęt, materiały, czas procesu, pakowanie i marża — oraz uczciwa cena sprzedaży.', + pyramidTitle: 'Ranking piramidy - SkateSpots', + pyramidDesc: 'Najlepsi współtwórcy i liderzy społeczności.', + foodTitle: 'Jedzenie blisko Spotów - SkateSpots', + foodDesc: 'Znajdź restauracje, kawiarnie i jedzenie w pobliżu miejsc do skateboardingu.', + createListingTitle: 'Wystaw Gear - SkateSpots', + createListingDesc: 'Wystaw Gear skateboardingowy na sprzedaż lub znajdź Gear, który chcesz kupić.', + becomeFilmerTitle: 'Zostań filmerem - SkateSpots', + becomeFilmerDesc: 'Utwórz swój profil filmowania skateboardingowego.', + skatersTitle: 'Skaterzy - SkateSpots', + skatersDesc: 'Odkrywaj skaterów w społeczności SkateSpots. Przeglądaj według stylu, pozycji, poziomu i lokalizacji.', + communityStatsTitle: 'Statystyki społeczności — SkateSpots', + communityStatsDesc: 'Statystyki społeczności SkateSpots na żywo — Spoty, wydarzenia, trenerzy, filmerzy, montażyści, trasy i wzrost w czasie. Pobierane bezpośrednio z Nostr.', + labTitle: 'The Lab - SkateSpots', + labDesc: 'Znajdź trenerów skateboardingu, filmerów, fotografów i montażystów wideo.', + stashTitle: 'Mój Stash - SkateSpots', + stashDesc: 'Zarządzaj swoim prywatnym ekwipunkiem. Śledź, co posiadasz, co chcesz sprzedać lub wymienić.', + bountyLeaderboardTitle: 'Mapuj i zarabiaj - SkateSpots', + bountyLeaderboardDesc: 'Mapuj Spoty i Shopy, zdobywaj Zapy od społeczności. Zobacz najlepszych współtwórców.', + spotCollectionsTitle: 'Moje kolekcje Spotów - SkateSpots', + spotCollectionsDesc: 'Organizuj swoje ulubione Spoty w spersonalizowane kolekcje', + mintsTitle: 'Minty Cashu — SkateSpots', + mintsDesc: 'Przeglądaj minty Cashu, sprawdzaj ich stan i dodaj jeden do swojego portfela.', + }, + miscUi: { + openingCamera: 'Otwieranie aparatu…', + usePhoneCamera: 'Użyj aparatu telefonu, a potem wróć tutaj', + startingCamera: 'Uruchamianie aparatu...', + cameraAccessRequired: 'Wymagany dostęp do aparatu', + cameraAccessHint: 'Zezwól na dostęp do aparatu w ustawieniach przeglądarki lub użyj wyboru plików poniżej.', + cameraErrorTitle: 'Błąd aparatu', + cameraErrorDesc: 'Nie udało się otworzyć aparatu. Sprawdź uprawnienia aplikacji w Ustawieniach.', + cameraDeniedTitle: 'Odmowa dostępu do aparatu', + cameraDeniedDesc: 'Zezwól na dostęp do aparatu w ustawieniach przeglądarki.', + uploadFromGallery: 'Prześlij z galerii', + uploading: 'Przesyłanie...', + usePhoto: 'Użyj zdjęcia', + earningPotential: 'Potencjał zarobkowy', + qualityExcellent: 'Doskonale!', + qualityGood: 'Dobrze', + qualityBasic: 'Podstawowo', + qualityGettingStarted: 'Na start', + qualityLocationAdded: 'Dodano lokalizację', + qualityOnePhoto: 'Co najmniej 1 zdjęcie', + qualityThreePhotos: '3+ zdjęcia', + qualityMoreAngles: 'Więcej ujęć = lepiej', + qualityDescription: 'Opis', + qualityDetailedDesc: 'Szczegółowy opis (100+ znaków)', + qualityContact: 'Dane kontaktowe', + qualityPhoneOrWebsite: 'Telefon lub strona', + qualityHours: 'Godziny otwarcia', + qualitySpotType: 'Wybrano typ Spotu', + failedToLoadComments: 'Nie udało się załadować komentarzy', + commentsTitle: 'Komentarze', + noCommentsYet: 'Brak komentarzy', + beFirstComment: 'Bądź pierwszy, który podzieli się opinią!', + removeMember: 'Usuń członka', + whoIsThisFor: 'Dla kogo jest ten profil?', + individual: 'Osoba', + individualDesc: 'Jedna osoba', + collective: 'Kolektyw', + collectiveDesc: 'Crew, studio lub firma', + membersLabel: 'Członkowie', + dismissReport: 'Odrzuć zgłoszenie', + reportedBy: 'zgłoszone przez', + completingLoginAmber: 'Kończenie logowania przez Amber...', + entityMembersHint: 'Dodaj konta Nostr swojego Crew. Każdy członek potwierdza swój własny Spot swoim kluczem — do tego czasu widnieje jako „oczekujący”.', + entityVerifiedHint: 'Członkostwo jest weryfikowane indywidualnie — nikt nie może zostać dodany do twojego Crew bez potwierdzenia ze swojego konta.', + entityInvalidPubkey: 'Wprowadź prawidłowy npub, nprofile lub 64-znakowy pubkey hex.', + entityAlreadyAdded: 'Ten członek jest już dodany.', + offline: 'Offline', + connected: 'Połączono', + offlineMode: 'Tryb offline', + allFeaturesAvailable: 'Wszystkie funkcje dostępne', + browsingCachedSpots: 'Przeglądanie zapisanych Spotów', + queuedActions: '{{count}} akcji w kolejce', + syncing: 'Synchronizacja', + publishingWhenStable: 'Publikowanie, gdy połączenie się ustabilizuje...', + willPublishOnline: 'Zostanie opublikowane po powrocie online', + availableOffline: 'Dostępne offline:', + offlineBrowseSpots: 'Przeglądaj wcześniej oglądane Spoty', + offlineViewDetails: 'Zobacz zapisane szczegóły Spotów', + offlineKeepActing: 'Działaj dalej — posty, RSVP, ogłoszenia i wiadomości są kolejkowane i wysyłane po ponownym połączeniu', + }, + sasquatchGuide: { + homeTitle: 'Witaj w SkateSpots! 🦧', + homeMessage: 'Yo, jestem The Sasquatch. Strażnik deskorolek, szlaków i dzikich jazd. Witaj w nieokiełznanym świecie skate na Nostr — bez garniturów, bez reklam, tylko skaterzy wytyczający własną drogę. Tutaj twoje triki, twoje dane i nawet Bitcoin za zostawienie po sobie śladu należą do ciebie. Łącz się ze skaterami z twojej okolicy lub z całego świata. Żadnych zasad poza jazdą, żadnych śladów poza twoimi własnymi.', + homeQ1: 'Zaplanuj mi 3 dni w Barcelonie', + homeQ2: 'Znajdź spoty dla początkujących', + homeQ3: 'Jakieś nadchodzące wydarzenia?', + homeQ4: 'Statystyki społeczności', + homeQ5: 'Znajdź trenerów w pobliżu', + homeQ6: 'Gear na sprzedaż?', + homeQ7: 'Czym jest Nostr?', + homeQ8: 'Czy to darmowe?', + homeLearnMore: 'Dowiedz się więcej', + onboardingTitle: 'Pierwsze kroki 🚀', + onboardingMessage: 'Pomogę ci zrozumieć podstawy! Nostr to twoja tożsamość, Bitcoin Lightning pozwala ci zarabiać sats za wkład, a Zapy to natychmiastowe napiwki. Pytaj mnie o wszystko na temat pierwszych kroków!', + onboardingQ1: 'Jak się zalogować?', + onboardingQ2: 'Czym jest Nostr?', + onboardingQ3: 'Jak działa Nostr?', + onboardingQ4: 'Czym jest Cashu?', + onboardingQ5: 'Jak korzystać z portfela Cashu?', + onboardingQ6: 'Czym są minty?', + onboardingQ7: 'Czym są Zapy?', + onboardingQ8: 'Czym jest NWC?', + onboardingStart: 'Zacznij odkrywać', + onboardingLogin: 'Zaloguj się, aby zacząć', + labTitle: 'Witaj w The Lab! 🎓', + labMessage: 'Tu dzieje się magia! Znajdź trenerów, którzy nauczą cię wszystkiego od kickflipów po darkslidy, albo nawiąż kontakt z filmerami, którzy uchwycą twoje najlepsze sesje. Filtruj według umiejętności, sprawdź ich doświadczenie i zarezerwuj sesję. Pamiętaj — każdy gdzieś zaczynał!', + labQ1: 'Znajdź trenerów', + labQ2: 'Znajdź filmerów', + labQ3: 'Znajdź fotografów', + labQ4: 'Znajdź montażystów wideo', + labQ5: 'Znajdź budowniczego ramp', + labQ6: 'Czym jest The Lab?', + labQ7: 'Czym jest budowniczy?', + labQ8: 'Jak zaoferować treningi?', + labLogin: 'Zaloguj się, aby zaoferować usługi', + crewsTitle: 'Crew 🤘', + crewsMessage: 'Crew to twoja rodzina skaterów zakotwiczona na mapie — ludzie, z którymi jeździsz, a nie których wynajmujesz. Każde Crew ma swój domowy teren na mapie, domowe Spoty, członków i manifest. Członkowie potwierdzają własnymi kluczami, więc skład jest prawdziwy. Zacznij własne albo znajdź swoich ludzi!', + crewsQ1: 'Czym są Crew?', + crewsQ2: 'Jak zacząć Crew?', + crewsQ3: 'Czym Crew różni się od The Lab?', + crewsQ4: 'Jak członkowie potwierdzają?', + crewsQ5: 'Czym jest Nostr?', + crewsQ6: 'Jak działają Zapy?', + crewsLogin: 'Zaloguj się, aby utworzyć Crew', + }, + supportUi: { + keepMapFree: 'Utrzymaj mapę darmową', + keepMapFreeDesc: 'Bez reklam, bez śledzenia, bez VC. Twoje sats płacą za hosting, węzeł AI i relay.', + thankYou: 'Dziękujemy! ⚡', + satsKeepMapFree: 'Twoje sats utrzymują mapę darmową.', + keptFreeNext: 'Właśnie utrzymałeś SkateSpots darmowe dla następnego skatera.', + scanToPay: 'Zeskanuj, aby zapłacić', + zapSkateSpots: 'Zapnij SkateSpots', + payQuietly: 'Zapłać po cichu', + pickAmount: 'Wybierz kwotę', + enterAmount: 'Wpisz, ile sats chcesz wysłać.', + couldNotStartPayment: 'Nie udało się rozpocząć płatności.', + customAmountAria: 'Własna kwota w sats', + commentPlaceholder: 'Napisz coś (opcjonalnie — tylko publiczne Zapy)', + publicZapTitle: 'Publiczny Zap z twoim komentarzem', + loginToZapTitle: 'Zaloguj się, aby wysłać publicznego Zapa', + anonymousTitle: 'Anonimowo — bez logowania, bez śladu', + copyLightningTitle: 'Skopiuj adres Lightning', + copiedSuffix: 'Skopiowano {{label}}', + invoiceLabel: 'Faktura', + addressLabel: 'Adres', + notAPurchase: 'Wsparcie, nie zakup — nic nie kupuje i nie ma zwrotów. Merch i Sasquatch Pro to osobne sprawy. Twoja lokalizacja i tożsamość nigdy nie biorą udziału w cichej płatności.', + }, + statusUi: { + quickStatus: 'Szybki status', + skating: 'Jeżdżę', + skatingDesc: 'Aktualnie jeżdżę', + filming: 'Filmuję', + filmingDesc: 'Nagrywam triki', + lookingForSesh: 'Szukam sesji', + lookingForSeshDesc: 'Chcę jeździć z innymi', + coaching: 'Trenuję', + coachingDesc: 'Uczę/trenuję', + chilling: 'Relaks', + chillingDesc: 'Kręcę się przy Spocie', + onMyWay: 'W drodze', + onMyWayDesc: 'Jadę do Spotu', + takingABreak: 'Przerwa', + takingABreakDesc: 'Odpoczywam/nawadniam', + doneForToday: 'Koniec na dziś', + doneForTodayDesc: 'Skończyłem jeździć', + }, +}; export default plBatch7; diff --git a/src/i18n/pl/batch8.ts b/src/i18n/pl/batch8.ts index a357be8..31bdcc8 100644 --- a/src/i18n/pl/batch8.ts +++ b/src/i18n/pl/batch8.ts @@ -1,4 +1,621 @@ -/** pl — batch 8. Filled by the translation pass; empty until then. */ -const plBatch8 = {}; +const plBatch8 = { + deckCostUi: { + presetPrompt: "Nazwij ten preset", + presetDefaultName: "Preset {{n}}", + summaryCopied: "Podsumowanie skopiowane", + couldNotCopy: "Nie udało się skopiować", + resetConfirm: "Zresetować wszystko do wartości przykładowych?", + logoTooLarge: "Logo za duże (maks. 500 KB)", + loginToFill: "Zaloguj się, aby wypełnić z profilu Nostr", + filledFromProfile: "Wypełniono z Twojego profilu Nostr", + warnRetailBelowOne: "Narzut detaliczny jest poniżej 1× — sprzedawałbyś ze stratą.", + warnWholesaleAboveRetail: "Narzut hurtowy powinien być niższy niż narzut detaliczny.", + warnZeroBoards: "{{count}} wiersz(y) używa 0 desek — koszt tego wiersza jest ignorowany.", + warnFixedNoBoards: "Ustawiono stałe koszty miesięczne, ale liczba desek/miesiąc wynosi 0, więc koszt operacyjny jest ignorowany.", + warnNoMaterials: "Brak kosztu materiałów — dodaj co najmniej jeden materiał.", + warnEquipmentOverhead: "Sprzęt + koszty ogólne to ponad 60% kosztu — ten model zakłada dużą skalę; sprawdź liczbę desek.", + warnOneBoard: "Część sprzętu jest rozłożona na jedną deskę — zwiększ liczbę desek, aby go amortyzować.", + templateStarterName: "Start hobbystyczny", + templateStarterBlurb: "Kilka wierszy, bez stałych kosztów", + templateShopName: "Mały warsztat", + templateShopBlurb: "Pełny arkusz z czynszem i kosztami ogólnymi", + currency: "Waluta", + noCurrencyMatches: "Brak pasującej waluty.", + ratesUnavailable: "Kursy na żywo niedostępne — przełączenie tylko zmienia etykietę.", + liveRates: "kursy BTC na żywo · sats wliczone", + chipCost: "koszt", + chipSell: "sprzedaż", + chipTotal: "razem", + startFrom: "Zacznij od", + advancedToggleHint: "Pokaż stawki za operację i odpady, konfigurację partii, podatek oraz krzywą kosztu w zależności od ilości", + advanced: "Zaawansowane", + simple: "Proste", + sectionLabor: "Robocizna", + sectionEquipment: "Sprzęt", + sectionOperations: "Koszty operacyjne", + sectionMaterials: "Materiały", + sectionProcesses: "Koszty procesów", + sectionPackaging: "Pakowanie", + sectionMargins: "Marże", + subtotalLoaded: "{{value}}/godz. z obciążeniami", + subtotalPerBoard: "{{value}}/deska", + hourlyRate: "Stawka godzinowa ({{unit}})", + labourBurden: "Obciążenia pracy (×)", + loadedRate: "Stawka z obciążeniami", + loadedRateHintBefore: "Stawka z obciążeniami = wynagrodzenie × obciążenia (podatki i ubezpieczenia pracodawcy od pracy). Czynsz i rachunki wpisz w ", + loadedRateHintAfter: " — nie licz ich podwójnie.", + colEquipment: "Sprzęt", + colCostUnit: "Koszt ({{unit}})", + colCost: "Koszt", + colSetupH: "Konfiguracja (godz.)", + colLifetimeBoards: "Żywotność (deski)", + colPerBoard: "Na deskę", + colMaterial: "Materiał", + colOrderUnit: "Zamówienie ({{unit}})", + colShipUnit: "Wysyłka ({{unit}})", + colBoardsOrder: "Deski / zamówienie", + colOrderM: "Zamówienie (min)", + colUnloadM: "Rozładunek (min)", + colOrder: "Zamówienie", + colShipping: "Wysyłka", + colOrderMin: "Zamówienie (min)", + colUnloadMin: "Rozładunek (min)", + colProcess: "Proces", + colTimeM: "Czas (min)", + colBoardsRun: "Deski / przebieg", + colRateHr: "Stawka/godz. (0 = warsztat)", + colRateHrShort: "Stawka/godz.", + colScrapPct: "Odpady %", + colTimeMin: "Czas (min)", + colPackaging: "Pakowanie", + colTimeBoardM: "Czas/deska (min)", + colTimeBoardMin: "Czas/deska (min)", + colMaterialsBoardUnit: "Materiały/deska ({{unit}})", + colMaterialsBoard: "Materiały/deska", + equipmentPerBoard: "Sprzęt na deskę:", + materialsPerBoard: "Materiały na deskę:", + processesPerBoard: "Procesy na deskę:", + packagingPerBoard: "Pakowanie na deskę:", + perBoard: "Na deskę:", + addEquipment: "Dodaj sprzęt", + addMaterial: "Dodaj materiał", + addProcess: "Dodaj proces", + addPackagingStep: "Dodaj krok pakowania", + duplicate: "Duplikuj", + remove: "Usuń", + boardsPerMonth: "Deski / miesiąc", + rentPerMonth: "Czynsz / miesiąc", + utilitiesPerMonth: "Media / miesiąc", + subscriptionsPerMonth: "Subskrypcje / miesiąc", + markup: "Narzut (×)", + wholesaleMarkup: "Narzut hurtowy (×)", + scrapWaste: "Odpady / straty (%)", + quantityDecks: "Ilość (decki)", + targetMonthlyProfit: "Docelowy miesięczny zysk ({{unit}})", + costNoPackaging: "Koszt / deska (bez pakowania)", + costWithPackaging: "Koszt / deska (z pakowaniem)", + batchSetupHours: "Konfiguracja partii (godz. / przebieg)", + batchSetupCost: "Koszt konfiguracji partii ({{unit}} / przebieg)", + taxVat: "Podatek / VAT (%)", + quoteTax: "Podatek w ofercie", + includedInPrice: "Wliczony w cenę", + addedOnTop: "Doliczany", + setupPerBoard: "Konfiguracja / deska", + marginNoteBefore: "Narzut {{markup}}× ≈ ", + grossMargin: "{{pct}}% marży brutto", + marginNoteAfter: " · odpady {{waste}}% rozkładają się na dobre deski.", + sellingPriceNoPackaging: "Cena sprzedaży · bez pakowania", + sellingPriceWithPackaging: "Cena sprzedaży · z pakowaniem", + profitPerDeck: "Zysk / deck", + wholesalePerDeck: "Hurt / deck", + orderTotalQty: "Suma zamówienia ({{qty}})", + orderTotal: "Suma zamówienia", + breakeven: "Próg rentowności", + breakevenPerMonth: "{{count}}/mies.", + targetDecksHint: "Aby wypracować {{amount}}/miesiąc ponad koszty stałe, sprzedawaj {{decks}} decków/miesiąc.", + priceIncludesTax: "Cena zawiera {{pct}}% podatku: {{amount}} z sumy.", + plusTax: "Plus {{pct}}% podatku: {{amount}} → {{total}} razem.", + costVsQuantity: "Koszt a ilość (konfiguracja amortyzowana)", + deckOne: "deck", + deckOther: "decki", + perDeckSuffix: "/ deck", + orderSuffix: "zamówienie {{amount}}", + shippingNotIncluded: "Nie obejmuje wysyłki do kupującego.", + clientQuoteDetails: "Szczegóły oferty dla klienta (do PDF)", + fillFromProfileTitle: "Wypełnij nazwę, stronę, NIP-05, Lightning i npub z profilu Nostr", + fillFromProfile: "Wypełnij z profilu", + businessName: "Nazwa firmy / sklepu", + email: "E-mail", + phone: "Telefon", + website: "Strona internetowa", + address: "Adres", + quoteNumber: "Nr oferty", + nextNumber: "Następny numer", + validDays: "Ważna (dni)", + nip05: "NIP-05", + lightningAddress: "Adres Lightning", + nostrNpub: "Nostr (npub)", + depositPct: "Zaliczka z góry (%)", + deliveryTerms: "Warunki dostawy (Incoterm, opcjonalnie)", + paymentMethods: "Metody płatności", + paymentTerms: "Warunki płatności", + paymentDetails: "Szczegóły płatności", + notesTerms: "Uwagi / warunki", + changeLogo: "Zmień logo", + addLogo: "Dodaj logo", + incotermNone: "Brak", + incotermExw: "EXW — odbiór u sprzedawcy", + incotermFca: "FCA — przekazane przewoźnikowi kupującego", + incotermDap: "DAP — dostarczone na adres kupującego", + incotermDdp: "DDP — dostarczone, cła opłacone", + payMethodCash: "Gotówka", + payMethodLightning: "Lightning", + payMethodCashu: "Cashu", + payMethodBank: "Przelew bankowy", + payMethodCard: "Karta", + payMethodOther: "Inne", + listDeckAtPrice: "Wystaw deck w tej cenie", + getItMade: "Zamów wykonanie — znajdź wykonawcę", + savePreset: "Zapisz preset", + load: "Wczytaj", + export: "Eksportuj", + import: "Importuj", + reset: "Resetuj", + deletePreset: "Usuń preset", + exportPdfFull: "PDF — pełny arkusz", + exportPdfQuote: "PDF — oferta dla klienta", + exportPng: "Obraz PNG", + exportXlsx: "Skoroszyt XLSX", + exportCsv: "CSV (arkusz kalkulacyjny)", + exportMarkdown: "Markdown", + exportJson: "JSON (kopia)", + exportCopySummary: "Kopiuj podsumowanie" + }, + becomeRolesUi: { + artist: { + seoTitle: "Zostań projektantem / artystą - SkateSpots", + seoDescription: "Wystaw swój design i sztukę skate — grafiki na decki, loga, plakaty, merch i więcej.", + heading: "Projektant / Artysta", + tagline: "Grafiki na decki, loga, plakaty, merch — pokaż swoją sztukę w scenie", + noun: "artysta", + rateLabel: "Stawka", + portfolioLabel: "Link do portfolio / sklepu", + sectionWhatYouMake: "Co tworzysz", + sectionMedium: "Medium", + sectionSoftwareTools: "Oprogramowanie i narzędzia", + deliverablesPlaceholder: "np. pliki gotowe do druku, pliki źródłowe, grafiki na decki", + turnaroundPlaceholder: "np. 3–5 dni" + }, + graffiti: { + seoTitle: "Oferuj graffiti / murale - SkateSpots", + seoDescription: "Wystaw swoje graffiti i murale — pieces, murale, sztuka do skateparku i więcej.", + heading: "Artysta graffiti / murali", + tagline: "Pieces, murale, sztuka do skateparku — pomaluj scenę", + noun: "artysta graffiti", + rateLabel: "Stawka", + portfolioLabel: "Link do portfolio (IG, strona)", + sectionStyle: "Styl", + sectionMedium: "Medium", + sectionWorkContext: "Kontekst pracy", + crewLabel: "Crew graffiti", + crewPlaceholder: "Twoja writing crew (opcjonalnie)", + crewHelper: "Oddzielnie od Twojej skate crew — writerzy, z którymi malujesz.", + surfacesPlaceholder: "np. beton, cegła, legalne ściany", + maxSizePlaceholder: "np. do 10 m" + }, + musician: { + seoTitle: "Dodaj profil muzyczny - SkateSpots", + seoDescription: "Skate'ujesz i tworzysz muzykę? Wystaw swój zespół lub projekt solowy — gatunki, instrumenty i linki.", + heading: "Muzyk / Zespół", + tagline: "Skate'ujesz i tworzysz muzykę? Daj się zaprosić na dema, jamy i aftery", + noun: "muzyk", + rateLabel: "Stawka za występ", + portfolioLabel: "Link do strony / EPK", + sectionGenre: "Gatunek", + sectionInstruments: "Instrumenty i rola", + actLabel: "Typ występu", + actPlaceholder: "solo / zespół / DJ / producent", + 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: "np. 30–45 min", + techRiderPlaceholder: "np. PA, mikrofony, backline" + }, + judge: { + seoTitle: "Zostań sędzią wydarzeń skate - SkateSpots", + seoDescription: "Wystaw się jako sędzia wydarzeń skate — Game of S.K.A.T.E., best trick jamy, contesty, serie am i przystanki world tour. Daj się zatrudnić do prowadzenia fair i wiarygodnych wydarzeń.", + heading: "Sędzia wydarzeń skate", + tagline: "Od flatgroundowego Game of S.K.A.T.E. po World Destruction Tour — prowadź fair i wiarygodnie", + noun: "sędzia", + rateLabel: "Stawka dzienna / honorarium", + portfolioLabel: "Archiwum wyników / link do profilu", + sectionEventFormats: "Formaty wydarzeń", + sectionSpecialty: "Specjalizacja", + sectionLevelCircuit: "Poziom / circuit", + eventsJudgedLabel: "Ocenione wydarzenia", + eventsJudgedPlaceholder: "np. 40+ contestów, 3 przystanki world tour", + eventsJudgedHelper: "Znaczące wydarzenia, compy lub trasy, które sędziowałeś.", + travelPlaceholder: "np. regionalnie / krajowo / międzynarodowo", + certificationsPlaceholder: "np. krajowy kurs sędziowski" + }, + organizer: { + seoTitle: "Organizuj wydarzenia skate - SkateSpots", + seoDescription: "Wystaw się jako organizator wydarzeń skate — street jamy, best trick, contesty, spotkania, dema i przystanki tras. Daj się odkryć i zatrudnić do poprowadzenia sesji.", + heading: "Organizator wydarzeń", + tagline: "Jamy, contesty, spotkania i dema — zrób sesję i połącz scenę", + noun: "organizator", + rateLabel: "Opłata za wydarzenie / budżet", + portfolioLabel: "Link do minionych wydarzeń / wyników", + sectionEventTypes: "Typy wydarzeń", + sectionWhatYouHandle: "Co ogarniasz", + sectionScale: "Skala", + eventsHostedLabel: "Zorganizowane wydarzenia", + eventsHostedPlaceholder: "np. 25 jamów, 3 miejskie compy", + eventsHostedHelper: "Znaczące wydarzenia, compy lub spotkania, które prowadziłeś.", + insurancePlaceholder: "np. OC w zakresie", + permitsPlaceholder: "np. pozwolenia miejskie załatwione" + }, + tattoo: { + seoTitle: "Zostań tatuażystą - SkateSpots", + seoDescription: "Wystaw swoje prace tatuażowe dla sceny skate — style, flash, custom i więcej.", + heading: "Tatuażysta", + tagline: "Ink dla sceny — flash, custom, fine line i więcej", + noun: "tatuażysta", + rateLabel: "Stawka / godzinowa", + portfolioLabel: "Link do portfolio (IG, strona)", + sectionStyles: "Style", + sectionMethod: "Metoda", + studioLabel: "Studio / sklep", + studioPlaceholder: "Nazwa studia (opcjonalnie)", + booksOpenLabel: "Zapisy otwarte", + booksOpenHelper: "Przyjmujesz teraz rezerwacje?", + depositPlaceholder: "np. 50 EUR bezzwrotna", + minimumPlaceholder: "np. 80 EUR" + }, + trainer: { + seoTitle: "Zostań trenerem / fizjoterapeutą - SkateSpots", + seoDescription: "Pomóż skaterom być silnymi i zdrowymi — siła, mobilność, profilaktyka urazów i regeneracja.", + heading: "Trener / Fizjoterapeuta", + tagline: "Siła, mobilność, profilaktyka urazów i regeneracja dla skaterów", + noun: "trener", + rateLabel: "Stawka / sesja", + portfolioLabel: "Link do profilu / rezerwacji", + sectionFocus: "Fokus", + sectionInjuries: "Urazy, z którymi pracujesz", + sectionCredentialsSetting: "Kwalifikacje i miejsce", + credentialsPlaceholder: "np. lic. fizjoterapii, CSCS…", + credentialsHelper: "Podaj prawdziwe kwalifikacje — skaterzy ufają weryfikowalnym kwalifikacjom.", + remoteLabel: "Zdalnie / online", + remoteHelper: "Oferujesz coaching online lub konsultacje?", + modalitiesPlaceholder: "np. praca manualna, S&C, suche igłowanie" + }, + barber: { + seoTitle: "Zostań barberem / fryzjerem - SkateSpots", + seoDescription: "Wystaw swój barbershop lub fotel dla sceny skate — strzyżenia, fade'y, brody, koloryzacja i więcej. Daj się rezerwować skaterom.", + heading: "Barber / Fryzjer", + tagline: "Cięcia, fade'y i brody dla sceny — fotel w sklepie lub mobilnie", + noun: "barber", + rateLabel: "Cena / strzyżenie", + portfolioLabel: "Galeria cięć / link IG", + sectionWhatYouOffer: "Co oferujesz", + sectionSignatureStyles: "Charakterystyczne style", + sectionSetting: "Miejsce", + studioLabel: "Sklep / studio", + studioPlaceholder: "Nazwa sklepu lub studia (opcjonalnie)", + booksOpenLabel: "Zapisy otwarte", + booksOpenHelper: "Przyjmujesz teraz rezerwacje?", + durationPlaceholder: "np. 30–45 min" + } + }, + weatherUi: { + condition: { + clearSky: "Bezchmurne niebo", + mainlyClear: "Przeważnie bezchmurnie", + partlyCloudy: "Częściowe zachmurzenie", + overcast: "Zachmurzenie całkowite", + foggy: "Mgliście", + depositingRimeFog: "Mgła osadzająca szadź", + lightDrizzle: "Lekka mżawka", + moderateDrizzle: "Umiarkowana mżawka", + denseDrizzle: "Gęsta mżawka", + lightFreezingDrizzle: "Lekka mżawka marznąca", + denseFreezingDrizzle: "Gęsta mżawka marznąca", + slightRain: "Słaby deszcz", + moderateRain: "Umiarkowany deszcz", + heavyRain: "Silny deszcz", + lightFreezingRain: "Słaby deszcz marznący", + heavyFreezingRain: "Silny deszcz marznący", + slightSnow: "Słaby śnieg", + moderateSnow: "Umiarkowany śnieg", + heavySnow: "Silny śnieg", + snowGrains: "Ziarna śniegu", + slightRainShowers: "Słabe przelotne deszcze", + moderateRainShowers: "Umiarkowane przelotne deszcze", + violentRainShowers: "Gwałtowne przelotne deszcze", + slightSnowShowers: "Słabe przelotne opady śniegu", + heavySnowShowers: "Silne przelotne opady śniegu", + thunderstorm: "Burza z piorunami", + thunderstormSlightHail: "Burza z lekkim gradem", + thunderstormHeavyHail: "Burza z silnym gradem", + unknown: "Nieznane" + }, + aqi: { + good: "Dobre", + moderate: "Umiarkowane", + unhealthySensitive: "Niezdrowe dla wrażliwych grup", + unhealthy: "Niezdrowe", + veryUnhealthy: "Bardzo niezdrowe", + hazardous: "Niebezpieczne" + }, + skateability: { + perfect: "Idealne", + good: "Dobre", + okay: "W porządku", + poor: "Słabe", + bad: "Złe", + unrideable: "Nie do jazdy" + }, + reason: { + currentlyRaining: "Obecnie pada", + raining: "Pada", + snowing: "Pada śnieg", + thunderstorm: "Burza z piorunami", + freezingTemperature: "Temperatura poniżej zera", + veryCold: "Bardzo zimno", + extremelyHot: "Ekstremalnie gorąco", + veryHot: "Bardzo gorąco", + veryStrongWind: "Bardzo silny wiatr", + strongWind: "Silny wiatr", + moderateWind: "Umiarkowany wiatr", + veryUnhealthyAir: "Bardzo niezdrowe powietrze", + unhealthyAir: "Niezdrowe powietrze", + moderateAirQuality: "Umiarkowana jakość powietrza", + veryHumid: "Bardzo wilgotno", + humid: "Wilgotno", + extremeUv: "Ekstremalny UV — używaj kremu z filtrem", + highUv: "Wysoki UV — zalecana ochrona przeciwsłoneczna", + perfectConditions: "Idealne warunki do jazdy" + } + }, + skaterLabelsUi: { + stance: { + regular: "Regular", + goofy: "Goofy" + }, + style: { + street: "Street", + park: "Park", + vert: "Vert", + transition: "Transition", + bowl: "Bowl", + cruising: "Cruising", + downhill: "Downhill", + freestyle: "Freestyle", + ledges: "Ledges", + stairs: "Stairs", + diy: "DIY" + }, + level: { + grom: "Grom", + intermediate: "Średniozaawansowany", + advanced: "Zaawansowany", + ripper: "Ripper" + }, + sponsor: { + title: "Sponsor tytularny", + gold: "Złoto", + silver: "Srebro", + partner: "Partner" + } + }, + notifyUi: { + activity: { + zappedWithAmount: "Dostałeś zapa {{sats}} sats", + zapped: "Dostałeś zapa", + liked: "Ktoś polubił Twój post", + reposted: "Ktoś zrobił repost Twojego posta", + mentioned: "Ktoś wspomniał o Tobie", + replied: "Ktoś odpowiedział Ci", + rsvp: "Ktoś potwierdził udział w Twoim wydarzeniu", + eventUpdated: "Wydarzenie, w którym bierzesz udział, zostało zaktualizowane", + newActivity: "Nowa aktywność", + tapToOpen: "Dotknij, aby otworzyć SkateSpots" + }, + crew: { + inviteTitle: "Zaproszenie do Crew", + inviteBody: "Masz zaproszenie do {{crew}}", + addedTitle: "Dodano Cię do Crew", + addedBody: "{{crew}} — potwierdź, aby dołączyć", + joinRequestTitle: "Prośba o dołączenie", + joinRequestBody: "Ktoś chce dołączyć do {{name}}" + }, + dm: { + title: "Nowa wiadomość prywatna", + body: "Dotknij, aby przeczytać" + }, + trade: { + confirm: "Potwierdź wymianę", + confirmed: "Wymiana potwierdzona", + newOffer: "Nowa oferta na Twoim ogłoszeniu", + counter: "Kontroferta", + accepted: "Oferta przyjęta 🎉", + declined: "Oferta odrzucona", + withdrawn: "Oferta wycofana" + }, + newsletter: { + drop: "Nowy drop SkateSpots" + }, + summary: { + moreUpdates: "{{count}} więcej aktualizacji", + openToCatchUp: "Otwórz SkateSpots, aby nadrobić" + } + }, + legacyMiscUi: { + hostingGoing: "{{count}} idzie", + hostingInterested: "{{count}} zainteresowanych", + hostingPostUpdate: "Opublikuj aktualizację", + hostingEdit: "Edytuj", + hostingLoginToSee: "Zaloguj się, aby zobaczyć wydarzenia, które organizujesz.", + hostingEmptyTitle: "Jeszcze nic nie organizujesz", + hostingEmptyBody: "Zrób jama, compa lub sesję. Utwórz wydarzenie, a skaterzy będą mogli potwierdzić udział, dostawać aktualizacje i wpaść.", + hostingCreateEvent: "Utwórz wydarzenie", + hostingUpcoming: "Nadchodzące · {{count}}", + hostingPast: "Minione · {{count}}", + sponsorPartners: "Partnerzy", + sponsorTitleSponsor: "Sponsor tytularny", + sponsorPlatformPartners: "Partnerzy platformy", + reportsUntitled: "(bez tytułu)", + reportsResolveFailed: "Nie udało się rozwiązać zgłoszonego wydarzenia (mogło zostać usunięte lub zgłoszenie dotyczy profilu, a nie posta).", + reportsLookAtIt: "Zobacz", + reportsNoReports: "Brak zgłoszeń. Albo wszystko jest w porządku, albo nikt nie znalazł przycisku.", + statusSetYourStatus: "Ustaw swój status", + statusSetDesc: "Daj innym znać, co robisz. Twój status będzie widoczny w profilu i w powiązanych Spotach.", + statusClear: "Wyczyść", + statusOrWriteOwn: "Albo napisz własny", + statusCustomPlaceholder: "Co robisz?", + statusLinkToSpot: "Powiąż ze Spotem (opcjonalnie)", + statusSpotSelected: "Spot wybrany", + statusSearchSpots: "Szukaj Spotów...", + statusNoSpotsFound: "Nie znaleziono Spotów.", + statusSelectSpot: "Wybierz Spot", + statusAutoClearAfter: "Automatyczne wyczyszczenie po: {{time}}", + statusExpMin: "{{count}} min", + statusExpOneHour: "1 godzina", + statusExpHours: "{{count}} godz.", + statusExpOneDay: "1 dzień", + statusExpDays: "{{count}} dni", + statusSlider15: "15 min", + statusSlider1h: "1 godz.", + statusSlider4h: "4 godz.", + statusSlider24h: "24 godz.", + statusSetting: "Ustawianie statusu...", + statusSet: "Ustaw status", + statusSomethingWrong: "Coś poszło nie tak", + seoProfileTitle: "Profil - SkateSpots", + seoViewProfile: "Zobacz profil.", + bannerAlt: "Baner", + openInCordn: "Otwórz w Cordn", + modHelp: "Ukryj publikuje org.skatespots.moderation / hidden; Potwierdź publikuje … / verified; Cofnij publikuje … / cleared (powrót do neutralnego). Wszystkie trzy to publiczne, odwracalne etykiety — nic nigdy nie jest usuwane z relayów.", + zapNoActiveMint: "Nie znaleziono aktywnej mennicy Cashu.", + altProfile: "Profil", + altCardPreview: "Podgląd karty", + altCard: "Karta", + altCaptured: "Przechwycono", + ariaPrevPhoto: "Poprzednie zdjęcie", + ariaNextPhoto: "Następne zdjęcie", + ariaCommentOptions: "Opcje komentarza", + ariaMessageConversation: "Rozmowa w wiadomościach", + exportTitle: "SkateSpots — kalkulator kosztu decku", + exportQuoteTitle: "OFERTA", + exportPngTitle: "Koszt decku", + exportMarkdownTitle: "Kalkulator kosztu decku", + exportSectionLabor: "Robocizna", + exportSectionEquipment: "Sprzęt", + exportSectionOperations: "Koszty operacyjne", + exportSectionMaterials: "Materiały", + exportSectionProcesses: "Koszty procesów", + exportSectionPackaging: "Pakowanie", + exportSectionResult: "Wynik", + exportLabelOperations: "Operacje", + exportLabelProcesses: "Procesy", + exportKvHourlyRate: "Stawka godzinowa", + exportKvLabourBurden: "Obciążenia pracy", + exportKvLoadedRate: "Stawka z obciążeniami", + exportKvEquipmentPerBoard: "Sprzęt na deskę", + exportKvBoardsPerMonth: "Deski / miesiąc", + exportKvRentPerMonth: "Czynsz / miesiąc", + exportKvUtilitiesPerMonth: "Media / miesiąc", + exportKvSubscriptionsPerMonth: "Subskrypcje / miesiąc", + exportKvPerBoard: "Na deskę", + exportKvMaterialsPerBoard: "Materiały na deskę", + exportKvProcessesPerBoard: "Procesy na deskę", + exportKvPackagingPerBoard: "Pakowanie na deskę", + exportKvMarkup: "Narzut", + exportMarkupValue: "{{markup}}× (≈ {{pct}}% marży brutto)", + exportKvWasteEffective: "Odpady (efektywne)", + exportKvCostNoPack: "Koszt / deska (bez pakowania)", + exportKvCostWithPack: "Koszt / deska (z pakowaniem)", + exportKvBatchSetupPerBoard: "Konfiguracja partii / deska", + exportKvTax: "Podatek ({{pct}}%)", + exportKvTaxIncluded: "Podatek ({{pct}}%, wliczony)", + exportKvSellingNoPack: "Cena sprzedaży (bez pakowania)", + exportKvSellingWithPack: "Cena sprzedaży (z pakowaniem)", + exportShippingNote: "Nie obejmuje wysyłki do kupującego.", + exportGeneratedBy: "Wygenerowano w SkateSpots · skate-spots.org", + exportGeneratedWith: "Wygenerowano w SkateSpots · skate-spots.org", + exportDetailSetup: "+ {{hours}} godz. konfiguracji", + exportDetailBoards: "{{boards}} desek", + exportDetailShip: "+ {{amount}} wysyłka", + exportDetailMinutes: "{{minutes}} min", + exportDetailPerBoards: "/ {{boards}} desek", + exportDetailScrap: "{{pct}}% odpadów", + exportDetailMaterials: "{{materials}} materiałów", + exportQuoteRef: "Nr {{ref}}", + exportQuoteLineItem: "Niestandardowy deck skateboardowy", + exportQuoteLineItemQty: "Niestandardowy deck skateboardowy × {{qty}}", + exportQuoteLineDesc: "Ręcznie wykonany, wykończony i zapakowany. Ilość 1.", + exportQuoteLineDescQty: "Ręcznie wykonany, wykończony i zapakowany. {{price}} za sztukę.", + exportQuoteSubtotal: "Suma częściowa", + exportQuoteSubtotalQty: "Suma częściowa ({{qty}} decków)", + exportQuoteTax: "Podatek / VAT ({{pct}}%)", + exportQuoteTotal: "Razem", + exportQuoteTotalQty: "Razem ({{qty}} decków)", + exportQuoteIncludesTax: "Zawiera {{pct}}% podatku ({{amount}})", + exportQuoteDeposit: "Zaliczka do zapłaty teraz ({{pct}}%)", + exportQuoteBalance: "Reszta przy odbiorze", + exportQuotePayment: "Płatność: {{value}}", + exportQuoteLightning: "Lightning: {{value}}", + exportQuoteDetails: "Szczegóły: {{value}}", + exportQuoteTerms: "Warunki: {{value}}", + exportQuoteDelivery: "Dostawa: {{value}}", + exportQuoteValidUntil: "Nie obejmuje wysyłki. Oferta ważna do {{date}}.", + exportPngSellingWith: "CENA SPRZEDAŻY · Z PAKOWANIEM", + exportPngSellingNo: "CENA SPRZEDAŻY · BEZ PAKOWANIA", + exportPngCostWith: "KOSZT / DESKA (Z PAKOWANIEM)", + exportPngDeposit: "Zaliczka {{pct}}%: {{amount}}", + exportXlsxSummary: "Podsumowanie", + exportXlsxCurrency: "Waluta", + exportXlsxDate: "Data", + exportXlsxOperationsPerBoard: "Operacje na deskę", + exportColCost: "Koszt", + exportColSetupH: "Konfiguracja (godz.)", + exportColBoards: "Deski", + exportColPerBoard: "Na deskę", + exportColMaterial: "Materiał", + exportColOrderCost: "Koszt zamówienia", + exportColShipping: "Wysyłka", + exportColOrderMin: "Zamówienie (min)", + exportColUnloadMin: "Rozładunek (min)", + exportColProcess: "Proces", + exportColTimeMin: "Czas (min)", + exportColTimeBoardMin: "Czas/deska (min)", + exportColMaterialsBoard: "Materiały/deska", + exportCopyTitle: "Koszt decku — {{currency}}", + exportCopyCostWith: "Koszt / deska (z pakowaniem): {{amount}}", + exportCopySellingNo: "Cena sprzedaży (bez pakowania): {{amount}}", + exportCopySellingWith: "Cena sprzedaży (z pakowaniem): {{amount}}", + exportCopyBreakdown: "Sprzęt {{equipment}} · Operacje {{operations}} · Materiały {{materials}} · Procesy {{processes}} · Pakowanie {{packaging}}", + exportMdHourlyRate: "Stawka godzinowa: {{value}}", + exportMdLabourBurden: "Obciążenia pracy: {{value}}", + exportMdLoadedRate: "Stawka z obciążeniami: {{value}}", + exportMdBoardsPerMonth: "Deski/miesiąc: {{value}}", + exportMdRent: "Czynsz: {{value}}", + exportMdUtilities: "Media: {{value}}", + exportMdSubscriptions: "Subskrypcje: {{value}}", + exportMdPerBoard: "Na deskę: {{value}}", + exportMdMarkupWaste: "Narzut: {{markup}}× (≈ {{pct}}% marży brutto) · Odpady: {{waste}}%", + exportMdCostNoPack: "Koszt/deska (bez pakowania): {{value}}", + exportMdCostWithPack: "Koszt/deska (z pakowaniem): {{value}}", + exportMdBatchSetup: "Konfiguracja partii/deska: {{value}}", + exportMdSellingNo: "Cena sprzedaży (bez pakowania): {{value}}", + exportMdSellingWith: "Cena sprzedaży (z pakowaniem): {{value}}", + exportMdDisclaimer: "Nie obejmuje wysyłki do kupującego. Wygenerowano w SkateSpots." + } +}; export default plBatch8;