Merge branch 'dev' into feat/multiple-scroll-behavior

This commit is contained in:
Dinh Long Nguyen 2025-10-30 01:07:59 +07:00 committed by GitHub
commit 62b3f41bed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 962 additions and 0 deletions

View File

@ -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: '日本語' },
]

View File

@ -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)"
}

View File

@ -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"
}

View File

@ -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 <strong>{{toolName}}</strong>",
"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"
}
}
}

View File

@ -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"
}
}

View File

@ -0,0 +1,3 @@
{
"noLogs": "Nenhum log disponível"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,5 @@
{
"addProvider": "Adicionar Provedor",
"addOpenAIProvider": "Adicionar Provedor OpenAI",
"enterNameForProvider": "Digite o nome para o provedor"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"title": "Solicitação de Chamada de Ferramenta",
"description": "O assistente quer usar a ferramenta: <strong>{{toolName}}</strong>",
"securityNotice": "<strong>Aviso de Segurança:</strong> 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"
}

View File

@ -0,0 +1,12 @@
{
"toolApproval": {
"title": "Aprovação de Ferramenta Necessária",
"description": "O assistente quer usar a ferramenta: <strong>{{toolName}}</strong>",
"securityNotice": "<strong>Aviso de Segurança:</strong> 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."
}
}

View File

@ -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"
}