From 6ce9488b318b32634e40ce6d048ab0f44709e50a Mon Sep 17 00:00:00 2001 From: beckeryuri Date: Mon, 25 Aug 2025 14:16:15 -0300 Subject: [PATCH 1/3] feat(i18n): add missing Portuguese (Brazil) translations - Add missing translations for common UI elements - Fix null values in pt_BR locale file - Complete translation coverage for Portuguese Brazilian users --- frontend/src/locales/pt_BR/common.js | 257 ++++++++++++++------------- 1 file changed, 132 insertions(+), 125 deletions(-) diff --git a/frontend/src/locales/pt_BR/common.js b/frontend/src/locales/pt_BR/common.js index bd1d69f89e6..d55351a8cbe 100644 --- a/frontend/src/locales/pt_BR/common.js +++ b/frontend/src/locales/pt_BR/common.js @@ -1,4 +1,3 @@ -// Anything with "null" requires a translation. Contribute to translation via a PR! const TRANSLATIONS = { onboarding: { home: { @@ -68,7 +67,7 @@ const TRANSLATIONS = { optional: "Opcional", yes: "Sim", no: "Não", - search: null, + search: "Pesquisar", }, settings: { title: "Configurações da Instância", @@ -225,7 +224,7 @@ const TRANSLATIONS = { docs: "Documentação", star: "Avalie-nos no Github", }, - keyboardShortcuts: null, + keyboardShortcuts: "Atalhos de Teclado", }, }, "new-workspace": { @@ -323,7 +322,7 @@ const TRANSLATIONS = { clearAllConfirm: "Tem certeza que deseja limpar todo o histórico? Esta ação é irreversível.", expand: "Expandir", - publish: null, + publish: "Publicar no Hub", }, }, refusal: { @@ -332,8 +331,9 @@ const TRANSLATIONS = { query: "consulta", "desc-end": "modo, você pode definir uma resposta personalizada quando nenhum contexto for encontrado.", - "tooltip-title": null, - "tooltip-description": null, + "tooltip-title": "Resposta de Recusa", + "tooltip-description": + "Configure uma mensagem personalizada quando o sistema não conseguir responder baseado no contexto disponível.", }, temperature: { title: "Temperatura do LLM", @@ -393,7 +393,7 @@ const TRANSLATIONS = { description: "Melhore as habilidades naturais do agente com estas funções pré-configuradas. Aplica-se a todos os workspaces.", rag: { - title: "RAG & memória longa duraçào", + title: "RAG & memória longa duração", description: 'Permite ao agente usar documentos locais para responder suas perguntas ou perguntar ao agente "lembrar" conteúdos de sua memória de longa duração.', }, @@ -410,7 +410,7 @@ const TRANSLATIONS = { generate: { title: "Gerar gráficos", description: - "Permite ao agent padrão gerar diversos tipos de gráficos a partir de dados armazenados ou informados no chat.", + "Permite ao agente padrão gerar diversos tipos de gráficos a partir de dados armazenados ou informados no chat.", }, save: { title: "Gerar & salvar arquivos", @@ -550,13 +550,13 @@ const TRANSLATIONS = { provider: "Provedor de LLM", providers: { azure_openai: { - azure_service_endpoint: null, - api_key: null, - chat_deployment_name: null, - chat_model_token_limit: null, - model_type: null, - default: null, - reasoning: null, + azure_service_endpoint: "Endpoint do Serviço Azure", + api_key: "Chave da API", + chat_deployment_name: "Nome do Deployment de Chat", + chat_model_token_limit: "Limite de Tokens do Modelo de Chat", + model_type: "Tipo do Modelo", + default: "Padrão", + reasoning: "Raciocínio", }, }, }, @@ -579,6 +579,8 @@ const TRANSLATIONS = { "Vínculo é o processo de transformar texto em vetores. Essas credenciais são necessárias para processar arquivos e prompts.", provider: { title: "Provedor de Vínculo", + description: + "Nenhuma configuração é necessária ao usar o mecanismo nativo do AnythingLLM.", }, }, text: { @@ -586,6 +588,9 @@ const TRANSLATIONS = { "desc-start": "Você pode alterar a forma como novos documentos são divididos antes de serem inseridos no banco de dados vetorial.", "desc-end": "Modifique apenas se entender os efeitos da divisão de texto.", + "warn-start": "Alterações afetarão apenas", + "warn-center": "documentos novos", + "warn-end": ", não os existentes.", size: { title: "Tamanho dos Trechos", description: "Comprimento máximo de caracteres em um único vetor.", @@ -615,7 +620,7 @@ const TRANSLATIONS = { workspace: "Workspace", chats: "Chats Enviados", active: "Domínios Ativos", - created: null, + created: "Criado Em", }, }, "embed-chats": { @@ -630,6 +635,30 @@ const TRANSLATIONS = { at: "Enviado Em", }, }, + multi: { + title: "Modo Multi-Usuário", + description: + "Configure sua instância para suportar sua equipe ativando o modo multi-usuário.", + enable: { + "is-enable": "Modo Multi-Usuário Ativo", + enable: "Ativar Modo Multi-Usuário", + description: + "Por padrão, você será o único administrador. Como administrador, você precisará criar contas para novos usuários. Não perca sua senha, pois apenas administradores podem redefini-la.", + username: "Nome de usuário admin", + password: "Senha de admin", + }, + password: { + title: "Proteção por Senha", + description: + "Proteja sua instância com uma senha. Não há recuperação, então salve esta senha.", + }, + instance: { + title: "Proteger Instância", + description: + "Por padrão, você será o único administrador. Como administrador, você precisará criar contas para novos usuários. Não perca sua senha, pois apenas administradores podem redefini-la.", + password: "Senha da instância", + }, + }, event: { title: "Logs de Eventos", description: @@ -892,14 +921,14 @@ const TRANSLATIONS = { normal: "Normal", large: "Grande", workspace_llm_manager: { - search: null, - loading_workspace_settings: null, - available_models: null, - available_models_description: null, - save: null, - saving: null, - missing_credentials: null, - missing_credentials_description: null, + search: "Buscar provedores de LLM", + loading_workspace_settings: "Carregando configurações do workspace...", + available_models: "Modelos Disponíveis", + available_models_description: "Selecione um modelo para este workspace", + save: "Salvar modelo do workspace", + saving: "Salvando...", + missing_credentials: "Credenciais em falta", + missing_credentials_description: "Configure as credenciais do LLM primeiro", }, }, profile_settings: { @@ -915,14 +944,14 @@ const TRANSLATIONS = { update_account: "Atualizar conta", theme: "Preferência de tema", language: "Idioma preferido", - failed_upload: null, - upload_success: null, - failed_remove: null, - profile_updated: null, - failed_update_user: null, - account: null, - support: null, - signout: null, + failed_upload: "Falha no upload da foto de perfil", + upload_success: "Foto de perfil atualizada com sucesso", + failed_remove: "Falha ao remover foto de perfil", + profile_updated: "Perfil atualizado com sucesso", + failed_update_user: "Falha ao atualizar perfil do usuário", + account: "Conta", + support: "Suporte", + signout: "Sair", }, "keyboard-shortcuts": { title: "Atalhos de Teclado", @@ -935,114 +964,92 @@ const TRANSLATIONS = { llmPreferences: "Preferências do LLM", chatSettings: "Ajustes do chat", help: "Exibe ajuda e atalhos", - showLLMSelector: null, + showLLMSelector: "Exibir seletor de LLM", }, }, community_hub: { publish: { system_prompt: { - success_title: null, - success_description: null, - success_thank_you: null, - view_on_hub: null, - modal_title: null, - name_label: null, - name_description: null, - name_placeholder: null, - description_label: null, - description_description: null, - tags_label: null, - tags_description: null, - tags_placeholder: null, - visibility_label: null, - public_description: null, - private_description: null, - publish_button: null, - submitting: null, - submit: null, - prompt_label: null, - prompt_description: null, - prompt_placeholder: null, + success_title: "Prompt de sistema publicado!", + success_description: "Seu prompt de sistema foi publicado com sucesso no Hub da Comunidade.", + success_thank_you: "Obrigado por contribuir!", + view_on_hub: "Ver no Hub", + modal_title: "Publicar prompt de sistema", + name_label: "Nome", + name_description: "Nome único para seu prompt de sistema", + name_placeholder: "Meu prompt de sistema incrível", + description_label: "Descrição", + description_description: "Descreva o que seu prompt de sistema faz", + tags_label: "Tags", + tags_description: "Adicione tags para ajudar outros a encontrar seu prompt", + tags_placeholder: "prompt, assistente, produtividade", + visibility_label: "Visibilidade", + public_description: "Qualquer pessoa pode ver e usar este prompt", + private_description: "Apenas você pode ver e usar este prompt", + publish_button: "Publicar prompt de sistema", + submitting: "Publicando...", + submit: "Publicar", + prompt_label: "Prompt de sistema", + prompt_description: "O conteúdo do seu prompt de sistema", + prompt_placeholder: "Você é um assistente útil que...", }, agent_flow: { - public_description: null, - private_description: null, - success_title: null, - success_description: null, - success_thank_you: null, - view_on_hub: null, - modal_title: null, - name_label: null, - name_description: null, - name_placeholder: null, - description_label: null, - description_description: null, - tags_label: null, - tags_description: null, - tags_placeholder: null, - visibility_label: null, - publish_button: null, - submitting: null, - submit: null, - privacy_note: null, + public_description: "Qualquer pessoa pode ver e usar este fluxo de agente", + private_description: "Apenas você pode ver e usar este fluxo de agente", + success_title: "Fluxo de agente publicado!", + success_description: "Seu fluxo de agente foi publicado com sucesso no Hub da Comunidade.", + success_thank_you: "Obrigado por contribuir!", + view_on_hub: "Ver no Hub", + modal_title: "Publicar fluxo de agente", + name_label: "Nome", + name_description: "Nome único para seu fluxo de agente", + name_placeholder: "Meu fluxo de agente incrível", + description_label: "Descrição", + description_description: "Descreva o que seu fluxo de agente faz", + tags_label: "Tags", + tags_description: "Adicione tags para ajudar outros a encontrar seu fluxo", + tags_placeholder: "agente, automação, fluxo de trabalho", + visibility_label: "Visibilidade", + publish_button: "Publicar fluxo de agente", + submitting: "Publicando...", + submit: "Publicar", + privacy_note: "Nota: dados sensíveis serão removidos antes da publicação", }, generic: { unauthenticated: { - title: null, - description: null, - button: null, + title: "Faça login para publicar", + description: "Você precisa estar logado para publicar no Hub da Comunidade", + button: "Fazer login", }, }, slash_command: { - success_title: null, - success_description: null, - success_thank_you: null, - view_on_hub: null, - modal_title: null, - name_label: null, - name_description: null, - name_placeholder: null, - description_label: null, - description_description: null, - command_label: null, - command_description: null, - command_placeholder: null, - tags_label: null, - tags_description: null, - tags_placeholder: null, - visibility_label: null, - public_description: null, - private_description: null, - publish_button: null, - submitting: null, - prompt_label: null, - prompt_description: null, - prompt_placeholder: null, - }, - }, - }, - security: { - title: "Segurança", - multiuser: { - title: "Modo Multi-Usuário", - description: - "Configure sua instância para suportar sua equipe ativando o modo multi-usuário.", - enable: { - "is-enable": "Modo Multi-Usuário Ativo", - enable: "Ativar Modo Multi-Usuário", - description: - "Por padrão, você será o único administrador. Como administrador, você precisará criar contas para novos usuários. Não perca sua senha, pois apenas administradores podem redefini-la.", - username: "Nome de usuário admin", - password: "Senha de admin", + success_title: "Comando de barra publicado!", + success_description: "Seu comando de barra foi publicado com sucesso no Hub da Comunidade.", + success_thank_you: "Obrigado por contribuir!", + view_on_hub: "Ver no Hub", + modal_title: "Publicar comando de barra", + name_label: "Nome", + name_description: "Nome único para seu comando de barra", + name_placeholder: "Meu comando incrível", + description_label: "Descrição", + description_description: "Descreva o que seu comando faz", + command_label: "Comando", + command_description: "O comando que os usuários digitarão", + command_placeholder: "/meu-comando", + tags_label: "Tags", + tags_description: "Adicione tags para ajudar outros a encontrar seu comando", + tags_placeholder: "comando, produtividade, útil", + visibility_label: "Visibilidade", + public_description: "Qualquer pessoa pode ver e usar este comando", + private_description: "Apenas você pode ver e usar este comando", + publish_button: "Publicar comando de barra", + submitting: "Publicando...", + prompt_label: "Prompt", + prompt_description: "O prompt que será executado quando o comando for usado", + prompt_placeholder: "Responda como um especialista em...", }, }, - password: { - title: "Proteção por Senha", - description: - "Proteja sua instância com uma senha. Não há recuperação, então salve esta senha.", - "password-label": "Senha da instância", - }, }, }; -export default TRANSLATIONS; +export default TRANSLATIONS; \ No newline at end of file From 55ea6f746b174cfac7eae8fff086c425727f6ef3 Mon Sep 17 00:00:00 2001 From: timothycarambat Date: Wed, 3 Sep 2025 10:47:59 -0700 Subject: [PATCH 2/3] normalized and verified --- frontend/src/locales/pt_BR/common.js | 84 ++++++++++++++-------------- 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/frontend/src/locales/pt_BR/common.js b/frontend/src/locales/pt_BR/common.js index d55351a8cbe..3335187361c 100644 --- a/frontend/src/locales/pt_BR/common.js +++ b/frontend/src/locales/pt_BR/common.js @@ -1,3 +1,4 @@ +// Anything with "null" requires a translation. Contribute to translation via a PR! const TRANSLATIONS = { onboarding: { home: { @@ -579,8 +580,6 @@ const TRANSLATIONS = { "Vínculo é o processo de transformar texto em vetores. Essas credenciais são necessárias para processar arquivos e prompts.", provider: { title: "Provedor de Vínculo", - description: - "Nenhuma configuração é necessária ao usar o mecanismo nativo do AnythingLLM.", }, }, text: { @@ -588,9 +587,6 @@ const TRANSLATIONS = { "desc-start": "Você pode alterar a forma como novos documentos são divididos antes de serem inseridos no banco de dados vetorial.", "desc-end": "Modifique apenas se entender os efeitos da divisão de texto.", - "warn-start": "Alterações afetarão apenas", - "warn-center": "documentos novos", - "warn-end": ", não os existentes.", size: { title: "Tamanho dos Trechos", description: "Comprimento máximo de caracteres em um único vetor.", @@ -635,30 +631,6 @@ const TRANSLATIONS = { at: "Enviado Em", }, }, - multi: { - title: "Modo Multi-Usuário", - description: - "Configure sua instância para suportar sua equipe ativando o modo multi-usuário.", - enable: { - "is-enable": "Modo Multi-Usuário Ativo", - enable: "Ativar Modo Multi-Usuário", - description: - "Por padrão, você será o único administrador. Como administrador, você precisará criar contas para novos usuários. Não perca sua senha, pois apenas administradores podem redefini-la.", - username: "Nome de usuário admin", - password: "Senha de admin", - }, - password: { - title: "Proteção por Senha", - description: - "Proteja sua instância com uma senha. Não há recuperação, então salve esta senha.", - }, - instance: { - title: "Proteger Instância", - description: - "Por padrão, você será o único administrador. Como administrador, você precisará criar contas para novos usuários. Não perca sua senha, pois apenas administradores podem redefini-la.", - password: "Senha da instância", - }, - }, event: { title: "Logs de Eventos", description: @@ -928,7 +900,8 @@ const TRANSLATIONS = { save: "Salvar modelo do workspace", saving: "Salvando...", missing_credentials: "Credenciais em falta", - missing_credentials_description: "Configure as credenciais do LLM primeiro", + missing_credentials_description: + "Configure as credenciais do LLM primeiro", }, }, profile_settings: { @@ -971,7 +944,8 @@ const TRANSLATIONS = { publish: { system_prompt: { success_title: "Prompt de sistema publicado!", - success_description: "Seu prompt de sistema foi publicado com sucesso no Hub da Comunidade.", + success_description: + "Seu prompt de sistema foi publicado com sucesso no Hub da Comunidade.", success_thank_you: "Obrigado por contribuir!", view_on_hub: "Ver no Hub", modal_title: "Publicar prompt de sistema", @@ -981,7 +955,8 @@ const TRANSLATIONS = { description_label: "Descrição", description_description: "Descreva o que seu prompt de sistema faz", tags_label: "Tags", - tags_description: "Adicione tags para ajudar outros a encontrar seu prompt", + tags_description: + "Adicione tags para ajudar outros a encontrar seu prompt", tags_placeholder: "prompt, assistente, produtividade", visibility_label: "Visibilidade", public_description: "Qualquer pessoa pode ver e usar este prompt", @@ -994,10 +969,12 @@ const TRANSLATIONS = { prompt_placeholder: "Você é um assistente útil que...", }, agent_flow: { - public_description: "Qualquer pessoa pode ver e usar este fluxo de agente", + public_description: + "Qualquer pessoa pode ver e usar este fluxo de agente", private_description: "Apenas você pode ver e usar este fluxo de agente", success_title: "Fluxo de agente publicado!", - success_description: "Seu fluxo de agente foi publicado com sucesso no Hub da Comunidade.", + success_description: + "Seu fluxo de agente foi publicado com sucesso no Hub da Comunidade.", success_thank_you: "Obrigado por contribuir!", view_on_hub: "Ver no Hub", modal_title: "Publicar fluxo de agente", @@ -1007,24 +984,28 @@ const TRANSLATIONS = { description_label: "Descrição", description_description: "Descreva o que seu fluxo de agente faz", tags_label: "Tags", - tags_description: "Adicione tags para ajudar outros a encontrar seu fluxo", + tags_description: + "Adicione tags para ajudar outros a encontrar seu fluxo", tags_placeholder: "agente, automação, fluxo de trabalho", visibility_label: "Visibilidade", publish_button: "Publicar fluxo de agente", submitting: "Publicando...", submit: "Publicar", - privacy_note: "Nota: dados sensíveis serão removidos antes da publicação", + privacy_note: + "Nota: dados sensíveis serão removidos antes da publicação", }, generic: { unauthenticated: { title: "Faça login para publicar", - description: "Você precisa estar logado para publicar no Hub da Comunidade", + description: + "Você precisa estar logado para publicar no Hub da Comunidade", button: "Fazer login", }, }, slash_command: { success_title: "Comando de barra publicado!", - success_description: "Seu comando de barra foi publicado com sucesso no Hub da Comunidade.", + success_description: + "Seu comando de barra foi publicado com sucesso no Hub da Comunidade.", success_thank_you: "Obrigado por contribuir!", view_on_hub: "Ver no Hub", modal_title: "Publicar comando de barra", @@ -1037,7 +1018,8 @@ const TRANSLATIONS = { command_description: "O comando que os usuários digitarão", command_placeholder: "/meu-comando", tags_label: "Tags", - tags_description: "Adicione tags para ajudar outros a encontrar seu comando", + tags_description: + "Adicione tags para ajudar outros a encontrar seu comando", tags_placeholder: "comando, produtividade, útil", visibility_label: "Visibilidade", public_description: "Qualquer pessoa pode ver e usar este comando", @@ -1045,11 +1027,31 @@ const TRANSLATIONS = { publish_button: "Publicar comando de barra", submitting: "Publicando...", prompt_label: "Prompt", - prompt_description: "O prompt que será executado quando o comando for usado", + prompt_description: + "O prompt que será executado quando o comando for usado", prompt_placeholder: "Responda como um especialista em...", }, }, }, + security: { + title: null, + multiuser: { + title: null, + description: null, + enable: { + "is-enable": null, + enable: null, + description: null, + username: null, + password: null, + }, + }, + password: { + title: null, + description: null, + "password-label": null, + }, + }, }; -export default TRANSLATIONS; \ No newline at end of file +export default TRANSLATIONS; From 252a23509872a484230f7812ad53e8a3e361f1b5 Mon Sep 17 00:00:00 2001 From: timothycarambat Date: Wed, 3 Sep 2025 11:02:08 -0700 Subject: [PATCH 3/3] linting --- frontend/src/locales/pt_BR/common.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/frontend/src/locales/pt_BR/common.js b/frontend/src/locales/pt_BR/common.js index 3335187361c..7795a3e98d4 100644 --- a/frontend/src/locales/pt_BR/common.js +++ b/frontend/src/locales/pt_BR/common.js @@ -1034,22 +1034,25 @@ const TRANSLATIONS = { }, }, security: { - title: null, + title: "Segurança", multiuser: { - title: null, - description: null, + title: "Modo Multi-Usuário", + description: + "Configure sua instância para suportar sua equipe ativando o modo multi-usuário.", enable: { - "is-enable": null, - enable: null, - description: null, - username: null, - password: null, + "is-enable": "Modo Multi-Usuário Ativo", + enable: "Ativar Modo Multi-Usuário", + description: + "Por padrão, você será o único administrador. Como administrador, você precisará criar contas para novos usuários. Não perca sua senha, pois apenas administradores podem redefini-la.", + username: "Nome de usuário admin", + password: "Senha de admin", }, }, password: { - title: null, - description: null, - "password-label": null, + title: "Proteção por Senha", + description: + "Proteja sua instância com uma senha. Não há recuperação, então salve esta senha.", + "password-label": "Senha da instância", }, }, };