feat: add Portuguese (pt) locale support
This commit is contained in:
4
package-lock.json
generated
4
package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -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": {
|
||||
|
||||
153
src/lib/i18n.ts
153
src/lib/i18n.ts
@@ -775,7 +775,157 @@ const ja: Record<keyof typeof en, string> = {
|
||||
'slash.help': '利用可能なコマンドを表示',
|
||||
};
|
||||
|
||||
const messages: Record<string, Record<string, string>> = { en, fr, es, de, ja };
|
||||
const pt: Record<keyof typeof en, string> = {
|
||||
'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<string, Record<string, string>> = { en, fr, es, de, ja, pt };
|
||||
|
||||
export const supportedLocales = Object.keys(messages) as string[];
|
||||
|
||||
@@ -786,6 +936,7 @@ export const localeLabels: Record<string, string> = {
|
||||
es: 'ES',
|
||||
de: 'DE',
|
||||
ja: 'JA',
|
||||
pt: 'PT',
|
||||
};
|
||||
|
||||
function resolveInitialLocale(): string {
|
||||
|
||||
Reference in New Issue
Block a user