From 824b4b8564b43c9deae5576172383adf1e45b54a Mon Sep 17 00:00:00 2001 From: Glaucia Lemos Date: Fri, 18 Oct 2024 15:14:16 +0000 Subject: [PATCH 1/2] feat: add Portuguese (pt-BR) translations and update i18n configuration to include the new language --- app/frontend/src/i18n/config.ts | 8 +- .../src/locales/ptBR/translation.json | 148 ++++++++++++++++++ 2 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 app/frontend/src/locales/ptBR/translation.json diff --git a/app/frontend/src/i18n/config.ts b/app/frontend/src/i18n/config.ts index dd757aff98..ec98e15de7 100644 --- a/app/frontend/src/i18n/config.ts +++ b/app/frontend/src/i18n/config.ts @@ -7,6 +7,7 @@ import enTranslation from "../locales/en/translation.json"; import esTranslation from "../locales/es/translation.json"; import jaTranslation from "../locales/ja/translation.json"; import frTranslation from "../locales/fr/translation.json"; +import ptBRTranslation from "../locales/ptBR/translation.json"; export const supportedLngs: { [key: string]: { name: string; locale: string } } = { en: { @@ -24,6 +25,10 @@ export const supportedLngs: { [key: string]: { name: string; locale: string } } ja: { name: "日本語", locale: "ja-JP" + }, + ptBR: { + name: "Português", + locale: "pt-BR" } }; @@ -38,7 +43,8 @@ i18next en: { translation: enTranslation }, es: { translation: esTranslation }, fr: { translation: frTranslation }, - ja: { translation: jaTranslation } + ja: { translation: jaTranslation }, + ptBR: { translation: ptBRTranslation } }, fallbackLng: "en", supportedLngs: Object.keys(supportedLngs), diff --git a/app/frontend/src/locales/ptBR/translation.json b/app/frontend/src/locales/ptBR/translation.json new file mode 100644 index 0000000000..30746ab614 --- /dev/null +++ b/app/frontend/src/locales/ptBR/translation.json @@ -0,0 +1,148 @@ +{ + "pageTitle": "Azure OpenAI + AI Search", + "headerTitle": "Azure OpenAI + AI Search", + "chat": "Chat", + "qa": "Faça uma pergunta", + "login": "Entrar", + "logout": "Sair", + "clearChat": "Limpar chat", + "history": { + "chatHistory": "Histórico do chat", + "openChatHistory": "Abrir o histórico do chat", + "noHistory": "Nenhum histórico de chat", + "deleteModalTitle": "Excluir histórico do chat", + "deleteModalDescription": "Esta ação não pode ser desfeita. Deseja excluir o histórico do chat?", + "deleteLabel": "Excluir", + "cancelLabel": "Cancelar", + "today": "Hoje", + "yesterday": "Ontem", + "last7days": "Últimos 7 dias", + "last30days": "Últimos 30 dias" + }, + "upload": { + "fileLabel": "Carregar arquivo:", + "uploadedFilesLabel": "Arquivos previamente carregados:", + "noFilesUploaded": "Nenhum arquivo carregado ainda", + "loading": "Carregando...", + "manageFileUploads": "Gerenciar uploads de arquivos", + "uploadingFiles": "Carregando arquivos...", + "uploadedFileError": "Erro ao carregar arquivo - tente novamente ou entre em contato com o administrador.", + "deleteFile": "Excluir arquivo", + "deletingFile": "Excluindo arquivo...", + "errorDeleting": "Erro ao excluir.", + "fileDeleted": "Arquivo excluído" + }, + "developerSettings": "Configurações do desenvolvedor", + + "chatEmptyStateTitle": "Converse com seus dados", + "chatEmptyStateSubtitle": "Pergunte qualquer coisa ou tente um exemplo", + "defaultExamples": { + "1": "O que está incluído no meu plano Northwind Health Plus que não está no padrão?", + "2": "O que acontece em uma avaliação de desempenho?", + "3": "O que faz um Gerente de Produto?", + "placeholder": "Digite uma nova pergunta (por exemplo: Meu plano cobre exames oftalmológicos anuais?)" + }, + "askTitle": "Pergunte aos seus dados", + "gpt4vExamples": { + "1": "Compare o impacto das taxas de juros e do PIB nos mercados financeiros.", + "2": "Qual é a tendência esperada para o índice S&P 500 nos próximos cinco anos? Compare com o desempenho passado do S&P 500", + "3": "Você pode identificar alguma correlação entre os preços do petróleo e as tendências do mercado de ações?", + "placeholder": "Exemplo: Meu plano cobre exames oftalmológicos anuais?" + }, + "generatingAnswer": "Gerando resposta", + "citationWithColon": "Citação:", + "followupQuestions": "Acompanhar as respostas:", + + "tooltips": { + "submitQuestion": "Enviar pergunta", + "askWithVoice": "Faça uma pergunta com voz", + "stopRecording": "Parar de gravar a pergunta", + "showThoughtProcess": "Mostrar o processo de pensamento", + "showSupportingContent": "Mostrar conteúdo de suporte", + "speakAnswer": "Falar a resposta", + "info": "Info", + "save": "Save" + }, + + "headerTexts":{ + "thoughtProcess": "Processo de pensamento", + "supportingContent": "Conteúdo de suporte", + "citation": "Citação" + }, + + "labels": { + "toggleMenu": "Alternar menu", + "languagePicker": "Selecione seu idioma", + "headerText": "Configurar a geração de respostas", + "closeButton": "Fechar", + "promptTemplate": "Substituir o modelo de prompt", + "temperature": "Temperatura", + "seed": "Seed", + "minimumSearchScore": "Pontuação mínima de pesquisa", + "minimumRerankerScore": "Pontuação mínima de reclassificação", + "retrieveCount": "Recuperar esta quantidade de resultados de pesquisa:", + "excludeCategory": "Excluir categoria", + "useSemanticRanker": "Usar rankeador semântico para recuperação", + "useSemanticCaptions": "Usar legendas semânticas", + "useSuggestFollowupQuestions": "Sugerir perguntas complementares", + "useGPT4V": "Usar modelo de visão GPT", + "gpt4VInput": { + "label": "Entradas do modelo de visão GPT", + "options": { + "textAndImages": "Imagens e texto", + "images": "", + "texts": "Texto" + } + }, + "retrievalMode": { + "label": "Modo de recuperação", + "options": { + "hybrid": "Vetores + Texto (Híbrido)", + "vectors": "Vetores", + "texts": "Texto" + } + }, + "vector": { + "label": "Campos vetoriais (pesquisa vetorial de múltiplas consultas)", + "options": { + "embedding": "Incorporações de texto (Embeddings)", + "imageEmbedding": "Incorporações de imagem", + "both": "Incorporações de texto e imagem" + } + }, + "useOidSecurityFilter": "Usar filtro de segurança oid", + "useGroupsSecurityFilter": "Usar filtro de segurança de grupos", + "shouldStream": "Stream chat completion responses" + }, + + "helpTexts": { + "promptTemplate": + "Substitui o prompt usado para gerar a resposta com base na pergunta e nos resultados da pesquisa. Para adicionar ao prompt existente em vez de substituí-lo por completo, comece seu prompt com '>>>'.", + "temperature": + "Define a temperatura da solicitação para o LLM que gera a resposta. Temperaturas mais altas resultam em respostas mais criativas, mas podem ser menos fundamentadas.", + "seed": "Define um seed para melhorar a reprodutibilidade das respostas do modelo. O seed pode ser qualquer número inteiro.", + "searchScore": + "Define uma pontuação mínima para os resultados da pesquisa retornados pela pesquisa do Azure AI. O intervalo de pontuação depende de você usar o modo híbrido (padrão), vetores ou texto.", + "rerankerScore": + "Define uma pontuação mínima para os resultados da pesquisa retornados pelo ranker semântico. A pontuação varia de 0 a 4. Quanto maior a pontuação, mais relevante é o resultado em relação à pergunta.", + "retrieveNumber": + "Define o número de resultados de pesquisa a serem recuperados na pesquisa do Azure AI. Mais resultados podem aumentar a chance de encontrar a resposta correta, mas podem fazer com que o modelo se 'perca'.", + "excludeCategory": + "Especifica uma categoria para excluir dos resultados da pesquisa. Não há categorias usadas no conjunto de dados padrão.", + "useSemanticReranker": + "Ativa o rankeador semântico da pesquisa do Azure AI, um modelo que reordena os resultados da pesquisa com base na similaridade semântica à consulta do usuário.", + "useSemanticCaptions": + "Envia legendas semânticas para o LLM em vez do resultado completo da pesquisa. Uma legenda semântica é extraída durante o processo de ranqueamento semântico.", + "suggestFollowupQuestions": "Solicita ao LLM que sugira perguntas de acompanhamento com base na consulta do usuário.", + "useGPT4Vision": "Usa GPT-4-Turbo com Visão para gerar respostas com base em imagens e texto do índice.", + "vectorFields": + "Especifica quais campos de incorporação (embeddings) no Índice de Pesquisa do Azure AI serão pesquisados: 'Imagens e texto', 'Imagens' ou 'Texto'.", + "gpt4VisionInputs": + "Define o que será enviado ao modelo de visão. 'Imagens e texto' envia ambos, 'Imagens' envia apenas imagens e 'Texto' envia apenas texto.", + "retrievalMode": + "Define o modo de recuperação para a consulta do Azure AI Search. 'Vetores + Texto (Híbrido)' usa uma combinação de busca vetorial e de texto completo, 'Vetores' usa apenas a busca vetorial, e 'Texto' usa apenas a busca de texto completo. O híbrido geralmente é o ideal.", + "streamChat": "Transmite continuamente a resposta para a interface do chat conforme é gerada.", + "useOidSecurityFilter": "Filtra os resultados da pesquisa com base no OID do usuário autenticado.", + "useGroupsSecurityFilter": "Filtra os resultados da pesquisa com base nos grupos do usuário autenticado." + } +} From d0bb97445025bac856b3e277eec84db3cad8c890 Mon Sep 17 00:00:00 2001 From: Glaucia Lemos Date: Fri, 18 Oct 2024 15:55:38 +0000 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20update=20Portuguese=20language=20nam?= =?UTF-8?q?e=20to=20"Portugu=C3=AAs=20Brasileiro"=20in=20i18n=20configurat?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/frontend/src/i18n/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/frontend/src/i18n/config.ts b/app/frontend/src/i18n/config.ts index ec98e15de7..9f782d0909 100644 --- a/app/frontend/src/i18n/config.ts +++ b/app/frontend/src/i18n/config.ts @@ -27,7 +27,7 @@ export const supportedLngs: { [key: string]: { name: string; locale: string } } locale: "ja-JP" }, ptBR: { - name: "Português", + name: "Português Brasileiro", locale: "pt-BR" } };