Files
SnapOtter/packages/shared/src/i18n/pt-BR.ts
T
SnapOtterandGitHub 73b259462a fix: resolve 7 bugs from QA sweep (#208)
- Fix selective metadata stripping (P1): use Sharp's keepExif()/keepIccProfile()
  instead of broken withMetadata({}) that preserved everything
- Fix meme font mapping (P1): add ArchivoBlack and ComicNeue fonts, map
  arial-black and comic-sans to correct TTF files instead of Anton
- Fix meme contentType (P2): detect actual output format from Sharp metadata
  instead of hardcoding image/png
- Fix info/text-overlay/color-palette i18n (P2): wire up existing translation
  keys that were imported but never used
- Fix info and color-palette displayMode (P2): change from before-after to
  no-comparison since neither tool produces a processed image
- Add missing i18n keys across all 21 locales
- Update displayMode test assertions
2026-06-07 18:27:09 +08:00

2075 lines
75 KiB
TypeScript

import type { TranslationKeys } from "./en.js";
export const ptBR: TranslationKeys = {
common: {
upload: "Enviar do computador",
process: "Processar",
download: "Baixar",
cancel: "Cancelar",
save: "Salvar",
delete: "Excluir",
settings: "Configuracoes",
search: "Buscar ferramentas...",
dropFiles: "Arraste arquivos aqui ou clique no botao de envio",
loading: "Carregando...",
error: "Ocorreu um erro",
confirm: "Confirmar",
close: "Fechar",
back: "Voltar",
next: "Proximo",
clear: "Limpar",
copy: "Copiar",
copied: "Copiado!",
noResults: "Nenhum resultado encontrado",
showLess: "Mostrar menos",
showMore: "Mostrar mais {count}",
experimental: "Experimental",
enabled: "Ativado",
disabled: "Desativado",
rename: "Renomear",
edit: "Editar",
actions: "Acoes",
create: "Criar",
or: "ou",
goHome: "Ir para o inicio",
somethingWentWrong: "Algo deu errado",
unexpectedError: "Ocorreu um erro inesperado.",
retry: "Tentar novamente",
privacyPolicy: "Politica de privacidade",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "Essenciais",
optimization: "Otimizacao",
adjustments: "Ajustes",
watermark: "Marca d'agua e sobreposicao",
utilities: "Utilitarios",
layout: "Layout e composicao",
format: "Formato e conversao",
ai: "Ferramentas de AI",
},
tools: {
resize: {
name: "Redimensionar",
description: "Redimensione por pixels, porcentagem ou presets de redes sociais",
},
crop: {
name: "Cortar",
description: "Corte livre, proporcoes predefinidas, corte por forma",
},
rotate: {
name: "Girar e espelhar",
description: "Gire, espelhe e endireite imagens",
},
convert: { name: "Converter", description: "Converta entre formatos de imagem" },
compress: {
name: "Comprimir",
description: "Reduza o tamanho do arquivo por qualidade ou tamanho alvo",
},
"optimize-for-web": {
name: "Otimizar para web",
description:
"Otimize imagens para web com conversao de formato, controle de qualidade e visualizacao ao vivo",
},
"strip-metadata": {
name: "Remover metadados",
description: "Remova EXIF, GPS e informacoes da camera",
},
"edit-metadata": {
name: "Editar metadados",
description: "Edite EXIF, IPTC, XMP, GPS, palavras-chave e datas",
},
"bulk-rename": {
name: "Renomear em lote",
description: "Renomeie varios arquivos com padroes",
},
"image-to-pdf": {
name: "Imagem para PDF",
description: "Combine imagens em um documento PDF",
},
"pdf-to-image": {
name: "PDF para imagem",
description: "Converta paginas de PDF em imagens",
},
favicon: {
name: "Gerador de Favicon",
description: "Gere todos os tamanhos de favicon e icones de app",
},
"adjust-colors": {
name: "Ajustar cores",
description: "Brilho, contraste, exposicao, saturacao, temperatura, nitidez e efeitos",
},
sharpening: {
name: "Nitidez",
description: "Nitidez adaptativa, mascara de desfoque e passa-alta com presets",
},
"replace-color": {
name: "Substituir e inverter cor",
description: "Substitua cores especificas ou inverta",
},
"color-blindness": {
name: "Simulacao de daltonismo",
description:
"Simule como as imagens aparecem com diferentes tipos de deficiencia na visao de cores",
},
"remove-background": {
name: "Remover fundo",
description: "Remocao de fundo com AI",
},
upscale: {
name: "Ampliar imagem",
description: "Melhoria por super-resolucao com AI",
},
"erase-object": {
name: "Apagador de objetos",
description: "Remova objetos indesejados com AI",
},
ocr: {
name: "OCR / Extracao de texto",
description: "Extraia texto de imagens com precisao alimentada por AI",
},
"blur-faces": {
name: "Desfocar rostos / dados sensiveis",
description: "Detecte e desfoque automaticamente rostos e informacoes sensiveis",
},
"enhance-faces": {
name: "Melhoria de rostos",
description: "Restaure e melhore rostos com AI",
},
"smart-crop": {
name: "Corte inteligente",
description: "Corte inteligente por assunto, rosto ou bordas",
},
"image-enhancement": {
name: "Melhoria de imagem",
description:
"Melhoria automatica com um clique: exposicao, contraste, cor e nitidez inteligentes",
},
"noise-removal": {
name: "Remocao de ruido",
description: "Remocao de ruido e granulacao com AI",
},
"red-eye-removal": {
name: "Remocao de olhos vermelhos",
description: "Deteccao e correcao de olhos vermelhos com AI para fotos com flash",
},
"restore-photo": {
name: "Restauracao de fotos",
description: "Repare arranhoes, rasgos e danos em fotos antigas com AI",
},
"content-aware-resize": {
name: "Redimensionamento inteligente",
description: "Redimensione imagens de forma inteligente preservando o conteudo importante",
},
"ai-canvas-expand": {
name: "Expansao de canvas com AI",
description: "Expanda o canvas com preenchimento gerado por AI",
},
colorize: {
name: "Colorizacao com AI",
description:
"Converta fotos em preto e branco para coloridas usando modelos de aprendizado profundo com AI",
},
"passport-photo": {
name: "Foto para documento",
description:
"Crie fotos para passaporte, visto e identidade em conformidade com os requisitos oficiais, com deteccao automatica de rosto",
},
"transparency-fixer": {
name: "Corretor de transparencia PNG",
description: "Corrija PNGs com transparencia falsa em um clique",
},
"watermark-text": {
name: "Marca d'agua de texto",
description: "Adicione uma marca d'agua de texto em sobreposicao",
},
"watermark-image": {
name: "Marca d'agua de imagem",
description: "Sobreponha um logo como marca d'agua",
},
"text-overlay": {
name: "Texto sobreposto",
description: "Adicione texto estilizado as imagens",
},
compose: {
name: "Composicao de imagem",
description: "Sobreponha imagens com posicao e opacidade",
},
"meme-generator": {
name: "Gerador de Meme",
description:
"Crie memes com modelos populares ou suas proprias imagens. Texto classico estilo Impact com fontes, cores e posicionamento personalizaveis.",
},
info: {
name: "Info da imagem",
description: "Veja todos os metadados e propriedades da imagem",
},
compare: {
name: "Comparar imagens",
description: "Comparacao lado a lado de duas imagens",
},
"find-duplicates": {
name: "Encontrar duplicatas",
description: "Detecte imagens duplicadas e quase duplicadas",
},
"color-palette": {
name: "Paleta de cores",
description: "Extraia as cores dominantes de uma imagem",
},
"qr-generate": {
name: "Gerador de codigos QR",
description: "Gere codigos QR estilizados com cores, padroes e logos personalizados",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "Leitor de codigos de barras",
description: "Escaneie imagens em busca de codigos QR, codigos de barras e codigos 2D",
},
collage: {
name: "Collage / Grade",
description: "Combine imagens em belos collages com mais de 25 modelos",
},
stitch: {
name: "Juntar / Combinar",
description: "Junte imagens lado a lado, empilhadas ou em grade",
},
split: {
name: "Divisao de imagem",
description: "Divida imagens em grade ou por tamanho em pixels com visualizacao ao vivo",
},
border: {
name: "Borda e moldura",
description:
"Adicione bordas, preenchimento, cantos arredondados e sombras com presets de um clique",
},
beautify: {
name: "Embelezar captura de tela",
description:
"Adicione fundos degradados, molduras de dispositivo, sombras e tamanhos para redes sociais as capturas de tela",
},
"svg-to-raster": {
name: "SVG para raster",
description:
"Converta SVG para PNG, JPEG, WebP, AVIF, TIFF, GIF ou HEIF em escala e DPI personalizados",
},
vectorize: {
name: "Imagem para SVG",
description: "Converta imagens em graficos vetoriais escalaveis",
},
"gif-tools": {
name: "Ferramentas GIF",
description:
"Redimensione, otimize, altere velocidade, inverta, extraia quadros e gire GIFs animados",
},
"image-to-base64": {
name: "Imagem para Base64",
description: "Converta imagens em strings Base64 para incorporar em HTML, CSS e mais",
},
pipeline: {
name: "Construtor de Pipeline",
description: "Encadeie varias ferramentas em um fluxo de trabalho",
},
},
toolSettings: {
compress: {
compressionMode: "Modo de compressao",
targetSize: "Tamanho alvo",
quality: "Qualidade",
smallestFile: "Menor arquivo",
bestQuality: "Melhor qualidade",
submit: "Comprimir",
submitBatch: "Comprimir ({count} arquivos)",
progressLabel: "Comprimindo",
original: "Original: {size} KB",
processed: "Processado: {size} KB",
saved: "Economia: {percent}%",
},
resize: {
customSize: "Tamanho personalizado",
scale: "Escala",
presets: "Presets",
contentAware: "Consciente do conteudo",
widthPx: "Largura (px)",
heightPx: "Altura (px)",
fitMode: "Modo de ajuste",
cropToFit: "Cortar para ajustar",
fitInside: "Ajustar dentro",
stretch: "Esticar",
limitToOriginalSize: "Limitar ao tamanho original",
limitToOriginalSizeHint:
"Se a imagem ja for menor que o alvo, ela e mantida como esta ao inves de ser ampliada",
scalePercent: "Escala (%)",
resizeToSquare: "Redimensionar para quadrado",
protectFaces: "Proteger rostos",
smoothing: "Suavizacao",
edgeSensitivity: "Sensibilidade de bordas",
submit: "Redimensionar",
submitBatch: "Redimensionar ({count} arquivos)",
progressLabel: "Redimensionando",
},
crop: {
aspectRatio: "Proporcao",
custom: "Personalizado",
positionAndSize: "Posicao e tamanho",
ruleOfThirds: "Regra dos tercos",
leftOffsetPx: "Deslocamento esquerdo (px)",
topOffsetPx: "Deslocamento superior (px)",
submit: "Cortar",
submitBatch: "Cortar ({count} arquivos)",
progressLabel: "Cortando",
},
rotate: {
rotate: "Girar",
angle: "Angulo",
straighten: "Endireitar",
flip: "Espelhar",
horizontal: "Horizontal",
vertical: "Vertical",
resetAllChanges: "Redefinir todas as alteracoes",
submit: "Aplicar",
submitBatch: "Aplicar ({count} arquivos)",
progressLabel: "Aplicando",
},
convert: {
targetFormat: "Formato de destino",
sourceFormat: "Formato de origem",
quality: "Qualidade",
submit: "Converter",
submitBatch: "Converter ({count} arquivos)",
progressLabel: "Convertendo",
},
"optimize-for-web": {
outputFormat: "Formato de saida",
quality: "Qualidade",
smallestFile: "Menor arquivo",
bestQuality: "Melhor qualidade",
maxDimensions: "Dimensoes maximas",
maxWidth: "Largura maxima",
maxHeight: "Altura maxima",
stripMetadata: "Remover metadados",
sizeComparison: "Comparacao de tamanho",
optimized: "Otimizado:",
smaller: "{percent}% menor",
larger: "{percent}% maior",
submit: "Processar e baixar",
submitBatch: "Processar e baixar ({count} arquivos)",
progressLabel: "Otimizando",
},
"strip-metadata": {
currentMetadata: "Metadados atuais",
readingMetadata: "Lendo metadados...",
noMetadataFound: "Nenhum metadado encontrado nesta imagem.",
removeAllMetadata: "Remover todos os metadados",
selectSpecific: "Ou selecione metadados especificos:",
stripExif: "Remover EXIF (info da camera, data, exposicao)",
stripGps: "Remover GPS (dados de localizacao)",
stripIcc: "Remover ICC (perfil de cor)",
stripXmp: "Remover XMP (metadados extensiveis)",
locationFound: "localizacao encontrada",
locationWarning:
"Esta imagem contem sua localizacao precisa. Considere remover os dados GPS antes de compartilha-la.",
metadataSections: "{count} secao de metadados encontrada",
metadataSectionsPlural: "{count} secoes de metadados encontradas",
metadataRemoved: "Metadados removidos: {size} KB",
submit: "Remover metadados",
progressLabel: "Removendo metadados",
},
"edit-metadata": {
readingMetadata: "Lendo metadados...",
couldNotReadMetadata: "Nao foi possivel ler os metadados - os campos comecarao vazios.",
basicInfo: "Informacoes basicas",
description: "Descricao",
artist: "Artista",
copyright: "Copyright",
software: "Software",
iptc: "IPTC",
title: "Titulo",
headline: "Titulo principal",
city: "Cidade",
stateProvince: "Estado/Provincia",
country: "Pais",
dateAndTime: "Data e hora",
editDates: "Editar datas",
shiftAllDates: "Ajustar todas as datas",
dateModified: "Data de modificacao",
dateTaken: "Data da captura",
shiftHint:
"Ajuste todos os campos de data por um deslocamento (util para correcoes de fuso horario)",
direction: "Direcao",
forward: "+ Para frente",
backward: "- Para tras",
hoursMinutes: "Horas:Minutos",
locationGps: "Localizacao (GPS)",
locationDataFound: "Dados de localizacao encontrados",
noGpsData: "Sem dados GPS. Adicione coordenadas abaixo.",
latitude: "Latitude",
longitude: "Longitude",
altitudeMeters: "Altitude (metros)",
removeAllGpsData: "Remover todos os dados GPS",
keywords: "Palavras-chave",
addKeywordPlaceholder: "Adicione palavra-chave e pressione Enter",
addToExisting: "Adicionar as existentes",
replaceAll: "Substituir todas",
allMetadata: "Todos os metadados",
templates: "Modelos",
templateNamePlaceholder: "Nome do modelo",
uploadPrompt: "Envie uma imagem para editar seus metadados.",
changes: "{count} alteracoes:",
modified: "{count} modificados",
removed: "{count} removidos",
gpsCleared: "GPS removido",
gpsAdded: "GPS adicionado",
datesShifted: "datas ajustadas",
submit: "Aplicar metadados",
progressLabel: "Gravando metadados",
},
"bulk-rename": {
pattern: "Padrao",
patternHint: "Variaveis: {{index}}, {{padded}}, {{original}}",
startIndex: "Indice inicial",
preview: "Visualizacao",
andMore: "... e mais {count}",
renaming: "Renomeando...",
submit: "Renomear {count} arquivos",
zipDownloaded: "ZIP baixado com sucesso",
},
"image-to-pdf": {
imageCount: "{count} imagem sera convertida em {mode}",
imageCountPlural: "{count} imagens serao convertidas em {mode}",
singlePdfMode: "um unico PDF, uma imagem por pagina",
separatePdfMode: "PDFs separados, um por imagem",
combineAllImages: "Combinar todas as imagens em um PDF",
pageSize: "Tamanho da pagina",
orientation: "Orientacao",
portrait: "Retrato",
landscape: "Paisagem",
margin: "Margem",
targetSizeLabel: "Tamanho de arquivo alvo (opcional)",
targetSizePlaceholder: "ex. 2",
targetSizeHint: "Deixe vazio para qualidade maxima",
targetSizeMet: "Alvo atingido",
targetSizeNotMet: "Nao foi possivel atingir o alvo. Arquivo comprimido com qualidade minima.",
targetSizeTooSmall: "O alvo deve ser de pelo menos 50KB",
jpegQualityLabel: "Qualidade JPEG utilizada",
noImage: "Sem imagem",
submitCollate: "Criar PDF ({count} paginas)",
submitSeparate: "Criar {count} PDFs",
downloadPdf: "Baixar PDF",
downloadZip: "Baixar ZIP",
progressLabel: "Criando PDF",
uploadingImages: "Enviando imagens...",
processingPages: "Processando {count} paginas...",
},
"pdf-to-image": {
dropPdf: "Arraste um PDF aqui ou clique para selecionar",
readingPdf: "Lendo PDF...",
pageCount: "{count} pagina",
pageCountPlural: "{count} paginas",
outputFormat: "Formato de saida",
quality: "Qualidade",
resolutionDpi: "Resolucao (DPI)",
dpiScreen: "Tela",
dpiStandard: "Padrao",
dpiPrint: "Impressao",
dpiHighQuality: "Alta qualidade",
colorMode: "Modo de cor",
colorModeColor: "Colorido",
colorModeGrayscale: "Escala de cinza",
colorModeBw: "P&B",
pages: "Paginas",
allPages: "Todas as paginas",
pagesHint: "ex. 1-3, 5, 8-10 (o documento tem {count} paginas)",
converting: "Convertendo...",
submit: "Converter {count} pagina",
submitPlural: "Converter {count} paginas",
downloadAllZip: "Baixar tudo (ZIP)",
},
favicon: {
uploadHint:
"Envie imagens quadradas (recomendado 512x512 ou maior) para gerar todos os tamanhos de favicon e icones de app.",
multipleHint: "Cada uma das {count} imagens recebe sua propria pasta no ZIP.",
generatedSizes: "Tamanhos gerados (por imagem)",
plusManifest: "+ manifest.json + trecho HTML",
submit: "Gerar Favicons ({count} imagem)",
submitPlural: "Gerar Favicons ({count} imagens)",
downloadZip: "Baixar ZIP dos Favicons",
progressLabel: "Gerando Favicons",
},
"adjust-colors": {
light: "Luz",
brightness: "Brilho",
contrast: "Contraste",
exposure: "Exposicao",
color: "Cor",
saturation: "Saturacao",
temperature: "Temperatura",
temperatureHint: "frio / quente",
tint: "Tonalidade",
tintHint: "verde / magenta",
hue: "Matiz",
detail: "Detalhe",
sharpness: "Nitidez",
effects: "Efeitos",
none: "nenhum",
grayscale: "escala de cinza",
sepia: "sepia",
invert: "inverter",
colorChannels: "Canais de cor",
channelModified: "modificado",
red: "Vermelho",
green: "Verde",
blue: "Azul",
resetAll: "Redefinir tudo",
submit: "Aplicar",
submitBatch: "Aplicar ({count} arquivos)",
progressLabel: "Ajustando cores",
},
sharpening: {
method: "Metodo",
adaptive: "Adaptativo",
unsharpMask: "Mascara de desfoque",
highPass: "Passa-alta",
presets: "Presets",
textureAmount: "Quantidade de textura",
amount: "Quantidade",
strength: "Intensidade",
noiseReduction: "Reducao de ruido",
off: "desativado",
lightDenoise: "leve",
mediumDenoise: "medio",
strongDenoise: "forte",
advancedControls: "Controles avancados",
radius: "Raio",
flatProtection: "Protecao de areas planas",
detailThreshold: "Limiar de detalhe",
haloLimitLight: "Limite de halo (claro)",
haloLimitDark: "Limite de halo (escuro)",
threshold: "Limiar",
kernelSize: "Tamanho do kernel",
submit: "Aumentar nitidez",
submitBatch: "Aumentar nitidez ({count} arquivos)",
progressLabel: "Aumentando nitidez",
},
"replace-color": {
sourceColor: "Cor de origem (a substituir)",
targetColor: "Cor de destino (substituicao)",
makeTransparent: "Tornar transparente em vez disso",
tolerance: "Tolerancia",
exactMatch: "Correspondencia exata",
wideRange: "Faixa ampla",
submit: "Substituir cor",
submitBatch: "Substituir cor ({count} arquivos)",
progressLabel: "Substituindo cor",
},
"color-blindness": {
simulationType: "Tipo de simulacao",
redGreen: "Vermelho-Verde",
blueYellow: "Azul-Amarelo",
monochromatic: "Monocromatico",
submit: "Simular",
submitBatch: "Simular ({count} arquivos)",
progressLabel: "Simulando daltonismo",
},
"remove-background": {
subject: "Assunto",
people: "Pessoas",
products: "Produtos",
general: "Geral",
passportIdPhoto: "Foto para passaporte / documento",
quality: "Qualidade",
fast: "Rapido",
hd: "HD",
max: "Max",
ultra: "Ultra",
background: "Fundo",
transparent: "Transparente",
bgColor: "Cor",
gradient: "Degradado",
image: "Imagem",
gradientDirection: "Direcao",
chooseBackgroundImage: "Escolher imagem de fundo",
effectsSection: "Efeitos",
effectsActive: "ativos",
blurBackground: "Desfocar fundo",
intensity: "Intensidade",
addShadow: "Adicionar sombra",
opacity: "Opacidade",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "Renderizando...",
submit: "Remover fundo",
submitBatch: "Remover fundo ({count} arquivos)",
progressLabel: "Removendo fundo",
},
upscale: {
scaleFactor: "Fator de escala",
quality: "Qualidade",
enhanceFaces: "Melhorar rostos",
noiseReduction: "Reducao de ruido",
noiseReductionHint:
"Suaviza granulacao e ruido. Valores mais altos removem mais ruido mas podem suavizar os detalhes.",
outputFormat: "Formato de saida",
submit: "Ampliar {scale}x",
submitBatch: "Ampliar {scale}x ({count} arquivos)",
progressLabel: "Ampliando imagem",
progressLabelBatch: "Ampliando {count} imagens",
},
"erase-object": {
brushSize: "Tamanho do pincel",
fine: "Fino",
wide: "Largo",
undo: "Desfazer",
clear: "Limpar",
outputFormat: "Formato de saida",
quality: "Qualidade",
paintHint: "Pinte sobre os objetos que deseja remover. Use Ctrl+Z para desfazer.",
submit: "Apagar objeto",
submitBatch: "Apagar todos ({count})",
progressLabel: "Apagando objeto",
},
ocr: {
quality: "Qualidade",
enhanceBeforeScanning: "Melhorar antes da varredura",
enhanceHint:
"Endireita, melhora o contraste, remove ruido e amplia a imagem automaticamente antes da varredura para maior precisao.",
language: "Idioma",
autoDetect: "Deteccao automatica",
extractedText: "Texto extraido",
noTextDetected: "Nenhum texto detectado nesta imagem",
characters: "{count} caracteres",
submit: "Extrair texto",
submitBatch: "Extrair texto ({count} arquivos)",
progressLabel: "Extraindo texto",
},
"blur-faces": {
blurRadius: "Raio de desfoque",
blurLight: "Leve",
blurHeavy: "Forte",
detectionSensitivity: "Sensibilidade de deteccao",
moreFaces: "Mais rostos",
fewerFaces: "Menos rostos",
submit: "Desfocar rostos",
progressLabel: "Desfocando rostos",
},
"enhance-faces": {
quality: "Qualidade",
enhancementStrength: "Intensidade da melhoria",
onlyCenterFace: "Apenas o rosto central",
detectionSensitivity: "Sensibilidade de deteccao",
submit: "Melhorar rostos",
submitBatch: "Melhorar rostos ({count} arquivos)",
progressLabel: "Melhorando rostos",
},
"smart-crop": {
subjectFocus: "Foco no assunto",
faceFocus: "Foco no rosto",
autoTrim: "Corte automatico",
customSize: "Tamanho personalizado",
socialPresets: "Presets de redes sociais",
detectionStrategy: "Estrategia de deteccao",
detectionStrategyHint:
"Atencao encontra a regiao visualmente mais relevante. Entropia encontra a area com mais detalhes e informacoes.",
attention: "Atencao",
entropy: "Entropia",
padding: "Preenchimento",
paddingHint: "Espaco extra ao redor da area de foco",
outputQuality: "Qualidade de saida",
outputQualityHint: "Para saidas JPEG e WebP. PNG e sempre sem perdas.",
subjectDescription:
"Detecta a regiao mais interessante usando analise de relevancia e corta no tamanho desejado.",
framing: "Enquadramento",
facePadding: "Espaco ao redor do rosto",
facePaddingHint: "Espaco extra ao redor dos rostos detectados",
fewerFalsePositives: "Menos falsos positivos",
faceDescription:
"Usa deteccao facial com AI para manter os rostos bem enquadrados. Se nenhum rosto for detectado, usa o foco no assunto.",
trimTolerance: "Tolerancia",
trimDescription:
"O quanto um pixel da borda pode diferir da cor da borda e ainda ser cortado. Maior = mais agressivo.",
padToSquare: "Preencher para quadrado",
targetSizePx: "Tamanho alvo (px)",
padColor: "Cor de preenchimento",
trimHint:
'Remove bordas de cor uniforme ao redor do assunto. Ative "Preencher para quadrado" para imagens prontas para e-commerce.',
submitSubject: "Corte inteligente",
submitFace: "Corte por rosto",
submitTrim: "Cortar bordas",
},
imageEnhancement: {
enhancementMode: "Modo de melhoria",
auto: "Automatico",
portrait: "Retrato",
landscape: "Paisagem",
lowLight: "Pouca luz",
food: "Comida",
document: "Documento",
intensity: "Intensidade",
deepEnhance: "Melhoria profunda (AI)",
deepEnhanceDescription: "Remove ruido e artefatos usando AI",
deepEnhanceRequires: "Requer o pacote de Ampliacao e melhoria",
analyzingImage: "Analisando imagem...",
detectedIssues: "Problemas detectados",
imageLooksGood: "A imagem parece boa. Ajuste com o controle de intensidade.",
issueUnderexposed: "Baixa exposicao",
issueOverexposed: "Superexposta",
issueLowContrast: "Contraste plano",
issueColorCast: "Dominante de cor",
issueDesaturated: "Dessaturada",
issueSoftFocus: "Foco suave",
issueNoisy: "Ruidosa",
submit: "Melhorar",
submitDeep: "Melhoria profunda",
submitBatch: "Melhorar ({count} arquivos)",
submitDeepBatch: "Melhoria profunda ({count} arquivos)",
progressLabel: "Melhorando imagem",
progressLabelBatch: "Melhorando {count} imagens",
},
"noise-removal": {
denoisingTier: "Nivel de reducao de ruido",
quick: "Rapido",
balanced: "Equilibrado",
quality: "Qualidade",
maximum: "Maximo",
quickDesc: "Rapido e leve",
balancedDesc: "Boa qualidade, velocidade moderada",
qualityDesc: "Com AI, lento",
maximumDesc: "Melhor modelo AI, mais lento",
strength: "Intensidade",
subtle: "Sutil",
aggressive: "Agressivo",
detailPreservation: "Preservacao de detalhes",
smooth: "Suave",
sharp: "Nitido",
colorNoise: "Ruido de cor",
heavy: "Intenso",
outputFormat: "Formato de saida",
gifAiWarning:
"A reducao de ruido com AI em arquivos GIF processa apenas o primeiro quadro. Para GIFs animados, use o nivel Rapido ou Equilibrado.",
submit: "Remover ruido",
submitBatch: "Remover ruido ({count} arquivos)",
progressLabel: "Removendo ruido",
progressLabelBatch: "Removendo ruido de {count} imagens",
},
"red-eye-removal": {
sensitivity: "Sensibilidade",
strict: "Rigorosa",
aggressive: "Agressiva",
correctionStrength: "Intensidade da correcao",
subtle: "Sutil",
dark: "Escuro",
outputFormat: "Formato de saida",
quality: "Qualidade",
submit: "Corrigir olhos vermelhos",
submitBatch: "Corrigir olhos vermelhos ({count} arquivos)",
progressLabel: "Corrigindo olhos vermelhos",
progressLabelBatch: "Corrigindo olhos vermelhos em {count} imagens",
},
"restore-photo": {
scratchRemoval: "Remocao de arranhoes",
scratchRemovalDesc: "Detecta e repara arranhoes, rasgos e manchas",
faceEnhancement: "Melhoria de rostos",
faceEnhancementDesc: "Restaura rostos degradados com CodeFormer AI",
faceFidelity: "Fidelidade do rosto",
enhanced: "Melhorado",
faithful: "Fiel",
noiseReduction: "Reducao de ruido",
noiseReductionDesc: "Remove granulacao e ruido de fotos antigas",
denoiseStrength: "Intensidade da reducao de ruido",
autoColorize: "Colorizar automaticamente",
autoColorizeDesc: "Adicione cor a fotos P&B usando DDColor AI",
colorizeStrength: "Intensidade da colorizacao",
vivid: "Vivido",
submit: "Restaurar foto",
submitBatch: "Restaurar fotos ({count})",
progressLabel: "Restaurando foto",
progressLabelBatch: "Restaurando {count} fotos",
},
"content-aware-resize": {
widthPx: "Largura (px)",
heightPx: "Altura (px)",
resizeToSquare: "Redimensionar para quadrado",
protectFaces: "Proteger rostos",
protectFacesHint:
"Detecta e protege as areas do rosto da remocao de costuras usando deteccao facial",
smoothing: "Suavizacao",
edgeSensitivity: "Sensibilidade de bordas",
submit: "Redimensionar",
submitBatch: "Redimensionar ({count} arquivos)",
progressLabel: "Redimensionamento inteligente",
},
"ai-canvas-expand": {
quality: "Qualidade",
fast: "Rapido",
balanced: "Equilibrado",
highQuality: "Alta qualidade",
fastDesc: "Visualizacao rapida, menos passagens AI",
balancedDesc: "Boa qualidade, velocidade moderada",
highQualityDesc: "Melhores resultados, mais lento",
extendToAspectRatio: "Estender para proporcao",
extendByPixels: "Estender por (pixels)",
top: "Topo",
right: "Direita",
bottom: "Baixo",
left: "Esquerda",
newSize: "Novo tamanho: {width} x {height}",
submit: "Estender canvas",
submitBatch: "Estender ({count} arquivos)",
progressLabel: "Estendendo canvas",
},
colorize: {
aiModel: "Modelo AI",
fast: "Rapido",
fastDesc: "Resultados rapidos",
balanced: "Equilibrado",
balancedDesc: "O melhor disponivel",
best: "Melhor",
bestDesc: "A mais alta qualidade",
colorIntensity: "Intensidade de cor",
grayscaleLabel: "Escala de cinza",
subtleLabel: "Sutil",
naturalLabel: "Natural",
vividLabel: "Vivido",
intensityHint: "Valores mais baixos produzem cores mais suaves, estilo vintage.",
strength: "Intensidade da colorizacao",
submit: "Colorizar",
submitBatch: "Colorizar ({count} arquivos)",
progressLabel: "Colorizando",
progressLabelBatch: "Colorizando {count} imagens",
},
"passport-photo": {
country: "Pais",
searchCountries: "Buscar paises...",
noCountriesFound: "Nenhum pais encontrado",
customDimensions: "Dimensoes personalizadas",
documentType: "Tipo de documento",
dimensionsMm: "Dimensoes (mm)",
dpi: "DPI",
pixelsPerInch: "pixels por polegada",
backgroundColor: "Cor de fundo",
maxFileSize: "Tamanho maximo do arquivo",
noLimit: "Sem limite",
customKb: "Personalizado KB...",
uploadPortrait: "Envie uma foto tipo retrato",
uploadHint:
"Arraste ou envie uma imagem no painel esquerdo para visualizar sua foto para documento",
analyzingPhoto: "Analisando foto",
detectingLandmarks: "Detectando pontos faciais e removendo fundo...",
generatePassportPhoto: "Gerar foto para documento",
generating: "Gerando...",
downloadPhoto: "Baixar foto",
faceCentered: "Rosto centralizado",
headLevel: "Cabeca nivelada",
lookingStraight: "Olhando para frente",
faceSize: "Tamanho do rosto",
whatYouSee: "O que voce ve e o que vai baixar",
dragToAdjust: "Arraste para ajustar",
scrollToZoom: "Role para dar zoom",
photoGenerated: "Foto gerada. Baixe pelo painel esquerdo.",
},
"transparency-fixer": {
description: "Envie um PNG com fundo transparente falso e corrigimos em um clique.",
removeWatermark: "Remover marca d'agua",
removeWatermarkHelp: "Detecta e remove marcas d'agua semitransparentes",
requiresEraser: "Requer o pacote do Apagador de objetos",
advanced: "Avancado",
defringe: "Remover franjas",
outputFormat: "Formato de saida",
submit: "Corrigir transparencia",
submitBatch: "Corrigir transparencia ({count} arquivos)",
progressLabel: "Corrigindo transparencia",
},
"watermark-text": {
watermarkText: "Texto da marca d'agua",
fontSize: "Tamanho da fonte",
color: "Cor",
opacity: "Opacidade",
position: "Posicao",
rotation: "Rotacao",
center: "Centro",
topLeft: "Superior esquerdo",
topRight: "Superior direito",
bottomLeft: "Inferior esquerdo",
bottomRight: "Inferior direito",
tiled: "Lado a lado",
submit: "Adicionar marca d'agua",
submitBatch: "Adicionar marca d'agua ({count} arquivos)",
progressLabel: "Adicionando marca d'agua",
},
"watermark-image": {
uploadWatermark: "Enviar imagem de marca d'agua",
position: "Posicao",
opacity: "Opacidade",
scale: "Escala",
submit: "Aplicar marca d'agua",
submitBatch: "Aplicar marca d'agua ({count} arquivos)",
},
"text-overlay": {
text: "Texto",
fontSize: "Tamanho da fonte",
color: "Cor",
position: "Posicao",
top: "Topo",
center: "Centro",
bottom: "Baixo",
backgroundBox: "Caixa de fundo",
backgroundColor: "Cor de fundo",
shadow: "Sombra",
submit: "Adicionar texto",
submitBatch: "Adicionar texto ({count} arquivos)",
progressLabel: "Adicionando texto sobreposto",
download: "Download",
defaultText: "Your Text Here",
},
compose: {
uploadOverlay: "Enviar imagem de sobreposicao",
xPosition: "Posicao X",
yPosition: "Posicao Y",
opacity: "Opacidade",
blendMode: "Modo de mesclagem",
submit: "Compor",
},
"meme-generator": {
selectTemplate: "Selecione um modelo da galeria ou envie sua propria imagem para comecar.",
chooseLayout: "Escolha um layout de texto para sua imagem personalizada.",
textContent: "Conteudo do texto",
textStyle: "Estilo do texto",
font: "Fonte",
fontSize: "Tamanho da fonte",
textColor: "Cor do texto",
strokeColor: "Cor do contorno",
allCaps: "MAIUSCULAS",
generate: "Gerar Meme",
generating: "Gerando...",
downloadMeme: "Baixar Meme",
backToGallery: "Voltar para a galeria",
},
info: {
loadingInfo: "Carregando informacoes...",
filename: "Nome do arquivo",
fileSize: "Tamanho do arquivo",
dimensions: "Dimensoes",
format: "Formato",
channels: "Canais",
colorSpace: "Espaco de cor",
density: "Densidade",
bitDepth: "Profundidade de bits",
progressive: "Progressivo",
pages: "Paginas",
hasAlpha: "Tem alfa",
hasProfile: "Tem perfil",
hasExif: "Tem EXIF",
hasIcc: "Tem ICC",
hasXmp: "Tem XMP",
readInfo: "Read Info",
reading: "Reading...",
channelStats: "Channel Stats",
yes: "Yes",
no: "No",
na: "N/A",
failedToRead: "Failed to read info",
},
compare: {
uploadSecondImage: "Enviar segunda imagem",
similarity: "Similaridade: {percent}%",
submit: "Comparar",
downloadDiff: "Baixar diferenca",
},
"find-duplicates": {
preset: "Preset",
exact: "Exato",
similar: "Similar",
loose: "Amplo",
exactDesc: "Copias identicas pixel a pixel, mesma imagem em formatos diferentes.",
similarDesc: "Copias redimensionadas, recomprimidas ou levemente editadas.",
looseDesc: "Imagens visualmente relacionadas, cortes leves, exposicoes diferentes.",
threshold: "Limiar",
submit: "Buscar duplicatas",
scanning: "Escaneando...",
},
"color-palette": {
submit: "Extrair paleta",
extracting: "Extraindo...",
dominantColors: "Cores dominantes",
clickToCopy: "Clique para copiar",
},
"qr-generate": {
contentType: "Tipo de conteudo",
url: "URL",
text: "Texto",
wifi: "WiFi",
vcard: "vCard",
email: "Email",
phone: "Telefone",
sms: "SMS",
styling: "Estilo",
dotStyle: "Estilo dos pontos",
cornerSquareStyle: "Estilo do quadrado de canto",
cornerDotStyle: "Estilo do ponto de canto",
foregroundColor: "Cor do primeiro plano",
bgColor: "Cor de fundo",
logo: "Logo",
downloadFormat: "Formato de download",
submit: "Gerar codigo QR",
download: "Baixar codigo QR",
},
"html-to-image": {
modeUrl: "URL",
modeHtml: "HTML File",
htmlFile: "HTML File",
url: "URL",
urlPlaceholder: "https://snapotter.com",
format: "Output Format",
quality: "Quality",
devicePreset: "Device",
viewportWidth: "Width",
viewportHeight: "Height",
fullPage: "Full Page",
submit: "Capture",
download: "Download Screenshot",
capturing: "Capturing webpage...",
errorTimeout: "Page took too long to load",
errorBlocked: "This URL cannot be captured",
errorUnavailable: "Screenshot service is not available",
errorFailed: "Failed to capture the page",
placeholder: "Enter a URL and click Capture",
presets: {
desktop: "Desktop",
tablet: "Tablet",
mobile: "Mobile",
custom: "Custom",
},
},
"barcode-read": {
submit: "Escanear codigos de barras",
submitBatch: "Escanear ({count} arquivos)",
scanning: "Escaneando...",
noBarcodesFound: "Nenhum codigo de barras encontrado",
barcodesFound: "{count} codigo de barras encontrado",
barcodesFoundPlural: "{count} codigos de barras encontrados",
},
collage: {
template: "Modelo",
aspectRatio: "Proporcao",
gap: "Espaco",
cornerRadius: "Raio do canto",
backgroundColor: "Cor de fundo",
outputFormat: "Formato de saida",
quality: "Qualidade",
submit: "Criar collage",
downloadCollage: "Baixar collage",
},
stitch: {
direction: "Direcao",
horizontal: "Horizontal",
vertical: "Vertical",
grid: "Grade",
gridColumns: "Colunas da grade",
resizeMode: "Modo de redimensionamento",
fit: "Ajustar",
original: "Original",
stretchMode: "Esticar",
cropMode: "Cortar",
alignment: "Alinhamento",
start: "Inicio",
center: "Centro",
end: "Fim",
gap: "Espaco",
border: "Borda",
cornerRadius: "Raio do canto",
backgroundColor: "Cor de fundo",
outputFormat: "Formato de saida",
quality: "Qualidade",
submit: "Juntar imagens",
},
split: {
modeGrid: "Grade",
modeTileSize: "Tamanho do bloco",
presets: "Presets",
columns: "Colunas",
rows: "Linhas",
tileWidth: "Largura do bloco",
tileHeight: "Altura do bloco",
outputFormat: "Formato de saida",
quality: "Qualidade",
submit: "Dividir imagem",
downloadAll: "Baixar tudo (ZIP)",
},
border: {
presets: "Presets",
borderWidth: "Largura da borda",
borderColor: "Cor da borda",
padding: "Preenchimento",
paddingColor: "Cor do preenchimento",
cornerRadius: "Raio do canto",
shadow: "Sombra",
shadowBlur: "Desfoque da sombra",
shadowOffsetX: "Deslocamento X da sombra",
shadowOffsetY: "Deslocamento Y da sombra",
shadowColor: "Cor da sombra",
shadowOpacity: "Opacidade da sombra",
submit: "Adicionar borda",
submitBatch: "Adicionar borda ({count} arquivos)",
progressLabel: "Adicionando borda",
},
beautify: {
preset: "Preset",
backgroundType: "Tipo de fundo",
solidColor: "Cor solida",
linearGradient: "Degradado linear",
radialGradient: "Degradado radial",
customImage: "Imagem personalizada",
gradientAngle: "Angulo do degradado",
padding: "Preenchimento",
borderRadius: "Raio da borda",
shadowPreset: "Preset de sombra",
deviceFrame: "Moldura de dispositivo",
submit: "Embelezar",
submitBatch: "Embelezar ({count} arquivos)",
progressLabel: "Embelezando captura de tela",
},
"svg-to-raster": {
outputFormat: "Formato de saida",
sizing: "Dimensionamento",
scaleMode: "Escala",
customMode: "Personalizado",
scalePresets: "Presets de escala",
dpiPresets: "Presets de DPI",
customWidth: "Largura (px)",
customHeight: "Altura (px)",
background: "Fundo",
bgTransparent: "Transparente",
bgColor: "Cor",
quality: "Qualidade",
submit: "Converter SVG",
submitBatch: "Converter ({count} arquivos)",
progressLabel: "Convertendo SVG",
},
vectorize: {
preset: "Preset",
logo: "Logo",
illustration: "Ilustracao",
photo: "Foto",
sketch: "Rascunho",
customPreset: "Personalizado",
colorMode: "Modo de cor",
bw: "P&B",
colorModeColor: "Colorido",
threshold: "Limiar",
colorPrecision: "Precisao de cor",
layerDifference: "Diferenca de camadas",
filterSpeckle: "Filtrar manchas",
pathMode: "Modo de caminho",
cornerThreshold: "Limiar de canto",
invertColors: "Inverter cores",
submit: "Vetorizar",
submitBatch: "Vetorizar ({count} arquivos)",
progressLabel: "Vetorizando",
},
"gif-tools": {
mode: "Modo",
resize: "Redimensionar",
optimize: "Otimizar",
speed: "Velocidade",
reverse: "Inverter",
extract: "Extrair",
rotateMode: "Girar",
pixel: "Pixel",
percentage: "Porcentagem",
colors: "Cores",
dither: "Dithering",
effort: "Esforco",
speedFactor: "Fator de velocidade",
loopControl: "Controle de loop",
infinite: "Infinito",
once: "Uma vez",
customLoop: "Personalizado",
loopCount: "Quantidade de loops",
extractSingle: "Individual",
extractRange: "Faixa",
extractAll: "Todos",
frameNumber: "Numero do quadro",
frameStart: "Quadro inicial",
frameEnd: "Quadro final",
extractFormat: "Formato",
submit: "Processar GIF",
submitBatch: "Processar ({count} arquivos)",
progressLabel: "Processando GIF",
},
"image-to-base64": {
outputFormat: "Formato de saida",
keepOriginal: "Manter original",
quality: "Qualidade",
maxWidth: "Largura maxima",
maxHeight: "Altura maxima",
submit: "Converter para Base64",
submitBatch: "Converter ({count} arquivos)",
copyBase64: "Copiar Base64",
copyDataUri: "Copiar Data URI",
copyImgTag: "Copiar tag <img>",
copyCssUrl: "Copiar CSS url()",
},
"enhance-faces-standalone": {
model: "Modelo",
fast: "Rapido",
balanced: "Equilibrado",
best: "Melhor",
},
},
urlImport: {
title: "Importar de URLs",
placeholder: "Cole URLs de imagens, uma por linha...",
importButton: "Importar URLs",
addButton: "Adicionar {count} arquivos",
adding: "Adicionando...",
retryButton: "Tentar novamente",
cancelButton: "Cancelar",
readyCount: "{count} prontos",
failedStatus: "Falhou",
},
comparison: {
original: "Original",
processed: "Processado",
before: "Antes",
after: "Depois",
savings: "Economia",
},
toolPage: {
emptyPrompt: "Arraste ou envie uma imagem para comecar",
filesCount: "Arquivos ({count})",
addMore: "+ Adicionar mais",
clearAll: "Limpar tudo",
acceptDescription: "Apenas arquivos {exts}",
notFound: "Ferramenta nao encontrada",
configureAndGenerate: "Configure os ajustes e gere.",
processingFailed: "Falha ao processar este arquivo",
conversionComplete: "Conversao concluida",
cannotPreviewDownload:
"Arquivos {type} nao podem ser visualizados no navegador. Use o botao de download para salvar seu arquivo.",
generatingPreview: "Gerando visualizacao...",
cannotPreviewWillProcess:
"Arquivos {ext} nao podem ser visualizados no navegador. A ferramenta processara este arquivo normalmente.",
previousImage: "Imagem anterior",
nextImage: "Proxima imagem",
imageCounter: "{current} / {total}",
settingsLabel: "Configuracoes",
downloadAllZip: "Baixar tudo (ZIP)",
hideSettings: "Ocultar configuracoes",
imageArea: "Area da imagem",
},
homePage: {
generatingPreview: "Gerando visualizacao...",
loadingPreview: "Carregando visualizacao...",
changeFile: "Alterar arquivo",
quickActions: "Acoes rapidas",
allTools: "Todas as ferramentas",
},
fullscreenGrid: {
searchPlaceholder: "Buscar ferramentas...",
hideDetails: "Ocultar detalhes",
showDetails: "Mostrar detalhes",
switchToSidebar: "Alternar para visualizacao em barra lateral",
sidebarButton: "Barra lateral",
noToolsFound: "Nenhuma ferramenta encontrada",
tryDifferent: "Tente um termo de busca diferente",
},
editor: {
menu: {
file: {
label: "Arquivo",
new: "Novo",
open: "Abrir",
save: "Salvar",
exportAs: "Exportar como...",
quickExportPng: "Exportacao rapida como PNG",
close: "Fechar",
},
edit: {
label: "Editar",
undo: "Desfazer",
redo: "Refazer",
cut: "Recortar",
copy: "Copiar",
copyMerged: "Copiar mesclado",
paste: "Colar",
pasteInPlace: "Colar no lugar",
delete: "Excluir",
freeTransform: "Transformacao livre",
transform: {
label: "Transformar",
scale: "Escala",
rotate: "Girar",
skew: "Inclinar",
flipHorizontal: "Espelhar horizontal",
flipVertical: "Espelhar vertical",
},
},
image: {
label: "Imagem",
imageSize: "Tamanho da imagem...",
canvasSize: "Tamanho do canvas...",
rotation: {
label: "Rotacao da imagem",
cw90: "90 sentido horario",
ccw90: "90 sentido anti-horario",
r180: "180",
flipHorizontal: "Espelhar horizontal",
flipVertical: "Espelhar vertical",
},
trim: "Cortar",
adjustments: {
label: "Ajustes",
brightnessContrast: "Brilho/Contraste",
hueSaturation: "Matiz/Saturacao",
colorBalance: "Balanco de cores",
levels: "Niveis",
curves: "Curvas",
},
},
layer: {
label: "Camada",
newLayer: "Nova camada",
duplicateLayer: "Duplicar camada",
deleteLayer: "Excluir camada",
arrange: {
label: "Organizar",
bringToFront: "Trazer para frente",
bringForward: "Trazer para a frente",
sendBackward: "Enviar para tras",
sendToBack: "Enviar para o fundo",
},
mergeDown: "Mesclar para baixo",
flattenImage: "Achatar imagem",
},
select: {
label: "Selecao",
all: "Tudo",
deselect: "Desmarcar",
inverse: "Inverter",
colorRange: "Faixa de cores...",
},
filter: {
label: "Filtro",
blur: {
label: "Desfoque",
gaussian: "Desfoque gaussiano",
motion: "Desfoque de movimento",
radial: "Desfoque radial",
surface: "Desfoque de superficie",
},
sharpen: {
label: "Nitidez",
sharpen: "Nitidez",
unsharpMask: "Mascara de desfoque",
},
noise: {
label: "Ruido",
addNoise: "Adicionar ruido",
reduceNoise: "Reduzir ruido",
},
pixelate: {
label: "Pixelizacao",
pixelate: "Pixelizar",
mosaic: "Mosaico",
},
stylize: {
label: "Estilizar",
emboss: "Relevo",
solarize: "Solarizar",
posterize: "Posterizar",
},
grayscale: "Escala de cinza",
sepia: "Sepia",
invert: "Inverter",
},
view: {
label: "Visualizar",
zoomIn: "Aumentar zoom",
zoomOut: "Diminuir zoom",
fitOnScreen: "Ajustar a tela",
actualPixels: "Pixels reais",
rulers: "Reguas",
grid: "Grade",
guides: "Guias",
snap: "Encaixar",
panels: "Paineis",
},
},
menuBar: {
backTitle: "Voltar ao SnapOtter",
},
welcome: {
ariaLabel: "Area de soltar imagem",
heading: "Editor de imagens",
dropDescription: "Arraste uma imagem aqui para comecar",
openImageButton: "Abrir imagem",
newDocumentButton: "Novo documento",
pasteHint: "Ou cole da area de transferencia (Ctrl+V)",
},
mobile: {
heading: "Recomendado para desktop",
description:
"O editor de imagens funciona melhor em telas de desktop. Mude para um dispositivo com tela maior para a experiencia completa de edicao.",
},
errors: {
serverDecodeFailed: "Falha na decodificacao do servidor",
},
shapes: {
shape: "Shape",
fill: "Fill",
stroke: "Stroke",
strokeWidth: "Width",
cornerRadius: "Radius",
sides: "Sides",
points: "Points",
dashStyle: "Dash",
solid: "Solid",
dashed: "Dashed",
dotted: "Dotted",
none: "None",
opacity: "Opacity",
rectangle: "Rectangle",
ellipse: "Ellipse",
line: "Line",
arrow: "Arrow",
polygon: "Polygon",
star: "Star",
},
},
settings: {
heading: "Configuracoes",
nav: {
general: "Geral",
systemSettings: "Configuracoes do sistema",
security: "Seguranca",
people: "Pessoas",
teams: "Equipes",
roles: "Funcoes",
auditLog: "Registro de auditoria",
apiKeys: "Chaves API",
aiFeatures: "Recursos de AI",
tools: "Ferramentas",
productAnalytics: "Analitica do produto",
about: "Sobre",
},
general: {
heading: "Geral",
description: "Preferencias do usuario e configuracoes de exibicao.",
loading: "Carregando...",
logOut: "Sair",
defaultToolViewLabel: "Visualizacao padrao das ferramentas",
defaultToolViewDescription: "Como as ferramentas sao exibidas na pagina inicial",
sidebarOption: "Barra lateral",
fullscreenGridOption: "Grade em tela cheia",
appVersionLabel: "Versao do app",
appVersionDescription: "Versao atual do SnapOtter",
saveButton: "Salvar configuracoes",
saveSuccess: "Configuracoes salvas.",
saveFailed: "Falha ao salvar as configuracoes.",
},
system: {
heading: "Configuracoes do sistema",
description: "Configuracao do servidor e limites.",
fileUploadLimitLabel: "Limite de envio de arquivo (MB)",
fileUploadLimitDescription: "Tamanho maximo de arquivo por envio",
defaultThemeLabel: "Tema padrao",
defaultThemeDescription: "Tema aplicado para novas sessoes",
lightOption: "Claro",
darkOption: "Escuro",
systemOption: "Sistema",
languageLabel: "Idioma",
languageDescription: "Idioma da interface",
loginAttemptLimitLabel: "Limite de tentativas de login",
loginAttemptLimitDescription:
"Maximo de tentativas de login falhadas por minuto antes do bloqueio",
fileManagementHeading: "Gerenciamento de arquivos",
maxFileAgeLabel: "Idade maxima dos arquivos (horas)",
maxFileAgeDescription:
"Por quanto tempo os arquivos processados sao mantidos antes da limpeza automatica",
startupCleanupLabel: "Limpeza na inicializacao",
startupCleanupDescription: "Limpa arquivos temporarios antigos quando o servidor inicia",
saveButton: "Salvar configuracoes",
saveSuccess: "Configuracoes salvas.",
saveFailed: "Falha ao salvar as configuracoes.",
limitsAndResources: "Limites e recursos",
maxFileSize: "Tamanho maximo de arquivo",
maxBatchSize: "Tamanho maximo de lote",
concurrentJobs: "Trabalhos simultaneos",
workerThreads: "Threads de trabalho",
maxPipelineSteps: "Passos maximos do Pipeline",
processingTimeout: "Tempo limite de processamento",
rateLimitPerMin: "Limite de requisicoes (req/min)",
unlimited: "Ilimitado",
auto: "Automatico",
envOverride: "Definido por variavel de ambiente",
maxCanvasPixels: "Pixels maximos do canvas",
maxSvgSize: "Tamanho maximo de SVG",
maxSplitGrid: "Grade maxima de divisao",
maxPdfPages: "Paginas maximas de PDF",
sessionDuration: "Duracao da sessao",
},
security: {
heading: "Seguranca",
description: "Configuracoes de senha e autenticacao.",
changePasswordHeading: "Alterar senha",
currentPasswordPlaceholder: "Senha atual",
newPasswordPlaceholder: "Nova senha",
confirmPasswordPlaceholder: "Confirmar nova senha",
passwordsMismatch: "As senhas nao coincidem",
passwordTooShort: "A senha deve ter pelo menos 4 caracteres",
changeSuccess: "Senha alterada com sucesso",
changeFailed: "Falha ao alterar a senha",
currentPasswordIncorrect: "A senha atual esta incorreta",
changePasswordButton: "Alterar senha",
loginAttemptLimitNote:
"Os limites de tentativas de login podem ser configurados nas Configuracoes do sistema.",
},
people: {
heading: "Pessoas",
description: "Gerencie os membros do espaco de trabalho e suas permissoes",
userCount: "{count} usuario",
userCountPlural: "{count} usuarios",
searchPlaceholder: "Buscar membros...",
addMembersButton: "Adicionar membros",
newMemberHeading: "Novo membro",
usernamePlaceholder: "Nome de usuario",
passwordPlaceholder: "Senha",
roleUserOption: "Usuario",
roleEditorOption: "Editor",
roleAdminOption: "Admin",
roleUserDescription: "Acesso basico as ferramentas",
roleEditorDescription: "Todos os arquivos e pipelines",
roleAdminDescription: "Acesso completo",
noDescription: "Sem descricao",
defaultTeamOption: "Padrao",
createButton: "Criar",
cancelButton: "Cancelar",
createSuccess: "Usuario criado com sucesso",
createFailed: "Falha ao criar o usuario",
userLimitReached: "Limite de usuarios atingido ({max} maximo)",
deleteConfirm: 'Excluir usuario "{username}"? Esta acao nao pode ser desfeita.',
deleteSuccess: 'Usuario "{username}" excluido',
deleteFailed: "Falha ao excluir o usuario",
editHeading: "Editar {username}",
updateSuccess: "Usuario atualizado",
updateFailed: "Falha ao atualizar o usuario",
cannotRemoveOwnAdmin: "Nao e possivel remover sua propria funcao de administrador",
resetPasswordHeading: "Redefinir senha de {username}",
newPasswordLabel: "Nova senha (min. 8 caracteres)",
resetPasswordButton: "Redefinir senha",
resetPasswordWarning: "Isso invalidara todas as sessoes e chaves API deste usuario.",
resetSuccess: "Senha redefinida com sucesso",
resetFailed: "Falha ao redefinir a senha",
tableHeaderUser: "Usuario",
tableHeaderRole: "Funcao",
tableHeaderTeam: "Equipe",
noSearchResults: "Nenhum membro corresponde a sua busca.",
noUsersFound: "Nenhum usuario encontrado.",
authBadgeLocalOidc: "Local + OIDC",
authBadgeOidc: "OIDC",
editRoleTeamAction: "Editar funcao / equipe",
resetPasswordAction: "Redefinir senha",
deleteUserAction: "Excluir usuario",
saveButton: "Salvar",
copyPasswordButton: "Copiar senha",
passwordCopied: "Copiado!",
copyPasswordWarning: "Copie esta senha agora. Voce nao podera ve-la apos criar o usuario.",
},
teams: {
heading: "Equipes",
description: "Organize os membros em equipes para melhor gerenciamento.",
createButton: "Criar nova equipe",
newTeamHeading: "Nova equipe",
teamNamePlaceholder: "Nome da equipe",
createSubmitButton: "Criar",
cancelButton: "Cancelar",
createSuccess: "Equipe criada com sucesso",
createFailed: "Falha ao criar a equipe",
duplicateTeamError: "Ja existe uma equipe com esse nome",
renameSuccess: "Equipe renomeada",
renameFailed: "Falha ao renomear a equipe",
deleteConfirm: 'Excluir equipe "{name}"? Os membros serao desvinculados.',
deleteSuccess: 'Equipe "{name}" excluida',
deleteFailed: "Falha ao excluir a equipe",
cannotDeleteDefault: "Nao e possivel excluir a equipe padrao ou uma equipe com membros",
tableHeaderTeamName: "Nome da equipe",
tableHeaderMembers: "Membros",
emptyState: "Nenhuma equipe encontrada.",
renameSaveButton: "Salvar",
renameCancelButton: "Cancelar",
renameAction: "Renomear",
deleteAction: "Excluir",
totalMembers: "Total de membros",
nameRequired: "O nome da equipe e obrigatorio",
nameTooLong: "O nome da equipe deve ter 50 caracteres ou menos",
duplicateName: "Ja existe uma equipe com este nome",
},
roles: {
heading: "Funcoes",
description:
"Gerencie funcoes e suas permissoes. Funcoes predefinidas nao podem ser modificadas.",
createButton: "Criar funcao personalizada",
newRoleHeading: "Nova funcao",
roleNamePlaceholder: "Nome da funcao",
descriptionPlaceholder: "Descricao (opcional)",
permissionsLabel: "Permissoes",
createSubmitButton: "Criar",
cancelButton: "Cancelar",
createSuccess: "Funcao criada com sucesso",
createFailed: "Falha ao criar a funcao",
duplicateRoleError: "Ja existe uma funcao com esse nome",
editHeading: "Editar funcao: {name}",
editSaveButton: "Salvar",
editCancelButton: "Cancelar",
updateSuccess: "Funcao atualizada",
updateFailed: "Falha ao atualizar a funcao",
deleteConfirm: 'Excluir funcao "{name}"? {count} usuario(s) precisarao ser reatribuidos.',
deleteConfirmSimple: 'Excluir funcao "{name}"?',
deleteSuccess: 'Funcao "{name}" excluida',
deleteFailed: "Falha ao excluir a funcao",
emptyState: "Nenhuma funcao encontrada.",
builtInBadge: "Predefinida",
userCountBadge: "{count} usuario(s)",
editRoleTitle: "Editar funcao",
deleteRoleTitle: "Excluir funcao",
permGroup: {
tools: "Ferramentas",
files: "Arquivos",
apiKeys: "Chaves API",
pipelines: "Pipelines",
settings: "Configuracoes",
users: "Usuarios",
teams: "Equipes",
system: "Sistema",
},
},
auditLog: {
heading: "Registro de auditoria",
allActionsFilter: "Todas as acoes",
emptyState: "Nenhuma entrada no registro de auditoria.",
tableHeaderTime: "Hora",
tableHeaderUser: "Usuario",
tableHeaderAction: "Acao",
tableHeaderTarget: "Alvo",
paginationInfo: "Pagina {page} de {totalPages} ({total} entradas)",
previousButton: "Anterior",
nextButton: "Proximo",
justNow: "agora mesmo",
minutesAgo: "ha {mins}min",
hoursAgo: "ha {hrs}h",
daysAgo: "ha {days}d",
},
apiKeys: {
heading: "Chaves API",
description: "Gerencie as chaves API para acesso programatico ao SnapOtter.",
keyNamePlaceholder: "Nome da chave (opcional)",
generateButton: "Gerar chave API",
removeScopingLabel: "Remover restricao de permissoes",
restrictPermissionsLabel: "Restringir permissoes (opcional)",
expiresLabel: "Expira:",
clearButton: "Limpar",
copyTitle: "Copiar",
keyWarning: "Guarde esta chave em local seguro. Ela nao sera exibida novamente.",
existingKeysHeading: "Chaves existentes",
createdPrefix: "Criada em {date}",
scopedPrefix: "Escopo:",
expiresPrefix: "Expira em {date}",
deleteKeyTitle: "Excluir chave",
deleteConfirm: "Excluir esta chave API? As integracoes que a utilizam deixarao de funcionar.",
emptyState: "Nenhuma chave API ainda. Gere uma para comecar.",
},
tools: {
heading: "Ferramentas",
description:
"Ative ou desative ferramentas individuais. Ferramentas desativadas ficam ocultas para todos os usuarios.",
restartBanner: "E necessario reiniciar para que as alteracoes tenham efeito.",
searchPlaceholder: "Buscar ferramentas...",
noSearchResults: "Nenhuma ferramenta corresponde a sua busca.",
loadFailedError:
"Falha ao carregar as configuracoes das ferramentas. O salvamento esta desativado para evitar perda de dados.",
saveButton: "Salvar configuracoes das ferramentas",
disabledCount: "{count} ferramenta(s) desativada(s)",
},
experimental: {
label: "Ativar ferramentas experimentais",
description: "Mostra ferramentas que ainda estao em desenvolvimento. Podem ser instaveis.",
},
fileManagement: {
title: "Gerenciamento de arquivos",
maxAge: "Idade maxima dos arquivos (horas)",
maxAgeDescription:
"Por quanto tempo os arquivos processados sao mantidos antes da limpeza automatica",
startupCleanup: "Limpeza na inicializacao",
startupCleanupDescription: "Limpa arquivos temporarios antigos quando o servidor inicia",
},
analytics: {
heading: "Analitica do produto",
description: "Compartilhe dados de uso anonimos para ajudar a melhorar o SnapOtter.",
privacyNote: "Suas imagens nunca saem do seu computador.",
disabledByAdmin: "A analitica do produto foi desativada pelo administrador do servidor.",
enabledLabel: "Analitica ativada",
disabledLabel: "Analitica desativada",
learnMore: "Saiba mais",
},
aiFeatures: {
title: "AI Features",
description: "Manage AI model bundles for advanced image processing.",
installAll: "Install All",
diskUsage: "Disk usage:",
installed: "Installed",
notInstalled: "Not installed",
queued: "Queued",
install: "Install",
repair: "Repair",
uninstall: "Uninstall",
installing: "Installing...",
},
about: {
heading: "Sobre",
appName: "SnapOtter",
appDescription:
"Uma suite de processamento de imagens auto-hospedada e focada em privacidade, com 53 ferramentas. Redimensione, comprima, converta, adicione marcas d'agua e automatize seus fluxos de trabalho de imagens sem enviar dados para a nuvem.",
versionLabel: "Versao:",
linksHeading: "Links",
githubLink: "Repositorio no GitHub",
docsLink: "Documentacao",
apiRefLink: "Referencia da API (Swagger)",
licenseLabel: "License:",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
login: "Entrar",
logout: "Sair",
username: "Nome de usuario",
password: "Senha",
loginButton: "Entrar",
loggingIn: "Entrando...",
invalidCredentials: "Nome de usuario ou senha invalidos",
connectionError: "Erro de conexao",
signInWith: "Entrar com {provider}",
signInWithSso: "Entrar com SSO",
or: "ou",
methodLocal: "Local",
methodOidc: "OIDC",
methodBoth: "Local + OIDC",
oidcAuthFailed: "Autenticacao falhou. Tente novamente.",
oidcProviderUnreachable:
"Nao foi possivel contatar o provedor de identidade. Tente novamente mais tarde.",
oidcSessionExpired: "Sessao de login expirada. Tente novamente.",
oidcUserNotAuthorized:
"Sua conta nao esta autorizada a acessar este aplicativo. Entre em contato com o administrador.",
oidcUserLimitReached: "Limite de usuarios atingido. Entre em contato com o administrador.",
oidcGenericError: "Erro de autenticacao. Tente novamente.",
passwordManagedByProvider:
"Alteracoes de senha sao gerenciadas pelo seu provedor de identidade.",
enterUsername: "Digite seu nome de usuario",
enterPassword: "Digite sua senha",
heroTitle: "Suas imagens. Ficam com voce.",
heroSubtitle: "Todas as ferramentas de imagem que voce precisa.",
rotatingPhrases: [
"Sem cadastro. Sem contas.",
"Sem envio para a nuvem. Nunca.",
"Processamento 100% local.",
"Gratuito. Para sempre.",
"Sem limites. Sem tetos ocultos.",
"Funciona totalmente offline.",
"Processamento em lote ilimitado.",
"53 ferramentas de imagem.",
"15 modelos AI. Seu hardware.",
"Ultra rapido. Construido sobre Sharp.",
"Pronto para redes isoladas.",
"Um unico container Docker.",
"Codigo aberto. Sempre.",
"Cada pixel fica no seu hardware.",
"Seu servidor. Suas regras.",
"Instala com um unico docker pull.",
"A alternativa auto-hospedada.",
"Redimensione, comprima, converta. Localmente.",
"Editor de imagens gratuito. Sem marcas d'agua.",
"Processamento em lote de imagens. Ilimitado.",
"Remova fundos offline.",
"Alternativa auto-hospedada ao Canva.",
"Sem chaves API necessarias.",
"Conformidade LGPD por design.",
"Funciona sem internet.",
],
},
changePassword: {
title: "Altere sua senha",
description:
"Voce precisa definir uma nova senha antes de continuar. Sua senha deve ter pelo menos 8 caracteres com maiusculas, minusculas e um numero.",
usernameLabel: "Nome de usuario",
currentPasswordLabel: "Senha atual",
currentPasswordPlaceholder: "Digite a senha atual",
newPasswordLabel: "Nova senha",
generateButton: "Gerar senha forte",
newPasswordPlaceholder: "Pelo menos 8 caracteres",
confirmPasswordLabel: "Confirmar nova senha",
confirmPasswordPlaceholder: "Repita a nova senha",
passwordsMismatch: "As senhas nao coincidem",
failedError: "Falha ao alterar a senha",
connectionError: "Erro de conexao",
changingButton: "Alterando...",
changeButton: "Alterar senha",
sidebarTitle: "Quase la",
sidebarDescription: "Defina uma senha forte para proteger sua conta e voce estara pronto.",
},
automate: {
title: "Automatizar",
invalidPipelineFile: "Nao e um arquivo Pipeline do SnapOtter valido",
newerVersion: "Este Pipeline foi criado com uma versao mais recente do SnapOtter",
missingName: "O arquivo Pipeline nao tem nome",
noSteps: "O arquivo Pipeline nao tem passos",
importFailed: "Falha na importacao",
couldNotRead: "Nao foi possivel ler o arquivo Pipeline",
fileCount: "{count} arquivo",
fileCountPlural: "{count} arquivos",
importFromLibrary: "Importar da biblioteca",
addButton: "+ Adicionar",
libraryButton: "Biblioteca",
clearButton: "Limpar",
processingFailed: "Falha ao processar este arquivo",
processingMultiple: "Processando {count} arquivos...",
processingPipeline: "Processando Pipeline...",
processButton: "Processar",
processButtonMultiple: "Processar ({count})",
processAllButton: "Processar todos ({count})",
addTool: "Adicionar ferramenta",
toolPalette: "Paleta de ferramentas",
clickToAdd: "Clique para adicionar ao Pipeline",
savedLabel: "Salvo",
importButton: "Importar",
noSavedPipelines: "Nenhum Pipeline salvo",
stepCount: "({count} passo)",
stepCountPlural: "({count} passos)",
exportPipeline: "Exportar Pipeline",
deletePipeline: "Excluir Pipeline",
moreCount: "+{count} mais",
pipelineBuilder: "Construtor de Pipeline",
addToolsPrompt: "Adicione ferramentas da paleta para comecar",
stepsConfigured: "{count} passo configurado",
stepsConfiguredPlural: "{count} passos configurados",
noFilesLoaded: "Nenhum arquivo carregado",
downloadZip: "Baixar ZIP",
saveButton: "Salvar",
pipelineNamePlaceholder: "Nome do Pipeline",
descriptionPlaceholder: "Descricao",
savingIndicator: "...",
cancelButton: "Cancelar",
preview: "Visualizacao",
previousImage: "Imagem anterior",
nextImage: "Proxima imagem",
imageCounter: "{current} / {total}",
imageArea: "Area da imagem",
templateSocialMedia: "Pronto para redes sociais",
templatePrivacyClean: "Limpeza de privacidade",
templateWebOptimization: "Otimizacao para web",
templateProfilePicture: "Foto de perfil",
templateWatermarkBatch: "Lote de marcas d'agua",
createNew: "Criar nova automacao",
savedAutomations: "Automacoes salvas",
templates: "Modelos",
addStep: "Adicionar passo",
removeStep: "Remover",
moveUp: "Mover para cima",
moveDown: "Mover para baixo",
savePipeline: "Salvar Pipeline",
runPipeline: "Processar",
pipelineName: "Nome do Pipeline",
pipelineDescription: "Descricao (opcional)",
noStepsPrompt: "Adicione passos para construir sua automacao",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "Passo",
},
nav: {
tools: "Ferramentas",
reader: "Leitor",
automate: "Automatizar",
editor: "Editor",
files: "Arquivos",
help: "Ajuda",
settings: "Configuracoes",
grid: "Grade",
},
files: {
myFiles: "My Files",
recentTab: "Recent",
uploadTab: "Upload Files",
fileDetailsAriaLabel: "File Details",
fileDetailsHeading: "File Details",
searchPlaceholder: "Search files...",
selectedCount: "{count} selected",
fileCount: "{count} files",
fileCountSingular: "{count} file",
noFilesFound: "No files found",
selectFilePrompt: "Select a file to view details",
openFile: "Open File",
openInPipeline: "Open in Pipeline",
name: "Name",
format: "Format",
size: "Size",
dimensions: "Dimensions",
version: "Version",
toolsUsed: "Tools Used",
none: "None",
delete: "Delete",
pipeline: "Pipeline",
download: "Download",
},
dropzone: {
unsupportedFileType: "Este tipo de arquivo nao e suportado por esta ferramenta",
urlFetchFailed: "Nao foi possivel obter a imagem da URL",
ariaLabel: "Area de soltar arquivos",
dropPrompt: "Arraste suas imagens aqui",
browseOrPaste: "clique em qualquer lugar para navegar, ou cole da area de transferencia",
uploadButton: "Enviar",
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD e mais de 65 formatos",
orSeparator: "ou",
urlPlaceholder: "Cole a URL da imagem...",
urlLoadingIndicator: "...",
addUrlButton: "Adicionar",
importMultipleUrls: "Importar multiplas URLs...",
filesSelected: "{count} arquivos selecionados",
},
reviewPanel: {
processedResultAlt: "Resultado processado",
sizeLabel: "Tamanho: {size}",
typeLabel: "Tipo: {type}",
processedLabel: "Processado: {time}",
undoButton: "Desfazer",
downloadButton: "Baixar",
openInEditor: "Abrir no editor",
reviewHeading: "Revisao",
continueEditing: "Continuar editando",
},
features: {
notEnabledTitle: "Recurso nao ativado",
notEnabledDescription:
"Este recurso nao esta ativado. Peca ao administrador para ativa-lo nas Configuracoes.",
requiresDownload: "Este recurso requer um download adicional (~{size})",
retryButton: "Tentar novamente",
queued: "Na fila para instalacao...",
enableButton: "Ativar {name}",
lessThanMinute: "Menos de um minuto restante",
oneMinuteLeft: "~1 minuto restante",
minutesLeft: "~{mins} minutos restantes",
progressMessages: [
"Quase la... provavelmente...",
"Coisas boas levam tempo...",
"Ainda mais rapido que ver a tinta secar...",
"Sua paciencia e realmente inspiradora...",
"Trabalhando mais do que parece...",
"Essa e a parte empolgante, confia...",
"Fazendo coisas importantes nos bastidores...",
"Se voce esta lendo isso, esta funcionando...",
"Preparando algo incrivel...",
"Vale cada segundo, prometo...",
"O suspense faz parte da experiencia...",
"Ensinando truques novos ao seu computador...",
"Configurando seus superpoderes...",
"Suas imagens vao te agradecer depois...",
"Carregando... mas com estilo...",
"Hora perfeita para um cafezinho...",
"Roma tambem nao foi construida em um dia...",
"Shhh... genio trabalhando...",
"Suas fotos vao ficar com inveja do que vem ai...",
"Montando o time dos sonhos...",
"Desempacotando coisas incriveis...",
"Quase terminei de pensar em comecar... brincadeira...",
"Plot twist: isso esta realmente fazendo algo...",
"Aquecendo os motores criativos...",
"Imaginacao carregando...",
"Nao e um protetor de tela, prometemos...",
"A grande arte leva tempo para instalar...",
"Seu eu do futuro vai te agradecer...",
"Buscando arquivos super inteligentes...",
"Aguenta firme, o melhor ainda esta por vir...",
],
},
help: {
heading: "Ajuda",
gettingStarted: {
heading: "Primeiros passos",
description:
"Selecione uma ferramenta na barra lateral ou busque uma. Envie uma imagem arrastando-a para a pagina ou clicando na area de envio. Ajuste as configuracoes e baixe seu resultado.",
},
keyboardShortcuts: {
heading: "Atalhos de teclado",
focusSearchBar: "Focar na barra de busca",
goToTools: "Ir para ferramentas",
toggleTheme: "Alternar tema",
goToResize: "Ir para Redimensionar",
goToCrop: "Ir para Cortar",
goToCompress: "Ir para Comprimir",
goToConvert: "Ir para Converter",
goToRemoveBackground: "Ir para Remover fundo",
goToWatermarkText: "Ir para Marca d'agua de texto",
goToStripMetadata: "Ir para Remover metadados",
goToImageInfo: "Ir para Info da imagem",
},
resources: {
heading: "Recursos",
githubLink: "Repositorio no GitHub",
reportIssueLink: "Relatar um problema",
docsLink: "Documentacao",
apiRefLink: "Referencia da API (Swagger)",
},
versionLabel: "SnapOtter v{version}",
},
errors: {
generic: "Ocorreu um erro",
offline: "Voce esta offline",
reconnecting: "Reconectando ao servidor...",
connected: "Conectado",
processingFailed: "Falha ao processar este arquivo",
timeout: "A requisicao expirou. O servidor pode estar sobrecarregado. Tente novamente.",
networkError: "Erro de rede. Verifique sua conexao.",
invalidCredentials: "Nome de usuario ou senha invalidos",
connectionError: "Erro de conexao",
},
analytics: {
consentTitle: "Ajude a melhorar o SnapOtter",
consentDescription:
"Estatisticas de uso anonimas nos ajudam a corrigir bugs e criar as ferramentas que voce realmente precisa. Suas imagens e arquivos ficam no seu computador.",
consentChangeable: "Voce pode desativar isso a qualquer momento nas Configuracoes.",
acceptButton: "Claro, parece bom",
declineButton: "Agora nao",
settingsTitle: "Analitica do produto",
settingsDescription: "Compartilhe dados de uso anonimos para ajudar a melhorar o SnapOtter.",
settingsPrivacy: "Suas imagens nunca saem do seu computador.",
settingsDisabledByAdmin:
"A analitica do produto foi desativada pelo administrador do servidor.",
learnMore: "Saiba mais",
},
sidebar: {
tools: "Ferramentas",
grid: "Grade",
automate: "Automatizar",
editor: "Editor",
files: "Arquivos",
help: "Ajuda",
settings: "Configuracoes",
},
toolCard: {
addToFavourites: "Adicionar aos favoritos",
},
appLayout: {
mobileNavTools: "Ferramentas",
mobileNavAutomate: "Automatizar",
mobileNavEditor: "Editor",
mobileNavFiles: "Arquivos",
mobileNavSettings: "Configuracoes",
},
} as const;