feat(i18n): add pt-BR translation (#11427)

Adds a complete Brazilian Portuguese (pt-BR) translation for the
LocalAI WebUI across 14 namespaces with full key parity against the
English locale, including modelEditor.json. Registers pt-BR in
SUPPORTED_LANGUAGES with the code 'pt-BR', name 'Português (Brasil)'
and flag 'BR'. Brand/model/product names and technical identifiers are
kept untranslated, matching the existing locale conventions.

Assisted-by: opencode:deepseek-v4-flash-free python3

Signed-off-by: Matheus C. França <matheus-catarino@hotmail.com>
This commit is contained in:
Matheus C. França authored and GitHub committed 2026-08-09 22:34:19 +02:00
1 parent 1f30ecc398
commit f31c3bbf1b
15 files changed
+1782

No files matched your search

@@ -0,0 +1,203 @@
{
"activity": {
"title": "Atividade",
"supporting": "Instalações, downloads e remoções nesta instância.",
"hide": "Ocultar",
"moveToHistory": "Mover para o histórico",
"moreCount": "mais {{count}}",
"waitingForInstaller": "aguardando o instalador",
"progressLabel": "Progresso de {{name}}",
"toNode": "para {{node}}",
"nodesDone": "{{done}} de {{total}} nós concluídos",
"timeLeft": "restam {{value}}",
"cancel": "Cancelar",
"cancelLabel": "Cancelar {{name}}",
"pause": "Pausar",
"pauseLabel": "Pausar {{name}} e manter os dados baixados",
"retry": "Tentar novamente",
"retryLabel": "Tentar novamente {{name}}",
"nodeCount": "{{count}} nós",
"showNodes": "Mostrar {{count}} nós",
"hideNodes": "Ocultar detalhes por nó",
"node": {
"done": "Concluído",
"failed": "Falhou",
"queued": "Na fila",
"workerBusy": "Worker ocupado",
"downloading": "Baixando"
},
"kind": {
"model": "modelo",
"backend": "backend"
},
"verb": {
"installing": "Instalando {{kind}}",
"installed": "{{kind}} instalado",
"removed": "{{kind}} removido",
"staged": "Modelo preparado",
"failed": "Não foi possível instalar {{kind}}",
"queued": "Na fila",
"staging": "Preparando modelo",
"removing": "Removendo {{kind}}",
"failedRemoval": "Não foi possível remover {{kind}}",
"failedStaging": "Não foi possível preparar o modelo"
},
"phase": {
"resolving": "Resolvendo arquivos",
"downloading": "Baixando",
"verifying": "Verificando",
"committing": "Finalizando",
"persisting": "Salvando configuração"
},
"clearHistory": "Limpar histórico",
"inProgress": "Em andamento",
"needsAttention": "Requer atenção",
"record": "Registro",
"historyNote": "Mantém as últimas 50 operações. O histórico fica na memória e é reiniciado quando o LocalAI reinicia.",
"emptyTitle": "Nenhuma operação desde a inicialização",
"emptyBody": "Instalações de modelos e backends aparecem aqui enquanto são executadas e permanecem como registro após a conclusão. O histórico fica na memória, portanto é reiniciado quando o LocalAI reinicia.",
"browseModels": "Procurar modelos",
"viewInModels": "Ver em Modelos",
"viewInBackends": "Ver em Backends",
"rowInstalled": "instalado em {{duration}}",
"rowFailed": "falhou: {{error}}",
"rowCancelled": "cancelado",
"rowRemoved": "removido",
"retryFailed": "Falha ao tentar novamente: {{message}}",
"filter": {
"all": "Todas",
"models": "Modelos",
"backends": "Backends",
"cluster": "Cluster"
},
"summaryRunning_one": "{{count}} operação em andamento.",
"summaryRunning_other": "{{count}} operações em andamento.",
"summaryFailed_one": "{{count}} operação requer atenção.",
"summaryFailed_other": "{{count}} operações requerem atenção.",
"summaryQuiet_one": "Nada em execução. {{count}} operação desde a inicialização.",
"summaryQuiet_other": "Nada em execução. {{count}} operações desde a inicialização.",
"summaryIdle": "Nada em execução.",
"emptyFiltered": "Nenhuma operação corresponde a este filtro.",
"showAll": "Mostrar tudo",
"rowInstalledPlain": "instalado"
},
"manage": {
"title": "Sistema",
"subtitle": "Gerenciar modelos e backends instalados"
},
"settings": {
"title": "Configurações",
"subtitle": "Configurar as configurações de runtime do LocalAI",
"saved": "Configurações salvas com sucesso",
"saveFailed": "Falha ao salvar: {{message}}",
"loadFailed": "Falha ao carregar as configurações: {{message}}",
"sections": {
"branding": "Identidade visual",
"watchdog": "Watchdog",
"memory": "Memória",
"backends": "Backends",
"performance": "Desempenho",
"tracing": "Rastreamento",
"api": "API e CORS",
"p2p": "P2P",
"galleries": "Galerias",
"apikeys": "Chaves de API",
"agents": "Trabalhos de Agentes",
"agentpool": "Pool de Agentes",
"assistant": "Assistente LocalAI",
"distributed": "Distribuído",
"responses": "Respostas"
}
},
"backends": {
"title": "Gerenciamento de Backends",
"subtitle": "Descubra e instale backends de IA para potencializar seus modelos"
},
"backendLogs": {
"title": "Logs de Backends",
"subtitle": "Ver logs dos backends em execução",
"empty": "Nenhum log disponível"
},
"traces": {
"title": "Rastreamentos",
"subtitle": "Ver requisições, respostas e operações de backend registradas"
},
"nodes": {
"title": "Nós Distribuídos",
"subtitle": "Gerenciar nós workers de backend e de agentes"
},
"scheduling": {
"title": "Agendamento",
"subtitle": "Regras de posicionamento de modelos e réplicas no cluster"
},
"p2p": {
"title": "Computação de IA Distribuída",
"subtitle": "Escale suas cargas de trabalho de IA por vários dispositivos com distribuição ponto a ponto"
},
"users": {
"title": "Usuários",
"subtitle": "Gerenciar usuários registrados, funções e convites"
},
"usage": {
"title": "Uso",
"subtitle": "Estatísticas de uso de tokens da API",
"sources": {
"tab": "Origens",
"mixTitle": "Mix de origens",
"ribbonAria": "{{apikey}}% chaves de API, {{web}}% Web UI, {{legacy}}% Legado",
"topSources": "Principais origens ao longo do tempo",
"searchPlaceholder": "Buscar por nome ou prefixo",
"sortBy": "Ordenar",
"sortTokens": "Tokens",
"sortRequests": "Requisições",
"sortLastUsed": "Último uso",
"sortName": "Nome",
"sortUser": "Usuário",
"webUI": "Web UI",
"legacy": "Legado",
"revoked": "revogada",
"filteredTo": "Filtrado por: {{name}}",
"clearFilter": "Limpar filtro",
"other": "Outros ({{count}})",
"noTrafficShort": "Nenhuma requisição neste período.",
"noKeysYet": "Assim que houver requisições, você as verá detalhadas aqui.",
"createKey": "Criar sua primeira chave de API",
"truncatedWarning": "Mostrando as 200 principais chaves. Aplique um filtro para reduzir ainda mais."
}
},
"explorer": {
"title": "Explorador",
"subtitle": "Navegar por arquivos e configurações"
},
"operate": {
"overview": {
"title": "Visão geral",
"subtitle": "Tudo o que está em execução nesta instalação e tudo o que precisa de uma decisão.",
"attention": {
"heading": "Requer atenção",
"clear": "Nada requer atenção. Os backends estão atualizados, nenhuma operação falhou e todos os nós estão saudáveis.",
"backendUpdate": "Atualização disponível: {{from}} → {{to}}"
},
"sections": {
"heading": "Seções",
"runtime": "Runtime",
"runtimeSummary": "{{backends}} backends · {{models}} modelos · {{updates}} atualizações · {{running}} em execução",
"cluster": "Cluster",
"clusterSummary": "{{nodes}} nós",
"observability": "Observabilidade",
"observabilitySummary": "Uso e rastreamentos",
"administration": "Administração",
"administrationSummary": "Usuários, middleware e configurações · {{memory}} de memória em uso",
"clusterSingle": "Nó único",
"observabilityCounted": "{{requests}} requisições · {{errors}} falhas · p95 {{p95}} ms"
},
"headline": {
"requests": "Requisições · {{hours}}h",
"errors": "Requisições com falha",
"p95": "latência p95",
"quiet": "Nenhuma requisição atendida nesta janela ainda.",
"host": "Memória do host"
}
}
}
}
@@ -0,0 +1,55 @@
{
"title": "Agentes",
"subtitle": "Gerenciar agentes de IA autônomos",
"actions": {
"agentHub": "Central de Agentes",
"import": "Importar",
"createAgent": "Criar Agente",
"edit": "Editar",
"chat": "Conversar",
"export": "Exportar",
"delete": "Excluir",
"pause": "Pausar",
"resume": "Retomar"
},
"table": {
"name": "Nome",
"status": "Status",
"events": "Eventos",
"actions": "Ações",
"eventsTooltip": "{{count}} eventos - Clique para ver"
},
"search": {
"placeholder": "Buscar agentes...",
"summary_one": "{{shown}} de {{total}} agente",
"summary_other": "{{shown}} de {{total}} agentes"
},
"empty": {
"noConfigured": "Nenhum agente configurado",
"noConfiguredText": "Crie um agente para começar com fluxos de trabalho autônomos de IA.",
"browseHub": "Não sabe por onde começar? Explore a <1>Central de Agentes</1> para encontrar configurações de agentes prontas que você pode importar.",
"noMatching": "Nenhum agente correspondente",
"noMatchingText": "Nenhum agente corresponde a \"{{query}}\""
},
"sections": {
"yourAgents": "Seus Agentes",
"otherUsersAgents": "Agentes de Outros Usuários"
},
"deleteDialog": {
"title": "Excluir Agente",
"message": "Excluir o agente \"{{name}}\"? Esta ação não pode ser desfeita.",
"confirm": "Excluir"
},
"toasts": {
"loadFailed": "Falha ao carregar agentes: {{message}}",
"deleted": "Agente \"{{name}}\" excluído",
"deleteFailed": "Falha ao excluir agente: {{message}}",
"paused": "Agente \"{{name}}\" pausado",
"resumed": "Agente \"{{name}}\" retomado",
"pauseFailed": "Falha ao pausar agente: {{message}}",
"resumeFailed": "Falha ao retomar agente: {{message}}",
"exported": "Agente \"{{name}}\" exportado",
"exportFailed": "Falha ao exportar agente: {{message}}",
"parseFailed": "Falha ao analisar o arquivo do agente: {{message}}"
}
}
@@ -0,0 +1,112 @@
{
"login": {
"subtitle": "Entre para continuar",
"registerSubtitle": "Crie uma conta",
"createAdminSubtitle": "Crie sua conta de administrador",
"tokenSubtitle": "Digite sua chave de API para continuar",
"email": "E-mail",
"emailPlaceholder": "voce@exemplo.com",
"name": "Nome",
"namePlaceholder": "Seu nome (opcional)",
"password": "Senha",
"passwordPlaceholder": "Digite a senha...",
"newPasswordPlaceholder": "Pelo menos 12 caracteres",
"confirmPassword": "Confirmar Senha",
"confirmPasswordPlaceholder": "Repita a senha",
"inviteCodeLabel": "Código de Convite",
"inviteCodeOptional": " (opcional — pule a espera de aprovação)",
"inviteCodePlaceholder": "Cole seu código de convite...",
"tokenPlaceholder": "Digite a chave de API...",
"tokenAltPlaceholder": "Digite o token de API...",
"signIn": "Entrar",
"signingIn": "Entrando...",
"register": "Registrar",
"creatingAccount": "Criando conta...",
"createAdminAccount": "Criar Conta de Administrador",
"signInWithGitHub": "Entrar com GitHub",
"signInWithSSO": "Entrar com SSO",
"loginWithToken": "Entrar com Token",
"showTokenLogin": "Entrar com Token de API",
"hideTokenLogin": "Ocultar login com token",
"noAccount": "Não tem uma conta?",
"hasAccount": "Já tem uma conta?",
"or": "ou",
"errors": {
"loginFailed": "Falha no login",
"registrationFailed": "Falha no registro",
"invalidToken": "Token inválido",
"passwordsDoNotMatch": "As senhas não coincidem",
"enterToken": "Digite um token",
"networkError": "Erro de rede",
"inviteRequired": "Um código de convite válido é obrigatório para registrar"
},
"messages": {
"registrationPending": "Registro bem-sucedido, aguardando aprovação."
}
},
"account": {
"title": "Conta",
"subtitle": "Perfil, credenciais e chaves de API",
"unavailable": "Conta indisponível",
"unavailableText": "A autenticação deve estar habilitada para gerenciar sua conta.",
"tabs": {
"profile": "Perfil",
"security": "Segurança",
"apiKeys": "Chaves de API"
},
"profile": {
"displayName": "Nome de exibição",
"displayNameDescription": "Seu nome público de exibição",
"avatarUrl": "URL do avatar",
"avatarUrlDescription": "URL da sua foto de perfil",
"avatarUrlPlaceholder": "https://exemplo.com/avatar.png",
"save": "Salvar",
"saving": "Salvando...",
"updated": "Perfil atualizado",
"updateFailed": "Falha ao atualizar o perfil: {{message}}"
},
"security": {
"currentPassword": "Senha atual",
"currentPasswordDescription": "Digite sua senha existente para verificar sua identidade",
"currentPasswordPlaceholder": "Senha atual",
"newPassword": "Nova senha",
"newPasswordDescription": "Deve ter pelo menos 12 caracteres",
"newPasswordPlaceholder": "Nova senha",
"confirmPassword": "Confirmar senha",
"confirmPasswordDescription": "Digite novamente sua nova senha",
"confirmPasswordPlaceholder": "Confirme a nova senha",
"changePassword": "Alterar senha",
"changing": "Alterando...",
"changed": "Senha alterada",
"passwordsDoNotMatch": "As senhas não coincidem",
"tooShort": "A nova senha deve ter pelo menos 12 caracteres",
"oauthOnly": "O gerenciamento de senha não está disponível para contas {{provider}}."
},
"apiKeys": {
"create": "Criar chave de API",
"createDescription": "Gere uma chave para acesso programático",
"namePlaceholder": "Nome da chave (ex.: meu-app)",
"createButton": "Criar",
"creating": "Criando...",
"createdToast": "Chave de API criada",
"createFailed": "Falha ao criar a chave de API: {{message}}",
"loadFailed": "Falha ao carregar as chaves de API: {{message}}",
"revoke": "Revogar",
"revokeKey": "Revogar chave",
"revokeTitle": "Revogar Chave de API",
"revokeMessage": "Revogar a chave de API \"{{name}}\"? Esta ação não pode ser desfeita.",
"revoked": "Chave de API revogada",
"revokeFailed": "Falha ao revogar a chave de API: {{message}}",
"copyNow": "Copie agora — esta chave não será mostrada novamente",
"copiedToast": "Copiado para a área de transferência",
"copyFailed": "Falha ao copiar",
"empty": "Nenhuma chave de API ainda. Crie uma acima para obter acesso programático.",
"lastUsed": "último uso em {{date}}"
}
},
"notFound": {
"title": "Página Não Encontrada",
"text": "Parece que esta página se perdeu. Vamos colocá-lo de volta no caminho certo.",
"goHome": "Ir para a Página Inicial"
}
}
@@ -0,0 +1,131 @@
{
"activity": {
"thought": "Pensamento",
"tool": "Ferramenta",
"result": "Resultado",
"toolResult": "Resultado de {{name}}",
"thinking": "Pensando..."
},
"header": {
"manageModeTooltip": "Este chat pode instalar modelos, editar configurações e gerenciar backends conversando com o LocalAI.",
"modelInfo": "Informações do modelo",
"chatSettings": "Configurações do chat",
"modelInfoTitle": "Informações do Modelo: {{model}}",
"editConfig": "Editar configuração",
"close": "Fechar"
},
"modelInfo": {
"backend": "Backend",
"modelFile": "Arquivo do modelo",
"contextSize": "Tamanho do contexto",
"threads": "Threads",
"mcp": "MCP",
"configured": "Configurado",
"chatTemplate": "Modelo de conversa",
"yes": "Sim",
"gpuLayers": "Camadas GPU"
},
"context": {
"label": "Contexto: {{percent}}%",
"labelWithTokens": "Contexto: {{percent}}% ({{tokens}} tokens)"
},
"settings": {
"title": "Configurações do Chat",
"manageMode": "Modo de gerenciamento",
"manageModeDesc": "Permita que este chat instale modelos, alterne backends e edite configurações conversando com o LocalAI.",
"systemPrompt": "Instrução do sistema",
"systemPromptPlaceholder": "Você é um assistente útil...",
"temperature": "Temperatura",
"topP": "Top P",
"topK": "Top K",
"contextSize": "Tamanho do contexto",
"contextSizePlaceholder": "2048",
"clearHistory": "Limpar histórico do chat"
},
"empty": {
"manageTitle": "Gerencie o LocalAI conversando",
"manageText": "Peça para instalar modelos, alternar backends, editar configurações ou verificar o status. O assistente resumirá as ações e aguardará sua confirmação antes de alterar qualquer coisa.",
"startTitle": "Inicie uma conversa",
"readyText": "Pronto para conversar com {{model}}",
"selectModelText": "Selecione um modelo acima para começar",
"suggestionsManage": [
"O que está instalado?",
"Instalar um modelo de chat",
"Mostrar o status do sistema",
"Atualizar um backend"
],
"suggestionsChat": [
"Explique como isto funciona",
"Ajude-me a escrever código",
"Resumir um documento",
"Gerar ideias"
],
"recent": "Recente",
"noMessages": "Nenhuma mensagem ainda",
"hintEnter": "Enter para enviar",
"hintShiftEnter": "Shift+Enter para nova linha",
"hintAttach": "Anexar arquivos"
},
"errors": {
"viewTraces": "Ver rastreamentos para detalhes"
},
"actions": {
"copy": "Copiar",
"edit": "Editar",
"editMessage": "Editar mensagem",
"save": "Salvar",
"cancel": "Cancelar",
"regenerate": "Regenerar",
"branch": "Ramificar daqui",
"jumpToLatest": "Ir para a mais recente"
},
"streaming": {
"transferring": "Transferindo modelo...",
"transferringTo": "Transferindo o modelo para {{node}}..."
},
"tokens": {
"perSec": "{{count}} tok/s",
"peak": "Pico: {{count}} tok/s",
"usage": "{{prompt}}p + {{completion}}c = {{total}}"
},
"input": {
"placeholder": "Mensagem...",
"attachFile": "Anexar arquivo",
"send": "Enviar mensagem",
"stopGenerating": "Parar a geração",
"canvasTitle": "Canvas — extrai blocos de código e mídia para um painel lateral para visualização, cópia e download",
"canvasLabel": "Canvas",
"openCanvas": "Abrir painel do canvas"
},
"deleteAllDialog": {
"title": "Excluir Todos os Chats",
"message": "Excluir todos os chats? Esta ação não pode ser desfeita.",
"confirm": "Excluir todos"
},
"toasts": {
"selectModel": "Selecione um modelo",
"copied": "Copiado para a área de transferência",
"copyFailed": "Não foi possível copiar para a área de transferência",
"chatCopied": "Chat copiado para a área de transferência",
"forked": "Novo chat criado"
},
"menu": {
"trigger": "Chats",
"triggerTitle": "Conversas (Ctrl/Cmd+K)",
"search": "Buscar conversas...",
"clearSearch": "Limpar busca",
"noMatch": "Nenhuma conversa corresponde à sua busca",
"noConversations": "Nenhuma conversa ainda",
"rename": "Renomear",
"duplicate": "Duplicar chat",
"copyChat": "Copiar chat",
"exportMarkdown": "Exportar como Markdown",
"deleteChat": "Excluir chat",
"newChat": "Novo chat",
"clearAll": "Limpar tudo",
"deleteAllTitle": "Excluir todas as conversas"
},
"message": {
"you": "Você"
}
}
@@ -0,0 +1,43 @@
{
"title": "Base de Conhecimento",
"subtitle": "Gerencie coleções de documentos para RAG de agentes",
"newPlaceholder": "Nome da nova coleção...",
"actions": {
"create": "Criar",
"creating": "Criando...",
"details": "Detalhes",
"reset": "Redefinir",
"delete": "Excluir",
"viewDetails": "Ver detalhes",
"resetCollection": "Redefinir coleção",
"deleteCollection": "Excluir coleção"
},
"sections": {
"yourCollections": "Suas Coleções",
"otherUsersCollections": "Coleções de Outros Usuários"
},
"empty": {
"title": "Nenhuma coleção ainda",
"text": "As coleções permitem organizar documentos em bases de conhecimento que os agentes podem pesquisar usando RAG (Retrieval-Augmented Generation). Crie uma coleção acima para começar.",
"noPersonal": "Você ainda não tem coleções."
},
"deleteDialog": {
"title": "Excluir Coleção",
"message": "Excluir a coleção \"{{name}}\"? Isso removerá todas as entradas e não pode ser desfeito.",
"confirm": "Excluir"
},
"resetDialog": {
"title": "Redefinir Coleção",
"message": "Redefinir a coleção \"{{name}}\"? Isso removerá todas as entradas, mas manterá a coleção.",
"confirm": "Redefinir"
},
"toasts": {
"loadFailed": "Falha ao carregar coleções: {{message}}",
"created": "Coleção \"{{name}}\" criada",
"createFailed": "Falha ao criar a coleção: {{message}}",
"deleted": "Coleção \"{{name}}\" excluída",
"deleteFailed": "Falha ao excluir a coleção: {{message}}",
"reset": "Coleção \"{{name}}\" redefinida",
"resetFailed": "Falha ao redefinir a coleção: {{message}}"
}
}
@@ -0,0 +1,115 @@
{
"unsaved": {
"title": "Descartar alterações não salvas?",
"message": "Você tem alterações não salvas que serão perdidas se você sair desta página.",
"leave": "Sair"
},
"actions": {
"save": "Salvar",
"saving": "Salvando...",
"cancel": "Cancelar",
"close": "Fechar",
"confirm": "Confirmar",
"delete": "Excluir",
"edit": "Editar",
"add": "Adicionar",
"remove": "Remover",
"create": "Criar",
"update": "Atualizar",
"refresh": "Atualizar",
"reload": "Recarregar",
"retry": "Tentar novamente",
"search": "Buscar",
"filter": "Filtrar",
"clear": "Limpar",
"reset": "Redefinir",
"apply": "Aplicar",
"back": "Voltar",
"next": "Próximo",
"previous": "Anterior",
"open": "Abrir",
"submit": "Enviar",
"select": "Selecionar",
"selectAll": "Selecionar tudo",
"copy": "Copiar",
"copied": "Copiado",
"download": "Baixar",
"upload": "Enviar",
"import": "Importar",
"export": "Exportar",
"view": "Ver",
"details": "Detalhes",
"settings": "Configurações",
"help": "Ajuda",
"yes": "Sim",
"no": "Não",
"loading": "Carregando..."
},
"status": {
"loading": "Carregando...",
"saving": "Salvando...",
"saved": "Salvo",
"ready": "Pronto",
"running": "Em execução",
"stopped": "Parado",
"starting": "Iniciando...",
"stopping": "Parando...",
"pending": "Pendente",
"active": "Ativo",
"inactive": "Inativo",
"enabled": "Habilitado",
"disabled": "Desabilitado",
"online": "Online",
"offline": "Offline",
"error": "Erro",
"success": "Sucesso",
"warning": "Aviso",
"info": "Informação",
"empty": "Nenhum item",
"none": "Nenhum",
"unknown": "Desconhecido"
},
"dialogs": {
"confirmDelete": {
"title": "Confirmar exclusão",
"message": "Tem certeza de que deseja excluir isto? Esta ação não pode ser desfeita.",
"confirm": "Excluir",
"cancel": "Cancelar"
},
"unsavedChanges": {
"title": "Alterações não salvas",
"message": "Você tem alterações não salvas. Deseja descartá-las?",
"discard": "Descartar",
"keepEditing": "Continuar editando"
}
},
"forms": {
"required": "Obrigatório",
"optional": "Opcional",
"name": "Nome",
"description": "Descrição",
"type": "Tipo",
"value": "Valor",
"search": "Buscar...",
"selectPlaceholder": "Selecione uma opção...",
"noMatch": "Nenhuma correspondência"
},
"time": {
"now": "agora",
"secondsAgo_one": "há {{count}} segundo",
"secondsAgo_other": "há {{count}} segundos",
"minutesAgo_one": "há {{count}} minuto",
"minutesAgo_other": "há {{count}} minutos",
"hoursAgo_one": "há {{count}} hora",
"hoursAgo_other": "há {{count}} horas",
"daysAgo_one": "há {{count}} dia",
"daysAgo_other": "há {{count}} dias"
},
"units": {
"bytes": "B",
"kilobytes": "KB",
"megabytes": "MB",
"gigabytes": "GB",
"terabytes": "TB"
}
}
@@ -0,0 +1,17 @@
{
"generic": "Algo deu errado",
"network": "Erro de rede. Verifique sua conexão e tente novamente.",
"unauthorized": "Você não está autorizado a executar esta ação.",
"forbidden": "Acesso negado.",
"notFound": "O recurso solicitado não foi encontrado.",
"serverError": "Erro no servidor. Tente novamente mais tarde.",
"loadFailed": "Falha ao carregar: {{message}}",
"saveFailed": "Falha ao salvar: {{message}}",
"deleteFailed": "Falha ao excluir: {{message}}",
"updateFailed": "Falha ao atualizar: {{message}}",
"createFailed": "Falha ao criar: {{message}}",
"operationFailed": "Falha na operação: {{message}}",
"invalidInput": "Entrada inválida. Verifique o formulário e tente novamente.",
"tryAgain": "Tente novamente.",
"contactAdmin": "Se o problema persistir, entre em contato com o administrador."
}
@@ -0,0 +1,119 @@
{
"cluster": {
"vram": "VRAM do cluster",
"ram": "RAM do cluster",
"nodesOnline": "{{healthy}}/{{total}} nós online"
},
"resourceGpu": "GPU",
"resourceRam": "RAM",
"greeting": {
"morning": "Bom dia",
"afternoon": "Boa tarde",
"evening": "Boa noite",
"night": "Trabalhando até tarde"
},
"statusLine": {
"modelsLoaded_one": "{{count}} modelo carregado",
"modelsLoaded_other": "{{count}} modelos carregados",
"noModelsLoaded": "Nenhum modelo carregado",
"nodes_one": "{{count}} nó",
"nodes_other": "{{count}} nós",
"loadedLabel": "Carregados",
"nodesLabel": "Nós"
},
"assistant": {
"title": "Gerencie o LocalAI conversando",
"description": "Instale modelos, alterne backends, edite configurações e verifique o status conversando com o LocalAI.",
"open": "Abrir assistente",
"tooltip": "Gerencie o LocalAI conversando"
},
"input": {
"placeholder": "Mensagem...",
"attachImage": "Anexar imagem",
"attachAudio": "Anexar áudio",
"attachFile": "Anexar arquivo",
"enterToSend": "Enter para enviar",
"selectModelFirst": "Selecione um modelo primeiro",
"sendMessage": "Enviar mensagem",
"selectModelToast": "Selecione um modelo primeiro"
},
"quickLinks": {
"manageByChat": "Gerenciar por chat",
"installedModels": "Modelos Instalados",
"browseGallery": "Explorar Galeria",
"importModel": "Importar Modelo",
"documentation": "Documentação"
},
"loadedModels": {
"heading": "Modelos ativos",
"count_one": "{{count}} modelo carregado",
"count_other": "{{count}} modelos carregados",
"stop": "Parar modelo",
"stopAll": "Parar todos",
"serving": "Servindo"
},
"stopDialog": {
"title": "Parar Modelo",
"message": "Parar o modelo {{model}}?",
"confirm": "Parar {{model}}",
"stopAllTitle": "Parar Todos os Modelos",
"stopAllMessage": "Parar todos os {{count}} modelos carregados?",
"stopAllConfirm": "Parar todos",
"stoppedToast": "Modelo {{model}} parado",
"allStoppedToast": "Todos os modelos parados",
"stopFailed": "Falha ao parar: {{message}}"
},
"wizard": {
"getStarted": "Comece com {{name}}",
"intro": "Instale seu primeiro modelo para começar. Explore a galeria ou importe o seu próprio.",
"steps": {
"step1Title": "Explore a Galeria de Modelos",
"step1Body": "Encontre o modelo certo para suas necessidades em nossa coleção selecionada.",
"step2Title": "Instale um Modelo",
"step2Body": "Clique em instalar para baixar e configurá-lo automaticamente.",
"step3Title": "Comece a Conversar",
"step3Body": "Converse com seu modelo direto do navegador ou use a API."
},
"browseGallery": "Explorar Galeria de Modelos",
"importModel": "Importar Modelo",
"docs": "Documentação",
"noModelsTitle": "Nenhum Modelo Disponível",
"noModelsBody": "Ainda não há modelos instalados. Peça ao administrador para configurar modelos para você poder começar a conversar."
},
"starters": {
"title": "Recomendados para o seu hardware",
"tier": {
"cpu": "Somente CPU",
"gpu-small": "GPU",
"gpu-mid": "GPU",
"gpu-large": "GPU"
},
"cpuNote": "Nenhuma GPU detectada — estes modelos pequenos permanecem responsivos na CPU.",
"gpuNote": "Selecionados para caber na sua VRAM disponível com espaço para o contexto.",
"install": "Instalar",
"installing": "Instalando",
"installStarted": "Instalando {{model}}…",
"installFailed": "Falha na instalação: {{message}}"
},
"connect": {
"title": "Um endpoint, toda API",
"subtitle": "O LocalAI oferece sua própria API completa — geração de imagem e vídeo, profundidade, detecção de objetos, reranking, áudio, reconhecimento facial e de voz, e voz em tempo real via WebRTC e WebSocket. Além disso, uma camada de compatibilidade permite que qualquer aplicativo criado para OpenAI, Anthropic, Ollama ou OpenAI Responses se comunique sem alterações.",
"nativeTitle": "API nativa",
"compatTitle": "Compatibilidade total",
"apiReference": "Referência completa da API",
"copy": "Copiar",
"copied": "Copiado",
"browse": "Explorar a API",
"hide": "Ocultar endpoints",
"dismiss": "Dispensar"
},
"jump": {
"heading": "Continue de onde parou",
"discover": "Descobrir",
"discoverSummary": "Explore a galeria e instale modelos",
"create": "Criar",
"createSummary": "Abra uma sessão de chat, imagem ou voz",
"operate": "Operar",
"operateSummary": "{{models}} modelos configurados · nós, atividade e rastreamentos"
}
}
@@ -0,0 +1,143 @@
{
"title": "Importar Novo Modelo",
"subtitle": {
"simple": "Importe um modelo de uma URI — a detecção automática escolhe o backend.",
"powerYaml": "Escreva a configuração YAML completa do modelo.",
"powerPrefs": "Preferências de importação refinadas."
},
"actions": {
"import": "Importar Modelo",
"importing": "Importando...",
"create": "Criar",
"saving": "Salvando...",
"browseHF": "Explorar modelos no HF",
"addCustom": "Adicionar Personalizado",
"copy": "Copiar"
},
"form": {
"modelUri": "URI do modelo",
"uriPlaceholder": "huggingface://TheBloke/Llama-2-7B-Chat-GGUF ou https://exemplo.com/modelo.gguf",
"uriHint": "Digite a URI ou o caminho do arquivo do modelo que deseja importar",
"supportedFormats": "Formatos de URI Suportados",
"options": "Opções",
"preferences": "Preferências (Opcional)",
"commonPreferences": "Preferências Comuns",
"customPreferences": "Preferências Personalizadas",
"customKeyValueHint": "Adicione pares de chave-valor personalizados para configuração avançada.",
"preferenceKey": "Chave da preferência da linha {{index}}",
"preferenceValue": "Valor da preferência da linha {{index}}",
"removePref": "Remover esta preferência",
"key": "Chave",
"value": "Valor",
"backend": "Backend",
"backendAuto": "Detecção automática (com base na URI)",
"backendLoading": "Carregando backends…",
"backendSearch": "Buscar backends...",
"backendHint": "Force um backend específico. Deixe vazio para detectar automaticamente pela URI. Itens marcados como \"seleção manual\" não são detectáveis automaticamente — escolha-os você mesmo se souber o que o modelo precisa.",
"backendErrorHint": "Não foi possível carregar a lista de backends — apenas detecção automática.",
"backendNotInstalled": "Este backend ainda não está instalado. Enviar a importação fará o download dele primeiro.",
"modelName": "Nome do Modelo",
"modelNamePlaceholder": "Deixe vazio para usar o nome do arquivo",
"modelNameHint": "Nome personalizado para o modelo. Se vazio, o nome do arquivo será usado.",
"description": "Descrição",
"descriptionPlaceholder": "Deixe vazio para usar a descrição padrão",
"descriptionHint": "Descrição personalizada para o modelo.",
"quantizations": "Quantizações",
"quantizationsPlaceholder": "q4_k_m,q4_k_s,q3_k_m (separados por vírgula)",
"quantizationsHint": "Quantizações preferidas (separadas por vírgula). Deixe vazio para o padrão (q4_k_m).",
"mmprojQuantizations": "Quantizações MMProj",
"mmprojQuantizationsPlaceholder": "fp16,fp32 (separados por vírgula)",
"mmprojQuantizationsHint": "Quantizações MMProj preferidas. Deixe vazio para o padrão (fp16).",
"embeddings": "Embeddings",
"embeddingsHint": "Habilite o suporte a embeddings para este modelo.",
"modelType": "Tipo do Modelo",
"modelTypePlaceholder": "AutoModelForCausalLM (para o backend transformers)",
"modelTypeHint": "Tipo de modelo para o backend transformers. Exemplos: AutoModelForCausalLM, SentenceTransformer, Mamba.",
"pipelineType": "Tipo de Pipeline",
"pipelineTypeHint": "Tipo de pipeline para o backend diffusers.",
"schedulerType": "Tipo de Scheduler",
"schedulerTypePlaceholder": "k_dpmpp_2m (opcional)",
"schedulerTypeHint": "Tipo de scheduler para o backend diffusers. Exemplos: k_dpmpp_2m, euler_a, ddim.",
"enableParameters": "Parâmetros Habilitados",
"enableParametersPlaceholder": "negative_prompt,num_inference_steps (separados por vírgula)",
"enableParametersHint": "Parâmetros habilitados para o backend diffusers (separados por vírgula).",
"cuda": "CUDA",
"cudaHint": "Habilite o suporte a CUDA para aceleração por GPU.",
"yamlEditor": "Editor de Configuração YAML",
"manualPick": "seleção manual",
"manualPickTooltip": "A detecção automática não roteará para este backend. Escolha-o aqui se você souber que é o que deseja."
},
"modality": {
"text": "LLM de texto",
"asr": "Reconhecimento de fala",
"tts": "Texto para fala",
"image": "Imagem / Vídeo",
"video": "Geração de vídeo",
"embeddings": "Embeddings",
"reranker": "Rerankers",
"detection": "Detecção de objetos",
"vad": "Detecção de atividade de voz",
"other": "Outro"
},
"powerTabs": {
"ariaLabel": "Aba do modo avançado",
"preferences": "Preferências",
"yaml": "YAML"
},
"switchDialog": {
"title": "Manter suas preferências personalizadas?",
"body": "Alternar para o modo Simples oculta as preferências além de backend, nome e descrição. Elas ainda serão enviadas quando você importar.",
"cancel": "Cancelar",
"discard": "Descartar e alternar",
"keep": "Manter e alternar"
},
"estimate": {
"title": "Requisitos estimados",
"download": "Download: {{size}}",
"vram": "VRAM: {{vram}}"
},
"toasts": {
"noUri": "Digite uma URI de modelo",
"noYaml": "Digite a configuração YAML",
"started": "Importação iniciada! Acompanhando o progresso...",
"startedWithMeta": "Importação iniciada! Acompanhando o progresso... ({{meta}})",
"imported": "Modelo importado com sucesso!",
"importedYaml": "Configuração do modelo importada com sucesso!",
"importFailed": "Falha na importação: {{message}}",
"startImportFailed": "Falha ao iniciar a importação: {{message}}",
"backendsLoadFailed": "Não foi possível carregar a lista de backends — usando apenas detecção automática",
"modalityClearedBackend": "Seleção de backend limpa — ela não estava no grupo {{label}}.",
"copied": "Copiado para a área de transferência"
},
"uriFormats": {
"huggingface": {
"title": "HuggingFace",
"standard": "Formato HuggingFace padrão",
"short": "Formato HuggingFace curto",
"fullUrl": "URL HuggingFace completa"
},
"http": {
"title": "URLs HTTP/HTTPS",
"direct": "Download direto de qualquer URL HTTPS"
},
"local": {
"title": "Arquivos Locais",
"filePath": "Caminho de arquivo local (absoluto)",
"directYaml": "Arquivo YAML de configuração local direto"
},
"oci": {
"title": "Registro OCI",
"registry": "Registro de contêineres OCI",
"tarball": "Arquivo tarball OCI local"
},
"ollama": {
"title": "Ollama",
"model": "Formato de modelo do Ollama"
},
"yaml": {
"title": "Arquivos de Configuração YAML",
"remote": "Arquivo de configuração YAML remoto",
"local": "Arquivo de configuração YAML local"
}
}
}
@@ -0,0 +1,461 @@
{
"studio": {
"tabs": {
"images": "Imagens",
"video": "Vídeo",
"tts": "TTS",
"sound": "Som",
"transform": "Transformar",
"threed": "3D",
"overview": "Visão geral"
},
"overview": {
"eyebrow": "{{ready}} de {{total}} modalidades prontas",
"title": "Studio",
"subtitle": "Gere imagens, vídeos, 3D, fala e som com os modelos desta máquina.",
"canMake": "O que você pode criar",
"running": "Em execução agora",
"recent": "Saídas recentes",
"noModel": "Nenhum modelo instalado",
"install": "Instalar um modelo",
"ready": "Pronto",
"seconds": "{{seconds}}s",
"describe": {
"images": "Texto para imagem, imagem para imagem, imagens de referência",
"video": "Texto para vídeo e imagem para vídeo",
"threed": "Reconstrução de malha a partir de imagem",
"tts": "Texto para fala usando sua biblioteca de vozes",
"sound": "Música e efeitos sonoros a partir de um prompt",
"transform": "Separação, aprimoramento e conversão de voz"
}
},
"groups": {
"create": "Criar",
"voice": "Voz",
"transform": "Transformar"
}
},
"image": {
"title": "Geração de Imagens",
"labels": {
"model": "Modelo",
"prompt": "Prompt",
"promptPlaceholder": "Descreva a imagem que deseja gerar...",
"negativePrompt": "Prompt Negativo",
"negativePromptPlaceholder": "O que evitar...",
"size": "Tamanho",
"count": "Quantidade (1-4)",
"advanced": "Configurações Avançadas",
"imageInputs": "Entradas de Imagem",
"steps": "Etapas",
"stepsPlaceholder": "20",
"seed": "Semente",
"seedPlaceholder": "Aleatória",
"sourceImage": "Imagem de Origem (img2img)",
"refImages": "Imagens de Referência",
"refImagesAdded_one": "{{count}} imagem adicionada",
"refImagesAdded_other": "{{count}} imagens adicionadas"
},
"actions": {
"view": "Ver",
"generate": "Gerar",
"generating": "Gerando..."
},
"empty": "As imagens geradas aparecerão aqui",
"toasts": {
"noPrompt": "Digite um prompt",
"noModel": "Selecione um modelo",
"noResults": "Nenhuma imagem gerada"
}
},
"video": {
"title": "Geração de Vídeo",
"labels": {
"model": "Modelo",
"prompt": "Prompt",
"promptPlaceholder": "Descreva o vídeo que deseja gerar...",
"duration": "Duração (segundos)",
"fps": "FPS",
"size": "Tamanho",
"advanced": "Configurações Avançadas",
"seed": "Semente",
"seedPlaceholder": "Aleatória",
"frames": "Quadros",
"referenceMedia": "Mídia de referência",
"startImage": "Imagem inicial",
"endImage": "Imagem final",
"avatarAudio": "Áudio do avatar"
},
"actions": {
"generate": "Gerar",
"generating": "Gerando..."
},
"empty": "O vídeo gerado aparecerá aqui",
"toasts": {
"noPrompt": "Digite um prompt",
"noModel": "Selecione um modelo",
"noResults": "Nenhum vídeo gerado"
}
},
"threed": {
"title": "Geração 3D",
"labels": {
"model": "Modelo",
"image": "Imagem de entrada",
"quality": "Qualidade",
"quality_auto": "Automática (melhor disponível)",
"quality_coarse": "Pré-visualização grosseira (rápida)",
"quality_512": "512³ fino",
"quality_1024": "Cascata 1024³ (lenta)",
"background": "Fundo",
"background_auto": "Remover automaticamente o fundo sólido",
"background_keep": "Manter original",
"background_black": "Remover preto",
"background_white": "Remover branco",
"advanced": "Configurações Avançadas",
"steps": "Etapas de forma",
"textureSteps": "Etapas de material",
"guidance": "Orientação",
"seed": "Semente",
"seedPlaceholder": "Aleatória"
},
"actions": {
"generate": "Gerar",
"generating": "Gerando...",
"remesh": "Aplicar remalhamento",
"remeshing": "Aplicando remalhamento...",
"showOriginal": "Mostrar original",
"download": "Baixar GLB"
},
"remesh": {
"title": "Remalhamento hermético para impressão",
"detail": "Detalhe do remalhamento",
"coarser": "Mais grosseiro · mais rápido",
"finer": "Mais fino · mais lento",
"hint": "O detalhe controla as menores características preservadas. O deslocamento de envolvimento segue automaticamente.",
"ready": "Pré-visualizando o modelo remalhado hermético. Esta é a versão que será baixada."
},
"viewer": {
"wireframe": "Wireframe",
"autoRotate": "Rotação automática",
"noWebgl": "WebGL2 não está disponível neste navegador — baixe o GLB para vê-lo em outro lugar.",
"contextLost": "A visualização 3D perdeu o contexto da GPU — recarregue a página para restaurá-la.",
"stats": "{{verts}} vértices · {{tris}} triângulos",
"hint": "arrastar: girar · pinça/roda: zoom · dois dedos/clique direito: mover · duplo clique: redefinir"
},
"empty": "O modelo 3D gerado aparecerá aqui",
"toasts": {
"noImage": "Forneça uma imagem de entrada",
"noModel": "Selecione um modelo",
"noResults": "Nenhum modelo gerado"
}
},
"tts": {
"title": "Texto para Fala",
"labels": {
"model": "Modelo",
"voice": "Voz",
"voicePlaceholder": "Falante opcional ou ID de voz",
"input": "Texto",
"inputPlaceholder": "Digite o texto para sintetizar..."
},
"actions": {
"generate": "Gerar",
"generating": "Gerando..."
},
"empty": "O áudio gerado aparecerá aqui",
"toasts": {
"noText": "Digite o texto",
"noModel": "Selecione um modelo",
"generated": "Fala gerada",
"generateFailed": "Falha na geração"
},
"voiceLibrary": {
"cloningReady": "Clonagem de voz",
"loading": "Carregando vozes salvas…",
"modelDefault": "Usar padrão do modelo",
"empty": "Nenhuma voz salva ainda.",
"create": "Criar uma",
"manage": "Gerenciar Biblioteca de Vozes",
"namedVoiceHint": "Este modelo não aceita perfis de áudio de referência. Você ainda pode digitar um falante nomeado suportado pelo seu backend."
}
},
"voiceLibrary": {
"title": "Biblioteca de Vozes",
"subtitle": "Crie e gerencie vozes de referência reutilizáveis para cada modelo instalado que suporta clonagem de voz.",
"loading": "Carregando vozes salvas…",
"listLabel": "Perfis de voz salvos",
"status": {
"ready": "Pronto"
},
"summary": {
"label": "Status da biblioteca de vozes",
"profiles": "vozes salvas",
"modelsReady_one": "{{count}} modelo compatível pronto",
"modelsReady_other": "{{count}} modelos compatíveis prontos",
"noModels": "Nenhum modelo compatível instalado"
},
"search": {
"label": "Buscar perfis de voz",
"placeholder": "Buscar vozes, idiomas ou transcrições"
},
"filters": {
"language": "Filtrar por idioma",
"allLanguages": "Todos os idiomas"
},
"empty": {
"title": "Sua biblioteca de vozes está vazia",
"body": "Grave ou envie um clipe de referência autorizado, adicione a transcrição exata e reuse-o nos modelos de TTS compatíveis."
},
"noResults": {
"title": "Nenhuma voz corresponde a estes filtros",
"body": "Tente uma busca diferente ou mostre todos os idiomas."
},
"detail": {
"eyebrow": "Voz selecionada",
"emptyTitle": "Selecione uma voz para inspecioná-la",
"emptyBody": "Áudio de referência, transcrição, compatibilidade e detalhes de consentimento aparecerão aqui.",
"referenceAudio": "Áudio de referência",
"transcript": "Transcrição de referência"
},
"metadata": {
"language": "Idioma",
"languageUnknown": "Não especificado",
"duration": "Duração",
"sampleRate": "Taxa de amostragem",
"created": "Criado em"
},
"consent": {
"confirmed": "Consentimento confirmado",
"confirmedAt": "Confirmado em {{date}}"
},
"modelSetup": {
"title": "Instalar um modelo de clonagem de voz",
"body": "Esta voz está pronta, mas precisa de um modelo que aceite áudio de referência. Escolha um verificado por este servidor.",
"loading": "Encontrando modelos compatíveis em suas galerias…",
"backendUnknown": "Backend selecionado durante a instalação",
"install": "Instalar",
"installing": "Instalando…",
"loadFailed": "Recomendações compatíveis não puderam ser carregadas.",
"noneAvailable": "Nenhum modelo compatível não instalado está disponível nas galerias configuradas.",
"capabilityNote": "As recomendações vêm dos metadados de capacidade do modelo, não de uma lista de modelos do lado do navegador."
},
"api": {
"title": "Uso da API e modelos compatíveis",
"summary": "Use esta voz fora do navegador ou verifique o suporte do modelo",
"body": "Envie a URI de voz estável do perfil com cada requisição de fala. O LocalAI resolve o áudio de referência privado e a transcrição no momento da geração; o YAML do modelo não é modificado.",
"compatibleModels": "Modelos compatíveis instalados",
"noInstalledModels": "Nenhum ainda. Instale um dos modelos verificados pelo servidor acima antes de enviar esta requisição.",
"curlExample": "Exemplo com cURL",
"copy": "Copiar requisição",
"endpointNote": "Os mesmos campos de modelo, entrada e voz também funcionam com POST /tts."
},
"actions": {
"create": "Criar voz",
"createFirst": "Crie sua primeira voz",
"retry": "Tentar novamente",
"clearFilters": "Limpar filtros",
"useInTTS": "Usar em Texto para Fala",
"delete": "Excluir voz",
"installModel": "Instalar um modelo compatível",
"browseModels": "Explorar todos os modelos"
},
"deleteDialog": {
"title": "Excluir esta voz?",
"message": "“{{name}}” e seu áudio de referência serão removidos permanentemente. O YAML dos modelos existentes não é alterado.",
"deleting": "Excluindo…"
},
"toasts": {
"deleted": "Voz {{name}} excluída",
"installStarted": "Instalando {{name}}. O progresso está disponível em Operações.",
"installFailed": "Não foi possível iniciar a instalação: {{message}}",
"apiCopied": "Requisição de API copiada",
"copyFailed": "Não foi possível copiar a requisição de API"
}
},
"voiceCreate": {
"eyebrow": "Biblioteca de Vozes",
"title": "Criar uma voz reutilizável",
"subtitle": "Adicione um clipe de referência limpo e sua transcrição exata. O LocalAI cuida dos parâmetros de clonagem específicos do backend no momento da geração.",
"sections": {
"reference": {
"title": "Áudio de referência",
"body": "Grave no navegador ou envie um clipe existente. A fala deve ser limpa, natural e de um único falante."
},
"details": {
"title": "Identidade e transcrição",
"body": "Dê aos administradores um nome reconhecível e transcreva o clipe exatamente, incluindo hesitações e pontuação."
},
"consent": {
"title": "Autorização",
"body": "A clonagem de voz pode ser sensível. Confirme a permissão antes que esta referência seja salva."
}
},
"audio": {
"label": "Referência de voz",
"normalizing": "Preparando um PCM WAV seguro…",
"preview": "Referência normalizada",
"durationError": "O áudio de referência deve ter entre 1 segundo e 2 minutos.",
"decodeError": "Este navegador não conseguiu decodificar o arquivo de áudio selecionado.",
"qualityReady": "Duração recomendada",
"qualityHint": "630 segundos geralmente produzem um clone mais forte"
},
"fields": {
"name": "Nome da voz",
"namePlaceholder": "ex.: Narrador de documentário",
"language": "Idioma (opcional)",
"languagePlaceholder": "ex.: pt-BR",
"description": "Descrição (opcional)",
"descriptionPlaceholder": "Tom, origem ou uso pretendido",
"transcript": "Transcrição exata",
"transcriptPlaceholder": "Digite cada palavra falada no clipe de referência…",
"transcriptHint": "Corresponda à gravação exatamente. Não reescreva a gramática nem remova pausas e hesitações."
},
"consent": {
"title": "Confirmo que esta voz pode ser clonada",
"body": "Tenho a permissão do falante ou outra base legal para armazenar e usar esta gravação para fala sintetizada."
},
"readiness": {
"title": "Prontidão do perfil",
"body": "Uma voz fica disponível em Texto para Fala quando todos os itens obrigatórios estão completos.",
"audio": "Referência PCM-WAV válida",
"quality": "Janela de qualidade de 630 segundos",
"name": "Nome de voz reconhecível",
"transcript": "Transcrição de referência exata",
"consent": "Autorização confirmada"
},
"privacy": {
"title": "Privada por padrão. ",
"body": "O áudio de referência é armazenado no diretório de dados do LocalAI com permissões de arquivo restritas e nunca é exposto como um caminho de pasta de modelo."
},
"actions": {
"back": "Voltar para a biblioteca",
"cancel": "Cancelar",
"save": "Salvar voz",
"saving": "Salvando…"
},
"toasts": {
"created": "{{name}} está pronta para uso"
}
},
"sound": {
"title": "Geração de Som",
"labels": {
"model": "Modelo",
"prompt": "Prompt",
"promptPlaceholder": "Descreva o som que deseja gerar...",
"instrumental": "Instrumental",
"bpm": "BPM",
"duration": "Duração (segundos)",
"language": "Idioma",
"timesignature": "Fórmula de Compasso",
"keyscale": "Tom/Escala",
"vocalLanguage": "Idioma vocal",
"vocalLanguagePlaceholder": "ex.: Português",
"caption": "Legenda",
"lyrics": "Letra",
"lyricsPlaceholder": "Letra para geração vocal",
"simple": "Simples",
"advanced": "Avançado",
"seed": "Semente",
"seedPlaceholder": "Aleatória",
"thinkMode": "Modo de pensamento"
},
"actions": {
"generate": "Gerar",
"generating": "Gerando..."
},
"empty": "O áudio gerado aparecerá aqui",
"toasts": {
"noPrompt": "Digite um prompt",
"noModel": "Selecione um modelo",
"generateFailed": "Falha na geração"
}
},
"audioTransform": {
"title": "Transformação de Áudio",
"labels": {
"model": "Modelo",
"audio": "Áudio (obrigatório)",
"reference": "Referência (opcional)",
"referenceHelp": "Sinal de loopback / extremidade distante para cancelamento de eco, falante alvo para conversão de voz. Deixe vazio para transformação incondicional.",
"advancedParameters": "Parâmetros avançados",
"advancedParametersHelp": "específicos do backend (uma chave=valor por linha, ex.: noise_gate=true)",
"advancedParametersPlaceholder": "# Opcional. Para LocalVQE:\n# noise_gate=true\n# noise_gate_threshold_dbfs=-50"
},
"input": {
"upload": "Enviar",
"uploadDescription": "Solte um arquivo aqui ou",
"uploadBrowse": "navegue",
"record": "Gravar",
"startRecording": "Iniciar gravação",
"stop": "Parar",
"encoding": "Codificando...",
"clear": "Limpar",
"microphoneUnavailable": "A captura de microfone não está disponível neste navegador.",
"echoNotice": "Os navegadores costumam aplicar seu próprio cancelamento de eco WebRTC e supressão de ruído por padrão. Isso geralmente resulta em desempenho pior do que executar o LocalVQE no áudio bruto.",
"echoTest": "Teste de eco (grave o microfone enquanto reproduz a referência)",
"stopEchoTest": "Parar teste de eco"
},
"result": {
"audio": "Áudio",
"reference": "Referência",
"inputSpectrum": "Espectro de entrada",
"outputSpectrum": "Espectro de saída",
"outputSpectrumHint": "Transforme para comparar a atenuação",
"output": "Saída"
},
"actions": {
"transform": "Transformar",
"processing": "Processando..."
},
"empty": "Escolha um arquivo de áudio (e referência opcional) para transformar"
},
"talk": {
"title": "Falar",
"subtitle": "Conversa de voz em tempo real",
"actions": {
"start": "Iniciar sessão",
"stop": "Encerrar sessão",
"connecting": "Conectando...",
"muted": "Mudo",
"mute": "Silenciar",
"unmute": "Reativar som"
},
"labels": {
"model": "Modelo",
"voice": "Voz",
"voicePlaceholder": "alloy",
"language": "Idioma",
"languagePlaceholder": "pt",
"instructions": "Instruções",
"instructionsPlaceholder": "Defina a persona do assistente..."
},
"status": {
"idle": "Ocioso",
"connecting": "Conectando...",
"listening": "Ouvindo...",
"speaking": "Falando...",
"ended": "Sessão encerrada"
},
"toasts": {
"noModel": "Selecione um modelo primeiro",
"connectFailed": "Falha ao conectar: {{message}}"
}
},
"history": {
"title": "Histórico",
"empty": "Nenhum histórico ainda",
"deleteEntry": "Excluir entrada",
"clear": "Limpar histórico",
"clearTitle": "Limpar todo o histórico",
"clearMessage": "Remover todas as entradas do histórico? Esta ação não pode ser desfeita.",
"clearConfirm": "Limpar",
"cleared": "Histórico limpo"
},
"request": {
"heading": "Requisição",
"copyCurl": "Copiar como curl",
"copied": "Copiado"
}
}
@@ -0,0 +1,38 @@
{
"title": {
"add": "Adicionar Modelo",
"edit": "Editor de Modelo"
},
"subtitle": {
"chooseModelType": "Escolha um tipo de modelo para começar",
"newModel": "Novo modelo"
},
"actions": {
"backTo": "Voltar para {{page}}",
"system": "Sistema",
"templates": "Modelos",
"createModel": "Criar Modelo",
"saveChanges": "Salvar Alterações",
"saving": "Salvando...",
"saved": "Salvo",
"switchWarning": "Salve ou descarte as alterações antes de alternar as abas.",
"discardAndSwitch": "Descartar e Alternar"
},
"tabs": {
"interactive": "Interativo",
"yaml": "YAML",
"yamlDescription": "Edite o YAML diretamente. O nome do modelo deve ser definido no YAML para que a criação funcione."
},
"forms": {
"modelName": {
"label": "Nome do Modelo",
"placeholder": "meu-nome-de-modelo",
"hint": "Use apenas letras, números, hifens, sublinhados e pontos."
},
"empty": {
"nav": "Use a barra de busca acima para adicionar campos",
"title": "Nenhum campo configurado",
"text": "Use a barra de busca acima para encontrar e adicionar campos de configuração."
}
}
}
@@ -0,0 +1,187 @@
{
"title": "Descobrir",
"subtitle": "Explore e instale modelos de IA da galeria",
"models": "Modelos",
"recommended": {
"title": "Recomendados para o seu hardware",
"cpuNote": "Nenhuma GPU detectada - modelos pequenos que permanecem responsivos na CPU.",
"gpuNote": "Dimensionados para caber na sua VRAM disponível com espaço para o contexto.",
"install": "Instalar",
"installing": "Instalando",
"installStarted": "Instalando {{model}}…",
"installFailed": "Falha na instalação: {{message}}",
"dismiss": "Dispensar recomendações",
"summary": "{{n}} modelos sugeridos",
"bestFit": "Melhor ajuste",
"alternative": "Também serve"
},
"stats": {
"available": "Disponíveis",
"installed": "Instalados"
},
"actions": {
"addModel": "Adicionar Modelo",
"importModel": "Importar Modelo",
"install": "Instalar",
"reinstall": "Reinstalar",
"delete": "Excluir"
},
"filters": {
"all": "Todos",
"llm": "Chat",
"image": "Imagem",
"video": "Vídeo",
"threed": "3D",
"multimodal": "Multimodal",
"vision": "Visão",
"tts": "TTS",
"stt": "STT",
"diarization": "Diarização",
"soundClassification": "Classificação de Som",
"soundGen": "Som",
"audioTransform": "FX de Áudio",
"realtimeAudio": "Áudio em Tempo Real",
"embedding": "Embeddings",
"rerank": "Rerank",
"detection": "Detecção",
"vad": "VAD",
"ner": "NER",
"fitsGpu": "Cabe na GPU",
"collapseVariants": "Uma linha por modelo",
"allBackends": "Todos os Backends",
"searchBackends": "Buscar backends...",
"contextSize": "Contexto:",
"useCaseLabel": "Filtrar por caso de uso",
"unavailableForBackend": "Não disponível para o backend selecionado",
"someSelected": "{{count}} selecionados",
"refineLabel": "Refinar"
},
"search": {
"placeholder": "Buscar modelos...",
"clearFilters": "Limpar filtros"
},
"table": {
"modelName": "Nome do Modelo",
"description": "Descrição",
"backend": "Backend",
"sizeVram": "Tamanho / VRAM",
"status": "Status",
"actions": "Ações",
"size": "Tamanho: {{size}}",
"vram": "VRAM: {{vram}}",
"fits": "Cabe",
"mayNotFit": "Pode não caber",
"trustRemoteCode": "Confiar em Código Remoto",
"installing": "Instalando",
"installingPct": "Instalando · {{percent}}%",
"installed": "Instalado",
"notInstalled": "Não Instalado"
},
"detail": {
"description": "Descrição",
"gallery": "Galeria",
"backend": "Backend",
"size": "Tamanho",
"vram": "VRAM",
"license": "Licença",
"tags": "Tags",
"links": "Links",
"warning": "Aviso",
"files": "Arquivos",
"fitsGpu": "Cabe na GPU",
"mayNotFitGpu": "Pode não caber na GPU",
"requiresTrustRemoteCode": "Requer Confiança em Código Remoto",
"fileCount_one": "{{count}} arquivo",
"fileCount_other": "{{count}} arquivos",
"filename": "Nome do arquivo",
"uri": "URI",
"sha256": "SHA256",
"backToAll": "Todos os modelos",
"vramAt": "VRAM em {{context}}",
"headroom": "Margem de sobra"
},
"empty": {
"title": "Nenhum modelo encontrado",
"withFilters": "Nenhum modelo corresponde à sua busca ou filtros atuais.",
"collapsedVariantsHint": "Construções alternativas que outra entrada já oferece estão ocultas. Desative \"Uma linha por modelo\" para incluí-las.",
"noFilters": "A galeria de modelos está vazia."
},
"deleteDialog": {
"title": "Excluir Modelo",
"message": "Excluir o modelo {{model}}?",
"confirm": "Excluir {{model}}",
"deletingToast": "Excluindo {{model}}..."
},
"errors": {
"loadFailed": "Falha ao carregar modelos: {{message}}",
"installFailed": "Falha na instalação: {{message}}",
"deleteFailed": "Falha ao excluir: {{message}}"
},
"selector": {
"loading": "Carregando modelos...",
"selectModel": "Selecionar modelo...",
"searchPlaceholder": "Buscar modelos...",
"noModels": "Nenhum modelo disponível"
},
"variants": {
"title": "Variantes",
"chooseVariant": "Escolha uma variante",
"auto": "Automática",
"autoSelected": "Selecionada automaticamente",
"base": "Construção base",
"doesNotFit": "Não cabe",
"unknownSize": "Tamanho desconhecido",
"unknownBackend": "Backend desconhecido",
"loading": "Carregando variantes...",
"installVariant": "Instalar {{variant}}",
"quantizationTitle": "Formato dos pesos",
"unknownQuantization": "Formato desconhecido",
"showDetails": "Mostrar detalhes completos de {{variant}}",
"hideDetails": "Ocultar detalhes completos de {{variant}}",
"detailsLoading": "Carregando detalhes...",
"detailsUnavailable": "Os detalhes de {{variant}} não puderam ser carregados.",
"features": {
"dflash": "Mais rápido: DFlash",
"mtp": "Mais rápido: MTP"
}
},
"rail": {
"sortLabel": "Ordenar modelos",
"downloadingPct": "baixando {{percent}}%",
"tooLarge": "{{size}} · muito grande",
"fitsSize": "{{size}} · cabe",
"previousPage": "Página anterior",
"nextPage": "Próxima página",
"showingCount": "{{shown}} de {{total}}",
"sizing": "medindo…"
},
"groups": {
"text": "Texto e raciocínio",
"vision": "Visão",
"audio": "Fala e áudio",
"visual": "Imagem e vídeo",
"other": "Todo o resto"
},
"chart": {
"title": "VRAM por tamanho de contexto",
"available": "{{vram}} disponíveis",
"barTitle": "o contexto {{context}} precisa de {{vram}}",
"fitsEverywhere": "Executa em qualquer tamanho de contexto neste host.",
"fitsNowhere": "Não caberá neste host em nenhum tamanho de contexto.",
"fitsUpTo": "Cabe em contextos de até {{context}}."
},
"shelves": {
"hostLabel": "Seu host",
"heroWithGpu": "{{vram}} de memória GPU, {{count}} modelos na galeria.",
"heroNoGpu": "{{count}} modelos na galeria.",
"heroHint": "Escolha qualquer item à esquerda para ver seu tamanho, variantes e se ele executará aqui.",
"browsing": "Explorando",
"pickHint": "Selecione um modelo para ver seus detalhes.",
"heroWithRam": "{{ram}} de memória do sistema, {{count}} modelos na galeria.",
"byUseCase": "Ou comece por um caso de uso",
"pickText": "Chat, raciocínio, embeddings",
"pickVision": "Leia imagens e documentos",
"pickAudio": "Fala de entrada e saída",
"pickVisual": "Gere imagens e vídeos"
}
}
@@ -0,0 +1,78 @@
{
"appName": "LocalAI",
"openMenu": "Abrir menu",
"closeMenu": "Fechar menu",
"primaryNavigation": "Navegação principal",
"switchToLightMode": "Alternar para o modo claro",
"switchToDarkMode": "Alternar para o modo escuro",
"expandSidebar": "Expandir barra lateral",
"collapseSidebar": "Recolher barra lateral",
"changeLanguage": "Alterar idioma",
"logout": "Sair",
"accountSettings": "Configurações da conta",
"account": "Conta",
"accountFor": "Conta: {{name}}",
"sections": {
"create": "Criar",
"recognition": "Reconhecimento",
"build": "Construir",
"operate": "Operar"
},
"operate": {
"inference": "Inferência",
"cluster": "Cluster",
"observability": "Observabilidade",
"access": "Acesso",
"system": "Sistema",
"activity": "Atividade",
"runtime": "Runtime",
"administration": "Administração"
},
"items": {
"home": "Início",
"discover": "Descobrir",
"chat": "Chat",
"studio": "Studio",
"talk": "Falar",
"fineTune": "Ajuste Fino",
"quantize": "Quantizar",
"faces": "Rostos",
"voices": "Vozes",
"jobs": "Trabalhos",
"operate": "Admin",
"host": "Host",
"audioTransform": "Transformação de Áudio",
"faceRecognition": "Reconhecimento Facial",
"voiceRecognition": "Reconhecimento de Voz",
"agents": "Agentes",
"skills": "Habilidades",
"memory": "Memória",
"mcpJobs": "Trabalhos de CI MCP",
"usage": "Uso",
"users": "Usuários",
"middleware": "Middleware",
"backends": "Backends",
"voiceLibrary": "Biblioteca de Vozes",
"traces": "Rastreamentos",
"nodes": "Nós",
"scheduling": "Agendamento",
"swarm": "Swarm",
"system": "Sistema",
"settings": "Configurações",
"api": "API",
"activity": "Atividade",
"overview": "Visão geral"
},
"footer": {
"github": "GitHub",
"documentation": "Documentação",
"author": "Autor",
"copyright": "© 2023-{{year}} {{author}}"
},
"console": {
"automation": "Automação",
"training": "Treinamento",
"expandNavigation": "Expandir navegação de {{section}}",
"collapseNavigation": "Recolher navegação de {{section}}"
}
}
@@ -0,0 +1,79 @@
{
"title": "Habilidades",
"subtitle": "Gerenciar habilidades de agentes (instruções e recursos reutilizáveis)",
"unavailable": {
"subtitle": "O serviço de habilidades não está disponível ou o índice está sendo reconstruído. Tente novamente em um momento.",
"retry": "Tentar novamente"
},
"actions": {
"newSkill": "Nova habilidade",
"createSkill": "Criar habilidade",
"import": "Importar",
"importing": "Importando...",
"gitRepos": "Repositórios Git",
"edit": "Editar",
"delete": "Excluir",
"export": "Exportar",
"sync": "Sincronizar",
"addRepo": "Adicionar repositório",
"adding": "Adicionando...",
"remove": "Remover",
"enable": "Habilitar",
"disable": "Desabilitar"
},
"search": {
"placeholder": "Buscar habilidades..."
},
"git": {
"title": "Repositórios Git",
"description": "Adicione repositórios Git para obter habilidades. As habilidades aparecerão na lista após a sincronização.",
"urlPlaceholder": "https://github.com/usuário/repo ou git@github.com:usuário/repo.git",
"noRepos": "Nenhum repositório Git configurado. Adicione um acima.",
"disabled": "Desabilitado",
"removeRepo": "Remover repositório"
},
"card": {
"noDescription": "Sem descrição",
"readOnly": "Somente leitura",
"editTitle": "Editar habilidade",
"deleteTitle": "Excluir habilidade",
"exportTitle": "Exportar como .tar.gz"
},
"empty": {
"title": "Nenhuma habilidade encontrada",
"text": "Crie uma habilidade ou importe uma para começar.",
"noPersonal": "Você ainda não tem habilidades."
},
"sections": {
"yourSkills": "Suas Habilidades",
"otherUsersSkills": "Habilidades de Outros Usuários"
},
"deleteDialog": {
"title": "Excluir Habilidade",
"message": "Excluir a habilidade \"{{name}}\"? Esta ação não pode ser desfeita.",
"confirm": "Excluir"
},
"removeRepoDialog": {
"title": "Remover Repositório Git",
"message": "Remover este repositório Git? As habilidades dele não estarão mais disponíveis.",
"confirm": "Remover"
},
"toasts": {
"loadFailed": "Falha ao carregar habilidades",
"deleted": "Habilidade \"{{name}}\" excluída",
"deleteFailed": "Falha ao excluir a habilidade",
"exported": "Habilidade \"{{name}}\" exportada",
"exportFailed": "Falha na exportação",
"imported": "Habilidade importada de \"{{file}}\"",
"importFailed": "Falha na importação",
"loadReposFailed": "Falha ao carregar repositórios Git",
"repoAdded": "Repositório Git adicionado e sincronizando",
"addRepoFailed": "Falha ao adicionar o repositório",
"synced": "Repositório sincronizado",
"syncFailed": "Falha na sincronização",
"toggled": "Repositório alternado",
"toggleFailed": "Falha ao alternar",
"removed": "Repositório removido",
"removeFailed": "Falha na remoção"
}
}
+1
View File
@@ -12,6 +12,7 @@ export const SUPPORTED_LANGUAGES = [
{ code: 'zh-CN', name: '简体中文', flag: 'ZH' },
{ code: 'id', name: 'Bahasa Indonesia', flag: 'ID' },
{ code: 'ko', name: '한국어', flag: 'KO' },
{ code: 'pt-BR', name: 'Português (Brasil)', flag: 'BR' },
]
export const NAMESPACES = [