Skip to content

Commit b5960fc

Browse files
authored
fix: Complete Portuguese (Brazil) translation with missing fields
🎯 Goal Ensure complete and accurate localization for Portuguese (Brazil) (pt-BR), resolving translation gaps from the initial implementation. ✅ Changes Made * Updated `messages/pt-BR.json` to be fully synchronized with the `en.json` source file. * Translated all missing keys, including critical sections that were previously untranslated (e.g., `settings.audio`, `recording`, `editor`, `footer`, and `article.editor.toolbar`). * Ensured 100% key-for-key parity with the source language file to prevent UI fallbacks. 🔍 Context The initial Portuguese translation (PR codexu#726) was incomplete. This caused the UI to fall back to other languages (like Chinese Traditional) or display raw translation keys for Brazilian users. This PR provides the correct and complete translations to ensure a fully native experience. 🧪 Ready for Testing All translation keys are properly mapped and ready for integration. Thank you for reviewing this contribution! 🚀
1 parent 52202c4 commit b5960fc

File tree

1 file changed

+195
-55
lines changed

1 file changed

+195
-55
lines changed

messages/pt-BR.json

Lines changed: 195 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"language": "Idioma",
2121
"confirm": "Confirmar",
2222
"selectPrompt": "Selecionar Prompt",
23-
"prompt": "Prompt",
23+
"prompt": "Instrução",
2424
"success": "Sucesso",
2525
"error": "Falha",
2626
"defaultFileName": "Sem Título"
@@ -73,6 +73,13 @@
7373
"button": "Configurar",
7474
"dialogTitle": "Configurar Barra de Ferramentas do Chat",
7575
"dialogDesc": "Arraste as ferramentas para ajustar a ordem, use as chaves para mostrar ou ocultar"
76+
},
77+
"recordToolbar": {
78+
"title": "Barra de Ferramentas de Registro",
79+
"desc": "Personalize a ordem de exibição e a visibilidade dos botões da barra de ferramentas de registro",
80+
"button": "Configurar",
81+
"dialogTitle": "Configurar Barra de Ferramentas de Registro",
82+
"dialogDesc": "Arraste as ferramentas para ajustar a ordem, use as chaves para mostrar ou ocultar"
7683
}
7784
}
7885
},
@@ -155,7 +162,7 @@
155162
"title": "Editor Markdown",
156163
"desc": "Aqui, você pode personalizar o editor Markdown, criando uma experiência de escrita adaptada às suas necessidades.",
157164
"typewriterMode": "Modo Máquina de Escrever",
158-
"typewriterModeDesc": "No modo máquina de escrever, o editor simulará um efeito de máquina de escrever, ajudando você a mergulhar melhor na escrita.",
165+
"typewriterModeDesc": "No modo máquina de escrever, o editor simula o efeito de uma máquina de escrever, permitindo que você se concentre melhor na escrita.",
159166
"outlineEnable": "Sumário habilitado por padrão",
160167
"outlineEnableDesc": "Habilitar esta opção tornará o sumário visível por padrão.",
161168
"outlinePosition": "Posição do Sumário",
@@ -174,12 +181,12 @@
174181
"enableLineNumberDesc": "Habilitar esta opção tornará o número da linha visível nos blocos de código."
175182
},
176183
"uploadStore": {
177-
"uploadConfirm": "Configuração de upload: por favor, garanta que o repositório de sincronização é privado, caso contrário os dados vazarão!",
178-
"downloadConfirm": "Baixar configuração irá sobrescrever a configuração local e reiniciar para ter efeito!",
184+
"uploadConfirm": "Configuração de Carregamento: Por favor, certifique-se de que o repositório de sincronização é privado, caso contrário, seus dados serão expostos!",
185+
"downloadConfirm": "Baixar a configuração irá sobrescrever a configuração local e exigirá um reinício para ter efeito!",
179186
"uploadSuccess": "Upload bem-sucedido",
180187
"downloadSuccess": "Download bem-sucedido",
181-
"upload": "Upload",
182-
"download": "Download"
188+
"upload": "Carregar",
189+
"download": "Baixar"
183190
},
184191
"about": {
185192
"title": "Sobre",
@@ -216,7 +223,7 @@
216223
},
217224
"issues": {
218225
"title": "Feedback de Problemas",
219-
"buttonName": "Feedback",
226+
"buttonName": "Comentários",
220227
"desc": "Se você encontrar um bug no NoteGen, por favor, reporte aqui."
221228
},
222229
"discussions": {
@@ -260,18 +267,33 @@
260267
}
261268
}
262269
},
263-
"readAloud": {
264-
"title": "Ler em Voz Alta",
265-
"desc": "Aqui, você pode configurar definições relacionadas à leitura em voz alta para fornecer funcionalidade de reprodução de voz para o conteúdo do chat.",
266-
"noModel": "Não usar",
267-
"options": {
268-
"audioModel": {
269-
"title": "Modelo de Áudio",
270+
"audio": {
271+
"title": "Configurações de Áudio",
272+
"desc": "Aqui, você pode configurar as definições de áudio, incluindo as funções de conversão de texto em fala (TTS) e fala em texto (STT).",
273+
"tts": {
274+
"title": "Texto para Fala (TTS)",
275+
"desc": "Configure a funcionalidade de leitura em voz alta para fornecer reprodução de voz para o conteúdo do chat.",
276+
"model": {
277+
"title": "Modelo TTS",
270278
"desc": "Selecione o modelo de IA para conversão de texto em fala, suportando vários tipos de voz e configurações de parâmetros."
271279
},
272280
"speed": {
273281
"title": "Velocidade da Fala",
274-
"desc": "Ajuste a velocidade de reprodução da voz, variando de 0.25x a 4x, sendo 1x a velocidade normal."
282+
"desc": "Ajuste a velocidade de reprodução da voz, variando de 0.5x a 2x, sendo 1x a velocidade normal."
283+
}
284+
},
285+
"stt": {
286+
"title": "Fala para Texto (STT)",
287+
"desc": "Configure o reconhecimento de voz para converter fala em registros de texto.",
288+
"mode": {
289+
"title": "Modo de Reconhecimento",
290+
"desc": "Escolha entre o reconhecimento embutido do navegador ou o reconhecimento por modelo de IA",
291+
"builtin": "Embutido",
292+
"model": "Modelo de IA"
293+
},
294+
"model": {
295+
"title": "Modelo STT",
296+
"desc": "Selecione o modelo de IA para reconhecimento de fala, suportando conversão de voz em texto em tempo real."
275297
}
276298
}
277299
},
@@ -334,6 +356,15 @@
334356
"selfHostedDesc": "Insira o endereço do seu servidor GitLab auto-hospedado (ex: https://gitlab.example.com)"
335357
},
336358
"gitlabAccessTokenDesc": "Crie um token de acesso pessoal em {instanceDisplayName}, requer permissão 'api'",
359+
"giteaInstanceType": "Tipo de Instância Gitea",
360+
"giteaInstanceTypeDesc": "Selecione o tipo de instância Gitea para conectar",
361+
"giteaInstanceTypePlaceholder": "Selecione o Tipo de Instância Gitea",
362+
"giteaInstanceTypeOptions": {
363+
"selfHosted": "Instância Auto-hospedada",
364+
"selfHostedDesc": "Insira o endereço do seu servidor Gitea auto-hospedado (ex: https://gitea.example.com)"
365+
},
366+
"giteaAccessTokenDesc": "Crie um token de acesso pessoal em {instanceDisplayName}, requer permissão total de repositório",
367+
"autoSync": "Sincronização Automática",
337368
"autoSyncOptions": {
338369
"placeholder": "Selecione o tempo de sincronização automática",
339370
"disabled": "Desabilitado",
@@ -530,12 +561,12 @@
530561
}
531562
},
532563
"template": {
533-
"title": "Template",
564+
"title": "Modelo",
534565
"desc": "Aqui você pode criar e gerenciar templates de organização personalizados para ajudar a IA a organizar o conteúdo dos registros de acordo com suas necessidades.",
535566
"customTemplate": "Template Personalizado",
536567
"addTemplate": "Adicionar Template Personalizado",
537568
"deleteConfirm": "Tem certeza de que deseja excluir este template?",
538-
"status": "Status",
569+
"status": "Estado",
539570
"name": "Nome",
540571
"content": "Conteúdo",
541572
"scope": "Escopo",
@@ -614,10 +645,11 @@
614645
"modelType": {
615646
"title": "Tipo de Modelo",
616647
"desc": "Selecione o tipo de modelo de IA com base em sua capacidade",
617-
"chat": "Chat",
648+
"chat": "Bate-papo",
618649
"image": "Imagem",
619650
"video": "Vídeo",
620-
"audio": "Áudio",
651+
"tts": "Texto para Fala (TTS)",
652+
"stt": "Fala para Texto (STT)",
621653
"embedding": "Embedding",
622654
"rerank": "Reordenação"
623655
},
@@ -631,7 +663,7 @@
631663
"modelProviderDesc": "Modelos personalizados suportam apenas modelos de IA com protocolo OpenAI.",
632664
"modelTitleDesc": "Nome personalizado, usado para identificar modelos de IA, por favor, não repita.",
633665
"modelBaseUrlDesc": "Você só precisa configurar o número da versão, por exemplo: https://api.openai.com/v1, o sufixo será adicionado automaticamente.",
634-
"modelDesc": "Alguns modelos suportam a obtenção da lista de modelos, se não for suportado, por favor, configure manually.",
666+
"modelDesc": "Alguns modelos suportam a obtenção da lista de modelos, se não for suportado, por favor, configure manualmente.",
635667
"temperatureDesc": "Controla a aleatoriedade da saída. Valores mais baixos tornam o conteúdo gerado mais determinístico.",
636668
"topPDesc": "Um método de amostragem nucleus, onde o modelo considera os resultados dos tokens com massa de probabilidade top_p. Então, 0.1 significa considerar apenas os 10% superiores da massa de probabilidade. Geralmente, sugerimos alterar este ou a temperatura, mas não ambos.",
637669
"customHeaders": "Cabeçalhos Personalizados",
@@ -754,8 +786,9 @@
754786
"image": "Imagem",
755787
"screenshot": "Captura de Tela",
756788
"text": "Texto",
789+
"recording": "Gravação",
757790
"file": "Arquivo",
758-
"link": "Link",
791+
"link": "Vínculo",
759792
"upload": "Upload de Registro",
760793
"download": "Download de Registro"
761794
},
@@ -850,20 +883,12 @@
850883
"error": "Falha"
851884
},
852885
"empty": {
853-
"features": [
854-
{
855-
"chat": "Converse com o bot de IA"
856-
},
857-
{
858-
"linked": "Vinculado aos seus registros ou notas"
859-
},
860-
{
861-
"clipboard": "Reconhecer registros ou imagens da área de transferência"
862-
},
863-
{
864-
"organize": "Organize seus registros em notas"
865-
}
866-
]
886+
"features": {
887+
"linked": "Vinculado aos seus registros ou notas",
888+
"chat": "Converse com o bot de IA",
889+
"organize": "Organize seus registros em notas",
890+
"clipboard": "Reconhecer registros ou imagens da área de transferência"
891+
}
867892
},
868893
"content": {
869894
"organize": "Organize seus registros em um artigo:"
@@ -877,7 +902,14 @@
877902
"rootDirectory": "Diretório raiz",
878903
"deleteTag": "Excluir tag atual, registros e notas (pode ser restaurado da lixeira)",
879904
"warning": "Após a conversão, você será redirecionado para a página de escrita.",
880-
"convert_button": "Converter"
905+
"convert_button": "Converter",
906+
"organizeAs": "Organize seus registros em um artigo:",
907+
"templateContent": "Conteúdo do template",
908+
"recordRange": "Intervalo de registros",
909+
"filterThinkingContent": "Remover conteúdo de 'pensamento' dos registros",
910+
"startOrganize": "Começar a organizar",
911+
"manageTemplate": "Gerenciar template",
912+
"cancel": "Cancelar"
881913
},
882914
"mark": {
883915
"recorded": "Gravado",
@@ -949,25 +981,23 @@
949981
"selectedCount": "{count} itens selecionados",
950982
"moveSelectedTags": "Mover {count} itens selecionados",
951983
"deleteSelected": "Excluir {count} itens selecionados",
952-
"deleteSelectedForever": "Excluir {count} itens selecionados permanentemente"
984+
"deleteSelectedForever": "Excluir {count} itens selecionados permanentemente",
985+
"text": "Gravar Texto",
986+
"recording": "Gravação de Áudio",
987+
"scan": "Digitalizar Imagem",
988+
"image": "Carregar Imagem",
989+
"link": "Gravar Link",
990+
"file": "Carregar Arquivo"
953991
}
954992
},
955993
"chat": {
956994
"empty": {
957-
"features": [
958-
{
959-
"chat": "Converse com o bot de IA"
960-
},
961-
{
962-
"linked": "Vinculado aos seus registros ou notas"
963-
},
964-
{
965-
"clipboard": "Reconhecer registros ou imagens da área de transferência"
966-
},
967-
{
968-
"organize": "Organize seus registros em notas"
969-
}
970-
]
995+
"features": {
996+
"linked": "Vinculado aos seus registros ou notas",
997+
"chat": "Converse com o bot de IA",
998+
"organize": "Organize seus registros em notas",
999+
"clipboard": "Reconhecer registros ou imagens da área de transferência"
1000+
}
9711001
},
9721002
"newChat": "Novo Chat com Nova Tag",
9731003
"removeChat": "Remover Chat com Tag Atual",
@@ -1003,7 +1033,7 @@
10031033
},
10041034
"input": {
10051035
"organize": "Organizar",
1006-
"chat": "Chat",
1036+
"chat": "Bate-papo",
10071037
"placeholder": {
10081038
"default": "Digite uma mensagem...",
10091039
"noApiKey": "Nenhuma Chave de API configurada, não é possível usar o chat de IA...",
@@ -1041,6 +1071,9 @@
10411071
"clearContext": {
10421072
"tooltip": "Limpar contexto"
10431073
},
1074+
"mcp": {
1075+
"tooltip": "Servidor MCP"
1076+
},
10441077
"chatLanguage": {
10451078
"tooltip": "Selecionar idioma do chat",
10461079
"placeholder": "Pesquisar idioma"
@@ -1139,12 +1172,12 @@
11391172
}
11401173
},
11411174
"navigation": {
1142-
"chat": "Chat",
1175+
"chat": "Bate-papo",
11431176
"record": "Registrar",
11441177
"write": "Escrever",
11451178
"search": "Pesquisar",
11461179
"githubImageHosting": "Hospedagem de Imagens Github",
1147-
"login": "Login",
1180+
"login": "Entrar",
11481181
"loading": "Carregando",
11491182
"view": "Ver",
11501183
"logout": "Sair",
@@ -1367,6 +1400,113 @@
13671400
"tools": "ferramentas",
13681401
"connecting": "Conectando",
13691402
"disconnected": "Desconectado"
1403+
},
1404+
"recording": {
1405+
"title": "Gravação de Voz",
1406+
"description": "Clique no botão do microfone para iniciar a gravação, o sistema reconhecerá automaticamente e converterá para texto",
1407+
"recording": "Gravando",
1408+
"paused": "Pausado",
1409+
"ready": "Pronto",
1410+
"processing": "Processando...",
1411+
"cancel": "Cancelar",
1412+
"error": "Erro",
1413+
"success": "Sucesso",
1414+
"noModelConfigured": "Modelo de reconhecimento de fala não configurado, configure nas configurações primeiro",
1415+
"startError": "Não é possível iniciar a gravação",
1416+
"noAudioData": "Nenhum dado de áudio gravado",
1417+
"transcriptionSuccess": "Reconhecimento de fala concluído",
1418+
"transcriptionEmpty": "Resultado do reconhecimento está vazio",
1419+
"transcriptionError": "Falha no reconhecimento de fala",
1420+
"noContentDetected": "Nenhum conteúdo detectado",
1421+
"doubleClickToSelectFile": "Clique duas vezes para selecionar o arquivo de áudio",
1422+
"mode": {
1423+
"builtin": "Reconhecimento do Navegador",
1424+
"builtinDesc": "Gratuito, reconhecimento em tempo real",
1425+
"model": "Reconhecimento por Modelo de IA",
1426+
"modelDesc": "Requer modelo STT, mais preciso"
1427+
}
1428+
},
1429+
"editor": {
1430+
"copySuccess": "Cópia Bem-sucedida",
1431+
"copySuccessDescription": "Copiado para a área de transferência",
1432+
"floatbar": {
1433+
"readAloud": {
1434+
"start": "Ler em Voz Alta",
1435+
"stop": "Parar Leitura",
1436+
"loading": "Carregando..."
1437+
}
1438+
},
1439+
"toolbar": {
1440+
"mark": {
1441+
"title": "Registros",
1442+
"tooltip": "Registros",
1443+
"description": "Converta registros em conteúdo para inserir no artigo.",
1444+
"noRecords": "Nenhum registro",
1445+
"ocrNoContent": "OCR não reconheceu nenhum conteúdo"
1446+
},
1447+
"question": {
1448+
"tooltip": "Perguntas e Respostas",
1449+
"selectContent": "Por favor, selecione o conteúdo primeiro",
1450+
"promptTemplate": "Texto de referência: \n{content}\nCom base na pergunta: \n{question}\n, forneça diretamente o conteúdo da resposta."
1451+
},
1452+
"continue": {
1453+
"tooltip": "Continuar",
1454+
"promptTemplate": "Com base no texto anterior: \n{content}\n continue escrevendo e retorne um conteúdo que não exceda 100 palavras.\nVocê pode referenciar o seguinte texto: \n{endContent}\n, mas evite duplicar seu conteúdo."
1455+
},
1456+
"polish": {
1457+
"tooltip": "Polir",
1458+
"selectContent": "Por favor, selecione o conteúdo primeiro",
1459+
"promptTemplate": "Polir este texto: \n{content}\n, mantenha o idioma inalterado, corrija erros de digitação e gramaticais, retorne diretamente o resultado polido."
1460+
},
1461+
"eraser": {
1462+
"tooltip": "Simplificar",
1463+
"selectContent": "Por favor, selecione o conteúdo primeiro",
1464+
"promptTemplate": "Simplificar este texto: \n{content}\n, este texto está muito verboso, reduza a contagem de palavras pela metade, mantenha o idioma inalterado, retorne diretamente o resultado otimizado."
1465+
},
1466+
"expansion": {
1467+
"tooltip": "Expandir",
1468+
"selectContent": "Por favor, selecione o conteúdo primeiro",
1469+
"promptTemplate": "Expandir este texto: \n{content}\n, este texto está muito curto, aumente a contagem de palavras pela metade, mantenha o idioma inalterado, retorne diretamente o resultado expandido."
1470+
},
1471+
"translation": {
1472+
"tooltip": "Traduzir",
1473+
"description": "Traduzir o texto selecionado",
1474+
"selectContent": "Por favor, selecione o conteúdo primeiro",
1475+
"promptTemplate": "Traduzir este texto: \n{content}\n, para {language}, retorne diretamente o resultado traduzido."
1476+
}
1477+
},
1478+
"upload": {
1479+
"error": "Falha no upload",
1480+
"needToken": "O upload de imagens precisa configurar o accessToken",
1481+
"uploading": "Enviando imagem"
1482+
}
1483+
},
1484+
"footer": {
1485+
"wordCount": "Palavras",
1486+
"sync": {
1487+
"sync": "Sincronizar",
1488+
"synced": "Sincronizado",
1489+
"syncing": "Sincronizando",
1490+
"syncFailed": "Falha na Sincronização",
1491+
"checkNetworkOrToken": "Por favor, verifique a conexão de rede ou o token",
1492+
"quickSync": "Sincronização Rápida"
1493+
},
1494+
"history": {
1495+
"loadingHistory": "Carregando histórico",
1496+
"historyRecords": "Registros do Histórico",
1497+
"noHistory": "Nenhum Histórico",
1498+
"loading": "Carregando",
1499+
"recordsCount": "registros",
1500+
"filterQuickSync": "Filtrar Sincronizações Rápidas",
1501+
"committedAt": "enviado em",
1502+
"pull": "Pull",
1503+
"quickSync": "Sincronização Rápida"
1504+
},
1505+
"vectorCalc": {
1506+
"tooltip": "Cálculo Vetorial: Cálculo automático 30s após a edição, ou clique para calcular agora",
1507+
"calculating": "Calculando",
1508+
"pending": "Pendente {progress}%",
1509+
"synced": "Sincronizado"
1510+
}
13701511
}
13711512
}
1372-

0 commit comments

Comments
 (0)