i18n(ro): complete Romanian (100%) + add to picker

This commit is contained in:
SkateSpots 2026-10-08 17:18:03 +07:00
parent 4acfa59e56
commit 2d656e5269
8 changed files with 5428 additions and 48 deletions

View file

@ -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: '🇻🇳' },

View file

@ -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;

View file

@ -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",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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 };

View file

@ -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;

View file

@ -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: '🇻🇳' },