Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/i18n/config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export const DEFAULT_LOCALE = 'en' as const

export const SUPPORTED_LOCALES = ['en', 'es', 'zh-CN'] as const
export const SUPPORTED_LOCALES = ['en', 'es', 'zh-CN', 'pt-BR'] as const

export const I18N_NAMESPACES = [
'common',
Expand Down
26 changes: 26 additions & 0 deletions src/i18n/locales/pt-BR/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"app": {
"name": "Recordly",
"editorTitle": "Recordly Editor",
"subtitle": "Gravação e edição de tela",
"language": "Idioma",
"manageRecordings": "Abrir pasta de gravações"
},
"actions": {
"cancel": "Cancelar",
"close": "Fechar",
"export": "Exportar",
"load": "Carregar",
"redo": "Refazer",
"reset": "Redefinir",
"save": "Salvar",
"undo": "Desfazer",
"delete": "Excluir",
"done": "Ok"
},
"errors": {
"invalidFileType": "Tipo de arquivo inválido",
"failedToUploadImage": "Falha ao carregar imagem",
"fileReadError": "Erro ao ler o arquivo."
}
}
62 changes: 62 additions & 0 deletions src/i18n/locales/pt-BR/dialogs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"export": {
"pleaseTryAgain": "Por favor, tente novamente",
"compilingGifProgress": "Compilando GIF... {{progress}}%",
"compilingGifWait": "Compilando GIF... Isso pode demorar",
"takeMoment": "Isso pode demorar um pouco...",
"exportFailed": "Exportação Falhou",
"compilingGifTitle": "Compilando GIF",
"exportingFormat": "Exportando {{format}}",
"exportComplete": "Exportação Completa",
"formatReady": "Seu {{format}} está pronto",
"showInFolder": "Mostrar na pasta",
"compiling": "Compilando",
"renderingFrames": "Renderizando quadros",
"processing": "Processando...",
"status": "Status",
"format": "Formato",
"compilingStatus": "Compilando...",
"frames": "Quadros",
"cancelExport": "Cancelar Exportação",
"reopenSaveDialog": "Abrir Janela de Salvamento Novamente",
"savedSuccess": "{{format}} salvo com sucesso!"
},
"addFont": {
"title": "Adicionar Fonte do Google",
"heading": "Adicionar Fonte do Google",
"description": "Adicione uma fonte personalizada do Google Fonts para usar nas anotações.",
"urlLabel": "URL de Importação da Fonte do Google Fonts",
"urlPlaceholder": "https://fonts.googleapis.com/css2?family=Roboto&display=swap",
"urlHelp": "Obtenha isso do Google Fonts: Selecione uma fonte → Clique em \"Obter fonte\" → Copie o URL @import",
"nameLabel": "Nome Exibido",
"namePlaceholder": "Minha Fonte Personalizada",
"nameHelp": "Isso é como a fonte aparecerá no seletor de fontes",
"adding": "Adicionando...",
"addFont": "Adicionar Fonte",
"enterUrl": "Por favor, insira uma URL de importação da fonte do Google Fonts",
"invalidUrl": "Por favor, insira uma URL válida do Google Fonts",
"enterName": "Por favor, insira um nome para a fonte",
"extractFailed": "Não foi possível extrair a família da fonte da URL",
"addSuccess": "Fonte \"{{name}}\" adicionada com sucesso",
"addFailed": "Falha ao adicionar fonte",
"loadTimeout": "A fonte demorou demais para carregar. Verifique a URL e tente novamente.",
"loadFailed": "A fonte não pôde ser carregada. Verifique se a URL do Google Fonts está correta."
},
"shortcutsConfig": {
"title": "Atalhos de Teclado",
"configurable": "Configurável",
"fixed": "Fixo",
"pressEscToCancel": "Pressione Esc para cancelar",
"clickToChange": "Clique para alterar",
"pressAKey": "Pressione uma tecla...",
"alreadyUsedBy": "Já está em uso por <strong>{{action}}</strong>",
"swap": "Trocar",
"reserved": "Este atalho é reservado para \"{{label}}\" e não pode ser reatribuído.",
"saved": "Atalhos de teclado salvos",
"resetNotice": "Redefinir para atalhos padrão — clique em Salvar para aplicar",
"instructions": "Clique em um atalho e pressione a nova combinação de teclas. Pressione Esc para cancelar.",
"resetToDefaults": "Redefinir para padrão",
"cancel": "Cancelar",
"save": "Salvar"
}
}
118 changes: 118 additions & 0 deletions src/i18n/locales/pt-BR/editor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{
"playback": {
"play": "Reproduzir",
"pause": "Pausar"
},
"annotations": {
"settings": "Configurações de Anotação",
"active": "Ativo",
"text": "Texto",
"image": "Imagem",
"arrow": "Seta",
"textContent": "Conteúdo de Texto",
"textPlaceholder": "Digite seu texto...",
"fontStyle": "Estilo de Fonte",
"selectStyle": "Selecione o estilo",
"size": "Tamanho",
"toggleBold": "Alternar negrito",
"toggleItalic": "Alternar itálico",
"toggleUnderline": "Alternar sublinhado",
"alignLeft": "Alinhar à esquerda",
"alignCenter": "Alinhar ao centro",
"alignRight": "Alinhar à direita",
"textColor": "Cor do Texto",
"background": "Fundo",
"none": "Nenhum",
"clearBackground": "Limpar Fundo",
"uploadImage": "Carregar Imagem",
"supportedFormats": "Formatos suportados: JPG, PNG, GIF, WebP",
"arrowDirection": "Direção da Seta",
"strokeWidth": "Largura da Linha: {{width}}px",
"arrowColor": "Cor da Seta",
"deleteAnnotation": "Excluir Anotação",
"shortcutsAndTips": "Atalhos e Dicas",
"tipSelectAnnotation": "Mova o cabeçote de reprodução para a seção sobreposta e selecione um item.",
"tipCycleForward": "Use Tab para percorrer os itens sobrepostos.",
"tipCycleBackward": "Use Shift+Tab para percorrer em ordem inversa.",
"imageUploadSuccess": "Imagem carregada com sucesso!",
"imageUploadError": "Por favor, carregue um arquivo de imagem JPG, PNG, GIF ou WebP."
},
"fontStyles": {
"classic": "Clássico",
"editor": "Editor",
"strong": "Forte",
"typewriter": "Typewriter",
"deco": "Deco",
"simple": "Simples",
"modern": "Moderno",
"clean": "Limpo"
},
"format": {
"mp4Video": "MP4 Vídeo",
"mp4Description": "Arquivo de vídeo de alta qualidade",
"gifAnimation": "Animação GIF",
"gifDescription": "Imagem animada para compartilhamento"
},
"gifOptions": {
"frameRate": "Taxa de Quadro",
"outputSize": "Tamanho de Saída",
"outputDimensions": "Saída: {{width}} × {{height}}px",
"loopAnimation": "Loop Animação",
"loopDescription": "GIF será reproduzido continuamente"
},
"tutorial": {
"howTrimmingWorks": "Como funciona o recorte",
"title": "Como Funciona o Recorte",
"understanding": "Entendendo como cortar partes indesejadas do seu vídeo.",
"descriptionP1": "A ferramenta de recorte funciona definindo os segmentos que você deseja",
"descriptionRemove": "remover",
"descriptionP2": "do seu vídeo.",
"descriptionP3": "Qualquer parte da linha do tempo que está coberta por um segmento de recorte vermelho será cortada quando você exportar.",
"visualExample": "Visual Example",
"removed": "REMOVIDO",
"kept": "Manter",
"finalVideo": "Vídeo Final",
"part": "Parte {{number}}",
"addTrimStep": "1. Adicionar Recorte",
"addTrimDesc": "Pressione T ou clique no ícone de cortar para marcar uma seção para remoção.",
"adjustStep": "2. Ajustar",
"adjustDesc": "Arraste as bordas da região vermelha para cobrir exatamente o que você deseja cortar."
},
"feedback": {
"trigger": "Feedback",
"title": "Feedback & contato",
"description": "Fale diretamente conosco ou abra um problema se algo estiver quebrado ou faltando.",
"emailLabel": "Email",
"xLabel": "X",
"reportIssue": "Reportar problema / enviar feedback",
"openFailed": "Falha ao abrir link."
},
"keyboardShortcuts": {
"trigger": "Atalhos",
"title": "Atalhos de Teclado",
"description": "Referência rápida para as controles da linha do tempo e do editor.",
"customizeTooltip": "Personalizar atalhos",
"customize": "Personalizar",
"panTimeline": "Mover Linha do Tempo",
"zoomTimeline": "Zoom Linha do Tempo",
"cycleAnnotations": "Ciclar Anotações",
"tab": "Tab"
},
"actions": {
"saveAgain": "Salvar Novamente",
"showInFolder": "Mostrar na pasta"
},
"project": {
"untitled": "Sem Título"
},
"exportStatus": {
"exporting": "Exportando",
"renderingFile": "Renderizando arquivo.",
"preparing": "Preparando exportação...",
"completePercent": "{{percent}}% concluído",
"issue": "Problema de Exportação",
"complete": "Exportação Concluída",
"savedSuccessfully": "Seu arquivo foi salvo com sucesso."
},
"openRecordingsFolder": "Abrir pasta de gravações"
}
62 changes: 62 additions & 0 deletions src/i18n/locales/pt-BR/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"recording": {
"disableSystemAudio": "Desativar áudio do sistema",
"enableSystemAudio": "Ativar áudio do sistema",
"disableMicrophone": "Desativar microfone",
"enableMicrophone": "Ativar microfone",
"disableWebcam": "Desativar overlay da webcam",
"enableWebcam": "Ativar overlay da webcam",
"countdownDelay": "Delay de contagem regressiva",
"noDelay": "Sem delay",
"record": "Gravar",
"recordingFolder": "Caminho de gravações: {{path}}",
"chooseRecordingsFolder": "Escolher caminho de gravações",
"folderPath": "Caminho: /{{name}}/",
"openVideoFile": "Abrir arquivo de vídeo",
"openProject": "Abrir projeto",
"hideHudFromVideo": "Ocultar HUD na gravação",
"showHudInVideo": "Mostrar HUD na gravação",
"hideHud": "Ocultar HUD",
"closeApp": "Fechar Aplicativo",
"screens": "Telas",
"windows": "Janelas",
"noSourcesFound": "Nenhum source encontrado",
"microphone": "Microfone",
"turnOffMicrophone": "Desativar Microfone",
"selectMicToEnable": "Selecione um microfone para ativar",
"noMicrophonesFound": "Nenhum microfone encontrado",
"webcam": "Webcam",
"turnOffWebcam": "Desativar Webcam",
"selectWebcamToEnable": "Selecione uma webcam para ativar",
"noWebcamsFound": "Nenhuma webcam encontrada",
"recordingsFolder": "Caminho de gravações",
"language": "Idioma",
"paused": "PAUSADO",
"rec": "REC",
"resume": "Retomar",
"pause": "Pausar",
"stop": "Parar",
"cancel": "Cancelar",
"more": "Mais"
},
"sourceSelector": {
"loadingSources": "Carregando fontes...",
"screens": "Telas",
"windows": "Janelas",
"windowsNote": "Apenas janelas visíveis (não minimizadas) podem ser gravadas.",
"windowPlaceholder": "Janela",
"cancel": "Cancelar",
"share": "Compartilhar"
},
"permissions": {
"screenRecordingNeeded": "Recordly precisa da permissão de gravação de tela antes de começar. Configurações do sistema foram abertas. Após habilitar, feche e abra Recordly novamente.",
"screenRecordingMissing": "Permissão de gravação de tela ainda está faltando. Configurações do sistema foram abertas novamente. Habilite-a, então feche e abra Recordly antes de gravar.",
"accessibilityNeeded": "Recordly também precisa da permissão de acessibilidade para rastreamento do cursor. Configurações do sistema foram abertas. Após habilitar, feche e abra Recordly novamente.",
"accessibilityMissing": "Permissão de acessibilidade ainda está faltando. Configurações do sistema foram abertas novamente. Habilite-a, então feche e abra Recordly antes de gravar.",
"selectSource": "Por favor, selecione uma fonte para gravar",
"systemAudioUnavailable": "Áudio do sistema não está disponível para esta fonte. A gravação continuará sem áudio do sistema.",
"microphoneDenied": "Microfone acesso foi negado. A gravação continuará sem áudio do microfone.",
"failedToStart": "Falha ao iniciar gravação: {{error}}",
"failedToStartGeneric": "Falha ao iniciar gravação"
}
}
96 changes: 96 additions & 0 deletions src/i18n/locales/pt-BR/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{
"zoom": {
"level": "Nível de Zoom",
"selectRegion": "Selecione uma região de zoom para ajustar",
"deleteZoom": "Excluir Zoom"
},
"trim": {
"deleteRegion": "Excluir Região de Cortar"
},
"speed": {
"playbackSpeed": "Velocidade de Reprodução",
"selectRegion": "Selecione uma região de velocidade para ajustar",
"deleteRegion": "Excluir Região de Velocidade"
},
"effects": {
"title": "Efeitos de Vídeo",
"show": "Mostrar",
"showCursor": "Mostrar Cursor",
"loopCursor": "Loop cursor",
"backgroundBlur": "Blur de Fundo",
"zoomMotionBlur": "Zoom Motion Blur",
"connectZooms": "Conectar Zooms",
"cursorSize": "Tamanho do Cursor",
"cursorSmoothing": "Suavização do Cursor",
"off": "Off",
"cursorMotionBlur": "Blur de Movimento do Cursor",
"cursorClickBounce": "Bounce do Clique do Cursor",
"cursorClickBounceDuration": "Velocidade do Bounce",
"cursorSway": "Movimento do Cursor",
"webcam": "Overlay da Webcam",
"webcamFootage": "Vídeo da Webcam",
"webcamFootageDescription": "Nenhum vídeo da webcam linkado a este vídeo",
"uploadWebcamFootage": "Upload vídeo",
"replaceWebcamFootage": "Substituir vídeo",
"removeWebcamFootage": "Remover vídeo",
"webcamFootageAdded": "Vídeo da webcam linkado",
"webcamFootageRemoved": "Vídeo da webcam removido",
"webcamSize": "Tamanho da Webcam",
"webcamReactToZoom": "Webcam Reage ao Zoom",
"webcamRoundness": "Arredondamento da Webcam",
"webcamShadow": "Sombra da Webcam",
"shadow": "Sombra",
"radius": "Raio",
"roundness": "Arredondamento",
"padding": "Preenchimento",
"removeBackground": "Remover fundo"
},
"sections": {
"scene": "Cena",
"cursor": "Cursor",
"webcam": "Webcam",
"frame": "Quadro",
"crop": "Cortar"
},
"crop": {
"title": "Cortar Vídeo",
"instruction": "Arraste em cada lado para ajustar a área de corte",
"top": "Topo",
"bottom": "Baixo",
"left": "Esquerda",
"right": "Direita",
"openEditor": "Abrir Editor de Cortar"
},
"background": {
"title": "Fundo",
"image": "Imagem",
"color": "Cor",
"gradient": "Gradiente",
"wallpaperPreview": "Pré-visualização de wallpaper",
"uploadCustom": "Upload Personalizado",
"uploadSuccess": "Imagem personalizada carregada com sucesso!",
"uploadError": "Por favor, carregue um arquivo de imagem JPG ou JPEG.",
"uploadErrorDescription": "Apenas arquivos de imagem JPG e JPEG são suportados."
},
"export": {
"title": "Exportar",
"mp4": "MP4",
"gif": "GIF",
"quality": {
"low": "Baixa",
"medium": "Média",
"high": "Alta",
"original": "Original"
},
"loop": "Loop",
"outputDimensions": "Saída: {{dimensions}}px",
"sizePresetOriginalShort": "Orig",
"sizePresetMediumShort": "Med",
"sizePresetLargeShort": "Lar",
"loadProject": "Carregar Projeto",
"saveProject": "Salvar Projeto",
"exportVideo": "Exportar {{format}}",
"reportBug": "Reportar Bug",
"starOnGithub": "Estrelar no GitHub"
}
}
16 changes: 16 additions & 0 deletions src/i18n/locales/pt-BR/shortcuts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"actions": {
"addZoom": "Adicionar Zoom",
"addTrim": "Adicionar Cortar",
"addSpeed": "Adicionar Velocidade",
"addAnnotation": "Adicionar Anotação",
"addKeyframe": "Adicionar Keyframe",
"deleteSelected": "Excluir Selecionado",
"playPause": "Reproduzir / Pausar",
"cycleForward": "Avançar Anotações",
"cycleBackward": "Retroceder Anotações",
"deleteSelectedAlt": "Excluir Selecionado (alt)",
"panTimeline": "Mover Timeline",
"zoomTimeline": "Zoom Timeline"
}
}
Loading