SkateSpots/src/i18n/gl/batch2.ts
2026-10-28 22:43:52 +07:00

1492 lines
64 KiB
TypeScript

const batch2 = {
socialUi: {
agentPanel: {
spot: "Spot",
event: "Evento",
labPro: "Lab Pro",
gear: "Equipamento",
crew: "Crew",
description: "Coñece esta crew — as súas jams, a aliñación e a convocatoria aberta — ademais da escena máis ampla con datos en directo.",
greeting: "Ei! Son Sasquatch, o guía de {{crew}}. Pregúntame pola crew — a próxima jam, quen a leva, que buscamos — ou pola escena en xeral.",
suggestion1: "Cal é a nosa próxima jam?",
suggestion2: "Quen leva esta crew?",
suggestion3: "Que estamos a buscar?",
suggestion4: "Os mellores spots preto de nós?",
suggestion5: "Que tempo fai para patinar?",
thinking: "Sasquatch está a pensar…",
placeholder: "Pregunta pola escena da túa zona…",
disclaimer: "A IA pode equivocarse — as ligazóns van a anuncios reais."
},
badge: {
upcomingOne: "{{count}} evento próximo",
upcomingMany: "{{count}} eventos próximos",
comingOne: "{{count}} evento en camiño",
comingMany: "{{count}} eventos en camiño"
},
bell: {
youAreIn: "Xa estás en {{crew}}! 🛹",
membershipConfirmed: "Membresía confirmada.",
couldNotConfirm: "Non se puido confirmar",
addedYouTo: "engadiute a",
confirmToAppear: "Confirma para aparecer como membro.",
notifications: "Notificacións",
notificationsNew: "Notificacións ({{count}} novas)",
unreadCount: "{{count}} notificacións sen ler",
markRead: "Marcar como lidas",
allClear: "Todo ao día",
tabAll: "Todo",
tabTrades: "Intercambios",
tabSocial: "Social",
tabNews: "Novidades",
tabCrews: "Crews",
dmsUnread: "{{count}} mensaxe(s) cifrado(s) novo(s)",
checkingUpdates: "Buscando actualizacións…",
checkingTrades: "Comprobando ofertas e intercambios…",
loadingDrops: "Cargando as últimas novidades…",
emptyAll: "As ofertas, os intercambios, os zaps, as respostas, as novidades do boletín e a actividade das crews aparecerán aquí.",
emptyTrades: "As ofertas, as contraofertas e as confirmacións de intercambio chegan aquí — tanto se vendes, compras ou cambias.",
emptySocial: "Os zaps, as reaccións, os reposts, as mencións, as respostas, as confirmacións de asistencia a eventos e as actualizacións dos anfitrións chegan aquí.",
emptyNews: "As novidades do boletín de SkateSpots chegarán aquí. Subscríbete na páxina do boletín.",
emptyCrews: "Os convites de crews, as solicitudes de colectivo e as solicitudes de membresía aparecerán aquí.",
subscribeBanner: "Subscríbete para recibir as novas no teu aviso",
read: "Lida",
allCaughtUp: "Estás ao día"
},
chat: {
hidden: "Agochada",
hideMessageAria: "Agochar esta mensaxe",
hideMessageTitle: "Agochar mensaxe (admin)",
messageHidden: "Mensaxe agochada",
messageHiddenDesc: "Agochada do chat da crew para todos.",
messageHideFailed: "Non se puido agochar a mensaxe",
encryptionUnavailable: "Cifrado non dispoñible",
encryptionUnavailableDesc: "O teu firmante non admite o cifrado NIP-44. Actualiza a extensión.",
messageFailed: "Mensaxe fallida",
couldNotSend: "Non se puido enviar a mensaxe.",
noOneToMessage: "Aínda non hai ninguén a quen escribir",
noOneToMessageDesc: "Esta crew non ten outros membros cos que falar.",
subject: "Chat da crew {{crew}}",
title: "Chat da crew",
cordnBadgeTitle: "Encamiñado polo coordinador Cordn desta crew mediante ContextVM. Cifrado de extremo a extremo.",
private: "Privado",
privateBadgeTitle: "Cifrado de extremo a extremo — só os membros da crew poden ler estas mensaxes.",
encryptedCordn: "Cifrado e encamiñado polo coordinador da crew (Cordn) — ningunha mensaxe pasa por relays públicos.",
encryptedNip17: "Chat de grupo cifrado para o fundador e todos os membros listados da crew.",
moderatorNote: " Como moderador, podes agochar mensaxes da crew.",
loginToSee: "Inicia sesión para ver se podes unirte ao chat da crew.",
membersOnly: "Este chat é privado para os membros da crew. Pídele ao fundador que te engada á crew para unirte á conversa.",
noMessages: "Aínda non hai mensaxes. Arranca o chat da crew — organiza unha sesión, comparte un spot, presume dun clip.",
newMessages: "Mensaxes novas",
new: "Nova",
placeholder: "Escribe á túa crew…",
sendAria: "Enviar mensaxe"
},
collectiveJoinRequest: {
addedTitle: "Engadiches {{name}} a {{collective}} 🛹",
addedDesc: "Confirmará desde o seu lado para aparecer como membro verificado.",
couldNotAdd: "Non se puido engadir o membro",
couldNotDismiss: "Non se puido descartar",
addedDone: "Engadido",
addedTo: "a",
dismissedDone: "Solicitude de {{name}} descartada",
wantsToJoin: "quere unirse",
alreadyOnRoster: "Xa está na lista",
openCollective: "Abrir colectivo",
dismiss: "Descartar",
addToCollective: "Engadir ao colectivo"
},
collectiveMembers: {
confirmed: "Confirmado",
pending: "Pendente",
pendingTooltip: "Listado polo colectivo — á espera da confirmación deste membro.",
crewOnly: "Só crew",
crewOnlyTooltip: "Este membro escolleu ser visible só para os compañeiros de crew. Podes velo porque estás na crew.",
hiddenMember: "Membro agochado",
title: "Membros",
verifiedOf: "{{confirmed}} de {{total}} verificados — cada membro confirmado asinou coa súa propia chave de Nostr.",
verifiedPerMember: "A membresía verifícase por membro. Cada membro confirma coa súa propia chave de Nostr.",
adminsOne: "{{count}} admin axuda a levar a crew.",
adminsMany: "{{count}} admins axudan a levar a crew."
},
confirmMembership: {
public: "Público",
crewOnly: "Só crew",
confirmedTitle: "Membresía confirmada!",
confirmedCrew: "Estás verificado en {{name}} — visible só para os compañeiros de crew.",
confirmedPublic: "Agora apareces como membro verificado de {{name}}.",
failed: "Non se puido confirmar",
addedTo: "Engadíronte a {{name}}",
addedDesc: "Confirma a túa membresía para que apareza como verificada no teu perfil e no seu.",
yourVisibility: "A túa visibilidade",
confirming: "Confirmando…",
confirmButton: "Confirmar membresía"
},
contacts: {
message: "Mensaxe",
removePrivate: "Quitar dos contactos privados",
savePrivate: "Gardar nos contactos privados",
seoTitle: "Contactos - SkateSpots",
seoDescription: "A túa escena — compañeiros de crew, persoas que segues e conversas recentes, con contactos privados cifrados.",
encryptionUnavailableDesc: "O teu firmante non admite o cifrado NIP-44.",
removed: "Quitado dos contactos privados",
saved: "Gardado nos contactos privados",
savedDesc: "Só ti podes ver esta lista.",
updateFailed: "Non se puideron actualizar os contactos",
loginTitle: "A túa escena, nun só lugar",
loginDesc: "Inicia sesión para ver os teus compañeiros de crew, as persoas que segues e as conversas recentes — e manter unha lista de contactos privada e cifrada.",
title: "Contactos",
subtitle: "A túa escena — compañeiros de crew, seguidores e conversas",
filterPlaceholder: "Filtrar por npub…",
tabCrew: "Crew",
tabFollows: "Seguindo",
tabDms: "MD",
tabSaved: "Gardados",
emptyCrewmates: "Aínda non hai compañeiros de crew. Únete ou crea unha crew para construír a túa rede da escena.",
emptyFollowing: "Aínda non segues a ninguén.",
emptyDms: "Aínda non hai conversas. Escribe a un skater para comezar unha.",
savedHint: "Esta lista está cifrada coa túa chave — só ti podes lela. Toca a estrela en calquera persoa para engadila.",
emptySaved: "Aínda non hai contactos gardados. Marca persoas desde calquera pestana para construír a túa axenda privada."
},
conversation: {
unknown: "Descoñecido",
seoTitle: "Chat con {{name}} - SkateSpots",
seoDescription: "Conversa privada cifrada",
sendFailed: "Non se puido enviar a mensaxe",
sendFailedDesc: "Téntao de novo nun intre.",
tradeConfirmed: "Intercambio confirmado",
tradeConfirmedDesc: "Reputación actualizada para ambos.",
tradeConfirmFailed: "Non se puido confirmar o intercambio",
somethingWrong: "Algo saíu mal.",
soldNote: "Vendido a {{name}}.",
saleConfirmed: "Venda confirmada",
saleConfirmedDesc: "{{name}} xa pode confirmar a súa parte.",
saleConfirmFailed: "Non se puido confirmar a venda",
escrowRedeemed: "Depósito en garantía canxeado",
escrowRedeemedDesc: "Os fondos xa están na túa carteira Cashu.",
escrowRedeemFailed: "Non se puido canxear o depósito",
loginTitle: "Inicia sesión para ver as mensaxes",
secureLoginTitle: "Cómpre un inicio de sesión seguro",
secureLoginDesc: "As mensaxes requiren unha aplicación de firma segura.",
encrypted: "Cifrado",
refresh: "Actualizar",
didCompleteTrade: "Completaches este intercambio?",
recordedSale: "{{name}} rexistrou a venda. Confirma para actualizar a reputación de ambos.",
confirm: "Confirmar",
confirmSale: "Confirmar esta venda?",
askedToRecord: "{{name}} pediuche que o rexistres. Ao confirmar, mellora a reputación de ambos.",
confirmSaleButton: "Confirmar venda",
redeemEscrow: "Canxear depósito",
escrowAppOnly: "O depósito Cashu só está na app — abre SkateSpots no teu teléfono para canxealo.",
startThread: "Envia unha mensaxe para comezar a conversa",
placeholder: "Escribe unha mensaxe...",
e2eeNote: "As mensaxes están cifradas de extremo a extremo con NIP-17"
},
coordinator: {
secondsAgo: "hai {{count}} s",
minutesAgo: "hai {{count}} min",
hoursAgo: "hai {{count}} h",
daysAgo: "hai {{count}} d",
statusIdle: "Sen comprobar",
statusChecking: "Comprobando…",
statusOnline: "Conectado",
statusStale: "Silencioso",
statusOffline: "Non visto",
statusError: "Inaccesible",
notACoordinator: "Iso non é un coordinador",
notACoordinatorDesc: "Pega un nprofile, un npub ou unha ligazón de cordn.net.",
added: "Coordinador engadido",
relayOne: "{{count}} relay",
relayMany: "{{count}} relays",
lastSeen: "visto por última vez {{time}}",
onlineDesc: "Anunciándose. Os grupos que o usan poden entregar mensaxes agora.",
staleDesc: "Atopado, pero non se anunciou recentemente — pode estar durmido.",
offlineDesc: "Non se viu ningún anuncio. Pode ser privado (non pasa nada) ou simplemente estar fóra de liña.",
errorDesc: "Non se puido acceder aos relays.",
idleDesc: "Comprobando…",
checkingDesc: "Buscando o seu anuncio…",
eventFoundOne: "{{count}} evento atopado.",
eventFoundMany: "{{count}} eventos atopados.",
check: "Comprobar",
addLinkCopied: "Ligazón para engadir copiada",
copyFailed: "Erro ao copiar",
copyManually: "Copia a ligazón manualmente.",
addLink: "Engadir ligazón",
removeConfirm: "Quitar este coordinador deste dispositivo?",
scanToJoin: "Escanea en Cordn para unirte a este coordinador.",
noCoordinator: "Aínda non hai coordinador",
noCoordinatorDescA: "Un coordinador entrega en orde as mensaxes",
encryptedWord: "cifradas",
noCoordinatorDescB: "de grupo da túa crew. Ve quen, cando e que grupo — nunca o contido. Escolle un ou monta o teu.",
change: "Cambiar coordinador",
addTitle: "Engadir un coordinador",
add: "Engadir",
scanQR: "Escanea o QR dun coordinador",
inputPlaceholder: "nprofile… ou unha ligazón de cordn.net",
runOwn: "Monta o teu",
runOwnDesc: "Pode vivir nun teléfono vello, nunha Raspberry Pi ou en calquera caixa pequena que deixes acendida. O teu grupo segue funcionando mentres estea activo — e podes mover o grupo cando queiras.",
onPhone: "Nun teléfono",
onPhoneDesc: "Usa a app Cordn Coordinator e despois escanea aquí o seu QR para engadilo.",
ourDefaultTitle: "Coordinador de SkateSpots",
ourDefaultDesc: "SkateSpots ten un coordinador en relay.skate-spots.org. Úsao por defecto ou monta o teu — un coordinador só ve texto cifrado e metadatos, nunca as túas mensaxes.",
useOurs: "Usar o coordinador de SkateSpots",
openCordn: "Abrir Cordn",
scanItsQR: "Escanea o seu QR",
onServer: "Nun servidor",
commandCopied: "Comando copiado",
copyCommand: "Copiar comando",
androidSleep: "Android pode suspender un coordinador nun teléfono. Conta con mover o grupo de cando en vez.",
privacyNote: "🔒 Un coordinador só ve texto cifrado e metadatos — nunca o contido das mensaxes. Monta o teu para que ata os metadatos sexan teus.",
customTitle: "Coordinador de chat personalizado",
customBadge: "· experimental · o teu propio relay",
customDescShort: "Opcional — a túa crew xa ten chat cifrado de extremo a extremo integrado, así que non o necesitas. Só o configuras se montas o teu propio",
remove: "Quitar",
pointerNote: "Só un ponteiro por agora: un endpoint wss:// úsase como relay de chat da crew; un https:// a través do relay ContextVM compartido. O MLS real de Cordn aínda non está conectado.",
cordnCoordinator: "Coordinador Cordn",
invalid: "Iso non parece un coordinador. Pega un nprofile, unha ligazón de cordn.net ou unha URL https/wss.",
useMine: "Usar o meu coordinador"
},
createCrew: {
seoTitle: "Crear unha crew - SkateSpots",
seoDescription: "Crea a túa crew de skate — zona de casa, membros e spots.",
loginRequired: "Cómpre iniciar sesión",
loginRequiredDesc: "Tes que iniciar sesión para crear unha crew.",
backToCrews: "Volver ás crews",
title: "Crear unha crew",
intro: "A túa familia do skate — a xente coa que patinas. Abonda cun nome para comezar; todo o demais é opcional."
},
crew: {
seoTitleNamed: "{{name}} - Crew de SkateSpots",
seoTitle: "Crew - SkateSpots",
seoDescription: "Unha crew de skate en SkateSpots.",
postHidden: "Publicación agochada",
postHiddenDesc: "Retirada do feed da crew para todos.",
postHideFailed: "Non se puido agochar a publicación",
backToCrews: "Volver ás crews",
disband: "Disolver",
youAreCaptain: "Es capitán",
member: "Membro",
askSasquatch: "Pregunta a Sasquatch",
agent: "Axente da crew",
agentDesc: "O guía de IA da túa crew — spots próximos, eventos, adestradores e equipamento, con datos en directo.",
eventsTab: "Eventos",
chatTab: "Chat",
newMessages: "Mensaxes novas",
hostJam: "Organizar unha jam",
noEvents: "Aínda non hai eventos da crew. Organiza unha jam, unha competición ou un encontro como crew — conecta a túa crew co calendario de eventos e permítelle á xente facer zap.",
support: "Apoiar",
zapCrew: "Facer zap á crew",
bandTitle: "Banda da crew",
bandTagline: "Música en directo · skate e son",
listenTitle: "Escoitar: {{domain}}",
listen: "Escoita os temas",
setUpGig: "Organizar un concerto",
bookGigMessage: "Ola {{crew}} — interésanos contratar a {{band}} para un concerto. Podemos falar de datas?",
messageAboutGig: "Escribir sobre un concerto",
gigHintA: "engade un evento musical ao calendario organizado por esta crew.",
messageShort: "Mensaxe",
gigHintB: "abre un MD cifrado á crew para acordar datas e detalles.",
homeSpots: "Spots de casa",
viewSpot: "Ver spot",
seeOnMap: "Ver no mapa →",
founderLinks: "Fundador e ligazóns",
startedBy: "Iniciada por {{name}}",
opens: "Abre: {{domain}}"
},
crews: {
seoTitle: "Crews - SkateSpots",
seoDescription: "Atopa a túa xente. Descubre crews de skate, colectivos e comunidades locais preto de ti.",
videoPartTooltip: "Esta crew ten unha video part",
part: "Part",
bandTooltip: "Banda da crew: {{name}}",
band: "Banda",
focusAll: "Todo",
focusAllShort: "Todo",
focusDiy: "DIY",
focusPhoto: "Foto",
focusCoaching: "Adestramento",
focusArt: "Arte",
focusMusic: "Música",
focusPhysio: "Fisio",
focusMixed: "Mixto",
title: "Crews",
heroLine: "A túa familia do skate ancorada no mapa — a xente coa que patinas",
heroWith: "con",
heroRest: ", non a que contratas (iso é The Lab).",
crewCountOne: "{{count}} crew",
crewCountMany: "{{count}} crews",
cityCountOne: "{{count}} cidade",
cityCountMany: "{{count}} cidades",
createCrew: "Crear crew",
create: "Crear",
searchPlaceholder: "Buscar crews por nome ou cidade…",
filterTitle: "Filtrar crews",
filterDesc: "Que lle interesa á crew.",
nearMe: "Preto de min",
emptySearchTitle: "Ningunha crew coincide coa túa busca",
emptySearchHint: "Non se atopou nada para “{{query}}”. Proba con outro nome ou cidade.",
clearSearch: "Limpar busca",
emptyFocusTitle: "Aínda non hai crews de {{label}}",
emptyFocusHint: "Aquí ninguén leva aínda a bandeira de “{{label}}”. Mostra todas as crews ou comeza ti esta.",
showAll: "Mostrar todas as crews",
claimTitle: "Reclama a túa escena local",
claimHint: "Aínda non hai crews aquí. Sé o primeiro — crea a túa crew, liga os teus spots de casa e pon a túa escena no mapa para que todos a atopen."
},
crewCoordinator: {
privateChat: "Chat privado da crew",
encryptedChat: "Chat cifrado",
privateChatName: "Chat privado",
privateChatDesc: "Chat de grupo con segredo cara ao futuro (MLS) a través dun coordinador.",
privateChatDescFull: "O chat privado créao unha soa vez un admin; despois os membros únense.",
chatRowDesc: "Todos na crew — selado coa chave de cada membro (NIP-17).",
openChat: "Abrir",
setUpChat: "Configurar",
joinChat: "Unirse",
checking: "Comprobando…",
openInAnotherApp: "Abrir noutra app",
on: "Activado",
defaultA: "A pestana",
chatWord: "Chat",
defaultB: "está",
e2ee: "cifrada de extremo a extremo",
defaultC: "para o fundador e todos os membros listados — non hai nada que configurar. As mensaxes séllanse coa chave de cada membro (NIP-17), así que só a túa crew pode lelas.",
advancedA: "Avanzado: monta o teu",
cordnCoordinator: "Coordinador Cordn",
routeThrough: "Encamiñar o chat por el",
coordinator: "Coordinador",
deliveredOver: "Entregado por",
sharedRelay: "— o relay ContextVM compartido.",
ownRelay: "— o relay propio da túa crew.",
chatLive: "O chat privado está activo",
routesA: "A pestana",
routesB: "encamiña por este coordinador: as mensaxes van cifradas de extremo a extremo (NIP-44, seladas para cada membro), así que só xestiona tráfico selado.",
publicWarning: "Atención: diríxese a través do relay ContextVM compartido, así que o texto cifrado e os seus metadatos (que crew e cando) son visibles publicamente — pero non lexibles. Apunta a crew a un relay wss:// privado para que ata iso sexa privado.",
ownRelaySafe: "Nada específico da crew sae do relay propio da túa crew.",
manage: "Xestionar coordinador",
open: "Abrir {{domain}}",
openInCordnWeb: "Cordn (web)",
openCordnGroup: "Abrir chat da crew",
copyForStaircase: "Copiar para Staircase",
runBy: "Coordinador xestionado por"
},
dms: {
securityReminder: "Lembrete de seguridade",
phishingStrong: "SkateSpots nunca che enviará un MD",
phishingRest: "pedindo que verifiques a túa conta, compartas as túas chaves ou envies pagamentos. Se alguén di ser o soporte de SkateSpots por MD — é unha estafa.",
dismissReminder: "Descartar o lembrete de seguridade",
peopleCount: "{{count}} persoas",
youPrefix: "Ti: ",
unreadMessages: "Mensaxes sen ler",
seoTitle: "Mensaxes - SkateSpots",
seoDescription: "Mensaxes privadas cifradas coa comunidade do skate",
loginTitle: "Inicia sesión para acceder ás mensaxes",
loginDesc: "Mensaxería privada e cifrada con skaters da comunidade",
secureLoginTitle: "Cómpre un inicio de sesión seguro",
secureLoginDesc: "As mensaxes privadas requiren unha app de firma segura para cifrar as túas conversas.",
onAndroid: "En Android:",
useAmber: "Usa a app Amber",
getAmber: "Obter Amber →",
onIOS: "En iOS:",
iosHint: "Proba a iniciar sesión cunha conexión bunker (nsec.app) desde Axustes",
browserHint: "Proba a iniciar sesión cunha extensión do navegador como Alby ou nos2x que admita cifrado.",
title: "Mensaxes",
subtitleFull: "Cifradas de extremo a extremo con NIP-17",
subtitleShort: "Cifradas",
newMessage: "Nova mensaxe",
groups: "Grupos",
refresh: "Actualizar",
crews: "Crews",
crewFounder: "Fundador",
crewMember: "Membro",
crewOpen: "Abrir",
crewSetUp: "Configurar",
loadFailed: "Non se puideron cargar as mensaxes",
emptyTitle: "Aínda non hai mensaxes",
emptyDesc: "Comeza unha conversa con alguén da comunidade",
startConversation: "Comezar unha conversa",
undecryptableOne: "O teu firmante non puido abrir {{count}} mensaxe cifrada.",
undecryptableMany: "O teu firmante non puido abrir {{count}} mensaxes cifradas."
},
editCrew: {
seoTitleNamed: "Editar {{name}} - SkateSpots",
seoTitle: "Editar crew - SkateSpots",
seoDescription: "Edita a túa crew de skate.",
loginRequired: "Cómpre iniciar sesión",
notYours: "Non é a túa crew",
notYoursDesc: "Só o fundador da crew pode editala.",
backToCrew: "Volver á crew",
title: "Editar crew"
},
form: {
add: "Engadir",
added: "Engadido",
addNameInBasicsA: "Engade de novo un nome de crew en",
addNameInBasicsB: "para rematar.",
adminsDescA: "Fai membros de confianza",
adminsWord: "admins",
adminsDescB: "— poden convidar membros e moderar o feed e o chat da crew coas súas propias chaves. Ti (o fundador) sempre es o dono da identidade da crew.",
agentDescA: "Engade",
agentDescB: ", un guía de IA que coñece de verdade a túa crew. Os membros poden preguntar por",
agentDescC: "— ademais de spots, eventos, adestradores e equipamento próximos cos datos en directo de SkateSpots. Execútase no navegador; sen chaves nin configuración. É pronto (IA de nivel gratuíto, así que ás veces vai lenta).",
agentDescStrong: "a vosa próxima jam, quen leva a crew, que buscades e o voso estilo",
agentEnabledNote: "Sasquatch aparecerá na páxina da túa crew cando gardes.",
bandDesc: "Tes unha banda? As escenas do skate e a música local van da man — pon o nome da túa banda e unha ligazón aos temas.",
bandFooterA: "Para un perfil completo de banda (xéneros, instrumentos, concertos), crea un",
musicianWord: "Músico",
bandFooterB: "en The Lab e despois ligao na sección",
linkedLabWord: "Perfís de Lab ligados",
bandFooterC: "de arriba.",
bandMusicWord: "Banda e música",
bandName: "Nome da banda",
bandNamePlaceholder: "p. ex. The Bail Outs",
bandNudgeA: "Tes unha banda — toca para configurar a túa",
crewTypeWord: "Tipo de crew",
bandNudgeB: "a",
bandNudgeC: "para aparecer tamén na escena de Música de The Lab.",
beta: "Beta",
bioLabel: "Sobre / Manifesto",
bioPlaceholder: "Quen es, que patinas, a túa historia...",
continue: "Continuar",
crewCreated: "Crew creada!",
crewUpdated: "Crew actualizada!",
crewName: "Nome da crew",
cordnGroup: "Grupo de Cordn",
cordnGroupHint: "Opcional: pega a ligazón do grupo desde Staircase ou Cordn web. A túa crew terá entón chat MLS real de extremo a extremo, aloxado no noso coordinador.",
crewOnlyWord: "Só crew",
crewType: "Tipo de crew",
crewTypeDescA: "A túa crew céntrase nalgún oficio? Escolle un para aparecer tamén nesa escena en",
theLab: "The Lab",
crewTypeDescB: ". As crews de skate normais quedan como",
mixedWord: "Mixtas",
crewTypeDescC: ".",
customVibeHint: "Engade o teu propio estilo ou foco cun #",
customVibePlaceholder: "p. ex. downhill, sesións nocturnas, no-comply",
editDesc: "A identidade da túa crew, a zona de casa e os membros",
enableAgent: "Activar o axente da crew",
enableTreasury: "Activar a tesourería da crew",
failed: "Fallou",
founded: "Fundada (ano)",
geolocationUnsupported: "Xeolocalización non compatible",
gettingLocation: "Obtendo...",
goalHint: "Asegúrate de que o teu perfil de Nostr ten unha dirección Lightning (lud16) para que cheguen as contribucións.",
goalPlaceholder: "p. ex. Formigonar o spot DIY",
goalTarget: "Obxectivo (sats)",
goalWhat: "Cal é o obxectivo?",
homeSpots: "Spots de casa",
homeSpotsDesc: "Liga os spots que frecuenta a túa crew — conectarán coa túa crew no mapa",
homeTurf: "Zona de casa (cidade / área)",
homeTurfPlaceholder: "Bristol, Reino Unido",
instagramDetected: "Clip de Instagram detectado",
invalidMember: "Introduce un npub, nprofile ou pubkey hex válido.",
latitude: "Latitude",
leaveBlankLocation: "Deixa en branco para manter a localización actual da zona de casa.",
links: "Ligazóns",
locationError: "Erro de localización",
locationFound: "Localización atopada",
logoAlt: "Crew",
logoHint: "Un logotipo fai que a túa crew se recoñeza ao instante no mapa e nos feeds. O cadrado funciona mellor.",
logoLabel: "Logotipo / foto da crew",
logoUploaded: "Logotipo subido",
longitude: "Lonxitude",
looksGood: "Vese ben",
makeAdmin: "Facer admin",
mapPin: "Alfinete no mapa",
mapPinHint: "Pon a túa crew no mapa para que a xente de alí te atope. Toca o botón — sen escribir nada.",
memberAlreadyAdded: "Ese membro xa está engadido.",
members: "Membros",
membersDesc: "Engade as contas de Nostr da túa crew. Cada membro confirma coa súa propia chave — ata entón aparecen como “pendentes”.",
musicLink: "Ligazón á música",
nameCrew: "Ponlle nome á túa crew",
nameCrewDesc: "Unha crew precisa un nome antes de continuar.",
nameCrewFirst: "Ponlle nome á túa crew primeiro",
nameHint: "O único que realmente necesitas. Podes cambialo despois.",
namePlaceholder: "p. ex. Backyard Bandits",
nameRequired: "Nome obrigatorio",
nameRequiredDesc: "Dálle un nome á túa crew.",
nip05DescA: "Un identificador verificable que controlas en calquera dominio, p. ex.",
nip05DescB: ". Verifícase contra a chave do fundador desta crew e podes engadir varios — cada un mostra unha marca verde cando o seu dominio o confirma.",
nip05Label: "NIP-05 da crew",
nip05Placeholder: "crew@yourdomain.com",
nip05Add: "Engadir",
nip05Invalid: "Introduce un identificador como crew@yourdomain.com",
nip05TooMany: "Podes engadir ata {{count}} identificadores.",
nip05Unverified: "Sen comprobar",
nip05Remove: "Quitar {{handle}}",
notAKeyA: "Iso aínda non parece unha chave de Nostr — pega un",
notAKeyB: ",",
notAKeyC: "ou pubkey hex.",
onlyYouTubeInstagram: "Só se admiten ligazóns de YouTube e Instagram.",
openCall: "Convocatoria aberta",
openCallDescA: "Buscas un filmer, editor ou sangue novo? Fai unha convocatoria — móstrase na páxina da túa crew para que xente compatible de",
openCallDescB: "poida contactar.",
optional: "· opcional",
optionalParen: "(opcional)",
otherSocials: "Outras redes",
otherSocialsDesc: "Engade todas as que queiras — YouTube, TikTok, Discord, Telegram, etc.",
ownVisibility: "a súa propia visibilidade",
progress: "Progreso",
publicWord: "Público",
publishedToScene: "Publicado na escena.",
publishFailed: "Non se puido publicar",
publishing: "Publicando...",
ready: "Listo",
readyToRollA: "Todo listo — toca",
readyToRollB: "cando queiras.",
removeAdminRole: "Quitar o rol de admin",
removeMember: "Quitar membro",
removeSocial: "Quitar ligazón social",
removeVibe: "Quitar {{vibe}}",
roles: "Roles:",
sasquatch: "Sasquatch",
saveCrew: "Gardar crew",
skipToEnd: "Ir ao final",
socialPlaceholder: "@usuario ou ligazón",
sponsorDesc: "Se unha tenda local apoia a túa crew, escóllea aquí para mostrar unha faixa de “Patrocinado por” que liga á súa tenda.",
stepAria: "Paso {{step}}: {{title}}",
stepBasics: "O básico",
stepBasicsShort: "Básico",
stepBasicsHint: "Só o esencial — podes crear unha crew con este paso.",
stepVibe: "Identidade e estilo",
stepVibeShort: "Estilo",
stepVibeHint: "Como aparece a túa crew pola app. Todo opcional.",
stepSquad: "Equipo e spots",
stepSquadShort: "Equipo",
stepSquadHint: "Engade a túa xente e a túa zona de casa. Sempre podes facelo despois.",
stepExtras: "Extras",
stepExtrasShort: "Extras",
stepExtrasHint: "Extras para despois — salta o que non teñas claro.",
extrasAllOptional: "Todo neste paso é opcional.",
groupIdentity: "Identidade",
groupIdentityHint: "Identificador, ligazóns",
groupAi: "Sasquatch AI",
groupShowcase: "Vitrina",
groupPayments: "Pagamentos e tesourería",
groupIntegrations: "Integracións",
groupAdvanced: "Avanzado",
groupAdvancedHint: "experimental",
pro: "Pro",
agentProNote: "Con tecnoloxía de Sasquatch. Pro usa os mellores modelos; sen Pro usa un de reserva gratuíto.",
stepOf: "Paso {{step}} de {{total}}",
treasuryDescA: "Reúne sats para un obxectivo común — arranxar o spot DIY local, unha viaxe da crew, un bote para premios dunha competición. É un obxectivo Lightning transparente; os zaps van",
treasuryDescStrong: "directos á túa carteira",
treasuryDescB: "(a través da dirección Lightning do teu perfil). SkateSpots nunca retén os fondos.",
upload: "Subir",
uploadFailed: "Erro ao subir",
useCurrentLocation: "Usar a localización actual",
vibeLabel: "Estilo / foco",
videoDescA: "A part completa da túa crew, unha montaxe ou o último clip. Pega unha ligazón de",
videoDescB: "— reproducirase na mesma páxina da túa crew.",
visibilityDescA: "Cada membro controla a súa",
visibilityDescB: "— cando confirman coa súa chave poden escoller",
visibilityDescC: "(agochados para os de fóra). Non o podes definir por eles; é decisión súa.",
website: "Web",
yourRoles: "Os teus roles (xefe de equipo)",
youtubeDetected: "Vídeo de YouTube detectado",
invalidUrl: "Introduce unha ligazón válida (p. ex. https://example.com)."
},
groupConversation: {
seoTitle: "Chat de grupo - SkateSpots",
invalidLink: "Esta ligazón de chat de grupo non é válida.",
loginTitle: "Inicia sesión para ver este grupo",
secureSignerTitle: "Cómpre un firmante seguro",
secureSignerDesc: "As mensaxes de grupo necesitan un firmante compatible con NIP-44.",
encryptedGroup: "Grupo cifrado de extremo a extremo",
empty: "Aínda non hai mensaxes — saúda ao grupo.",
placeholder: "Escribe ao grupo..."
},
hero: {
established: "Est. {{year}}",
teamLeader: "Xefe de equipo: {{name}}",
ledBy: "Liderada por"
},
inviteCard: {
acceptedTitle: "Convite aceptado 🛹",
acceptedDesc: "O fundador da crew confirma os membros en {{crew}}. Aparecerás na lista cando te aprobe.",
couldNotAccept: "Non se puido aceptar",
couldNotDecline: "Non se puido rexeitar",
acceptedDone: "Aceptado —",
confirmsMembers: "confirma os membros",
declinedDone: "Rexeitaches o convite a {{crew}}",
invitedYou: "convidoute a unirte",
admin: "Admin",
accept: "Aceptar",
decline: "Rexeitar"
},
inviteDialog: {
messageIntro: "Ola — únete á crew {{crew}} en SkateSpots 🛹",
messageBody: "Inicia sesión coa túa chave de Nostr e despois solicita unirte desde a páxina da crew.",
copyFailed: "Erro ao copiar",
shareTitle: "Únete a {{crew}}",
sentTitle: "Convite enviado! 🛹",
sentDesc: "Recibirá unha notificación para aceptar ou rexeitar.",
couldNotSend: "Non se puido enviar o convite",
trigger: "Convidar",
title: "Convidar a {{crew}}",
description: "Envia un convite á chave de Nostr de alguén ou comparte unha ligazón.",
sendTab: "Enviar convite",
shareTab: "Compartir ligazón",
npubLabel: "npub do skater",
invalidNpub: "Iso non parece un npub válido.",
noteLabel: "Nota",
optional: "(opcional)",
notePlaceholder: "Vén patinar connosco…",
inviteAsAdmin: "Convidar como admin",
inviteAsAdminDesc: "Pode xestionar a crew e convidar a outros.",
sendButton: "Enviar convite",
sendFooter: "Recibirá unha notificación para aceptar ou rexeitar. A membresía só conta cando acepte.",
inviteLink: "Ligazón de convite",
messageLabel: "Mensaxe",
copyMessage: "Copiar mensaxe",
founderHint: "Como fundador tamén podes engadir directamente a chave dun membro; despois el confirma.",
addMemberSettings: "Engadir membro nos axustes da crew"
},
joinRequest: {
moreCount: "+{{count}} máis",
addedTitle: "Engadiches {{name}} a {{crew}} 🛹",
addedDesc: "Confirmará desde o seu lado para aparecer como membro.",
vouchedTitle: "Avalaches a {{name}} 🤝",
vouchedDesc: "O fundador de {{crew}} verá o teu aval e poderá engadilo.",
couldNotEndorse: "Non se puido avalar",
endorsedDoneA: "Avalaches a",
endorsedDoneB: "— o fundador confirmará",
vouchedBy: "Avalado por",
approveAndAdd: "Aprobar e engadir",
addToCrew: "Engadir á crew",
vouchedWaiting: "Avalado — agardando polo fundador",
vouchForThem: "Dálle o teu aval",
leadershipOnly: "Só para a dirección da crew.",
adminHelp: "Os admins non poden engadir membros directamente — ao avalar, o fundador sabe que apoias a este rider."
},
leadership: {
teamLeader: "Xefe de equipo",
captain: "Capitán",
verifiedMember: "Membro verificado",
messageName: "Escribe a {{name}}",
title: "Dirección",
captainsOne: "{{count}} capitán",
captainsMany: "{{count}} capitáns",
footer: "O xefe de equipo leva a lista; os capitáns axudan a convidar, organizar jams e manter a crew en orde."
},
linkField: {
title: "Crew ligada",
description: "Tamén levas unha crew? Lígaa para que a xente poida saltar entre o teu estudio e a túa crew. Opcional. Liga esta crew de volta ao perfil desde o editor da crew e aparecerá un",
descriptionRest: "distintivo verde en ambos.",
none: "Aínda non tes ningunha crew. Crea unha na páxina de crews para ligala aquí.",
linkedCrew: "Crew ligada ({{id}})"
},
lookingFor: {
title: "Convocatoria aberta",
subtitle: "Esta crew busca:"
},
memberVisibility: {
updatedTitle: "Visibilidade actualizada",
updatedCrew: "Agora só apareces ante os compañeiros de crew.",
updatedPublic: "Agora apareces publicamente nesta crew.",
couldNotUpdate: "Non se puido actualizar",
title: "A túa visibilidade nesta crew",
save: "Gardar visibilidade"
},
newMessage: {
inCrew: "Na túa crew: {{crews}}",
crewmate: "Compañeiro de crew",
following: "Seguindo",
invalidKey: "Iso non parece un npub ou unha chave pública válida.",
description: "Busca a túa xente polo nome ou pega un npub para escribir a calquera. Selecciona dous ou máis para crear un grupo.",
searchPlaceholder: "Busca un nome ou pega npub1...",
messageThisKey: "Escribir a esta chave",
loadingPeople: "Cargando a túa xente...",
noPeople: "Aínda non hai compañeiros de crew nin seguidores.",
noPeopleHint: "Pega o npub de alguén arriba para comezar unha conversa.",
yourCrews: "As túas crews",
selected: "{{count}} seleccionados",
startGroup: "Crear grupo ({{count}})",
message: "Mensaxe"
},
nip05: {
mismatch: "Este dominio apunta o identificador a unha chave de Nostr distinta da do fundador da crew. Non verificado.",
verified: "Verificado — o dominio confirma que este identificador pertence á chave do fundador da crew."
},
requestCollective: {
sentTitle: "Solicitude enviada 🤝",
sentDesc: "{{name}} veráa nas súas notificacións e poderá engadirte.",
couldNotSend: "Non se puido enviar a solicitude",
title: "Únete a este colectivo",
waiting: "Solicitude enviada — agardando por {{name}}.",
askA: "Pídeslle á crew detrás de",
askB: "que te engada á lista. Recibirá unha notificación e poderá engadirte cun toque.",
placeholder: "Opcional: di por que encaixarías…",
sendButton: "Enviar solicitude"
},
requestToJoin: {
sentTitle: "Solicitude enviada! 🛹",
sentDesc: "A dirección de {{crew}} veráa nas súas notificacións.",
couldNotSend: "Non se puido enviar a solicitude",
trigger: "Solicitar unirte",
title: "Únete a {{crew}}",
description: "Notifica ao fundador e aos admins da crew para que poidan engadirte.",
placeholder: "Saúda — onde patinas, a quen coñeces, por que queres entrar…",
sending: "Enviando…",
sendButton: "Enviar solicitude de unión"
},
sponsorBanner: {
loading: "Cargando patrocinador…",
sponsoredBy: "Patrocinado por"
},
sponsorPicker: {
selected: "Patrocinador seleccionado",
setLoading: "Patrocinador definido (cargando a tenda…)",
set: "Patrocinador definido",
clearAria: "Borrar patrocinador",
searchPlaceholder: "Buscar tendas de skate por nome ou cidade…",
loading: "Cargando tendas…",
noMatch: "Ningunha tenda coincide — proba outra busca.",
none: "Aínda non se atoparon tendas."
},
treasury: {
title: "Tesourería da crew",
ofGoal: "de {{target}} de obxectivo",
goalReached: "Obxectivo acadado!",
funded: "{{percent}}% financiado",
contributionOne: "{{count}} contribución",
contributionMany: "{{count}} contribucións",
daysLeft: "{{days}} d restantes",
closed: "pechada",
nonCustodial: "Non custodial · os zaps van directos á carteira Lightning da crew"
},
userStatus: {
atSpot: "📍 Nun spot",
autoClears: "⏱️ Bórrase automaticamente en {{min}} min"
},
video: {
title: "A part",
fullVideo: "Vídeo completo · montaxe",
latestClip: "Último clip",
watch: "Ver",
iframeTitle: "{{crew}} — vídeo",
playAria: "Reproducir o vídeo de {{crew}}",
thumbAlt: "Miniatura do vídeo de {{crew}}",
instagramTitle: "Clip de Instagram"
},
vouch: {
removedTitle: "Aval retirado",
vouchedTitle: "Avalado!",
removedDesc: "Xa non avalas a {{name}}.",
vouchedDesc: "Avalaches a {{name}}. A escena confía nos seus.",
couldNotVouch: "Non se puido avalar",
title: "Avals da escena",
sceneVerified: "Verificado pola escena",
vouched: "Avalado",
newUnvouched: "Novo · sen aval",
checking: "Comprobando a escena…",
empty: "Aínda non hai avais. Os avais de skaters dos teus círculos son o mellor sinal de que alguén é de verdade — non un descoñecido que apareceu por aí.",
countOne: "{{count}} aval",
countMany: "{{count}} avais",
trusted: "{{count}} de skaters da túa rede de confianza",
remove: "Retirar aval",
vouchFor: "Avalar a {{name}}",
ownerNote: "Os skaters que coñecen o teu traballo poden avalarte aquí."
}
},
labelsUi: {
spotCategory: {
street: {
label: "Rúa",
description: "Spots achados ao azar, terreo urbano"
},
transition: {
label: "Transición",
description: "Superficies curvas ou con ramplas"
},
park: {
label: "Parque",
description: "Skateparks construídos"
},
plaza: {
label: "Praza",
description: "Prazas urbanas (como MACBA, Love Park)"
}
},
spotFeature: {
wallrides: "Wallrides",
stairs: "Escaleiras e pasamáns",
rails: "Rails",
ledges: "Ledges e bordos",
gaps: "Gaps",
flatground: "Chan plano",
"manual-pads": "Rampas de manual",
"half-pipes": "Half pipes",
"quarter-pipes": "Quarter pipes",
"mini-ramps": "Mini rampas",
bowls: "Bowls",
vert: "Rampas vert",
"mega-ramps": "Megarrampas",
hubbas: "Hubbas",
"euro-gaps": "Euro gaps",
banks: "Bancos",
"spine-ramps": "Rampas spine",
"roll-ins": "Roll-ins",
hips: "Hips",
volcano: "Volcán",
pyramids: "Pirámides / funboxes",
"snake-runs": "Snake runs",
"pump-track": "Pump track rollers",
"flat-bars": "Barras planas"
},
spotType: {
street: "Rúa",
transition: "Transición",
park: "Parque",
plaza: "Praza",
wallrides: "Wallrides",
stairs: "Escaleiras e pasamáns",
rails: "Rails",
ledges: "Ledges e bordos",
gaps: "Gaps",
flatground: "Chan plano",
"manual-pads": "Rampas de manual",
"half-pipes": "Half pipes",
"quarter-pipes": "Quarter pipes",
"mini-ramps": "Mini rampas",
bowls: "Bowls",
vert: "Rampas vert",
"mega-ramps": "Megarrampas",
hubbas: "Hubbas",
"euro-gaps": "Euro gaps",
banks: "Bancos",
"spine-ramps": "Rampas spine",
"roll-ins": "Roll-ins",
hips: "Hips",
volcano: "Volcán",
pyramids: "Pirámides / funboxes",
"snake-runs": "Snake runs",
"pump-track": "Pump track rollers",
"flat-bars": "Barras planas",
diy: "DIY",
rail: "Rail",
ledge: "Ledge",
gap: "Gap",
bowl: "Bowl",
stall: "Stall",
slappy: "Slappy"
},
access: {
public: {
label: "Público - Aberto a todos"
},
private: {
label: "Propiedade privada - Cómpre permiso"
},
locals: {
label: "Pregunta primeiro á xente de alí"
}
},
shelter: {
outdoor: {
label: "Ao aire libre",
short: "Exterior",
description: "Totalmente exposto — a choiva para a sesión"
},
partial: {
label: "Parcialmente cuberto",
short: "Parcial",
description: "Algúns obstáculos quedan secos"
},
covered: {
label: "Cuberto / con teito",
short: "Cuberto",
description: "Ao aire libre pero baixo teito"
},
indoor: {
label: "Interior",
short: "Interior",
description: "Totalmente pechado — patina chova ou faga sol"
}
},
eventType: {
contest: "Competición",
demo: "Demo",
session: "Sesión",
workshop: "Obradoiro",
premiere: "Estrea",
tradeshow: "Feira comercial",
gameskate: "Xogo de Skate",
concert: "🎸 Concerto",
jam: "🎵 Jam",
festival: "🎪 Festival",
popup: "🎯 Pop-up"
},
gearCategory: {
deck: "Táboa",
trucks: "Eixes",
wheels: "Rodas",
bearings: "Rodamentos",
shoes: "Zapatillas de skate",
clothing: "Roupa",
protective: "Protección",
stickers: "Pegatinas",
wax: "Cera",
tools: "Ferramentas",
griptape: "Lixa",
rubbrick: "Rub brick"
},
gearCondition: {
new: {
label: "Novo",
description: "Nunca usado, aínda na caixa"
},
like_new: {
label: "Como novo",
description: "Apenas usado, en excelente estado"
},
good: {
label: "Bo",
description: "Desgaste normal, funciona perfectamente"
},
well_used: {
label: "Moi usado",
description: "Amosa desgaste pero segue funcionando"
}
},
priceType: {
fixed: {
label: "Prezo fixo",
description: "Prezo establecido en USD ou sats"
},
free: {
label: "De balde",
description: "Regalando"
},
trade: {
label: "Intercambio",
description: "Busca cambiar"
},
offer: {
label: "Fai unha oferta",
description: "Prezo negociable"
}
},
listingType: {
selling: {
label: "Venda",
description: "Anuncio de equipamento á venda"
},
wtb: {
label: "Busco",
description: "Busca equipamento concreto"
}
},
tour: {
spotType: {
street: "Rúa",
park: "Parque",
diy: "DIY",
transition: "Transición",
hidden: "Xoias agochadas"
},
category: {
local: {
label: "Tour local",
description: "Amosa spots agochados na túa cidade"
},
national: {
label: "Tour nacional",
description: "Viaxes por varias cidades do país"
},
international: {
label: "Tour internacional",
description: "Aventuras transfronteirizas por varios países"
},
destruction: {
label: "World Destruction",
description: "Competición global por equipos estilo KOTR"
}
}
},
crew: {
vibe: {
street: "Rúa",
transition: "Transición / Vert",
park: "Parque",
diy: "DIY",
cruising: "Paseo / Gravación",
oldschool: "Old school",
allterrain: "Todo terreo",
girls: "Rapaza / Muller",
youth: "Xuventude / Groms",
adaptive: "Adaptado",
punk: "Punk",
hiphop: "Rap / Hip-hop"
},
focus: {
mixed: "Mixto / xeral",
builder: "DIY e construtores",
photo: "Foto e vídeo",
coaching: "Adestramento",
art: "Arte e deseño",
music: "Banda e música",
wellness: "Adestramento e fisio"
},
focusDescription: {
mixed: "Unha crew de skate normal — só aparece na páxina de crews.",
builder: "Unha crew de DIY / construción de parques — tamén aparece en The Lab en Construtores.",
photo: "Unha crew de gravación, fotografía ou edición — tamén aparece en The Lab en Foto e vídeo.",
coaching: "Unha crew de adestramento / clases — tamén aparece en The Lab en Adestramento.",
art: "Un colectivo de arte, deseño, graffiti ou tatuaxe — tamén aparece en The Lab en Arte e deseño.",
music: "Unha banda ou colectivo musical — tamén aparece en The Lab en Música.",
wellness: "Unha crew de adestramento, fitness ou fisio — tamén aparece en The Lab en Adestramento."
},
lookingFor: {
filmer: "Filmer",
photographer: "Fotógrafo",
editor: "Editor de vídeo",
coach: "Adestrador",
builder: "Construtor de ramplas",
artist: "Artista / deseñador",
musician: "Músico / banda",
members: "Novos membros"
},
role: {
filmer: "Filmer",
photographer: "Fotógrafo",
editor: "Editor",
coach: "Adestrador",
builder: "Construtor",
artist: "Artista",
graffiti: "Graffiti",
tattoo: "Tatuaxe",
trainer: "Preparador",
musician: "Músico",
judge: "Xuíz",
manager: "Xestor de equipo",
og: "OG"
}
},
memberVisibility: {
public: {
label: "Público",
description: "Calquera pode verte nesta crew — na páxina pública da crew e no descubrimento de compañeiros."
},
crew: {
label: "Só crew",
description: "Só os compañeiros confirmados e o fundador te ven aquí. Para todos os demais apareces como un “membro agochado” anónimo. Nota: isto é privacidade a nivel de app — a túa etiqueta de membresía segue a existir publicamente nos relays, só que nunca se mostra aos de fóra."
}
},
tagCategory: {
features: {
name: "Características",
description: "Obstáculos e terreo"
},
surfaces: {
name: "Superficies",
description: "Materiais e texturas"
},
sizes: {
name: "Tamaños",
description: "Dimensións e escala"
},
stairs: {
name: "Número de escaleiras",
description: "Cantidade de escaleiras"
},
vibes: {
name: "Ambiente",
description: "Atmósfera e estado"
},
location: {
name: "Localización",
description: "Contexto da localización"
},
tricks: {
name: "Trucos",
description: "Bos para trucos concretos"
}
},
spotTagCategory: {
street: {
label: "Rúa",
description: "Spots de rúa - escaleiras, rails, ledges"
},
park: {
label: "Parque",
description: "Skateparks - públicos ou privados"
},
diy: {
label: "DIY",
description: "Spots DIY / feitos á man"
},
plaza: {
label: "Praza",
description: "Prazas públicas con arquitectura amigable para patinar"
}
},
status: {
active: {
label: "Activo",
description: "Todo ben — pata nel."
},
bust: {
label: "Bust",
description: "Alto risco de botar fóra — seguridade ou policía."
},
skate_stopped: {
label: "Skate-stopped",
description: "Con tacos ou tapado, pero parcialmente patinable."
},
closed: {
label: "Pechado",
description: "Pechado temporalmente — obras ou evento."
},
gone: {
label: "Desaparecido",
description: "Demolido, asfaltado ou valado para sempre."
}
},
price: {
free: "GRATIS",
trade: "Intercambio",
makeOffer: "Fai unha oferta",
offer: "Oferta"
}
},
cardUi: {
save: "Gardar tarxeta en Nostr",
saved: "Tarxeta gardada",
savedDesc: "A túa tarxeta está asinada e é verificable.",
saveFailed: "Non se puido gardar a tarxeta",
notPublished: "Sen publicar",
titleNeon: "Tarxeta",
titleRest: "Rider",
saveFrontPng: "Gardar a parte frontal (PNG)",
expired: "CADUCADA",
logoUploaded: "Logotipo subido",
logoUploadFailed: "Non se puido subir o logotipo",
venue: "Local ligado (opcional)",
venueNone: "Sen local",
venueHint: "Escolle un dos teus spots para vincular este pase a un local. Un verificador confirmará que é teu.",
venuePick: "Escolle o teu local",
parkNoVenue: "O dono do local é o único que pode emitir un pase de Parque — primeiro marca un spot que sexa teu.",
parkAddVenue: "Engadir un spot",
parkNeedsVenue: "Escolle un local que sexa teu",
parkIssued: "Pases emitidos",
parkRevoke: "Revogar",
parkRevoked: "Revogado",
parkRevokeFailed: "Non se puido revogar",
v: {
valid: "Válido",
validDesc: "Sinatura válida e emitida polo local.",
expired: "Caducado",
expiredDesc: "Pasou a súa data de validez.",
revoked: "Revogado",
revokedDesc: "O emisor cancelou este pase — non o aceptes.",
invalid: "Non válido",
invalidDesc: "A sinatura non se verifica. Non confíes nel.",
notFound: "Non atopado",
notFoundDesc: "Non hai ningún rexistro coincidente nos relays.",
unverifiedIssuer: "Emisor non verificado",
unverifiedIssuerDesc: "Este pase nomea un local que non pertence á chave do emisor.",
notBound: "Sen vincular",
notBoundDesc: "Sen vínculo a un local — non demostra nada sobre o acceso.",
noRsvp: "Sen RSVP",
noRsvpDesc: "O portador non ten ningún RSVP rexistrado para este evento.",
admitted: "Admitido",
admittedDesc: "Evento do organizador e o portador confirmou asistencia.",
noHolder: "Sen portador na ligazón",
noHolderDesc: "Este QR non ten portador de entrada (`?h=`), así que non se pode comprobar o portador."
},
passes: {
tab: "Os meus pases",
pass: "Pase de acceso",
none: "Aínda non hai pases. Cando un local ou organizador che emita un, aparecerá aquí."
},
facets: {
title: "Mostrar facetas de identidade",
crews: "Crews",
local: "Local",
roles: "Roles do Lab"
},
roles: {
coach: "Adestrador",
filmer: "Filmer",
editor: "Editor",
photographer: "Fotógrafo",
builder: "Construtor",
artist: "Artista",
graffiti: "Graffiti",
tattoo: "Tatuaxe",
trainer: "Preparador",
musician: "Músico",
judge: "Xuíz",
organizer: "Organizador",
barber: "Barbeiro"
},
crew: {
crewCard: "TARXETA DE CREW",
crewSub: "A túa crew, nunha tarxeta",
pick: "Escolle unha crew",
none: "Aínda non estás en ningunha crew — únete ou crea unha primeiro.",
hint: "A tarxeta constrúese cos datos asinados da propia crew. Edita a crew na súa páxina para cambiala.",
members: "MEMBROS",
spots: "SPOTS",
est: "Est. {{year}}",
openCall: "Convocatoria aberta",
verifiedCrew: "Crew verificada",
viewCrew: "Ver a crew"
},
event: {
pass: "PASE DE EVENTO",
passSub: "Un pase para un evento ao que vas",
pick: "Escolle un evento",
none: "Aínda non hai eventos — crea un ou confirma asistencia primeiro.",
hint: "O pase constrúese cos datos asinados do propio evento. Só o organizador pode cambialo.",
admits: "ADMITE",
going: "{{count}} asistindo",
verifiedEvent: "Evento verificado",
viewEvent: "Ver o evento",
issuePass: "Emitir un pase de acceso",
issuePassBtn: "Emitir pase",
issuePassHint: "Un pase asinado para unha persoa concreta — móstrao na porta.",
notOrganiser: "Só o organizador pode emitir pases",
passIssued: "Pase emitido",
issueFailed: "Non se puido emitir o pase",
issuedPasses: "Pases de acceso emitidos"
},
studio: {
unsaved: "Cambios sen gardar",
saved: "Gardado",
saveChanges: "Gardar cambios",
allSaved: "Gardado — todo ao día",
showOnCard: "Mostrar na tarxeta",
derived: "Do teu perfil de Skater",
noSkaterProfile: "Aínda non hai perfil de Skater —",
editSkaterProfile: "engade os teus estilos e nivel",
noPhoto: "Aínda non hai foto de perfil —",
addPhoto: "engade unha no teu perfil",
finishTitle: "Remata a túa tarxeta",
finishDesc: "Unha foto e un perfil de Skater fan que pareza real.",
checkPhoto: "Foto de perfil",
checkName: "Nome visible",
checkProfile: "Estilos e nivel",
checkCrew: "Únete a unha crew",
moreTypes: "Desbloquéanse máis tipos de tarxeta a medida que marcas spots teus, te unes a crews ou confirmas asistencia a eventos.",
accent: "Cor de acento",
accentHint: "Substitúe a cor de acento do tema",
accentClear: "Usar a cor do tema",
logo: "Logotipo / escudo personalizado",
logoAdd: "Subir",
logoChange: "Cambiar",
logoClear: "Quitar"
},
back: {
title: "Parte traseira imprimible",
desc: "Crews, roles, patrocinadores e ligazóns no reverso",
showBack: "Ver a parte traseira",
showFront: "Ver a parte frontal",
empty: "Aínda non hai nada — engade crews, roles ou patrocinadores."
},
verify: {
checking: "Comprobando a tarxeta…",
notFound: "Tarxeta non atopada",
notFoundDesc: "Non se atopou ningún evento coincidente nos relays. Pode que se eliminase ou que a ligazón estea mal.",
invalid: "Sinatura non válida",
invalidDesc: "Este evento existe pero a súa sinatura non se verifica. Non confíes nel.",
authentic: "Auténtica",
authenticDesc: "A sinatura do emisor é válida.",
kind: "Tipo",
kindPark: "Tarxeta de acceso a parque",
kindRider: "Tarxeta de rider",
kindCrew: "Tarxeta de crew",
kindEvent: "Pase de evento",
organiser: "Organizador",
expired: "Caducada",
valid: "Válida",
holder: "Portador",
ticketHolder: "Portador da entrada",
rsvp: "RSVP",
rsvpGoing: "Asistindo",
rsvpInterested: "Interesado",
rsvpNone: "Non se atopou RSVP",
revoked: "Pase revogado",
revokedDesc: "O emisor cancelou este pase — non o aceptes.",
issuedBy: "Emitido por",
accessLevel: "Nivel de acceso",
validThru: "Válido ata",
selfIssued: "Estado",
selfIssuedDesc: "Tarxeta de identidade autoemitida",
venue: "Local",
venueVerified: "Verificado — a chave do dono deste local coincide co emisor.",
venueMismatch: "Este pase nomea un local que non pertence á chave do emisor.",
venueNone: "Sen vínculo a un local.",
viewCard: "Ver a tarxeta",
disclaimer: "Unha sinatura válida demostra quen asinou esta tarxeta — non é proba de habilidade nin de dereitos de acceso máis alá do que emitiu o local.",
details: "Detalles",
invalidLink: "Ligazón non válida",
invalidLinkDesc: "Iso non parece unha ligazón de tarxeta válida."
},
public: {
invalid: "Iso non parece unha ligazón de tarxeta válida.",
createYourOwn: "Crea a túa propia tarxeta",
editYourCard: "Edita a túa tarxeta",
backToEditor: "Volver ao editor",
backHome: "Volver ao inicio",
notCustomised: "Este skater aínda non personalizou a súa tarxeta — este é o aspecto por defecto.",
verifyNote: "Escanea o QR da tarxeta para verificala."
}
},
routeUi: {
destination: "Destino",
routeTo: "Ruta a {{label}}",
routeToLabel: "Ruta a",
search: "Buscar",
description: "Opcións de ruta e indicacións na app.",
routeMapAria: "Mapa da ruta",
findingLocation: "Buscando a túa localización…",
plottingRoute: "Trazando a túa ruta…",
refiningLocation: "Axustando a localización…",
offlineSavedRoute: "Fóra de liña · ruta gardada {{age}}",
tapMapStart: "Toca o mapa para marcar o punto de inicio",
fitRouteAria: "Axustar toda a ruta no mapa",
wholeRoute: "Ruta completa",
next: "Seguinte",
nextStep: "Seguinte · paso {{n}}",
followTheLine: "Segue a liña",
toTheTurn: "ata o xiro",
toGo: "por percorrer",
tryAgain: "Tentar de novo",
mode: {
foot: "Skate / a pé",
bike: "Bici",
moto: "Moto",
car: "Coche",
transit: "Transporte público"
},
from: "Desde",
myLocation: "A miña localización",
tapTheMap: "Toca o mapa…",
chooseOnMap: "Escoller no mapa",
direct: "directo",
transferOne: "1 transbordo",
transfers: "{{count}} transbordos",
options: "{{count}} opcións",
ride: "trayecto",
arrive: "chegada",
speedAvg: "{{speed}} km/h de media",
stepsCount: "{{count}} pasos",
onABoard: "nunha táboa",
usesDrivingRoads: "usa estradas para coches",
drivingEstimate: "estimación en coche",
updating: "actualizando…",
pickMode: "Escolle un modo para ver a túa ruta.",
waitingLocation: "Agardando pola túa localización…",
routeSteps: "Pasos da ruta",
walkingRoute: "ruta a pé — máis rápida nunha táboa",
planningView: "Vista de planificación — toca Iniciar para seguir con xiros en directo, voz e chegada.",
leaveNow: "Saír agora",
departAt: "Saír ás",
arriveBy: "Chegar antes das",
departureTime: "Hora de saída",
arrivalTime: "Hora de chegada",
only: "Só",
clear: "limpar",
itinerary: "Itinerario",
group: {
bus: "Autobús",
tram: "Tranvía",
metro: "Metro",
train: "Tren",
ferry: "Ferry"
},
walk: "A pé",
rideVerb: "Montar",
walkLower: "a pé",
rideLower: "montar",
toStop: "a",
track: "vía {{track}}",
stopOne: "1 parada",
stopsCount: "{{count}} paradas",
tickets: "billetes ↗",
done: "Feito",
stop: "Parar",
start: "Iniciar",
arrived: "Chegaches. 🛹",
voiceOnNote: "A pantalla queda acendida · voz activada — os xiros e a chegada sóen.",
voiceOffNote: "A pantalla queda acendida · voz desactivada.",
followNote: "Xiros, voz e chegada mentres rolas. Mantén a pantalla acendida.",
voiceOffAria: "Desactivar a guía por voz",
voiceOnAria: "Activar a guía por voz",
voiceStart: "Iniciando a navegación",
voiceArrived: "Chegaches",
voiceIn: "En {{metres}} metros, {{instruction}}",
voiceContinue: "continúa",
voiceContinueCaps: "Continúa",
errPermissionDenied: "Permiso de localización denegado.",
errWaitingGps: "Agardando unha fixación GPS…",
errPermissionDeniedLong: "Permiso de localización denegado. Activa a localización para trazar a ruta desde onde estás.",
errNoLocation: "Non se puido obter a túa localización. Téntao de novo.",
errNoLocationShort: "Non se puido obter a túa localización.",
errTransitNoRouteFiltered: "Non hai ruta para esa hora ou modo de transporte — proba outra hora ou inclúe máis modos.",
errTransitNoRoute: "Non se atopou ningunha ruta de transporte público aquí — pode que esta zona non publique horarios abertos.",
errTransitUnreachable: "Non se puido acceder ao servizo de transporte. Comproba a conexión e téntao de novo.",
errRoutingBusy: "O servizo de rutas está ocupado agora mesmo — téntao de novo nun intre.",
errNoRouteMode: "Non hai ruta para este modo — pode que o destino estea fóra da rede viaria. Proba outro modo.",
errRoutingUnreachable: "Non se puido acceder ao servizo de rutas. Comproba a conexión e téntao de novo.",
departures: "Saídas",
upcomingFrom: "Próximas saídas desde {{stop}}",
loadingDepartures: "Cargando saídas…",
noDepartures: "Non se atoparon próximas saídas nesta parada.",
live: "en directo",
cancelled: "cancelada",
refresh: "Actualizar",
tripLoginTitle: "Inicia sesión para gardar",
tripLoginDesc: "Inicia sesión para gardar esta viaxe como Colección.",
tripCollectionTitle: "Viaxe de skate a {{destination}} 🛹",
tripCollectionDesc: "Plan de viaxe de The Sasquatch — {{count}} días en {{destination}}.",
tripCollectionDescOne: "Plan de viaxe de The Sasquatch — {{count}} día en {{destination}}.",
tripSavedTitle: "Gardada en Coleccións 🦧",
tripSavedDesc: "A túa viaxe a {{destination}} está marcada.",
tripSaveFailed: "Non se puido gardar",
tripSaveFailedDesc: "Téntao de novo nun segundo.",
daysInDestinationOne: "{{count}} día en {{destination}}",
daysInDestination: "{{count}} días en {{destination}}",
wetForecast: "Previsión de choiva — busca unha crew local para opcións cubertas ou baixo teito.",
dayLabel: "Día {{n}}",
freeSkate: "Skate libre — explora e grava. 🎥",
tapToBook: "toca para reservar / zap ⚡",
localCrews: "Crews locais",
saving: "Gardando…",
savedToCollections: "Gardada en Coleccións",
saveSpotOne: "Gardar {{count}} spot nunha Colección",
saveSpots: "Gardar {{count}} spots nunha Colección",
flights: "Voos",
stays: "Aloxamento",
gettingAround: "Como moverse",
noMiddleman: "Eu planifico o skate — os voos e o aloxamento ábrense nos sitios reais (sen KYC, sen intermediarios).",
ageJustNow: "agora mesmo",
ageMinAgo: "hai {{count}} min",
ageHourAgo: "hai {{count}} h",
ageDayAgo: "hai {{count}} d",
skateRightHere: "aquí mesmo",
skateMin: "~{{count}} min rolando",
skateHours: "~{{hours}} h rolando",
maneuver: {
headOut: "Pon en marcha",
arrive: "Chega ao spot",
continueStraight: "Segue recto",
bearLeft: "Desvía á esquerda",
bearRight: "Desvía á dereita",
turnLeft: "Xira á esquerda",
turnRight: "Xira á dereita",
sharpLeft: "Xiro brusco á esquerda",
sharpRight: "Xiro brusco á dereita",
turn: "Xira",
keepLeft: "Mantente á esquerda",
keepRight: "Mantente á dereita",
takeFork: "Colle a bifurcación",
merge: "Incorpórate",
roundabout: "Toma a rotonda",
takeRamp: "Colle a rampla",
takeExit: "Colle a saída"
},
maneuverOnto: "{{instruction}} cara a {{road}}"
}
};
export default batch2;