diff --git a/web-app/src/containers/LanguageSwitcher.tsx b/web-app/src/containers/LanguageSwitcher.tsx index 3358c348fe..8b8b9b9ea7 100644 --- a/web-app/src/containers/LanguageSwitcher.tsx +++ b/web-app/src/containers/LanguageSwitcher.tsx @@ -16,6 +16,7 @@ const LANGUAGES = [ { value: 'zh-CN', label: '简体中文' }, { value: 'zh-TW', label: '繁體中文' }, { value: 'de-DE', label: 'Deutsch' }, + { value: 'pt-BR', label: 'Português (Brasil)' }, { value: 'ja', label: '日本語' }, ] diff --git a/web-app/src/locales/pt-BR/assistants.json b/web-app/src/locales/pt-BR/assistants.json new file mode 100644 index 0000000000..e6188824cf --- /dev/null +++ b/web-app/src/locales/pt-BR/assistants.json @@ -0,0 +1,35 @@ +{ + "title": "Assistentes", + "editAssistant": "Editar Assistente", + "deleteAssistant": "Remover Assistente", + "deleteConfirmation": "Remover Assistente", + "deleteConfirmationDesc": "Tem certeza de que deseja remover este assistente? Esta ação não pode ser desfeita.", + "cancel": "Cancelar", + "delete": "Remover", + "addAssistant": "Adicionar Assistente", + "emoji": "Emoji", + "name": "Nome", + "enterName": "Digite o nome", + "nameRequired": "O nome é obrigatório", + "description": "Descrição (opcional)", + "enterDescription": "Digite a descrição", + "instructions": "Instruções", + "enterInstructions": "Digite as instruções", + "predefinedParameters": "Parâmetros Predefinidos", + "parameters": "Parâmetros", + "key": "Chave", + "value": "Valor", + "stringValue": "Texto", + "numberValue": "Número", + "booleanValue": "Booleano", + "jsonValue": "JSON", + "trueValue": "Verdadeiro", + "falseValue": "Falso", + "jsonValuePlaceholder": "JSON", + "save": "Salvar", + "createNew": "Criar Novo Assistente", + "personality": "Personalidade", + "capabilities": "Capacidades", + "instructionsDateHint": "Dica: Use {{current_date}} para inserir a data de hoje.", + "maxToolSteps": "Máximo de passos das ferramentas (tools)" +} diff --git a/web-app/src/locales/pt-BR/chat.json b/web-app/src/locales/pt-BR/chat.json new file mode 100644 index 0000000000..e637206b37 --- /dev/null +++ b/web-app/src/locales/pt-BR/chat.json @@ -0,0 +1,12 @@ +{ + "welcome": "Olá, como você está?", + "description": "Como posso ajudá-lo hoje?", + "temporaryChat": "Chat Temporário", + "temporaryChatDescription": "Inicie uma conversa temporária que não será salva no seu histórico de chat.", + "status": { + "empty": "Nenhum Chat Encontrado" + }, + "sendMessage": "Enviar Mensagem", + "newConversation": "Nova Conversa", + "clearHistory": "Limpar Histórico" +} \ No newline at end of file diff --git a/web-app/src/locales/pt-BR/common.json b/web-app/src/locales/pt-BR/common.json new file mode 100644 index 0000000000..4e2cf76d2e --- /dev/null +++ b/web-app/src/locales/pt-BR/common.json @@ -0,0 +1,375 @@ +{ + "assistants": "Assistentes", + "hardware": "Hardware", + "mcp-servers": "Servidores MCP", + "local_api_server": "Servidor de API Local", + "https_proxy": "Proxy HTTPS", + "extensions": "Extensões", + "attachments": "Anexos", + "general": "Geral", + "settings": "Configurações", + "modelProviders": "Provedores de Modelo", + "appearance": "Aparência", + "privacy": "Privacidade", + "keyboardShortcuts": "Atalhos", + "newChat": "Novo Chat", + "favorites": "Favoritos", + "recents": "Recentes", + "hub": "Hub", + "helpSupport": "Ajuda e Suporte", + "helpUsImproveJan": "Ajude-nos a Melhorar o Jan", + "unstarAll": "Remover todos os favoritos", + "unstar": "Remover Favorito", + "deleteAll": "Apagar Tudo", + "star": "Favoritar", + "rename": "Renomear", + "delete": "Apagar", + "copied": "Copiado!", + "dataFolder": "Pasta de Dados", + "others": "Outros", + "language": "Idioma", + "login": "Entrar", + "loginWith": "Entrar com {{provider}}", + "loginFailed": "Falha ao Entrar", + "logout": "Sair", + "loggingOut": "Saindo...", + "loggedOut": "Saída Realizada com Sucesso", + "logoutFailed": "Falha ao Sair", + "profile": "Perfil", + "reset": "Redefinir", + "search": "Buscar", + "name": "Nome", + "cancel": "Cancelar", + "create": "Criar", + "save": "Salvar", + "edit": "Editar", + "copy": "Copiar", + "back": "Voltar", + "close": "Fechar", + "next": "Próximo", + "finish": "Finalizar", + "skip": "Pular", + "allow": "Permitir", + "deny": "Negar", + "start": "Iniciar", + "stop": "Parar", + "preview": "Visualizar", + "compactWidth": "Largura Compacta", + "fullWidth": "Largura Completa", + "dark": "Escuro", + "light": "Claro", + "system": "Sistema", + "auto": "Automático", + "english": "Inglês", + "medium": "Médio", + "newThread": "Nova Conversa", + "noResultsFound": "Nenhum resultado encontrado", + "noThreadsYet": "Nenhuma conversa ainda", + "noThreadsYetDesc": "Inicie uma nova conversa para ver seu histórico de conversas aqui.", + "downloads": "Downloads", + "downloading": "Baixando", + "cancelDownload": "Cancelar download", + "downloadCancelled": "Download Cancelado", + "downloadComplete": "Download Concluído", + "thinking": "Pensando...", + "thought": "Pensamento", + "callingTool": "Chamando ferramenta", + "completed": "Concluído", + "image": "Imagem", + "vision": "Visão", + "embeddings": "Embeddings", + "tools": "Ferramentas", + "webSearch": "Busca na Web", + "reasoning": "Raciocínio", + "selectAModel": "Selecione um modelo", + "noToolsAvailable": "Nenhuma ferramenta disponível", + "noModelsFoundFor": "Nenhum modelo encontrado para \"{{searchValue}}\"", + "failedToLoadModels": "Falha ao carregar modelos", + "noModels": "Nenhum modelo encontrado", + "customAvatar": "Avatar personalizado", + "editAssistant": "Editar Assistente", + "jan": "Jan", + "metadata": "Metadados", + "regenerate": "Regenerar", + "threadImage": "Imagem da conversa", + "editMessage": "Editar Mensagem", + "deleteMessage": "Apagar Mensagem", + "deleteThread": "Apagar Conversa", + "renameThread": "Renomear Conversa", + "threadTitle": "Título da Conversa", + "deleteAllThreads": "Apagar Todas as Conversas", + "allThreadsUnfavorited": "Todas as Conversas Removidas dos Favoritos", + "deleteAllThreadsConfirm": "Tem certeza de que deseja deletar todas as conversas? Esta ação não pode ser desfeita.", + "addProvider": "Adicionar Provedor", + "addOpenAIProvider": "Adicionar Provedor OpenAI", + "enterNameForProvider": "Digite um nome para seu provedor", + "providerAlreadyExists": "Provedor com nome \"{{name}}\" já existe. Por favor, escolha um nome diferente.", + "adjustFontSize": "Ajustar Tamanho da Fonte", + "changeLanguage": "Alterar Idioma", + "editTheme": "Editar Tema", + "editCodeBlockStyle": "Editar Estilo do Bloco de Código", + "editServerHost": "Editar Host do Servidor", + "pickColorWindowBackground": "Escolher Cor do Fundo da Janela", + "pickColorAppMainView": "Escolher Cor da Visualização Principal do App", + "pickColorAppPrimary": "Escolher Cor Primária do App", + "pickColorAppAccent": "Escolher Cor de Destaque do App", + "pickColorAppDestructive": "Escolher Cor Destrutiva do App", + "apiKeyRequired": "Chave API é obrigatória", + "enterTrustedHosts": "Digite os hosts confiáveis", + "placeholder": { + "chatInput": "Pergunte-me qualquer coisa..." + }, + "confirm": "Confirmar", + "continue": "Continuar", + "loading": "Carregando...", + "error": "Erro", + "success": "Sucesso", + "warning": "Aviso", + "conversationNotAvailable": "Conversa não disponível", + "conversationNotAvailableDescription": "A conversa que você está tentando acessar não está disponível ou foi removida.", + "temporaryChat": "Chat Temporário", + "temporaryChatTooltip": "Chat temporário não aparecerá no seu histórico", + "noResultsFoundDesc": "Não conseguimos encontrar chats correspondentes à sua busca. Tente uma palavra-chave diferente.", + "searchModels": "Buscar modelos...", + "searchStyles": "Buscar estilos...", + "createAssistant": "Criar Assistente", + "enterApiKey": "Digite a Chave API", + "scrollToBottom": "Rolar até embaixo", + "generateAiResponse": "Gerar Resposta da IA", + "addModel": { + "title": "Adicionar Modelo", + "modelId": "ID do Modelo", + "enterModelId": "Digite o ID do Modelo", + "addModel": "Adicionar Modelo", + "description": "Adicionar um novo modelo ao provedor", + "exploreModels": "Ver lista de modelos do provedor" + }, + "mcpServers": { + "editServer": "Editar Servidor", + "addServer": "Adicionar Servidor", + "serverName": "Nome do Servidor", + "enterServerName": "Digite o nome do servidor", + "command": "Comando", + "enterCommand": "Digite o comando", + "arguments": "Argumentos", + "argument": "Argumento {{index}}", + "envVars": "Variáveis de Ambiente", + "key": "Chave", + "value": "Valor", + "save": "Salvar" + }, + "deleteServer": { + "title": "Remover Servidor", + "delete": "Remover" + }, + "editJson": { + "errorParse": "Falha ao analisar JSON", + "errorPaste": "Falha ao colar JSON", + "errorFormat": "Formato JSON inválido", + "titleAll": "Editar Configuração de Todos os Servidores", + "placeholder": "Entre com a configuração do JSON...", + "save": "Salvar" + }, + "editModel": { + "title": "Editar Modelo: {{modelId}}", + "description": "Configure as capacidades do modelo alterando as opções abaixo.", + "capabilities": "Capacidades", + "tools": "Ferramentas", + "vision": "Visão", + "embeddings": "Embeddings", + "notAvailable": "Ainda não disponível" + }, + "outOfContextError": { + "truncateInput": "Truncar Entrada", + "title": "Erro de contexto esgotado", + "description": "Este chat está atingindo o limite de memória da IA, como um quadro branco ficando cheio. Podemos expandir a janela de memória (chamada tamanho do contexto) para que ela lembre mais, mas pode usar mais da memória do seu computador. Também podemos truncar a entrada, o que significa que ela esquecerá parte do histórico do chat para dar espaço a novas mensagens.", + "increaseContextSizeDescription": "Você quer aumentar o tamanho do contexto?", + "increaseContextSize": "Aumentar Tamanho do Contexto" + }, + "toolApproval": { + "title": "Solicitação de Permissão para Ferramenta", + "description": "O assistente quer usar {{toolName}}", + "securityNotice": "Permita apenas ferramentas em que você confia. Ferramentas podem acessar seu sistema e dados.", + "deny": "Negar", + "allowOnce": "Permitir Uma Vez", + "alwaysAllow": "Sempre Permitir" + }, + "deleteModel": { + "title": "Remover Modelo: {{modelId}}", + "description": "Tem certeza de que deseja remover este modelo? Esta ação não pode ser desfeita.", + "success": "Modelo {{modelId}} foi removido permanentemente.", + "cancel": "Cancelar", + "delete": "Remover" + }, + "deleteProvider": { + "title": "Remover Provedor", + "description": "Remover este provedor e todos os seus modelos. Esta ação não pode ser desfeita.", + "success": "Provedor {{provider}} foi removido permanentemente.", + "confirmTitle": "Remover Provedor: {{provider}}", + "confirmDescription": "Tem certeza de que deseja remover este provedor? Esta ação não pode ser desfeita.", + "cancel": "Cancelar", + "delete": "Remover" + }, + "modelSettings": { + "title": "Configurações do Modelo - {{modelId}}", + "description": "Configure as configurações do modelo para otimizar desempenho e comportamento." + }, + "dialogs": { + "changeDataFolder": { + "title": "Alterar Localização da Pasta de Dados", + "description": "Tem certeza de que deseja alterar a localização da pasta de dados? Isso moverá todos os seus dados para a nova localização e reiniciará a aplicação.", + "currentLocation": "Localização Atual:", + "newLocation": "Nova Localização:", + "cancel": "Cancelar", + "changeLocation": "Alterar Localização" + }, + "deleteAllThreads": { + "title": "Remover Todas as Conversas", + "description": "Todas as conversas serão removidas. Esta ação não pode ser desfeita." + }, + "deleteThread": { + "description": "Tem certeza de que deseja remover esta conversa? Esta ação não pode ser desfeita." + }, + "editMessage": { + "title": "Editar Mensagem" + }, + "messageMetadata": { + "title": "Metadados da Mensagem" + } + }, + "projects": { + "title": "Projetos", + "addProject": "Adicionar Projeto", + "addToProject": "Adicionar ao projeto", + "removeFromProject": "Remover do projeto", + "createNewProject": "Criar Novo Projeto", + "editProject": "Editar Projeto", + "deleteProject": "Remover Projeto", + "projectName": "Nome do Projeto", + "enterProjectName": "Digite o nome do projeto...", + "noProjectsAvailable": "Nenhum projeto disponível", + "noProjectsYet": "Nenhum Projeto Ainda", + "noProjectsYetDesc": "Inicie um novo projeto clicando no botão Adicionar Projeto.", + "projectNotFound": "Projeto Não Encontrado", + "projectNotFoundDesc": "O projeto que você está procurando não existe ou foi removido.", + "deleteProjectDialog": { + "title": "Remover Projeto", + "permanentDelete": "ThiIsso removerá permanentemente todas as conversas.", + "permanentDeleteWarning": "Esta ação removerá permanentemente TODAS as conversas dentro do projeto!", + "deleteEmptyProject": "Esta ação removerá o projeto \"{{projectName}}\".", + "saveThreadsAdvice": "Para salvar conversas, mova-as para sua lista de conversas ou outro projeto antes de remover.", + "starredWarning": "Você ainda tem conversas favoritadas dentro do projeto.", + "deleteButton": "Remover", + "successWithName": "Projeto \"{{projectName}}\" removido com sucesso", + "successWithoutName": "Projeto removido com sucesso", + "error": "Falha ao remover projeto. Tente novamente.", + "ariaLabel": "Remover {{projectName}}" + }, + "addProjectDialog": { + "createTitle": "Criar Novo Projeto", + "editTitle": "Editar Projeto", + "nameLabel": "Nome do Projeto", + "namePlaceholder": "Digite o nome do projeto...", + "createButton": "Criar", + "updateButton": "Atualizar", + "alreadyExists": "Projeto \"{{projectName}}\" já existe", + "createSuccess": "Projeto \"{{projectName}}\" criado com sucesso", + "renameSuccess": "Projeto renomeado de \"{{oldName}}\" para \"{{newName}}\"" + }, + "noConversationsIn": "Nenhuma Conversa em {{projectName}}", + "startNewConversation": "Inicie uma nova conversa com {{projectName}} abaixo", + "conversationsIn": "Conversas em {{projectName}}", + "conversationsDescription": "Clique em qualquer conversa para continuar o chat, ou inicie uma nova abaixo.", + "thread": "conversa", + "threads": "conversas", + "updated": "Atualizado:", + "collapseProject": "Recolher projeto", + "expandProject": "Expandir projeto", + "update": "Atualizar", + "searchProjects": "Buscar projetos...", + "noProjectsFound": "Nenhum projeto encontrado", + "tryDifferentSearch": "Tente um termo de busca diferente" + }, + "toast": { + "allThreadsUnfavorited": { + "title": "Todas as Conversas Removidas dos Favoritos", + "description": "Todas as conversas foram removidas dos seus favoritos." + }, + "deleteAllThreads": { + "title": "Remover Todas as Conversas", + "description": "Todas as conversas foram removidas permanentemente." + }, + "renameThread": { + "title": "Renomear Conversa", + "description": "Título da conversa foi renomeado para '{{title}}'" + }, + "deleteThread": { + "title": "Remover Conversa", + "description": "Esta conversa foi removida permanentemente." + }, + "editMessage": { + "title": "Editar Mensagem", + "description": "Mensagem editada com sucesso. Aguarde a resposta do modelo." + }, + "appUpdateDownloaded": { + "title": "Atualização do App Baixada", + "description": "A atualização do app foi baixada com sucesso." + }, + "appUpdateDownloadFailed": { + "title": "Falha no Download da Atualização do App", + "description": "Falha ao baixar a atualização do app. Tente novamente." + }, + "downloadComplete": { + "title": "Download Concluído", + "description": " {{item}} foi baixado" + }, + "downloadCancelled": { + "title": "Download Cancelado", + "description": "O processo de download foi cancelado" + }, + "downloadFailed": { + "title": "Falha no Download", + "description": "Falha no download de {{item}}" + }, + "modelValidationStarted": { + "title": "Validando Modelo", + "description": "Modelo \"{{modelId}}\" baixado com sucesso. Verificando integridade..." + }, + "modelValidationFailed": { + "title": "Falha na Validação do Modelo", + "description": "O modelo baixado \"{{modelId}}\" falhou na verificação de integridade e foi removido. O arquivo pode estar corrompido ou adulterado." + }, + "downloadAndVerificationComplete": { + "title": "Download Concluído", + "description": "Modelo \"{{item}}\" baixado e verificado com sucesso" + }, + "projectCreated": { + "title": "Projeto Criado", + "description": "Projeto \"{{projectName}}\" criado com sucesso" + }, + "projectRenamed": { + "title": "Projeto Renomeado", + "description": "Projeto renomeado de \"{{oldName}}\" para \"{{newName}}\"" + }, + "projectDeleted": { + "title": "Projeto Removido", + "description": "Projeto \"{{projectName}}\" removido com sucesso" + }, + "projectAlreadyExists": { + "title": "Projeto Já Existe", + "description": "Projeto \"{{projectName}}\" já existe" + }, + "projectDeleteFailed": { + "title": "Falha ao Remover", + "description": "Falha ao remover projeto. Tente novamente." + }, + "threadAssignedToProject": { + "title": "Conversa Atribuída", + "description": "Conversa atribuída a \"{{projectName}}\" com sucesso" + }, + "threadRemovedFromProject": { + "title": "Conversa Removida", + "description": "Conversa removida de \"{{projectName}}\" com sucesso" + } + } +} diff --git a/web-app/src/locales/pt-BR/hub.json b/web-app/src/locales/pt-BR/hub.json new file mode 100644 index 0000000000..2edbd7e86b --- /dev/null +++ b/web-app/src/locales/pt-BR/hub.json @@ -0,0 +1,31 @@ +{ + "sortNewest": "Mais Recentes", + "sortMostDownloaded": "Mais Baixados", + "use": "Usar", + "download": "Baixar", + "downloaded": "Baixado", + "loadingModels": "Carregando modelos...", + "noModels": "Nenhum modelo encontrado", + "by": "Por", + "downloads": "Downloads", + "variants": "Variantes", + "showVariants": "Mostrar variantes", + "useModel": "Usar este modelo", + "downloadModel": "Baixar modelo", + "tools": "Ferramentas", + "searchPlaceholder": "Buscar modelos no Hugging Face...", + "joyride": { + "recommendedModelTitle": "Modelo Recomendado", + "recommendedModelContent": "Navegue e baixe modelos de IA poderosos de vários provedores, tudo em um só lugar. Sugerimos começar com o Jan-Nano - um modelo otimizado para chamadas de função, integração de ferramentas e capacidades de pesquisa. É ideal para construir agentes de IA interativos.", + "downloadInProgressTitle": "Download em Progresso", + "downloadInProgressContent": "Seu modelo está sendo baixado. Acompanhe o progresso aqui - uma vez finalizado, estará pronto para usar.", + "downloadModelTitle": "Baixar Modelo", + "downloadModelContent": "Clique no botão Baixar para começar a baixar o modelo.", + "back": "Voltar", + "close": "Fechar", + "lastWithDownload": "Baixar", + "last": "Finalizar", + "next": "Próximo", + "skip": "Pular" + } +} diff --git a/web-app/src/locales/pt-BR/logs.json b/web-app/src/locales/pt-BR/logs.json new file mode 100644 index 0000000000..409aa69a0f --- /dev/null +++ b/web-app/src/locales/pt-BR/logs.json @@ -0,0 +1,3 @@ +{ + "noLogs": "Nenhum log disponível" +} \ No newline at end of file diff --git a/web-app/src/locales/pt-BR/mcp-servers.json b/web-app/src/locales/pt-BR/mcp-servers.json new file mode 100644 index 0000000000..13ff1ed033 --- /dev/null +++ b/web-app/src/locales/pt-BR/mcp-servers.json @@ -0,0 +1,47 @@ +{ + "editServer": "Editar Servidor MCP", + "addServer": "Adicionar Servidor MCP", + "serverName": "Nome do Servidor", + "enterServerName": "Digite o nome do servidor", + "command": "Comando", + "enterCommand": "Digite o comando (uvx ou npx)", + "arguments": "Argumentos", + "argument": "Argumento {{index}}", + "envVars": "Variáveis de Ambiente", + "key": "Chave", + "value": "Valor", + "save": "Salvar", + "status": "Status", + "connected": "Conectado", + "disconnected": "Desconectado", + "deleteServer": { + "title": "Remover Servidor MCP", + "description": "Tem certeza de que deseja remover o servidor MCP {{serverName}}? Esta ação não pode ser desfeita.", + "delete": "Remover", + "success": "Servidor MCP {{serverName}} removido com sucesso" + }, + "editJson": { + "title": "Editar JSON para Servidor MCP: {{serverName}}", + "titleAll": "Editar JSON de Todos os Servidores MCP", + "placeholder": "Digite a configuração JSON", + "errorParse": "Falha ao analisar dados iniciais", + "errorPaste": "Formato JSON inválido no conteúdo colado", + "errorFormat": "Formato JSON inválido", + "errorServerName": " Nome do servidor é obrigatório e não pode estar vazio", + "errorMissingServerNameKey": "JSON deve estar estruturado como {\"serverName\": {config}} - chave com nome do servidor ausente", + "errorInvalidType": "Tipo inválido '{{type}}' para servidor '{{serverName}}'. Tipo deve ser 'stdio', 'http', ou 'sse'", + "save": "Salvar" + }, + "checkParams": "Por favor, verifique os parâmetros de acordo com o tutorial.", + "title": "Servidores MCP", + "experimental": "Experimental", + "editAllJson": "Editar JSON de Todos os Servidores", + "findMore": "Encontre mais servidores MCP em", + "allowPermissions": "Permitir Todas as Permissões de Ferramentas MCP", + "allowPermissionsDesc": "Quando habilitado, todas as chamadas de ferramentas MCP serão automaticamente aprovadas sem mostrar diálogos de permissão. Esta configuração se aplica globalmente a todas as conversas, incluindo novos chats.", + "noServers": "Nenhum servidor MCP encontrado", + "args": "Args", + "env": "Env", + "serverStatusActive": "Servidor {{serverKey}} ativado com sucesso", + "serverStatusInactive": "Servidor {{serverKey}} desativado com sucesso" +} diff --git a/web-app/src/locales/pt-BR/model-errors.json b/web-app/src/locales/pt-BR/model-errors.json new file mode 100644 index 0000000000..0abca540bc --- /dev/null +++ b/web-app/src/locales/pt-BR/model-errors.json @@ -0,0 +1,7 @@ +{ + "title": "Erro de contexto esgotado", + "description": "Este chat está atingindo o limite de memória da IA, como um quadro branco ficando cheio. Podemos expandir a janela de memória (chamada tamanho do contexto) para que ela lembre mais, mas pode usar mais da memória do seu computador. Também podemos truncar a entrada, o que significa que ela esquecerá parte do histórico do chat para dar espaço a novas mensagens.", + "increaseContextSizeDescription": "Você quer aumentar o tamanho do contexto?", + "truncateInput": "Truncar Entrada", + "increaseContextSize": "Aumentar Tamanho do Contexto" +} diff --git a/web-app/src/locales/pt-BR/provider.json b/web-app/src/locales/pt-BR/provider.json new file mode 100644 index 0000000000..2bc1768d75 --- /dev/null +++ b/web-app/src/locales/pt-BR/provider.json @@ -0,0 +1,5 @@ +{ + "addProvider": "Adicionar Provedor", + "addOpenAIProvider": "Adicionar Provedor OpenAI", + "enterNameForProvider": "Digite o nome para o provedor" +} \ No newline at end of file diff --git a/web-app/src/locales/pt-BR/providers.json b/web-app/src/locales/pt-BR/providers.json new file mode 100644 index 0000000000..37ff68aaf4 --- /dev/null +++ b/web-app/src/locales/pt-BR/providers.json @@ -0,0 +1,74 @@ +{ + "joyride": { + "chooseProviderTitle": "Escolha um Provedor", + "chooseProviderContent": "Escolha o provedor que você quer usar, certifique-se de ter acesso a uma chave API para ele.", + "getApiKeyTitle": "Obtenha sua Chave de API", + "getApiKeyContent": "Entre no painel do provedor para encontrar ou gerar sua chave de API.", + "insertApiKeyTitle": "Insira sua Chave de API", + "insertApiKeyContent": "Cole sua chave de API aqui para conectar e ativar o provedor.", + "back": "Voltar", + "close": "Fechar", + "last": "Finalizar", + "next": "Próximo", + "skip": "Pular" + }, + "refreshModelsError": "Provedor deve ter URL base e chave API configuradas para buscar modelos.", + "refreshModelsSuccess": "Adicionado {{count}} novo(s) modelo(s) de {{provider}}.", + "noNewModels": "Nenhum modelo novo encontrado. Todos os modelos disponíveis já foram adicionados.", + "refreshModelsFailed": "Falha ao buscar modelos de {{provider}}. Verifique sua chave de API e URL base.", + "models": "Modelos", + "refreshing": "Atualizando...", + "refresh": "Atualizar", + "import": "Importar", + "importModelSuccess": "Modelo {{provider}} foi importado com sucesso.", + "importModelError": "Falha ao importar modelo:", + "stop": "Parar", + "start": "Iniciar", + "noModelFound": "Nenhum modelo encontrado", + "noModelFoundDesc": "Modelos disponíveis serão listados aqui. Se você ainda não tem modelos, visite o Hub para baixar.", + "configuration": "Configuração", + "apiEndpoint": "Endpoint da API", + "testConnection": "Testar Conexão", + "addModel": { + "title": "Adicionar Novo Modelo", + "description": "Adicionar um novo modelo ao provedor {{provider}}.", + "modelId": "ID do Modelo", + "enterModelId": "Digite o ID do modelo", + "exploreModels": "Ver lista de modelos de {{provider}}", + "addModel": "Adicionar Modelo", + "modelExists": "Modelo já existe", + "modelExistsDesc": "Por favor, escolha um ID de modelo diferente." + }, + "deleteModel": { + "title": "Remover Modelo: {{modelId}}", + "description": "Tem certeza de que deseja remover este modelo? Esta ação não pode ser desfeita.", + "success": "Modelo {{modelId}} foi removido permanentemente.", + "cancel": "Cancelar", + "delete": "Remover" + }, + "deleteProvider": { + "title": "Remover Provedor", + "description": "Remover este provedor e todos os seus modelos. Esta ação não pode ser desfeita.", + "success": "Provedor {{provider}} foi removido permanentemente.", + "confirmTitle": "Remover Provedor: {{provider}}", + "confirmDescription": "Tem certeza de que deseja remover este provedor? Esta ação não pode ser desfeita.", + "cancel": "Cancelar", + "delete": "Remover" + }, + "editModel": { + "title": "Editar Modelo: {{modelId}}", + "description": "Configure as capacidades do modelo alterando as opções abaixo.", + "capabilities": "Capacidades", + "tools": "Ferramentas", + "vision": "Visão", + "embeddings": "Embeddings", + "notAvailable": "Ainda não disponível", + "warning": { + "title": "Prossiga com Cautela", + "description": "Modificar capacidades do modelo pode afetar desempenho e funcionalidade. Configurações incorretas podem causar comportamento inesperado ou erros." + } + }, + "addProvider": "Adicionar Provedor", + "addOpenAIProvider": "Adicionar Provedor OpenAI", + "enterNameForProvider": "Digite o nome para o provedor" +} diff --git a/web-app/src/locales/pt-BR/settings.json b/web-app/src/locales/pt-BR/settings.json new file mode 100644 index 0000000000..45c85eb99e --- /dev/null +++ b/web-app/src/locales/pt-BR/settings.json @@ -0,0 +1,304 @@ +{ + "autoDownload": "Download automático de novas atualizações", + "checkForUpdates": "Verificar Atualizações", + "checkForUpdatesDesc": "Verificar se uma versão mais nova do Jan está disponível.", + "checkingForUpdates": "Verificando atualizações...", + "noUpdateAvailable": "Você está executando a versão mais recente", + "devVersion": "Versão de desenvolvimento detectada", + "updateError": "Falha ao verificar atualizações", + "checkForBackendUpdates": "Verificar Atualizações do Llamacpp", + "checkForBackendUpdatesDesc": "Verificar se uma versão mais nova do backend Llamacpp está disponível.", + "checkingForBackendUpdates": "Verificando atualizações do Llamacpp...", + "noBackendUpdateAvailable": "Você está executando a versão mais recente do Llamacpp", + "backendUpdateError": "Falha ao verificar atualizações do Llamacpp", + "changeLocation": "Alterar Localização", + "copied": "Copiado", + "copyPath": "Copiar Caminho", + "openLogs": "Abrir Logs", + "revealLogs": "Mostrar Logs", + "showInFinder": "Mostrar no Finder", + "showInFileExplorer": "Mostrar no Explorer de Arquivos", + "openContainingFolder": "Abrir Pasta", + "failedToRelocateDataFolder": "Falha ao realocar pasta de dados", + "failedToRelocateDataFolderDesc": "Falha ao realocar pasta de dados. Tente novamente.", + "factoryResetTitle": "Redefinir para Configurações originais", + "factoryResetDesc": "Isso redefinirá todas as configurações do app para os padrões originais. Isso não pode ser desfeito. Recomendamos isso apenas se o app estiver corrompido.", + "cancel": "Cancelar", + "reset": "Redefinir", + "resources": "Recursos", + "documentation": "Documentação", + "documentationDesc": "Aprenda como usar o Jan e explore seus recursos.", + "viewDocs": "Ver Documentação", + "releaseNotes": "Notas de Versão", + "releaseNotesDesc": "Veja o que há de novo na versão mais recente do Jan.", + "viewReleases": "Ver Versões", + "community": "Comunidade", + "github": "GitHub", + "githubDesc": "Contribua para o desenvolvimento do Jan.", + "discord": "Discord", + "discordDesc": "Junte-se à nossa comunidade para suporte e discussões.", + "support": "Suporte", + "reportAnIssue": "Reportar um Problema", + "reportAnIssueDesc": "Encontrou um bug? Ajude-nos relatando um problema no GitHub.", + "reportIssue": "Reportar Problema", + "credits": "Créditos", + "creditsDesc1": "👋 Jan é construído com ❤️ pela equipe Menlo Research.", + "creditsDesc2": "Agradecimentos especiais às nossas dependências de código aberto—especialmente llama.cpp e Tauri—e à nossa incrível comunidade de IA.", + "appVersion": "Versão do App", + "dataFolder": { + "appData": "Dados do App", + "appDataDesc": "Localização padrão para mensagens e outros dados do usuário.", + "appLogs": "Logs do App", + "appLogsDesc": "Ver logs detalhados do App." + }, + "others": { + "spellCheck": "Verificação Ortográfica", + "spellCheckDesc": "Habilitar verificação ortográfica para suas conversas.", + "resetFactory": "Redefinir para Configurações Originais", + "resetFactoryDesc": "Restaurar aplicação ao seu estado inicial, apagando todos os modelos e histórico de chat. Esta ação é irreversível e recomendada apenas se a aplicação estiver corrompida." + }, + "shortcuts": { + "application": "Aplicação", + "newChat": "Novo Chat", + "newChatDesc": "Criar um novo chat.", + "toggleSidebar": "Mostrar/Ocultar Barra Lateral", + "toggleSidebarDesc": "Mostrar/ocultar a barra lateral.", + "zoomIn": "Aumentar Zoom", + "zoomInDesc": "Aumentar o nível de zoom.", + "zoomOut": "Diminuir Zoom", + "zoomOutDesc": "Diminuir o nível de zoom.", + "chat": "Chat", + "sendMessage": "Enviar Mensagem", + "sendMessageDesc": "Enviar a mensagem atual.", + "enter": "Enter", + "newLine": "Nova Linha", + "newLineDesc": "Inserir uma nova linha.", + "shiftEnter": "Shift + Enter", + "navigation": "Navegação", + "goToSettings": "Ir para Configurações", + "goToSettingsDesc": "Abrir configurações." + }, + "appearance": { + "title": "Aparência", + "theme": "Tema", + "themeDesc": "Corresponder ao tema do Sistema Operacional.", + "fontSize": "Tamanho da Fonte", + "fontSizeDesc": "Ajustar o tamanho da fonte do app.", + "windowBackground": "Fundo da Janela", + "windowBackgroundDesc": "Definir a cor de fundo da janela do app.", + "appMainView": "Visualização Principal do App", + "appMainViewDesc": "Definir a cor de fundo da área de conteúdo principal.", + "primary": "Primário", + "primaryDesc": "Definir a cor primária para componentes da UI.", + "accent": "Destaque", + "accentDesc": "Definir a cor de destaque para realces da UI.", + "destructive": "Destrutivo", + "destructiveDesc": "Definir a cor para ações destrutivas.", + "resetToDefault": "Redefinir para Padrão", + "resetToDefaultDesc": "Redefinir todas as configurações de aparência para padrão.", + "resetAppearanceSuccess": "Aparência redefinida com sucesso", + "resetAppearanceSuccessDesc": "Todas as configurações de aparência foram restauradas para padrão.", + "chatWidth": "Largura do Chat", + "chatWidthDesc": "Personalizar a largura da visualização do chat.", + "tokenCounterCompact": "Contador de Tokens Compacto", + "tokenCounterCompactDesc": "Mostrar contador de tokens dentro da entrada do chat. Quando desabilitado, contador de tokens aparece abaixo da entrada.", + "codeBlockTitle": "Bloco de Código", + "codeBlockDesc": "Escolher um estilo de realce de sintaxe.", + "showLineNumbers": "Mostrar Números de Linha", + "showLineNumbersDesc": "Exibir números de linha em blocos de código.", + "resetCodeBlockStyle": "Redefinir Estilo do Bloco de Código", + "resetCodeBlockStyleDesc": "Redefinir estilo do bloco de código para padrão.", + "resetCodeBlockSuccess": "Estilo do bloco de código redefinido com sucesso", + "resetCodeBlockSuccessDesc": "Estilo do bloco de código foi restaurado para padrão." + }, + "hardware": { + "os": "Sistema Operacional", + "name": "Nome", + "version": "Versão", + "cpu": "CPU", + "model": "Modelo", + "architecture": "Arquitetura", + "cores": "Cores", + "instructions": "Instruções", + "usage": "Uso", + "memory": "Memória", + "totalRam": "RAM Total", + "availableRam": "RAM Disponível", + "vulkan": "Vulkan", + "enableVulkan": "Habilitar Vulkan", + "enableVulkanDesc": "Usar API Vulkan para aceleração GPU. Não habilite Vulkan se você tem uma GPU NVIDIA pois pode causar problemas de compatibilidade.", + "gpus": "GPUs", + "noGpus": "Nenhuma GPU detectada", + "vram": "VRAM", + "freeOf": "livre de", + "driverVersion": "Versão do Driver", + "computeCapability": "Capacidade de Computação", + "systemMonitor": "Monitor do Sistema" + }, + "httpsProxy": { + "proxy": "Proxy", + "proxyUrl": "URL do Proxy", + "proxyUrlDesc": "A URL e porta do seu servidor proxy.", + "proxyUrlPlaceholder": "http://proxy.example.com:8080", + "authentication": "Autenticação", + "authenticationDesc": "Credenciais para o servidor proxy, se necessário.", + "username": "Nome de Usuário", + "password": "Senha", + "noProxy": "Sem Proxy", + "noProxyDesc": "Uma lista separada por vírgulas de hosts para contornar o proxy.", + "noProxyPlaceholder": "localhost,127.0.0.1,.local", + "sslVerification": "Verificação SSL", + "ignoreSsl": "Ignorar Certificados SSL", + "ignoreSslDesc": "Permitir certificados auto-assinados ou não verificados. Isso pode ser necessário para alguns proxies, mas reduz a segurança. Habilite apenas se confiar no seu proxy.", + "proxySsl": "SSL do Proxy", + "proxySslDesc": "Validar o certificado SSL ao conectar ao proxy.", + "proxyHostSsl": "SSL do Host do Proxy", + "proxyHostSslDesc": "Validar o certificado SSL do host do proxy.", + "peerSsl": "SSL do Peer", + "peerSslDesc": "Validar os certificados SSL das conexões peer.", + "hostSsl": "SSL do Host", + "hostSslDesc": "Validar os certificados SSL dos hosts de destino." + }, + "localApiServer": { + "title": "Servidor de API Local", + "description": "Executar um servidor compatível com OpenAI localmente.", + "startServer": "Iniciar Servidor", + "loadingModel": "Carregando Modelo", + "startingServer": "Iniciando Servidor", + "stopServer": "Parar Servidor", + "serverLogs": "Logs do Servidor", + "serverLogsDesc": "Ver logs detalhados do servidor API local.", + "openLogs": "Abrir Logs", + "swaggerDocs": "Documentação da API", + "swaggerDocsDesc": "Ver documentação interativa da API (Swagger UI).", + "openDocs": "Abrir Documentos", + "startupConfiguration": "Configuração de Inicialização", + "runOnStartup": "Inicialização automática", + "runOnStartupDesc": "Iniciar automaticamente o Servidor API Local quando a aplicação for lançada. Usa o último modelo usado, ou escolhe o primeiro modelo disponível se indisponível.", + "serverConfiguration": "Configuração do Servidor", + "serverHost": "Host do Servidor", + "serverHostDesc": "Endereço de rede para o servidor.", + "serverPort": "Porta do Servidor", + "serverPortDesc": "Número da porta para o servidor API.", + "apiPrefix": "Prefixo da API", + "apiPrefixDesc": "Prefixo do caminho para endpoints da API.", + "apiKey": "Chave de API", + "apiKeyDesc": "Autenticar requisições com uma chave de API.", + "trustedHosts": "Hosts Confiáveis", + "trustedHostsDesc": "Hosts permitidos para acessar o servidor, separados por vírgulas.", + "advancedSettings": "Configurações Avançadas", + "cors": "Compartilhamento de Recursos de Origem Cruzada (CORS)", + "corsDesc": "Permitir requisições de origem cruzada para o servidor de API.", + "verboseLogs": "Logs Detalhados do Servidor", + "verboseLogsDesc": "Habilitar logs detalhados do servidor para depuração.", + "proxyTimeout": "Timeout de Requisição", + "proxyTimeoutDesc": "Tempo para aguardar uma resposta do modelo local, segundos." + }, + "privacy": { + "analytics": "Analytics", + "helpUsImprove": "Ajude-nos a melhorar", + "helpUsImproveDesc": "Para nos ajudar a melhorar o Jan, você pode compartilhar dados anônimos como uso de recursos e contagem de usuários. Nunca coletamos seus chats ou informações pessoais.", + "privacyPolicy": "Você tem controle total sobre seus dados. Saiba mais em nossa Política de Privacidade.", + "analyticsDesc": "Para melhorar o Jan, precisamos entender como é usado—mas apenas com sua ajuda. Você pode alterar esta configuração a qualquer momento.", + "privacyPromises": "Sua escolha aqui não mudará nossas promessas básicas de privacidade:", + "promise1": "Suas conversas permanecem privadas e no seu dispositivo", + "promise2": "Nunca coletamos suas informações pessoais ou conteúdo de chat", + "promise3": "Todo compartilhamento de dados é anônimo e agregado", + "promise4": "Você pode optar por sair a qualquer momento sem perder funcionalidade", + "promise5": "Somos transparentes sobre o que coletamos e por quê" + }, + "general": { + "showInFinder": "Mostrar no Finder", + "showInFileExplorer": "Mostrar no Explorador de Arquivos", + "openContainingFolder": "Abrir Pasta Contendo", + "failedToRelocateDataFolder": "Falha ao realocar pasta de dados", + "couldNotRelocateToRoot": "Não é possível realocar pasta de dados para diretório raiz. Por favor, escolha outra localização.", + "couldNotResetRootDirectory": "Não é possível redefinir pasta de dados quando está definida para um diretório raiz. Por favor, delete a pasta de dados manualmente.", + "failedToRelocateDataFolderDesc": "Falha ao realocar pasta de dados. Tente novamente.", + "devVersion": "Versão de desenvolvimento detectada", + "noUpdateAvailable": "Você está executando a versão mais recente", + "updateError": "Falha ao verificar atualizações", + "appVersion": "Versão do App", + "checkForUpdates": "Verificar Atualizações", + "checkForUpdatesDesc": "Verificar se uma versão mais nova do Jan está disponível.", + "checkingForUpdates": "Verificando atualizações...", + "copied": "Copiado", + "copyPath": "Copiar Caminho", + "changeLocation": "Alterar Localização", + "openLogs": "Abrir Logs", + "revealLogs": "Mostrar Logs", + "factoryResetTitle": "Redefinir para Configurações de Fábrica", + "factoryResetDesc": "Isso redefinirá todas as configurações do app para os padrões. Isso não pode ser desfeito. Recomendamos isso apenas se o app estiver corrompido.", + "cancel": "Cancelar", + "reset": "Redefinir", + "huggingfaceToken": "Token HuggingFace", + "huggingfaceTokenDesc": "Seu token da API HuggingFace para acessar modelos.", + "resources": "Recursos", + "documentation": "Documentação", + "documentationDesc": "Aprenda como usar o Jan e explore seus recursos.", + "viewDocs": "Ver Documentos", + "releaseNotes": "Notas de Versão", + "releaseNotesDesc": "Veja o que há de novo na versão mais recente do Jan.", + "viewReleases": "Ver Versões", + "community": "Comunidade", + "github": "GitHub", + "githubDesc": "Contribua para o desenvolvimento do Jan.", + "discord": "Discord", + "discordDesc": "Junte-se à nossa comunidade para suporte e discussões.", + "support": "Suporte", + "reportAnIssue": "Reportar um Problema", + "reportAnIssueDesc": "Encontrou um bug? Ajude-nos relatando um problema no GitHub.", + "reportIssue": "Reportar Problema", + "credits": "Créditos", + "creditsDesc1": "👋 Jan é construído com ❤️ pela equipe Menlo Research.", + "creditsDesc2": "Agradecimentos especiais às nossas dependências de código aberto—especialmente llama.cpp e Tauri—e à nossa incrível comunidade de IA." + }, + "extensions": { + "title": "Extensões" + }, + "attachments": { + "subtitle": "Configure anexos de documentos, limites de tamanho e comportamento de recuperação.", + "featureTitle": "Recurso", + "enable": "Habilitar Anexos", + "enableDesc": "Permitir upload e indexação de documentos para recuperação.", + "limitsTitle": "Limites", + "maxFile": "Tamanho Máximo do Arquivo (MB)", + "maxFileDesc": "Tamanho máximo por arquivo. Aplicado no upload e processamento.", + "retrievalTitle": "Recuperação", + "topK": "Top-K", + "topKDesc": "Máximo de citações para retornar.", + "threshold": "Limite de Afinidade", + "thresholdDesc": "Pontuação mínima de similaridade (0-1). Usado apenas para busca linear cosseno, não ANN.", + "searchMode": "Modo de Busca Vetorial", + "searchModeDesc": "Escolha entre sqlite-vec ANN, cosseno linear, ou auto.", + "searchModeAuto": "Auto (recomendado)", + "searchModeAnn": "ANN (sqlite-vec)", + "searchModeLinear": "Linear", + "chunkingTitle": "Fragmentação", + "chunkSize": "Tamanho do Fragmento (tokens)", + "chunkSizeDesc": "Máximo aproximado de tokens por fragmento para embeddings.", + "chunkOverlap": "Sobreposição (tokens)", + "chunkOverlapDesc": "Sobreposição de tokens entre fragmentos consecutivos." + }, + "dialogs": { + "changeDataFolder": { + "title": "Alterar Localização da Pasta de Dados", + "description": "Tem certeza de que deseja alterar a localização da pasta de dados? Isso moverá todos os seus dados para a nova localização e reiniciará a aplicação.", + "currentLocation": "Localização Atual:", + "newLocation": "Nova Localização:", + "cancel": "Cancelar", + "changeLocation": "Alterar Localização" + } + }, + "backendUpdater": { + "newBackendVersion": "Nova Versão Llamacpp {{version}}", + "backendUpdateAvailable": "Atualização Llamacpp Disponível", + "remindMeLater": "Lembre-me Mais Tarde", + "updating": "Atualizando...", + "updateNow": "Atualizar Agora", + "updateSuccess": "Llamacpp atualizado com sucesso", + "updateError": "Falha ao atualizar Llamacpp" + }, + "backendInstallSuccess": "Backend instalado com sucesso", + "backendInstallError": "Falha ao instalar backend" +} diff --git a/web-app/src/locales/pt-BR/setup.json b/web-app/src/locales/pt-BR/setup.json new file mode 100644 index 0000000000..795d219b86 --- /dev/null +++ b/web-app/src/locales/pt-BR/setup.json @@ -0,0 +1,6 @@ +{ + "welcome": "Bem-vindo ao Jan", + "description": "Para começar, você precisará baixar um modelo de IA local ou conectar-se a um modelo em nuvem usando uma chave de API", + "localModel": "Configurar modelo local", + "remoteProvider": "Configurar provedor remoto" +} \ No newline at end of file diff --git a/web-app/src/locales/pt-BR/system-monitor.json b/web-app/src/locales/pt-BR/system-monitor.json new file mode 100644 index 0000000000..54d41771a6 --- /dev/null +++ b/web-app/src/locales/pt-BR/system-monitor.json @@ -0,0 +1,28 @@ +{ + "title": "Monitor do Sistema", + "cpuUsage": "Uso da CPU", + "model": "Modelo", + "cores": "Núcleos", + "architecture": "Arquitetura", + "currentUsage": "Uso Atual", + "memoryUsage": "Uso da Memória", + "totalRam": "RAM Total", + "availableRam": "RAM Disponível", + "usedRam": "RAM Usada", + "runningModels": "Modelos em Execução", + "noRunningModels": "Nenhum modelo está executando atualmente", + "provider": "Provedor", + "uptime": "Tempo de Atividade", + "actions": "Ações", + "stop": "Parar", + "activeGpus": "GPUs Ativas", + "noGpus": "Nenhuma GPU detectada", + "noActiveGpus": "Nenhuma GPU ativa. Todas as GPUs estão atualmente desabilitadas.", + "vramUsage": "Uso da VRAM", + "driverVersion": "Versão do Driver:", + "computeCapability": "Capacidade de Computação:", + "active": "Ativo", + "performance": "Desempenho", + "resources": "Recursos", + "refresh": "Atualizar" +} \ No newline at end of file diff --git a/web-app/src/locales/pt-BR/tool-approval.json b/web-app/src/locales/pt-BR/tool-approval.json new file mode 100644 index 0000000000..0c0678b12c --- /dev/null +++ b/web-app/src/locales/pt-BR/tool-approval.json @@ -0,0 +1,12 @@ +{ + "title": "Solicitação de Chamada de Ferramenta", + "description": "O assistente quer usar a ferramenta: {{toolName}}", + "securityNotice": "Aviso de Segurança: Ferramentas maliciosas ou conteúdo de conversa podem potencialmente enganar o assistente para tentar ações prejudiciais. Revise cada chamada de ferramenta cuidadosamente antes de aprovar.", + "deny": "Negar", + "allowOnce": "Permitir Uma Vez", + "alwaysAllow": "Permitir na conversa", + "permissions": "Permissões", + "approve": "Aprovar", + "reject": "Rejeitar", + "parameters": "Parâmetros da Ferramenta" +} diff --git a/web-app/src/locales/pt-BR/tools.json b/web-app/src/locales/pt-BR/tools.json new file mode 100644 index 0000000000..41305ca579 --- /dev/null +++ b/web-app/src/locales/pt-BR/tools.json @@ -0,0 +1,12 @@ +{ + "toolApproval": { + "title": "Aprovação de Ferramenta Necessária", + "description": "O assistente quer usar a ferramenta: {{toolName}}", + "securityNotice": "Aviso de Segurança: Ferramentas maliciosas ou conteúdo de conversa podem potencialmente enganar o assistente para tentar ações prejudiciais. Revise cada chamada de ferramenta cuidadosamente antes de aprovar.", + "deny": "Negar", + "allowOnce": "Permitir Uma Vez", + "alwaysAllow": "Permitir na conversa", + "parameters": "Parâmetros da Ferramenta", + "permissionScope": "Permissões concedidas aplicam-se apenas a esta conversa." + } +} diff --git a/web-app/src/locales/pt-BR/updater.json b/web-app/src/locales/pt-BR/updater.json new file mode 100644 index 0000000000..d99c7ea2a3 --- /dev/null +++ b/web-app/src/locales/pt-BR/updater.json @@ -0,0 +1,10 @@ +{ + "newVersion": "Nova Versão {{version}}", + "updateAvailable": "Atualização Disponível", + "nightlyBuild": "Build Noturno", + "showReleaseNotes": "Mostrar Notas de Versão", + "hideReleaseNotes": "Ocultar Notas de Versão", + "remindMeLater": "Lembre-me Mais Tarde", + "downloading": "Baixando...", + "updateNow": "Atualizar Agora" +} \ No newline at end of file