575 lines
28 KiB
TypeScript
575 lines
28 KiB
TypeScript
/**
|
||
* pt — translation drift fragment. Keys added after the main batches
|
||
* (language picker search, trust, marketplace guidelines, clothing craft,
|
||
* weather additions, Cordn MLS chat). Composed LAST in `index.ts` via a deep
|
||
* merge so these nested keys complement — never replace — the batch namespaces.
|
||
*/
|
||
const drift = {
|
||
nav: {
|
||
searchLanguages: "Buscar idiomas…",
|
||
noLanguages: "Nenhum idioma encontrado",
|
||
},
|
||
mapPage: {
|
||
searchSuggestPlaces: "Lugares",
|
||
},
|
||
mapUi: {
|
||
firstRunTitle: "Comece agora",
|
||
firstRunTip: "Toque em qualquer pino para explorar. Nada para configurar — os spots por perto estão a um toque.",
|
||
firstRunAddSpot: "Adicione seu primeiro spot",
|
||
firstRunJoinCrew: "Entrar em uma crew",
|
||
firstRunStartCrew: "Comece sua crew",
|
||
firstRunWallet: "Configure sua carteira",
|
||
forecastDays: "Previsão de {{count}} dias",
|
||
},
|
||
spotUi: {
|
||
forecastDays: "Previsão de {{count}} dias",
|
||
},
|
||
marketUi: {
|
||
trades: {
|
||
stateRevoked: "revogado",
|
||
stateVerifying: "verificando",
|
||
},
|
||
loadFailed: "Não foi possível alcançar os relays. Verifique sua conexão e tente novamente.",
|
||
statusPending: "pendente",
|
||
offers: {
|
||
closeDeal: "Fechar negócio",
|
||
loadFailed: "Não foi possível carregar as ofertas. Verifique sua conexão e tente novamente.",
|
||
},
|
||
pay: {
|
||
nonSats: "Esta oferta está em {{currency}}. O pagamento no app é apenas em sats. Acerte diretamente com o vendedor.",
|
||
unsupported: "Este código de pagamento (uma solicitação Cashu) ainda não é suportado. Peça ao vendedor uma fatura ou um endereço Lightning.",
|
||
},
|
||
escrowRequest: {
|
||
lockedNotSent: "Os fundos estão bloqueados no escrow e salvos neste dispositivo, mas a solicitação não foi enviada. Reabra o anúncio para tentar de novo. Não pague novamente.",
|
||
mintLabel: "Mint (onde os fundos estão bloqueados)",
|
||
sellerMintHint: "O vendedor prefere este mint; fundos bloqueados aqui são os mais fáceis de ele resgatar.",
|
||
mintHint: "O escrow fica neste mint. O vendedor resgata aqui, então escolha um em que vocês dois confiem.",
|
||
noMints: "Nenhum mint disponível",
|
||
p2pkUnsupported: "Este mint não anuncia suporte a P2PK (NUT-11), então o escrow não pode ser bloqueado aqui. Escolha outro mint.",
|
||
},
|
||
},
|
||
labUi: {
|
||
offerClothing: "Oferecer roupas",
|
||
tabClothing: "Roupas",
|
||
empty: {
|
||
clothingTitle: "Ainda sem designers de roupas",
|
||
clothingBody: "Seja o primeiro a oferecer roupas personalizadas, kits de time e apparel para a cena.",
|
||
transportTitle: "Ainda sem prestadores de transporte",
|
||
transportBody: "Transporta skaters, equipamento ou carga? Anuncie seu carro, van, táxi, bike, helicóptero, avião ou barco.",
|
||
},
|
||
craftFields: {
|
||
sizing: "Faixa de tamanhos",
|
||
samples: "Amostras / protótipos",
|
||
customization: "Personalização",
|
||
capacity: "Capacidade",
|
||
cargo: "Espaço de carga",
|
||
coverage: "Cobertura / rotas",
|
||
availability: "Disponibilidade",
|
||
base: "Área de base",
|
||
accessibility: "Acessibilidade",
|
||
},
|
||
tabTransport: "Transporte",
|
||
filterVehicles: "Veículos",
|
||
filterTransportServices: "Serviços",
|
||
filterCapabilities: "Capacidades",
|
||
filterCapacity: "Capacidade",
|
||
filterCoverage: "Cobertura",
|
||
offerTransport: "Oferecer transporte",
|
||
labLink: {
|
||
transport: "Transporte",
|
||
designer: "Roupas",
|
||
},
|
||
detail: {
|
||
noun: {
|
||
transport: "prestador de transporte",
|
||
},
|
||
skillsTitle: {
|
||
transport: "Veículos e serviços",
|
||
},
|
||
},
|
||
},
|
||
socialUi: {
|
||
coordinator: {
|
||
ourDefaultTitle: "Coordenador do SkateSpots",
|
||
ourDefaultDesc: "O SkateSpots mantém um coordenador em relay.skate-spots.org. Use-o por padrão, ou rode o seu — um coordenador só vê texto cifrado e metadados, nunca suas mensagens.",
|
||
useOurs: "Usar o coordenador do SkateSpots",
|
||
},
|
||
crewCoordinator: {
|
||
encryptedChat: "Chat criptografado",
|
||
privateChatName: "Chat privado",
|
||
privateChatDesc: "Chat de grupo com sigilo persistente (MLS) por meio de um coordenador.",
|
||
privateChatDescFull: "O chat privado é criado uma vez por um admin, depois os membros entram.",
|
||
chatRowDesc: "Todos na crew — selado com a chave de cada membro (NIP-17).",
|
||
openChat: "Abrir",
|
||
setUpChat: "Configurar",
|
||
joinChat: "Entrar",
|
||
checking: "Verificando…",
|
||
openInAnotherApp: "Abrir em outro app",
|
||
openInCordnWeb: "Cordn (web)",
|
||
openCordnGroup: "Abrir o chat da crew",
|
||
copyForStaircase: "Copiar para o Staircase",
|
||
},
|
||
dms: {
|
||
refresh: "Atualizar",
|
||
privateRooms: "Salas privadas",
|
||
crews: "Crews",
|
||
crewFounder: "Fundador",
|
||
crewMember: "Membro",
|
||
crewOpen: "Abrir",
|
||
crewSetUp: "Configurar",
|
||
},
|
||
form: {
|
||
cordnGroup: "Grupo Cordn",
|
||
cordnGroupHint: "Opcional: cole o link do grupo do Staircase ou do Cordn web. Sua crew passa a ter um chat MLS real de ponta a ponta, hospedado no nosso coordenador.",
|
||
},
|
||
bell: {
|
||
dmsUnread: "{{count}} nova(s) mensagem(ns) criptografada(s)",
|
||
messagesAndCrews: "Mensagens e chats de crew",
|
||
},
|
||
},
|
||
settingsUi: {
|
||
loginDialog: {
|
||
welcomeSubtitleBrowse: "Cadastre-se ou entre — ou continue explorando.",
|
||
extensionCard: "Extensão do navegador",
|
||
signerCard: "App assinador",
|
||
secretKeyLink: "Usar uma chave secreta",
|
||
whereBunker: "Onde consigo um bunker?",
|
||
},
|
||
settingsPage: {
|
||
trust: "Confiança",
|
||
trustSub: "Fontes e exibição",
|
||
},
|
||
},
|
||
walletUi: {
|
||
trust: {
|
||
mute: "Silenciar",
|
||
muted: "Silenciado",
|
||
mutedDesc: "Você não verá o conteúdo dela.",
|
||
unmute: "Deixar de silenciar",
|
||
unmuted: "Silenciamento desfeito",
|
||
unmutedDesc: "O conteúdo dela voltará a aparecer.",
|
||
unmuteFailed: "Não foi possível deixar de silenciar. Tente novamente.",
|
||
muteFailed: "Não foi possível silenciar. Tente novamente.",
|
||
loginToMute: "Faça login para silenciar.",
|
||
attributedNetwork: "De pessoas da sua rede",
|
||
attributedProviderHouse: "Do provedor de confiança da comunidade",
|
||
attributedProviderCustom: "Do provedor que você escolheu",
|
||
howItWorks: "Como funciona a confiança",
|
||
flaggedNoticeTitle: "Sinalizado por skatistas de confiança",
|
||
flaggedNoticeDesc: "Cuidado. Pessoas de confiança na rede sinalizaram esta conta.",
|
||
flaggedReporterFollow: "{{count}} que você segue",
|
||
flaggedReporterNetwork: "{{count}} na sua rede",
|
||
flaggedReporterOther: "{{count}} outras contas",
|
||
flaggedReport: "Denunciar",
|
||
flaggedDismiss: "Dispensar",
|
||
bucketVerified: "Verificado",
|
||
bucketUnknown: "Desconhecido",
|
||
bucketFlagged: "Sinalizado",
|
||
bucketVerifiedDesc: "Alguém da sua rede atesta por esta conta.",
|
||
bucketUnknownDesc: "Ninguém da sua rede atestou por esta conta ainda.",
|
||
bucketFlaggedDesc: "Pessoas de confiança sinalizaram esta conta.",
|
||
reportedByTrusted: "Sinalizado por {{count}} pessoas de confiança",
|
||
},
|
||
stats: {
|
||
transport: "Transporte",
|
||
},
|
||
},
|
||
trustUi: {
|
||
alertsTitle: "Alertas de rede",
|
||
alertsDesc: "Contas que você segue e que pessoas de confiança sinalizaram ou silenciaram.",
|
||
alertsEmpty: "Nenhum alerta. Verificamos as contas que você segue em busca de denúncias confiáveis.",
|
||
alertsReported: "Sinalizado por {{count}} pessoas de confiança",
|
||
alertsMuted: "Silenciado por {{count}} pessoas de confiança",
|
||
alertsIgnore: "Ignorar",
|
||
alertsUnfollow: "Deixar de seguir",
|
||
alertsLogin: "Faça login para ver alertas das contas que você segue.",
|
||
providerTitle: "Provedor",
|
||
providerDesc: "As pontuações vêm de um provedor que você escolhe. O provedor da comunidade é o padrão.",
|
||
useCommunity: "Usar o provedor da comunidade",
|
||
setProvider: "Definir um provedor",
|
||
customPubkeyPlaceholder: "npub ou chave pública hex do provedor",
|
||
customRelayPlaceholder: "wss://relay.exemplo.com",
|
||
invalidProvider: "Informe um npub válido ou chave pública hex de 64 caracteres, e um relay wss://.",
|
||
publishFailed: "Não foi possível publicar o provedor. Tente novamente.",
|
||
providerSaved: "Provedor atualizado.",
|
||
loggedOutProvider: "Faça login para escolher um provedor.",
|
||
showMarks: "Mostrar marcas de confiança",
|
||
showMarksDesc: "Marcas verificadas e desconhecidas. As denúncias sempre aparecem.",
|
||
sourceLabel: "Fonte",
|
||
sourceHouse: "Provedor de confiança da comunidade",
|
||
sourceCustom: "Seu provedor",
|
||
loggedOut: "Faça login para escolher seu próprio provedor de confiança.",
|
||
seoTitle: "Como funciona a confiança",
|
||
seoDescription: "Como o SkateSpots mostra a confiança: três estados, de onde vêm as pontuações e por que a ausência não é desconfiança.",
|
||
title: "Como funciona a confiança",
|
||
intro: "Aqui a confiança é um sinal, não um veredito. Ela vem de quem você conhece, ou de um provedor que você escolhe. Não classificamos pessoas globalmente.",
|
||
statesTitle: "Três estados",
|
||
verifiedTitle: "Verificado",
|
||
verifiedDesc: "Alguém da sua rede atesta por esta conta: um amigo de um amigo, ou o provedor que você escolheu.",
|
||
unknownTitle: "Desconhecido",
|
||
unknownDesc: "Ninguém atestou ainda. É aqui que toda conta nova começa.",
|
||
flaggedTitle: "Sinalizado",
|
||
flaggedDesc: "Pessoas de confiança sinalizaram esta conta. É um aviso para olhar com atenção, não uma prova.",
|
||
absenceTitle: "Não ter selo não é desconfiança",
|
||
absenceDesc: "A maioria das contas não mostra nada. Isso significa que ninguém da sua rede atestou ainda, não que algo esteja errado. Nunca leia uma marca ausente como negativa.",
|
||
sourceTitle: "Quem calcula",
|
||
sourceDesc: "Por padrão, usamos a sua própria rede. Você também pode escolher um provedor de confiança que publica pontuações assinadas no Nostr (NIP-85), ou desativar a exibição. Denúncias sempre aparecem, porque são um sinal de segurança.",
|
||
endorsementTitle: "Presença não é endosso",
|
||
endorsementDesc: "Uma marca verificada significa que alguém atestou, não que a pessoa seja boa. Uma sinalização significa que pessoas de confiança a denunciaram, não que ela seja culpada. Confira os detalhes antes de decidir.",
|
||
povTitle: "Depende do ponto de vista",
|
||
povDesc: "Uma pontuação é relativa a quem olha. Um ranking de um provedor ou de uma pessoa não é comparável a outro, e nunca apresentamos um como fato objetivo.",
|
||
settingsCta: "Gerenciar nas configurações",
|
||
},
|
||
marketTerms: {
|
||
link: "Diretrizes do Marketplace",
|
||
seoTitle: "Diretrizes do Marketplace",
|
||
seoDescription: "Como funcionam os anúncios de equipamentos do SkateSpots: entre pessoas, comprador atento, e as regras.",
|
||
title: "Diretrizes do Marketplace",
|
||
intro: "O SkateSpots é um mural de equipamentos entre pessoas. Você negocia direto com a outra pessoa: não retemos fundos, não enviamos itens nem resolvemos disputas.",
|
||
howTitle: "Como funciona",
|
||
howBody: "Publique equipamentos, fale com o vendedor por mensagem privada e acerte direto (dinheiro, Lightning ou troca). Não há carrinho nem checkout.",
|
||
rulesTitle: "O que não é permitido",
|
||
rulesBody: "Nada de conteúdo ilegal, perigoso ou adulto; nada de drogas, armas, falsificações ou itens roubados. Mantenha os anúncios sobre equipamentos de skate e itens relacionados.",
|
||
respectTitle: "Seja respeitoso",
|
||
respectBody: "Nada de abuso, assédio, ameaças ou ódio. Moderadores podem ocultar anúncios ou contas.",
|
||
trustTitle: "Confiança é um guia, não uma garantia",
|
||
trustBody: "Marcas de verificação e reputação de trocas são sinais da rede, não promessas. Faça suas próprias verificações antes de negociar.",
|
||
trustLink: "Como funciona a confiança",
|
||
privacyLink: "O que sai do seu dispositivo",
|
||
safetyTitle: "Negocie com segurança",
|
||
safetyBody: "Encontre-se em local público para as entregas, use escrow ou um depósito de boa-fé em negócios enviados, e nunca envie dinheiro fora do app.",
|
||
moderationTitle: "A moderação é leve e reversível",
|
||
moderationBody: "Conteúdo oculto permanece nos relays e pode ser restaurado; disputas entre pessoas são vocês que resolvem.",
|
||
},
|
||
labOptions: {
|
||
clothing: {
|
||
service: {
|
||
tees: "Camisetas",
|
||
hoodies: "Moletons e blusas",
|
||
pants: "Calças e shorts",
|
||
jackets: "Jaquetas e agasalhos",
|
||
kits: "Kits de time e camisas",
|
||
caps: "Bonés e gorros",
|
||
socks: "Meias",
|
||
accessories: "Bolsas e acessórios",
|
||
footwear: "Calçados",
|
||
patches: "Patches e aplicações",
|
||
griptape: "Vestuário de griptape e shape",
|
||
onepiece: "Peças únicas / upcycled",
|
||
},
|
||
serviceDesc: {
|
||
tees: "Camisetas e tops personalizados",
|
||
hoodies: "Moletons, blusões e calças de moletom",
|
||
pants: "Calças de trabalho, cargos e shorts",
|
||
jackets: "Jaquetas de coach, corta-vento e de trabalho",
|
||
kits: "Kits de time, camisas e uniformes",
|
||
caps: "Bonés, gorros e chapéus",
|
||
socks: "Meias de crew e malhas",
|
||
accessories: "Bolsas, cintos e pequenos itens",
|
||
footwear: "Calçados personalizados",
|
||
patches: "Patches bordados e aplicações",
|
||
griptape: "Arte em griptape e vestuário de shape",
|
||
onepiece: "Peças únicas e roupas upcycled",
|
||
},
|
||
method: {
|
||
screenprint: "Serigrafia",
|
||
dtg: "DTG / impressão direta em tecido",
|
||
embroidery: "Bordado",
|
||
cutsew: "Corte e costura",
|
||
sublimation: "Sublimação",
|
||
heattransfer: "Transfer térmico / vinil",
|
||
garmentdye: "Tingimento da peça",
|
||
knit: "Malharia",
|
||
patchwork: "Patchwork",
|
||
allover: "Estampa all-over",
|
||
},
|
||
material: {
|
||
cotton: "Algodão",
|
||
heavyweight: "Peso pesado",
|
||
organic: "Orgânico / sustentável",
|
||
fleece: "Fleece",
|
||
denim: "Denim",
|
||
canvas: "Canvas",
|
||
nylon: "Nylon / técnico",
|
||
wool: "Merino / lã",
|
||
leather: "Couro",
|
||
recycled: "Reciclado / deadstock",
|
||
},
|
||
},
|
||
transport: {
|
||
capacity: {
|
||
solo: "1–3 pessoas",
|
||
small_group: "4–7 pessoas",
|
||
large_group: "8+ pessoas",
|
||
van_load: "Van cheia",
|
||
freight: "Frete / carga",
|
||
},
|
||
coverage: {
|
||
local: "Local",
|
||
regional: "Regional",
|
||
national: "Nacional",
|
||
international: "Internacional",
|
||
cross_border: "Rotas transfronteiriças",
|
||
},
|
||
},
|
||
},
|
||
becomeRolesUi: {
|
||
clothing: {
|
||
seoTitle: "Seja designer de roupas - SkateSpots",
|
||
seoDescription: "Roupas personalizadas, kits de time e apparel para a cena.",
|
||
heading: "Designer de roupas",
|
||
tagline: "Roupas personalizadas, kits de time e apparel para a cena",
|
||
noun: "designer de roupas",
|
||
rateLabel: "Tarifa",
|
||
portfolioLabel: "Link da loja / portfólio",
|
||
sectionWhatYouMake: "O que você faz",
|
||
sectionHowYouMake: "Como você faz",
|
||
sectionMaterials: "Materiais",
|
||
minimumPlaceholder: "ex.: 10 peças",
|
||
turnaroundPlaceholder: "ex.: 2-3 semanas",
|
||
sizingPlaceholder: "ex.: XS-3XL / sob medida",
|
||
samplesHelper: "Você oferece amostras ou protótipos antes de uma produção completa?",
|
||
customizationPlaceholder: "ex.: nomes, números, gráficos",
|
||
},
|
||
transport: {
|
||
seoTitle: "Oferecer transporte / condução - SkateSpots",
|
||
seoDescription: "Mova skaters, equipamento e carga — carros, táxis, vans, motos, helicópteros, aviões e barcos. Autodeclarado, avaliado pela comunidade.",
|
||
heading: "Transporte / Motorista",
|
||
tagline: "Leve pessoas e equipamento pela cena — terra, ar ou mar",
|
||
noun: "prestador de transporte",
|
||
rateLabel: "Tarifa / Viagem",
|
||
portfolioLabel: "Fotos do veículo / frota",
|
||
sectionVehicles: "Veículos",
|
||
sectionServices: "Serviços",
|
||
sectionFeatures: "O que você oferece",
|
||
sectionCapacity: "Capacidade",
|
||
sectionCoverage: "Cobertura",
|
||
capacityLabel: "Capacidade",
|
||
capacityPlaceholder: "ex. 4 passageiros / 2 shapes",
|
||
cargoLabel: "Espaço de carga",
|
||
cargoPlaceholder: "ex. van cheia, 8 caixas de shapes",
|
||
coverageLabel: "Cobertura / rotas",
|
||
coveragePlaceholder: "ex. Lisboa ↔ Porto, regional",
|
||
availabilityLabel: "Disponibilidade",
|
||
availabilityPlaceholder: "ex. fins de semana, dias de evento, à chamada",
|
||
baseLabel: "Área de base",
|
||
basePlaceholder: "ex. Lisboa / Sintra",
|
||
accessibilityLabel: "Acessibilidade",
|
||
accessibilityPlaceholder: "ex. rampa, lugar para cadeira de rodas, assistência",
|
||
},
|
||
},
|
||
weatherUi: {
|
||
updated: "Atualizado",
|
||
refresh: "Atualizar",
|
||
unavailable: "Clima indisponível.",
|
||
retry: "Tentar novamente",
|
||
sunrise: "Nascer do sol",
|
||
sunset: "Pôr do sol",
|
||
legendTitle: "Pontuação do clima",
|
||
legendWeatherOnly: "Apenas clima",
|
||
},
|
||
cordnUi: {
|
||
shareInvite: 'Convidar',
|
||
shareInviteText: 'Entre em {{crew}} — chat privado do crew',
|
||
inviteCopied: 'Link de convite copiado',
|
||
title: "Chat privado",
|
||
subtitle: "Criptografado de ponta a ponta (MLS) entre os membros da crew. O coordenador roteia apenas texto cifrado e metadados — nunca vê o conteúdo das mensagens.",
|
||
notLoggedIn: "Faça login para usar o chat privado da crew.",
|
||
membersOnly: "Apenas membros da crew podem abrir o chat privado.",
|
||
connecting: "Conectando…",
|
||
noCoordinator: "Nenhum coordenador está configurado para esta crew ainda.",
|
||
noGroupAdmin: "O chat privado desta crew ainda não foi criado.",
|
||
noGroupMember: "Você ainda não está no chat privado desta crew.",
|
||
create: "Criar o chat privado",
|
||
requestJoin: "Pedir para entrar",
|
||
requestAgain: "Pedir novamente",
|
||
requestHandled: "Pedido tratado",
|
||
copyCordnLink: "Copiar link do Cordn",
|
||
cordnWebCaveat: "O Cordn web pode travar após o login; entrar pelo app é mais confiável.",
|
||
checkInvite: "Verificar convite",
|
||
requested: "Solicitação enviada — um admin da crew vai aprovar.",
|
||
noInvite: "Nenhum convite aguardando. Peça a um admin para aprovar sua solicitação.",
|
||
placeholder: "Mensagem para a crew…",
|
||
send: "Enviar",
|
||
refresh: "Atualizar",
|
||
requests: "Pedidos de entrada",
|
||
checkRequests: "Verificar pedidos",
|
||
approve: "Adicionar",
|
||
approveTitle: "Aprovar este dispositivo?",
|
||
approveDesc: "Adicionar {{name}} a esta sala criptografada? Esse dispositivo poderá ler as novas mensagens.",
|
||
noRequests: "Nenhum pedido de entrada pendente.",
|
||
inviteHint: "Por enquanto só você está neste chat — os membros da crew podem tocar em “Pedir para entrar”, e você os aprova aqui.",
|
||
memberCount: "{{count}} no grupo",
|
||
you: "Você",
|
||
groupRef: "Link do grupo",
|
||
copyRef: "Copiar",
|
||
copied: "Copiado",
|
||
attachImage: "Anexar imagem",
|
||
uploading: "Enviando…",
|
||
uploadFailed: "Não foi possível enviar a imagem.",
|
||
bannerTitle: "Esta crew ainda não tem chat privado",
|
||
bannerBody: "Configure um chat criptografado de ponta a ponta (MLS) para sua crew — os membros entram pela aba.",
|
||
bannerCta: "Configurar",
|
||
ready: "Conectado · MLS",
|
||
errorPrefix: "Não foi possível alcançar o coordenador",
|
||
interactiveHint: "Seu signer pede aprovação a cada ação — use Atualizar e Enviar conforme necessário.",
|
||
setupDevice: "Configurar este dispositivo",
|
||
setupDeviceBody: "Isto dá a este dispositivo uma chave própria para o chat privado. Um fundador aprova uma vez.",
|
||
waitingApproval: "Aguardando aprovação do fundador…",
|
||
waitingApprovalManual: "Aguardando o fundador. Toque em “Verificar convite” depois que ele aprovar.",
|
||
onboardingFounder1: "Inicie o chat privado.",
|
||
onboardingFounder2: "Aprove os membros que pedirem para entrar.",
|
||
onboardingFounder3: "Converse em particular com sua crew.",
|
||
onboardingMember1: "Pedir para entrar",
|
||
onboardingMember2: "O fundador aprova seu dispositivo.",
|
||
onboardingMember3: "Você entrou — as mensagens são criptografadas.",
|
||
encryptedNote: "Apenas membros da crew podem ler isto; o coordenador só repassa mensagens criptografadas.",
|
||
advanced: "Avançado",
|
||
compareTitle: "Chat vs chat privado",
|
||
compareChat: "O chat é um DM de grupo NIP-17 padrão. Funciona com outros clientes Nostr e não tem coordenador.",
|
||
comparePrivate: "O chat privado usa MLS: controle de membros mais forte e sigilo encaminhado. O coordenador vê metadados do grupo e texto cifrado, nunca o texto das mensagens.",
|
||
coordinator: "Coordenador",
|
||
lastChecked: "Última verificação",
|
||
keyPackage: "Pacote de chaves",
|
||
keyPackageReady: "Pronto neste dispositivo",
|
||
keyPackageMissing: "Não configurado neste dispositivo",
|
||
members: "Membros",
|
||
roleFounder: "Fundador",
|
||
roleAdmin: "Admin",
|
||
makeAdmin: "Tornar admin",
|
||
removeAdmin: "Remover admin",
|
||
adminAdded: "Membro promovido a admin.",
|
||
adminRemoved: "Papel de admin removido.",
|
||
roleUpdateFailed: "Não foi possível atualizar o papel. Tente novamente.",
|
||
addReaction: "Adicionar reação",
|
||
deleteMessage: "Excluir mensagem",
|
||
deleteMessageConfirm: "Excluir esta mensagem para todos?",
|
||
readBy: "Lido por {{count}}",
|
||
joinRequestTitle: "Pedido de chat privado",
|
||
joinRequestFor: "Novo pedido para entrar em {{crew}}",
|
||
joinRequestReview: "Rever pedido",
|
||
joinRequestDismiss: "Ignorar pedido",
|
||
roleMember: "Membro",
|
||
qrTitle: "Escaneie para entrar no chat privado",
|
||
qrHint: "Os membros da crew escaneiam com a câmera do celular. O link abre a aba Chat privado.",
|
||
sendFailed: "Não foi possível enviar — toque em Tentar novamente.",
|
||
queued: "Na fila neste dispositivo",
|
||
sending: "Enviando…",
|
||
sent: "Enviado",
|
||
retry: "Tentar novamente",
|
||
errorUnreachable: "Não foi possível alcançar o chat privado. Verifique sua conexão.",
|
||
errorDetails: "Detalhes",
|
||
unreachable: "Inacessível",
|
||
dismiss: "Fechar",
|
||
linkDevice: "Vincular este dispositivo",
|
||
linkDeviceTitle: "Vincular outro dispositivo",
|
||
linkDeviceHint: "Escaneie este código em um dispositivo que já esteja na sala.",
|
||
linkDeviceNote: "O código contém um pacote de chaves públicas. Sua chave privada permanece no novo dispositivo.",
|
||
waitingDevice: "Aguardando o outro dispositivo…",
|
||
addDevice: "Adicionar um dispositivo",
|
||
deviceLinked: "Dispositivo adicionado.",
|
||
deviceLinkFailed: "Não foi possível adicionar esse dispositivo.",
|
||
removeMemberConfirm: "Remover {{name}} do chat privado? Esse dispositivo perderá o acesso.",
|
||
removeMemberFailed: "Não foi possível remover esse membro.",
|
||
reply: "Responder",
|
||
},
|
||
communityUi: {
|
||
link: "Comunidade",
|
||
title: "Chat da comunidade",
|
||
subtitle: "Tire dúvidas, compartilhe feedback e converse com a comunidade do SkateSpots — criptografado de ponta a ponta.",
|
||
heading: "Comunidade SkateSpots",
|
||
eyebrow: "Dúvidas e feedback",
|
||
seoTitle: "Chat da comunidade SkateSpots",
|
||
seoDescription: "Dúvidas, feedback e conversa da comunidade — criptografados de ponta a ponta.",
|
||
notLoggedIn: "Entre para participar do chat da comunidade.",
|
||
noGroupAdmin: "A sala da comunidade ainda não foi criada.",
|
||
noGroupMember: "Você ainda não está na sala da comunidade.",
|
||
waitingApproval: "Aguardando aprovação do bot da comunidade ou de um admin…",
|
||
waitingApprovalManual: "Modo manual. Toque em “Verificar convite” quando for aprovado.",
|
||
noInvite: "Nenhum convite ainda. O bot costuma aprovar em até um minuto — depois toque em “Verificar convite”.",
|
||
pendingRequests: "{{count}} pedido(s) de entrada aguardando",
|
||
pendingRequestsDesc: "O bot costuma aprovar automaticamente. Se travou, abra a sala abaixo e toque em Verificar pedidos.",
|
||
botMissing: "O bot da comunidade não está nesta sala agora, então um admin analisará os pedidos de entrada.",
|
||
secondDeviceHint: "Já é membro em outro dispositivo? Use “Vincular este dispositivo” para uma transferência direta, ou peça para entrar de novo com este dispositivo.",
|
||
create: "Criar a sala da comunidade",
|
||
setupDeviceBody: "Isso dá a este dispositivo uma chave para a sala da comunidade. Um admin ou o bot aprova uma vez.",
|
||
onboardingFounder1: "Crie a sala da comunidade.",
|
||
onboardingFounder2: "Aprove o bot da comunidade e os novos membros.",
|
||
onboardingFounder3: "Responda perguntas e colete feedback.",
|
||
onboardingMember1: "Peça para entrar na sala da comunidade.",
|
||
onboardingMember2: "Um admin ou o bot da comunidade aprova seu dispositivo.",
|
||
onboardingMember3: "Tire dúvidas, compartilhe feedback ou apenas diga oi.",
|
||
encryptedNote: "Só os membros da sala podem ler isto; o coordenador apenas retransmite mensagens criptografadas.",
|
||
shareInviteText: "Participe do chat da comunidade SkateSpots",
|
||
qrTitle: "Escaneie para entrar no chat da comunidade",
|
||
qrHint: "Escaneie com a câmera do celular para abrir o chat da comunidade e pedir para entrar.",
|
||
owner: "Proprietário",
|
||
botName: "Bot da comunidade",
|
||
howItWorks: "Cada dispositivo novo é aprovado uma vez por um admin ou pelo bot da comunidade. Mensagens enviadas antes de você entrar não ficam visíveis para você.",
|
||
feedbackNote: "Dúvidas e feedback são bem-vindos. Seja gentil — é uma sala compartilhada.",
|
||
},
|
||
translateUi: {
|
||
title: "Tradução de mensagens",
|
||
translate: "Traduzir",
|
||
translating: "Traduzindo…",
|
||
showOriginal: "Mostrar original",
|
||
showTranslation: "Mostrar tradução",
|
||
translatedFrom: "Traduzido de {{language}}",
|
||
failed: "A tradução falhou. Tente novamente.",
|
||
unsupported: "Este par de idiomas ainda não está disponível.",
|
||
pilotNote: "Piloto: apenas inglês ↔ espanhol.",
|
||
autoTranslate: "Traduzir mensagens automaticamente",
|
||
autoTranslateDesc: "Traduza as mensagens recebidas para o seu idioma. Roda neste dispositivo; nada é enviado.",
|
||
privacy: "A tradução roda no seu dispositivo. Sua mensagem nunca sai dele. No primeiro uso, um modelo de idioma é baixado.",
|
||
},
|
||
newsletterDraftUi: {
|
||
weeklyDraftReady: 'Rascunho semanal pronto',
|
||
loadDraft: 'Carregar rascunho',
|
||
hidePreview: 'Ocultar pré-visualização',
|
||
untitled: 'Sem título',
|
||
},
|
||
signerPromptUi: {
|
||
title: "Orçamento de avisos do Amber",
|
||
body: "O Amber pede aprovação em cada ação assinada. Leituras e descriptografias em segundo plano ficam locais e não geram avisos. Enviar uma DM em grupo pede uma vez por destinatário (criptografar + assinar), e o Cordn pode pedir a cada solicitação do coordenador. Para chat privado ou de crew frequente, um bunker ou uma chave local é mais silencioso.",
|
||
bunker: "Mantenha o Amber para assinaturas importantes, ou mude para um bunker quando esperar uma conversa longa.",
|
||
},
|
||
globalSearchUi: {
|
||
open: "Buscar",
|
||
placeholder: "Buscar spots, crews, eventos, equipamento…",
|
||
hint: "⌘K / Ctrl+K",
|
||
recent: "Recentes",
|
||
pages: "Páginas",
|
||
spots: "Spots",
|
||
shops: "Lojas",
|
||
crews: "Crews",
|
||
events: "Eventos",
|
||
gear: "Equipamento",
|
||
skaters: "Skatistas",
|
||
signers: "Assinadores",
|
||
trust: "Confiança",
|
||
noResults: "Nenhum resultado para “{{query}}”.",
|
||
},
|
||
marketplaceExtrasUi: {
|
||
savedSearches: "Pesquisas salvas",
|
||
saveSearch: "Salvar pesquisa",
|
||
searchName: "Dê um nome a esta pesquisa…",
|
||
deleteSearch: "Excluir pesquisa salva",
|
||
safetyTitle: "Compre e venda com segurança",
|
||
safetyMeet: "Encontrem-se em um local público e inspecionem o equipamento antes de pagar.",
|
||
safetyKeys: "Nunca compartilhe frases seed ou chaves privadas. Mantenha a negociação no chat do app.",
|
||
safetyEscrow: "Para envios, leia primeiro os termos do escrow: o escrow Cashu é apenas para o app nativo e não é verificado.",
|
||
safetyMore: "Ler as diretrizes do marketplace",
|
||
offerTemplates: "Notas rápidas",
|
||
offerDiscount: "Você consegue 10% de desconto?",
|
||
offerSwap: "Você consideraria uma troca?",
|
||
offerPickup: "Consigo retirar esta semana.",
|
||
offerShipping: "Você consegue agrupar o frete?",
|
||
},
|
||
placesUi: {
|
||
eventDetail: {
|
||
eventPass: "Passe do evento"
|
||
},
|
||
},
|
||
};
|
||
|
||
export default drift;
|