Files
SnapOtter/packages/shared/src/i18n/pt-BR.ts
T

2868 lines
98 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",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
data: "Data Files",
ai: "Ferramentas de AI",
},
modalities: {
image: "Image",
video: "Video",
audio: "Audio",
documentsAndFiles: "Documents & Files",
},
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",
},
"convert-video": {
name: "Convert Video",
description: "Convert videos between MP4, MOV, and WebM",
},
"compress-video": {
name: "Compress Video",
description: "Shrink video file size with quality control",
},
"trim-video": {
name: "Trim Video",
description: "Cut a clip out of a video",
},
"mute-video": {
name: "Mute Video",
description: "Remove the audio track from a video",
},
"video-to-gif": {
name: "Video to GIF",
description: "Turn a video clip into an animated GIF",
},
"resize-video": {
name: "Resize Video",
description: "Scale a video to a new resolution or preset size",
},
"crop-video": {
name: "Crop Video",
description: "Crop a region out of a video",
},
"rotate-video": {
name: "Rotate Video",
description: "Rotate or flip a video",
},
"change-fps": {
name: "Change FPS",
description: "Change the frame rate of a video",
},
"video-color": {
name: "Video Color",
description: "Adjust brightness, contrast, saturation, and gamma",
},
"video-speed": {
name: "Video Speed",
description: "Speed up or slow down a video",
},
"reverse-video": {
name: "Reverse Video",
description: "Play a video clip backwards",
},
"video-loudnorm": {
name: "Normalize Audio",
description: "Normalize video audio volume to broadcast standard",
},
"aspect-pad": {
name: "Aspect Pad",
description: "Add solid-color bars to fit a target aspect ratio",
},
"blur-pad": {
name: "Blur Pad",
description: "Fill bars with a blurred copy of the video",
},
"watermark-video": {
name: "Watermark Video",
description: "Burn a text watermark onto video frames",
},
"stabilize-video": {
name: "Stabilize Video",
description: "Reduce camera shake with two-pass stabilization",
},
"gif-to-video": {
name: "GIF to Video",
description: "Convert an animated GIF into an MP4 or WebM video",
},
"video-to-webp": {
name: "Video to WebP",
description: "Convert a video clip into an animated WebP image",
},
"video-to-frames": {
name: "Video to Frames",
description: "Extract frames from a video as a ZIP of images",
},
"merge-videos": {
name: "Merge Videos",
description: "Join multiple video clips into one file",
},
"replace-audio": {
name: "Replace Audio",
description: "Swap the audio track of a video with another file",
},
"burn-subtitles": {
name: "Burn Subtitles",
description: "Permanently render subtitles onto video frames",
},
"embed-subtitles": {
name: "Embed Subtitles",
description: "Mux a subtitle track into the video container",
},
"extract-subtitles": {
name: "Extract Subtitles",
description: "Pull the subtitle track out of a video as an SRT file",
},
"images-to-video": {
name: "Images to Video",
description: "Turn a set of images into a slideshow video",
},
"video-metadata": {
name: "Clean Video Metadata",
description: "Strip metadata from a video and report what was found",
},
"convert-audio": {
name: "Convert Audio",
description: "Convert audio between MP3, WAV, OGG, and more",
},
"trim-audio": {
name: "Trim Audio",
description: "Cut a section out of an audio file",
},
"extract-audio": {
name: "Extract Audio",
description: "Pull the audio track out of a video",
},
"merge-pdf": {
name: "Merge PDFs",
description: "Combine multiple PDFs into one",
},
"split-pdf": {
name: "Split PDF",
description: "Extract pages or split into parts",
},
"compress-pdf": {
name: "Compress PDF",
description: "Shrink PDF file size",
},
"rotate-pdf": {
name: "Rotate PDF",
description: "Rotate pages in a PDF",
},
"word-to-pdf": {
name: "Word to PDF",
description: "Convert Word documents to PDF",
},
"extract-pages": {
name: "Extract Pages",
description: "Pull selected pages into a new PDF",
},
"remove-pages": {
name: "Remove Pages",
description: "Delete specific pages from a PDF",
},
"organize-pdf": {
name: "Organize PDF",
description: "Reorder pages with an explicit page order",
},
"protect-pdf": {
name: "Protect PDF",
description: "Add password protection (AES-256 encryption)",
},
"unlock-pdf": {
name: "Unlock PDF",
description: "Remove password protection from a PDF",
},
"repair-pdf": {
name: "Repair PDF",
description: "Attempt to repair a damaged or corrupted PDF",
},
"linearize-pdf": {
name: "Web-Optimize PDF",
description: "Linearize a PDF for fast web viewing",
},
"grayscale-pdf": {
name: "Grayscale PDF",
description: "Convert all colors to grayscale",
},
"pdfa-convert": {
name: "PDF/A Convert",
description: "Convert to archival PDF/A-2",
},
"crop-pdf": {
name: "Crop PDF",
description: "Crop all pages with a uniform margin",
},
"nup-pdf": {
name: "N-up PDF",
description: "Arrange multiple pages per sheet",
},
"booklet-pdf": {
name: "Booklet PDF",
description: "Arrange pages for folding into a booklet",
},
"watermark-pdf": {
name: "Watermark PDF",
description: "Add a text watermark to every page",
},
"pdf-page-numbers": {
name: "PDF Page Numbers",
description: "Add page numbers to every page",
},
"flatten-pdf": {
name: "Flatten PDF",
description: "Bake forms and annotations into page content",
},
"redact-pdf": {
name: "Redact PDF",
description: "Permanently remove text occurrences (verified true redaction)",
},
"pdf-to-text": {
name: "PDF to Text",
description: "Extract plain text from a PDF",
},
"pdf-to-word": {
name: "PDF to Word",
description: "Best for text-based PDFs; scanned pages need OCR",
},
"pdf-metadata": {
name: "PDF Metadata",
description: "Read and write PDF document metadata",
},
"html-to-pdf": {
name: "HTML to PDF",
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
},
"markdown-to-pdf": {
name: "Markdown to PDF",
description:
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
},
"csv-excel": {
name: "CSV to Excel",
description: "Convert between CSV and Excel (XLSX), both directions",
},
"csv-json": {
name: "CSV to JSON",
description: "Convert between CSV and JSON, both directions",
},
"json-xml": {
name: "JSON to XML",
description: "Convert between JSON and XML, both directions",
},
"split-csv": {
name: "Split CSV",
description: "Split a CSV into smaller files by row count",
},
pipeline: {
name: "Construtor de Pipeline",
description: "Encadeie varias ferramentas em um fluxo de trabalho",
},
processing: { canceled: "Processing canceled" },
mediaPlayer: {
unsupported: "Your browser does not support this media format.",
},
documentView: {
loadFailed: "Failed to load document.",
previousPage: "Previous page",
nextPage: "Next page",
},
},
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",
},
"convert-video": {
format: "Output format",
quality: "Quality",
high: "High",
balanced: "Balanced",
small: "Smallest",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"compress-video": {
quality: "Compression",
light: "Light",
balanced: "Balanced",
strong: "Strong",
resolution: "Resolution",
original: "Original",
submit: "Compress",
submitBatch: "Compress ({count} files)",
progressLabel: "Compressing",
},
"trim-video": {
start: "Start (seconds)",
end: "End (seconds)",
precise: "Frame-accurate (re-encodes)",
submit: "Trim",
submitBatch: "Trim ({count} files)",
progressLabel: "Trimming",
},
"mute-video": {
submit: "Remove audio",
submitBatch: "Remove audio ({count} files)",
progressLabel: "Muting",
},
"video-to-gif": {
fps: "Frames per second",
width: "Width (px)",
start: "Start (seconds)",
duration: "Duration (seconds)",
submit: "Create GIF",
submitBatch: "Create GIFs ({count} files)",
progressLabel: "Creating GIF",
},
"resize-video": {
preset: "Preset",
width: "Width (px)",
height: "Height (px)",
hint: "Leave one dimension empty to keep aspect ratio",
submit: "Resize",
submitBatch: "Resize ({count} files)",
progressLabel: "Resizing",
},
"crop-video": {
width: "Width (px)",
height: "Height (px)",
x: "X offset",
y: "Y offset",
submit: "Crop",
submitBatch: "Crop ({count} files)",
progressLabel: "Cropping",
},
"rotate-video": {
transform: "Transform",
cw90: "Rotate 90 clockwise",
ccw90: "Rotate 90 counter-clockwise",
rotate180: "Rotate 180",
hflip: "Flip horizontal",
vflip: "Flip vertical",
submit: "Rotate",
submitBatch: "Rotate ({count} files)",
progressLabel: "Rotating",
},
"change-fps": {
fps: "Frames per second",
submit: "Change FPS",
submitBatch: "Change FPS ({count} files)",
progressLabel: "Changing FPS",
},
"video-color": {
brightness: "Brightness",
contrast: "Contrast",
saturation: "Saturation",
gamma: "Gamma",
submit: "Apply",
submitBatch: "Apply ({count} files)",
progressLabel: "Adjusting color",
},
"video-speed": {
factor: "Speed factor",
keepPitch: "Keep original pitch",
submit: "Change speed",
submitBatch: "Change speed ({count} files)",
progressLabel: "Changing speed",
},
"reverse-video": {
hint: "Limited to clips up to 5 minutes",
submit: "Reverse",
submitBatch: "Reverse ({count} files)",
progressLabel: "Reversing",
},
"video-loudnorm": {
hint: "Normalizes audio to EBU R128 broadcast standard",
submit: "Normalize",
submitBatch: "Normalize ({count} files)",
progressLabel: "Normalizing",
},
"aspect-pad": {
target: "Target ratio",
color: "Background color",
colorHint: "Hex color, e.g. #000000",
submit: "Pad",
submitBatch: "Pad ({count} files)",
progressLabel: "Padding",
},
"blur-pad": {
target: "Target ratio",
blur: "Blur strength",
submit: "Pad",
submitBatch: "Pad ({count} files)",
progressLabel: "Padding",
},
"watermark-video": {
text: "Watermark text",
position: "Position",
fontSize: "Font size",
opacity: "Opacity",
color: "Color",
colorHint: "Hex color, e.g. #ffffff",
submit: "Watermark",
submitBatch: "Watermark ({count} files)",
progressLabel: "Watermarking",
},
"stabilize-video": {
smoothing: "Smoothing",
hint: "Runs two passes and takes longer than most tools",
submit: "Stabilize",
submitBatch: "Stabilize ({count} files)",
progressLabel: "Stabilizing",
},
"gif-to-video": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"video-to-webp": {
fps: "Frames per second",
width: "Width (px)",
quality: "Quality",
loop: "Loop animation",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"video-to-frames": {
mode: "Extraction mode",
modeAll: "All frames",
modeNth: "Every Nth frame",
modeTimestamps: "Specific timestamps",
n: "Take every Nth frame",
timestamps: "Timestamps (seconds)",
timestampsHint: "Comma-separated, e.g. 0.5, 2, 4.5",
format: "Image format",
submit: "Extract Frames",
submitBatch: "Extract Frames ({count} files)",
progressLabel: "Extracting frames",
},
"merge-videos": {
hint: "Files are joined in upload order",
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"replace-audio": {
hint: "Upload the video first, then the audio",
submit: "Replace Audio",
submitBatch: "Replace Audio ({count} files)",
progressLabel: "Replacing audio",
},
"burn-subtitles": {
fontSize: "Font size",
hint: "Upload a video and a subtitle file (.srt or .vtt)",
submit: "Burn Subtitles",
submitBatch: "Burn Subtitles ({count} files)",
progressLabel: "Burning subtitles",
},
"embed-subtitles": {
language: "Language code",
languageHint: "Three-letter ISO 639-2 code, e.g. eng, spa, fra",
submit: "Embed Subtitles",
submitBatch: "Embed Subtitles ({count} files)",
progressLabel: "Embedding subtitles",
},
"extract-subtitles": {
submit: "Extract Subtitles",
submitBatch: "Extract Subtitles ({count} files)",
progressLabel: "Extracting subtitles",
},
"images-to-video": {
secondsPerImage: "Seconds per image",
resolution: "Resolution",
fps: "Frames per second",
submit: "Create Video",
submitBatch: "Create Video ({count} files)",
progressLabel: "Creating slideshow",
},
"video-metadata": {
hint: "Metadata report appears in the result",
submit: "Strip Metadata",
submitBatch: "Strip Metadata ({count} files)",
progressLabel: "Stripping metadata",
},
"convert-audio": {
format: "Output format",
bitrate: "Bitrate (kbps)",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"trim-audio": {
start: "Start (seconds)",
end: "End (seconds)",
submit: "Trim",
submitBatch: "Trim ({count} files)",
progressLabel: "Trimming",
},
"extract-audio": {
format: "Output format",
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
"merge-pdf": {
addFiles: "Add PDFs to merge",
needTwo: "At least two PDFs are required",
orderHint: "{count} PDFs will merge in this order",
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"split-pdf": {
mode: "Split mode",
range: "Page range",
rangeHint: "e.g. 1-3, 5, 7-z",
everyN: "Pages per part",
submit: "Split",
submitBatch: "Split ({count} files)",
progressLabel: "Splitting",
},
"compress-pdf": {
preset: "Quality preset",
screen: "Screen (smallest)",
ebook: "Ebook (balanced)",
printer: "Printer (best quality)",
submit: "Compress",
submitBatch: "Compress ({count} files)",
progressLabel: "Compressing",
},
"rotate-pdf": {
angle: "Rotation angle",
range: "Page range",
rangeHint: "e.g. 1-3, 5, 1-z (all pages)",
submit: "Rotate",
submitBatch: "Rotate ({count} files)",
progressLabel: "Rotating",
},
"word-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"extract-pages": {
range: "Page range",
rangeHint: "e.g. 1-3, 5, 7-z",
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
"remove-pages": {
pages: "Pages to remove",
pagesHint: "e.g. 2, 4-6, z (last page)",
submit: "Remove",
submitBatch: "Remove ({count} files)",
progressLabel: "Removing",
},
"organize-pdf": {
order: "Page order",
orderHint: "e.g. 3,1,2 or 1-z (identity)",
submit: "Reorder",
submitBatch: "Reorder ({count} files)",
progressLabel: "Reordering",
},
"protect-pdf": {
userPassword: "User password",
ownerPassword: "Owner password (optional)",
ownerPasswordHint: "Defaults to user password if empty",
submit: "Protect",
submitBatch: "Protect ({count} files)",
progressLabel: "Encrypting",
},
"unlock-pdf": {
password: "Password",
submit: "Unlock",
submitBatch: "Unlock ({count} files)",
progressLabel: "Decrypting",
},
"repair-pdf": {
submit: "Repair",
submitBatch: "Repair ({count} files)",
progressLabel: "Repairing",
},
"linearize-pdf": {
submit: "Optimize",
submitBatch: "Optimize ({count} files)",
progressLabel: "Linearizing",
},
"grayscale-pdf": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"pdfa-convert": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"crop-pdf": {
margin: "Margin (points)",
submit: "Crop",
submitBatch: "Crop ({count} files)",
progressLabel: "Cropping",
},
"nup-pdf": {
perSheet: "Pages per sheet",
submit: "Arrange",
submitBatch: "Arrange ({count} files)",
progressLabel: "Arranging",
},
"booklet-pdf": {
perSheet: "Pages per sheet",
submit: "Create Booklet",
submitBatch: "Create Booklet ({count} files)",
progressLabel: "Creating booklet",
},
"watermark-pdf": {
text: "Watermark text",
position: "Position",
fontSize: "Font size",
opacity: "Opacity",
rotation: "Rotation",
submit: "Watermark",
submitBatch: "Watermark ({count} files)",
progressLabel: "Watermarking",
},
"pdf-page-numbers": {
position: "Position",
fontSize: "Font size",
submit: "Add Numbers",
submitBatch: "Add Numbers ({count} files)",
progressLabel: "Numbering",
},
"flatten-pdf": {
submit: "Flatten",
submitBatch: "Flatten ({count} files)",
progressLabel: "Flattening",
},
"redact-pdf": {
terms: "Terms to redact",
termsHint: "One term per line (max 50)",
caseSensitive: "Case sensitive",
submit: "Redact",
submitBatch: "Redact ({count} files)",
progressLabel: "Redacting",
},
"pdf-to-text": {
submit: "Extract Text",
submitBatch: "Extract Text ({count} files)",
progressLabel: "Extracting",
},
"pdf-to-word": {
hint: "Best for text-based PDFs; scanned pages need OCR",
submit: "Convert to Word",
submitBatch: "Convert to Word ({count} files)",
progressLabel: "Converting",
},
"pdf-metadata": {
title: "Title",
author: "Author",
subject: "Subject",
keywords: "Keywords",
submit: "Set Metadata",
submitBatch: "Set Metadata ({count} files)",
progressLabel: "Setting metadata",
},
"html-to-pdf": {
hint: "Remote resources are disabled for privacy.",
submit: "Convert to PDF",
submitBatch: "Convert to PDF ({count} files)",
progressLabel: "Converting",
},
"markdown-to-pdf": {
hint: "Remote resources are disabled for privacy.",
submit: "Convert to PDF",
submitBatch: "Convert to PDF ({count} files)",
progressLabel: "Converting",
},
"csv-excel": {
sheet: "Worksheet number",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"csv-json": {
pretty: "Pretty print",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"json-xml": {
pretty: "Pretty print",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"split-csv": {
rowsPerFile: "Rows per file",
keepHeader: "Keep header in each file",
submit: "Split",
submitBatch: "Split ({count} files)",
progressLabel: "Splitting",
},
},
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",
usage: "Usage",
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",
supportBundleButton: "Download Support Bundle",
supportBundleDescription:
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.",
supportBundleFailed: "Failed to download support bundle.",
},
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",
},
usage: {
heading: "Usage",
description: "Local usage statistics from jobs and file storage.",
periodLabel: "Period",
days7: "7 days",
days30: "30 days",
days90: "90 days",
jobsPerDayHeading: "Jobs per day",
topToolsHeading: "Top tools",
perUserHeading: "Per-user volume",
durationsHeading: "Duration percentiles",
noData: "No data for this period.",
dayColumn: "Day",
totalColumn: "Total",
completedColumn: "Completed",
failedColumn: "Failed",
toolColumn: "Tool",
runsColumn: "Runs",
userColumn: "User",
bytesInColumn: "Bytes in",
poolColumn: "Pool",
p50Column: "p50",
p95Column: "p95",
storageHeading: "Library storage",
storageFiles: "{count} files",
unknownUser: "(unknown)",
},
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...",
importBundle: "Import Bundle",
importDescription: "Upload a .tar.gz bundle archive exported from another installation.",
importButton: "Import from file",
importing: "Importing...",
importSuccess: "Bundle imported successfully.",
importError: "Bundle import failed: {error}",
},
about: {
heading: "Sobre",
appName: "SnapOtter",
appDescription:
"Uma suite de processamento de imagens auto-hospedada e focada em privacidade, com 70+ 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.",
"70+ 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}",
repairRequired: "Repair Required",
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
repairButton: "Repair {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",
},
a11y: {
skipToContent: "Skip to main content",
openSidebar: "Open sidebar",
closeSidebar: "Close sidebar",
closeSettings: "Close settings",
closeHelp: "Close help",
closeDialog: "Close dialog",
zoomIn: "Zoom in",
zoomOut: "Zoom out",
fitToView: "Fit to view",
actualSize: "Actual size",
previousImage: "Previous image",
nextImage: "Next image",
imageArea: "Image area",
imageViewer: "Image viewer",
fileDropZone: "File drop zone",
imageDropZone: "Image drop zone",
beforeAfterSlider: "Before/after comparison slider",
imageControls: "Image controls",
zoomControls: "Zoom controls",
dragToReorder: "Drag to reorder",
whiteBackground: "White background",
blackBackground: "Black background",
expandPanel: "Expand panel",
collapsePanel: "Collapse panel",
swapDimensions: "Swap dimensions",
applyCrop: "Apply crop",
cancelCrop: "Cancel crop",
fontFamily: "Font family",
textColor: "Text color",
flipHorizontal: "Flip horizontal",
flipVertical: "Flip vertical",
hexColorValue: "Hex color value",
backgroundColor: "Background color",
foregroundColor: "Foreground color",
swapColors: "Swap foreground and background colors",
resetColors: "Reset to default black and white",
foregroundHex: "Foreground color hex value",
undo: "Undo",
redo: "Redo",
layers: "Layers",
addLayer: "Add layer",
deleteLayer: "Delete layer",
cancelOperation: "Cancel operation",
fill: "Fill",
fileDetails: "File details",
language: "Language",
selected: "Selected",
deleteKey: "Delete key",
editRole: "Edit role",
deleteRole: "Delete role",
notInstalled: "Not installed",
queued: "Queued for install",
installing: "Installing",
imageNOfTotal: "Image {n} of {total}",
processingComplete: "Image processed successfully",
processingFailed: "Processing failed",
settingsDialog: "Settings",
helpDialog: "Help",
navigationMenu: "Navigation",
},
} as const;