diff --git a/src/assets/locale/pt-BR/common.json b/src/assets/locale/pt-BR/common.json new file mode 100644 index 0000000..f2af56a --- /dev/null +++ b/src/assets/locale/pt-BR/common.json @@ -0,0 +1,88 @@ +{ + "pageAssist": "Page Assist", + "selectAModel": "Selecione um Modelo", + "save": "Salvar", + "saved": "Salvo", + "cancel": "Cancelar", + "retry": "Tentar Novamente", + "share": { + "tooltip": { + "share": "Compartilhar" + }, + "modal": { + "title": "Compartilhar link para o Chat" + }, + "form": { + "defaultValue": { + "name": "Anônimo", + "title": "Chat sem título" + }, + "title": { + "label": "Título do Chat", + "placeholder": "Digite o título do Chat", + "required": "O título do Chat é obrigatório" + }, + "name": { + "label": "Seu nome", + "placeholder": "Digite seu nome", + "required": "Seu nome é obrigatório" + }, + "btn": { + "save": "Gerar Link", + "saving": "Gerando Link..." + } + }, + "notification": { + "successGenerate": "Link copiado para a área de transferência", + "failGenerate": "Falha ao gerar link" + } + }, + "copyToClipboard": "Copiar para a área de transferência", + "webSearch": "Pesquisando na web", + "regenerate": "Regenerar", + "edit": "Editar", + "saveAndSubmit": "Salvar e Enviar", + "editMessage": { + "placeholder": "Digite uma mensagem..." + }, + "submit": "Enviar", + "noData": "Sem dados", + "noHistory": "Sem histórico de chat", + "chatWithCurrentPage": "Conversar com a página atual", + "beta": "Beta", + "tts": "Ler em voz alta", + "currentChatModelSettings": "Configurações do Modelo de Chat Atual", + "modelSettings": { + "label": "Configurações do Modelo", + "description": "Defina as opções do modelo globalmente para todos os chats", + "form": { + "keepAlive": { + "label": "Manter Vivo", + "help": "controla quanto tempo o modelo permanecerá carregado na memória após a solicitação (padrão: 5m)", + "placeholder": "Digite a duração do Manter Vivo (ex: 5m, 10m, 1h)" + }, + "temperature": { + "label": "Temperatura", + "placeholder": "Digite o valor da Temperatura (ex: 0.7, 1.0)" + }, + "numCtx": { + "label": "Janela de contexto", + "placeholder": "Digite o valor do tamanho da janela de contexto (padrão: 2048)" + }, + "seed": { + "label": "Semente", + "placeholder": "Digite o valor da Semente (ex: 1234)", + "help": "Reprodutibilidade da saída do modelo" + }, + "topK": { + "label": "Top K", + "placeholder": "Digite o valor do Top K (ex: 40, 100)" + }, + "topP": { + "label": "Top P", + "placeholder": "Digite o valor do Top P (ex: 0.9, 0.95)" + } + }, + "advanced": "Mais Configurações do Modelo" + } +} \ No newline at end of file diff --git a/src/assets/locale/pt-BR/knowledge.json b/src/assets/locale/pt-BR/knowledge.json new file mode 100644 index 0000000..3ac43e6 --- /dev/null +++ b/src/assets/locale/pt-BR/knowledge.json @@ -0,0 +1,42 @@ +{ + "addBtn": "Adicionar Novo Conhecimento", + "columns": { + "title": "Título", + "status": "Status", + "embeddings": "Modelo de Embedding", + "createdAt": "Criado Em", + "action": "Ações" + }, + "expandedColumns": { + "name": "Nome" + }, + "tooltip": { + "delete": "Excluir" + }, + "confirm": { + "delete": "Você tem certeza que deseja excluir este conhecimento?" + }, + "deleteSuccess": "Conhecimento excluído com sucesso", + "status": { + "pending": "Pendente", + "finished": "Concluído", + "processing": "Processando" + }, + "addKnowledge": "Adicionar Conhecimento", + "form": { + "title": { + "label": "Título do Conhecimento", + "placeholder": "Insira o título do conhecimento", + "required": "Título do conhecimento é obrigatório" + }, + "uploadFile": { + "label": "Upload de Arquivo", + "uploadText": "Arraste e solte um arquivo aqui ou clique para upload", + "uploadHint": "Tipos de arquivo suportados: .pdf, .csv, .txt, .md, .docx", + "required": "Arquivo é obrigatório" + }, + "submit": "Enviar", + "success": "Conhecimento adicionado com sucesso" + }, + "noEmbeddingModel": "Por favor, adicione um modelo de embedding primeiro na página de configurações do Ollama" +} \ No newline at end of file diff --git a/src/assets/locale/pt-BR/option.json b/src/assets/locale/pt-BR/option.json new file mode 100644 index 0000000..9fab1b3 --- /dev/null +++ b/src/assets/locale/pt-BR/option.json @@ -0,0 +1,12 @@ +{ + "newChat": "Novo Chat", + "selectAPrompt": "Selecione um Prompt", + "githubRepository": "Repositório do GitHub", + "settings": "Configurações", + "sidebarTitle": "Histórico de Chat", + "error": "Erro", + "somethingWentWrong": "Algo deu errado", + "validationSelectModel": "Selecione um modelo para continuar", + "deleteHistoryConfirmation": "Você tem certeza de que deseja excluir este histórico?", + "editHistoryTitle": "Insira um novo título" +} diff --git a/src/assets/locale/pt-BR/playground.json b/src/assets/locale/pt-BR/playground.json new file mode 100644 index 0000000..f0cdfe3 --- /dev/null +++ b/src/assets/locale/pt-BR/playground.json @@ -0,0 +1,29 @@ +{ + "ollamaState": { + "searching": "Buscando seu Ollama 🦙", + "running": "O Ollama está rodando 🦙", + "notRunning": "Não foi possível conectar ao Ollama 🦙", + "connectionError": "Parece que você está tendo um erro de conexão. Por favor, consulte a documentação para solucionar o problema." + }, + "formError": { + "noModel": "Por favor, selecione um modelo", + "noEmbeddingModel": "Por favor, defina um modelo de embedding na página de configurações > Ollama" + }, + "form": { + "textarea": { + "placeholder": "Insira um mensagem..." + }, + "webSearch": { + "on": "On", + "off": "Off" + } + }, + "tooltip": { + "searchInternet": "Pesquisar Internet", + "speechToText": "Fala para Texto", + "uploadImage": "Carregar Imagem", + "stopStreaming": "Parar Transmissão", + "knowledge": "Conhecimento" + }, + "sendWhenEnter": "Enviar quando pressionar Enter" +} diff --git a/src/assets/locale/pt-BR/settings.json b/src/assets/locale/pt-BR/settings.json new file mode 100644 index 0000000..1c2aae9 --- /dev/null +++ b/src/assets/locale/pt-BR/settings.json @@ -0,0 +1,286 @@ +{ + "generalSettings": { + "title": "Configurações Gerais", + "settings": { + "heading": "Configurações da Interface Web", + "speechRecognitionLang": { + "label": "Linguagem de Reconhecimento de Fala", + "placeholder": "Selecione uma linguagem" + }, + "language": { + "label": "Linguagem", + "placeholder": "Selecione uma linguagem" + }, + "darkMode": { + "label": "Alterar Tema", + "options": { + "light": "Claro", + "dark": "Escuro" + } + }, + "copilotResumeLastChat": { + "label": "Retomar o último chat ao abrir o Painel Lateral (Copilot)" + }, + "hideCurrentChatModelSettings": { + "label": "Ocultar Configurações do Modelo de Chat Atual" + } + }, + "webSearch": { + "heading": "Gerenciar Pesquisa na Web", + "searchMode": { + "label": "Realizar Pesquisa Simples na Internet" + }, + "provider": { + "label": "Motor de Busca", + "placeholder": "Selecione um motor de busca" + }, + "totalSearchResults": { + "label": "Resultados de Pesquisa Totais", + "placeholder": "Insira Resultados de Pesquisa Totais" + } + }, + "system": { + "heading": "Configurações do Sistema", + "deleteChatHistory": { + "label": "Excluir Histórico de Chat", + "button": "Excluir", + "confirm": "Você tem certeza de que deseja excluir seu histórico de chat? Esta ação não pode ser desfeita." + }, + "export": { + "label": "Exportar Histórico de Chat, Base de Conhecimento e Prompts", + "button": "Exportar Dados", + "success": "Exportação Bem-Sucedida" + }, + "import": { + "label": "Importar Histórico de Chat, Base de Conhecimento e Prompts", + "button": "Importar Dados", + "success": "Importação Bem-Sucedida", + "error": "Erro de Importação" + } + }, + "tts": { + "heading": "Configurações de Fala", + "ttsEnabled": { + "label": "Habilitar Fala" + }, + "ttsProvider": { + "label": "Fornecedor de Fala", + "placeholder": "Selecione um fornecedor" + }, + "ttsVoice": { + "label": "Voz de Fala", + "placeholder": "Selecione uma voz" + }, + "ssmlEnabled": { + "label": "Habilitar SSML (Linguagem de Marcação de Sintese de Fala)" + } + } + }, + "manageModels": { + "title": "Gerenciar Modelos", + "addBtn": "Adicionar Novo Modelo", + "columns": { + "name": "Nome", + "digest": "Resumo", + "modifiedAt": "Modificado Em", + "size": "Tamanho", + "actions": "Ações" + }, + "expandedColumns": { + "parentModel": "Modelo Pai", + "format": "Formato", + "family": "Família", + "parameterSize": "Tamanho de Parâmetro", + "quantizationLevel": "Nível de Quantização" + }, + "tooltip": { + "delete": "Excluir Modelo", + "repull": "Re-Puxar Modelo" + }, + "confirm": { + "delete": "Você tem certeza de que deseja excluir este modelo?", + "repull": "Você tem certeza de que deseja re-puxar este modelo?" + }, + "modal": { + "title": "Adicionar Novo Modelo", + "placeholder": "Insira o nome do modelo", + "pull": "Puxar Modelo" + }, + "notification": { + "pullModel": "Puxando Modelo", + "pullModelDescription": "Puxando modelo {{modelName}}. Para mais detalhes, verifique o ícone da extensão.", + "success": "Sucesso", + "error": "Erro", + "successDescription": "Modelo puxado com sucesso", + "successDeleteDescription": "Modelo excluído com sucesso", + "someError": "Algo deu errado. Tente novamente mais tarde" + } + }, + "managePrompts": { + "title": "Gerenciar Prompts", + "addBtn": "Adicionar Novo Prompt", + "option1": "Normal", + "option2": "RAG", + "questionPrompt": "Prompt de Pergunta", + "columns": { + "title": "Título", + "prompt": "Prompt", + "type": "Tipo de Prompt", + "actions": "Ações" + }, + "systemPrompt": "Prompt do Sistema", + "quickPrompt": "Prompt Rápido", + "tooltip": { + "delete": "Excluir Prompt", + "edit": "Editar Prompt" + }, + "confirm": { + "delete": "Você tem certeza de que deseja excluir este prompt? Esta ação não pode ser desfeita." + }, + "modal": { + "addTitle": "Adicionar Novo Prompt", + "editTitle": "Editar Prompt" + }, + "form": { + "title": { + "label": "Título", + "placeholder": "Meu Prompt Incrível", + "required": "Por favor, insira um título" + }, + "prompt": { + "label": "Prompt", + "placeholder": "Insira o prompt", + "required": "Por favor, insira um prompt", + "help": "Você pode usar {key} como variável em seu prompt." + }, + "isSystem": { + "label": "É um Prompt do Sistema" + }, + "btnSave": { + "saving": "Adicionando Prompt...", + "save": "Adicionar Prompt" + }, + "btnEdit": { + "saving": "Atualizando Prompt...", + "save": "Atualizar Prompt" + } + }, + "notification": { + "addSuccess": "Prompt Adicionado", + "addSuccessDesc": "Prompt adicionado com sucesso", + "error": "Erro", + "someError": "Algo deu errado. Tente novamente mais tarde", + "updatedSuccess": "Prompt Atualizado", + "updatedSuccessDesc": "Prompt atualizado com sucesso", + "deletedSuccess": "Prompt Excluído", + "deletedSuccessDesc": "Prompt excluído com sucesso" + } + }, + "manageShare": { + "title": "Gerenciar Compartilhamento", + "heading": "Configurar URL de Compartilhamento de Página", + "form": { + "url": { + "label": "URL de Compartilhamento de Página", + "placeholder": "Insira a URL de Compartilhamento de Página", + "required": "Por favor, insira a URL de Compartilhamento de Página!", + "help": "Por motivos de privacidade, você pode hospedar a página de compartilhamento e fornecer a URL aqui. Saiba mais." + } + }, + "webshare": { + "heading": "Compartilhamento na Web", + "columns": { + "title": "Título", + "url": "URL", + "actions": "Ações" + }, + "tooltip": { + "delete": "Excluir Compartilhamento" + }, + "confirm": { + "delete": "Você tem certeza de que deseja excluir este compartilhamento? Esta ação não pode ser desfeita." + }, + "label": "Gerenciar Compartilhamento de Página", + "description": "Habilitar ou desabilitar o recurso de compartilhamento de página" + }, + "notification": { + "pageShareSuccess": "URL de Compartilhamento de Página atualizada com sucesso", + "someError": "Algo deu errado. Tente novamente mais tarde", + "webShareDeleteSuccess": "Compartilhamento na Web excluído com sucesso" + } + }, + "ollamaSettings": { + "title": "Configurações do Ollama", + "heading": "Configurar Ollama", + "settings": { + "ollamaUrl": { + "label": "URL do Ollama", + "placeholder": "Insira a URL do Ollama" + }, + "ragSettings": { + "label": "Configurações do RAG", + "model": { + "label": "Modelo de Incorporação", + "required": "Por favor, selecione um modelo", + "help": "É altamente recomendável usar modelos de incorporação como `nomic-embed-text`.", + "placeholder": "Selecione um modelo" + }, + "chunkSize": { + "label": "Tamanho do Chunk", + "placeholder": "Insira o tamanho do chunk", + "required": "Por favor, insira o tamanho do chunk" + }, + "chunkOverlap": { + "label": "Sobreposição do Chunk", + "placeholder": "Insira a sobreposição do chunk", + "required": "Por favor, insira a sobreposição do chunk" + } + }, + "prompt": { + "label": "Configurar Prompt do RAG", + "option1": "Normal", + "option2": "Web", + "alert": "Configurar o prompt do sistema aqui está depreciado. Por favor, use a seção Gerenciar Prompts para adicionar ou editar prompts. Esta seção será removida em uma versão futura", + "systemPrompt": "Prompt do Sistema", + "systemPromptPlaceholder": "Insira o prompt do sistema", + "webSearchPrompt": "Prompt de Pesquisa na Web", + "webSearchPromptHelp": "Não remova `{search_results}` do prompt.", + "webSearchPromptError": "Por favor, insira um prompt de pesquisa na web", + "webSearchPromptPlaceholder": "Insira o prompt de pesquisa na web", + "webSearchFollowUpPrompt": "Prompt de Seguimento de Pesquisa na Web", + "webSearchFollowUpPromptHelp": "Não remova `{chat_history}` e `{question}` do prompt.", + "webSearchFollowUpPromptError": "Por favor, insira o prompt de seguimento de pesquisa na web", + "webSearchFollowUpPromptPlaceholder": "Seu prompt de seguimento de pesquisa na web" + }, + "advanced": { + "label": "Configuração Avançada da URL do Ollama", + "urlRewriteEnabled": { + "label": "Habilitar ou Desabilitar URL de Origem Personalizada" + }, + "rewriteUrl": { + "label": "URL de Origem Personalizada", + "placeholder": "Insira a URL de Origem Personalizada" + }, + "help": "Se você tiver problemas de conexão com o Ollama no Page Assist, você pode configurar uma URL de origem personalizada. Para saber mais sobre a configuração, clique aqui." + } + } + }, + "manageSearch": { + "title": "Gerenciar Pesquisa na Web", + "heading": "Configurar Pesquisa na Web" + }, + "about": { + "title": "Sobre", + "heading": "Sobre", + "chromeVersion": "Versão do Page Assist", + "ollamaVersion": "Versão do Ollama", + "support": "Você pode apoiar o projeto Page Assist fazendo doações ou patrocínios através das seguintes plataformas:", + "koFi": "Apoiador no Ko-fi", + "githubSponsor": "Patrocinador no GitHub", + "githubRepo": "Repositório do GitHub" + }, + "manageKnowledge": { + "title": "Gerenciar Conhecimento", + "heading": "Configurar Base de Conhecimento" + } +} diff --git a/src/assets/locale/pt-BR/sidepanel.json b/src/assets/locale/pt-BR/sidepanel.json new file mode 100644 index 0000000..5da0b1f --- /dev/null +++ b/src/assets/locale/pt-BR/sidepanel.json @@ -0,0 +1,7 @@ +{ + "tooltip": { + "embed": "Pode demorar alguns minutos para embedear a página. Por favor, aguarde...", + "clear": "Excluir histórico de conversa", + "history": "Histórico de conversa" + } +} \ No newline at end of file diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 211bb9b..525ada9 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -1,6 +1,7 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; import { en } from "./lang/en"; +import { pt } from "./lang/pt"; import { fr } from "./lang/fr"; import { ru } from "./lang/ru"; import { ml } from "./lang/ml"; @@ -18,6 +19,7 @@ i18n fr: fr, "it": it, ml: ml, + "pt-BR": pt, "zh-CN": zh, ru: ru, "ru-RU": ru, diff --git a/src/i18n/lang/pt.ts b/src/i18n/lang/pt.ts new file mode 100644 index 0000000..c29f8f9 --- /dev/null +++ b/src/i18n/lang/pt.ts @@ -0,0 +1,15 @@ +import option from "@/assets/locale/pt-BR/option.json"; +import playground from "@/assets/locale/pt-BR/playground.json"; +import common from "@/assets/locale/pt-BR/common.json"; +import sidepanel from "@/assets/locale/pt-BR/sidepanel.json"; +import settings from "@/assets/locale/pt-BR/settings.json"; +import knowledge from "@/assets/locale/pt-BR/knowledge.json"; + +export const pt = { + option, + playground, + common, + sidepanel, + settings, + knowledge +} \ No newline at end of file diff --git a/src/i18n/support-language.ts b/src/i18n/support-language.ts index b38f82f..9a71692 100644 --- a/src/i18n/support-language.ts +++ b/src/i18n/support-language.ts @@ -16,6 +16,10 @@ export const supportLanguage = [ label: "Russian", value: "ru" }, + { + label: "Português", + value: "pt-BR" + }, { label: "മലയാളം", value: "ml"