From 2d656e52696338470248b6f4e1207d0b6c55f81a Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Thu, 8 Oct 2026 17:18:03 +0700 Subject: [PATCH] i18n(ro): complete Romanian (100%) + add to picker --- src/components/LanguageToggle.tsx | 1 + src/i18n/ro/batch1.ts | 289 ++++- src/i18n/ro/batch3.ts | 76 +- src/i18n/ro/batch5.ts | 1603 ++++++++++++++++++++++- src/i18n/ro/batch6.ts | 1968 ++++++++++++++++++++++++++++- src/i18n/ro/batch7.ts | 909 ++++++++++++- src/i18n/ro/batch8.ts | 629 ++++++++- src/pages/CreateTourPage.tsx | 1 + 8 files changed, 5428 insertions(+), 48 deletions(-) diff --git a/src/components/LanguageToggle.tsx b/src/components/LanguageToggle.tsx index 86b476b..45ddf18 100644 --- a/src/components/LanguageToggle.tsx +++ b/src/components/LanguageToggle.tsx @@ -32,6 +32,7 @@ const languages: LanguageOption[] = [ { code: 'ja', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵' }, { code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文', flag: '🇨🇳' }, { code: 'zh-TW', name: 'Chinese (Traditional)', nativeName: '繁體中文', flag: '🇹🇼' }, + { code: 'ro', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴' }, { code: 'sv', name: 'Swedish', nativeName: 'Svenska', flag: '🇸🇪' }, { code: 'el', name: 'Greek', nativeName: 'Ελληνικά', flag: '🇬🇷' }, { code: 'vi', name: 'Vietnamese', nativeName: 'Tiếng Việt', flag: '🇻🇳' }, diff --git a/src/i18n/ro/batch1.ts b/src/i18n/ro/batch1.ts index 57d73f1..1169246 100644 --- a/src/i18n/ro/batch1.ts +++ b/src/i18n/ro/batch1.ts @@ -1,4 +1,289 @@ -/** ro — batch 1. Filled by the translation pass; empty until then. */ -const roBatch1 = {}; +const roBatch1 = { + common: { + loading: "Se încarcă...", + error: "Eroare", + save: "Salvează", + cancel: "Anulează", + delete: "Șterge", + edit: "Editează", + add: "Adaugă", + remove: "Elimină", + create: "Creează", + submit: "Trimite", + close: "Închide", + back: "Înapoi", + next: "Următorul", + done: "Gata", + search: "Caută", + filter: "Filtrează", + sort: "Sortează", + share: "Distribuie", + more: "Mai multe", + copy: "Copiază", + copied: "Copiat!", + viewAll: "Vezi tot", + seeMore: "Vezi mai multe", + showMore: "Arată mai multe", + showLess: "Arată mai puțin", + noResults: "Nu s-au găsit rezultate", + tryAgain: "Încearcă din nou", + learnMore: "Află mai multe", + getStarted: "Începe", + yes: "Da", + no: "Nu", + or: "sau", + and: "și", + free: "Gratuit", + new: "Nou", + popular: "Popular", + featured: "Recomandat", + verified: "Verificat", + sats: "sats", + clear: "Golește", + clearFilters: "Golește filtrele", + clearAll: "Golește tot", + hide: "Ascunde", + undo: "Anulează", + }, + nav: { + home: "Acasă", + map: "Spots", + lab: "The Lab", + events: "Evenimente", + crews: "Crews", + wallet: "Portofel", + settings: "Setări", + more: "Mai multe", + rewards: "Recompense", + stats: "Statistici comunitate", + about: "Despre", + food: "Mâncare", + marketplace: "Marketplace", + mints: "Mints", + appShop: "App Shop", + diy: "DIY", + trades: "Marketplace", + stash: "Stash", + collections: "Colecții", + contacts: "Contacte", + messages: "Mesaje", + skaters: "Skateri", + glossary: "Glosar", + riderCard: "Rider Card", + supporters: "Susținători ⚡", + newsletter: "Newsletter", + viewProfile: "Vezi profilul", + leaderboards: "Clasamente", + }, + chromeUi: { + skipToContent: "Sari la conținut", + menu: "Meniu", + inBadge: "În", + loggedIn: "Conectat", + profile: "Profil", + logIn: "Conectează-te", + logOut: "Deconectează-te", + notLoggedIn: "Neconectat", + loggedOutPrompt: "Conectează-te pentru a adăuga spoturi, a trimite Zap skaterilor și a-ți salva favoritele", + accounts: "Conturi", + addAnotherAccount: "Adaugă un alt cont", + setStatus: "Setează statusul", + setYourStatus: "Setează-ți statusul", + status: "Status", + addSpot: "Adaugă spot", + myData: "Datele mele", + myStash: "Stash-ul meu", + myCollections: "Colecțiile mele", + viewMyProfile: "Vezi profilul meu", + customizeNavBar: "Personalizează bara de navigare", + ecash: "Ecash", + madeWith: "Creat cu", + forSkateCommunity: "pentru comunitatea de skateboarding", + beta: "Beta", + license: "Licență", + privacy: "Confidențialitate", + collaborators: "Colaboratori și prieteni", + notSponsoredBy: "Nu este sponsorizat de", + errorTitle: "Nu s-a putut încărca", + errorDescription: "Cererea de rețea a eșuat. Verifică conexiunea și încearcă din nou.", + tryAgain: "Încearcă din nou", + weatherOn: "Vremea pornită", + weatherOff: "Vremea oprită", + trustFilter: "Filtru de încredere", + filterByTrustLevel: "Filtrează după nivelul de încredere", + trust: { + all: "Toți utilizatorii", + allDesc: "Arată conținut de la toată lumea", + verified: "Verificat", + verifiedDesc: "Îi urmărești sau sunt verificați (încredere ≥90)", + trusted: "De încredere", + trustedDesc: "Prieteni ai prietenilor sau verificați prin NIP-05 (încredere ≥60)", + following: "Doar cei urmăriți", + followingDesc: "Arată doar conținut de la persoanele pe care le urmărești", + followingShort: "Urmăriți", + }, + sort: { + recent: "Cele mai recente", + recentDesc: "Cele mai noi primele", + trust: "Cea mai mare încredere", + trustDesc: "Creatorii cei mai de încredere", + proximity: "Cel mai aproape de mine", + proximityDesc: "Locațiile cele mai apropiate", + popular: "Cele mai populare", + popularDesc: "Cele mai multe comentarii/reacții", + zaps: "Cele mai multe Zap-uri", + zapsDesc: "Cea mai mare valoare primită", + }, + spotType: { + street: "Street", + transition: "Transition", + park: "Park", + plaza: "Plaza", + diy: "DIY", + bowl: "Bowl", + vert: "Vert", + indoor: "Indoor", + skatepark: "Skatepark", + miniramp: "Mini Ramp", + }, + }, + desktopNav: { + title: "Navigare desktop", + desc: "Alege ce file apar în bara de sus și ordinea lor. Filele ascunse rămân în meniul „Mai multe”.", + fixed: "Fix", + shownInTopBar: "Afișate în bara de sus ({{count}})", + noExtraTabs: "Nu sunt afișate file suplimentare — totul este în meniul „Mai multe”. Adaugă câteva mai jos.", + inMoreMenu: "În meniul „Mai multe” ({{count}})", + moveUp: "Mută {{name}} în sus", + moveDown: "Mută {{name}} în jos", + hide: "Ascunde {{name}}", + moveToMore: "Mută în meniul Mai multe", + show: "Arată", + showInTopBar: "Arată {{name}} în bara de sus", + showInTopBarTitle: "Arată în bara de sus", + reset: "Resetează la valorile implicite", + }, + navSheet: { + title: "Personalizează-ți bara", + desc: "Alege cele {{count}} file pe care le folosești cel mai des. Restul rămân în meniu.", + preview: "Previzualizare", + empty: "Gol", + order: "Ordine ({{done}}/{{total}})", + available: "File disponibile", + full: "Bara este plină — elimină una pentru a schimba", + moveUp: "Mută {{name}} în sus", + moveDown: "Mută {{name}} în jos", + login: "Conectează-te", + profile: "Profil", + reset: "Resetează", + done: "Gata", + }, + pwa: { + installTitle: "Instalează SkateSpots", + installSubtitle: "Obține experiența completă a aplicației", + addToHomeScreen: "Adaugă pe ecranul principal", + installApp: "Instalează aplicația", + maybeLater: "Poate mai târziu", + gotIt: "Am înțeles!", + benefits: { + fast: "Ultrarapid", + offline: "Funcționează offline", + fullAccess: "Acces complet", + }, + iosStep1: "Atinge butonul Distribuie", + iosStep1Hint: "în partea de jos a Safari", + iosStep2: "Derulează și atinge \"Adaugă pe ecranul principal\"", + iosStep2Hint: "în meniul de distribuire", + iosStep3: "Atinge \"Adaugă\" pentru a instala", + iosStep3Hint: "Aplicația va apărea pe ecranul principal", + androidStep1: "Atinge butonul de meniu", + androidStep1Hint: "(trei puncte) din browser", + androidStep2: "Selectează \"Adaugă pe ecranul principal\"", + androidStep2Hint: "sau \"Instalează aplicația\"", + androidStep3: "Confirmă pentru a instala", + androidStep3Hint: "Aplicația va apărea pe ecranul principal", + tagline: "Gratuit • Funcționează offline • Rapid și fiabil", + }, + home: { + tagline: "Susținut de comunitate • Bazat pe Relay", + title: "SKATE SPOTS", + subtitle: "Descoperă spoturi • Întâlnește-te • Învață trick-uri • Susține localnicii", + description: "Skateboardingul adevărat se întâmplă offline - acest instrument te ajută să-l găsești.", + betaWarning: "BETA - În construcție • Folosește pe propriul risc", + pwaHint: "Aplicație web progresivă - Instalează pe dispozitivul tău", + exploreMap: "Explorează harta", + addSpot: "Adaugă spot", + globalSpots: "Spoturi globale", + openCommunity: "Comunitate deschisă", + lightningZaps: "Zap-uri Lightning", + featuredSpots: "Spoturi recomandate", + featuredSpotsDesc: "Spoturi de skate verificate de comunitate din întreaga lume", + upcomingEvents: "Evenimente viitoare", + upcomingEventsDesc: "Concursuri, întâlniri și sesiuni care au loc în curând", + noSpotsYet: "Nu s-au găsit încă spoturi", + noSpotsHint: "Fii primul care adaugă un spot de skate!", + noEventsYet: "Nu sunt evenimente viitoare", + noEventsHint: "Revino mai târziu sau creează unul!", + theLab: "The Lab", + theLabDesc: "Învață trick-uri, găsește instructori și avansează în skateboardingul tău", + coaches: "Instructori", + coachesDesc: "Învață de la skateri experimentați care te pot ajuta să progresezi", + filmers: "Filmers", + filmersDesc: "Conectează-te cu filmers pentru a-ți captura cele mai bune clipuri", + findCoach: "Găsește un instructor", + becomeCoach: "Devino instructor", + findFilmer: "Găsește un filmer", + becomeFilmer: "Devino filmer", + viewAllSpots: "Vezi toate spoturile", + viewAllEvents: "Vezi toate evenimentele", + createEvent: "Creează eveniment", + readyToShare: "Gata să distribui?", + readyToShareDesc: "Ajută comunitatea de skateboarding să crească adăugând spoturile tale preferate. Fiecare locație pe care o distribui îi ajută pe ceilalți skateri să descopere locuri noi de mers.", + }, + about: { + title: "Despre SkateSpots", + subtitle: "O comunitate de skateboarding descentralizată", + whatIs: "Ce este SkateSpots?", + whatIsDesc: "SkateSpots este o platformă susținută de comunitate pentru descoperirea locurilor de skateboarding din întreaga lume. Construită pe Nostr, le oferă skaterilor adevărata proprietate asupra datelor lor.", + features: "Funcționalități", + featuresDesc: "Găsește spoturi, creează evenimente, conectează-te cu instructori și susține magazinele locale de skate — toate într-un singur loc.", + nostr: "Construit pe Nostr", + nostrDesc: "Nostr este un protocol simplu și deschis care permite o comunicare globală cu adevărat rezistentă la cenzură. Contul și datele tale îți aparțin.", + openSource: "Sursă deschisă", + openSourceDesc: "SkateSpots este complet cu sursă deschisă. Contribuie, creează o bifurcație sau rulează propria versiune.", + lightning: "Plăți Lightning", + lightningDesc: "Trimite Zap-uri skaterilor, instructorilor și creatorilor de conținut preferați cu plăți Bitcoin Lightning.", + }, + faq: { + title: "Întrebări frecvente", + subtitle: "Tot ce trebuie să știi despre SkateSpots", + whatIsNostr: "Ce este Nostr?", + whatIsNostrAnswer: "Nostr este un protocol deschis pentru rețelistică socială descentralizată. Spre deosebire de platformele tradiționale, tu deții datele și identitatea ta.", + howToStart: "Cum încep?", + howToStartAnswer: "Apasă \"Înregistrează-te\" pentru a crea un cont Nostr nou sau \"Conectează-te\" dacă ai deja unul. Poți folosi o extensie de browser, o aplicație mobilă sau o cheie secretă.", + whatAreZaps: "Ce sunt Zap-urile?", + whatAreZapsAnswer: "Zap-urile sunt bacșișuri Bitcoin Lightning pe care le poți trimite altor utilizatori. Sunt o modalitate de a-ți arăta aprecierea pentru conținut bun sau de a susține creatorii.", + howToAddSpot: "Cum adaug un spot?", + howToAddSpotAnswer: "Conectează-te la contul tău, apasă \"Adaugă spot\" și completează detaliile inclusiv locația, fotografiile și descrierea.", + isItFree: "SkateSpots este gratuit?", + isItFreeAnswer: "Da! SkateSpots este complet gratuit de utilizat. Opțional, poți trimite Zap-uri (bacșișuri Bitcoin) altor utilizatori.", + canIEditSpot: "Pot să-mi editez sau să-mi șterg spoturile?", + canIEditSpotAnswer: "Da, poți edita spoturile pe care le-ai creat. Datorită naturii descentralizate a Nostr, cererile de ștergere sunt trimise, dar unele Relay-uri pot păstra datele.", + }, + onboarding: { + welcome: "Bine ai venit la SkateSpots!", + welcomeDesc: "Hai să te configurăm în doar câțiva pași.", + step1Title: "Creează-ți contul", + step1Desc: "Cheile tale Nostr sunt generate. Aceasta este ca o parolă pe care o controlezi.", + step2Title: "Fă o copie de siguranță a cheilor", + step2Desc: "Salvează fraza de recuperare într-un loc sigur. Este singura modalitate de a-ți recupera contul!", + step3Title: "Configurează-ți profilul", + step3Desc: "Spune comunității despre tine.", + step4Title: "Ești gata!", + step4Desc: "Începe să explorezi spoturi, evenimente și să te conectezi cu skateri.", + skipForNow: "Sari peste deocamdată", + continueToApp: "Continuă către aplicație", + }, +}; export default roBatch1; diff --git a/src/i18n/ro/batch3.ts b/src/i18n/ro/batch3.ts index 40d081e..99c2080 100644 --- a/src/i18n/ro/batch3.ts +++ b/src/i18n/ro/batch3.ts @@ -7,7 +7,7 @@ const roBatch3 = { prepaidTitle: "Preplătit, nu un abonament", prepaidBody: "Fiecare achiziție este o plată unică în Bitcoin/Lightning — fără cont, fără taxă recurentă, fără custodie. Dacă plătești din nou, îți prelungești perioada.", sasquatchTitle: "Sasquatch Pro", - sasquatchBenefit: "Deblochează asistentul AI personal — poate citi propriul tău Stash, echipajele și anunțurile tale — și ajută la finanțarea proiectului.", + sasquatchBenefit: "Deblochează asistentul AI personal — poate citi propriul tău Stash, Crew-urile și anunțurile tale — și ajută la finanțarea proiectului.", active: "Activ", activeUntil: "Activ până la {{date}}", daysLeft: "{{count}} zile rămase", @@ -16,7 +16,7 @@ const roBatch3 = { extend: "Prelungește Pro", day: "zi", featuredTitle: "Plasare promovată", - featuredBenefit: "Împinge un anunț în top cu un badge Pro — pentru profiluri Lab, evenimente, magazine și tururi.", + featuredBenefit: "Împinge un anunț în top cu un badge Pro — pentru profiluri Lab, evenimente, Shop-uri și tururi.", featuredHow: "Nivelurile de durată se aplică pentru fiecare tip; angajamentele mai lungi costă mai puțin pe zi. Promovezi un anunț atunci când îl creezi sau îl editezi.", featuredUntil: "Până la {{date}}", yourFeatured: "Anunțurile tale promovate", @@ -189,7 +189,7 @@ const roBatch3 = { changeAnytime: "Îl poți schimba oricând mai târziu. Biografia și avatarul sunt opționale.", publishingProfile: "Se publică profilul tău...", displayName: "Nume de afișare", - displayNamePlaceholder: "de ex. Tony, gnarlyGrind, sau numele echipajului tău", + displayNamePlaceholder: "de ex. Tony, gnarlyGrind, sau numele Crew-ului tău", displayNameHint: "Necesar — cum vei apărea în tot SkateSpots. Schimbă-l oricând.", skateName: "Numele tău SkateSpots", skateNameHint: "Gratuit și opțional — un handle verificat care afișează un ✓ pe profilul tău.", @@ -364,7 +364,7 @@ const roBatch3 = { nofferOk: "Valid — un buton „Ciupeală în Bitcoin” va apărea pe profilul tău.", nofferHint: "Cod CLINK auto-custodiat, astfel încât oricine te poate ciupli prin Nostr — fără intermediari.", skateProfileTitle: "Profil de skate", - skateProfileDesc: "Sponsorii tăi și modul în care echipajul te contactează.", + skateProfileDesc: "Sponsorii tăi și modul în care Crew-ul te contactează.", badges: "Insigne", badgesHint: "(etichetă + link opțional)", badgeExample: "de ex. Independent Trucks", @@ -372,7 +372,7 @@ const roBatch3 = { badgeUrlPlaceholder: "https://… (opțional)", removeBadge: "Elimină insigna", addBadge: "Adaugă insignă", - badgesDescBefore: "Sponsori, magazine sau oameni care îți susțin skateboardingul — și orice altceva vrei să arăți. Fiecare devine un chip pe care se poate da clic pe profilul tău. Insigna ta de", + badgesDescBefore: "Sponsori, Shop-uri sau oameni care îți susțin skateboardingul — și orice altceva vrei să arăți. Fiecare devine un chip pe care se poate da clic pe profilul tău. Insigna ta de", badgesDescAfter: "membru este adăugată automat.", coordinator: "Coordonator", cordnInvalid: "Nu pare a fi un coordonator. Lipește un nprofile, un link cordn.net sau un URL https://.", @@ -589,12 +589,12 @@ const roBatch3 = { couldNotEnable: "Nu s-a putut activa", sendTest: "Trimite o notificare de test", testTitle: "Notificările SkateSpots sunt pornite 🛹", - testBody: "Așa va arăta un DM, un zap sau o invitație de echipaj.", + testBody: "Așa va arăta un DM, un zap sau o invitație de Crew.", footerBefore: "Alertele sunt construite pe dispozitivul tău din datele pe care aplicația le are deja, iar alertele de mesaje directe nu decriptează niciodată mesajele — astfel încât Amber nu este niciodată rugat să deschidă unul. Cu", footerAfter: "oprit, o aplicație complet închisă nu poate fi contactată, așa că alertele sosesc data viitoare când deschizi SkateSpots.", cat_dms_label: "Mesaje directe", cat_dms_hint: "Cineva îți trimite un mesaj privat", - cat_crew_label: "Echipaje", + cat_crew_label: "Crew-uri", cat_crew_hint: "Invitații, cereri de alăturare și confirmări de membru", cat_social_label: "Zap-uri, răspunsuri & mențiuni", cat_social_hint: "Reacții, repostări, zap-uri, răspunsuri și actualizări de evenimente", @@ -616,10 +616,10 @@ const roBatch3 = { admin: "Admin", descBefore: "Pinii făcuți înainte de existența geocodării au coordonate, dar nu au etichetă de oraș/țară, așa că harta îi desenează în timp ce Statisticile comunității pot spune doar „Necategorizat”. Aceasta re-derivă etichetele din fiecare pin și republică", descStrong: "propriile tale", - descAfter: "spoturi și magazine neetichetate.", + descAfter: "spoturi și Shop-uri neetichetate.", scanning: "Se scanează spoturile tale…", - allTagged: "Fiecare spot și magazin pe care îl deții are deja o etichetă de regiune. 🎉 Orice pin „Necategorizat” rămas aparține altor cartografi — doar propriile lor chei le pot eticheta.", - countLine: "{{count}} dintre spot{{s}}/magazinele tale nu au etichetă de regiune. Semnatarul tău poate cere să aprobi fiecare.", + allTagged: "Fiecare spot și Shop pe care îl deții are deja o etichetă de regiune. 🎉 Orice pin „Necategorizat” rămas aparține altor cartografi — doar propriile lor chei le pot eticheta.", + countLine: "{{count}} dintre spot{{s}}/Shop-urile tale nu au etichetă de regiune. Semnatarul tău poate cere să aprobi fiecare.", tagging: "Se etichetează {{done}}/{{total}}…", run: "Completează etichetele de regiune", summary: "{{updated}} actualizate · {{skipped}} omise · {{failed}} eșuate" @@ -650,7 +650,7 @@ const roBatch3 = { all: "Toate", spots: "Spoturi", events: "Evenimente", - shops: "Magazine", + shops: "Shop-uri", listings: "Anunțuri", collections: "Colecții", lab: "Lab", @@ -720,7 +720,7 @@ const roBatch3 = { finishProfile: "Finalizează-ți profilul", addItem: "Adaugă {{item}}", nip05Title: "Verificare NIP-05", - nip05Desc: "Obține o adresă Nostr verificată (precum name@domain.com) pentru a construi încredere. Necesară pentru a crea evenimente, profiluri de antrenor și magazine.", + nip05Desc: "Obține o adresă Nostr verificată (precum name@domain.com) pentru a construi încredere. Necesară pentru a crea evenimente, profiluri de antrenor și Shop-uri.", freeFromSkateSpots: "Gratuit de la SkateSpots", claimHandleBefore: "Revendică un handle precum", claimHandleAfter: "— fără înregistrare, fără cost, fără domeniu de administrat. Revendică-l în fila Profil, apoi salvează.", @@ -786,7 +786,7 @@ const roBatch3 = { nip05Sub: "Obține o adresă Nostr verificată", app: "Aplicație", myStash: "Stash-ul meu", - myStashSub: "Inventar privat de echipament", + myStashSub: "Inventar privat de Gear", relaysSub: "Conexiuni la relay-uri Nostr", appearanceSub: "Limbă și temă", assistant: "Asistent", @@ -795,7 +795,7 @@ const roBatch3 = { showMapFooter: "Arată bara de linkuri a hărții", showMapFooterDesc: "Arată banda subțire de linkuri în partea de jos a hărții.", notifications: "Notificări", - notificationsSub: "Alerte pentru DM-uri, echipaje și zap-uri", + notificationsSub: "Alerte pentru DM-uri, Crew-uri și zap-uri", coordinator: "Coordonator", coordinatorSub: "Serverul tău de grup Cordn", data: "Date", @@ -826,10 +826,10 @@ const roBatch3 = { pillMap: "Harta spoturilor", pillCoaches: "Antrenori & filmeri", pillEvents: "Evenimente", - pillGear: "Cumpără/vinde echipament", + pillGear: "Cumpără/vinde Gear", pillZaps: "Zap-uri Bitcoin", - pillStash: "Stash de echipament", - pillCrews: "Echipaje", + pillStash: "Stash de Gear", + pillCrews: "Crew-uri", createFreeAccount: "Creează-ți contul gratuit", noEmailNoPassword: "Fără email. Fără parolă. Deții-ți identitatea pentru totdeauna.", findSpots: "Găsește spoturi lângă tine", @@ -857,12 +857,12 @@ const roBatch3 = { featLabDesc: "Găsește antrenori, filmeri și editori video lângă tine", featEvents: "Evenimente", featEventsDesc: "Competiții, sesiuni, întâlniri", - featGear: "Cumpără / vinde echipament", - featGearDesc: "Piață peer-to-peer pentru echipament de skate second-hand", + featGear: "Cumpără / vinde Gear", + featGearDesc: "Piață peer-to-peer pentru Gear de skate second-hand", featStash: "Stash-ul meu", featStashDesc: "Inventar privat criptat cu tot ce deții", - featCrews: "Echipaje", - featCrewsDesc: "Rulează cu echipajul tău — spoturi partajate, chat și sesiuni", + featCrews: "Crew-uri", + featCrewsDesc: "Rulează cu Crew-ul tău — spoturi partajate, chat și sesiuni", whatIsNostr: "Ce este Nostr?", whatIsNostrSub: "Protocolul care alimentează SkateSpots", nostrBefore: "Nostr este un protocol deschis — ca emailul, dar pentru aplicații sociale. Contul tău este o", @@ -936,7 +936,7 @@ const roBatch3 = { understandingNostr: "Înțelegerea Nostr", stepOf: "Pasul {{current}} din {{total}}", step1Title: "Înțelegerea relay-urilor", - step1Desc: "Gândește-te la relay-uri ca la magazinele de skate care împărtășesc noutăți despre spoturi", + step1Desc: "Gândește-te la relay-uri ca la Shop-urile de skate care împărtășesc noutăți despre spoturi", you: "Tu", relays: "Relay-uri", skaters: "Skateri", @@ -1010,7 +1010,7 @@ const roBatch3 = { credits: "Credite", creditPoweredBy: "Alimentat de", creditNostr: "Protocol descentralizat", - creditCrewChat: "Chat de echipaj prin", + creditCrewChat: "Chat de Crew prin", creditCordn: "Chat de grup criptat end-to-end", creditEcash: "Ecash prin", creditCashu: "Chaumian ecash pentru Lightning", @@ -1024,10 +1024,10 @@ const roBatch3 = { creditAngor: "Finanțare participativă Bitcoin descentralizată", creditDistributed: "Distribuit pe", creditZapstore: "Magazin de aplicații open-source", - creditTrust: "Încredere și chat de echipaj prin", - creditContextvm: "Scoruri de încredere Relatr și coordonare criptată a chat-ului de echipaj", + creditTrust: "Încredere și chat de Crew prin", + creditContextvm: "Scoruri de încredere Relatr și coordonare criptată a chat-ului de Crew", stillQuestions: "Mai ai întrebări?", - stillQuestionsDesc: "Sasquatch este ghidul nostru AI — alimentat de date live SkateSpots. Întreabă-l despre spoturi, evenimente, antrenori, echipament sau cum funcționează orice.", + stillQuestionsDesc: "Sasquatch este ghidul nostru AI — alimentat de date live SkateSpots. Întreabă-l despre spoturi, evenimente, antrenori, Gear sau cum funcționează orice.", askSasquatch: "Întreabă-l pe Sasquatch", poweredBy: "Alimentat de", decentralized: "Descentralizat", @@ -1036,7 +1036,7 @@ const roBatch3 = { faq: { seoTitle: "Întrebări frecvente - SkateSpots", seoDescription: "Întreabă-l pe Sasquatch orice despre SkateSpots.", - greeting: "Salut! Sunt Sasquatch 🦧 — întreabă-mă orice despre SkateSpots. Spoturi, evenimente, echipament, portofele, confidențialitate, Nostr — te acopăr. Ce vrei să știi?", + greeting: "Salut! Sunt Sasquatch 🦧 — întreabă-mă orice despre SkateSpots. Spoturi, evenimente, Gear, portofele, confidențialitate, Nostr — te acopăr. Ce vrei să știi?", gotQuestions: "Ai întrebări?", heroDesc: "Întreabă-l pe Sasquatch — știe totul despre SkateSpots, Nostr, Bitcoin și skateboarding.", askTitle: "Întreabă-l pe Sasquatch", @@ -1062,8 +1062,8 @@ const roBatch3 = { chip7Q: "Ce este Nostr?", chip8Label: "Confidențialitate & date", chip8Q: "Ce date sunt publice și ce date sunt private pe SkateSpots?", - chip9Label: "Cum vând echipament?", - chip9Q: "Cum vând echipament pe SkateSpots?", + chip9Label: "Cum vând Gear?", + chip9Q: "Cum vând Gear pe SkateSpots?", chip10Label: "Ce este The Lab?", chip10Q: "Ce este The Lab?", fact1Label: "Spoturi de skate în întreaga lume", @@ -1072,14 +1072,14 @@ const roBatch3 = { fact2Value: "100% gratuit", fact3Label: "Descentralizat pe Nostr", fact3Value: "Deții datele tale", - fact4Label: "Inventar privat de echipament", + fact4Label: "Inventar privat de Gear", fact4Value: "Stash criptat", s1Q: "Ce este SkateSpots?", - s1A: "O hartă descentralizată și o comunitate pentru skateboarding, construită pe Nostr. Descoperă spoturi, găsește antrenori și filmeri, alătură-te echipajelor, listează evenimente și cumpără/vinde echipament — fără nicio companie la mijloc.", + s1A: "O hartă descentralizată și o comunitate pentru skateboarding, construită pe Nostr. Descoperă spoturi, găsește antrenori și filmeri, alătură-te Crew-urilor, listează evenimente și cumpără/vinde Gear — fără nicio companie la mijloc.", s2Q: "Cum adaug un spot?", s2A: "Atinge harta sau folosește butonul + / \"Adaugă spot\", apoi plasează un pin și completează detaliile. Ai nevoie de un cont Nostr gratuit (atinge Autentificare → Creează cont — fără email).", s3Q: "Ce sunt zap-urile?", - s3A: "Zap-urile sunt ciupleli Bitcoin Lightning. Poți zapa spoturi, evenimente, echipaje și persoane pe care le apreciezi. Ajung direct la destinatar prin Lightning — SkateSpots nu-ți ține niciodată fondurile.", + s3A: "Zap-urile sunt ciupleli Bitcoin Lightning. Poți zapa spoturi, evenimente, Crew-uri și persoane pe care le apreciezi. Ajung direct la destinatar prin Lightning — SkateSpots nu-ți ține niciodată fondurile.", s4Q: "Este gratuit?", s4A: "Da. Crearea unui cont, adăugarea de spoturi și navigarea sunt gratuite. Extraurile opționale plătite (precum anunțurile promovate) și ciuplelile (zap-urile) se plătesc direct între persoane.", s5Q: "Ce date sunt publice?", @@ -1119,20 +1119,20 @@ const roBatch3 = { encryptedTitle: "Ce este privat & criptat", enc1Strong: "Mesajele directe", enc1Mid: "și", - enc1Strong2: "chat-urile de echipaj", + enc1Strong2: "chat-urile de Crew", enc1: "sunt criptate end-to-end (NIP-17). Doar participanții le pot citi.", enc2Strong: "My Stash", - enc2: "— inventarul tău privat de echipament — este criptat cu propria ta cheie.", - enc3Strong: "Membrii doar-ai-echipajului", - enc3: "pot alege să fie vizibili doar colegilor de echipaj.", + enc2: "— inventarul tău privat de Gear — este criptat cu propria ta cheie.", + enc3Strong: "Membrii doar de Crew", + enc3: "pot alege să fie vizibili doar colegilor de Crew.", ipTitle: "Ce părăsește dispozitivul tău: IP-ul", ipBefore: "Ca orice site web, serverele cu care vorbește SkateSpots îți pot vedea", ipAddress: "adresa IP", ipAfter: "(un indicator aproximativ al regiunii tale). Acest lucru este normal pentru orice aplicație web sau de hartă și nu este unic pentru noi. Acele servere sunt:", ipTileStrong: "Tile-uri de hartă", ipTile: "(OpenStreetMap) — îți văd IP-ul și ce zonă a hărții privești.", - ipGeoStrong: "Geocodificarea spoturilor/magazinelor", - ipGeo: "— când creezi sau editezi un spot sau magazin, coordonatele lui merg la OpenStreetMap Nominatim pentru a completa eticheta de oraș/țară. Când deschizi Statisticile comunității, coordonatele pinilor fără etichetă de locație merg la BigDataCloud pentru a fi grupate pe regiuni (stocate în cache pe dispozitivul tău — cel mult o dată per pin). Ambele îți văd IP-ul. Acestea sunt pinul pe care l-ai plasat / coordonatele pinilor publici, niciodată GPS-ul live al dispozitivului tău.", + ipGeoStrong: "Geocodificarea Spot/Shop", + ipGeo: "— când creezi sau editezi un spot sau Shop, coordonatele lui merg la OpenStreetMap Nominatim pentru a completa eticheta de oraș/țară. Când deschizi Statisticile comunității, coordonatele pinilor fără etichetă de locație merg la BigDataCloud pentru a fi grupate pe regiuni (stocate în cache pe dispozitivul tău — cel mult o dată per pin). Ambele îți văd IP-ul. Acestea sunt pinul pe care l-ai plasat / coordonatele pinilor publici, niciodată GPS-ul live al dispozitivului tău.", ipPushStrong: "Notificări în fundal", ipPush: "(opțional) — dacă le activezi, un server de push SkateSpots vede că cheia ta a primit ceva și când (niciodată cine a trimis sau ce spune — mesajele rămân criptate), iar serviciul de push al OS-ului tău (Google/Mozilla/Apple) livrează alerta.", ipBtcStrong: "Locuri Bitcoin", diff --git a/src/i18n/ro/batch5.ts b/src/i18n/ro/batch5.ts index e037e5e..1a0ce6d 100644 --- a/src/i18n/ro/batch5.ts +++ b/src/i18n/ro/batch5.ts @@ -1,4 +1,1603 @@ -/** ro — batch 5. Filled by the translation pass; empty until then. */ -const roBatch5 = {}; +/** + * Romanian (ro-RO) — batch 5: The Lab (labUi) + social/crews/DMs (socialUi). + * + * Skate vocabulary stays English (The Lab, Coach, Filmer, Photographer, Editor, + * Builder, Crew, Spot, Stash, Nostr, Lightning, Zap, sats, DM, NWC, NIP-05); + * all trick names stay English. + */ +export const roBatch5 = { + labUi: { + activeCount: "{{count}} active", + addMusicProfile: "Adaugă profil muzical", + all: "Toate", + clearAll: "Șterge tot", + collective: "Colectiv", + filters: "Filtre", + following: "Urmărești", + getRiderCard: "Obține Rider Card", + judgeEvents: "Juriizează evenimente", + justASkater: "Doar un", + labForServices: "The Lab este pentru servicii. Răsfoiește și alătură-te întregii comunități de skateri", + loginToOffer: "Autentifică-te pentru a oferi servicii", + newest: "Cele mai noi", + noResults: "Niciun rezultat", + offer: "Oferă", + offerBuilding: "Oferă construcție", + offerCoaching: "Oferă coaching", + offerCuts: "Oferă montaj", + offerDesignArt: "Oferă design / artă", + offerEditing: "Oferă editare", + offerFilming: "Oferă filmare", + offerGraffiti: "Oferă graffiti", + offerPhotography: "Oferă fotografie", + offerServices: "Oferă servicii", + yourProfiles: "Profilele tale din The Lab", + preview: { + button: "Previzualizare", + title: "Previzualizare live", + desc: "Așa va arăta profilul tău de {{noun}} după publicare.", + untitled: "Numele tău", + noBio: "Încă nicio bio — adaugă o frază despre ce oferi.", + years: "{{count}} ani de experiență", + portfolio: "Portofoliu", + note: "Doar previzualizare — încă nu s-a publicat nimic.", + }, + draft: { + title: "Ai o ciornă nesalvată", + body: "Continuă de unde ai rămas — nimic nu se publică până nu apeși Publică.", + resume: "Reia ciorna", + discard: "Renunță la ciornă", + }, + progress: { + title: "Completitudinea profilului", + count: "{{done}} din {{total}} finalizate", + photo: "Fotografie", + bio: "Bio", + skills: "Competențe", + rate: "Tarif", + location: "Locație", + contact: "Contact", + }, + wizard: { + identity: "Identitate", + offer: "Ce oferi", + rates: "Tarife", + contact: "Contact", + media: "Media", + }, + offerTattoo: "Oferă tatuaje", + offerTraining: "Oferă antrenament / fizioterapie", + organizeEvents: "Organizează evenimente", + resultsMany: "{{count}} rezultate", + resultsOne: "{{count}} rezultat", + searchCityPlaceholder: "Oraș…", + searchNamePlaceholder: "Nume, bio…", + showResults: "Arată rezultate", + showResultsActive: "Arată rezultate · {{count}} active", + skaterWord: "skater", + sortBy: "Sortează după", + theCrew: "Crew-ul", + topRated: "Cele mai bine cotate", + trusted: "De încredere", + trustLevel: "Nivel de încredere", + yearsExp: "{{count}} ani exp.", + tabCoaches: "Coaches", + tabFilmers: "Filmers", + tabPhoto: "Foto", + tabEditors: "Editors", + tabBuilders: "Builders", + tabArtists: "Artiști", + tabGraffiti: "Graffiti", + tabTattoo: "Tatuaje", + tabTrainers: "Antrenori", + tabMusic: "Muzică", + tabJudges: "Juri", + tabOrganizers: "Organizatori", + tabBarbers: "Frizeri", + filterSkillsToLearn: "Competențe de învățat", + filterContentType: "Tip de conținut", + filterEquipmentStyle: "Echipament și stil", + filterServices: "Servicii", + filterCamera: "Cameră", + filterLenses: "Obiective", + filterLighting: "Iluminare", + filterSupportRig: "Suport și rig", + filterStyle: "Stil", + filterWhatTheyBuild: "Ce construiesc", + filterMaterialsTrade: "Materiale și meserie", + filterProjectScale: "Scara proiectului", + filterWhatTheyMake: "Ce realizează", + filterMedium: "Mediu", + filterSoftwareTools: "Software și unelte", + filterWorkContext: "Context de lucru", + filterMethod: "Metodă", + filterFocus: "Focus", + filterInjuriesTreated: "Leziuni tratate", + filterCredentialsSetting: "Acreditări și cadru", + filterGenre: "Gen", + filterInstrumentsRole: "Instrumente și rol", + filterEventFormats: "Formate de eveniment", + filterSpecialty: "Specialitate", + filterLevelCircuit: "Nivel / Circuit", + filterEventTypes: "Tipuri de evenimente", + filterWhatYouHandle: "De ce te ocupi", + filterScale: "Scară", + filterWhatTheyOffer: "Ce oferă", + filterSignatureStyles: "Stiluri semnătură", + filterSetting: "Cadru", + filterEditType: "Tip de editare", + role: { + coach: "Coach", + filmer: "Filmer", + builder: "Builder", + editor: "Editor video", + photographer: "Photographer", + skater: "Skater", + }, + empty: { + footer: "Ai întrebări? Vezi FAQ →", + loginSuffix: "pentru a crea un profil.", + coachesTitle: "Încă niciun coach", + coachesBody: "Fii primul care oferă coaching de skateboarding în zona ta.", + filmersTitle: "Încă niciun filmer", + filmersBody: "Fii primul care oferă filmare de skate — clipuri, părți complete, acoperire de concursuri și altele.", + photographersTitle: "Încă niciun photographer", + photographersBody: "Fii primul care oferă fotografie de skate în zona ta — cadre de acțiune, secvențe, editorial și altele.", + editorsTitle: "Încă niciun editor video", + editorsBody: "Fii primul care oferă servicii de editare video de skate.", + buildersTitle: "Încă niciun builder", + buildersBody: "Fii primul care își listează rampa, park-ul sau construcția DIY — beton, lemn, șine și altele.", + artistsTitle: "Încă niciun artist", + artistsBody: "Fii primul care oferă grafică de deck-uri, logo-uri, postere și merch pentru scenă.", + graffitiTitle: "Încă niciun artist de graffiti", + graffitiBody: "Fii primul care oferă piese, murale și artă de skatepark în zona ta.", + tattooTitle: "Încă niciun artist de tatuaje", + tattooBody: "Fii primul artist de tatuaje din cultura skate care se listează — flash, custom, fine line și altele.", + trainersTitle: "Încă niciun antrenor", + trainersBody: "Fii primul antrenor sau fizioterapeut care îi ajută pe skateri să devină puternici și sănătoși.", + musiciansTitle: "Încă niciun muzician", + musiciansBody: "Skatezi și faci muzică? Adaugă-ți trupa sau proiectul solo — genuri, instrumente și linkuri.", + judgesTitle: "Încă niciun juriu", + judgesBody: "Organizezi un concurs corect? Listează-te pentru a juriza Game of S.K.A.T.E., best trick jam-uri, concursuri și opriri de turneu.", + organizersTitle: "Încă niciun organizator", + organizersBody: "Organizezi jam-uri, competiții, întâlniri sau demo-uri? Listează-te ca skaterii să te găsească și să te angajeze.", + barbersTitle: "Încă niciun frizer", + barbersBody: "Tunzi skateri? Listează-ți scaunul sau serviciul mobil ca scena să prindă un tuns proaspăt.", + }, + become: { + addNip05: "Adaugă NIP-05 în Setări", + backToLab: "Înapoi la The Lab", + bioWorkLabel: "Bio / Despre munca ta", + checkContact: "Verifică-ți datele de contact", + cityArea: "Oraș / Zonă", + cityCountry: "Oraș, Țară", + connectWallet: "Conectează portofelul", + connectWalletNwc: "Conectează portofelul cu NWC", + contactInfo: "Informații de contact", + contactInfoDesc: "Cum te pot contacta clienții (toate opționale, dar recomandate)", + coordinatesOptional: "Coordonate (opțional)", + email: "Email", + failedToPublish: "Publicarea a eșuat", + fromNostrProfile: "Din profilul tău Nostr", + geolocationUnsupported: "Geolocația nu este acceptată", + getting: "Se obține…", + headline: "Titlu", + headlineHint: "Afișat ca titlu pe cardul tău din The Lab — de ex. „{{example}}”. Implicit, numele tău.", + imageUploaded: "Imagine încărcată", + instagram: "Instagram", + invalidEmail: "Introdu o adresă de email validă.", + invalidPortfolio: "Introdu un URL de portofoliu valid.", + invalidWebsite: "Introdu un URL de site valid.", + latitude: "Latitudine", + learnHow: "Cum se face", + locationError: "Eroare de locație", + locationFound: "Locație găsită", + loginRequired: "Autentificare necesară", + loginRequiredDesc: "Trebuie să te autentifici pentru a crea un profil de {{role}}.", + loginRequiredDescCraft: "Trebuie să te autentifici pentru a crea un profil de {{noun}}.", + longitude: "Longitudine", + nip05Recommended: "Verificarea NIP-05 este recomandată", + nip05RecommendedDesc: "Verifică-ți identitatea pentru a construi încredere cu clienții.", + noWallet: "Niciun portofel conectat", + otherSocial: "Alte rețele sociale", + paymentSetup: "⚡ Configurare de plată necesară", + phoneNumber: "Număr de telefon", + profilePhoto: "Fotografie de profil", + profilePublished: "Profilul tău a fost publicat.", + publishing: "Se publică...", + socialMedia: "Rețele sociale", + tip: "💡 Sfat: majoritatea portofelelor Lightning acceptă NWC (Alby, Minibits, Zeus, Coinos).", + tipWithTime: "💡 Sfat: majoritatea portofelelor Lightning acceptă NWC (Alby, Minibits, Zeus, Coinos). Configurarea durează 30 de secunde.", + upload: "Încarcă", + uploadFailed: "Încărcarea a eșuat", + uploadImage: "Încarcă imagine", + uploading: "Se încarcă…", + useCurrentLocation: "Folosește locația curentă", + useMyLocation: "Folosește locația mea", + usingNwc: "Se folosește Nostr Wallet Connect", + usingWebln: "Se folosește extensia de browser WebLN", + walletConnected: "Portofel conectat — gata să primești plăți!", + website: "Site", + yearsExperience: "Ani de experiență", + }, + coachForm: { + anonymous: "Coach anonim", + bioLabel: "Bio / Filosofia de coaching", + bioPlaceholder: "Background-ul tău, stilul de predare...", + create: "CREEAZĂ PROFIL DE COACH", + created: "Profil de coach creat!", + createPro: "CREEAZĂ PROFIL PRO DE COACH", + dmNote: "💬 Elevii îți pot scrie direct prin mesageria criptată SkateSpots", + heading: "Devino Coach", + headlineExample: "Skate Coach Berlin", + hourlyRate: "Tarif orar", + identity: "Identitatea ta de Coach", + nip05Reason: "Adaugă un identificator NIP-05 pentru a-ți verifica identitatea și a construi încredere cu elevii — le arată că ești un coach legitim.", + paymentDesc: "Pentru a primi plăți pentru lecții de la elevi, trebuie să conectezi un portofel Lightning. Elevii te vor zap-ui direct pentru sesiunile de coaching.", + profileDesc: "Spune-le elevilor despre experiența ta", + profileTitle: "Profil de Coach", + ratePlaceholder: "5000 sats/oră", + selectSkill: "Selectează cel puțin o competență.", + skillsLabel: "Competențe pe care le predau * (selectează cel puțin una)", + skillsRequired: "Competențe necesare", + formatsLabel: "Formate de sesiune", + formatsHint: "Cum oferi coaching.", + levelsLabel: "Niveluri predate", + agesLabel: "Grupe de vârstă", + credentialsLabel: "Acreditări și siguranță", + credentialsHint: "Auto-atestate — SkateSpots nu le verifică.", + languagesLabel: "Limbi vorbite", + languagesHint: "Adaugă limbile în care poți preda.", + languagePlaceholder: "de ex. română, engleză", + availabilityLabel: "Disponibilitate", + bookingLabel: "Link de programare", + bookingHint: "Opțional — o pagină unde elevii pot rezerva și plăti.", + galleryLabel: "Fotografii de portofoliu", + galleryHint: "Arată sesiuni reale, elevi și spoturi (până la 12).", + galleryAdd: "Adaugă fotografii de portofoliu", + galleryUploaded: "{{count}} fotografie/fotografii încărcate", + videoLabel: "Reel demonstrativ", + videoHint: "Opțional — un video YouTube sau Instagram cu coaching-ul tău.", + formatOneOnOne: "1-la-1", + formatGroup: "Grup", + formatCamp: "Camp", + formatVideo: "Analiză video", + formatContestPrep: "Pregătire pentru concurs", + formatParkLesson: "Lecție în park", + formatAdaptive: "Adaptat", + formatGirls: "Sesiune pentru fete", + formatAfterSchool: "După școală", + levelBeginner: "Începător", + levelIntermediate: "Intermediar", + levelAdvanced: "Avansat", + levelCompetition: "Competiție", + ageKids: "Copii", + ageTeens: "Adolescenți", + ageAdults: "Adulți", + ageSeniors: "Seniori", + certFirstAid: "Prim ajutor", + certCpr: "CPR", + certSafeguarding: "Protecția copilului", + certBackgroundCheck: "Cazier", + certInsured: "Asigurat", + certFederation: "Antrenor al federației naționale", + certQualification: "Calificare de coaching", + certJudge: "Juriu de concurs", + certNoteLabel: "Alte acreditări (opțional)", + certNotePlaceholder: "de ex. Skateboard GB Nivel 2, 8 ani de coaching…", + availWeekdays: "Zile lucrătoare", + availWeekends: "Weekenduri", + availEvenings: "Seri", + availAfterSchool: "După școală", + availHolidays: "Vacanțe școlare", + availSeasonal: "Sezonier", + sectionWhatYouCoach: "Ce predai", + sectionCredentials: "Acreditări și siguranță", + sectionAvailability: "Disponibilitate și programări", + sectionWhereYouCoach: "Unde predai", + sectionPortfolio: "Portofoliu", + rateAmountLabel: "Tarif", + rateCurrencySats: "sats", + rateCurrencyUsd: "USD", + rateCurrencyEur: "EUR", + rateCurrencyGbp: "GBP", + perHour: "pe oră", + perSession: "pe sesiune", + perHalfDay: "pe jumătate de zi", + perDay: "pe zi", + perCamp: "pe camp", + perProject: "pe proiect", + perEvent: "pe eveniment", + perGig: "pe concert", + perShoot: "pe ședință foto", + perPiece: "pe piesă", + perCut: "pe tuns", + perMonth: "pe lună", + availByAppointment: "Cu programare", + rateNotesLabel: "Note despre tarif (opțional)", + rateNotesPlaceholder: "Tarif glisant, prima sesiune gratuită, transport inclus…", + sectionPayments: "Plăți", + paymentMethodsHint: "Cum te pot plăti clienții. Aceasta este o declarație — SkateSpots nu ține niciodată fonduri.", + payMethodCash: "Numerar la fața locului", + payMethodLightning: "Lightning", + payMethodCashu: "Cashu", + payMethodBank: "Transfer bancar", + payMethodOther: "Altele", + payWhatYouCanLabel: "Tarif glisant / plătește cât poți", + bookingFeeLabel: "Taxă de rezervare (opțional)", + bookingFeeHint: "O taxă mică plătită direct către tine pentru a confirma o rezervare. SkateSpots nu o ține și nu o rambursează.", + paymentNoteLabel: "Notă de plată (opțional)", + paymentNotePlaceholder: "Prima sesiune gratuită, transport inclus, plătești după sesiune…", + spotsDesc: "Selectează spoturile unde oferi sesiuni de coaching", + spotsLabel: "Spoturi unde predai", + tagline: "Împărtășește-ți cunoștințele de skateboarding", + update: "ACTUALIZEAZĂ PROFILUL DE COACH", + updated: "Profil de coach actualizat!", + }, + filmerForm: { + anonymous: "Filmer anonim", + bioPlaceholder: "Background-ul tău, stilul, echipamentul...", + camerasLabel: "Camere și echipament * (selectează cel puțin unul)", + create: "CREEAZĂ PROFIL DE FILMARE", + created: "Profil de filmare creat!", + createPro: "CREEAZĂ PROFIL PRO DE FILMARE", + dmNote: "💬 Clienții îți pot scrie direct prin mesageria criptată SkateSpots", + gearHelper: "Listează-ți camerele, obiectivele și rig-urile exacte — skaterii sunt interesați de setup.", + gearLabel: "Ce ai în geantă (opțional)", + gearPlaceholder: "de ex. Sony VX1000 + fisheye MK1, Panasonic HVX200, gimbal DJI RS3, GoPro Hero 12, microfon Sennheiser...", + heading: "Devino Filmer", + headlineExample: "Skate Filmer Berlin", + identity: "Identitatea ta de Filmer", + nip05Reason: "Adaugă un identificator NIP-05 pentru a-ți verifica identitatea și a construi încredere cu clienții — le arată că ești un filmer legitim.", + paymentDesc: "Pentru a primi plăți de la clienți pentru servicii de filmare, trebuie să conectezi un portofel Lightning. Clienții te vor zap-ui direct pentru munca ta.", + profileDesc: "Spune-le clienților despre expertiza ta de filmare", + profileTitle: "Profil de filmare", + rate: "Tarif", + ratePlaceholder: "10000 sats/video", + reelLabel: "Reel / Portofoliu", + selectService: "Selectează cel puțin un serviciu.", + selectSkill: "Selectează cel puțin o competență de filmare.", + servicesLabel: "Servicii oferite * (selectează cel puțin unul)", + servicesRequired: "Servicii necesare", + skillsRequired: "Competențe necesare", + spotsDesc: "Selectează spoturile unde oferi servicii de filmare", + spotsLabel: "Spoturi unde filmezi", + tagline: "Oferă filmarea videoclipurilor tale de skate — clipuri, linii, părți complete și acoperire de concursuri", + update: "ACTUALIZEAZĂ PROFILUL DE FILMARE", + updated: "Profil de filmare actualizat!", + }, + editorForm: { + anonymous: "Editor anonim", + bioPlaceholder: "Stilul tău de editare, background, proiecte notabile…", + contactPortfolio: "Contact și portofoliu", + create: "Publică profilul de Editor", + created: "Profil de editor creat!", + createPro: "Publică profilul Pro de Editor", + editTypes: "Tipuri de editare oferite * (selectează cel puțin unul)", + hardware: "Hardware", + hardwarePlaceholder: "de ex. MacBook Pro M3, Sony FX3", + heading: "Devino Editor video", + headlineExample: "Skate Video Editor", + identity: "Identitatea ta", + locationOptional: "Locație (opțional)", + loginDesc: "Autentifică-te pentru a-ți crea profilul de editor video.", + phoneTelegram: "Telefon / Telegram", + portfolioPlaceholder: "Portofoliu (Vimeo, YouTube…)", + profileDesc: "Spune-le comunității despre stilul și competențele tale de editare", + profileTitle: "Profil de Editor", + published: "Profilul tău a fost publicat pe SkateSpots.", + rate: "Tarif / Preț", + ratePlaceholder: "de ex. 50k sats/min, scrie-mi pentru ofertă", + selectService: "Selectează cel puțin un tip de editare.", + servicesRequired: "Servicii necesare", + socialPlaceholder: "Instagram / cont social", + software: "Software", + softwareHardware: "Competențe software și hardware", + softwarePlaceholder: "de ex. DaVinci Resolve, Premiere", + tagline: "Oferă serviciile tale de editare video comunității de skate", + thumbnail: "Miniatură profil / showreel", + update: "Actualizează profilul de Editor", + updated: "Profil de editor actualizat!", + walletConnected: "Portofel conectat ✓", + walletDesc: "Primește plăți Bitcoin ⚡ direct de la clienți pentru munca ta de editare.", + walletTitle: "⚡ Portofel Lightning pentru plăți", + yearsExperience: "Ani de experiență", + yearsPlaceholder: "de ex. 5 ani", + }, + photoForm: { + anonymous: "Photographer anonim", + bioPlaceholder: "Background-ul tău, stilul, ce îți place să fotografiezi...", + cameraLabel: "Corpuri de cameră * (selectează cel puțin unul)", + cameraRequired: "Cameră necesară", + contactDesc: "Cum îți pot vedea riderii munca și te pot contacta (toate opționale, dar recomandate)", + create: "CREEAZĂ PROFIL DE FOTOGRAFIE", + created: "Profil de fotografie creat!", + createPro: "CREEAZĂ PROFIL PRO DE FOTOGRAFIE", + dmNote: "💬 Riderii îți pot scrie direct prin mesageria criptată SkateSpots", + gearHelper: "Listează corpurile, obiectivele și luminile exacte — riderii adoră să știe setup-ul.", + gearPlaceholder: "de ex. Canon R6 II, fisheye 8-15mm, 70-200mm f/2.8, 2× Godox AD200, declanșatoare, trepied Manfrotto...", + heading: "Devino Photographer", + headlineExample: "Skate Photography", + identity: "Identitatea ta de Photographer", + lensesLabel: "Obiective", + lightingLabel: "Echipament de iluminare", + nip05Reason: "Adaugă un identificator NIP-05 pentru a-ți verifica identitatea și a construi încredere cu clienții.", + paymentDesc: "Pentru a fi plătit pentru ședințe foto, conectează un portofel Lightning. Clienții te zap-uiesc direct pentru munca ta.", + portfolioLabel: "Portofoliu / Instagram", + profileDesc: "Spune-le riderilor despre ochiul tău, kit-ul tău și serviciile tale", + profileTitle: "Profil de fotografie", + ratePlaceholder: "20000 sats/ședință", + selectCamera: "Selectează cel puțin un tip de cameră pe care filmezi.", + selectService: "Selectează cel puțin un serviciu pe care îl oferi.", + servicesLabel: "Servicii oferite * (selectează cel puțin unul)", + servicesRequired: "Servicii necesare", + spotsDesc: "Selectează spoturile unde oferi fotografie", + spotsLabel: "Spoturi unde fotografiezi", + styleLabel: "Stil de fotografiere", + supportLabel: "Suport și rig", + tagline: "Fotografiază sesiunile — oferă fotografia ta de skate", + update: "ACTUALIZEAZĂ PROFILUL DE FOTOGRAFIE", + updated: "Profil de fotografie actualizat!", + }, + builderForm: { + anonymous: "Builder anonim", + bioLabel: "Bio / Despre construcțiile tale", + bioPlaceholder: "Crew-ul tău, construcții notabile, cum abordezi un proiect...", + buildTypesLabel: "Ce construiești * (selectează cel puțin unul)", + buildTypesRequired: "Tipuri de construcție necesare", + cityBase: "Oraș / Bază", + contactPortfolio: "Contact și portofoliu", + contactPortfolioDesc: "Cum poate scena să-ți vadă construcțiile și să te contacteze (toate opționale, dar recomandate)", + create: "CREEAZĂ PROFIL DE BUILDER", + created: "Profil de builder creat!", + createPro: "CREEAZĂ PROFIL PRO DE BUILDER", + dmNote: "💬 Clienții îți pot scrie direct prin mesageria criptată SkateSpots", + gearHelper: "Crew-urile și clienții adoră să-ți cunoască kit-ul și procesul.", + gearLabel: "Cum lucrezi / Echipament (opțional)", + gearPlaceholder: "de ex. echipă completă de beton, mixer propriu + rig de shotcrete, sudură mobilă, ne ocupăm de autorizații și drenaj...", + heading: "Devino Builder", + headlineExample: "Ramp & Park Builder", + identity: "Identitatea ta de Builder", + insured: "Autorizat / Asigurat", + insuredHelper: "Relevant pentru lucrări în park-uri publice și pentru consilii locale", + logoPhoto: "Logo / Fotografie", + materialsLabel: "Materiale și competențe de meserie", + nip05Reason: "Adaugă un identificator NIP-05 pentru a-ți verifica identitatea și a construi încredere cu clienții.", + pastBuilds: "Construcții anterioare / Instagram", + paymentDesc: "Pentru a fi plătit pentru construcții, conectează un portofel Lightning. Clienții te zap-uiesc direct pentru munca ta.", + profileDesc: "Spune-le scenei ce construiești și cum lucrezi", + profileTitle: "Profil de Builder", + rateLabel: "Tarif / Bază de ofertare", + ratePlaceholder: "pe m² / pe proiect", + scaleLabel: "Scara proiectului", + selectBuild: "Selectează cel puțin un lucru pe care îl construiești.", + serviceArea: "Zonă de deservire", + serviceAreaPlaceholder: "de ex. Transilvania, mă deplasez în toată UE", + spotsDesc: "Leagă spoturile și park-urile pe care le-ai construit ca lumea să-ți vadă munca pe hartă", + spotsLabel: "Spoturi pe care le-ai construit", + tagline: "Toarnă, sudează, construiește — listează-ți construcția de rampe și park-uri", + update: "ACTUALIZEAZĂ PROFILUL DE BUILDER", + updated: "Profil de builder actualizat!", + yearsBuilding: "Ani de construcție", + }, + skaterForm: { + backToSkaters: "Înapoi la Skateri", + bioHelperPulled: "Preluat din profilul tău — ajustează-l pentru cardul tău de skater sau lasă-l așa.", + bioHelperShort: "O scurtă introducere pentru cardul tău de skater.", + bioPlaceholder: "De cât timp skatezi, ce îți place, la ce lucrezi…", + browseSpots: "Răsfoiește spoturi", + changePhoto: "Schimbă fotografia de profil", + chipBio: "Bio", + chipPhoto: "Fotografie", + cityArea: "Oraș / zonă", + created: "Ești pe hartă! 🛹", + custom: "Personalizat", + customHelper: "Eticheta ta — afișată pe cardul tău de skater în locul unei valori prestabilite.", + customPlaceholder: "de ex. OG, Weekend Warrior, Retired…", + discoverable: "Alți skateri te pot descoperi acum.", + editFullProfile: "editează-ți profilul complet", + fromProfile: "Din profilul tău", + heroEditPrefix: "Editează-ți", + heroJoinPrefix: "Alătură-te la", + heroSuffix: "Director", + homeHelper: "Scrie-l liber sau leagă un spot real de pe hartă ca lumea să poată merge acolo.", + homePlaceholder: "Park / piațetă locală — sau apasă „Răsfoiește spoturi”", + homeSpot: "Spot de casă", + layerEnd: "pentru a le schimba peste tot.", + layerIntro: "Acesta este", + layerMid: ", construit pe profilul tău Nostr. Numele, fotografia, bio-ul, lightning și verificarea vin de acolo —", + layerWord: "stratul de skate", + level: "Nivel", + linked: "Legat de un spot de pe hartă", + loadingProfile: "Se încarcă profilul tău…", + loadingSpots: "Se încarcă spoturile…", + locationHelper: "Îi ajută pe alții să găsească skateri în apropiere. Se împărtășește doar o zonă aproximativă.", + loginToJoin: "Autentifică-te pentru a te alătura", + loginToJoinDesc: "Creează-ți profilul de skater ca să te poată găsi comunitatea.", + mappedSpot: "Spot pe hartă", + noSpots: "Încă nu s-au găsit spoturi.", + noSpotsMatch: "Niciun spot nu se potrivește căutării tale.", + openMap: "Deschide harta", + pickEverything: "Alege tot ce ți se potrivește stilului.", + pickHomeSpot: "Alege-ți spotul de casă", + pickStyles: "Alege-ți stilurile", + pickStylesDesc: "Alege cel puțin un lucru pe care îl skatezi.", + profilePic: "Poză de profil", + profilePicHelper: "Cardul tău de skater folosește fotografia din profilul Nostr — aceeași imagine peste tot.", + publishingAs: "Publici ca", + putOnMap: "Pune-mă pe hartă", + searchSpots: "Caută spoturi după nume sau oraș…", + skateStory: "Povestea ta de skate", + stance: "Stance", + unlinkSpot: "Dezleagă spotul", + updateButton: "Actualizează-mi profilul", + updated: "Profil actualizat!", + whatYouSkate: "Ce skatezi *", + yearsPlaceholder: "de ex. 8", + yearsSkating: "Ani de skate", + yourProfilePic: "Poza ta de profil", + zapsOn: "Zap-uri active", + }, + skaters: { + clearSearch: "Șterge căutarea", + community: "Comunitatea", + countMany: "skateri", + countOne: "skater", + editProfile: "Editează-mi profilul de skater", + heroDesc: "Găsește-ți oamenii. Răsfoiește echipa de skateri care reprezintă SkateSpots — după stil, stance, nivel și oraș.", + nip05Verified: "NIP-05 verificat", + noMatches: "Nicio potrivire", + noneDesc: "Fii primul care se alătură directorului și pune SkateSpots pe hartă.", + noneTitle: "Încă niciun skater", + noVerifiedMatch: "Niciun skater verificat nu se potrivește", + searchPlaceholder: "Caută după nume, oraș sau npub…", + tryDifferentSearch: "Încearcă o altă căutare sau șterge filtrele.", + tryTurnOffVerified: "Încearcă să oprești filtrul „Verificat” pentru a-i vedea pe toți.", + verifiedFilterTitle: "Arată doar skaterii cu identitate NIP-05 verificată", + }, + skaterCard: { + inDirectory: "Ești în Directorul de Skateri", + joinDesc: "Adaugă-ți stance-ul, stilurile și nivelul ca skaterii să te poată găsi.", + joinTitle: "Alătură-te Directorului de Skateri", + }, + crewsStrip: { + allCrews: "Toate crew-urile", + memberMany: "{{count}} membri", + memberOne: "{{count}} membru", + title: "Crew-uri în această scenă", + }, + labLink: { + coach: "Coach", + filmer: "Filmer", + editor: "Editor", + photographer: "Photographer", + builder: "Builder", + artist: "Artist", + graffiti: "Graffiti", + tattoo: "Tatuaje", + trainer: "Antrenor", + musician: "Muzician", + judge: "Juriu", + barber: "Frizer", + organizer: "Organizator", + lab: "Lab", + linkedProfiles: "Profile Lab legate", + desc: "Conduci și un studio, un serviciu de coaching sau de construcție? Leagă-ți anunțurile din The Lab ca lumea să-ți poată angaja crew-ul. Opțional. Când profilul din The Lab face și el legătura înapoi către acest crew, ambele afișează un", + descEnd: "verde.", + empty: "Nu ai încă niciun profil în The Lab. Creează unul în The Lab pentru a-l lega aici.", + }, + proUpgrade: { + goPro: "Fă-te Pro", + optional: "· opțional", + freeTo: "Listare gratuită. Pro adaugă o", + proBadge: "insignă Pro", + featuredPlacement: "plasare evidențiată", + atTop: "în partea de sus a The Lab.", + active: "Activ", + benefit1: "Insignă aurie „Pro” pe profilul și cardurile tale", + benefit2: "Evidențiat primul când skaterii răsfoiesc The Lab", + benefit3: "Susții SkateSpots — fără reclame, fără intermediari", + platformOwner: "Proprietarul platformei — Pro este mereu activ.", + proActiveOne: "Pro activ · {{count}} zi rămasă. Profilul tău va fi evidențiat.", + proActiveMany: "Pro activ · {{count}} zile rămase. Profilul tău va fi evidențiat.", + context: "Profilul tău rămâne live gratuit după ce Pro expiră — pierzi doar insigna și boost-ul.", + }, + profilePreview: { + viewPublic: "Vezi public", + unnamed: "Skater fără nume", + noHandle: "Încă niciun handle", + }, + pyramid: { + pyramidWord: "PYRAMID", + rankingsWord: "RANKINGS", + subtitle: "Top contribuitori din orașul tău", + yourRank: "Rangul tău", + keepContributing: "Continuă să contribui pentru a urca mai sus!", + topContributors: "Top contribuitori", + noContributors: "Încă niciun contribuitor. Fii primul care adaugă un spot sau creează un eveniment!", + spots: "Spoturi", + events: "Evenimente", + total: "Total", + trust: "Încredere", + }, + detail: { + joined: "S-a alăturat", + about: "Despre", + howWeWork: "Cum lucrăm", + inTheBag: "În geantă", + hardware: "Hardware", + software: "Software", + eventsJudged: "Evenimente jurizate", + eventsOrganized: "Evenimente organizate", + spots: "Spoturi", + viewSpot: "Vezi spotul", + credentialsTitle: "Acreditări și siguranță", + selfAttested: "Auto-atestate de coach — neverificate de SkateSpots.", + formats: "Formate", + levels: "Niveluri", + ages: "Vârste", + languages: "Limbi", + availability: "Disponibilitate", + bookSession: "Rezervă o sesiune", + portfolio: "Portofoliu", + watchReel: "Urmărește pe {{platform}}", + paymentsTitle: "Plăți", + payWhatYouCan: "Plătește cât poți", + bookingFee: "Taxă de rezervare", + payBookingFee: "Plătește taxa de rezervare", + bookingFeeNote: "Plătită direct coach-ului. SkateSpots nu o ține și nu o rambursează.", + bookingFeeNoRail: "Acest coach nu are o adresă Lightning configurată, deci plata din aplicație nu este disponibilă — contactează-l pentru a aranja plata.", + serviceArea: "Zonă de deservire", + licensedInsured: "Autorizat / Asigurat", + studio: "Studio", + shopStudio: "Magazin / Studio", + booksOpen: "Rezervări deschise", + credentials: "Acreditări", + remoteOnline: "Remote / Online disponibil", + graffitiCrew: "Crew de graffiti", + act: "Act", + listen: "Ascultă", + upcomingGigs: "Concerte viitoare", + past: "Trecute", + experience: "Experiență", + yearsCount: "{{count}} ani", + rate: "Tarif", + contact: "Contact", + sendMessage: "Trimite mesaj", + bookGig: "Rezervă pentru un concert", + portfolioDomain: "Portofoliu · {{domain}}", + manage: "Gestionează", + admin: "Admin", + editProfile: "Editează profilul", + publishedTitle: "Ești live", + publishedBody: "Profilul tău este publicat în The Lab. Distribuie-l ca skaterii să te poată găsi.", + manageRemove: "Elimină profilul tău de {{noun}} din The Lab.", + adminTakeDown: "Retrage acest profil de {{noun}}. Va fi ascuns în tot SkateSpots.", + entityLabel: "Profil de {{noun}}", + deleteProfile: "Șterge profilul", + location: "Locație", + servicesSkills: "Servicii și competențe", + noun: { + coach: "coach", + filmer: "filmer", + editor: "editor video", + photographer: "photographer", + builder: "builder", + artist: "artist", + graffiti: "artist de graffiti", + tattoo: "artist de tatuaje", + trainer: "antrenor", + musician: "muzician", + judge: "juriu de evenimente", + organizer: "organizator de evenimente", + barber: "frizer", + profile: "profil", + }, + skillsTitle: { + skills: "Competențe", + servicesGear: "Servicii și echipament", + whatWeBuild: "Ce construim", + whatTheyMake: "Ce realizează", + stylesWork: "Stiluri și lucrări", + styles: "Stiluri", + focusSpecialties: "Focus și specialități", + genresInstruments: "Genuri și instrumente", + formatsSpecialties: "Formate și specialități", + servicesStyles: "Servicii și stiluri", + eventTypesServices: "Tipuri de evenimente și servicii", + }, + }, + rider: { + heroDesc: "Identitatea ta verificabilă de skater. Semnată Nostr, pregătită de print, imposibil de falsificat.", + heroDesc2: "Câștigă insigne de competență atestate de alți skateri. Obține permise de acces în park. Distribuie-ți cardul oriunde.", + headerTagline: "Semnat Nostr · Pregătit de print · Verificat prin QR", + tabCard: "Cardul meu", + tabBadges: "Insigne", + tabAward: "Acordă", + rendering: "Se randează…", + shareCard: "Distribuie cardul", + savePng: "Salvează PNG", + print: "Printează", + copyId: "Copiază ID", + cardType: "Tip de card", + licenseLabel: "Licență de Skater", + licenseSub: "Identitatea ta personală de rider", + parkLabel: "Acces în Park", + parkSub: "Emite permise ca proprietar de park", + theme: "Temă", + holoTitle: "Strălucire holografică", + holoDesc: "Efect de folie animat", + cardDetails: "Detalii card", + skateStyle: "Stil de skate", + ridesFor: "Reprezintă", + ridesForPlaceholder: "Magazin local…", + sponsors: "Sponsori", + sponsorsPlaceholder: "Branduri…", + showOnCard: "Arată pe card", + zaps: "Zap-uri ⚡", + skills: "Competențe", + selected: "{{count}}/6 selectate", + goldBadgesHint1: "Insignele aurii de pe cardul tău vin de la alți skateri care te-au atestat — vezi", + goldBadgesHint2: ".", + parkOwnersOnly: "Doar proprietarii de park.", + parkOwnersDesc: "Emite-o folosind aceeași cheie Nostr care a publicat anunțul park-ului tău. Oricine poate scana QR-ul și verifica semnătura on-chain — nu e nevoie de o autoritate centrală.", + parkDetails: "Detalii park", + parkName: "Numele park-ului", + parkNamePlaceholder: "The Berrics…", + riderName: "Numele riderului", + riderNamePlaceholder: "Nume pe card", + riderNpub: "ID-ul Nostr al riderului (npub)", + accessLevel: "Nivel de acces", + validThru: "Valabil până", + publishToNostr: "Publică pe Nostr", + badgesIntro: "Aceste insigne au fost atestate și semnate de alți skateri pe Nostr. Apar ca jetone aurii ⭐ pe cardul tău.", + earnMore: "Vrei să câștigi mai multe? Skatează în fața cuiva și roagă-l să-ți ateste trucul.", + awardSomeone: "Acordă o insignă altcuiva", + youSawIt: "Ai văzut că s-a întâmplat", + youSawItDesc: "Semnează dovada pe Nostr. Devine parte din înregistrarea lor permanentă — legată criptografic de cheia ta.", + skillsWitnessed: "Competențe pe care le-ai văzut", + whereSeen: "Unde ai văzut-o?", + optional: "(opțional)", + signingOnNostr: "Se semnează pe Nostr…", + awardBadge: "Acordă insigna", + addRiderSkill: "Adaugă npub-ul riderului + cel puțin o competență", + invalidNpub: "npub invalid", + badgeAwarded: "🏅 Insignă acordată!", + badgeSent: "{{skills}} trimise.", + failed: "Eșuat", + couldNotRender: "Cardul nu a putut fi randat", + popupBlocked: "Popup blocat", + popupBlockedDesc: "Permite popup-urile pentru acest site.", + linkCopied: "🔗 Link copiat!", + enterRiderNpub: "Introdu npub-ul riderului", + parkPublished: "✅ Park Access Card publicat!", + publishFailed: "Publicarea a eșuat", + noBadges: "Încă nicio insignă. Skatează în fața cuiva și roagă-l să-ți ateste trucurile!", + showMore: "Arată încă {{count}}", + witnessedBy: "Atestat de", + at: "la", + previewLicense: "Licență de Skater", + previewSince: "Din {{year}}", + previewEvts: "Evts", + previewScan: "Scanează pentru verificare", + previewSkatepark: "Skatepark", + previewAccessPass: "Permis de acces", + previewMemberName: "Numele membrului", + previewIssuedBy: "Emis de proprietarul park-ului · Semnat Nostr", + previewValidThru: "Valabil până", + previewNostrVerified: "Verificat Nostr", + }, + craftFields: { + detailsTitle: "Detalii suplimentare", + deliverables: "Livrabile", + turnaround: "Timp de execuție", + surfaces: "Suprafețe / Pereți", + maxSize: "Dimensiune maximă", + setLength: "Durata setului", + techRider: "Tech Rider", + travel: "Deplasare", + certifications: "Certificări", + insurance: "Asigurare", + permits: "Autorizații", + deposit: "Avans", + minimum: "Minim", + modalities: "Modalități", + duration: "Durata programării", + drone: "Dronă", + leadTime: "Timp de pregătire", + warranty: "Garanție", + }, + craftForm: { + profileImage: "Imagine de profil", + nameHeadline: "Nume / titlu", + about: "Despre", + aboutPlaceholder: "Spune-le skaterilor despre munca ta de {{noun}}…", + required: "obligatoriu", + nip05Title: "Adaugă NIP-05 pentru a construi încredere", + nip05Desc: "Un identificator NIP-05 îi ajută pe skateri să verifice că ești autentic. Foarte recomandat înainte de listare.", + editingNote: "Editezi profilul tău existent de {{noun}} — publicarea îl înlocuiește.", + location: "Locație", + pinned: "📍 Fixat pe hartă ({{lat}}, {{lng}})", + experienceYears: "Experiență (ani)", + expPlaceholder: "de ex. 5", + ratePlaceholder: "de ex. 20k sats / pe proiect", + contactLinks: "Contact și linkuri", + phoneOptional: "Telefon (opțional)", + emailOptional: "Email (opțional)", + socialPlaceholder: "Social (Instagram etc.)", + gettingPaid: "Cum primești bani", + updateProfile: "Actualizează profilul", + publishProfile: "Publică profilul", + rateLeftBlankNote: "Opțional — lasă gol dacă tariful de mai sus este suficient.", + sectionRequired: "{{section}} obligatoriu", + sectionRequiredDesc: "Selectează cel puțin o opțiune la „{{section}}”.", + updated: "Profil actualizat!", + created: "Profil creat!", + headlineExample: "Skate Coach Berlin", + }, + }, + socialUi: { + agentPanel: { + spot: "Spot", + event: "Eveniment", + labPro: "Lab pro", + gear: "Echipament", + crew: "Crew", + description: "Cunoaște acest crew — jam-urile, componența și căutările lui — plus scena mai largă cu date live.", + greeting: "Yo! Sunt Sasquatch, ghidul crew-ului {{crew}}. Întreabă-mă despre crew — următorul nostru jam, cine îl conduce, ce căutăm — sau despre scena mai largă.", + suggestion1: "Care e următorul nostru jam?", + suggestion2: "Cine conduce acest crew?", + suggestion3: "Ce căutăm?", + suggestion4: "Cele mai bune spoturi de lângă noi?", + suggestion5: "Cum e vremea pentru skate?", + thinking: "Sasquatch se gândește…", + placeholder: "Întreabă despre scena ta locală…", + disclaimer: "AI-ul poate greși — linkurile duc către anunțuri reale.", + }, + badge: { + upcomingOne: "{{count}} eveniment viitor", + upcomingMany: "{{count}} evenimente viitoare", + comingOne: "{{count}} eveniment în curând", + comingMany: "{{count}} evenimente în curând", + }, + bell: { + youAreIn: "Ești în {{crew}}! 🛹", + membershipConfirmed: "Apartenență confirmată.", + couldNotConfirm: "Nu s-a putut confirma", + addedYouTo: "te-a adăugat la", + confirmToAppear: "Confirmă pentru a apărea ca membru.", + notifications: "Notificări", + notificationsNew: "Notificări ({{count}} noi)", + unreadCount: "{{count}} notificări necitite", + markRead: "Marchează ca citit", + allClear: "Totul clar", + tabAll: "Toate", + tabTrades: "Tranzacții", + tabSocial: "Social", + tabNews: "Noutăți", + tabCrews: "Crew-uri", + checkingUpdates: "Se verifică actualizările…", + checkingTrades: "Se verifică ofertele și tranzacțiile…", + loadingDrops: "Se încarcă ultimele noutăți…", + emptyAll: "Ofertele, tranzacțiile, zap-urile, răspunsurile, noutățile newsletter-ului și activitatea crew-ului vor apărea aici.", + emptyTrades: "Ofertele, contra-ofertele și confirmările de tranzacție ajung toate aici — fie că vinzi, cumperi sau faci schimb.", + emptySocial: "Zap-urile, reacțiile, repostările, mențiunile, răspunsurile, RSVP-urile la evenimente și actualizările gazdelor ajung toate aici.", + emptyNews: "Noutățile newsletter-ului SkateSpots vor ajunge aici. Abonează-te din pagina Newsletter.", + emptyCrews: "Invitațiile de crew, cererile de colectiv și cererile de apartenență vor apărea aici.", + subscribeBanner: "Abonează-te pentru a primi noutăți în clopoțel", + read: "Citit", + allCaughtUp: "Ești la zi", + }, + chat: { + hidden: "Ascuns", + hideMessageAria: "Ascunde acest mesaj", + hideMessageTitle: "Ascunde mesajul (admin)", + messageHidden: "Mesaj ascuns", + messageHiddenDesc: "Ascuns din chat-ul crew-ului pentru toți.", + messageHideFailed: "Ascunderea mesajului a eșuat", + encryptionUnavailable: "Criptarea nu este disponibilă", + encryptionUnavailableDesc: "Semnatarul tău nu acceptă criptarea NIP-44. Te rugăm să-ți actualizezi extensia.", + messageFailed: "Mesajul a eșuat", + couldNotSend: "Mesajul nu a putut fi trimis.", + noOneToMessage: "Încă nimeni căruia să-i scrii", + noOneToMessageDesc: "Acest crew nu are alți membri cu care să discuți.", + subject: "Chat-ul crew-ului {{crew}}", + title: "Chat de Crew", + cordnBadgeTitle: "Direcționat prin coordonatorul Cordn al acestui crew peste ContextVM. Criptat end-to-end.", + private: "Privat", + privateBadgeTitle: "Criptat end-to-end — doar membrii crew-ului pot citi aceste mesaje.", + encryptedCordn: "Criptat și direcționat prin coordonatorul crew-ului (Cordn) — niciun mesaj nu ajunge pe relay-uri publice.", + encryptedNip17: "Chat de grup criptat pentru fondator și toți membrii listați ai crew-ului.", + moderatorNote: " Poți ascunde mesaje din crew ca moderator.", + loginToSee: "Autentifică-te pentru a vedea dacă poți intra în chat-ul crew-ului.", + membersOnly: "Acest chat este privat pentru membrii crew-ului. Roagă fondatorul să te adauge la crew pentru a participa la conversație.", + noMessages: "Încă niciun mesaj. Începe chat-ul crew-ului — planifică o sesiune, împărtășește un spot, laudă un clip.", + newMessages: "Mesaje noi", + new: "Nou", + placeholder: "Scrie crew-ului tău…", + sendAria: "Trimite mesajul", + }, + collectiveJoinRequest: { + addedTitle: "Adăugat {{name}} la {{collective}} 🛹", + addedDesc: "Vor confirma din partea lor pentru a apărea ca membru verificat.", + couldNotAdd: "Membrul nu a putut fi adăugat", + couldNotDismiss: "Nu s-a putut respinge", + addedDone: "Adăugat", + addedTo: "la", + dismissedDone: "Cerere respinsă de la {{name}}", + wantsToJoin: "vrea să se alăture", + alreadyOnRoster: "Deja pe listă", + openCollective: "Deschide colectivul", + dismiss: "Respinge", + addToCollective: "Adaugă la colectiv", + }, + collectiveMembers: { + confirmed: "Confirmat", + pending: "În așteptare", + pendingTooltip: "Listat de colectiv — se așteaptă confirmarea acestui membru.", + crewOnly: "Doar crew", + crewOnlyTooltip: "Acest membru a ales să fie vizibil doar pentru colegii de crew. Îl vezi pentru că ești în crew.", + hiddenMember: "Membru ascuns", + title: "Membri", + verifiedOf: "{{confirmed}} din {{total}} verificați — fiecare membru confirmat a semnat cu propria cheie Nostr.", + verifiedPerMember: "Apartenența este verificată per membru. Fiecare membru confirmă cu propria cheie Nostr.", + adminsOne: "{{count}} admin ajută la conducerea crew-ului.", + adminsMany: "{{count}} admini ajută la conducerea crew-ului.", + }, + confirmMembership: { + public: "Public", + crewOnly: "Doar crew", + confirmedTitle: "Apartenență confirmată!", + confirmedCrew: "Ești verificat în {{name}} — vizibil doar pentru colegii de crew.", + confirmedPublic: "Acum apari ca membru verificat al {{name}}.", + failed: "Confirmarea a eșuat", + addedTo: "Ai fost adăugat la {{name}}", + addedDesc: "Confirmă-ți apartenența ca să apară ca verificată pe profilul tău și al lor.", + yourVisibility: "Vizibilitatea ta", + confirming: "Se confirmă…", + confirmButton: "Confirmă apartenența", + }, + contacts: { + message: "Mesaj", + removePrivate: "Elimină din contactele private", + savePrivate: "Salvează în contactele private", + seoTitle: "Contacte - SkateSpots", + seoDescription: "Scena ta — colegi de crew, persoane pe care le urmărești și conversații recente, cu contacte private criptate.", + encryptionUnavailableDesc: "Semnatarul tău nu acceptă criptarea NIP-44.", + removed: "Eliminat din contactele private", + saved: "Salvat în contactele private", + savedDesc: "Doar tu poți vedea această listă.", + updateFailed: "Contactele nu au putut fi actualizate", + loginTitle: "Scena ta, într-un singur loc", + loginDesc: "Autentifică-te pentru a-ți vedea colegii de crew, persoanele pe care le urmărești și conversațiile recente — și păstrează o listă privată și criptată de contacte.", + title: "Contacte", + subtitle: "Scena ta — colegi de crew, urmăriri și conversații", + filterPlaceholder: "Filtrează după npub…", + tabCrew: "Crew", + tabFollows: "Urmăriri", + tabDms: "DM-uri", + tabSaved: "Salvate", + emptyCrewmates: "Încă niciun coleg de crew. Alătură-te sau începe un crew pentru a-ți construi rețeaua de scenă.", + emptyFollowing: "Nu urmărești încă pe nimeni.", + emptyDms: "Încă nicio conversație. Scrie unui skater pentru a începe una.", + savedHint: "Această listă este criptată cu cheia ta — doar tu o poți citi. Apasă steluța pe oricine pentru a-l adăuga.", + emptySaved: "Încă niciun contact salvat. Marchează persoane cu steluță din orice filă pentru a-ți construi agenda privată.", + }, + conversation: { + unknown: "Necunoscut", + seoTitle: "Chat cu {{name}} - SkateSpots", + seoDescription: "Conversație privată criptată", + sendFailed: "Mesajul nu a putut fi trimis", + sendFailedDesc: "Te rugăm să încerci din nou într-o clipă.", + tradeConfirmed: "Tranzacție confirmată", + tradeConfirmedDesc: "Reputația a fost actualizată pentru amândoi.", + tradeConfirmFailed: "Tranzacția nu a putut fi confirmată", + somethingWrong: "Ceva a mers greșit.", + soldNote: "Vândut către {{name}}.", + saleConfirmed: "Vânzare confirmată", + saleConfirmedDesc: "{{name}} poate confirma acum partea sa.", + saleConfirmFailed: "Vânzarea nu a putut fi confirmată", + escrowRedeemed: "Escrow revendicat", + escrowRedeemedDesc: "Fondurile sunt acum în portofelul tău Cashu.", + escrowRedeemFailed: "Escrow-ul nu a putut fi revendicat", + loginTitle: "Autentifică-te pentru a vedea mesajele", + secureLoginTitle: "Autentificare securizată necesară", + secureLoginDesc: "Mesajele necesită o aplicație de semnare securizată.", + encrypted: "Criptat", + refresh: "Reîmprospătează", + didCompleteTrade: "Ai finalizat această tranzacție?", + recordedSale: "{{name}} a înregistrat vânzarea. Confirmă pentru a actualiza reputația pentru amândoi.", + confirm: "Confirmă", + confirmSale: "Confirmi această vânzare?", + askedToRecord: "{{name}} ți-a cerut să o înregistrezi. Confirmarea construiește reputație pentru amândoi.", + confirmSaleButton: "Confirmă vânzarea", + redeemEscrow: "Revendică escrow", + escrowAppOnly: "Escrow-ul Cashu este doar în aplicație — deschide SkateSpots pe telefon pentru a revendica.", + startThread: "Trimite un mesaj pentru a începe conversația", + placeholder: "Scrie un mesaj...", + e2eeNote: "Mesajele sunt criptate end-to-end folosind NIP-17", + }, + coordinator: { + secondsAgo: "acum {{count}}s", + minutesAgo: "acum {{count}}m", + hoursAgo: "acum {{count}}h", + daysAgo: "acum {{count}}z", + statusIdle: "Neverificat", + statusChecking: "Se verifică…", + statusOnline: "Conectat", + statusStale: "Tăcut", + statusOffline: "Nevăzut", + statusError: "Inaccesibil", + notACoordinator: "Acesta nu este un coordonator", + notACoordinatorDesc: "Lipește un nprofile, un npub sau un link cordn.net.", + added: "Coordonator adăugat", + relayOne: "{{count}} relay", + relayMany: "{{count}} relay-uri", + lastSeen: "văzut ultima dată {{time}}", + onlineDesc: "Anunță. Grupurile care îl folosesc pot livra mesaje acum.", + staleDesc: "Găsit, dar nu a anunțat recent — poate dorme.", + offlineDesc: "Niciun anunț văzut. Poate fi privat (e în regulă) sau pur și simplu offline.", + errorDesc: "Relay-urile nu au putut fi contactate.", + idleDesc: "Se verifică…", + checkingDesc: "Se caută anunțul lui…", + eventFoundOne: "{{count}} eveniment găsit.", + eventFoundMany: "{{count}} evenimente găsite.", + check: "Verifică", + addLinkCopied: "Link de adăugare copiat", + copyFailed: "Copierea a eșuat", + copyManually: "Copiază-l manual.", + addLink: "Link de adăugare", + removeConfirm: "Elimini acest coordonator de pe acest dispozitiv?", + scanToJoin: "Scanează în Cordn pentru a te alătura acestui coordonator.", + noCoordinator: "Încă niciun coordonator", + noCoordinatorDescA: "Un coordonator livrează mesajele de grup", + encryptedWord: "criptate", + noCoordinatorDescB: "ale crew-ului tău în ordine. Vede cine, când și în ce grup — niciodată conținutul. Alege unul sau rulează-l pe al tău.", + change: "Schimbă coordonatorul", + addTitle: "Adaugă un coordonator", + add: "Adaugă", + scanQR: "Scanează un QR de coordonator", + inputPlaceholder: "nprofile… sau un link cordn.net", + runOwn: "Rulează-l pe al tău", + runOwnDesc: "Poate trăi pe un telefon vechi, un Raspberry Pi sau orice cutie mică pe care o lași pornită. Grupul tău funcționează cât timp e pornit — și poți muta grupul oricând.", + onPhone: "Pe un telefon", + onPhoneDesc: "Folosește aplicația Cordn Coordinator, apoi scanează QR-ul aici pentru a-l adăuga.", + openCordn: "Deschide Cordn", + scanItsQR: "Scanează QR-ul lui", + onServer: "Pe un server", + commandCopied: "Comandă copiată", + copyCommand: "Copiază comanda", + androidSleep: "Android poate adormi un coordonator pe telefon. Așteaptă-te să muți un grup din când în când.", + privacyNote: "🔒 Un coordonator vede doar text criptat și metadate — niciodată conținutul mesajelor. Rulează-l pe al tău ca să păstrezi chiar și metadatele ale tale.", + customTitle: "Coordonator de chat personalizat", + customBadge: "· experimental · relay-ul tău", + customDescShort: "Opțional — crew-ul tău are deja chat criptat end-to-end inclus, deci nu ai nevoie de asta. Setează-l doar dacă rulezi propriul", + remove: "Elimină", + pointerNote: "Doar indicator deocamdată: un endpoint wss:// este folosit ca relay de chat al crew-ului; unul https:// prin relay-ul ContextVM partajat. MLS-ul Cordn real nu este încă conectat.", + cordnCoordinator: "Coordonator Cordn", + invalid: "Nu pare a fi un coordonator. Lipește un nprofile, un link cordn.net sau un URL https/wss.", + useMine: "Folosește coordonatorul meu", + }, + createCrew: { + seoTitle: "Creează un Crew - SkateSpots", + seoDescription: "Creează-ți crew-ul de skate — teren de casă, membri și spoturi.", + loginRequired: "Autentificare necesară", + loginRequiredDesc: "Trebuie să te autentifici pentru a crea un crew.", + backToCrews: "Înapoi la Crew-uri", + title: "Creează un Crew", + intro: "Familia ta de skate — oamenii cu care skatezi. Doar un nume e de ajuns pentru a începe; restul este opțional.", + }, + crew: { + seoTitleNamed: "{{name}} - Crew SkateSpots", + seoTitle: "Crew - SkateSpots", + seoDescription: "Un crew de skate pe SkateSpots.", + postHidden: "Postare ascunsă", + postHiddenDesc: "Eliminată din feed-ul crew-ului pentru toți.", + postHideFailed: "Ascunderea postării a eșuat", + backToCrews: "Înapoi la Crew-uri", + disband: "Desființează", + youAreCaptain: "Ești căpitan", + member: "Membru", + askSasquatch: "Întreabă-l pe Sasquatch", + agent: "Agentul Crew-ului", + agentDesc: "Ghidul AI al crew-ului tău — spoturi din apropiere, evenimente, coaches și echipament, cu date live.", + eventsTab: "Evenimente", + chatTab: "Chat", + newMessages: "Mesaje noi", + hostJam: "Găzduiește un jam", + noEvents: "Încă niciun eveniment de crew. Găzduiește un jam, o competiție sau o întâlnire ca crew — conectează crew-ul la calendarul de evenimente și permite oamenilor să-l zap-uiască.", + support: "Susține", + zapCrew: "Zap-uiește crew-ul", + bandTitle: "Trupa Crew-ului", + bandTagline: "Muzică live · skate și sunet", + listenTitle: "Ascultă: {{domain}}", + listen: "Ascultă melodiile", + setUpGig: "Organizează un concert", + bookGigMessage: "Salut {{crew}} — interesat să rezerv {{band}} pentru un concert. Ești disponibil să discutăm date?", + messageAboutGig: "Scrie despre un concert", + gigHintA: "adaugă un eveniment muzical în calendar găzduit de acest crew.", + messageShort: "Mesaj", + gigHintB: "deschide un DM criptat către crew pentru a stabili datele și detaliile.", + homeSpots: "Spoturi de casă", + viewSpot: "Vezi spotul", + seeOnMap: "Vezi pe hartă →", + founderLinks: "Fondator și linkuri", + startedBy: "Început de {{name}}", + opens: "Deschide: {{domain}}", + }, + crews: { + seoTitle: "Crew-uri - SkateSpots", + seoDescription: "Găsește-ți oamenii. Descoperă crew-uri de skate locale, colective și comunități de lângă tine.", + videoPartTooltip: "Acest crew are o parte video", + part: "Parte", + bandTooltip: "Trupa crew-ului: {{name}}", + band: "Trupă", + focusAll: "Toate", + focusAllShort: "Toate", + focusDiy: "DIY", + focusPhoto: "Foto", + focusCoaching: "Coaching", + focusArt: "Artă", + focusMusic: "Muzică", + focusPhysio: "Fizioterapie", + focusMixed: "Mixt", + title: "Crew-uri", + heroLine: "Familia ta de skate ancorată pe hartă — oamenii cu care skatezi", + heroWith: "cu", + heroRest: ", nu cei pe care îi angajezi (acela e The Lab).", + crewCountOne: "{{count}} crew", + crewCountMany: "{{count}} crew-uri", + cityCountOne: "{{count}} oraș", + cityCountMany: "{{count}} orașe", + createCrew: "Creează Crew", + create: "Creează", + searchPlaceholder: "Caută crew-uri după nume sau oraș…", + filterTitle: "Filtrează crew-urile", + filterDesc: "Ce îi pasionează pe crew.", + nearMe: "Aproape de mine", + emptySearchTitle: "Niciun crew nu se potrivește căutării", + emptySearchHint: "Nimic găsit pentru „{{query}}”. Încearcă alt nume sau oraș.", + clearSearch: "Șterge căutarea", + emptyFocusTitle: "Încă niciun crew {{label}}", + emptyFocusHint: "Nimeni nu arborează încă steagul „{{label}}” aici. Arată toate crew-urile sau începe-l tu pe acesta.", + showAll: "Arată toate crew-urile", + claimTitle: "Revendică-ți scena locală", + claimHint: "Încă niciun crew plantat aici. Fii primul — începe-ți crew-ul, leagă-ți spoturile de casă și pune-ți scena pe hartă ca toți să o găsească.", + }, + crewCoordinator: { + privateChat: "Chat privat de Crew", + on: "Activ", + defaultA: "Fila", + chatWord: "Chat", + defaultB: "este", + e2ee: "criptată end-to-end", + defaultC: "pentru fondator și toți membrii listați — nimic de configurat. Mesajele sunt sigilate cu cheia fiecărui membru (NIP-17), deci doar crew-ul tău le poate citi.", + advancedA: "Avansat: rulează-l pe al tău", + cordnCoordinator: "Coordonator Cordn", + routeThrough: "Direcționează chat-ul prin el", + coordinator: "Coordonator", + deliveredOver: "Livrat prin", + sharedRelay: "— relay-ul ContextVM partajat.", + ownRelay: "— relay-ul propriu al crew-ului tău.", + chatLive: "Chatul privat este activ", + routesA: "Fila", + routesB: "este direcționată prin acest coordonator: mesajele sunt criptate end-to-end (NIP-44, sigilate pentru fiecare membru), deci el tratează doar trafic sigilat.", + publicWarning: "Atenție: este adresat prin relay-ul ContextVM partajat, deci textul criptat și metadatele lui (care crew și când) sunt vizibile public — doar că nu pot fi citite. Îndreaptă crew-ul către un relay wss:// privat pentru a păstra privat chiar și asta.", + ownRelaySafe: "Nimic specific crew-ului nu părăsește relay-ul propriu al crew-ului tău.", + manage: "Gestionează coordonatorul", + open: "Deschide {{domain}}", + runBy: "Coordonator condus de", + }, + dms: { + securityReminder: "Memento de securitate", + phishingStrong: "SkateSpots nu îți va scrie niciodată în DM", + phishingRest: "cerându-ți să-ți verifici contul, să-ți împărtășești cheile sau să trimiți plăți. Dacă cineva pretinde că e suport SkateSpots prin DM — este o înșelătorie.", + dismissReminder: "Respinge mementoul de securitate", + peopleCount: "{{count}} persoane", + youPrefix: "Tu: ", + unreadMessages: "Mesaje necitite", + seoTitle: "Mesaje - SkateSpots", + seoDescription: "Mesaje private criptate cu comunitatea de skateboarding", + loginTitle: "Autentifică-te pentru a accesa mesajele", + loginDesc: "Mesagerie privată, criptată, cu skaterii din comunitate", + secureLoginTitle: "Autentificare securizată necesară", + secureLoginDesc: "Mesajele private necesită o aplicație de semnare securizată pentru a-ți cripta conversațiile.", + onAndroid: "Pe Android:", + useAmber: "Folosește aplicația Amber", + getAmber: "Obține Amber →", + onIOS: "Pe iOS:", + iosHint: "Încearcă să te autentifici cu o conexiune bunker (nsec.app) din Setări", + browserHint: "Încearcă să te autentifici cu o extensie de browser precum Alby sau nos2x care acceptă criptare.", + title: "Mesaje", + subtitleFull: "Criptat end-to-end cu NIP-17", + subtitleShort: "Criptat", + newMessage: "Mesaj nou", + groups: "Grupuri", + loadFailed: "Încărcarea mesajelor a eșuat", + emptyTitle: "Încă niciun mesaj", + emptyDesc: "Începe o conversație cu cineva din comunitate", + startConversation: "Începe o conversație", + undecryptableOne: "{{count}} mesaj criptat nu a putut fi deschis de semnatarul tău.", + undecryptableMany: "{{count}} mesaje criptate nu au putut fi deschise de semnatarul tău.", + }, + editCrew: { + seoTitleNamed: "Editează {{name}} - SkateSpots", + seoTitle: "Editează Crew - SkateSpots", + seoDescription: "Editează-ți crew-ul de skate.", + loginRequired: "Autentificare necesară", + notYours: "Nu este crew-ul tău", + notYoursDesc: "Doar fondatorul crew-ului poate edita acest crew.", + backToCrew: "Înapoi la Crew", + title: "Editează Crew", + }, + form: { + add: "Adaugă", + added: "Adăugat", + addNameInBasicsA: "Adaugă un nume de crew înapoi la", + addNameInBasicsB: "pentru a termina.", + adminsDescA: "Fă membri de încredere", + adminsWord: "admini", + adminsDescB: "— pot invita membri și modera feed-ul și chat-ul crew-ului cu propriile chei. Tu (fondatorul) rămâi mereu proprietarul identității crew-ului.", + agentDescA: "Adaugă", + agentDescB: ", un ghid AI care chiar îți cunoaște crew-ul. Membrii pot întreba despre", + agentDescC: "— plus spoturi, evenimente, coaches și echipament din apropiere, din date live SkateSpots. Rulează direct în browser; fără chei sau configurare. Este la început (AI gratuit, deci ocazional lent).", + agentDescStrong: "următorul tău jam, cine conduce crew-ul, ce căutați și vibe-ul vostru", + agentEnabledNote: "Sasquatch va apărea pe pagina crew-ului tău după ce salvezi.", + bandDesc: "Ai o trupă? Scena de skate și muzica locală merg mână în mână — adaugă numele trupei și un link către melodii.", + bandFooterA: "Pentru un profil complet de trupă (genuri, instrumente, concerte), creează un", + musicianWord: "Muzician", + bandFooterB: "în The Lab, apoi leagă-l în secțiunea", + linkedLabWord: "Profile Lab legate", + bandFooterC: "de mai sus.", + bandMusicWord: "Trupă și muzică", + bandName: "Numele trupei", + bandNamePlaceholder: "de ex. The Bail Outs", + bandNudgeA: "Ai o trupă — apasă pentru a-ți seta", + crewTypeWord: "Tipul de Crew", + bandNudgeB: "la", + bandNudgeC: "ca să apari și în scena de Muzică din The Lab.", + beta: "Beta", + bioLabel: "Despre / Manifest", + bioPlaceholder: "Cine ești, ce skatezi, povestea ta...", + continue: "Continuă", + crewCreated: "Crew creat!", + crewUpdated: "Crew actualizat!", + crewName: "Numele Crew-ului", + crewOnlyWord: "Doar crew", + crewType: "Tipul de Crew", + crewTypeDescA: "Crew-ul tău este concentrat pe o meserie? Alege una pentru a apărea și în scena respectivă din", + theLab: "The Lab", + crewTypeDescB: ". Crew-urile obișnuite de skate rămân", + mixedWord: "Mixt", + crewTypeDescC: ".", + customVibeHint: "Adaugă-ți propriul vibe sau focus cu un #", + customVibePlaceholder: "de ex. downhill, night-sessions, no-comply", + editDesc: "Identitatea crew-ului tău, terenul de casă și membrii", + enableAgent: "Activează Agentul Crew-ului", + enableTreasury: "Activează Trezoreria Crew-ului", + failed: "Eșuat", + founded: "Fondat (an)", + geolocationUnsupported: "Geolocația nu este acceptată", + gettingLocation: "Se obține...", + goalHint: "Asigură-te că profilul tău Nostr are o adresă Lightning (lud16) ca să poată ajunge contribuțiile.", + goalPlaceholder: "de ex. Betonăm spotul DIY", + goalTarget: "Țintă (sats)", + goalWhat: "Care este ținta?", + homeSpots: "Spoturi de casă", + homeSpotsDesc: "Leagă spoturile pe care le frecventează crew-ul tău — se vor conecta la crew-ul tău pe hartă", + homeTurf: "Teren de casă (Oraș / Zonă)", + homeTurfPlaceholder: "Bristol, UK", + instagramDetected: "Clip Instagram detectat", + invalidMember: "Introdu un npub, nprofile sau cheie publică hex validă.", + latitude: "Latitudine", + leaveBlankLocation: "Lasă gol pentru a păstra locația actuală a terenului de casă.", + links: "Linkuri", + locationError: "Eroare de locație", + locationFound: "Locație găsită", + logoAlt: "Crew", + logoHint: "Un logo face crew-ul tău instant recognoscibil pe hartă și în feed-uri. Pătratul funcționează cel mai bine.", + logoLabel: "Logo / Fotografie Crew", + logoUploaded: "Logo încărcat", + longitude: "Longitudine", + looksGood: "Arată bine", + makeAdmin: "Fă admin", + mapPin: "Pin pe hartă", + mapPinHint: "Pune-ți crew-ul pe hartă ca localnicii să te găsească. Apasă butonul — fără tastare.", + memberAlreadyAdded: "Acest membru este deja adăugat.", + members: "Membri", + membersDesc: "Adaugă conturile Nostr ale crew-ului tău. Fiecare membru confirmă din propria cheie — până atunci apar ca „în așteptare”.", + musicLink: "Link muzical", + nameCrew: "Dă un nume crew-ului", + nameCrewDesc: "Un crew are nevoie de un nume înainte de a continua.", + nameCrewFirst: "Dă mai întâi un nume crew-ului", + nameHint: "Singurul lucru de care chiar ai nevoie. Îl poți schimba mai târziu.", + namePlaceholder: "de ex. Backyard Bandits", + nameRequired: "Nume obligatoriu", + nameRequiredDesc: "Dă un nume crew-ului tău.", + nip05DescA: "Un handle verificabil pe care îl controlezi pe orice domeniu, de ex.", + nip05DescB: ". Este verificat față de cheia fondatorului acestui crew și poți adăuga câteva — fiecare afișează o bifă verde când domeniul îl confirmă.", + nip05Label: "NIP-05 al Crew-ului", + nip05Placeholder: "crew@domeniultau.com", + nip05Add: "Adaugă", + nip05Invalid: "Introdu un handle precum crew@domeniultau.com", + nip05TooMany: "Poți adăuga până la {{count}} handle-uri.", + nip05Unverified: "Neverificat", + nip05Remove: "Elimină {{handle}}", + notAKeyA: "Încă nu pare a fi o cheie Nostr — lipește un", + notAKeyB: ",", + notAKeyC: ", sau cheie publică hex.", + onlyYouTubeInstagram: "Sunt acceptate doar linkuri YouTube și Instagram.", + openCall: "Apel deschis", + openCallDescA: "Cauți un filmer, editor sau sânge nou? Lansează un apel — apare pe pagina crew-ului tău ca persoanele potrivite din", + openCallDescB: "să te poată contacta.", + optional: "· opțional", + optionalParen: "(opțional)", + otherSocials: "Alte rețele sociale", + otherSocialsDesc: "Adaugă câte vrei — YouTube, TikTok, Discord, Telegram etc.", + ownVisibility: "propria vizibilitate", + progress: "Progres", + publicWord: "Public", + publishedToScene: "Publicat în scenă.", + publishFailed: "Publicarea a eșuat", + publishing: "Se publică...", + ready: "Gata", + readyToRollA: "Gata de start — apasă", + readyToRollB: "când vrei.", + removeAdminRole: "Elimină rolul de admin", + removeMember: "Elimină membrul", + removeSocial: "Elimină linkul social", + removeVibe: "Elimină {{vibe}}", + roles: "Roluri:", + sasquatch: "Sasquatch", + saveCrew: "Salvează Crew-ul", + skipToEnd: "Sari la final", + socialPlaceholder: "@numeutilizator sau link", + sponsorDesc: "Dacă un magazin local susține crew-ul tău, alege-l aici pentru a afișa un banner „Sponsorizat de” care duce la magazinul lui.", + stepAria: "Pasul {{step}}: {{title}}", + stepBasics: "Elementele de bază", + stepBasicsShort: "Bază", + stepBasicsHint: "Doar esențialul — poți porni un crew doar cu acest pas.", + stepVibe: "Identitate și vibe", + stepVibeShort: "Vibe", + stepVibeHint: "Cum apare crew-ul tău în aplicație. Totul opțional.", + stepSquad: "Echipă și spoturi", + stepSquadShort: "Echipă", + stepSquadHint: "Adaugă-ți oamenii și terenul de casă. Poți face asta oricând mai târziu.", + stepExtras: "Extra", + stepExtrasShort: "Extra", + stepExtrasHint: "Power-up-uri pentru mai târziu — sari peste ce nu ești sigur.", + extrasAllOptional: "Totul din acest pas este opțional.", + groupIdentity: "Identitate", + groupIdentityHint: "Handle, linkuri", + groupAi: "Sasquatch AI", + groupShowcase: "Vitrină", + groupPayments: "Plăți și trezorerie", + groupIntegrations: "Integrări", + groupAdvanced: "Avansat", + groupAdvancedHint: "experimental", + pro: "Pro", + agentProNote: "Susținut de Sasquatch. Pro primește cele mai bune modele; fără Pro folosește o variantă gratuită.", + stepOf: "Pasul {{step}} din {{total}}", + treasuryDescA: "Strânge sats pentru un obiectiv comun — repararea spotului DIY local, o deplasare a crew-ului, un fond de premii pentru competiții. Este un obiectiv Lightning transparent; zap-urile merg", + treasuryDescStrong: "direct în portofelul tău", + treasuryDescB: "(prin adresa Lightning a profilului tău). SkateSpots nu ține niciodată fondurile.", + upload: "Încarcă", + uploadFailed: "Încărcarea a eșuat", + useCurrentLocation: "Folosește locația curentă", + vibeLabel: "Vibe / Focus", + videoDescA: "Partea completă a crew-ului tău, un montaj sau cel mai recent clip. Lipește un link", + videoDescB: "— se va reda direct pe pagina crew-ului tău.", + visibilityDescA: "Fiecare membru își controlează", + visibilityDescB: "— când confirmă din cheia lui poate alege", + visibilityDescC: "— ascuns de străini). Nu poți seta asta pentru ei; este decizia lor.", + website: "Site", + yourRoles: "Rolurile tale (Team Leader)", + youtubeDetected: "Video YouTube detectat", + invalidUrl: "Introdu un link valid (de ex. https://example.com).", + }, + groupConversation: { + seoTitle: "Chat de grup - SkateSpots", + invalidLink: "Acest link de chat de grup este invalid.", + loginTitle: "Autentifică-te pentru a vedea acest grup", + secureSignerTitle: "Semnatar securizat necesar", + secureSignerDesc: "Mesajele de grup necesită un semnatar compatibil NIP-44.", + encryptedGroup: "Grup criptat end-to-end", + empty: "Încă niciun mesaj — salută grupul.", + placeholder: "Scrie grupului...", + }, + hero: { + established: "Din {{year}}", + teamLeader: "Team leader: {{name}}", + ledBy: "Condus de", + }, + inviteCard: { + acceptedTitle: "Invitație acceptată 🛹", + acceptedDesc: "Fondatorul crew-ului confirmă membrii pe {{crew}}. Vei apărea pe listă după ce aprobă.", + couldNotAccept: "Nu s-a putut accepta", + couldNotDecline: "Nu s-a putut refuza", + acceptedDone: "Acceptat —", + confirmsMembers: "confirmă membrii", + declinedDone: "Refuzat invitația la {{crew}}", + invitedYou: "te-a invitat să te alături", + admin: "Admin", + accept: "Acceptă", + decline: "Refuză", + }, + inviteDialog: { + messageIntro: "Yo — alătură-te crew-ului {{crew}} pe SkateSpots 🛹", + messageBody: "Autentifică-te cu cheia ta Nostr, apoi cere să te alături din pagina crew-ului.", + copyFailed: "Copierea a eșuat", + shareTitle: "Alătură-te {{crew}}", + sentTitle: "Invitație trimisă! 🛹", + sentDesc: "Vor primi o notificare pentru a accepta sau refuza.", + couldNotSend: "Invitația nu a putut fi trimisă", + trigger: "Invită", + title: "Invită la {{crew}}", + description: "Trimite o invitație pe cheia Nostr a cuiva sau distribuie un link.", + sendTab: "Trimite invitație", + shareTab: "Distribuie link", + npubLabel: "npub-ul skaterului", + invalidNpub: "Nu pare a fi un npub valid.", + noteLabel: "Notă", + optional: "(opțional)", + notePlaceholder: "Vino să skatezi cu noi…", + inviteAsAdmin: "Invită ca admin", + inviteAsAdminDesc: "Poate gestiona crew-ul și invita pe alții.", + sendButton: "Trimite invitația", + sendFooter: "Vor primi o notificare pentru a accepta sau refuza. Apartenența contează doar după ce acceptă.", + inviteLink: "Link de invitație", + messageLabel: "Mesaj", + copyMessage: "Copiază mesajul", + founderHint: "Ca fondator, poți adăuga și direct cheia unui membru, după care el confirmă.", + addMemberSettings: "Adaugă membru în setările crew-ului", + }, + joinRequest: { + moreCount: "+{{count}} mai multe", + addedTitle: "Adăugat {{name}} la {{crew}} 🛹", + addedDesc: "Vor confirma din partea lor pentru a apărea ca membru.", + vouchedTitle: "Ai garantat pentru {{name}} 🤝", + vouchedDesc: "Fondatorul {{crew}} îți va vedea recomandarea și îl poate adăuga.", + couldNotEndorse: "Recomandarea a eșuat", + endorsedDoneA: "Ai garantat pentru", + endorsedDoneB: "— fondatorul va confirma", + vouchedBy: "Garantat de", + approveAndAdd: "Aprobă și adaugă", + addToCrew: "Adaugă la crew", + vouchedWaiting: "Garantat — se așteaptă fondatorul", + vouchForThem: "Garantează pentru el", + leadershipOnly: "Doar conducerea crew-ului.", + adminHelp: "Adminii nu pot adăuga membri direct — garantarea îi spune fondatorului că susții acest rider.", + }, + leadership: { + teamLeader: "Team Leader", + captain: "Căpitan", + verifiedMember: "Membru verificat", + messageName: "Scrie-i lui {{name}}", + title: "Conducere", + captainsOne: "{{count}} Căpitan", + captainsMany: "{{count}} Căpitani", + footer: "Team Leader-ul conduce lista; Căpitanii ajută la invitat, găzduit jam-uri și mențin crew-ul ordonat.", + }, + linkField: { + title: "Crew legat", + description: "Conduci și un crew? Leagă-l ca oamenii să poată sări între studioul tău și crew-ul tău. Opțional. Leagă acest crew înapoi la profil din editorul de crew și va afișa un", + descriptionRest: "verde pe ambele.", + none: "Nu ai încă niciun crew. Creează unul din pagina Crew-uri pentru a-l lega aici.", + linkedCrew: "Crew legat ({{id}})", + }, + lookingFor: { + title: "Apel deschis", + subtitle: "Acest crew caută:", + }, + memberVisibility: { + updatedTitle: "Vizibilitate actualizată", + updatedCrew: "Acum apari doar pentru colegii de crew.", + updatedPublic: "Acum apari public în acest crew.", + couldNotUpdate: "Nu s-a putut actualiza", + title: "Vizibilitatea ta în acest crew", + save: "Salvează vizibilitatea", + }, + newMessage: { + inCrew: "În crew-ul tău: {{crews}}", + crewmate: "Coleg de crew", + following: "Urmărești", + invalidKey: "Nu pare a fi un npub sau o cheie publică validă.", + description: "Caută-ți oamenii după nume sau lipește un npub pentru a scrie oricui. Selectează doi sau mai mulți pentru a începe un grup.", + searchPlaceholder: "Caută nume sau lipește npub1...", + messageThisKey: "Scrie acestei chei", + loadingPeople: "Se încarcă oamenii tăi...", + noPeople: "Încă niciun coleg de crew sau urmărire.", + noPeopleHint: "Lipește npub-ul cuiva mai sus pentru a începe o conversație.", + yourCrews: "Crew-urile tale", + selected: "{{count}} selectate", + startGroup: "Începe grup ({{count}})", + message: "Mesaj", + }, + nip05: { + mismatch: "Acest domeniu indică handle-ul către o altă cheie Nostr decât cea a fondatorului crew-ului. Neverificat.", + verified: "Verificat — domeniul confirmă că acest handle aparține cheii fondatorului crew-ului.", + }, + requestCollective: { + sentTitle: "Cerere trimisă 🤝", + sentDesc: "{{name}} o va vedea în notificările sale și te poate adăuga.", + couldNotSend: "Cererea nu a putut fi trimisă", + title: "Alătură-te acestui colectiv", + waiting: "Cerere trimisă — se așteaptă {{name}}.", + askA: "Roagă crew-ul din spatele", + askB: "să te adauge pe listă. Vor primi o notificare și te pot adăuga cu o singură atingere.", + placeholder: "Opțional: spune de ce ai fi potrivit…", + sendButton: "Trimite cererea", + }, + requestToJoin: { + sentTitle: "Cerere trimisă! 🛹", + sentDesc: "Conducerea {{crew}} o va vedea în notificările sale.", + couldNotSend: "Cererea nu a putut fi trimisă", + trigger: "Cerere de alăturare", + title: "Alătură-te {{crew}}", + description: "Îi notifică pe fondatorul și adminii crew-ului ca să te poată adăuga.", + placeholder: "Salut — unde skatezi, pe cine cunoști, de ce vrei să intri…", + sending: "Se trimite…", + sendButton: "Trimite cererea de alăturare", + }, + sponsorBanner: { + loading: "Se încarcă sponsorul…", + sponsoredBy: "Sponsorizat de", + }, + sponsorPicker: { + selected: "Sponsor selectat", + setLoading: "Sponsor setat (magazinul se încarcă…)", + set: "Sponsor setat", + clearAria: "Șterge sponsorul", + searchPlaceholder: "Caută magazine de skate după nume sau oraș…", + loading: "Se încarcă magazinele…", + noMatch: "Niciun magazin nu se potrivește — încearcă altă căutare.", + none: "Încă nu s-au găsit magazine.", + }, + treasury: { + title: "Trezoreria Crew-ului", + ofGoal: "din obiectiv de {{target}}", + goalReached: "Obiectiv atins!", + funded: "{{percent}}% finanțat", + contributionOne: "{{count}} contribuție", + contributionMany: "{{count}} contribuții", + daysLeft: "{{days}}z rămase", + closed: "închis", + nonCustodial: "Fără custodie · zap-urile merg direct în portofelul Lightning al crew-ului", + }, + userStatus: { + atSpot: "📍 La un spot", + autoClears: "⏱️ Se șterge automat în {{min}} min", + }, + video: { + title: "Partea", + fullVideo: "Video complet · montaj", + latestClip: "Ultimul clip", + watch: "Urmărește", + iframeTitle: "{{crew}} — video", + playAria: "Redă videoclipul {{crew}}", + thumbAlt: "Miniatura videoclipului {{crew}}", + instagramTitle: "Clip Instagram", + }, + vouch: { + removedTitle: "Garanție eliminată", + vouchedTitle: "Ai garantat!", + removedDesc: "Nu mai garantezi pentru {{name}}.", + vouchedDesc: "Ai garantat pentru {{name}}. Scena se încrede în ai ei.", + couldNotVouch: "Garanția a eșuat", + title: "Garanții de scenă", + sceneVerified: "Verificat de scenă", + vouched: "Garantat", + newUnvouched: "Nou · negarantat", + checking: "Se verifică scena…", + empty: "Încă nicio garanție. Garanțiile de la skateri din cercurile tale sunt cel mai bun semnal că cineva este autentic — nu un necunoscut care a intrat din întâmplare.", + countOne: "{{count}} garanție", + countMany: "{{count}} garanții", + trusted: "{{count}} de la skateri din web-ul tău de încredere", + remove: "Elimină garanția", + vouchFor: "Garantează pentru {{name}}", + ownerNote: "Skaterii care îți cunosc munca pot garanta pentru tine aici.", + }, + }, +}; export default roBatch5; diff --git a/src/i18n/ro/batch6.ts b/src/i18n/ro/batch6.ts index a02ec83..bb99cba 100644 --- a/src/i18n/ro/batch6.ts +++ b/src/i18n/ro/batch6.ts @@ -1,4 +1,1968 @@ -/** ro — batch 6. Filled by the translation pass; empty until then. */ -const roBatch6 = {}; +const roBatch6 = { + placesUi: { + addToCalendar: { + add: "Adaugă în calendar", + appleOutlook: "Apple / Outlook (.ics)", + google: "Google Calendar", + }, + attendees: { + goingCount: "merg", + goingTab: "Merg ({{count}})", + interestedTab: "Interesat ({{count}})", + nobodyGoing: "Nimeni nu a confirmat încă.", + nobodyInterested: "Nimeni nu a marcat interes încă.", + noRsvps: "Încă niciun RSVP — fii primul care spune că vine.", + trusted: "De încredere", + trustedTitle: "Cineva pe care îl urmărești sau un cartograf de încredere", + youTrust: "în care ai încredere", + }, + bounty: { + addressCoords: "Adresă și coordonate", + basic: "De bază", + contactInfo: "Informații de contact", + description: "Descriere", + earningPotential: "Potencial de câștig", + excellent: "Excelent!", + gettingStarted: "Primii pași", + good: "Bun", + onePhoto: "Cel puțin 1 fotografie", + openingHours: "Program de funcționare", + shopName: "Numele Shop-ului", + threePhotos: "3+ fotografii", + tip: "💡 Calitate mai mare = mai multe zap-uri din comunitate!", + }, + calendar: { + allDay: "Toată ziua", + eventDay: "Ziua Event-ului", + eventsOnDay: "{{count}} Event-uri", + eventsThisMonth: "Event-uri luna aceasta", + going: "merg", + months: { + january: "Ianuarie", + february: "Februarie", + march: "Martie", + april: "Aprilie", + may: "Mai", + june: "Iunie", + july: "Iulie", + august: "August", + september: "Septembrie", + october: "Octombrie", + november: "Noiembrie", + december: "Decembrie", + }, + nextMonth: "Luna următoare", + nothingOnDay: "Nimic în această zi.", + prevMonth: "Luna precedentă", + tapHighlighted: "Atinge o zi evidențiată pentru a vedea ce se întâmplă.", + today: "Astăzi", + tourDay: "Ziua Turului", + toursOnDay: "{{count}} Tururi", + toursThisMonth: "Tururi luna aceasta", + weekdays: { + sun: "Dum", + mon: "Lun", + tue: "Mar", + wed: "Mie", + thu: "Joi", + fri: "Vin", + sat: "Sâm", + }, + weekdaysShort: { + sun: "D", + mon: "L", + tue: "M", + wed: "M", + thu: "J", + fri: "V", + sat: "S", + }, + }, + countdown: { + ended: "S-a încheiat", + happeningNow: "Se întâmplă acum", + inDays: "În {{count}} zile", + inHoursMins: "În {{hours}}h {{mins}}m", + inMins: "În {{count}} min", + startingNow: "Începe acum", + tomorrow: "Mâine", + }, + createEvent: { + add: "Adaugă", + addNewSpot: "Adaugă un Spot nou →", + changeSpot: "Schimbă Spotul", + created: "Event creat!", + createdDesc: "Event-ul tău a fost publicat în rețea.", + entryFee: "Taxă de participare", + entryFeeHint: "(opțional — de ex. \"500 sats\" sau \"£10\")", + entryFeePlaceholder: "Lasă gol pentru Event-uri gratuite", + featuring: "Cu {{name}}", + featuringDesc: "Acest act va fi etichetat ca muzică live și afișat în lista lor de concerte.", + fundingGoal: "Obiectiv de finanțare", + fundingGoalHint: "(opțional — sats pentru crowdfunding prin zap-uri)", + fundingGoalPlaceholder: "de ex. 50000", + geoNotSupported: "Geolocalizarea nu este acceptată", + geoNotSupportedDesc: "Browserul tău nu acceptă geolocalizarea.", + hideSpots: "Ascunde Spoturile", + hostingAs: "Găzduiești ca {{name}}", + hostingAsDesc: "Acest Event va apărea pe pagina Crew-ului tău și va fi etichetat ca găzduit de Crew.", + imageUploaded: "Imagine încărcată", + imageUploadedDesc: "Imaginea ta a fost încărcată cu succes.", + invalidDate: "Dată invalidă", + invalidDateDesc: "Te rugăm să introduci o dată și o oră de început valide.", + invalidEnd: "Oră de sfârșit invalidă", + invalidEndDesc: "Ora de sfârșit trebuie să fie după ora de început.", + linkedTo: "Legat de: {{title}}", + linkToSpot: "Leagă de un Skate Spot", + linkToShop: "Leagă de un Shop", + selectedShop: "Legat de {{name}}", + selectShopHint: "Opțional — găzduit la sau de un skate Shop.", + selectShop: "Selectează Shop-ul", + changeShop: "Schimbă Shop-ul", + hideShops: "Ascunde Shop-urile", + searchShops: "Caută Shop-uri…", + noShopsMatch: "Niciun Shop nu corespunde căutării tale.", + noShopsAvailable: "Încă nu există Shop-uri disponibile.", + linkToTour: "Leagă de un Tur (opțional)", + linkTourDesc: + "Leagă acest Event de un Tur pentru a arăta că face parte dintr-o serie mai mare. Ideal pentru Tururi naționale, aventuri internaționale sau zile de provocare World Destruction Tour.", + loadingSpots: "Se încarcă Spoturile...", + loadingTours: "Se încarcă Tururile...", + locationError: "Eroare de locație", + locationFound: "Locație găsită", + locationFoundDesc: "Locația ta actuală a fost setată.", + logoUrl: "URL logo (opțional)", + noSpotsAvailable: "Nu există Spoturi disponibile", + noSpotsMatch: "Niciun Spot nu corespunde căutării tale", + noTourLinked: "Niciun Tur legat", + optional: "(opțional)", + pastDesc: "Alege o dată și o oră în viitor, ca skaterii să poată confirma și veni.", + pastTitle: "Acea oră de început este în trecut", + publishFailed: "Publicarea a eșuat", + publishFeatured: "Publică Event promovat", + removeSponsor: "Elimină sponsorul", + searchSpots: "Caută Spoturi după nume, locație sau categorie...", + selectedSpot: "Selectat: {{name}}", + selectSpot: "Selectează Spotul", + selectSpotHint: "Selectează de pe hartă un Spot unde are loc acest Event", + selectTour: "Selectează Turul", + somethingWrong: "Ceva a mers greșit", + sponsorName: "Numele sponsorului", + sponsors: "Sponsori", + sponsorsHint: + "Ai un Shop sau un brand care susține asta? Adaugă logo-ul lor — apare ca o bandă \"Prezentat de\" pe Event.", + startRequired: "Ora de început este obligatorie", + startRequiredDesc: "Te rugăm să introduci când începe Event-ul.", + titleRequired: "Titlul este obligatoriu", + titleRequiredDesc: "Te rugăm să introduci un nume pentru acest Event.", + uploadFailed: "Încărcarea a eșuat", + uploadFailedDesc: "Imaginea nu a putut fi încărcată", + websiteUrl: "URL site web (opțional)", + }, + createShop: { + address: "Adresa Shop-ului", + addressPlaceholder: "de ex., 411 N Fairfax Ave, Los Angeles, CA 90036", + addressRequired: "Adresa este obligatorie", + addressRequiredDesc: "Te rugăm să introduci adresa Shop-ului tău.", + contactHint: "Ajută clienții să te contacteze (se recomandă cel puțin o metodă de contact)", + contactInfo: "Informații de contact", + created: "🎉 Shop adăugat!", + createdDesc: "Skate Shop-ul tău este acum pe hartă. Skaterii te pot zap-ui pentru a-ți mulțumi!", + descriptionPlaceholder: "Spune-le oamenilor despre Shop-ul tău, ce vinzi, specialitatea ta...", + detailsDesc: "Spune-le comunității despre Shop-ul tău. Toate câmpurile marcate cu * sunt obligatorii.", + email: "Email", + hoursOfOperation: "Program de funcționare", + hoursPlaceholder: "de ex., Lun-Sâm 10:00-20:00, Dum 12:00-18:00", + instagram: "Instagram", + invalidCoords: "Coordonate invalide", + invalidCoordsDesc: "Te rugăm să introduci o latitudine validă (-90 la 90) și o longitudine validă (-180 la 180).", + latPlaceholder: "Latitudine (de ex., 34.0737)", + lngPlaceholder: "Longitudine (de ex., -118.3614)", + locationRequired: "Locația este obligatorie", + locationRequiredDesc: "Te rugăm să introduci coordonatele sau folosește locația ta actuală.", + loginToAdd: "Trebuie să te autentifici pentru a adăuga un skate Shop.", + namePlaceholder: "de ex., Supreme Los Angeles", + nameRequired: "Numele Shop-ului este obligatoriu", + nameRequiredDesc: "Te rugăm să introduci un nume pentru Shop-ul tău.", + phoneNumber: "Număr de telefon", + publishFailedDesc: "Ceva a mers greșit. Verifică consola pentru detalii.", + shopPhotoAlt: "Shop", + shopPhotos: "Fotografii cu Shop-ul", + subtitle: "Listează-ți Shop-ul pe hartă și conectează-te cu comunitatea", + upload: "Încarcă", + }, + createTour: { + acceptedClipSources: "Surse de clipuri acceptate", + acceptedClipSourcesDesc: "Ce formate vei accepta pentru trimiterea clipurilor?", + accommodationInfo: "Informații despre cazare", + accommodationPlaceholder: + "Recomandări sau aranjamente de cazare, de ex. 'Hosteluri ieftine de-a lungul rutei', 'Echipament de camping necesar', 'Airbnb-uri incluse'", + addChallenge: "Adaugă provocare", + addCity: "Adaugă un oraș...", + addCountry: "Adaugă o țară...", + addShopFirst: "Adaugă mai întâi un Shop", + alsoSelected: "De asemenea selectate:", + availabilityPlaceholder: "de ex., Weekend-uri, Doar dimineața, Cu programare", + availabilityQuestion: "Când ești de obicei disponibil?", + availableShops: "Skate Shop-uri disponibile ({{count}})", + challengeDescPlaceholder: "Descriere opțională...", + challenges: "Provocări", + challengesRequired: "Provocările sunt obligatorii", + challengesRequiredDesc: "Te rugăm să adaugi cel puțin o provocare pe care echipele să o îndeplinească.", + challengesSecret: + "Toate provocările sunt SECRETE până la data de început a competiției. Echipele nu le vor vedea până atunci!", + challengeTitlePlaceholder: "Titlul provocării, de ex., 'Kickflip pe 10 trepte'", + citiesLabel: "Orașe", + citiesOnTour: "Orașe în Tur", + cityPlaceholder: "de ex., Berlin, Germania", + cityRegion: "Oraș / Regiune", + cityRequired: "Orașul/regiunea este obligatoriu/obligatorie", + cityRequiredDesc: "Te rugăm să introduci orașul sau regiunea ta.", + clipAnyUrl: "🔗 Orice URL", + clipBlossom: "📦 Încărcare Blossom", + clipInstagram: "📸 Instagram", + clipYouTube: "▶️ YouTube", + competitionDates: "Datele competiției", + competitionDatesWarning: + "⚠️ Toate provocările sunt SECRETE până la data de început! Echipele nu vor vedea provocările până când nu începe competiția.", + competitionLocations: "Locațiile competiției", + competitionLocationsDesc: "Unde vor concura echipele? Adaugă toate orașele și țările implicate.", + coordsHint: "Coordonatele sunt opționale. Adaugă-le pentru a fixa punctul de întâlnire pe hartă.", + countriesLabel: "Țări", + countriesRequired: "Țările sunt obligatorii", + countriesRequiredDesc: "Te rugăm să adaugi cel puțin o țară pentru Turul tău internațional.", + createdDestruction: "💀 WORLD DESTRUCTION TOUR CREAT!", + createdDestructionDesc: "Echipele se pot înscrie. Provocările vor fi dezvăluite la data de început!", + createDestructionTour: "Creează World Destruction Tour", + createdInternational: "✈️ Tur internațional creat!", + createdInternationalDesc: "Aventura ta globală este listată! Conectează-te cu skateri din întreaga lume.", + createdLocal: "🏠 Tur local creat!", + createdLocalDesc: "Turul tău este acum vizibil. Skaterii pot rezerva prin DM!", + createdNational: "🚐 Tur național creat!", + createdNationalDesc: "Road trip-ul tău este live! Începe coordonarea cu skaterii interesați.", + departure: "Plecare *", + departureRequired: "Data plecării este obligatorie", + departureRequiredDesc: "Setează când pleacă călătoria, ca skaterii să poată planifica și rezerva.", + descriptionPlaceholder: + "Descrie ce vor experimenta skaterii: Spoturi pe care le vei vizita, vibe, ce face Turul tău unic...", + destructionDesc: "Configurează-ți competiția globală în stil KOTR - TU definești TOTUL!", + discountHint: + "Participanții la Tur pot arăta confirmarea rezervării la Shop pentru a primi această reducere", + discountPercentage: "Procent de reducere", + dropTour: "Lansează un Tur", + duration: "Durată", + durationHintDestruction: "Cât durează competiția? (1-12 luni)", + durationHintInternational: "Câte săptămâni durează aventura? (până la 2 luni)", + durationHintLocal: "Cât durează Turul tău tipic?", + durationHintNational: "Câte zile durează road trip-ul?", + durationWeeksMonths: "{{weeks}} săptămâni (~{{months}} luni)", + editTour: "Editează Turul", + enable: "Activează", + enabled: "Activat", + endBeforeStart: "Sfârșit înainte de început", + endBeforeStartDesc: "Data de sfârșit a competiției trebuie să fie la sau după data de început.", + endDate: "Data de sfârșit", + entryFeeHint: "Tu păstrezi 95% • Platforma ia 5% • Lasă gol pentru intrare gratuită", + entryFeePerTeam: "Taxă de participare per echipă (sats)", + entryFeePlaceholder: "de ex., 100000", + entryPrizes: "Participare și premii", + filmPremieres: "Premierele filmelor echipelor", + filmPremieresDesc: + "După competiție, clipurile fiecărei echipe devin un film complet care poate avea premiera la skate Shop-uri locale din întreaga lume.", + filmPremieresInfo: + "🎥 Echipele își compilează clipurile de provocare într-un film final. Shop-urile pot găzdui evenimente de premieră, conectând competiția globală cu comunitățile locale.", + filmReleaseDate: "Data lansării filmului (opțional)", + filmReleaseDateHint: + "Când vor fi disponibile filmele. Lasă gol pentru a lansa imediat după încheierea competiției.", + fixedSession: "Sesiune fixă", + fixedSessionDesc: "O dată și oră stabilite", + flexible: "Flexibil", + flexibleDesc: "Rezervă oricând prin DM", + hide: "Ascunde", + howDestruction1: "• Competiție globală pe echipe - până la 12 luni", + howDestruction2: "• TU definești provocările, punctele, premiile - noi oferim doar platforma", + howDestruction3: "• Toate provocările sunt SECRETE până la data de început a competiției", + howDestruction4: "• Clipuri prin încărcare Blossom SAU linkuri externe (YouTube, Instagram, orice URL)", + howDestruction5: "• Doar nivel avansat - toate tipurile de Spoturi incluse automat", + howDestruction6: "• Platforma ia doar 5% din taxele de participare (NU din fondul de premii)", + howDestructionTitle: "💀 WORLD DESTRUCTION TOUR - Stil KOTR", + howInternational1: "• Aventuri transfrontaliere prin mai multe țări", + howInternational2: "• Tu stabilești prețul — platforma ia doar 5%", + howInternational3: "• Setează datele de plecare și întoarcere, ca Crew-ul să poată rezerva zboruri", + howInternational4: "• Conectează skateri din întreaga lume", + howInternational5: "• Creează experiențe globale de neuitat!", + howInternationalTitle: "Cum funcționează Tururile internaționale", + howItWorks: "Cum funcționează:", + howLocal1: "• Tu stabilești prețul — platforma ia 10%", + howLocal2: "• Spoturile ascunse rămân ascunse — le arăți în persoană", + howLocal3: "• Organizează o sesiune programată sau menține-o flexibilă / cu programare", + howLocal4: "• Skaterii rezervă prin DM, plătesc în Lightning și o pot adăuga în calendar", + howLocal5: "• Construiește-ți reputația cu recenzii și zap-uri", + howLocalTitle: "Cum funcționează Tururile locale", + howNational1: "• Road trip-uri prin mai multe orașe din țara ta", + howNational2: "• Tu stabilești prețul — platforma ia doar 7%", + howNational3: "• Setează datele călătoriei, ca skaterii să-și poată planifica liberul și deplasarea", + howNational4: "• Include informații despre transport / cazare pentru Crew", + howNational5: "• Construiește aventuri skate legendare!", + howNationalTitle: "Cum funcționează Tururile naționale", + imageUploadedDesc: "Imaginea Turului tău a fost încărcată.", + incompleteCoords: "Coordonate incomplete", + incompleteCoordsDesc: + "Te rugăm să introduci atât latitudinea, cât și longitudinea, sau lasă-le pe ambele goale.", + internationalDetails: "Detalii aventură internațională", + languagesSelected: "{{count}} selectate", + languagesSpoken: "Limbi vorbite", + latOptional: "Latitudine (opțional)", + lngOptional: "Longitudine (opțional)", + loadingProfile: "Se încarcă profilul...", + loadingProfileDesc: "Se verifică starea verificării NIP-05.", + loadingShops: "Se încarcă Shop-urile...", + localShopPremieres: "Premiere la Shop-uri locale", + localShopPremieresDesc: "Skate Shop-urile din întreaga lume pot găzdui seri de film", + loginToCreate: "Trebuie să te autentifici pentru a crea un Tur.", + maxGroupSize: "Dimensiune maximă a grupului", + maxTeams: "Număr maxim de echipe", + maxTeamSize: "Dimensiune maximă a echipei", + meetingLocationSet: "Locația ta actuală a fost setată ca punct de întâlnire.", + meetingPointDesc: "Unde te vei întâlni cu participanții la Tur? Alege un loc public, bine cunoscut.", + meetingPointLabel: "Punct de întâlnire", + meetingPointPlaceholder: "de ex., Gara Warschauer Straße", + meetingPointRequired: "Punctul de întâlnire este obligatoriu", + meetingPointRequiredDesc: "Te rugăm să introduci unde te vei întâlni cu participanții la Tur.", + minTeamSize: "Dimensiune minimă a echipei", + noChallenges: "Încă nicio provocare", + noChallengesDesc: "Adaugă provocări pe care echipele să le îndeplinească", + noPartnerShop: "Niciun Shop partener", + noShopsFound: "Încă nu s-au găsit skate Shop-uri în rețea.", + noShopsRegistered: "Încă nu s-au înregistrat skate Shop-uri", + onlineRelease: "Lansare online", + onlineReleaseDesc: "Lansează filmele și pe YouTube/Nostr", + organizerContact: "Datele de contact ale organizatorului", + organizerContactHint: "Acestea vor fi vizibile echipelor înscrise", + organizerContactPlaceholder: "Cum te pot contacta echipele? de ex., Nostr npub, email, Telegram etc.", + partnerDiscountDesc: "Oferă participanților la Tur o reducere la un skate Shop local", + partnerStep1: "1. Fă echipă cu un skate Shop local în care ai încredere", + partnerStep2: "2. Stabilește un procent de reducere pentru participanții la Tur", + partnerStep3: "3. După Tur, dă-le participanților o confirmare de arătat la Shop", + partnerStep4: "4. Shop-ul onorează reducerea - construiește comunitate și aduce clienți!", + percentOff: "{{percent}}% REDUCERE", + photoHint: "Adaugă o fotografie cu tine făcând skate sau un Spot mișto din Turul tău.", + pickRide: "Alege-ți vehiculul", + place1: "🥇 Locul 1", + place2: "🥈 Locul 2", + place3: "🥉 Locul 3", + platformFee: "Tu stabilești prețul • Platforma ia {{percent}}", + points: "Puncte:", + pricePerPerson: "Preț per persoană (sats)", + pricePlaceholder: "de ex., 25000", + prizeDistribution: "Distribuirea premiilor", + prizePoolHint: "Opțional - totalul premiilor disponibile", + prizePoolPlaceholder: "de ex., 2000000", + proTipDesc: + "Înainte de a lista o reducere de partener, contactează proprietarul Shop-ului prin DM pentru a conveni asupra procentului de reducere. Astfel te asiguri că este de acord și va onora reducerea pentru participanții la Turul tău.", + proTipTitle: "💡 Sfat: Coordonează-te mai întâi cu Shop-ul!", + return: "Întoarcere", + returnBeforeDeparture: "Întoarcere înainte de plecare", + returnBeforeDepartureDesc: "Data de întoarcere trebuie să fie la sau după data de plecare.", + roadTripDetails: "Detalii road trip", + schedule: "Program", + scheduleDesc: + "Organizează aceasta ca o sesiune programată unică, sau menține-o flexibilă și lasă skaterii să rezerve o oră prin DM.", + secretUntilStart: "Secret până la început", + selectPartnerShop: "Selectează Shop-ul partener", + sessionDateRequired: "Data sesiunii este obligatorie", + sessionDateRequiredDesc: + "Alege data și ora pentru sesiunea programată, sau treci la un program flexibil.", + sessionDateTime: "Data și ora sesiunii", + sessionDateTimeHint: + "Skaterii vor vedea această oră și o pot adăuga în calendarul lor de pe pagina Turului.", + shopPremieresContact: + "Contactează direct aceste Shop-uri pentru a aranja serile de premieră. Toate aranjamentele sunt private.", + shopPremieresHow: + "💡 Cum funcționează premierele la Shop-uri: Contactează direct Shop-urile pentru a aranja serile de premieră. Toate aranjamentele sunt private între tine și Shop-uri.", + shopsCanRegister: "Shop-urile se pot înregistra la /create-shop", + show: "Arată", + showAllLanguages: "Arată toate cele {{count}} limbi", + somethingWrong: "Ceva a mers greșit.", + spotTypes: "Tipuri de Spoturi", + spotTypesRequired: "Tipurile de Spoturi sunt obligatorii", + spotTypesRequiredDesc: "Te rugăm să selectezi cel puțin un tip de Spot pe care îl vei arăta.", + startDate: "Data de început", + startDateRequired: "Data de început este obligatorie", + startDateRequiredDesc: + "Te rugăm să setezi când începe competiția (provocările vor fi dezvăluite la această dată).", + startingCity: "Orașul de plecare", + startingCityPlaceholder: "de ex., Los Angeles, SUA", + teamSettings: "Setările echipelor", + teamsCount: "{{count}} echipe", + titlePlaceholder: "de ex., Berlin Kreuzberg - Tur de Spoturi underground", + titleRequired: "Titlul Turului este obligatoriu", + titleRequiredDesc: "Te rugăm să introduci un nume pentru Turul tău.", + totalPercent: "Total: {{percent}}%", + totalPrizePool: "Fond total de premii (sats)", + tourDesc: "Spune-le skaterilor la ce să se aștepte în Turul tău", + tourDetails: "Detalii Tur", + tourPhoto: "Fotografie Tur", + tourTitle: "Titlul Turului", + transportDestructionPlaceholder: + "Cum vor călători echipele între locații? Există transport asigurat sau recomandat?", + transportInfo: "Informații transport", + transportPlaceholder: + "Cum vor călători participanții? de ex., 'Furgonetă asigurată', 'Zbori în Barcelona, închiriem o furgonetă', 'Tren între orașe'", + tripDatesDesc: + "Fixează datele, ca skaterii să poată cere liber, rezerva zboruri și planifica călătoria.", + tripDatesTitle: "Datele călătoriei", + updated: "Tur actualizat!", + updatedDesc: "Modificările tale au fost publicate.", + upload: "Încarcă", + view: "Vezi →", + worldDestruction: "World Destruction Tour", + youReceive: "Primești: {{amount}} sats per persoană", + }, + editEvent: { + accessDenied: "Acces interzis", + accessDeniedDesc: "Poți edita doar Event-urile pe care le-ai creat.", + backToEvent: "Înapoi la Event", + detailsDesc: "Actualizează informațiile despre acest Event. Toate câmpurile marcate cu * sunt obligatorii.", + eventCover: "Copertă Event", + locationUpdated: "Locație actualizată.", + loginToEdit: "Trebuie să te autentifici pentru a edita acest Event.", + newSpot: "Spot nou: {{location}}.", + newTime: "Oră nouă: {{date}} la {{time}}.", + saveChanges: "Salvează modificările", + saving: "Se salvează...", + title: "Editează Event-ul", + updated: "Event actualizat!", + updatedDesc: "Modificările tale au fost publicate în rețea.", + updateDetails: "Actualizează detaliile pentru {{title}}", + updatedNotified: "Modificări publicate — {{count}} participanți notificați.", + updateFailed: "Actualizarea a eșuat", + updateMessage: "{{parts}} — vezi Event-ul pentru detalii.", + }, + editShop: { + accessDeniedDesc: "Poți edita doar Shop-urile pe care le-ai creat.", + backToShop: "Înapoi la Shop", + detailsDesc: "Actualizează informațiile Shop-ului tău. Toate câmpurile marcate cu * sunt obligatorii.", + loginToEdit: "Trebuie să te autentifici pentru a edita acest Shop.", + updated: "Shop actualizat!", + updateDetails: "Actualizează detaliile pentru {{name}}", + }, + editTour: { + accessDeniedDesc: "Poți edita doar Tururile pe care le-ai creat.", + loginToEdit: "Trebuie să te autentifici pentru a edita acest Tur.", + }, + eventCard: { + report: "Raportează", + }, + eventDetail: { + aCrew: "un Crew", + addToCalendar: "Adaugă în calendar", + backToEvents: "Înapoi la Event-uri", + cancelled: "Acest Event a fost anulat", + checkUpdate: "— verifică actualizarea", + copyFailed: "Copierea a eșuat", + date: "Dată", + editEvent: "Editează Event-ul", + eventFallback: "Event", + eventOrganizer: "Organizator al Event-ului", + getDirections: "Obține indicații", + linkCopied: "Link copiat", + linkCopiedDesc: "Linkul Event-ului a fost copiat în clipboard — lipește-l oriunde.", + live: "Live:", + liveMusic: "muzică live", + location: "Locație", + newLocation: "Locație nouă", + noRsvps: "Nu au fost înregistrate RSVP-uri.", + organizer: "Organizator", + rsvpsClosed: "RSVP-urile sunt închise — acest Event a fost anulat de gazdă.", + seeMap: "Vezi harta", + shareEvent: "Distribuie Event-ul", + shareText: "{{title}} — un Event de skate pe SkateSpots", + shareTextFallback: "Vezi acest Event de skate pe SkateSpots", + time: "Oră", + timeChanged: "Oră schimbată", + updatesFromHost: "Actualizări de la gazdă", + where: "Unde", + whoCame: "Cine a venit", + whosGoing: "Cine merge", + }, + events: { + calendar: "Calendar", + createTour: "Creează Tur", + events: "Event-uri", + faqFooter: "Ai întrebări? Consultă FAQ →", + hosting: "Găzduire", + hostingSubtitle: "Event-urile tale — RSVP-uri, actualizări și editări rapide", + list: "Listă", + noEventsMatchFilters: "Niciun Event nu corespunde filtrelor tale. Încearcă să le ajustezi sau să le golești.", + noPast: "Niciun Event trecut", + noPastBody: "Nu s-au găsit Event-uri de skate trecute în filtrele tale actuale.", + noTours: "Niciun Tur găsit", + noToursBody: "Încă niciun Tur de skate. Creează primul și du skaterii într-o descoperire de Spoturi!", + noToursMatchFilters: "Niciun Tur nu corespunde filtrelor tale. Încearcă să le ajustezi sau să le golești.", + noUpcoming: "Niciun Event viitor", + noUpcomingBody: "Nu s-au găsit Event-uri de skate viitoare. Fii primul care creează unul!", + past: "Trecute", + resultsCount: "{{count}} rezultate", + searchCity: "Oraș…", + searchEvent: "Numele Event-ului…", + searchTour: "Numele Turului…", + tours: "Tururi", + toursSubtitle: "Ghiduri locale, road trip-uri și competiții world destruction", + upcoming: "Viitoare", + }, + eventTypes: { + contest: "Concurs", + demo: "Demo", + jam: "Jam", + meetup: "Întâlnire", + premiere: "Premieră", + session: "Sesiune", + workshop: "Atelier", + }, + featured: { + active: "Activ", + bodyEvent: "Gratuit de postat. Event-urile promovate primesc un badge și stau în fruntea paginii de Event-uri.", + bodyTour: "Gratuit de postat. Tururile promovate primesc un badge și stau în fruntea listei de Tururi.", + contextEvent: "Event-ul tău rămâne listat gratuit oricum — promovarea adaugă doar badge-ul și boost-ul.", + contextTour: "Turul tău rămâne listat gratuit oricum — promovarea adaugă doar badge-ul și boost-ul.", + daysRemaining: "Promovare activă · {{count}} zile rămase.", + headingEvent: "Promovează acest Event", + headingTour: "Promovează acest Tur", + optional: "opțional", + platformOwner: "Proprietarul platformei — promovarea este mereu activă.", + }, + filters: { + activeCount: "{{count}} active", + all: "Toate", + allLevels: "Toate nivelurile", + eventType: "Tip de Event", + following: "Urmărite", + newest: "Cele mai noi", + popular: "Populare", + showResults: "Arată rezultatele", + showResultsActive: "Arată rezultatele · {{count}} active", + skillLevel: "Nivel de îndemânare", + sortBy: "Sortează după", + topRated: "Cele mai bine evaluate", + tourCategory: "Categorie de Tur", + trusted: "De încredere", + trustLevel: "Nivel de încredere", + verified: "Verificat", + }, + food: { + bar: "Bar", + cafe: "Cafenea", + call: "Sună", + chooseSpot: "Alege un Spot...", + directions: "Indicații", + fastFood: "Fast Food", + foodCourt: "Food Court", + locationLabel: "Locație:", + noneFound: "Nu s-au găsit Spoturi cu mâncare", + noneFoundDesc: "Nu am putut găsi restaurante sau cafenele la mai puțin de 1 km de acest Spot. Încearcă să selectezi o altă locație.", + placesFound: "{{count}} locuri găsite la mai puțin de 1 km de {{spot}}", + pub: "Pub", + restaurant: "Restaurant", + selectSpot: "Selectează un skate Spot", + selectSpotDesc: "Alege un skate Spot din meniul de mai sus pentru a găsi restaurante, cafenele și alte opțiuni de mâncare din apropiere.", + selectSpotTitle: "Selectează un Skate Spot", + subtitle: "Găsește locuri de mâncat lângă Spoturile tale preferate de skate", + title: "Mâncare lângă Spoturi", + unknown: "Necunoscut", + website: "Site web", + }, + rsvp: { + areYouGoing: "Mergi?", + cant: "Nu pot", + cantMakeIt: "Nu pot ajunge", + going: "Merg", + goingCount: "merg", + goingShort: "Merg", + hostNote: "Tu găzduiești acest lucru — dar poți totuși să-ți setezi starea.", + interested: "Interesat", + interestedCount: "interesați", + loginToRsvp: "Autentifică-te pentru a confirma.", + maybe: "Poate", + toastError: "Nu s-a putut confirma", + toastGoing: "Mergi! 🛹", + toastInterested: "Marcat ca interesat.", + toastNotGoing: "Marcat ca nu mergi.", + tryAgain: "Te rugăm să încerci din nou.", + }, + shop: { + addNip05Settings: "Adaugă NIP-05 în Setări", + adminRemovedReason: "Adminul SkateSpots a eliminat Shop-ul \"{{name}}\"", + areYouOwner: "Ești proprietarul Shop-ului?", + backToMap: "Înapoi la hartă", + claimDesc: "Dacă deții sau administrezi acest Shop, îl poți revendica pentru a verifica proprietatea folosind NIP-05.", + claimNip05Intro: "Pentru a revendica acest Shop, adaugă un identificator NIP-05 care corespunde domeniului site-ului Shop-ului. De exemplu, dacă site-ul Shop-ului este", + claimNip05Your: "NIP-05-ul tău ar trebui să fie", + contactShop: "Contactează Shop-ul", + deleted: "Shop șters", + deletedDesc: "Cerere de ștergere trimisă către relay-uri. Majoritatea relay-urilor vor elimina acest conținut.", + deleteDialogDesc: "Aceasta va șterge definitiv \"{{name}}\" de pe toate relay-urile. Această acțiune nu poate fi anulată.", + deleteDialogTitle: "Ștergi Shop-ul?", + deletedReason: "Shop șters", + deleteFailed: "Ștergerea a eșuat", + deleteShop: "Șterge Shop-ul", + linkCopied: "Link copiat!", + linkCopiedDesc: "Linkul Shop-ului a fost copiat în clipboard.", + nip05Required: "⚠️ Verificare NIP-05 necesară pentru a revendica Shop-uri", + opens: "Deschide: {{domain}}", + removeAdmin: "Elimină (admin)", + removed: "Shop eliminat", + removedDesc: "Acest Shop a fost eliminat și va fi ascuns în tot SkateSpots.", + removeDialogDesc: "Ca admin SkateSpots, elimini \"{{name}}\". Va fi ascuns în aplicație pentru toată lumea și o cerere de ștergere va fi trimisă către relay-uri.", + removeDialogTitle: "Elimini acest Shop? (admin)", + removeShop: "Elimină Shop-ul", + tipMapper: "Dă bacșiș cartografului", + tipMapperDesc: "Acest Shop a fost adăugat de un membru al comunității. Zap-uiește-l pentru a-i mulțumi!", + updateNip05: "Actualizează NIP-05 pentru a revendica", + viewPhotoFull: "Vezi fotografia pe tot ecranul", + viewPhotoOf: "Vezi fotografia {{index}} din {{total}}", + }, + sponsors: { + presentedBy: "Prezentat de", + }, + tourCard: { + active: "Activ", + completed: "Finalizat", + contactForPrice: "Contactează pentru preț", + durationDays: "{{count}} zile", + durationHours: "{{count}} ore", + durationMonths: "{{count}} luni", + durationWeeks: "{{count}} săptămâni", + entry: "Intrare: {{amount}} sats", + happeningNow: "Se întâmplă acum", + inDays: "În {{count}} zile", + inHours: "În {{count}}h", + inMonths: "În {{count}} luni", + inWeeks: "În {{count}} săptămâni", + maxGroup: "Max {{count}}", + price: "{{amount}} sats", + prizePool: "{{amount}} sats", + registrationOpen: "Înscrieri deschise", + startingSoon: "Începe în curând", + teamsMax: "{{count}} echipe max", + tomorrow: "Mâine", + worldwide: "În întreaga lume", + }, + tourDetail: { + about: "Despre acest Tur", + availability: "Disponibilitate", + competitionWindow: "Fereastra competiției", + contactToBook: "Contactează ghidul pentru a rezerva", + discountAt: "{{percent}}% REDUCERE la {{shop}}", + duration: "Durată", + languages: "Limbi", + loginToBook: "Autentifică-te pentru a rezerva", + loginToBookDesc: "Autentifică-te pentru a contacta ghidul și a rezerva acest Tur", + maxGroup: "Grup maxim", + meetingPoint: "Punct de întâlnire", + notFound: "Tur negăsit", + notFoundDesc: "Este posibil ca acest Tur să fi fost eliminat sau să nu existe.", + organizer: "Organizator", + partnerDiscount: "Reducere la Shop partener", + partnerDiscountDesc: "Rezervă acest Tur pentru a primi o reducere la skate Shop-ul partener. Arată confirmarea rezervării personalului Shop-ului.", + people: "{{count}} persoane", + perPerson: "per persoană", + price: "Preț", + runsAbout: "Durează aproximativ {{duration}}", + scheduledSession: "Sesiune programată", + shareText: "Vezi acest Tur de skate local: {{title}}", + skillLevel: "Nivel de îndemânare", + spotTypes: "Tipuri de Spoturi", + tourGuide: "Ghid de Tur", + tourSponsors: "Sponsorii Turului", + tripDates: "Datele călătoriei", + viewProfile: "Vezi profilul", + }, + updates: { + admin: "Admin", + adminNote: "Postezi ca admin SkateSpots. Va fi etichetat clar ca notificare de admin, nu de la gazdă.", + kindCancelled: "Anulat", + kindNewSpot: "Spot nou", + kindNewTime: "Oră nouă", + kindUpdate: "Actualizare", + loading: "Se încarcă actualizările…", + notifiedCount: "{{count}} persoane notificate.", + notifiedEveryone: "Toată lumea îl va vedea pe Event.", + notifiesRsvps: "Notifică {{count}} RSVP-uri", + noUpdates: "Încă nicio actualizare de la gazdă. Confirmă și vei fi notificat dacă se schimbă ceva.", + placeholder: "Ploaie — mutat duminică la 14:00. Ne întâlnim la marginea din spate…", + post: "Postează", + postAdminUpdate: "Postează o actualizare de admin", + posted: "Actualizare postată", + postError: "Nu s-a putut posta actualizarea", + postUpdate: "Postează o actualizare", + tryAgain: "Te rugăm să încerci din nou.", + visibleToEveryone: "Vizibil pentru toată lumea la acest Event", + }, + destination: { + bitcoin: "Bitcoin", + closeSearch: "Închide căutarea", + nothingMatches: "Nimic nu corespunde „{{query}}”.", + placeholder: "Caută Spoturi, Shop-uri, comercianți Bitcoin…", + shop: "Shop", + spot: "Spot", + typeChars: "Tastează cel puțin 2 caractere. Caută Spoturi de skate, skate Shop-uri și comercianți Bitcoin.", + typeCharsNear: "Tastează cel puțin 2 caractere. Caută Spoturi de skate, skate Shop-uri și comercianți Bitcoin din apropiere.", + }, + dateWindow: { + any: "Oricând", + anytime: "Oricând", + month: "Luna aceasta", + monthShort: "Lună", + today: "Astăzi", + todayShort: "Astăzi", + week: "Săptămâna aceasta", + weekend: "Weekend", + weekendShort: "Wknd", + weekShort: "Săpt.", + }, + }, + marketUi: { + gearSwap: { + title: "Schimb de Gear", + subtitle: "Cumpără și vinde Gear de skate folosit cu alți skateri", + listGear: "Listează Gear", + searchPlaceholder: "Caută Gear...", + allCategories: "Toate categoriile", + forSale: "De vânzare", + wtb: "WTB", + trust: "Încredere", + filterByTrust: "Filtrează după încredere", + allSellers: "Toți vânzătorii", + verifiedOnly: "Doar verificați", + trustedPlus: "De încredere+", + followingOnly: "Doar cei urmăriți", + pickupOrShip: "Ridicare sau livrare", + localPickup: "Ridicare locală", + ships: "Livrare", + sortBy: "Sortează după", + newest: "Cele mai noi", + priceLowHigh: "Preț: crescător →", + priceHighLow: "Preț: descrescător →", + trustScore: "Scor de încredere", + nearest: "Cele mai apropiate (local)", + listingFound: "{{count}} anunț găsit", + listingsFound: "{{count}} anunțuri găsite", + loadFailed: "Anunțurile nu s-au putut încărca", + tryLater: "Te rugăm să încerci din nou mai târziu.", + noneTitle: "Niciun anunț găsit", + noneFiltered: "Niciun Gear nu corespunde filtrelor tale actuale. Încearcă să le golești sau să cauți altceva.", + noneFirst: "Fii primul care își listează Gear-ul — Deck-uri, Trucks, Wheels, pantofi, orice de skate!", + listYourGear: "Listează-ți Gear-ul", + faqLink: "Ai întrebări? Consultă FAQ →", + }, + hub: { + browse: "Răsfoiește", + selling: "Vânzare", + myTrades: "Tranzacțiile mele", + reputation: "Reputație", + loginListings: "Autentifică-te pentru a-ți administra anunțurile.", + loginReputation: "Autentifică-te pentru a-ți vedea reputația și recenziile.", + }, + marketplace: { + heroTitle: "Shop-uri și Marketplace", + heroBefore: "Marketplace-ul nostru este susținut de", + heroAfter: "- un Marketplace descentralizat pe Nostr. Skate Shop-urile își pot lista produsele, iar tu poți cumpăra/vinde Gear folosit direct cu Bitcoin.", + whatIsTitle: "Ce este Plebeian Market?", + whatIsBody: "Plebeian Market este un Marketplace descentralizat construit pe Nostr. Cumpără și vinde Gear de skateboarding direct cu alți skateri folosind Bitcoin. Fără intermediari, fără taxe, libertate totală.", + noFeesTitle: "Fără taxe", + noFeesBody: "Nicio platformă care să ia 30%. Vânzări directe între persoane.", + bitcoinTitle: "Plăți Bitcoin", + bitcoinBody: "Plătește cu Bitcoin. Rapid, sigur, global.", + decentralizedTitle: "Descentralizat", + decentralizedBody: "Construit pe Nostr. Nicio companie nu îl controlează.", + visit: "Vizitează Plebeian Market", + buySellTitle: "Ce poți cumpăra și vinde", + catCompletes: "Deck-uri complete", + preBuilt: "Complete pre-asamblate", + customSetups: "Configurații personalizate", + beginnerBoards: "Plăci pentru începători", + catParts: "Piese de Deck", + decks: "Deck-uri", + trucks: "Trucks", + wheels: "Wheels", + bearings: "Bearings", + gripTape: "Griptape", + hardware: "Șuruburi și componente", + catApparel: "Îmbrăcăminte și protecție", + skateShoes: "Pantofi de skate", + clothing: "Îmbrăcăminte", + helmets: "Căști", + pads: "Protecții", + backpacks: "Rucsacuri", + catAccessories: "Accesorii", + tools: "Unelte", + wax: "Ceară", + rails: "Șine", + stickers: "Abțibilduri", + videos: "Videoclipuri", + magazines: "Reviste", + howItWorks: "Cum funcționează", + step1Title: "Răsfoiește produsele", + step1Body: "Vizitează Plebeian Market și răsfoiește Gear de skateboarding de la Shop-uri și persoane din întreaga lume.", + step2Title: "Contactează vânzătorii", + step2Body: "Trimite mesaje vânzătorilor direct prin Nostr. Negociază prețuri, pune întrebări, aranjează livrarea.", + step3Title: "Plătește cu Bitcoin", + step3Body: "Finalizează achiziția folosind Bitcoin Lightning pentru plăți instantanee, cu taxe reduse.", + step4Title: "Lasă feedback", + step4Body: "Evaluează-ți experiența și construiește reputația vânzătorului pe Nostr. Recenziile tale ajută comunitatea.", + needBitcoinTitle: "Ai nevoie de Bitcoin?", + needBitcoinBefore: "Vei avea nevoie de un portofel Lightning cu niște sats pentru a face achiziții. Consultă", + onboardingGuide: "ghidul de început", + needBitcoinAfter: "pentru recomandări de portofele.", + ownShopTitle: "Ai un Skate Shop?", + ownShopBody: "Listează-ți Shop-ul pe SkateSpots și vinde-ți produsele pe Plebeian Market. Ajunge la clienți din întreaga lume cu zero taxe de platformă.", + addShop: "Adaugă-ți Shop-ul", + startSelling: "Începe să vinzi", + }, + listingDetail: { + notFound: "Anunț negăsit", + notFoundBody: "Este posibil să fi fost șters sau linkul este greșit.", + backToGearSwap: "Înapoi la Schimb de Gear", + gearSwap: "Schimb de Gear", + viewPhoto: "Vezi fotografia {{n}}", + photoAlt: "{{title}} — fotografia {{n}}", + wantToBuy: "VREAU SĂ CUMPĂR", + sold: "VÂNDUT", + description: "Descriere", + usuallyHere: "De obicei aici {{availability}}", + listed: "Listat {{date}}", + listingCountOne: "{{count}} anunț · acum {{age}} zile", + listingCountMany: "{{count}} anunțuri · acum {{age}} zile", + relistActive: "Relistează ca activ", + markSold: "Marchează ca vândut", + deleteListing: "Șterge anunțul", + makeOffer: "Fă o ofertă", + shareListing: "Distribuie anunțul", + unknown: "Necunoscut", + linkCopied: "Link copiat", + linkCopiedBody: "Distribuie-l unui skater.", + copyFailed: "Linkul nu a putut fi copiat", + relisted: "Relistat", + relistedBody: "Anunțul tău este din nou activ.", + couldNotUpdate: "Nu s-a putut actualiza", + somethingWrong: "Ceva a mers greșit", + }, + create: { + imageUploaded: "Imagine încărcată", + uploadFailed: "Încărcarea a eșuat", + failed: "Eșuat", + cooldownActive: "Temporizare activă", + cooldownWait: "Te rugăm să aștepți {{time}} înainte de a crea un alt anunț", + limitReached: "Limita de anunțuri atinsă", + limitReachedBody: "Ai atins limita lunară de {{limit}} anunțuri", + feeRequired: "Taxă necesară", + feeRequiredBody: "Te rugăm să plătești taxa anti-spam pentru a continua", + titleRequired: "Titlul este obligatoriu", + categoryRequired: "Categoria este obligatorie", + photoRequired: "Fotografia este obligatorie", + photoRequiredBody: "Cel puțin o fotografie este necesară când vinzi Gear", + nip05Required: "Verificare NIP-05 necesară", + nip05RequiredBody: "Ai nevoie de o adresă Nostr verificată pentru a lista Gear", + priceRequired: "Prețul este obligatoriu pentru anunțurile cu preț fix", + sizeRequired: "Mărimea este obligatorie", + sizeRequiredBody: "Te rugăm să selectezi o mărime pentru {{category}}", + conditionRequired: "Starea este obligatorie", + conditionRequiredBody: "Te rugăm să selectezi starea pentru {{category}}", + wtbPosted: "Cerere de cumpărare postată!", + wtbPostedBody: "Vânzătorii vor putea găsi cererea ta.", + listingCreated: "Anunț creat!", + listingCreatedBody: "Gear-ul tău este acum listat.", + publishFailed: "Publicarea a eșuat", + loginRequired: "Autentificare necesară", + loginRequiredBody: "Trebuie să te autentifici pentru a lista Gear.", + backToStash: "Înapoi la Stash", + backToSpot: "Înapoi la {{title}}", + backToMarketplace: "Înapoi la Marketplace", + backToMap: "Înapoi la hartă", + wantToBuy: "Vreau să cumpăr", + listYourGear: "Listează-ți Gear-ul", + wtbSubtitle: "Spune-le comunității ce Gear cauți", + sellSubtitle: "Vinde Gear de skateboarding comunității", + fromStashTitle: "Anunț din Stash-ul tău", + fromStashBody: "Precompletat cu detaliile articolului din Stash. Verifică și alege un punct de întâlnire!", + nip05Banner: "Pentru a preveni spamul și a proteja cumpărătorii, ai nevoie de o adresă Nostr verificată (NIP-05) pentru a lista Gear.", + verifiedLabel: "Verificat:", + checkingTrust: "Se verifică nivelul tău de încredere...", + trustLevel: "Nivel de încredere:", + trusted: "De încredere", + active: "Activ", + newcomer: "Nou-venit", + newUser: "Utilizator nou", + remaining: "{{remaining}} din {{limit}} anunțuri rămase luna aceasta", + cooldownBody: "Utilizatorii noi au o temporizare de 24 de ore între anunțuri.", + timeRemaining: "Timp rămas: {{time}}", + monthlyLimitTitle: "Limita lunară atinsă", + monthlyLimitBody: "Ai atins limita de {{limit}} anunțuri luna aceasta. Construiește-ți reputația creând Spoturi sau finalizând vânzări pentru a-ți crește limita.", + powAccepted: "Proof of work acceptat!", + feePaid: "Taxă plătită!", + canCreateNow: "Acum poți crea anunțul tău.", + whatDoTitle: "Ce vrei să faci?", + sellGear: "VINDE GEAR", + categoryTitle: "Categorie *", + categoryHint: "Ce tip de Gear?", + detailsTitle: "Detalii Gear", + detailsWtbHint: "Descrie ce cauți", + detailsSellHint: "Spune-le cumpărătorilor despre articolul tău", + titleLabel: "Titlu *", + titlePlaceholderWtb: "Caut Deck 8.0\"", + titlePlaceholderSell: "Deck Palace 8.25\" aproape nou", + summaryLabel: "Rezumat scurt", + summaryPlaceholderWtb: "Orice brand, prefer grafică minimă", + summaryPlaceholderSell: "Stare excelentă, aproape nefolosit", + descriptionLabel: "Descriere", + descriptionPlaceholderWtb: "Descrie exact ce cauți - preferințe de brand, cerințe de stare etc.", + descriptionPlaceholderSell: "Am primit acest Deck de Crăciun, dar prefer o mărime mai mică. Îți dau voie să-l încerci înainte să cumperi!", + fulfilmentLabel: "Cum se livrează?", + pickup: "Ridicare", + pickupHint: "Întâlnire locală", + ships: "Livrare", + shipsHint: "Trimite prin poștă", + both: "Ambele", + bothHint: "Oricare", + addressNote: "Nu colectăm niciodată adresa ta — pentru livrare, împărtășește-o privat în chatul tranzacției.", + postageLabel: "Cine plătește transportul?", + requireEscrow: "Necesită escrow", + requireEscrowHint: "Cere cumpărătorului să deconteze prin escrow Cashu.", + postageBuyer: "Cumpărătorul plătește", + postageSeller: "Plătesc eu", + postageSplit: "Împărțit", + sizeLabel: "Mărime", + selectSize: "Selectează mărimea", + truckHeight: "Înălțimea Trucks-urilor", + selectHeight: "Selectează înălțimea", + wheelHardness: "Duritatea Wheels-urilor", + selectHardness: "Selectează duritatea", + pricingTitle: "Preț", + pricingWtbHint: "Cum vrei să plătești?", + pricingSellHint: "Cum vrei să vinzi?", + priceLabel: "Preț *", + currencyLabel: "Monedă", + photosTitle: "Fotografii", + photosSellHint: "Cel puțin o fotografie este necesară", + photosWtbHint: "Opțional - adaugă imagini de referință", + productPhoto: "Produs {{n}}", + upload: "Încarcă", + photosNote: "Adaugă până la 5 fotografii. Prima imagine va fi fotografia principală.", + pickupLocationTitle: "Locație de ridicare", + pickupLocationHint: "Leagă de un skate Spot pentru întâlniri ușoare", + searchSpots: "Caută Spoturi...", + noSpotsFound: "Niciun Spot găsit. Încearcă o altă căutare.", + availabilityLabel: "Când ești de obicei disponibil?", + availabilityPlaceholder: "Weekend-uri 10:00-14:00, Mar/Joi seara", + availabilityHint: "Îi ajută pe cumpărători să coordoneze întâlniri cu tine", + durationTitle: "Durata anunțului", + durationHint: "Cât timp ar trebui să rămână activ acest anunț?", + publishing: "Se publică...", + checkingEligibility: "Se verifică eligibilitatea...", + cooldownButton: "TEMPORIZARE: {{time}}", + limitReachedButton: "LIMITĂ ATINSĂ", + payFeeButton: "PLĂTEȘTE TAXA PENTRU A CONTINUA", + postWtbButton: "POSTEAZĂ VREAU SĂ CUMPĂR", + listForSaleButton: "LISTEAZĂ GEAR DE VÂNZARE", + }, + trades: { + title: "Tranzacțiile mele", + loginBody: "Autentifică-te pentru a-ți administra tranzacțiile de pe Marketplace și reputația.", + subtitle: "Confirmări, cereri și reputația pe care o construiesc. Plata se aranjează cu celălalt skater — aplicația doar înregistrează înțelegerea.", + actionNeeded: "Acțiune necesară", + askedToConfirmSale: "ți-a cerut să confirmi o vânzare", + recordedSale: "a înregistrat o vânzare — confirmă-ți partea", + confirmSale: "Confirmă vânzarea", + confirm: "Confirmă", + nothingWaiting: "Nimic nu te așteaptă acum. 🛹", + yourRecords: "Înregistrările tale de tranzacții", + noTrades: "Încă nicio tranzacție. Încheie o înțelegere și confirmă-o pentru a începe să-ți construiești reputația.", + browseGearSwap: "Răsfoiește Schimbul de Gear", + roleSold: "Vândut", + roleBought: "Cumpărat", + roleTrade: "Schimb", + with: "cu", + viewListing: "Vezi anunțul", + revoke: "Revocă", + revokeTitle: "Revoci această înregistrare de tranzacție?", + revokeBody: "Nu va mai conta pentru reputația ta. Cealaltă parte își păstrează propria atestare. Folosește asta pentru o înțelegere disputată sau greșită.", + revokeNote: "Retras de autor.", + revoked: "Înregistrare de tranzacție revocată", + revokedBody: "Nu mai contează pentru reputație.", + revokeFailed: "Tranzacția nu a putut fi revocată", + saleConfirmed: "Vânzare confirmată", + saleConfirmedBody: "Acum își pot confirma partea.", + saleConfirmFailed: "Vânzarea nu a putut fi confirmată", + tradeConfirmed: "Tranzacție confirmată", + tradeConfirmedBody: "Reputație actualizată pentru amândoi.", + tradeConfirmFailed: "Tranzacția nu a putut fi confirmată", + somethingWrong: "Ceva a mers greșit.", + }, + card: { + listingDeleted: "Anunț șters", + listingRemoved: "Anunț eliminat", + listingDeletedBody: "Anunțul tău a fost eliminat. Relay-urile care onorează ștergerile vor înceta să îl servească.", + listingRemovedBody: "Acest anunț a fost eliminat și va fi ascuns în tot SkateSpots.", + removeFailed: "Eliminarea a eșuat", + somethingWrong: "Ceva a mers greșit", + markedSold: "Marcat ca vândut", + markedSoldBody: "Anunțul tău este acum afișat ca vândut.", + couldNotUpdate: "Nu s-a putut actualiza", + relisted: "Relistat", + relistedBody: "Anunțul tău este din nou activ.", + listingOptions: "Opțiuni anunț", + report: "Raportează", + removeAdmin: "Elimină (admin)", + postage: "transport", + newSeller: "Vânzător nou", + saleOne: "{{count}} vânzare", + saleMany: "{{count}} vânzări", + iHaveThis: "Am asta!", + deleteTitle: "Ștergi \"{{title}}\"?", + adminRemoveTitle: "Elimini acest anunț? (admin)", + deleteBody: "Aceasta cere relay-urilor să elimine anunțul tău \"{{title}}\". Nu poate fi anulat de aici — ar trebui să creezi unul nou.", + adminRemoveBody: "Ca admin SkateSpots, elimini \"{{title}}\". Va fi ascuns în aplicație pentru toată lumea și o cerere de ștergere va fi trimisă către relay-uri.", + deleting: "Se șterge…", + removing: "Se elimină…", + deleteListing: "Șterge anunțul", + removeListing: "Elimină anunțul", + reportCount: "{{count}} raportare", + reports: "{{count}} raportări", + viewTitle: "Vezi {{title}}", + reportListing: "Raportează anunțul", + manageListing: "Administrează anunțul", + trusted: "De încredere", + daysOld: "acum {{n}} zile", + monthsOld: "acum {{n}} luni", + yearsOld: "acum {{n}} ani", + listingsCount: "{{count}} anunțuri", + postageBuyer: "transport: cumpărător", + postageSeller: "transport: vânzător", + postageSplit: "transport: împărțit", + powTitle: "NIP-13 proof of work — anti-spam gratuit", + verifiedTradeOne: "{{count}} tranzacție verificată", + verifiedTrades: "{{count}} tranzacții verificate", + reportSubmitted: "Raportare trimisă", + reportSubmittedBody: "Mulțumim că ajuți la menținerea siguranței Marketplace-ului.", + reportFailed: "Raportarea nu a putut fi trimisă", + selectReason: "Te rugăm să selectezi un motiv", + reportDialogBody: "Ajută la menținerea siguranței Marketplace-ului raportând anunțurile inadecvate sau înșelătoare.", + reasonLabel: "Motivul raportării *", + detailsLabel: "Detalii suplimentare (opțional)", + detailsPlaceholder: "Oferă orice context suplimentar care ar putea ajuta...", + reportNote: "Raportările sunt publicate pe Nostr și ajută comunitatea să identifice anunțurile problematice. Anunțurile cu mai multe raportări pot fi ascunse automat.", + submitting: "Se trimite...", + submitReport: "Trimite raportarea", + }, + tradeActions: { + tradeConfirmed: "Tranzacție confirmată", + tradeConfirmedWithProof: "A fost atașată o chitanță verificabilă — aceasta contează pentru tranzacțiile verificate.", + tradeConfirmedBody: "Reputație actualizată pentru amândoi.", + tradeConfirmFailed: "Tranzacția nu a putut fi confirmată", + somethingWrong: "Ceva a mers greșit.", + requestNote: "Te rugăm să confirmi tranzacția noastră pentru \"{{title}}\".", + requestSent: "Confirmare solicitată", + requestSentBody: "Vânzătorul poate confirma acum vânzarea și poate construi ambele reputații.", + requestFailed: "Cererea nu a putut fi trimisă", + escrowRefunded: "Escrow rambursat", + escrowRefundedBody: "Fondurile sunt înapoi în portofelul tău Cashu.", + escrowRefundFailed: "Escrow-ul nu a putut fi rambursat", + confirmThisTrade: "Confirmă această tranzacție", + escrowAndRequest: "Escrow și cerere", + shipsEscrowHint: "Tranzacție cu livrare — folosește escrow ca niciuna dintre părți să nu trimită în gol. Împărtășește-ți adresa privat în chatul tranzacției, niciodată aici.", + shipsHint: "Tranzacție cu livrare — preferă escrow dacă vânzătorul îl oferă și împărtășește-ți adresa doar în chat.", + askSeller: "Cere vânzătorului să confirme", + waitingSeller: "Confirmare solicitată — se așteaptă vânzătorul.", + refundEscrow: "Rambursează escrow", + buyWithSats: "Cumpără cu sats", + depositTitle: "Depunere de bună-credință (opțional)", + payDeposit: "Plătește depunerea", + depositBefore: "Un schimb nu are factură, așa că aceasta este modalitatea de a-i da un", + verifiableCost: "cost verificabil", + depositAfter: ". Rambursare la livrare (sau folosește escrow Cashu pentru o rambursare automată). ⚠️ Dovedește angajamentul, nu livrarea.", + depositPaid: "Depunere plătită", + depositPaidBody: "Salvat — va fi atașat când tranzacția este confirmată.", + paid: "Plătit ⚡", + paidWithProof: "Chitanță verificabilă salvată — confirmă tranzacția pentru a conta.", + paidBody: "Cere vânzătorului să confirme tranzacția, ca să conteze pentru amândoi.", + }, + offers: { + accepted: "Acceptată", + declined: "Refuzată", + withdrawn: "Retrasă", + open: "Deschisă", + noAmount: "fără sumă", + titleOwner: "Oferte ({{count}})", + titleBuyer: "Negocierile tale", + you: "Tu", + them: "Ei", + paidAskConfirm: "Plătit — cere vânzătorului să confirme tranzacția.", + payWithSats: "Plătește cu sats", + accept: "Acceptă", + decline: "Refuză", + counter: "Contraofertă", + counterPlaceholder: "Contraoferta ta (sats)", + send: "Trimite", + counterItemPlaceholder: "…sau contraofertă cu un articol de schimbat (opțional)", + waitingOn: "Se așteaptă", + waitingOnSuffix: "— rândul tău va reveni dacă fac o contraofertă.", + withdraw: "Retrage", + dmAccepted: "✅ Oferta ta a fost acceptată! Trimite mesaj pentru a aranja predarea.", + dmDeclined: "❌ Oferta ta a fost refuzată.", + offerAccepted: "Ofertă acceptată", + offerDeclined: "Ofertă refuzată", + respondFailed: "Nu s-a putut răspunde", + somethingWrong: "Ceva a mers greșit.", + offerWithdrawn: "Ofertă retrasă", + withdrawFailed: "Nu s-a putut retrage", + enterAmountOrItem: "Introdu o sumă sau un articol de schimbat", + counterDm: "Contraofertă", + counterSent: "Contraofertă trimisă", + counterSentBody: "Acum este rândul lor.", + counterFailed: "Contraoferta nu a putut fi trimisă", + }, + offer: { + validAmount: "Introdu o sumă validă", + describeOffer: "Descrie-ți oferta", + describeOfferBody: "Adaugă o sumă, un articol de schimbat sau un mesaj.", + dmAmount: " pentru {{amount}} sats", + dmItem: " (oferind: {{item}})", + dmBody: "🛹 Ofertă nouă pentru anunțul tău \"{{title}}\"{{amount}}{{item}}.{{note}}", + sent: "Ofertă trimisă", + sentBody: "{{sellerName}} o poate accepta sau refuza.", + sendFailed: "Oferta nu a putut fi trimisă", + somethingWrong: "Ceva a mers greșit.", + title: "Fă o ofertă", + description: "Oferă sats sau schimbă ceva — {{sellerName}} poate accepta, refuza sau veni cu o contraofertă. Predarea o aranjați între voi.", + amountLabel: "Sumă (sats, opțional)", + amountPlaceholder: "de ex. 45000", + itemLabel: "Sau oferă ceva la schimb (opțional)", + itemPlaceholder: "de ex. Deck-ul meu 8.25 + Wheels de rezervă", + itemHint: "Faci schimb? Pune aici ce oferi — poți combina cu sats.", + messageLabel: "Mesaj (opțional)", + messagePlaceholder: "Orice ar trebui să știe vânzătorul…", + send: "Trimite oferta", + }, + markSold: { + enterBuyer: "Introdu npub-ul cumpărătorului", + dealClosed: "Înțelegere încheiată 🎉", + dealClosedBody: "Anunț marcat ca vândut și tranzacția publicată pentru reputație.", + closeFailed: "Înțelegerea nu a putut fi încheiată", + somethingWrong: "Ceva a mers greșit.", + title: "Încheie înțelegerea", + description: "Marchează acest anunț ca vândut și înregistrează o atestare de tranzacție semnată pentru tine și cumpărător.", + buyerLabel: "npub-ul cumpărătorului", + methodLabel: "Cum s-a plătit? (auto-raportat)", + amountLabel: "Sumă în sats (opțional)", + submit: "Marchează ca vândut", + }, + handoff: { + title: "Aranjează predarea", + suggest: "Sugerează o oră și un loc", + suggestDm: "Salut! Aș vrea să cumpăr \"{{title}}\". Sugerează o oră și un loc de întâlnire — mă bucur să ne vedem la un skate Spot public.", + orMeetAt: "Sau ne întâlnim la un Spot public din apropiere:", + spotDm: "Salut! Aș vrea să cumpăr \"{{title}}\". Vrei să ne întâlnim la {{spot}}? {{url}}", + shareDelivery: "Împărtășește detaliile de livrare", + deliveryDm: "Salut! Aș vrea să cumpăr \"{{title}}\". Iată detaliile mele de livrare:\n\nNume:\nAdresă:\n\n(Împărtășește doar ce are nevoie curierul.)", + useLocker: "Folosește un locker / punct de coletărie", + lockerDm: "Salut! Aș vrea să cumpăr \"{{title}}\". Am putea folosi un locker / punct de coletărie în loc de adresa de acasă?", + noteBefore: "Aceste detalii rămân în chatul privat — SkateSpots nu le vede niciodată. Pentru tranzacțiile cu livrare, preferă", + escrow: "escrow", + noteMiddle: ", și", + neverPay: "nu plăti niciodată în afara canalelor aplicației", + noteAfter: ". Întâlnește-te în public.", + }, + shipping: { + noCounterparty: "Încă nicio contraparte", + noCounterpartyBody: "Vânzătorul ar trebui să înregistreze mai întâi vânzarea (numind cumpărătorul).", + markedShipped: "Marcat ca expediat", + markedReceived: "Marcat ca primit", + issueReported: "Problemă raportată", + receivedBody: "Mulțumim — aceasta nu eliberează escrow-ul; decontează direct cu vânzătorul.", + notifiedBody: "Cealaltă parte a fost notificată.", + updateFailed: "Nu s-a putut actualiza", + somethingWrong: "Ceva a mers greșit.", + title: "Livrare", + shipped: "expediat", + received: "primit", + issue: "problemă", + trackingPlaceholder: "Număr de urmărire (opțional)", + iShipped: "L-am expediat", + iReceived: "L-am primit", + reportIssue: "Raportează o problemă", + noteBefore: "Auto-raportat — o notă logistică,", + notProof: "nu o dovadă", + noteAfter: ". Marcarea ca \"primit\" nu eliberează escrow-ul. ⚠️ Nu fotografia un colet cu adresa vizibilă și împărtășește un număr de urmărire doar dacă ești confortabil ca acesta să fie public.", + }, + pay: { + sent: "Plată trimisă ⚡", + sentWithProof: "Chitanță de plată verificabilă salvată — va conta ca verificată prin plată.", + sentBody: "Anunță vânzătorul — poate confirma tranzacția ca să conteze pentru amândoi.", + failed: "Plata a eșuat", + title: "Plătește cu sats", + descSendPrefix: "Trimite", + descSendSuffix: "către {{sellerName}} pentru a deconta această înțelegere.", + descSettle: "Decontează această înțelegere direct cu {{sellerName}}.", + paid: "Plătit!", + paidBody: "Cere vânzătorului să confirme tranzacția — două confirmări construiesc ambele reputații.", + noMethod: "{{sellerName}} nu a setat o metodă de plată (fără factură sau adresă Lightning). Trimite-i un mesaj pentru a aranja plata.", + ownListing: "Acesta este anunțul tău.", + paying: "Se plătește…", + pay: "Plătește", + payAmount: "Plătește {{amount}} sats", + footnote: "Plătește din portofelul tău conectat (NWC, WebLN sau Cashu) direct către {{sellerName}} — SkateSpots nu deține niciodată fondurile.", + }, + spamFee: { + invoiceComment: "Taxă de anunț SkateSpots", + generateFailed: "Factura nu a putut fi generată", + paymentSuccess: "Plată reușită!", + satsSent: "{{amount}} sats trimiși către {{name}}", + autoPayFailed: "Plata automată a eșuat", + autoPayFailedBody: "Te rugăm să plătești manual folosind codul QR sau factura", + invoiceCopied: "Factură copiată!", + copyFailed: "Copierea a eșuat", + received: "Plată primită!", + receivedBody: "Taxa ta de {{amount}} sat a fost plătită. Acum poți crea anunțul.", + title: "Taxă unică de listare", + subtitle: "Ca membru nou, este necesară o taxă mică pentru primul tău anunț.", + whyTitle: "De ce trebuie să plătesc?", + spamLabel: "Prevenirea spamului:", + spamBody: "Această taxă oprește boții și escrocii să inunde Marketplace-ul cu anunțuri false.", + trustLabel: "Construirea încrederii:", + trustBody: "Conturile noi trebuie să dovedească angajament înainte de a lista. După câteva anunțuri reușite, această taxă este eliminată.", + supportsLabel: "Susține comunitatea:", + supportsPrefix: "Taxa merge către", + supportsSpotOwner: " — persoana care a creat acest Spot!", + supportsPlatform: " — ajută la menținerea SkateSpots în funcțiune.", + oneTimeFee: "~{{usd}} USD • Taxă unică", + payToContinue: "Plătește {{amount}} sats pentru a continua", + proveWork: "Dovedește munca în schimb — gratuit", + proveWorkBody: "Consumă câteva secunde de CPU în loc de {{amount}} sats. Fără bani, fără portofel — o taxă anti-spam, nu o plată.", + generating: "Se generează factura...", + processing: "Se procesează plata...", + qrAlt: "Cod QR de plată", + copyInvoice: "Copiază factura", + openWallet: "Deschide portofelul", + payWithWallet: "Plătește cu portofelul conectat", + scanHint: "Scanează codul QR cu un portofel Lightning sau folosește butoanele de mai sus", + skipTitle: "Cum să eviți această taxă în viitor:", + skip1: "Adaugă un skate Spot pe hartă", + skip2: "Finalizează 2-3 anunțuri reușite", + skip3: "Construiește-ți reputația în comunitate", + skipNote: "Membrii de încredere au anunțuri gratuite nelimitate!", + }, + reputation: { + highlyTrusted: "Trader de mare încredere", + building: "Se construiește reputația", + newTrader: "Trader nou", + title: "Tranzacții", + verified: "Verificat", + sales: "Vânzări", + purchases: "Achiziții", + tradeConfirmedOne: "tranzacție confirmată reciproc", + tradeConfirmedMany: "tranzacții confirmate reciproc", + with: "cu", + personOne: "persoană", + personMany: "persoane", + awaiting: "Se așteaptă confirmarea reciprocă", + withPaymentProof: "cu o dovadă de plată atașată", + selfReported: "(auto-raportat — neverificat)", + paymentVerified: "verificat prin plată", + zapReceipt: "(chitanță zap)", + singlePartnerWarning: "Fiecare confirmare este cu același cont. Confirmarea reciprocă este auto-raportată, așa că tratează această înregistrare cu atenție.", + lowDiversityWarning: "Majoritatea confirmărilor vin de la foarte puține conturi. Un grup mic care se vouch-uiește reciproc poate părea activ — tratează această înregistrare cu atenție.", + ringWarning: "Aceste conturi fac schimburi în principal între ele — un cluster închis. Confirmarea reciprocă în interiorul unui cerc este o dovadă slabă.", + weighted: "Ponderat după încredere și activitate", + footnote: "Auto-raportat și semnat reciproc — un semnal, nu o dovadă de plată.", + }, + reputationPanel: { + reviewOfYou: "Recenzie despre tine", + yourRecord: "înregistrarea ta", + listing: "Anunț", + averageOne: "medie din {{count}} evaluare", + averageMany: "medie din {{count}} evaluări", + reviewsTitle: "Recenzii și înregistrări de tranzacții", + fromOthers: "{{count}} de la alții", + emptyBefore: "Încă nicio înregistrare de tranzacție. Finalizează o înțelegere și confirm-o în", + emptyAfter: "— fiecare confirmare devine o recenzie pe ambele profiluri.", + }, + recommendations: { + published: "Recomandare publicată", + publishedBody: "Mulțumim pentru susținere.", + failed: "Nu s-a putut recomanda", + somethingWrong: "Ceva a mers greșit.", + title: "Trader de încredere", + recommendedBy: "Recomandat de", + skaterOne: "skater", + skaterMany: "skateri", + none: "Încă nicio recomandare.", + youRecommend: "Recomanzi acest trader ✓", + recommend: "Recomandă ca trader de încredere", + }, + notification: { + newOffer: "Ofertă nouă", + counterOffer: "Contraofertă", + offerAccepted: "Ofertă acceptată", + offerDeclined: "Ofertă refuzată", + offerWithdrawn: "Ofertă retrasă", + confirmTrade: "Confirmă o tranzacție", + tradeConfirmed: "Tranzacție confirmată", + reviewOffer: "Vezi oferta", + openListing: "Deschide anunțul", + }, + confirmRow: { + rateTrade: "Evaluează tranzacția:", + }, + deckRating: { + title: "{{value}}/10 Deck-uri", + aria: "{{n}} din 10", + }, + clink: { + tip: "Dă bacșiș în Bitcoin", + copiedBody: "Cod CLINK copiat în clipboard.", + copyFailed: "Copierea a eșuat", + copyFailedBody: "Nu s-a putut accesa clipboard-ul.", + whatIs: "Ce este CLINK?", + tooltipTitle: "Plătește direct cu Bitcoin prin Nostr", + tooltipBody: "CLINK este un cod de plată auto-custodial — fără cont de aplicație, fără intermediar. Scanează-l cu un portofel Lightning compatibil și bacșișul merge direct la ei.", + descRecipient: "Trimite o plată Bitcoin (Lightning) auto-custodială către {{recipientName}} — fără intermediar.", + descGeneric: "Trimite o plată Bitcoin (Lightning) auto-custodială prin Nostr — fără intermediar.", + qrAlt: "Cod QR de ofertă CLINK", + copyCode: "Copiază codul CLINK", + openWallet: "Deschide în portofelul CLINK", + copyToWallet: "Copiază codul pentru portofelul tău", + priceFixed: "Fix — {{amount}} sats", + priceFixedShort: "Preț fix", + priceVariable: "Preț variabil", + priceVariableCurrency: "Preț în {{currency}}", + priceSpontaneous: "Tu alegi suma", + footnote: "Scanează cu un portofel compatibil CLINK (de ex. ShockWallet). Dacă nu se deschide nimic, copiază codul de mai sus — este posibil să nu ai instalat un portofel compatibil CLINK. Fără custode, fără server web: factura este solicitată direct prin Nostr.", + }, + paymentReadiness: { + ready: "Poți primi plăți", + notReady: "Configurează plățile pentru a primi bani", + readyBefore: "Adresa ta Lightning", + readyAfter: " este pe profilul tău — oamenii te pot zap-ui și plăti direct.", + silentSet: " Este setată și o adresă Bitcoin Silent Payment.", + notReadyBefore: "Adaugă o adresă Lightning (și opțional o adresă Bitcoin Silent Payment) în", + nostrProfile: "profilul Nostr", + notReadyAfter: "ca skaterii să te poată plăti. Se setează o dată și funcționează pe toate profilurile tale de aici.", + }, + seller: { + trade: "Tranzacție", + active: "Activ", + markSold: "Marchează ca vândut", + yourListings: "Anunțurile tale", + activeCount: "{{count}} active", + listItem: "Listează un articol", + loading: "Se încarcă anunțurile tale…", + empty: "Încă nu ai anunțuri.", + listFirst: "Listează primul tău articol", + }, + noffer: { + label: "Cod de ofertă CLINK", + optional: "(opțional, avansat)", + offerId: "Ofertă: {{id}}", + relay: "Relay: {{relay}}", + invalidBefore: "Acesta nu pare un cod valid", + invalidAfter: ".", + valid: "Cod CLINK valid — un buton \"Plătește prin CLINK\" va apărea pe profilul tău.", + help: "Lipește un cod de plată CLINK auto-custodial (de ex. din ShockWallet / Lightning.Pub) pentru a accepta plăți Lightning native Nostr — fără server web sau custode.", + learnSpecs: "Află specificațiile", + }, + escrowPanel: { + escrowed: "În escrow {{amount}} sats", + mint: "Mint", + refundSinceBefore: "Cumpărătorul poate rambursa din", + redeemBefore: "Vânzătorul poate răscumpăra acum · cumpărătorul rambursează după", + noExpiry: "Nu s-a setat expirare pentru acest token.", + }, + escrowRequest: { + enterAmount: "Introdu o sumă de escrow", + minLock: "Blochează pentru cel puțin {{days}} zi", + requestNote: "Am pus în escrow {{amount}} sats pentru tranzacția noastră — te rugăm să confirmi vânzarea.", + created: "Escrow creat 🎉", + createdBody: "{{amount}} sats blocați pentru {{days}} zile. {{sellerName}} poate răscumpăra la livrare.", + createFailed: "Escrow-ul nu a putut fi creat", + somethingWrong: "Ceva a mers greșit.", + title: "Pune această tranzacție în escrow", + description: "Fondurile sunt blocate către {{sellerName}} și rambursabile de tine dacă înțelegerea eșuează după termenul limită. Necesită un portofel Lightning conectat.", + amountLabel: "Sumă (sats)", + daysLabel: "Cumpărătorul rambursează după (zile)", + daysHint: "După acest număr de zile poți recupera fondurile dacă vânzătorul nu a livrat.", + nativeOnly: "Escrow Cashu este disponibil doar în aplicația SkateSpots (nu în versiunea web).", + lockAndRequest: "Blochează și solicită", + }, + }, + labOptions: { + coach: { + skill: { + basics: "Noțiuni de bază", + ollies: "Ollie-uri", + kickflips: "Kickflip-uri", + grinds: "Grinds și Slides", + manuals: "Manuals", + inverts: "Inverts", + vert: "Vert/Rampă", + bowl: "Bowl", + street: "Street", + freestyle: "Freestyle", + safety: "Siguranță", + diy: "Module DIY de skate", + }, + skillDesc: { + basics: "Împins, poziție, echilibru, virare", + ollies: "Ollie și variațiuni (nollie, fakie)", + kickflips: "Kickflip, heelflip și variațiuni", + grinds: "50-50, 5-0, boardslide și altele", + manuals: "Manual, nose manual, combinații", + inverts: "Invert, handplant, eggplant, andrecht", + vert: "Half-pipe, quarter-pipe, drop-in-uri", + bowl: "Bowl carving, pumping, linii", + street: "Obstacole de street și creativitate", + freestyle: "Trick-uri pe plat și flow", + safety: "Cum să cazi, echipament de protecție, prevenirea accidentărilor", + diy: "Construirea de rampe, șine, margini și alte obstacole de skate", + }, + }, + filmer: { + service: { + miniclips: "Mini clipuri", + longparts: "Părți video lungi", + koth: "Stil King of the Road", + documentaries: "Documentare", + contests: "Filmare pentru concursuri", + raw: "Material brut", + followlines: "Filmare follow / linii", + lines: "Filmare linii și B-Roll", + }, + serviceDesc: { + miniclips: "Clipuri de 15-60 sec pentru rețele sociale", + longparts: "Părți video complete de 3-10 min cu muzică", + koth: "Videoclipuri de skate în stil aventură/provocare", + documentaries: "Conținut despre cultura skate și povești", + contests: "Acoperire profesională de concursuri și competiții", + raw: "Material multi-unghi needitat", + followlines: "Follow-cam fisheye pentru linii", + lines: "Linii cu obiectiv lung și b-roll cinematografic", + }, + skill: { + vx1000: "VX1000", + hvx: "HVX / HPX", + cinema: "Cameră de cinema", + dslr: "DSLR / Mirrorless", + actioncam: "GoPro / Action Cam", + phone: "Filmare cu telefonul", + drone: "Dronă / Aerian", + gimbal: "Gimbal / Stabilizator", + fisheye: "Obiectiv fisheye", + longlens: "Obiectiv lung", + "4k": "4K / Rată de cadre înaltă", + editing: "Editare video", + color: "Color grading", + }, + skillDesc: { + vx1000: "Estetica clasică a skateboarding-ului VX1000", + hvx: "Aspectul Panasonic HVX/HPX standard-def / HD", + cinema: "Cameră de cinema (FX3, seria C, RED, BMPCC)", + dslr: "Cameră DSLR sau mirrorless de înaltă calitate", + actioncam: "POV și monturi GoPro / action cam", + phone: "Filmare mobilă cu smartphone-uri moderne", + drone: "Material aerian și cu dronă", + gimbal: "Mișcare stabilizată cu gimbal", + fisheye: "Cadre cu obiectiv fisheye ultra-wide", + longlens: "Obiectiv lung pentru cadre detaliate", + "4k": "Rezoluție 4K și slow-mo cu rată de cadre înaltă", + editing: "Editare video profesională și post-producție", + color: "Corecție de culoare și grading", + }, + }, + editor: { + service: { + parts: "Părți video", + montages: "Montaje", + reels: "Reels / Clipuri scurte", + documentaries: "Documentare", + contest: "Editări de concurs", + brand: "Videoclipuri de brand / promo", + motion: "Motion Graphics", + colorgrade: "Doar color grading", + }, + serviceDesc: { + parts: "Părți video complete de skate cu coloană sonoră", + montages: "Editări compilație din material brut", + reels: "Clipuri și reels de 15–60 sec pentru rețele sociale", + documentaries: "Filme de cultură skate bazate pe povești", + contest: "Editări recapitulative pentru concursuri și evenimente", + brand: "Conținut promoțional pentru branduri și Shop-uri", + motion: "Titluri, tranziții, efecte și grafică", + colorgrade: "Corecție de culoare și grading bazat pe LUT-uri", + }, + skill: { + premiere: "Adobe Premiere", + resolve: "DaVinci Resolve", + finalcut: "Final Cut Pro", + aftereffects: "After Effects", + luts: "LUT-uri personalizate", + vhs: "Estetică VHS / Retro", + "4k": "Fluxuri de lucru 4K și RAW", + sound: "Sound Design / Mix", + }, + skillDesc: { + premiere: "Editare în Adobe Premiere Pro", + resolve: "Editare și grading în DaVinci Resolve", + finalcut: "Editare în Final Cut Pro", + aftereffects: "Motion graphics și compositing", + luts: "Dezvoltare de look de culoare personalizat", + vhs: "Glitch VHS, super-8, look-uri de film retro", + "4k": "Fluxuri de lucru cu cameră RAW/LOG de înaltă rezoluție", + sound: "Sincronizare muzicală, SFX, masterizare audio", + }, + }, + photo: { + service: { + action: "Action / Cadre de trick-uri", + sequence: "Cadre secvențiale", + portraits: "Portrete", + editorial: "Editorial / Revistă", + product: "Fotografie de produs / Shop", + events: "Acoperire de evenimente", + lifestyle: "Lifestyle / Documentar", + prints: "Printuri și Zine-uri", + }, + serviceDesc: { + action: "Fotografii de vârf ale trick-urilor și liniilor", + sequence: "Secvențe de trick-uri cu mai multe cadre", + portraits: "Portrete de rider și fotografii de echipă", + editorial: "Layout-uri editoriale gata de revistă", + product: "Fotografie de Deck-uri, Gear și produse de Shop", + events: "Acoperire de concursuri, jam-uri și premiere", + lifestyle: "Behind-the-scenes și documentar cultural", + prints: "Printuri fizice, zine-uri și albume foto", + }, + camera: { + dslr: "DSLR", + mirrorless: "Mirrorless", + medium: "Format mediu", + film35: "Film 35mm", + filmmedium: "Film de format mediu", + point: "Point & Shoot", + phone: "Telefon", + }, + lens: { + fisheye: "Fisheye", + wide: "Unghi larg", + standard: "Standard / Fix", + telephoto: "Teleobiectiv / Obiectiv lung", + macro: "Macro", + zoom: "Zoom", + }, + lighting: { + strobes: "Blitz-uri de studio", + speedlights: "Speedlights / Flash-uri", + profoto: "Profoto", + elinchrom: "Elinchrom", + godox: "Godox", + triggers: "Declanșatoare la distanță", + continuous: "Continuu / LED", + reflectors: "Reflectoare / Difuzoare", + naturallight: "Doar lumină naturală", + }, + support: { + tripod: "Treppiedi", + monopod: "Monopiedi", + lightstands: "Stative de lumină", + gimbal: "Gimbal", + bag: "Rig mobil / Geantă", + laptop: "Tethering pe loc", + }, + style: { + flashfisheye: "Flash Fisheye", + natural: "Lumină naturală", + bw: "Alb-negru", + film: "Estetică de film", + longlens: "Obiectiv lung", + studio: "Studio / Iluminat", + street: "Street / Documentar", + }, + }, + builder: { + service: { + diy: "Spoturi DIY", + concrete: "Parcuri de beton", + wood: "Rampe de lemn", + bowls: "Bowl-uri și piscine", + transitions: "Tranziții și quarters", + rails: "Șine și margini", + boxes: "Manny pads și boxe", + minis: "Mini rampe", + pumptrack: "Pump tracks", + foam: "Gropi cu spumă / Interior", + repairs: "Reparații și resurface", + design: "Design și consultanță", + }, + serviceDesc: { + diy: "Spoturi DIY comunitare și construcții guerrilla", + concrete: "Skatepark-uri și elemente din beton turnat", + wood: "Rampe de lemn, launch boxes și obstacole", + bowls: "Bowl-uri, piscine și tranziție adâncă", + transitions: "Quarterpipe-uri, banks și tranziție", + rails: "Șine de oțel, margini și elemente de grind", + boxes: "Manny pads, funbox-uri și elemente de street", + minis: "Mini rampe și configurații de curte", + pumptrack: "Pump tracks și linii de flow", + foam: "Gropi cu spumă, resi și elemente de antrenament indoor", + repairs: "Repararea, patch-uirea și resurface-ul Spoturilor existente", + design: "Planuri, desene și consultanță pentru construcție", + }, + skill: { + concretework: "Beton / Shotcrete", + welding: "Sudură / Fabricație oțel", + carpentry: "Tâmplărie / Lucru în lemn", + formwork: "Cofraj și armătură", + masonry: "Zidărie / Blocuri", + coping: "Coping (piscină / oțel)", + surfacing: "Skatelite / Suprafețe", + earthworks: "Terasamente / Excavare", + }, + scale: { + backyard: "Curte / Mini", + diycommunity: "DIY comunitar", + publicpark: "Parc public complet", + indoor: "Facilitate indoor", + event: "Traseu de eveniment / concurs", + }, + }, + artist: { + service: { + boardart: "Grafică de Deck", + logos: "Logo-uri și branding", + posters: "Postere și fluturași", + merch: "Merch și îmbrăcăminte", + zines: "Zine-uri și print", + illustration: "Ilustrație", + stickers: "Abțibilduri și decal-uri", + webdesign: "Web / Digital", + typography: "Tipografie / Lettering", + animation: "Animație / Motion", + }, + serviceDesc: { + boardart: "Grafică de Deck și artă pe Griptape", + logos: "Identitate de brand, logo-uri și wordmarks", + posters: "Postere de eveniment, fluturași și artă de concert", + merch: "Tricouri, hanorace și grafică de îmbrăcăminte", + zines: "Zine-uri, editorial și layout de print", + illustration: "Ilustrație personalizată și personaje", + stickers: "Pachete de abțibilduri, decal-uri și slaps", + webdesign: "Site-uri, digital și UI", + typography: "Lettering manual și tipar personalizat", + animation: "Motion graphics și animație", + }, + medium: { + digital: "Digital / Vector", + handdrawn: "Desenat manual", + screenprint: "Serigrafie", + paint: "Vopsea / Acrilic", + collage: "Colaj / Mixt", + 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: "Mural-uri", + characters: "Personaje", + lettering: "Lettering / Wildstyle", + stencil: "Șablon", + handstyles: "Handstyles / Tag-uri", + "3dstyle": "Stil 3D", + abstract: "Abstract", + }, + styleDesc: { + throwups: "Umpluturi rapide în două culori", + pieces: "Piese full-color și burners", + murals: "Mural-uri și producții la scară mare", + characters: "Personaje și figuri", + lettering: "Structură wildstyle și litere", + stencil: "Șablon și street art", + handstyles: "Tag-uri și handstyles", + "3dstyle": "Lettering 3D și anamorfic", + abstract: "Abstract și freestyle", + }, + medium: { + spray: "Spray-uri", + rollers: "Role / Emulsie", + markers: "Markere / Cerneluri", + brush: "Pensulă / Vopsea", + digital: "Digital / Procreate", + }, + context: { + legalwalls: "Ziduri legale", + commissions: "Comisioane", + liveart: "Pictură live", + skateparks: "Mural-uri în skatepark", + interiors: "Interioare / Shop-uri", + workshops: "Ateliere", + }, + }, + tattoo: { + style: { + traditional: "Traditional / Old School", + neotraditional: "Neo-Traditional", + fineline: "Fine Line", + blackwork: "Blackwork", + realism: "Realism", + lettering: "Lettering / Script", + illustrative: "Ilustrativ", + skateflash: "Skate Flash", + ignorant: "Stil Ignorant / Handpoke", + japanese: "Japonez / Irezumi", + }, + styleDesc: { + traditional: "Linii îndrăznețe, Americana clasică", + neotraditional: "Traditional cu detalii moderne", + fineline: "Lucru delicat cu un singur ac", + blackwork: "Negru solid și pattern", + realism: "Fotorealist și portrete", + lettering: "Script, lettering și citate", + illustrative: "Ilustrativ și grafic", + skateflash: "Design-uri flash din cultura skate", + ignorant: "Stil ignorant / naive handpoke", + japanese: "Traditional japonez / irezumi", + }, + method: { + machine: "Mașină", + handpoke: "Hand-Poke / Stick & Poke", + flash: "Flash disponibil", + custom: "Design-uri personalizate", + coverup: "Acoperiri", + }, + }, + trainer: { + focus: { + strength: "Forță și condiționare", + mobility: "Mobilitate și flexibilitate", + injuryprevention: "Prevenirea accidentărilor", + rehab: "Recuperare / Fizio", + recovery: "Recuperare și bodywork", + balance: "Echilibru și stabilitate", + cardio: "Cardio / Rezistență", + nutrition: "Consultanță nutrițională", + }, + focusDesc: { + strength: "Construirea forței și puterii pentru skate", + mobility: "Amplitudinea mișcării și flexibilitatea", + injuryprevention: "Prehab și reducerea riscului de accidentare", + rehab: "Fizioterapie și recuperare post-accidentare", + recovery: "Masaj, bodywork și recuperare", + balance: "Propriocepție, echilibru și stabilitate", + cardio: "Condiționare și rezistență", + nutrition: "Sfaturi de alimentație și nutriție", + }, + injury: { + ankles: "Glezne", + knees: "Genunchi", + wrists: "Încheieturi", + hips: "Șolduri", + back: "Spate / Coloană", + shoulders: "Umeri", + heelbruise: "Contuzii la călcâi", + concussion: "Protocol de comoție", + }, + credential: { + physio: "Fizioterapeut autorizat", + osteo: "Osteopat", + certtrainer: "Antrenor certificat", + sportstherapist: "Terapeut sportiv", + massage: "Maseur", + inperson: "În persoană", + remote: "La distanță / Online", + }, + }, + musician: { + genre: { + punk: "Punk", + hardcore: "Hardcore", + metal: "Metal", + rock: "Rock", + indie: "Indie / Alt", + hiphop: "Hip-Hop / Rap", + electronic: "Electronic", + lofi: "Lo-Fi / Beats", + reggae: "Reggae / Dub", + ska: "Ska", + jazz: "Jazz", + funk: "Funk / Soul", + flamenco: "Flamenco", + folk: "Folk / Acoustic", + experimental: "Experimental", + grunge: "Grunge", + }, + instrument: { + vocals: "Voce", + guitar: "Chitară", + bass: "Bass", + drums: "Tobe", + keys: "Clape / Synth", + dj: "DJ / Turntables", + producer: "Producător / Beats", + sax: "Sax / Alămuri", + strings: "Coarde", + other: "Altele", + }, + act: { + solo: "Artist solo", + band: "Trupă", + dj: "DJ", + producer: "Producător", + collective: "Colectiv", + }, + }, + judge: { + format: { + game_of_skate: "Game of S.K.A.T.E.", + best_trick: "Best Trick", + jam: "Format Jam", + contest: "Concurs / Comp", + street_league: "Stil Street League", + bowl: "Bowl / Vert", + mini_ramp: "Mini Rampă", + park: "Park", + street: "Street", + freestyle: "Freestyle", + world_tour: "World Destruction Tour", + am_series: "Am Series / Calificări", + local_jam: "Jam local / Grassroots", + online: "Concurs online / IG", + }, + specialty: { + head_judge: "Jude principal", + scoring: "Scoring / Tabelare", + mc: "MC / Prezentator", + format_design: "Design de format", + rules: "Reguli / Oficiere", + brackets: "Brackets / Serii", + livestream: "Jugecată live", + am_scout: "Scouting am", + }, + level: { + local: "Local", + regional: "Regional", + national: "Național", + international: "Internațional", + pro: "Circuit Pro", + }, + }, + organizer: { + event: { + street_jam: "Street Jam", + best_trick: "Best Trick", + game_of_skate: "Game of S.K.A.T.E.", + contest: "Concurs / Comp", + bowl: "Bowl / Vert", + mini_ramp: "Mini Rampă", + park: "Sesiune de park", + demo: "Demo pro", + clinic: "Clinică / Atelier", + meetup: "Întâlnire / Cruise", + downhill: "Downhill / Cursă", + slalom: "Slalom", + kids: "Copii / Tineret", + charity: "Caritate / Strângere de fonduri", + tour_stop: "Oprire de Tur", + premiere: "Premieră video", + market: "Târg / Expoziție de artă", + }, + service: { + organizing: "Organizare completă", + hosting: "Găzduire / MC", + permits: "Permise și autorități", + sponsorship: "Sponsorizare / Înțelegeri de brand", + promotion: "Promovare și marketing", + livestream: "Livestream / Acoperire", + sound: "Sunet și muzică", + ramps: "Rampe și obstacole", + safety: "Siguranță și prim ajutor", + vendors: "Mâncare și vânzători", + media: "Acoperire foto / video", + registration: "Înscrieri și brackets", + }, + scale: { + grassroots: "Grassroots", + local: "Local", + regional: "Regional", + national: "Național", + international: "Internațional", + pro: "Circuit Pro", + }, + }, + barber: { + service: { + haircut: "Tuns", + fade: "Fade", + beard: "Tuns barbă", + lineup: "Line-up / Shape-up", + colour: "Vopsire", + kids: "Tuns pentru copii", + }, + serviceDesc: { + haircut: "Un tuns clasic — mașină și foarfecă.", + fade: "Un fade gradat — jos, mediu sau sus.", + beard: "Tuns, modelat și aranjat barba.", + lineup: "Margini curate în jurul liniei părului și a gâtului.", + colour: "Vopsire, decolorare, vopsire și tonifiere.", + kids: "Tunsuri răbdătoare pentru skaterii mai tineri.", + }, + style: { + skin_fade: "Skin Fade", + taper: "Taper", + buzz: "Tuns scurt", + mohawk: "Mohawk", + mullet: "Mullet", + curly: "Bucle / Afro", + long: "Păr lung / Straturi", + classic: "Tuns clasic cu foarfeca", + }, + setting: { + shop: "Shop / Frizerie", + mobile: "Mobil / La domiciliu", + event: "Evenimente și concursuri de skate", + }, + }, + tour: { + skill: { + beginner: { + label: "Începător", + description: "Nou în skate sau trick-uri de bază", + }, + intermediate: { + label: "Intermediar", + description: "Confortabil pe majoritatea terenurilor", + }, + advanced: { + label: "Avansat", + description: "Skater experimentat, Spoturi periculoase", + }, + all: { + label: "Toate nivelurile", + description: "Potrivit pentru toată lumea", + }, + }, + }, + }, +}; export default roBatch6; diff --git a/src/i18n/ro/batch7.ts b/src/i18n/ro/batch7.ts index ae5f540..d597587 100644 --- a/src/i18n/ro/batch7.ts +++ b/src/i18n/ro/batch7.ts @@ -1,4 +1,909 @@ -/** ro — batch 7. Filled by the translation pass; empty until then. */ -const roBatch7 = {}; +/** ro — batch 7. Romanian translation of the assigned namespaces. */ +const roBatch7 = { + events: { + title: "Evenimente de skate", + createEvent: "Creează eveniment", + editEvent: "Editează evenimentul", + eventDetails: "Detalii eveniment", + eventName: "Nume eveniment", + eventType: "Tip eveniment", + date: "Dată", + time: "Oră", + startDate: "Data de început", + endDate: "Data de sfârșit", + venue: "Loc", + organizer: "Organizator", + attendees: "Participanți", + going: "Particip", + interested: "Interesat", + rsvp: "RSVP", + ticketPrice: "Preț bilet", + freeEntry: "Intrare gratuită", + register: "Înscrie-te", + moreInfo: "Mai multe informații", + upcomingEvents: "Viitoare", + pastEvents: "Trecute", + noEvents: "Niciun eveniment găsit", + findEvents: "Găsește concursuri, demonstrații, sesiuni și altele", + searchPlaceholder: "Caută evenimente...", + loginToCreate: "Autentifică-te pentru a crea evenimente", + noEventsMatch: "Niciun eveniment viitor nu corespunde filtrelor tale.", + noUpcoming: "Niciun eveniment viitor găsit.", + noPast: "Niciun eveniment trecut găsit.", + types: { + contest: "Concurs", + session: "Sesiune", + meetup: "Întâlnire", + premiere: "Premieră video", + workshop: "Atelier", + demo: "Demonstrație", + jam: "Jam", + }, + }, + wallet: { + title: "Portofel", + balance: "Sold", + send: "Trimite", + receive: "Primește", + transactions: "Tranzacții", + history: "Istoric", + noTransactions: "Nicio tranzacție încă", + sendSats: "Trimite sats", + receiveSats: "Primește sats", + amount: "Sumă", + recipient: "Destinatar", + lightning: "Lightning", + onChain: "On-chain", + invoice: "Factură", + address: "Adresă", + scanQR: "Scanează QR", + paste: "Lipește", + payInvoice: "Plătește factura", + createInvoice: "Creează factură", + copied: "Copiat în clipboard!", + insufficientFunds: "Fonduri insuficiente", + paymentSent: "Plată trimisă!", + paymentReceived: "Plată primită!", + cashu: { + title: "Portofel Cashu", + tokens: "Jetoane", + mint: "Mint", + mints: "Mint-uri", + manageMints: "Gestionează mint-urile", + addMint: "Adaugă mint", + removeMint: "Elimină mint", + defaultMint: "Mint implicit", + backup: "Backup", + restore: "Restaurează", + recoveryPhrase: "Frază de recuperare", + viewRecoveryPhrase: "Vezi fraza de recuperare", + seedWarning: "Aceasta este ca nsec-ul tău Nostr - ține-o secretă și fă-i backup!", + }, + }, + spots: { + addSpot: "Adaugă Spot", + editSpot: "Editează Spotul", + spotDetails: "Detalii Spot", + spotName: "Nume Spot", + spotType: "Tip Spot", + description: "Descriere", + location: "Locație", + address: "Adresă", + photos: "Fotografii", + addPhotos: "Adaugă fotografii", + obstacles: "Obstacole", + features: "Caracteristici", + bustLevel: "Nivel de risc", + bestTime: "Cea mai bună oră", + tips: "Sfaturi", + reviews: "Recenzii", + addReview: "Adaugă recenzie", + reportSpot: "Raportează Spotul", + directions: "Indicații", + shareSpot: "Distribuie Spotul", + createdBy: "Creat de", + lastUpdated: "Ultima actualizare", + types: { + park: "Skatepark", + street: "Spot de stradă", + diy: "Spot DIY", + plaza: "Plaza", + indoor: "Interior", + bowl: "Bowl", + vert: "Vert", + miniramp: "Mini ramp", + }, + bustLevels: { + chill: "Relaxat", + moderate: "Moderat", + sketchy: "Riscant", + heavy: "Intens", + }, + }, + settings: { + title: "Setări", + profile: "Profil", + editProfile: "Editează profilul", + account: "Cont", + security: "Securitate", + relays: "Relay-uri", + appearance: "Aspect", + language: "Limbă", + notifications: "Notificări", + privacy: "Confidențialitate", + about: "Despre", + help: "Ajutor", + feedback: "Feedback", + version: "Versiune", + displayName: "Nume afișat", + username: "Nume de utilizator", + bio: "Bio", + website: "Site web", + lightningAddress: "Adresă Lightning", + profilePicture: "Poză de profil", + banner: "Banner", + saveProfile: "Salvează profilul", + backupKeys: "Backup chei", + exportKeys: "Exportă cheile", + secretKey: "Cheie secretă", + publicKey: "Cheie publică", + showSecretKey: "Arată cheia secretă", + hideSecretKey: "Ascunde cheia secretă", + copyKey: "Copiază cheia", + keysBackedUp: "Ai confirmat că cheile tale sunt salvate în siguranță.", + keysNotBackedUp: "Asigură-te că faci backup la fraza de recuperare sau cheia secretă!", + selectLanguage: "Selectează limba", + english: "Engleză", + spanish: "Spaniolă", + }, + createSpot: { + title: "Adaugă un Spot de skate", + subtitle: "Împărtășește un spot de skateboarding cu comunitatea", + backToMap: "Înapoi la hartă", + namePlaceholder: "de ex., Hollywood High School", + descriptionPlaceholder: "Descrie spotul, obstacolele, cele mai bune ore de skate, informații de securitate etc.", + addressPlaceholder: "de ex., 1521 N Highland Ave, Los Angeles, CA", + selectType: "Selectează tipul de spot", + selectBustLevel: "Selectează nivelul de risc", + uploadPhotos: "Încarcă", + dragDrop: "Trage și plasează sau apasă pentru a încărca", + maxPhotos: "Maxim 5 fotografii", + publishing: "Se publică...", + success: "Spot publicat cu succes!", + error: "Publicarea spotului a eșuat", + locationRequired: "Te rugăm să selectezi o locație pe hartă", + useCurrentLocation: "Folosește locația mea actuală", + pickOnMap: "Alege locația pe hartă", + loginToAdd: "Trebuie să te autentifici pentru a adăuga un spot de skate.", + locationLabel: "Locație", + tapToPlace: "Apasă pe hartă pentru a plasa pinul sau trage-l pentru a-l ajusta.", + manualCoords: "Introdu coordonatele manual", + moreDetails: "Mai multe detalii (opțional)", + photoHint: "este necesară o fotografie pentru a publica", + nameRequired: "Te rugăm să introduci un nume pentru acest spot.", + descriptionRequired: "Te rugăm să descrii acest spot.", + addressRequired: "Te rugăm să adaugi o adresă sau un nume de zonă.", + photoRequired: "Te rugăm să adaugi cel puțin o fotografie.", + draftTitle: "Ai o ciornă nesalvată", + draftBody: "Continuă de unde ai rămas sau elimină-o.", + draftResume: "Continuă", + draftDiscard: "Elimină ciorna", + requiredFields: "Spune-ne despre acest spot. Toate câmpurile marcate cu * sunt obligatorii.", + coordinates: "Coordonate", + latitudePlaceholder: "Latitudine (de ex., 34.1012)", + longitudePlaceholder: "Longitudine (de ex., -118.3389)", + gettingLocation: "Se obține locația...", + accessType: "Tip de acces", + publicTitle: "Public - Deschis tuturor", + publicDesc: "Skatepark-uri, piețe publice, spoturi de stradă", + privateTitle: "Proprietate privată - Este nevoie de permisiune", + privateDesc: "Rampe în curtea din spate, teren privat, spoturi cu poartă", + localsTitle: "Întreabă mai întâi localnicii", + localsDesc: "Respectă spotul, nu-l expune", + contactInfo: "Informații de contact", + contactPlaceholder: "de ex., Număr de telefon, Instagram, email...", + contactHintPrivate: "Cum ar trebui oamenii să te contacteze pentru permisiune?", + contactHintLocals: "Cum ar trebui oamenii să te contacteze pentru a întreba despre spot?", + }, + marketplace: { + title: "Marketplace", + subtitle: "Cumpără, vinde și schimbă Gear de skate", + addListing: "Adaugă anunț", + condition: "Stare", + conditions: { + new: "Nou", + likeNew: "Ca nou", + good: "Bună", + fair: "Acceptabilă", + poor: "Slabă", + }, + categories: { + all: "Toate", + decks: "Plăci", + trucks: "Trucks", + wheels: "Roți", + bearings: "Rulmenți", + shoes: "Pantofi", + clothing: "Îmbrăcăminte", + protection: "Protecție", + other: "Altele", + }, + priceRange: "Interval de preț", + location: "Locație", + seller: "Vânzător", + contact: "Contactează vânzătorul", + makeOffer: "Fă o ofertă", + sold: "Vândut", + available: "Disponibil", + gear: "Gear", + sellGear: "Vinde Gear", + wantToBuy: "Vreau să cumpăr", + }, + auth: { + login: "Autentificare", + logout: "Deconectare", + signUp: "Înregistrare", + signUpTitle: "Ești nou pe Nostr?", + signUpDesc: "Creează un cont nou pentru a începe. Este gratuit și deschis.", + orLogIn: "Sau autentifică-te", + loginWithExtension: "Autentificare cu extensie", + loginWithAmber: "Autentificare cu Amber (Android)", + loginWithKey: "Cheie secretă (nsec) sau frază de recuperare", + loginWithBunker: "Autentificare cu Nostr Connect", + bunkerUri: "Șir de conexiune Bunker", + openAmber: "Deschide Amber", + connectToBunker: "Conectează-te la Bunker", + noExtension: "Nicio extensie detectată.", + extensionHelp: "Încearcă să folosești butonul Înregistrare de mai sus pentru a crea un cont nou sau folosește filele Amber, Cheie sau Bunker dacă ai deja acreditări.", + amberDesc: "Amber este o aplicație sigură de semnare Nostr pentru dispozitive Android. Apasă butonul de mai jos pentru a deschide Amber și a autoriza accesul.", + bunkerDesc: "Accesează-ți contul de pe orice dispozitiv folosind un semnatar la distanță (bunker). Cheile tale rămân în siguranță pe server, niciodată expuse site-urilor web.", + keyPlaceholder: "nsec1... sau fraza ta de recuperare din 12 cuvinte", + keyHint: "Poți lipi fie cheia ta nsec, fie fraza de recuperare din 12 cuvinte", + uploadKeyFile: "Încarcă fișierul cu cheia", + loggingIn: "Se autentifică...", + connecting: "Se conectează...", + verifying: "Se verifică...", + }, + createEvent: { + title: "Creează un eveniment", + subtitle: "Organizează un eveniment de skateboarding pentru comunitate", + backToEvents: "Înapoi la evenimente", + namePlaceholder: "de ex., Sesiune de skate de vară", + descriptionPlaceholder: "Descrie evenimentul, la ce să te aștepți, reguli, premii etc.", + selectType: "Selectează tipul de eveniment", + venuePlaceholder: "de ex., Venice Beach Skatepark, CA", + selectDate: "Selectează data", + selectTime: "Selectează ora", + ticketPricePlaceholder: "Lasă gol pentru evenimente gratuite", + publishing: "Se publică...", + success: "Eveniment publicat cu succes!", + error: "Publicarea evenimentului a eșuat", + loginToCreate: "Trebuie să te autentifici pentru a crea un eveniment.", + requiredFields: "Spune-ne despre acest eveniment. Toate câmpurile marcate cu * sunt obligatorii.", + startDateTime: "Data și ora de început", + endDateTime: "Data și ora de sfârșit (opțional)", + coordinatesOptional: "Coordonate (opțional)", + coverImage: "Imagine de copertă", + uploadCover: "Încarcă imaginea de copertă", + nip05Recommended: "Verificare NIP-05 recomandată", + nip05Desc: "Adaugă un identificator NIP-05 la profilul tău pentru a-ți verifica identitatea și a construi încredere cu participanții.", + addNip05: "Adaugă NIP-05 în Setări", + }, + labPage: { + title: "The Lab", + subtitle: "Învață trick-uri. Surprinde momente. Conectează-te cu alți skateri", + coachesTab: "Coaching", + filmersTab: "Filmare", + offerCoaching: "OFERĂ COACHING", + offerFilming: "OFERĂ FILMARE", + loginToOffer: "Autentifică-te pentru a oferi servicii", + whatToLearn: "CE VREI SĂ ÎNVEȚI?", + whatContent: "CE TIP DE CONȚINUT?", + selectSkillsDesc: "Selectează abilități și te vom conecta cu antrenori", + selectFilmingDesc: "Selectează serviciile de filmare pe care le cauți", + searchPlaceholder: "Caută după nume, locație sau abilități...", + noServicesYet: "ÎNCĂ NU EXISTĂ SERVICII", + beFirstToOffer: "Fii primul care oferă servicii de coaching sau filmare comunității!", + skills: "Abilități", + rate: "Tarif", + perHour: "/oră", + contact: "Contact", + viewProfile: "Vezi profilul", + noProfilesYet: "Încă nu există profiluri", + beFirstCoach: "Fii primul care se înregistrează ca antrenor!", + beFirstFilmer: "Fii primul care se înregistrează ca filmer!", + yearsExperience: "ani de experiență", + }, + 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: "Avansează-ți nivelul de skate", + coaches: "Antrenori", + filmers: "Filmers", + findCoach: "Găsește un antrenor", + becomeCoach: "Devino antrenor", + findFilmer: "Găsește un filmer", + becomeFilmer: "Devino filmer", + hourlyRate: "Tarif orar", + experience: "Experiență", + specialties: "Specializări", + availability: "Disponibilitate", + bookSession: "Rezervă o sesiune", + contactCoach: "Contactează antrenorul", + noCoaches: "Niciun antrenor găsit în zona ta", + noFilmers: "Niciun filmer găsit în zona ta", + }, + shops: { + title: "Skate Shops", + addShop: "Adaugă Shop", + editShop: "Editează Shop-ul", + shopDetails: "Detalii Shop", + shopName: "Nume Shop", + hours: "Program", + phone: "Telefon", + website: "Site web", + services: "Servicii", + brands: "Branduri", + supportLocal: "Susține local", + nip05: "NIP-05 pentru Shop", + nip05Hint: "Un handle opțional pe care îl controlezi pentru acest Shop (de ex. shop@yourdomain.com), verificat față de cheia ta. Adaugă până la 5.", + }, + becomeFilmer: { + title: "Devino filmer", + subtitle: "Surprinde cele mai bune clipuri pentru comunitate", + bioPlaceholder: "Spune-ne despre experiența ta de filmare și echipamentul tău...", + specialtiesPlaceholder: "de ex., fisheye, obiectiv lung, dronă, montaj", + selectSpecialties: "Selectează specializările tale", + hourlyRate: "Tarif orar (sats)", + ratePlaceholder: "de ex., 5000", + locationPlaceholder: "Orașul sau zona ta", + portfolioUrl: "URL portofoliu", + portfolioPlaceholder: "Link către munca ta (YouTube, Instagram etc.)", + publishing: "Se publică profilul...", + success: "Profil de filmer creat!", + error: "Crearea profilului a eșuat", + }, + food: { + title: "Food Spots", + subtitle: "Alimentează-te înainte sau după sesiune", + addFood: "Adaugă Food Spot", + categories: { + all: "Toate", + burgers: "Burgeri", + pizza: "Pizza", + tacos: "Tacos", + coffee: "Cafea", + drinks: "Băuturi", + snacks: "Gustări", + }, + skaterFriendly: "Prietenos cu skaterii", + nearSpots: "Aproape de spoturi de skate", + }, + profile: { + posts: "Postări", + spots: "Spoturi", + events: "Evenimente", + following: "Urmărești", + followers: "Urmăritori", + editProfile: "Editează profilul", + follow: "Urmărește", + unfollow: "Nu mai urmări", + noPostsYet: "Încă nicio postare", + noBio: "Încă nicio bio", + zapProfile: "Dă un zap acestui skater", + }, + becomeCoach: { + title: "Devino antrenor", + subtitle: "Împărtășește-ți abilitățile și ajută alți skateri să progreseze", + bioPlaceholder: "Spune-ne despre trecutul tău de skate și stilul tău de predare...", + skillsPlaceholder: "de ex., kickflip, heelflip, grind-uri, bowl-uri", + selectSkills: "Selectează abilitățile pe care le poți preda", + hourlyRate: "Tarif orar (sats)", + ratePlaceholder: "de ex., 5000", + locationPlaceholder: "Orașul sau zona ta", + publishing: "Se publică profilul...", + success: "Profil de antrenor creat!", + error: "Crearea profilului a eșuat", + }, + weather: { + title: "Vremea", + current: "Condiții actuale", + forecast: "Prognoză", + humidity: "Umiditate", + wind: "Vânt", + feelsLike: "Se simte ca", + goodForSkating: "Bun pentru skate!", + notIdeal: "Condiții nu tocmai ideale", + allWeather: "Toate condițiile", + goodWeather: "Vreme bună", + perfectWeather: "Vreme perfectă", + }, + errors: { + somethingWentWrong: "Ceva a mers greșit", + tryAgainLater: "Te rugăm să încerci din nou mai târziu", + notFound: "Negăsit", + pageNotFound: "Pagina nu a fost găsită", + unauthorized: "Neautorizat", + loginRequired: "Te rugăm să te autentifici pentru a continua", + networkError: "Eroare de rețea", + checkConnection: "Te rugăm să verifici conexiunea la internet", + invalidInput: "Intrare invalidă", + requiredField: "Acest câmp este obligatoriu", + }, + time: { + today: "Astăzi", + yesterday: "Ieri", + tomorrow: "Mâine", + thisWeek: "Săptămâna aceasta", + nextWeek: "Săptămâna viitoare", + thisMonth: "Luna aceasta", + justNow: "Chiar acum", + minutesAgo: "acum {{count}} minute", + hoursAgo: "acum {{count}} ore", + daysAgo: "acum {{count}} zile", + }, + spotDetail: { + postedBy: "Postat de", + getDirections: "Obține indicații", + reviews: "Recenzii", + noReviews: "Încă nicio recenzie", + beFirstReview: "Fii primul care recenzează acest spot!", + writeReview: "Scrie o recenzie", + submitReview: "Trimite recenzia", + rating: "Evaluare", + reviewPlaceholder: "Împărtășește-ți experiența la acest spot...", + relatedSpots: "Spoturi din apropiere", + }, + eventDetail: { + organizedBy: "Organizat de", + eventInfo: "Informații eveniment", + location: "Locație", + dateTime: "Data și ora", + price: "Preț", + attendeeCount: "{{count}} participă", + interested: "Interesat", + going: "Particip", + notGoing: "Nu particip", + share: "Distribuie evenimentul", + }, + venueAccess: { + title: "Permise de acces", + desc: "Emite un permis semnat unui rider ca să poată dovedi accesul la intrare — își arată cardul și oricine poate scana codul QR pentru a-l verifica.", + active: "{{count}} active", + revoked: "{{count}} revocate", + issue: "Emite un permis", + verifyHint: "Verificat prin scanare — nu e nevoie de aplicație sau cont pentru a verifica.", + publicTitle: "Permise de acces", + publicDesc: "Această locație emite permise de acces. Scanează cardul unui rider la intrare pentru a-l verifica.", + badge: "Permise", + sellerHint: "Locația acestui vânzător emite permise de acces", + }, + zaps: { + zapButton: "Zap", + sendZap: "Trimite Zap", + zapAmount: "Sumă Zap", + customAmount: "Sumă personalizată", + addMessage: "Adaugă un mesaj (opțional)", + sending: "Se trimite...", + sent: "Zap trimis!", + failed: "Zapul a eșuat", + received: "Ai primit un zap!", + }, + rewards: { + title: "Recompense", + yourPoints: "Punctele tale", + earnPoints: "Câștigă puncte", + redeemPoints: "Valorifică puncte", + leaderboard: "Clasament", + achievements: "Realizări", + dailyTasks: "Sarcini zilnice", + weeklyTasks: "Sarcini săptămânale", + }, + errorsUi: { + slammedTitle: "Slam", + slammedBody: "Ceva a împiedicat acest ecran. Contul și datele tale sunt în siguranță — hai să te punem din nou pe roate.", + tryAgain: "Încearcă din nou", + reloadApp: "Reîncarcă aplicația", + pageSlammedTitle: "Această pagină a dat slam", + pageSlammedBody: "Ceva de pe acest ecran s-a împiedicat. Contul și datele tale sunt în siguranță. De obicei, o reîncărcare rapidă rezolvă.", + reload: "Reîncarcă", + goBack: "Înapoi", + }, + backup: { + title: "Salvează-ți autentificarea", + subtitle: "Durează 10 secunde — fă-o o dată", + message: "Codul tău de recuperare este singura cale înapoi în cont. Salvează-l și te poți autentifica de pe orice dispozitiv.", + warning: "Dacă îl pierzi, nu există resetare — fără email, fără recuperare de parolă.", + backupNow: "Salvează-l acum", + confirmed: "L-am salvat", + remindLater: "Mai târziu", + }, + bootUi: { + ariaLoading: "Se încarcă SkateSpots", + ariaReady: "SkateSpots este gata", + ready: "Gata", + statusWaking: "Se trezește rețeaua", + statusTuning: "Se acordează relay-urile", + statusPulling: "Se aduc spoturi", + statusDropping: "Se intră în rampă", + }, + footer: { + vibedWith: "Vibe cu", + poweredBy: "Alimentat de", + openSource: "Open Source", + contribute: "Contribuie", + decentralized: "Descentralizat", + communityOwned: "Deținut de comunitate", + }, + role: { + owner: "Proprietar", + admin: "Admin", + organiser: "Organizator", + verifiedOwner: "Proprietar verificat", + }, + nfc: { + write: "Scrie pe tag NFC", + written: "Tag scris", + writtenDesc: "Atinge tag-ul de un telefon pentru a deschide pagina de verificare.", + failed: "Tag-ul nu a putut fi scris", + }, + collectionUi: { + namePlaceholder: "Excursie la Barcelona 2024", + descriptionPlaceholder: "Spoturile mele preferate din excursia la Barcelona...", + }, + toastsUi: { + followingSuccess: "Urmărit cu succes", + followingSuccessDesc: "Acest utilizator este acum în rețeaua ta", + followFailed: "Urmărirea a eșuat", + unfollowSuccess: "Nu mai urmărești", + unfollowSuccessDesc: "Eliminat din rețeaua ta", + unfollowFailed: "Oprirea urmăririi a eșuat", + reportThanks: "Mulțumim — trimis spre verificare", + reportFailed: "Raportarea nu a putut fi trimisă", + savedOffline: "Salvat offline", + savedOfflineDesc: "Îl vom publica automat când revii online.", + cacheCleaned: "Cache curățat", + cacheCleanedDesc: "Am eliminat {{count}} spoturi vechi din cache", + cacheCleared: "Cache golit", + cacheClearedDesc: "Toate spoturile din cache au fost eliminate", + backOnline: "Din nou online", + backOnlineDesc: "Am trimis {{count}} acțiuni salvate.", + postQueued: "Postare în așteptare", + postQueuedDesc: "Postarea ta va fi publicată când revii online", + invalidIdentifier: "Identificator invalid. Folosește npub1..., user@domain.com sau cheie publică hex", + notASpotThanks: "Mulțumim — trimis spre verificare", + notASpotThanksDesc: "Fără resentimente: acest lucru marchează pinul ca off-topic, ca oamenii să decidă singuri.", + notASpotFailed: "Raportarea nu a putut fi trimisă", + pleaseTryAgain: "Te rugăm să încerci din nou.", + relayUnreachable: "Nu s-a putut ajunge la niciun relay — verifică-ți conexiunea și încearcă din nou.", + loginToReport: "Autentifică-te pentru a raporta un spot.", + zapLoginRequired: "Autentificare necesară", + zapLoginRequiredDesc: "Trebuie să fii autentificat pentru a trimite un zap.", + zapEventNotFound: "Eveniment negăsit", + zapEventNotFoundDesc: "Evenimentul de zapat nu a putut fi găsit.", + zapAuthorNotFound: "Autor negăsit", + zapAuthorNotFoundDesc: "Autorul acestui element nu a putut fi găsit.", + zapSuccess: "Zap reușit!", + zapSuccessNwcDesc: "Ai trimis {{amount}} sats prin NWC autorului.", + zapSuccessDesc: "Ai trimis {{amount}} sats autorului.", + zapStatusUnknown: "Stare de plată necunoscută", + zapStatusUnknownDesc: "Portofelul tău poate încă decontează acest zap. Verifică-ți portofelul înainte de a reîncerca — nu plăti de două ori.", + zapNwcFailed: "Plata NWC a eșuat", + zapWeblnFailed: "Plata WebLN a eșuat", + zapFallingBack: "{{error}}. Se trece la alte metode de plată...", + zapFailed: "Zapul a eșuat", + zapUnknownNwcError: "Eroare NWC necunoscută", + zapUnknownWeblnError: "Eroare WebLN necunoscută", + nwcInvalidUri: "URI NWC invalid", + nwcInvalidUriDesc: "Te rugăm să verifici șirul de conexiune și să încerci din nou.", + nwcExists: "Conexiunea există deja", + nwcExistsDesc: "Acest portofel este deja conectat.", + nwcConnected: "Portofel conectat", + nwcConnectedDesc: "Conectat cu succes la {{alias}}.", + nwcFailed: "Conexiunea a eșuat", + nwcFailedDesc: "Portofelul nu a putut fi conectat: {{error}}", + nwcUnknownError: "A apărut o eroare necunoscută", + nwcDisconnected: "Portofel deconectat", + nwcDisconnectedDesc: "Conexiunea portofelului a fost eliminată.", + deleteApproveAmber: "Aprobă în Amber", + deleteApproveAmberDesc: "Amber se va deschide — apasă Aprobă pentru a confirma ștergerea.", + deleteCancelled: "Anulat", + deleteCancelledDesc: "Ai respins cererea în Amber.", + deleteCouldntSign: "Semnarea a eșuat", + deletePublishing: "Pasul 2/2: Se publică…", + deletePublishingDesc: "Se trimite ștergerea către relay-uri.", + deleteStuck: "Blocat la PUBLICARE", + deleteStuckDesc: "Pasul de relay a eșuat: {{error}}. A fost semnat OK; relay-ul nu a confirmat.", + stashMerged: "Modificări fuzionate de pe alt dispozitiv", + stashMergedDesc: "Stash-ul tău a fost editat în altă parte — ambele seturi de modificări au fost păstrate.", + statusUpdated: "Stare actualizată!", + statusUpdatedDesc: "Starea ta de skate este acum vizibilă pentru alții.", + statusFailed: "Setarea stării a eșuat", + statusCleared: "Stare ștearsă", + statusClearedDesc: "Starea ta a fost eliminată.", + statusClearFailed: "Ștergerea stării a eșuat", + nutzapEnabled: "Primirea de nutzap activată", + nutzapEnabledDesc: "Acum poți primi zap-uri ecash!", + nutzapSetupFailed: "Configurarea a eșuat", + nutzapUnavailable: "Trimiterea de nutzap indisponibilă", + tokenReceived: "Jeton primit", + tokenReceivedDesc: "Jetonul Cashu a fost valorificat cu succes!", + receiveFailed: "Primirea a eșuat", + invalidAmount: "Sumă invalidă", + invalidAmountDesc: "Te rugăm să introduci o sumă validă", + tokenCreated: "Jeton creat", + sendFailed: "Trimiterea a eșuat", + mintAdded: "Mint adăugat", + mintAddedDesc: "Mint adăugat și de încredere cu succes", + mintAddFailed: "Adăugarea mint-ului a eșuat", + mintRemoved: "Mint eliminat", + mintRemoveFailed: "Eliminarea mint-ului a eșuat", + paymentReceived: "Plată primită", + paymentReceivedDesc: "Am primit cu succes {{amount}} sats!", + paymentSent: "Plată trimisă", + paymentSentDesc: "Plata Lightning finalizată cu succes", + loginRequired: "Autentificare necesară", + loginToFollowFounder: "Te rugăm să te autentifici pentru a urmări fondatorul", + alreadyFollowing: "Deja urmărești", + alreadyFollowingDesc: "Îl urmărești deja pe {{name}}!", + couldNotComplete: "Nu s-a putut finaliza", + tryAgainLower: "Încearcă din nou.", + couldNotLoadProfile: "Profilul nu a putut fi încărcat", + couldNotLoadProfileDesc: "Verifică-ți conexiunea la internet și încearcă să reîncarci.", + undone: "Anulat", + undoneDesc: "Înapoi la neutru — nici ascuns, nici susținut.", + confirmed: "Confirmat", + confirmedDesc: "Susținut — iese din această coadă.", + hiddenToast: "Ascuns", + couldNotUndo: "Anularea a eșuat", + couldNotConfirm: "Confirmarea a eșuat", + deleteFailed: "Ștergerea a eșuat", + somethingWentWrong: "Ceva a mers greșit", + }, + seoUi: { + becomeBuilderTitle: "Devino constructor - SkateSpots", + becomeBuilderDesc: "Listează-ți serviciile de construcție de rampe, park-uri și DIY — ce construiești, materiale și amploare.", + tradesTitle: "Tranzacțiile mele — SkateSpots", + tradesDesc: "Gestionează-ți tranzacțiile din marketplace, confirmările și reputația.", + eventsTitle: "Evenimente și tururi de skate - SkateSpots", + eventsDesc: "Descoperă evenimente de skateboarding, competiții, tururi și sesiuni lângă tine.", + editShopDesc: "Editează-ți Shop-ul de skate.", + createTourDesc: "Organizează tururi de skate - tururi locale de locuri ascunse, road trip-uri naționale, aventuri internaționale sau competiții de distrugere în stil KOTR.", + deckDesignerTitle: "Designer de plăci — SkateSpots DIY", + deckDesignerDesc: "Desenează conturul unui skateboard sau longboard, apoi exportă un șablon imprimabil 1:1, SVG sau DXF — concav, kick-uri, ampatament și găuri pentru truck-uri incluse.", + createEventTitle: "Creează un eveniment de skate - SkateSpots", + createEventDesc: "Creează un eveniment nou de skateboarding pentru comunitate.", + editTourDesc: "Editează-ți turul de skate — actualizează opririle, datele și detaliile.", + walletTitle: "Portofel - SkateSpots", + walletDesc: "Conectează-ți portofelul Lightning pentru a trimite zap-uri skaterilor și creatorilor de spoturi.", + becomePhotographerTitle: "Devino fotograf - SkateSpots", + becomePhotographerDesc: "Creează-ți profilul de fotografie de skate — camere, obiective, iluminare și servicii.", + newsletterTitle: "Newsletter - SkateSpots", + newsletterDesc: "Drops săptămânale din comunitatea SkateSpots. Actualizări ale aplicației, spoturi noi, evenimente și oamenii care țin skateboarding-ul viu.", + homeTitle: "SkateSpots - Descoperă locații de skateboarding din întreaga lume", + zapLeaderboardTitle: "Clasamente Zap - SkateSpots", + zapLeaderboardDesc: "Cele mai zap-uite spoturi de skate și membrii comunității care le susțin.", + adminReviewTitle: "Coadă de verificare — SkateSpots", + gearSwapTitle: "Schimb de Gear - SkateSpots", + gearSwapDesc: "Cumpără și vinde Gear de skate second-hand cu alți skateri. Plăci, truck-uri, roți, pantofi și multe altele.", + donateTitle: "Donează — SkateSpots", + donateDesc: "Susține SkateSpots — Lightning, on-chain privat (plăți silențioase) sau finanțează build-ul pe Angor.", + verifyCardTitle: "Verifică — SkateSpots", + verifyCardDesc: "Verifică un card SkateSpots sau un permis de acces.", + mapTitle: "Harta spoturilor de skate - SkateSpots", + mapDesc: "Explorează spoturi de skateboarding din întreaga lume pe harta noastră interactivă.", + diyTitle: "DIY — Fă-ți propriul | SkateSpots", + diyDesc: "Ghiduri, instrumente deschise și planuri pentru a-ți face propriile skateboard-uri, rampe și spoturi de beton — și oamenii și locurile cu care să le faci.", + appShopTitle: "App Shop — SkateSpots", + becomeSkaterTitle: "Alătură-te directorului de skateri - SkateSpots", + becomeSkaterDesc: "Creează-ți profilul de skater pentru ca comunitatea să te poată găsi.", + marketplaceTitle: "Marketplace - SkateSpots", + marketplaceDesc: "Cumpără și vinde Gear de skateboarding pe Plebeian Market descentralizat.", + becomeEditorTitle: "Devino editor video - SkateSpots", + becomeEditorDesc: "Creează-ți profilul de editor video de skateboarding pe SkateSpots.", + amberCallbackTitle: "Autentificare cu Amber - SkateSpots", + amberCallbackDesc: "Se finalizează autentificarea ta Amber (NIP-55).", + supportersTitle: "Susținători - SkateSpots", + supportersDesc: "Comunitatea care ține SkateSpots viu — susținători, colaboratori, parteneri și prieteni.", + becomeCoachTitle: "Devino antrenor - SkateSpots", + becomeCoachDesc: "Creează-ți profilul de antrenor de skateboarding.", + riderCardTitle: "Card de skater — SkateSpots", + riderCardDesc: "Creează-ți permisul de skater SkateSpots imprimabil sau cardul de acces în park.", + editEventDesc: "Editează-ți evenimentul de skateboarding.", + createShopTitle: "Adaugă un Skate Shop - SkateSpots", + createShopDesc: "Adaugă-ți Skate Shop-ul în comunitate.", + deckCostTitle: "Calculator cost placă — SkateSpots DIY", + deckCostDesc: "Calculează cât costă să faci o placă — manoperă, echipament, materiale, timp de proces, ambalare și marjă — și un preț de vânzare corect.", + pyramidTitle: "Clasamente Pyramid - SkateSpots", + pyramidDesc: "Cei mai buni contribuitori și lideri ai comunității.", + foodTitle: "Mâncare lângă spoturi - SkateSpots", + foodDesc: "Găsește restaurante, cafenele și opțiuni de mâncare lângă spoturile de skateboarding.", + createListingTitle: "Listează Gear - SkateSpots", + createListingDesc: "Listează Gear de skateboarding de vânzare sau găsește Gear pe care vrei să-l cumperi.", + becomeFilmerTitle: "Devino filmer - SkateSpots", + becomeFilmerDesc: "Creează-ți profilul de filmare de skateboarding.", + skatersTitle: "Skateri - SkateSpots", + skatersDesc: "Descoperă skateri din comunitatea SkateSpots. Răsfoiește după stil, stance, nivel și locație.", + communityStatsTitle: "Statistici comunitate — SkateSpots", + communityStatsDesc: "Metrici live ale comunității SkateSpots — spoturi, evenimente, antrenori, filmers, editori, tururi și creștere în timp. Preluate direct din Nostr.", + labTitle: "The Lab - SkateSpots", + labDesc: "Găsește antrenori, filmers, fotografi și editori video de skateboarding.", + stashTitle: "Stash-ul meu - SkateSpots", + stashDesc: "Gestionează-ți inventarul privat de Gear. Urmărește ce deții, ce vrei să vinzi sau să schimbi.", + bountyLeaderboardTitle: "Cartografiază și câștigă - SkateSpots", + bountyLeaderboardDesc: "Cartografiază spoturi de skate și Shops, câștigă zap-uri de la comunitate. Vezi cei mai buni contribuitori.", + spotCollectionsTitle: "Colecțiile mele de spoturi - SkateSpots", + spotCollectionsDesc: "Organizează-ți spoturile de skate preferate în colecții personalizate", + mintsTitle: "Mint-uri Cashu — SkateSpots", + mintsDesc: "Răsfoiește mint-uri Cashu, verifică-le starea de sănătate și adaugă unul în portofel.", + }, + miscUi: { + openingCamera: "Se deschide camera…", + usePhoneCamera: "Folosește camera telefonului, apoi revino aici", + startingCamera: "Se pornește camera...", + cameraAccessRequired: "Acces la cameră necesar", + cameraAccessHint: "Permite accesul la cameră din setările browserului sau folosește selectorul de fișiere de mai jos.", + cameraErrorTitle: "Eroare de cameră", + cameraErrorDesc: "Camera nu a putut fi deschisă. Te rugăm să verifici permisiunile aplicației în Setări.", + cameraDeniedTitle: "Acces la cameră refuzat", + cameraDeniedDesc: "Te rugăm să permiți accesul la cameră în setările browserului.", + uploadFromGallery: "Încarcă din galerie", + uploading: "Se încarcă...", + usePhoto: "Folosește fotografia", + earningPotential: "Potențial de câștig", + qualityExcellent: "Excelent!", + qualityGood: "Bun", + qualityBasic: "De bază", + qualityGettingStarted: "La început", + qualityLocationAdded: "Locație adăugată", + qualityOnePhoto: "Cel puțin 1 fotografie", + qualityThreePhotos: "3+ fotografii", + qualityMoreAngles: "Mai multe unghiuri = mai bine", + qualityDescription: "Descriere", + qualityDetailedDesc: "Descriere detaliată (100+ caractere)", + qualityContact: "Informații de contact", + qualityPhoneOrWebsite: "Telefon sau site web", + qualityHours: "Program de deschidere", + qualitySpotType: "Tip de spot selectat", + failedToLoadComments: "Încărcarea comentariilor a eșuat", + commentsTitle: "Comentarii", + noCommentsYet: "Încă niciun comentariu", + beFirstComment: "Fii primul care își împărtășește gândurile!", + removeMember: "Elimină membru", + whoIsThisFor: "Pentru cine este acest profil?", + individual: "Individual", + individualDesc: "O singură persoană", + collective: "Colectiv", + collectiveDesc: "Crew, studio sau companie", + membersLabel: "Membri", + dismissReport: "Respinge raportarea", + reportedBy: "raportat de", + completingLoginAmber: "Se finalizează autentificarea cu Amber...", + entityMembersHint: "Adaugă conturile Nostr ale crew-ului tău. Fiecare membru își confirmă propriul spot cu cheia sa — până atunci apar ca „în așteptare”.", + entityVerifiedHint: "Apartenența este verificată per membru — nimeni nu poate fi adăugat în crew-ul tău fără să confirme din propriul cont.", + entityInvalidPubkey: "Introdu un npub, nprofile sau cheie publică hex de 64 de caractere validă.", + entityAlreadyAdded: "Acest membru este deja adăugat.", + offline: "Offline", + connected: "Conectat", + offlineMode: "Mod offline", + allFeaturesAvailable: "Toate funcțiile disponibile", + browsingCachedSpots: "Se răsfoiesc spoturile din cache", + queuedActions: "{{count}} acțiuni în așteptare", + syncing: "Se sincronizează", + publishingWhenStable: "Se publică când conexiunea se stabilizează...", + willPublishOnline: "Va fi publicat când revii online", + availableOffline: "Disponibil offline:", + offlineBrowseSpots: "Răsfoiește spoturile vizualizate anterior", + offlineViewDetails: "Vezi detaliile spoturilor din cache", + offlineKeepActing: "Continuă să acționezi — postările, RSVP-urile, anunțurile și mesajele sunt puse în așteptare și se trimit când te reconectezi", + }, + sasquatchGuide: { + homeTitle: "Bine ai venit la SkateSpots! 🦧", + homeMessage: "Salut, sunt The Sasquatch. Păstrătorul plăcilor, potecilor și plimbărilor sălbatice. Bine ai venit în lumea skate nedomesticită pe Nostr — fără costume, fără reclame, doar skateri care își croiesc propriul drum. Aici îți deții trick-urile, datele și chiar câștigi Bitcoin pentru că îți lași amprenta. Conectează-te cu skateri din cartierul tău sau de pe tot globul. Fără alte reguli decât shredding-ul, fără alte urme decât ale tale.", + homeQ1: "Planifică-mi 3 zile în Barcelona", + homeQ2: "Găsește spoturi pentru începători", + homeQ3: "Vreo evenimente viitoare?", + homeQ4: "Statistici comunitate", + homeQ5: "Găsește antrenori lângă mine", + homeQ6: "Gear de vânzare?", + homeQ7: "Ce este Nostr?", + homeQ8: "Este gratuit?", + homeLearnMore: "Află mai multe", + onboardingTitle: "Primii pași 🚀", + onboardingMessage: "Lasă-mă să te ajut să înțelegi elementele de bază! Nostr este identitatea ta, Bitcoin Lightning te lasă să câștigi sats pentru contribuții, iar zap-urile sunt bacșișuri instant. Întreabă-mă orice despre început!", + onboardingQ1: "Cum mă autentific?", + onboardingQ2: "Ce este Nostr?", + onboardingQ3: "Cum funcționează Nostr?", + onboardingQ4: "Ce este Cashu?", + onboardingQ5: "Cum folosesc portofelul Cashu?", + onboardingQ6: "Ce sunt mint-urile?", + onboardingQ7: "Ce sunt zap-urile?", + onboardingQ8: "Ce este NWC?", + onboardingStart: "Începe explorarea", + onboardingLogin: "Autentifică-te pentru a începe", + labTitle: "Bine ai venit la The Lab! 🎓", + labMessage: "Aici se întâmplă magia! Găsește antrenori care te pot învăța orice, de la kickflip-uri la darkslide-uri, sau conectează-te cu filmers pentru a-ți surprinde cele mai bune sesiuni. Filtrează după abilități, verifică experiența și rezervă o sesiune. Ține minte — toată lumea a început de undeva!", + labQ1: "Găsește antrenori", + labQ2: "Găsește filmers", + labQ3: "Găsește fotografi", + labQ4: "Găsește editori video", + labQ5: "Găsește un constructor de rampe", + labQ6: "Ce este The Lab?", + labQ7: "Ce este un builder?", + labQ8: "Cum oferi coaching?", + labLogin: "Autentifică-te pentru a oferi servicii", + crewsTitle: "Crews 🤘", + crewsMessage: "Crew-urile sunt familia ta de skate ancorată pe hartă — oamenii cu care skatui, nu pe care îi angajezi. Fiecare crew are teren propriu pe hartă, spoturi de casă, membri și un manifest. Membrii confirmă din propriile chei, deci lista e legitimă. Începe-ți propriul crew sau găsește-ți oamenii!", + crewsQ1: "Ce sunt crew-urile?", + crewsQ2: "Cum începi un crew?", + crewsQ3: "Prin ce diferă un crew de The Lab?", + crewsQ4: "Cum confirmă membrii?", + crewsQ5: "Ce este Nostr?", + crewsQ6: "Cum funcționează zap-urile?", + crewsLogin: "Autentifică-te pentru a crea un crew", + }, + supportUi: { + keepMapFree: "Ține harta gratuită", + keepMapFreeDesc: "Fără reclame, fără urmărire, fără VC. Sats-urile tale plătesc găzduirea, nodul AI și relay-ul.", + thankYou: "Mulțumim! ⚡", + satsKeepMapFree: "Sats-urile tale țin harta gratuită.", + keptFreeNext: "Tocmai ai menținut SkateSpots gratuit pentru următorul skater.", + scanToPay: "Scanează pentru a plăti", + zapSkateSpots: "Dă un zap SkateSpots", + payQuietly: "Plătește discret", + pickAmount: "Alege o sumă", + enterAmount: "Introdu câți sats vrei să trimiți.", + couldNotStartPayment: "Plata nu a putut fi pornită.", + customAmountAria: "Sumă personalizată în sats", + commentPlaceholder: "Spune ceva (opțional — doar zap-uri publice)", + publicZapTitle: "Zap public cu comentariul tău", + loginToZapTitle: "Autentifică-te pentru a trimite un zap public", + anonymousTitle: "Anonim — fără autentificare, fără urmă", + copyLightningTitle: "Copiază adresa Lightning", + copiedSuffix: "{{label}} copiat", + invoiceLabel: "Factură", + addressLabel: "Adresă", + notAPurchase: "Sprijin, nu o achiziție — nu cumpără nimic și nu există rambursări. Merchandise și Sasquatch Pro sunt separate. Locația și identitatea ta nu sunt implicate niciodată într-o plată discretă.", + }, + statusUi: { + quickStatus: "Stare rapidă", + skating: "Skatuez", + skatingDesc: "Skatează chiar acum", + filming: "Filmez", + filmingDesc: "Filmează trick-uri", + lookingForSesh: "Caut sesiune", + lookingForSeshDesc: "Vrea să skatuiască cu alții", + coaching: "Coaching", + coachingDesc: "Predă/antrenează", + chilling: "Chill", + chillingDesc: "Stă la spot", + onMyWay: "Pe drum", + onMyWayDesc: "Se îndreaptă spre un spot", + takingABreak: "Fac o pauză", + takingABreakDesc: "Se odihnește/se hidratează", + doneForToday: "Gata pe astăzi", + doneForTodayDesc: "A terminat de skatat", + }, +}; export default roBatch7; +export { roBatch7 }; diff --git a/src/i18n/ro/batch8.ts b/src/i18n/ro/batch8.ts index d3f60cd..937633f 100644 --- a/src/i18n/ro/batch8.ts +++ b/src/i18n/ro/batch8.ts @@ -1,4 +1,629 @@ -/** ro — batch 8. Filled by the translation pass; empty until then. */ -const roBatch8 = {}; +/** + * ro — batch 8. Traducere în română a namespace-urilor `deckCostUi`, + * `becomeRolesUi`, `weatherUi`, `skaterLabelsUi`, `notifyUi` și `legacyMiscUi`. + * + * Termenii de skate/brand rămân în engleză (Deck, Trucks, Wheels, Bearings, + * Griptape, sats, Nostr, Lightning, Spot, Park, Bowl, Vert, Crew, Stash, + * The Lab) și `{{placeholder}}` sunt păstrați identic. + */ +const roBatch8 = { + deckCostUi: { + presetPrompt: 'Denumește acest preset', + presetDefaultName: 'Preset {{n}}', + summaryCopied: 'Rezumat copiat', + couldNotCopy: 'Nu s-a putut copia', + resetConfirm: 'Resetezi totul la valorile exemplu?', + logoTooLarge: 'Logo prea mare (max. 500 KB)', + loginToFill: 'Autentifică-te pentru a completa din profilul tău Nostr', + filledFromProfile: 'Completat din profilul tău Nostr', + warnRetailBelowOne: 'Adaosul de vânzare cu amănuntul este sub 1× — ai vinde în pierdere.', + warnWholesaleAboveRetail: 'Adaosul angro ar trebui să fie mai mic decât adaosul de vânzare cu amănuntul.', + warnZeroBoards: '{{count}} rând(uri) folosesc 0 plăci — costul acelui rând este ignorat.', + warnFixedNoBoards: 'Costurile lunare fixe sunt setate, dar plăcile/lună sunt 0, deci costul operațional este ignorat.', + warnNoMaterials: 'Fără cost de materiale — adaugă cel puțin un material.', + warnEquipmentOverhead: 'Echipamentul + cheltuielile generale depășesc 60% din cost — acest model presupune volum mare; verifică numărul de plăci.', + warnOneBoard: 'O parte din echipament este repartizată pe o singură placă — mărește numărul de plăci pentru a-l amortiza.', + templateStarterName: 'Start hobby', + templateStarterBlurb: 'Câteva rânduri, fără costuri fixe', + templateShopName: 'Atelier mic', + templateShopBlurb: 'Fișă completă cu chirie și cheltuieli generale', + currency: 'Valută', + noCurrencyMatches: 'Nicio valută nu corespunde.', + ratesUnavailable: 'Cursuri live indisponibile — comutarea schimbă doar eticheta.', + liveRates: 'cursuri BTC live · sats incluse', + chipCost: 'cost', + chipSell: 'vânzare', + chipTotal: 'total', + startFrom: 'Începe de la', + advancedToggleHint: 'Arată tarifele pe operație și rebutul, configurarea lotului, taxa și curba cost-cantitate', + advanced: 'Avansat', + simple: 'Simplu', + sectionLabor: 'Manoperă', + sectionEquipment: 'Echipament', + sectionOperations: 'Cheltuieli de operare', + sectionMaterials: 'Materiale', + sectionProcesses: 'Costuri de procesare', + sectionPackaging: 'Ambalare', + sectionMargins: 'Marje', + subtotalLoaded: '{{value}}/h încărcat', + subtotalPerBoard: '{{value}}/placă', + hourlyRate: 'Tarif orar ({{unit}})', + labourBurden: 'Povară salarială (×)', + loadedRate: 'Tarif încărcat', + loadedRateHintBefore: 'Tariful încărcat = salariu × povară (taxe și asigurări ale angajatorului asupra muncii). Chiria și facturile intră la ', + loadedRateHintAfter: ' — nu le număra de două ori.', + colEquipment: 'Echipament', + colCostUnit: 'Cost ({{unit}})', + colCost: 'Cost', + colSetupH: 'Configurare (h)', + colLifetimeBoards: 'Plăci pe durata de viață', + colPerBoard: 'Pe placă', + colMaterial: 'Material', + colOrderUnit: 'Comandă ({{unit}})', + colShipUnit: 'Livrare ({{unit}})', + colBoardsOrder: 'Plăci / comandă', + colOrderM: 'Comandă (m)', + colUnloadM: 'Descărcare (m)', + colOrder: 'Comandă', + colShipping: 'Livrare', + colOrderMin: 'Comandă (min)', + colUnloadMin: 'Descărcare (min)', + colProcess: 'Proces', + colTimeM: 'Timp (m)', + colBoardsRun: 'Plăci / serie', + colRateHr: 'Tarif/oră (0 = atelier)', + colRateHrShort: 'Tarif/oră', + colScrapPct: 'Rebut %', + colTimeMin: 'Timp (min)', + colPackaging: 'Ambalare', + colTimeBoardM: 'Timp/placă (m)', + colTimeBoardMin: 'Timp/placă (min)', + colMaterialsBoardUnit: 'Materiale/placă ({{unit}})', + colMaterialsBoard: 'Materiale/placă', + equipmentPerBoard: 'Echipament pe placă:', + materialsPerBoard: 'Materiale pe placă:', + processesPerBoard: 'Procese pe placă:', + packagingPerBoard: 'Ambalare pe placă:', + perBoard: 'Pe placă:', + addEquipment: 'Adaugă echipament', + addMaterial: 'Adaugă material', + addProcess: 'Adaugă proces', + addPackagingStep: 'Adaugă pas de ambalare', + duplicate: 'Duplică', + remove: 'Elimină', + boardsPerMonth: 'Plăci / lună', + rentPerMonth: 'Chirie / lună', + utilitiesPerMonth: 'Utilități / lună', + subscriptionsPerMonth: 'Abonamente / lună', + markup: 'Adaos (×)', + wholesaleMarkup: 'Adaos angro (×)', + scrapWaste: 'Rebut / pierdere (%)', + quantityDecks: 'Cantitate (deck-uri)', + targetMonthlyProfit: 'Profit lunar țintă ({{unit}})', + costNoPackaging: 'Cost / placă (fără ambalare)', + costWithPackaging: 'Cost / placă (cu ambalare)', + batchSetupHours: 'Configurare lot (h / serie)', + batchSetupCost: 'Cost configurare lot ({{unit}} / serie)', + taxVat: 'Taxă / TVA (%)', + quoteTax: 'Taxă deviz', + includedInPrice: 'Inclus în preț', + addedOnTop: 'Adăugat deasupra', + setupPerBoard: 'Configurare / placă', + marginNoteBefore: 'Adaos {{markup}}× ≈ ', + grossMargin: '{{pct}}% marjă brută', + marginNoteAfter: ' · rebutul de {{waste}}% este distribuit pe plăcile bune.', + sellingPriceNoPackaging: 'Preț de vânzare · fără ambalare', + sellingPriceWithPackaging: 'Preț de vânzare · cu ambalare', + profitPerDeck: 'Profit / deck', + wholesalePerDeck: 'Angro / deck', + orderTotalQty: 'Total comandă ({{qty}})', + orderTotal: 'Total comandă', + breakeven: 'Prag de rentabilitate', + breakevenPerMonth: '{{count}}/lună', + targetDecksHint: 'Pentru a obține {{amount}}/lună peste costurile fixe, vinde {{decks}} deck-uri/lună.', + priceIncludesTax: 'Prețul include taxa de {{pct}}%: {{amount}} din total.', + plusTax: 'Plus taxa de {{pct}}%: {{amount}} → {{total}} în total.', + costVsQuantity: 'Cost în funcție de cantitate (configurare amortizată)', + deckOne: 'deck', + deckOther: 'deck-uri', + perDeckSuffix: '/ deck', + orderSuffix: 'comandă {{amount}}', + shippingNotIncluded: 'Nu include livrarea către cumpărător.', + clientQuoteDetails: 'Detalii deviz client (pentru PDF)', + fillFromProfileTitle: 'Completează numele, site-ul, NIP-05, Lightning și npub din profilul tău Nostr', + fillFromProfile: 'Completează din profil', + businessName: 'Nume afacere / atelier', + email: 'Email', + phone: 'Telefon', + website: 'Site web', + address: 'Adresă', + quoteNumber: 'Deviz nr.', + nextNumber: 'Următorul număr', + validDays: 'Valabil (zile)', + nip05: 'NIP-05', + lightningAddress: 'Adresă Lightning', + nostrNpub: 'Nostr (npub)', + depositPct: 'Avans de plată inițial (%)', + deliveryTerms: 'Condiții de livrare (Incoterm, opțional)', + paymentMethods: 'Metode de plată', + paymentTerms: 'Condiții de plată', + paymentDetails: 'Detalii de plată', + notesTerms: 'Note / condiții', + changeLogo: 'Schimbă logo', + addLogo: 'Adaugă logo', + incotermNone: 'Niciunul', + incotermExw: 'EXW — ridicare de la vânzător', + incotermFca: 'FCA — predat transportatorului cumpărătorului', + incotermDap: 'DAP — livrat la adresa cumpărătorului', + incotermDdp: 'DDP — livrat, taxe vamale plătite', + payMethodCash: 'Numerar', + payMethodLightning: 'Lightning', + payMethodCashu: 'Cashu', + payMethodBank: 'Transfer bancar', + payMethodCard: 'Card', + payMethodOther: 'Altul', + listDeckAtPrice: 'Listează un deck la acest preț', + getItMade: 'Fă-l realizat — găsește un constructor', + savePreset: 'Salvează preset', + load: 'Încarcă', + export: 'Exportă', + import: 'Importă', + reset: 'Resetează', + deletePreset: 'Șterge preset', + exportPdfFull: 'PDF — fișă completă', + exportPdfQuote: 'PDF — deviz client', + exportPng: 'Imagine PNG', + exportXlsx: 'Registru XLSX', + exportCsv: 'CSV (foaie de calcul)', + exportMarkdown: 'Markdown', + exportJson: 'JSON (backup)', + exportCopySummary: 'Copiază rezumat', + }, + becomeRolesUi: { + artist: { + seoTitle: 'Devino Designer / Artist - SkateSpots', + seoDescription: 'Listează-ți designul și arta skate — grafici pentru deck-uri, logo-uri, postere, merch și altele.', + heading: 'Designer / Artist', + tagline: 'Grafici pentru deck-uri, logo-uri, postere, merch — pune-ți arta pe scenă', + noun: 'artist', + rateLabel: 'Tarif', + portfolioLabel: 'Portofoliu / Link magazin', + sectionWhatYouMake: 'Ce realizezi', + sectionMedium: 'Mediu', + sectionSoftwareTools: 'Software și unelte', + deliverablesPlaceholder: 'ex. fișiere pregătite pentru tipar, fișiere sursă, grafici pentru deck', + turnaroundPlaceholder: 'ex. 3–5 zile', + }, + graffiti: { + seoTitle: 'Oferă Graffiti / Muraluri - SkateSpots', + seoDescription: 'Listează-ți lucrările de graffiti și muraluri — piese, muraluri, artă pentru skatepark și altele.', + heading: 'Artist Graffiti / Muralist', + tagline: 'Piese, muraluri, artă pentru skatepark — pictează scena', + noun: 'artist graffiti', + rateLabel: 'Tarif', + portfolioLabel: 'Link portofoliu (IG, site)', + sectionStyle: 'Stil', + sectionMedium: 'Mediu', + sectionWorkContext: 'Context de lucru', + crewLabel: 'Crew de graffiti', + crewPlaceholder: 'Crew-ul tău de writing (opțional)', + crewHelper: 'Separat de crew-ul tău de skate — writerii cu care pictezi.', + surfacesPlaceholder: 'ex. beton, cărămidă, pereți autorizați', + maxSizePlaceholder: 'ex. până la 10 m', + }, + musician: { + seoTitle: 'Adaugă un profil muzical - SkateSpots', + seoDescription: 'Faci skate și muzică? Listează-ți trupa sau proiectul solo — genuri, instrumente și link-uri.', + heading: 'Muzician / Trupă', + tagline: 'Faci skate și muzică? Fii programat pentru demo-uri, jam-uri și after-party-uri', + noun: 'muzician', + rateLabel: 'Tarif de programare', + portfolioLabel: 'Link site / EPK', + sectionGenre: 'Gen', + sectionInstruments: 'Instrumente și rol', + actLabel: 'Tip de act', + actPlaceholder: 'solo / trupă / dj / producător', + 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: 'ex. 30–45 min', + techRiderPlaceholder: 'ex. PA, microfoane, backline', + }, + judge: { + seoTitle: 'Judeci evenimente de skate - SkateSpots', + seoDescription: 'Listează-te ca judecător de evenimente de skate — Game of S.K.A.T.E., best trick jam-uri, concursuri, serii am și etape din world tour. Fii angajat să conduci evenimente corecte și credibile.', + heading: 'Judecător de evenimente de skate', + tagline: 'De la Game of S.K.A.T.E. pe plat la World Destruction Tour — conduit-o corect și credibil', + noun: 'judecător', + rateLabel: 'Tarif zilnic / Onorariu', + portfolioLabel: 'Arhivă rezultate / link profil', + sectionEventFormats: 'Formate de eveniment', + sectionSpecialty: 'Specialitate', + sectionLevelCircuit: 'Nivel / Circuit', + eventsJudgedLabel: 'Evenimente judecate', + eventsJudgedPlaceholder: 'ex. 40+ concursuri, 3 etape din World Tour', + eventsJudgedHelper: 'Evenimente, concursuri sau turnee notabile pe care le-ai arbitrat.', + travelPlaceholder: 'ex. regional / național / internațional', + certificationsPlaceholder: 'ex. curs național de arbitraj', + }, + organizer: { + seoTitle: 'Organizează evenimente de skate - SkateSpots', + seoDescription: 'Listează-te ca organizator de evenimente de skate — jam-uri de stradă, best trick, concursuri, întâlniri, demo-uri și etape de turneu. Fii descoperit și angajat să conduci sesiunea.', + heading: 'Organizator de evenimente', + tagline: 'Jam-uri, concursuri, întâlniri și demo-uri — pune pe picioare sesiunea și adună scena la un loc', + noun: 'organizator', + rateLabel: 'Onorariu / Buget eveniment', + portfolioLabel: 'Link evenimente trecute / rezultate', + sectionEventTypes: 'Tipuri de eveniment', + sectionWhatYouHandle: 'De ce te ocupi', + sectionScale: 'Amploare', + eventsHostedLabel: 'Evenimente organizate', + eventsHostedPlaceholder: 'ex. 25 jam-uri, 3 concursuri orașenești', + eventsHostedHelper: 'Evenimente, concursuri sau întâlniri notabile pe care le-ai organizat.', + insurancePlaceholder: 'ex. răspundere civilă inclusă', + permitsPlaceholder: 'ex. autorizații de la primărie gestionate', + }, + tattoo: { + seoTitle: 'Devino Artist Tatuator - SkateSpots', + seoDescription: 'Listează-ți lucrările de tatuaje pentru scena skate — stiluri, flash, custom și altele.', + heading: 'Artist Tatuator', + tagline: 'Cerneală pentru scenă — flash, custom, fine line și altele', + noun: 'artist tatuator', + rateLabel: 'Tarif / Orar', + portfolioLabel: 'Link portofoliu (IG, site)', + sectionStyles: 'Stiluri', + sectionMethod: 'Metodă', + studioLabel: 'Studio / Magazin', + studioPlaceholder: 'Numele studioului (opțional)', + booksOpenLabel: 'Programări deschise', + booksOpenHelper: 'Accepți momentan programări?', + depositPlaceholder: 'ex. 50 EUR nerambursabil', + minimumPlaceholder: 'ex. 80 EUR', + }, + trainer: { + seoTitle: 'Devino Antrenor / Fizioterapeut - SkateSpots', + seoDescription: 'Ajută skaterii să devină puternici și să rămână sănătoși — forță, mobilitate, prevenirea accidentărilor și recuperare.', + heading: 'Antrenor / Fizioterapeut', + tagline: 'Forță, mobilitate, prevenirea accidentărilor și recuperare pentru skateri', + noun: 'antrenor', + rateLabel: 'Tarif / Ședință', + portfolioLabel: 'Profil / link programare', + sectionFocus: 'Focus', + sectionInjuries: 'Accidentări cu care lucrezi', + sectionCredentialsSetting: 'Calificări și cadru', + credentialsPlaceholder: 'ex. licență în fizioterapie, CSCS…', + credentialsHelper: 'Listează calificări reale — skaterii au încredere în credențiale verificabile.', + remoteLabel: 'De la distanță / Online', + remoteHelper: 'Oferi coaching sau consultații online?', + modalitiesPlaceholder: 'ex. manual, S&C, dry needling', + }, + barber: { + seoTitle: 'Devino Frizer / Coafor - SkateSpots', + seoDescription: 'Listează-ți frizeria sau scaunul pentru scena skate — tunsori, fade, aranjat barbă, vopsit și altele. Fii programat de skateri.', + heading: 'Frizer / Coafor', + tagline: 'Tunsori, fade și bărbierit pentru scenă — în salon sau mobil', + noun: 'frizer', + rateLabel: 'Preț / Tuns', + portfolioLabel: 'Galerie tunsori / link IG', + sectionWhatYouOffer: 'Ce oferi', + sectionSignatureStyles: 'Stiluri distinctive', + sectionSetting: 'Cadru', + studioLabel: 'Magazin / Studio', + studioPlaceholder: 'Numele salonului sau studioului (opțional)', + booksOpenLabel: 'Programări deschise', + booksOpenHelper: 'Accepți momentan programări?', + durationPlaceholder: 'ex. 30–45 min', + }, + }, + weatherUi: { + condition: { + clearSky: 'Cer senin', + mainlyClear: 'Predominant senin', + partlyCloudy: 'Parțial noros', + overcast: 'Înnorat', + foggy: 'Cețos', + depositingRimeFog: 'Ceață cu depunere de chiciură', + lightDrizzle: 'Burniță slabă', + moderateDrizzle: 'Burniță moderată', + denseDrizzle: 'Burniță densă', + lightFreezingDrizzle: 'Burniță înghețată slabă', + denseFreezingDrizzle: 'Burniță înghețată densă', + slightRain: 'Ploaie slabă', + moderateRain: 'Ploaie moderată', + heavyRain: 'Ploaie torențială', + lightFreezingRain: 'Ploaie înghețată slabă', + heavyFreezingRain: 'Ploaie înghețată puternică', + slightSnow: 'Ninsoare slabă', + moderateSnow: 'Ninsoare moderată', + heavySnow: 'Ninsoare abundentă', + snowGrains: 'Grinzi de zăpadă', + slightRainShowers: 'Averse slabe de ploaie', + moderateRainShowers: 'Averse moderate de ploaie', + violentRainShowers: 'Averse violente de ploaie', + slightSnowShowers: 'Averse slabe de ninsoare', + heavySnowShowers: 'Averse abundente de ninsoare', + thunderstorm: 'Furtună', + thunderstormSlightHail: 'Furtună cu grindină slabă', + thunderstormHeavyHail: 'Furtună cu grindină puternică', + unknown: 'Necunoscut', + }, + aqi: { + good: 'Bun', + moderate: 'Moderat', + unhealthySensitive: 'Nesănătos pentru grupurile sensibile', + unhealthy: 'Nesănătos', + veryUnhealthy: 'Foarte nesănătos', + hazardous: 'Periculos', + }, + skateability: { + perfect: 'Perfect', + good: 'Bun', + okay: 'Acceptabil', + poor: 'Slab', + bad: 'Rău', + unrideable: 'Imposibil de mers', + }, + reason: { + currentlyRaining: 'Plouă acum', + raining: 'Plouă', + snowing: 'Ninge', + thunderstorm: 'Furtună', + freezingTemperature: 'Temperatură sub zero', + veryCold: 'Foarte frig', + extremelyHot: 'Cald extrem', + veryHot: 'Foarte cald', + veryStrongWind: 'Vânt foarte puternic', + strongWind: 'Vânt puternic', + moderateWind: 'Vânt moderat', + veryUnhealthyAir: 'Aer foarte nesănătos', + unhealthyAir: 'Aer nesănătos', + moderateAirQuality: 'Calitate moderată a aerului', + veryHumid: 'Foarte umed', + humid: 'Umed', + extremeUv: 'UV extrem - folosește protecție solară', + highUv: 'UV ridicat - se recomandă protecție solară', + perfectConditions: 'Condiții perfecte pentru skate', + }, + }, + skaterLabelsUi: { + stance: { + regular: 'Regular', + goofy: 'Goofy', + }, + style: { + street: 'Street', + park: 'Park', + vert: 'Vert', + transition: 'Tranziție', + bowl: 'Bowl', + cruising: 'Croazieră', + downhill: 'Coborâre', + freestyle: 'Freestyle', + ledges: 'Borduri', + stairs: 'Scări', + diy: 'DIY', + }, + level: { + grom: 'Începător', + intermediate: 'Intermediar', + advanced: 'Avansat', + ripper: 'As', + }, + sponsor: { + title: 'Sponsor principal', + gold: 'Aur', + silver: 'Argint', + partner: 'Partener', + }, + }, + notifyUi: { + activity: { + zappedWithAmount: 'Ai primit un zap de {{sats}} sats', + zapped: 'Ai primit un zap', + liked: 'Cuiva i-a plăcut postarea ta', + reposted: 'Cineva te-a redistribuit', + mentioned: 'Cineva te-a menționat', + replied: 'Cineva ți-a răspuns', + rsvp: 'Cineva a confirmat prezența la evenimentul tău', + eventUpdated: 'Un eveniment la care mergi a fost actualizat', + newActivity: 'Activitate nouă', + tapToOpen: 'Atinge pentru a deschide SkateSpots', + }, + crew: { + inviteTitle: 'Invitație în Crew', + inviteBody: 'Ești invitat în {{crew}}', + addedTitle: 'Ai fost adăugat într-o Crew', + addedBody: '{{crew}} — confirmă pentru a te alătura', + joinRequestTitle: 'Cerere de alăturare', + joinRequestBody: 'Cineva vrea să se alăture la {{name}}', + }, + dm: { + title: 'Mesaj direct nou', + body: 'Atinge pentru a-l citi', + }, + trade: { + confirm: 'Confirmă un schimb', + confirmed: 'Schimb confirmat', + newOffer: 'Ofertă nouă la anunțul tău', + counter: 'Contraofertă', + accepted: 'Ofertă acceptată 🎉', + declined: 'Ofertă refuzată', + withdrawn: 'Ofertă retrasă', + }, + newsletter: { + drop: 'Noutate SkateSpots', + }, + summary: { + moreUpdates: 'încă {{count}} actualizări', + openToCatchUp: 'Deschide SkateSpots pentru a recupera', + }, + }, + legacyMiscUi: { + hostingGoing: '{{count}} participă', + hostingInterested: '{{count}} interesat', + hostingPostUpdate: 'Publică actualizare', + hostingEdit: 'Editează', + hostingLoginToSee: 'Autentifică-te pentru a vedea evenimentele pe care le găzduiești.', + hostingEmptyTitle: 'Nu găzduiești încă nimic', + hostingEmptyBody: 'Organizează un jam, un concurs sau o sesiune. Creează un eveniment, iar skaterii pot confirma prezența, primi actualizări și trece pe la tine.', + hostingCreateEvent: 'Creează un eveniment', + hostingUpcoming: 'În curând · {{count}}', + hostingPast: 'Trecute · {{count}}', + sponsorPartners: 'Parteneri', + sponsorTitleSponsor: 'Sponsor principal', + sponsorPlatformPartners: 'Parteneri ai platformei', + reportsUntitled: '(fără titlu)', + reportsResolveFailed: 'Nu s-a putut rezolva evenimentul raportat (poate a fost șters sau raportul vizează un profil, nu o postare).', + reportsLookAtIt: 'Privește-l', + reportsNoReports: 'Încă nicio raportare. Fie totul e în regulă, fie nimeni nu a găsit butonul.', + statusSetYourStatus: 'Setează-ți statusul', + statusSetDesc: 'Spune-le celorlalți ce faci. Statusul tău va fi vizibil pe profilul tău și la spoturile conectate.', + statusClear: 'Șterge', + statusOrWriteOwn: 'Sau scrie-l pe al tău', + statusCustomPlaceholder: 'Ce faci?', + statusLinkToSpot: 'Conectează la un Spot (opțional)', + statusSpotSelected: 'Spot selectat', + statusSearchSpots: 'Caută spoturi...', + statusNoSpotsFound: 'Niciun spot găsit.', + statusSelectSpot: 'Selectează un spot', + statusAutoClearAfter: 'Ștergere automată după: {{time}}', + statusExpMin: '{{count}} min', + statusExpOneHour: '1 oră', + statusExpHours: '{{count}} ore', + statusExpOneDay: '1 zi', + statusExpDays: '{{count}} zile', + statusSlider15: '15 min', + statusSlider1h: '1 h', + statusSlider4h: '4 h', + statusSlider24h: '24 h', + statusSetting: 'Se setează statusul...', + statusSet: 'Setează statusul', + statusSomethingWrong: 'Ceva a mers greșit', + seoProfileTitle: 'Profil - SkateSpots', + seoViewProfile: 'Vezi profilul.', + bannerAlt: 'Banner', + openInCordn: 'Deschide în Cordn', + modHelp: 'Ascunde publică org.skatespots.moderation / hidden; Confirmă publică … / verified; Anulează publică … / cleared (înapoi la neutru). Toate trei sunt etichete publice și reversibile — nimic nu este vreodată șters de pe relay-uri.', + zapNoActiveMint: 'Nu s-a găsit nicio mint Cashu activă.', + altProfile: 'Profil', + altCardPreview: 'Previzualizare card', + altCard: 'Card', + altCaptured: 'Capturat', + ariaPrevPhoto: 'Fotografia anterioară', + ariaNextPhoto: 'Fotografia următoare', + ariaCommentOptions: 'Opțiuni comentariu', + ariaMessageConversation: 'Conversație de mesaje', + exportTitle: 'SkateSpots — Calculator de cost Deck', + exportQuoteTitle: 'DEVIZ', + exportPngTitle: 'Cost Deck', + exportMarkdownTitle: 'Calculator de cost Deck', + exportSectionLabor: 'Manoperă', + exportSectionEquipment: 'Echipament', + exportSectionOperations: 'Cheltuieli de operare', + exportSectionMaterials: 'Materiale', + exportSectionProcesses: 'Costuri de procesare', + exportSectionPackaging: 'Ambalare', + exportSectionResult: 'Rezultat', + exportLabelOperations: 'Operațiuni', + exportLabelProcesses: 'Procese', + exportKvHourlyRate: 'Tarif orar', + exportKvLabourBurden: 'Povară salarială', + exportKvLoadedRate: 'Tarif încărcat', + exportKvEquipmentPerBoard: 'Echipament pe placă', + exportKvBoardsPerMonth: 'Plăci / lună', + exportKvRentPerMonth: 'Chirie / lună', + exportKvUtilitiesPerMonth: 'Utilități / lună', + exportKvSubscriptionsPerMonth: 'Abonamente / lună', + exportKvPerBoard: 'Pe placă', + exportKvMaterialsPerBoard: 'Materiale pe placă', + exportKvProcessesPerBoard: 'Procese pe placă', + exportKvPackagingPerBoard: 'Ambalare pe placă', + exportKvMarkup: 'Adaos', + exportMarkupValue: '{{markup}}× (≈ {{pct}}% marjă brută)', + exportKvWasteEffective: 'Rebut (efectiv)', + exportKvCostNoPack: 'Cost / placă (fără ambalare)', + exportKvCostWithPack: 'Cost / placă (cu ambalare)', + exportKvBatchSetupPerBoard: 'Configurare lot / placă', + exportKvTax: 'Taxă ({{pct}}%)', + exportKvTaxIncluded: 'Taxă ({{pct}}%, inclusă)', + exportKvSellingNoPack: 'Preț de vânzare (fără ambalare)', + exportKvSellingWithPack: 'Preț de vânzare (cu ambalare)', + exportShippingNote: 'Nu include livrarea către cumpărător.', + exportGeneratedBy: 'Generat de SkateSpots · skate-spots.org', + exportGeneratedWith: 'Generat cu SkateSpots · skate-spots.org', + exportDetailSetup: '+ {{hours}} h configurare', + exportDetailBoards: '{{boards}} plăci', + exportDetailShip: '+ {{amount}} livrare', + exportDetailMinutes: '{{minutes}} min', + exportDetailPerBoards: '/ {{boards}} plăci', + exportDetailScrap: '{{pct}}% rebut', + exportDetailMaterials: '{{materials}} materiale', + exportQuoteRef: 'Ref. {{ref}}', + exportQuoteLineItem: 'Deck personalizat de skateboard', + exportQuoteLineItemQty: 'Deck personalizat de skateboard × {{qty}}', + exportQuoteLineDesc: 'Construit manual, finisat și ambalat. Cantitate 1.', + exportQuoteLineDescQty: 'Construit manual, finisat și ambalat. {{price}} fiecare.', + exportQuoteSubtotal: 'Subtotal', + exportQuoteSubtotalQty: 'Subtotal ({{qty}} deck-uri)', + exportQuoteTax: 'Taxă / TVA ({{pct}}%)', + exportQuoteTotal: 'Total', + exportQuoteTotalQty: 'Total ({{qty}} deck-uri)', + exportQuoteIncludesTax: 'Include taxa de {{pct}}% ({{amount}})', + exportQuoteDeposit: 'Avans de plată acum ({{pct}}%)', + exportQuoteBalance: 'Sold la finalizare', + exportQuotePayment: 'Plată: {{value}}', + exportQuoteLightning: 'Lightning: {{value}}', + exportQuoteDetails: 'Detalii: {{value}}', + exportQuoteTerms: 'Condiții: {{value}}', + exportQuoteDelivery: 'Livrare: {{value}}', + exportQuoteValidUntil: 'Nu include livrarea. Deviz valabil până la {{date}}.', + exportPngSellingWith: 'PREȚ DE VÂNZARE · CU AMBALARE', + exportPngSellingNo: 'PREȚ DE VÂNZARE · FĂRĂ AMBALARE', + exportPngCostWith: 'COST / PLACĂ (CU AMBALARE)', + exportPngDeposit: 'Avans {{pct}}%: {{amount}}', + exportXlsxSummary: 'Rezumat', + exportXlsxCurrency: 'Valută', + exportXlsxDate: 'Dată', + exportXlsxOperationsPerBoard: 'Operațiuni pe placă', + exportColCost: 'Cost', + exportColSetupH: 'Configurare (h)', + exportColBoards: 'Plăci', + exportColPerBoard: 'Pe placă', + exportColMaterial: 'Material', + exportColOrderCost: 'Cost comandă', + exportColShipping: 'Livrare', + exportColOrderMin: 'Comandă (min)', + exportColUnloadMin: 'Descărcare (min)', + exportColProcess: 'Proces', + exportColTimeMin: 'Timp (min)', + exportColTimeBoardMin: 'Timp/placă (min)', + exportColMaterialsBoard: 'Materiale/placă', + exportCopyTitle: 'Cost Deck — {{currency}}', + exportCopyCostWith: 'Cost / placă (cu ambalare): {{amount}}', + exportCopySellingNo: 'Preț de vânzare (fără ambalare): {{amount}}', + exportCopySellingWith: 'Preț de vânzare (cu ambalare): {{amount}}', + exportCopyBreakdown: 'Echipament {{equipment}} · Operațiuni {{operations}} · Materiale {{materials}} · Procese {{processes}} · Ambalare {{packaging}}', + exportMdHourlyRate: 'Tarif orar: {{value}}', + exportMdLabourBurden: 'Povară salarială: {{value}}', + exportMdLoadedRate: 'Tarif încărcat: {{value}}', + exportMdBoardsPerMonth: 'Plăci/lună: {{value}}', + exportMdRent: 'Chirie: {{value}}', + exportMdUtilities: 'Utilități: {{value}}', + exportMdSubscriptions: 'Abonamente: {{value}}', + exportMdPerBoard: 'Pe placă: {{value}}', + exportMdMarkupWaste: 'Adaos: {{markup}}× (≈ {{pct}}% marjă brută) · Rebut: {{waste}}%', + exportMdCostNoPack: 'Cost/placă (fără ambalare): {{value}}', + exportMdCostWithPack: 'Cost/placă (cu ambalare): {{value}}', + exportMdBatchSetup: 'Configurare lot/placă: {{value}}', + exportMdSellingNo: 'Preț de vânzare (fără ambalare): {{value}}', + exportMdSellingWith: 'Preț de vânzare (cu ambalare): {{value}}', + exportMdDisclaimer: 'Nu include livrarea către cumpărător. Generat de SkateSpots.', + }, +}; export default roBatch8; diff --git a/src/pages/CreateTourPage.tsx b/src/pages/CreateTourPage.tsx index 316f462..b72ae67 100644 --- a/src/pages/CreateTourPage.tsx +++ b/src/pages/CreateTourPage.tsx @@ -38,6 +38,7 @@ const COMMON_LANGUAGES = [ { code: 'ja', label: 'Japanese', flag: '🇯🇵' }, { code: 'zh-CN', label: 'Chinese (Simplified)', flag: '🇨🇳' }, { code: 'zh-TW', label: 'Chinese (Traditional)', flag: '🇹🇼' }, + { code: 'ro', label: 'Romanian', flag: '🇷🇴' }, { code: 'sv', label: 'Swedish', flag: '🇸🇪' }, { code: 'el', label: 'Greek', flag: '🇬🇷' }, { code: 'vi', label: 'Vietnamese', flag: '🇻🇳' },