diff --git a/package-lock.json b/package-lock.json index 6ec4245..026948d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pinchchat", - "version": "1.54.0", + "version": "1.55.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pinchchat", - "version": "1.54.0", + "version": "1.55.0", "license": "MIT", "dependencies": { "@tailwindcss/vite": "^4.1.18", diff --git a/package.json b/package.json index 9c3b256..fb27557 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pinchchat", - "version": "1.54.0", + "version": "1.55.0", "description": "A sleek, dark-themed webchat UI for OpenClaw — monitor sessions, stream responses, and inspect tool calls in real-time.", "type": "module", "repository": { diff --git a/src/lib/i18n.ts b/src/lib/i18n.ts index 33bbda8..f16732f 100644 --- a/src/lib/i18n.ts +++ b/src/lib/i18n.ts @@ -775,7 +775,157 @@ const ja: Record = { 'slash.help': '利用可能なコマンドを表示', }; -const messages: Record> = { en, fr, es, de, ja }; +const pt: Record = { + 'login.title': 'PinchChat', + 'login.subtitle': 'Conectar ao seu gateway OpenClaw', + 'login.gatewayUrl': 'URL do Gateway', + 'login.token': 'Token', + 'login.tokenPlaceholder': 'Insira o token do gateway', + 'login.connect': 'Conectar', + 'login.connecting': 'Conectando…', + 'login.showToken': 'Mostrar token', + 'login.hideToken': 'Ocultar token', + 'login.storedLocally': 'As credenciais são armazenadas localmente no navegador', + 'login.wsHint': 'A URL deve começar com ws:// ou wss://', + + 'header.title': 'PinchChat', + 'header.connected': 'Conectado', + 'header.disconnected': 'Desconectado', + 'header.logout': 'Sair', + 'header.toggleSidebar': 'Alternar barra lateral', + 'header.changeLanguage': 'Alterar idioma', + 'header.soundOn': 'Ativar som de notificação', + 'header.soundOff': 'Desativar som de notificação', + + 'chat.welcome': 'PinchChat', + 'chat.welcomeSub': 'Envie uma mensagem para começar', + 'chat.suggestions': 'Tente perguntar…', + 'chat.suggestion1': 'Resuma meus e-mails recentes', + 'chat.suggestion2': 'O que há na minha agenda hoje?', + 'chat.suggestion3': 'Pesquise na web as últimas notícias', + 'chat.suggestion4': 'Ajude-me a escrever um script', + 'chat.loadingHistory': 'Carregando mensagens…', + 'chat.inputPlaceholder': 'Digite uma mensagem…', + 'chat.inputLabel': 'Mensagem', + 'chat.attachFile': 'Anexar arquivo', + 'chat.send': 'Enviar', + 'chat.stop': 'Parar', + 'chat.showPreview': 'Pré-visualizar markdown', + 'chat.hidePreview': 'Ocultar pré-visualização', + 'chat.scrollToBottom': 'Novas mensagens', + 'chat.scrollDown': 'Rolar para baixo', + 'chat.collapseTools': 'Recolher todas as ferramentas', + 'chat.expandTools': 'Expandir todas as ferramentas', + 'chat.messages': 'Mensagens do chat', + 'chat.thinking': 'Pensando…', + + 'sidebar.title': 'Sessões', + 'sidebar.empty': 'Nenhuma sessão', + 'sidebar.search': 'Pesquisar sessões…', + 'sidebar.noResults': 'Nenhuma sessão encontrada', + 'sidebar.pin': 'Fixar sessão', + 'sidebar.unpin': 'Desafixar sessão', + 'sidebar.pinned': 'Fixada', + 'sidebar.delete': 'Excluir sessão', + 'sidebar.deleteConfirm': 'Excluir esta sessão? Esta ação não pode ser desfeita.', + 'sidebar.deleteCancel': 'Cancelar', + 'sidebar.openSplit': 'Abrir em visualização dividida', + 'sidebar.close': 'Fechar barra lateral', + 'sidebar.clearSearch': 'Limpar pesquisa', + 'sidebar.filterAll': 'Todas', + 'sidebar.filterActive': 'Ativas', + 'split.close': 'Fechar visualização dividida', + 'app.mainChat': 'Chat principal', + 'app.splitPane': 'Painel dividido', + 'app.skipToChat': 'Ir para o campo de entrada', + + 'thinking.label': 'Pensamento', + 'thinking.reasoning': 'Raciocinando…', + + 'tool.parameters': 'Parâmetros', + 'tool.result': 'Resultado', + + 'connection.reconnecting': 'Conexão perdida — reconectando…', + 'connection.reconnected': 'Reconectado!', + + 'message.copy': 'Copiar mensagem', + 'message.copied': 'Copiado!', + 'message.retry': 'Reenviar mensagem', + 'message.metadata': 'Detalhes da mensagem', + 'message.rawJson': 'JSON bruto', + 'message.hideRawJson': 'Ocultar JSON bruto', + + 'time.yesterday': 'Ontem', + 'time.today': 'Hoje', + + 'shortcuts.title': 'Atalhos de teclado', + 'shortcuts.send': 'Enviar mensagem', + 'shortcuts.newline': 'Nova linha', + 'shortcuts.search': 'Pesquisar sessões', + 'shortcuts.switchSession': 'Sessão anterior / próxima', + 'shortcuts.closeSidebar': 'Fechar barra lateral / pesquisa', + 'shortcuts.stop': 'Parar geração', + 'shortcuts.help': 'Mostrar atalhos', + 'shortcuts.close': 'Fechar', + 'shortcuts.chatSection': 'Chat', + + 'error.title': 'Algo deu errado', + 'error.description': 'Ocorreu um erro inesperado ao renderizar a interface. Tente novamente ou recarregue a página.', + 'error.retry': 'Tentar novamente', + 'error.reload': 'Recarregar página', + 'shortcuts.navigationSection': 'Navegação', + 'shortcuts.generalSection': 'Geral', + + 'header.export': 'Exportar conversa em Markdown', + 'header.compact': 'Compactar', + 'header.compacting': 'Compactando…', + 'header.sessionInfo': 'Informações da sessão', + 'sessionInfo.sessionKey': 'Chave da sessão', + 'sessionInfo.channel': 'Canal', + 'sessionInfo.kind': 'Tipo', + 'sessionInfo.model': 'Modelo', + 'sessionInfo.agent': 'Agente', + 'sessionInfo.messages': 'Mensagens', + 'sessionInfo.totalTokens': 'Total de tokens', + 'sessionInfo.inputTokens': 'Entrada', + 'sessionInfo.outputTokens': 'Saída', + 'sessionInfo.contextWindow': 'Contexto', + 'sessionInfo.lastActive': 'Última atividade', + + 'theme.title': 'Tema', + 'theme.mode': 'Modo', + 'theme.accent': 'Cor de destaque', + 'theme.system': 'Sistema', + 'theme.dark': 'Escuro', + 'theme.light': 'Claro', + 'theme.oled': 'OLED', + + 'search.placeholder': 'Pesquisar mensagens…', + 'search.noResults': '0 resultados', + 'search.prev': 'Resultado anterior', + 'search.next': 'Próximo resultado', + 'shortcuts.searchMessages': 'Pesquisar mensagens', + + 'settings.sendShortcut': 'Tecla de envio', + 'settings.sendEnter': 'Enter', + 'settings.sendCtrlEnter': 'Ctrl+Enter', + + 'message.bookmark': 'Marcar mensagem', + 'message.removeBookmark': 'Remover marcador', + 'chat.bookmarks': 'Marcadores', + 'chat.export': 'Exportar conversa', + 'chat.contextCompacted': 'Contexto compactado — mensagens antigas salvas no cache local', + 'slash.commands': 'Comandos', + 'slash.status': 'Mostrar status e uso da sessão', + 'slash.reasoning': 'Alternar modo de raciocínio', + 'slash.verbose': 'Alternar saída detalhada', + 'slash.model': 'Alterar modelo desta sessão', + 'slash.compact': 'Compactar contexto da conversa', + 'slash.reset': 'Redefinir sessão', + 'slash.help': 'Mostrar comandos disponíveis', +}; + +const messages: Record> = { en, fr, es, de, ja, pt }; export const supportedLocales = Object.keys(messages) as string[]; @@ -786,6 +936,7 @@ export const localeLabels: Record = { es: 'ES', de: 'DE', ja: 'JA', + pt: 'PT', }; function resolveInitialLocale(): string {