diff --git a/lara.lock b/lara.lock index f22f61f2..6e17857a 100644 --- a/lara.lock +++ b/lara.lock @@ -317,6 +317,8 @@ files: ai.message.regenerate: e464a5330788a9f79d06c96989f840cb ai.message.copy: 53fa249ce3d02c8a686b657b31d02ee7 ai.message.fork: f5aace5e5b5e7b0954651a2da44b6755 + ai.message.reasoning: 87a222577e9c7b7a0739d92337f4fe46 + ai.message.toolUse: d6093cfe0c95f805875e5724eecd20aa ai.workspace.title: 375099f0c804e924c1dc275370710d92 ai.workspace.newChat: a917baaf1484ec5dc85f19ab8fc4f4e9 ai.workspace.collapseSidebar: 9ecc763686b7c61547281f3e05ffd06f @@ -358,6 +360,10 @@ files: ai.workspace.target.installedVersion: 8677756d761e4cce240a637805482946 ai.workspace.target.localModel: d34f4b997ce78da5aa57d657a5d6fcb5 ai.workspace.target.apiModel: 589a257cbd265eaa7de93de8b4084dff + window.minimize: d27532d90ecd513e97ab811c0f34dbfd + window.maximize: 9369ba148ee259473fc1fb4939b6c2e8 + window.restore: 2bd339d85ee3b33e513359ce781b60cc + window.close: d3d2e617335f08df83599665eef8a418 mcp.setup.manageTitle: d786c7b9ab9b2406258648931bca0e01 mcp.setup.setupTitle: b4b373f690c8a0008885b31e78e93a5c mcp.setup.connectedDescription: a2a3be70c0ac9fa7ef112df5252249fa diff --git a/src/components/AiMessage.test.tsx b/src/components/AiMessage.test.tsx index a8f0979e..404d107b 100644 --- a/src/components/AiMessage.test.tsx +++ b/src/components/AiMessage.test.tsx @@ -38,6 +38,21 @@ describe('AiMessage', () => { expect(screen.getByRole('button', { name: 'Fork chat from here' })).toBeTruthy() }) + it('localizes reasoning and tool use chrome', () => { + render( + , + ) + + expect(screen.getByRole('button', { name: /ragionamento/i })).toBeTruthy() + expect(screen.getByRole('button', { name: /uso degli strumenti/i })).toBeTruthy() + }) + it('shows reasoning expanded while streaming (reasoningDone=false)', () => { render() expect(screen.getByTestId('reasoning-toggle')).toBeTruthy() diff --git a/src/components/AiMessage.tsx b/src/components/AiMessage.tsx index 50a1544c..5405338a 100644 --- a/src/components/AiMessage.tsx +++ b/src/components/AiMessage.tsx @@ -106,8 +106,8 @@ function UserBubble({ content, references, onOpenNote }: { ) } -function ReasoningBlock({ text, expanded, onToggle }: { - text: string; expanded: boolean; onToggle: () => void +function ReasoningBlock({ locale, text, expanded, onToggle }: { + locale: AppLocale; text: string; expanded: boolean; onToggle: () => void }) { const contentRef = useRef(null) @@ -127,7 +127,7 @@ function ReasoningBlock({ text, expanded, onToggle }: { data-testid="reasoning-toggle" > - Reasoning + {translate(locale, 'ai.message.reasoning')} {expanded ? : } {expanded && ( @@ -174,6 +174,7 @@ function ToolUseBlock({ actions, expanded, expandedActionIds, + locale, onOpenNote, onToggle, onToggleAction, @@ -181,6 +182,7 @@ function ToolUseBlock({ actions: AiAction[] expanded: boolean expandedActionIds: Set + locale: AppLocale onOpenNote?: (path: string) => void onToggle: () => void onToggleAction: (toolId: string) => void @@ -198,7 +200,7 @@ function ToolUseBlock({ data-testid="tool-use-toggle" > - Tool use + {translate(locale, 'ai.message.toolUse')} {reasoning && ( setUserOverride(prev => !prev)} @@ -382,6 +385,7 @@ function ConversationMessage({ userMessage, references, locale = 'en', messageId actions={actions} expanded={toolUseExpanded} expandedActionIds={expandedActions} + locale={locale} onOpenNote={onOpenNote} onToggle={() => setToolUseExpanded((current) => !current)} onToggleAction={toggleAction} diff --git a/src/components/LinuxTitlebar.test.tsx b/src/components/LinuxTitlebar.test.tsx index 6e56a7b8..8f7c892c 100644 --- a/src/components/LinuxTitlebar.test.tsx +++ b/src/components/LinuxTitlebar.test.tsx @@ -79,4 +79,12 @@ describe('LinuxTitlebar', () => { expect(toggleMaximize).toHaveBeenCalledOnce() expect(close).toHaveBeenCalledOnce() }) + + it('localizes titlebar window control labels', () => { + render() + + expect(screen.getByRole('button', { name: 'Riduci a icona' })).toBeTruthy() + expect(screen.getByRole('button', { name: 'Ingrandisci' })).toBeTruthy() + expect(screen.getByRole('button', { name: 'Chiudi' })).toBeTruthy() + }) }) diff --git a/src/components/LinuxTitlebar.tsx b/src/components/LinuxTitlebar.tsx index f784601e..ce20bb5b 100644 --- a/src/components/LinuxTitlebar.tsx +++ b/src/components/LinuxTitlebar.tsx @@ -2,6 +2,7 @@ import type { CSSProperties, MouseEvent, ReactNode } from 'react' import { useEffect, useState } from 'react' import { getCurrentWindow } from '@tauri-apps/api/window' import { useDragRegion } from '../hooks/useDragRegion' +import { resolveEffectiveLocale, translate, type AppLocale } from '../lib/i18n' import { shouldUseCustomWindowChrome } from '../utils/platform' import { cleanupTauriEventListener } from '../utils/tauriEventCleanup' import { LinuxMenuButton } from './LinuxMenuButton' @@ -21,6 +22,10 @@ type ResizeDirection = | 'SouthWest' | 'West' +type LinuxTitlebarProps = { + locale?: AppLocale +} + const RESIZE_HANDLES: ReadonlyArray<{ cursor: CSSProperties['cursor'] direction: ResizeDirection @@ -36,11 +41,25 @@ const RESIZE_HANDLES: ReadonlyArray<{ { direction: 'SouthEast', cursor: 'nwse-resize', style: { bottom: 0, right: 0, width: RESIZE_EDGE, height: RESIZE_EDGE } }, ] -export function LinuxTitlebar() { +export function LinuxTitlebar({ locale: localeOverride }: LinuxTitlebarProps = {}) { const customChromeEnabled = shouldUseCustomWindowChrome() + const [documentLocale, setDocumentLocale] = useState(readDocumentLocale) + const locale = localeOverride ?? documentLocale const { dragRegionRef } = useDragRegion() const maximized = useLinuxMaximizedState(customChromeEnabled) + useEffect(() => { + if (localeOverride || !customChromeEnabled || typeof document === 'undefined') return + + const syncLocale = () => setDocumentLocale(readDocumentLocale()) + syncLocale() + + const observer = new MutationObserver(syncLocale) + observer.observe(document.documentElement, { attributeFilter: ['lang'], attributes: true }) + + return () => observer.disconnect() + }, [customChromeEnabled, localeOverride]) + if (!customChromeEnabled) return null const appWindow = getCurrentWindow() @@ -57,12 +76,17 @@ export function LinuxTitlebar() {
- + ) } +function readDocumentLocale(): AppLocale { + if (typeof document === 'undefined') return 'en' + return resolveEffectiveLocale(document.documentElement.lang) +} + function useLinuxMaximizedState(enabled: boolean): boolean { const [maximized, setMaximized] = useState(false) @@ -118,24 +142,30 @@ function ResizeHandles() { function TitlebarWindowControls({ appWindow, + locale, maximized, }: { appWindow: ReturnType + locale: AppLocale maximized: boolean }) { + const minimizeLabel = translate(locale, 'window.minimize') + const resizeLabel = translate(locale, maximized ? 'window.restore' : 'window.maximize') + const closeLabel = translate(locale, 'window.close') + return (
- void appWindow.minimize().catch(() => {})}> + void appWindow.minimize().catch(() => {})}> void appWindow.toggleMaximize().catch(() => {})} > {maximized ? : } void appWindow.close().catch(() => {})} > diff --git a/src/lib/locales/be-BY.json b/src/lib/locales/be-BY.json index 842a6dae..d3699627 100644 --- a/src/lib/locales/be-BY.json +++ b/src/lib/locales/be-BY.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} не ўсталяваны. Адкрыйце Налады.", "ai.panel.placeholder.ready": "Запытаць {agent}", "ai.panel.send": "Адправіць паведамленне", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Згенераваць адказ нанова", + "ai.message.copy": "Скапіяваць адказ", + "ai.message.fork": "Адгалінаваць чат адсюль", + "ai.message.reasoning": "Аргументацыя", + "ai.message.toolUse": "Выкарыстанне інструментаў", "ai.workspace.title": "Агенты", "ai.workspace.newChat": "Новы чат", "ai.workspace.collapseSidebar": "Згарнуць спіс чатаў са ШІ", @@ -322,7 +324,7 @@ "ai.workspace.close": "Зачыніць працоўную прастору ШІ", "ai.workspace.expandPanel": "Разгарнуць працоўную вобласць AI", "ai.workspace.restorePanel": "Аднавіць панэль працоўнай прасторы ШІ", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Аднавіць", "ai.workspace.closeChat": "Зачыніць {title}", "ai.workspace.popOut": "Адкрыць у асобным акне", "ai.workspace.dock": "Закрыць працоўную прастору ШІ", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "Усталявана {version}", "ai.workspace.target.localModel": "Лакальная мадэль", "ai.workspace.target.apiModel": "Мадэль API", + "window.minimize": "Мінімізаваць", + "window.maximize": "Максімізаваць", + "window.restore": "Аднавіць", + "window.close": "Зачыніць", "mcp.setup.manageTitle": "Кіраванне вонкавымі ШІ", "mcp.setup.setupTitle": "Наладзіць вонкавыя ШІ", "mcp.setup.connectedDescription": "Tolaria паспяхова злучана з вонкавымі ШІ інструментамі.", diff --git a/src/lib/locales/be-Latn.json b/src/lib/locales/be-Latn.json index a5ff18d6..567c6d51 100644 --- a/src/lib/locales/be-Latn.json +++ b/src/lib/locales/be-Latn.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} nie ŭstaliavany. Adkryjcie Nalady.", "ai.panel.placeholder.ready": "Zapytać {agent}", "ai.panel.send": "Adpravić paviedamliennie", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Stvaryć adkaz nanova", + "ai.message.copy": "Skapijavać adkaz", + "ai.message.fork": "Adhalinavać čat adsiul", + "ai.message.reasoning": "Razvažannie", + "ai.message.toolUse": "Vykarystannie instrumientaŭ", "ai.workspace.title": "ŠI prastora", "ai.workspace.newChat": "Novy čat", "ai.workspace.collapseSidebar": "Zharnuć spis čataŭ sa ŠI", @@ -322,7 +324,7 @@ "ai.workspace.close": "Zakryć ŠI prastoru", "ai.workspace.expandPanel": "Razhornuć ŠI prastoru", "ai.workspace.restorePanel": "Adnavić panel ŠI prastory", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Adnavić", "ai.workspace.closeChat": "Zakryć {title}", "ai.workspace.popOut": "Adkryć u asobnym aknie", "ai.workspace.dock": "Prymacavać ŠI prastoru", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "Ustaliavana {version}", "ai.workspace.target.localModel": "Lakaĺnaja madel", "ai.workspace.target.apiModel": "API madel", + "window.minimize": "Minimizavać", + "window.maximize": "Maksimizavać", + "window.restore": "Adnavić", + "window.close": "Začynić", "status.ai.openWorkspace": "Adkryć ŠI prastoru", "mcp.setup.manageTitle": "Kiravannie vonkavymi ŠI", "mcp.setup.setupTitle": "Naladzić vonkavyja ŠI", diff --git a/src/lib/locales/de-DE.json b/src/lib/locales/de-DE.json index c6061acb..be50d8d3 100644 --- a/src/lib/locales/de-DE.json +++ b/src/lib/locales/de-DE.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} ist nicht installiert. Öffnen Sie „AI Agents“ in den Einstellungen.", "ai.panel.placeholder.ready": "{agent} fragen", "ai.panel.send": "Nachricht senden", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Antwort erneut generieren", + "ai.message.copy": "Antwort kopieren", + "ai.message.fork": "Chat ab hier verzweigen", + "ai.message.reasoning": "Begründung", + "ai.message.toolUse": "Verwendung von Tools", "ai.workspace.title": "Agenten", "ai.workspace.newChat": "Neuer Chat", "ai.workspace.collapseSidebar": "AI-Chat-Liste einklappen", @@ -322,7 +324,7 @@ "ai.workspace.close": "AI-Workspace schließen", "ai.workspace.expandPanel": "AI-Workspace erweitern", "ai.workspace.restorePanel": "AI-Workspace-Panel wiederherstellen", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Wiederherstellen", "ai.workspace.closeChat": "{title} schließen", "ai.workspace.popOut": "In einem separaten Fenster öffnen", "ai.workspace.dock": "AI-Workspace andocken", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} installiert", "ai.workspace.target.localModel": "Lokales Modell", "ai.workspace.target.apiModel": "API-Modell", + "window.minimize": "Minimieren", + "window.maximize": "Maximieren", + "window.restore": "Wiederherstellen", + "window.close": "Schließen", "mcp.setup.manageTitle": "Externe KI-Tools verwalten", "mcp.setup.setupTitle": "Externe KI-Tools einrichten", "mcp.setup.connectedDescription": "Tolaria ist für diesen Vault bereits mit externen KI-Tools verbunden. Stellen Sie die Verbindung erneut her, um die Konfiguration zu aktualisieren, oder trennen Sie die Verbindung, um Tolaria aus diesen Konfigurationsdateien von Drittanbietern zu entfernen.", diff --git a/src/lib/locales/en.json b/src/lib/locales/en.json index f80078b1..9b6cf38a 100644 --- a/src/lib/locales/en.json +++ b/src/lib/locales/en.json @@ -315,6 +315,8 @@ "ai.message.regenerate": "Regenerate response", "ai.message.copy": "Copy response", "ai.message.fork": "Fork chat from here", + "ai.message.reasoning": "Reasoning", + "ai.message.toolUse": "Tool use", "ai.workspace.title": "Agents", "ai.workspace.newChat": "New chat", "ai.workspace.collapseSidebar": "Collapse AI chat list", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "Installed {version}", "ai.workspace.target.localModel": "Local model", "ai.workspace.target.apiModel": "API model", + "window.minimize": "Minimize", + "window.maximize": "Maximize", + "window.restore": "Restore", + "window.close": "Close", "mcp.setup.manageTitle": "Manage External AI Tools", "mcp.setup.setupTitle": "Set Up External AI Tools", "mcp.setup.connectedDescription": "Tolaria is already connected to external AI tools for this vault. Reconnect to refresh the configuration, or disconnect to remove Tolaria from those third-party config files.", diff --git a/src/lib/locales/es-419.json b/src/lib/locales/es-419.json index 7667d226..c92fbd12 100644 --- a/src/lib/locales/es-419.json +++ b/src/lib/locales/es-419.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} no está instalado. Abra Agentes de IA en Configuración.", "ai.panel.placeholder.ready": "Preguntar a {agent}", "ai.panel.send": "Enviar mensaje", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Regenerar respuesta", + "ai.message.copy": "Copiar respuesta", + "ai.message.fork": "Bifurcar chat desde aquí", + "ai.message.reasoning": "Razonamiento", + "ai.message.toolUse": "Uso de herramientas", "ai.workspace.title": "Agentes", "ai.workspace.newChat": "Nuevo chat", "ai.workspace.collapseSidebar": "Contraer la lista de chat de IA", @@ -322,7 +324,7 @@ "ai.workspace.close": "Cerrar el espacio de trabajo de IA", "ai.workspace.expandPanel": "Expandir el espacio de trabajo de IA", "ai.workspace.restorePanel": "Restaurar el panel del espacio de trabajo de IA", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Restaurar", "ai.workspace.closeChat": "Cerrar {title}", "ai.workspace.popOut": "Abrir en una ventana separada", "ai.workspace.dock": "Acoplar el espacio de trabajo de IA", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} instalada", "ai.workspace.target.localModel": "Modelo local", "ai.workspace.target.apiModel": "Modelo de API", + "window.minimize": "Minimizar", + "window.maximize": "Maximizar", + "window.restore": "Restaurar", + "window.close": "Cerrar", "mcp.setup.manageTitle": "Administrar herramientas de IA externas", "mcp.setup.setupTitle": "Configurar herramientas de IA externas", "mcp.setup.connectedDescription": "Tolaria ya está conectada a herramientas de IA externas para esta bóveda. Vuelva a conectarse para actualizar la configuración o desconéctese para eliminar Tolaria de esos archivos de configuración de terceros.", diff --git a/src/lib/locales/es-ES.json b/src/lib/locales/es-ES.json index 354d923d..0e07b435 100644 --- a/src/lib/locales/es-ES.json +++ b/src/lib/locales/es-ES.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} no está instalado. Abre Agentes de IA en Ajustes.", "ai.panel.placeholder.ready": "Preguntar a {agent}", "ai.panel.send": "Enviar mensaje", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Regenerar respuesta", + "ai.message.copy": "Copiar respuesta", + "ai.message.fork": "Bifurcar chat desde aquí", + "ai.message.reasoning": "Razonamiento", + "ai.message.toolUse": "Uso de herramientas", "ai.workspace.title": "Agentes", "ai.workspace.newChat": "Nuevo chat", "ai.workspace.collapseSidebar": "Contraer la lista de chat de IA", @@ -322,7 +324,7 @@ "ai.workspace.close": "Cerrar el espacio de trabajo de IA", "ai.workspace.expandPanel": "Expandir el espacio de trabajo de IA", "ai.workspace.restorePanel": "Restaurar el panel del espacio de trabajo de IA", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Restaurar", "ai.workspace.closeChat": "Cerrar {title}", "ai.workspace.popOut": "Abrir en una ventana separada", "ai.workspace.dock": "Acoplar el espacio de trabajo de IA", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} instalada", "ai.workspace.target.localModel": "Modelo local", "ai.workspace.target.apiModel": "Modelo de API", + "window.minimize": "Minimizar", + "window.maximize": "Maximizar", + "window.restore": "Restaurar", + "window.close": "Cerrar", "mcp.setup.manageTitle": "Gestionar herramientas externas de IA", "mcp.setup.setupTitle": "Configurar herramientas de IA externas", "mcp.setup.connectedDescription": "Tolaria ya está conectada a herramientas de IA externas para este almacén. Vuelve a conectar Tolaria para actualizar la configuración o desconéctala para eliminarla de esos archivos de configuración de terceros.", diff --git a/src/lib/locales/fr-FR.json b/src/lib/locales/fr-FR.json index bb1eb478..4c52e3cf 100644 --- a/src/lib/locales/fr-FR.json +++ b/src/lib/locales/fr-FR.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} n'est pas installé. Ouvrez Agents IA dans les Paramètres.", "ai.panel.placeholder.ready": "Demander à {agent}", "ai.panel.send": "Envoyer un message", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Régénérer la réponse", + "ai.message.copy": "Copier la réponse", + "ai.message.fork": "Créer une branche du chat ici", + "ai.message.reasoning": "Raisonnement", + "ai.message.toolUse": "Utilisation de l'outil", "ai.workspace.title": "Agents", "ai.workspace.newChat": "Nouveau chat", "ai.workspace.collapseSidebar": "Réduire la liste de chat IA", @@ -322,7 +324,7 @@ "ai.workspace.close": "Fermer l'espace de travail IA", "ai.workspace.expandPanel": "Développer l'espace de travail IA", "ai.workspace.restorePanel": "Restaurer le panneau de l'espace de travail IA", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Restaurer", "ai.workspace.closeChat": "Fermer {title}", "ai.workspace.popOut": "Ouvrir dans une fenêtre séparée", "ai.workspace.dock": "Ancrer l'espace de travail IA", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} installée", "ai.workspace.target.localModel": "Modèle local", "ai.workspace.target.apiModel": "Modèle API", + "window.minimize": "Réduire", + "window.maximize": "Agrandir", + "window.restore": "Restaurer", + "window.close": "Fermer", "mcp.setup.manageTitle": "Gérer les outils d'IA externes", "mcp.setup.setupTitle": "Configurer des outils d'IA externes", "mcp.setup.connectedDescription": "Tolaria est déjà connectée à des outils d'IA externes pour ce coffre-fort. Reconnectez-vous pour actualiser la configuration, ou déconnectez-vous pour supprimer Tolaria de ces fichiers de configuration tiers.", diff --git a/src/lib/locales/id-ID.json b/src/lib/locales/id-ID.json index 84566111..1b829c11 100644 --- a/src/lib/locales/id-ID.json +++ b/src/lib/locales/id-ID.json @@ -314,7 +314,9 @@ "ai.panel.send": "Kirim pesan", "ai.message.regenerate": "Buat ulang respons", "ai.message.copy": "Salin respons", - "ai.message.fork": "Fork obrolan dari sini", + "ai.message.fork": "Cabangkan obrolan dari sini", + "ai.message.reasoning": "Penalaran", + "ai.message.toolUse": "Penggunaan alat", "ai.workspace.title": "Agen", "ai.workspace.newChat": "Obrolan baru", "ai.workspace.collapseSidebar": "Ciutkan daftar obrolan AI", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} terinstal", "ai.workspace.target.localModel": "Model lokal", "ai.workspace.target.apiModel": "Model API", + "window.minimize": "Minimalkan", + "window.maximize": "Perbesar", + "window.restore": "Pulihkan", + "window.close": "Tutup", "mcp.setup.manageTitle": "Kelola Alat AI Eksternal", "mcp.setup.setupTitle": "Siapkan Alat AI Eksternal", "mcp.setup.connectedDescription": "Tolaria sudah terhubung ke alat AI eksternal untuk brankas ini. Hubungkan kembali untuk menyegarkan konfigurasi, atau putuskan sambungan untuk menghapus Tolaria dari file konfigurasi pihak ketiga tersebut.", diff --git a/src/lib/locales/it-IT.json b/src/lib/locales/it-IT.json index 6c0f18a4..fcff4460 100644 --- a/src/lib/locales/it-IT.json +++ b/src/lib/locales/it-IT.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} non è installato. Apri Agenti IA in Impostazioni.", "ai.panel.placeholder.ready": "Chiedi a {agent}", "ai.panel.send": "Invia messaggio", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Rigenera risposta", + "ai.message.copy": "Copia risposta", + "ai.message.fork": "Crea una chat derivata da qui", + "ai.message.reasoning": "Ragionamento", + "ai.message.toolUse": "Uso degli strumenti", "ai.workspace.title": "Agenti", "ai.workspace.newChat": "Nuova chat", "ai.workspace.collapseSidebar": "Comprimi l'elenco delle chat con l'IA", @@ -322,7 +324,7 @@ "ai.workspace.close": "Chiudi l'area di lavoro IA", "ai.workspace.expandPanel": "Espandi l'area di lavoro AI", "ai.workspace.restorePanel": "Ripristina il pannello AI workspace", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Ripristina", "ai.workspace.closeChat": "Chiudi {title}", "ai.workspace.popOut": "Apri in una finestra separata", "ai.workspace.dock": "Ancora l'area di lavoro IA", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} installata", "ai.workspace.target.localModel": "Modello locale", "ai.workspace.target.apiModel": "Modello API", + "window.minimize": "Riduci a icona", + "window.maximize": "Ingrandisci", + "window.restore": "Ripristina", + "window.close": "Chiudi", "mcp.setup.manageTitle": "Gestisci strumenti di IA esterni", "mcp.setup.setupTitle": "Configura strumenti di IA esterni", "mcp.setup.connectedDescription": "Tolaria è già connessa a strumenti di IA esterni per questo vault. Riconnetti per aggiornare la configurazione o disconnetti per rimuovere Tolaria da quei file di configurazione di terze parti.", diff --git a/src/lib/locales/ja-JP.json b/src/lib/locales/ja-JP.json index fe4fa864..8867ba0e 100644 --- a/src/lib/locales/ja-JP.json +++ b/src/lib/locales/ja-JP.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent}がインストールされていません。[設定] で [AI エージェント] を開きます。", "ai.panel.placeholder.ready": "{agent}に尋ねる", "ai.panel.send": "メッセージを送信", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "応答を再生成", + "ai.message.copy": "応答をコピー", + "ai.message.fork": "ここからチャットを分岐", + "ai.message.reasoning": "推論", + "ai.message.toolUse": "ツールの使用", "ai.workspace.title": "エージェント", "ai.workspace.newChat": "新しいチャット", "ai.workspace.collapseSidebar": "AIチャットリストを折りたたむ", @@ -322,7 +324,7 @@ "ai.workspace.close": "AIワークスペースを閉じる", "ai.workspace.expandPanel": "AIワークスペースを展開", "ai.workspace.restorePanel": "AIワークスペースパネルを復元", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "復元", "ai.workspace.closeChat": "{title}を閉じる", "ai.workspace.popOut": "別のウィンドウで開く", "ai.workspace.dock": "AIワークスペースをドック", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version}がインストールされています", "ai.workspace.target.localModel": "ローカルモデル", "ai.workspace.target.apiModel": "APIモデル", + "window.minimize": "最小化", + "window.maximize": "最大化", + "window.restore": "復元", + "window.close": "閉じる", "mcp.setup.manageTitle": "外部AIツールの管理", "mcp.setup.setupTitle": "外部AIツールを設定する", "mcp.setup.connectedDescription": "Tolariaは、このVaultで既に外部AIツールに接続されています。再接続して構成を更新するか、接続を解除してこれらのサードパーティ構成ファイルからTolariaを削除してください。", diff --git a/src/lib/locales/ko-KR.json b/src/lib/locales/ko-KR.json index 04ad90f1..17a31fc4 100644 --- a/src/lib/locales/ko-KR.json +++ b/src/lib/locales/ko-KR.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent}이(가) 설치되어 있지 않습니다. 설정에서 AI Agents를 여세요.", "ai.panel.placeholder.ready": "{agent}에게 물어보기", "ai.panel.send": "메시지 보내기", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "응답 다시 생성", + "ai.message.copy": "응답 복사", + "ai.message.fork": "여기서 채팅 분기", + "ai.message.reasoning": "추론", + "ai.message.toolUse": "도구 사용", "ai.workspace.title": "에이전트", "ai.workspace.newChat": "새 채팅", "ai.workspace.collapseSidebar": "AI 채팅 목록 접기", @@ -322,7 +324,7 @@ "ai.workspace.close": "AI 작업 공간 닫기", "ai.workspace.expandPanel": "AI 작업 공간 펼치기", "ai.workspace.restorePanel": "AI 작업 영역 패널 복원", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "복원", "ai.workspace.closeChat": "{title} 닫기", "ai.workspace.popOut": "별도의 창에서 열기", "ai.workspace.dock": "AI 작업 공간 고정", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} 설치됨", "ai.workspace.target.localModel": "로컬 모델", "ai.workspace.target.apiModel": "API 모델", + "window.minimize": "최소화", + "window.maximize": "최대화", + "window.restore": "복원", + "window.close": "닫기", "mcp.setup.manageTitle": "외부 AI 도구 관리", "mcp.setup.setupTitle": "외부 AI 도구 설정", "mcp.setup.connectedDescription": "Tolaria는 이미 이 Vault에 대해 외부 AI 도구에 연결되어 있습니다. 구성을 새로 고치려면 다시 연결하고, 해당 타사 구성 파일에서 Tolaria를 제거하려면 연결을 해제하세요.", diff --git a/src/lib/locales/pl-PL.json b/src/lib/locales/pl-PL.json index 5b4538d2..adee8c21 100644 --- a/src/lib/locales/pl-PL.json +++ b/src/lib/locales/pl-PL.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} nie jest zainstalowany. Otwórz Agentów AI w Ustawieniach.", "ai.panel.placeholder.ready": "Zapytaj {agent}", "ai.panel.send": "Wyślij wiadomość", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Wygeneruj odpowiedź ponownie", + "ai.message.copy": "Skopiuj odpowiedź", + "ai.message.fork": "Rozgałęź czat od tego miejsca", + "ai.message.reasoning": "Rozumowanie", + "ai.message.toolUse": "Korzystanie z narzędzi", "ai.workspace.title": "Agenci", "ai.workspace.newChat": "Nowy czat", "ai.workspace.collapseSidebar": "Zwiń listę czatów AI", @@ -322,7 +324,7 @@ "ai.workspace.close": "Zamknij obszar roboczy AI", "ai.workspace.expandPanel": "Rozwiń obszar roboczy AI", "ai.workspace.restorePanel": "Przywróć panel obszaru roboczego AI", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Przywróć", "ai.workspace.closeChat": "Zamknij {title}", "ai.workspace.popOut": "Otwórz w oddzielnym oknie", "ai.workspace.dock": "Zadokuj obszar roboczy AI", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "Zainstalowano {version}", "ai.workspace.target.localModel": "Model lokalny", "ai.workspace.target.apiModel": "Model API", + "window.minimize": "Minimalizuj", + "window.maximize": "Maksymalizuj", + "window.restore": "Przywróć", + "window.close": "Zamknij", "mcp.setup.manageTitle": "Zarządzaj zewnętrznymi narzędziami AI", "mcp.setup.setupTitle": "Skonfiguruj zewnętrzne narzędzia AI", "mcp.setup.connectedDescription": "Tolaria jest już połączona z zewnętrznymi narzędziami AI dla tego sejfu. Połącz ponownie, aby odświeżyć konfigurację, lub rozłącz, aby usunąć Tolaria z plików konfiguracyjnych narzędzi zewnętrznych.", diff --git a/src/lib/locales/pt-BR.json b/src/lib/locales/pt-BR.json index 1803b3bc..bd9a3e85 100644 --- a/src/lib/locales/pt-BR.json +++ b/src/lib/locales/pt-BR.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} não está instalado. Abra Agentes de IA em Configurações.", "ai.panel.placeholder.ready": "Perguntar ao {agent}", "ai.panel.send": "Enviar mensagem", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Gerar resposta novamente", + "ai.message.copy": "Copiar resposta", + "ai.message.fork": "Criar ramificação do chat a partir daqui", + "ai.message.reasoning": "Raciocínio", + "ai.message.toolUse": "Uso da ferramenta", "ai.workspace.title": "Agentes", "ai.workspace.newChat": "Novo chat", "ai.workspace.collapseSidebar": "Recolher lista de chat de IA", @@ -322,7 +324,7 @@ "ai.workspace.close": "Fechar o espaço de trabalho de IA", "ai.workspace.expandPanel": "Expandir o espaço de trabalho de IA", "ai.workspace.restorePanel": "Restaurar painel do AI Workspace", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Restaurar", "ai.workspace.closeChat": "Fechar {title}", "ai.workspace.popOut": "Abrir em uma janela separada", "ai.workspace.dock": "Encaixar o espaço de trabalho de IA", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} instalada", "ai.workspace.target.localModel": "Modelo local", "ai.workspace.target.apiModel": "Modelo de API", + "window.minimize": "Minimizar", + "window.maximize": "Maximizar", + "window.restore": "Restaurar", + "window.close": "Fechar", "mcp.setup.manageTitle": "Gerenciar ferramentas externas de IA", "mcp.setup.setupTitle": "Configurar ferramentas externas de IA", "mcp.setup.connectedDescription": "O Tolaria já está conectado a ferramentas externas de IA para este vault. Reconecte-se para atualizar a configuração ou desconecte-se para remover o Tolaria desses arquivos de configuração de terceiros.", diff --git a/src/lib/locales/pt-PT.json b/src/lib/locales/pt-PT.json index 9e26d744..0a3a6f13 100644 --- a/src/lib/locales/pt-PT.json +++ b/src/lib/locales/pt-PT.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "O {agent} não está instalado. Abra Agentes de IA em Definições.", "ai.panel.placeholder.ready": "Perguntar ao {agent}", "ai.panel.send": "Enviar mensagem", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Gerar novamente a resposta", + "ai.message.copy": "Copiar resposta", + "ai.message.fork": "Criar ramificação da conversa a partir daqui", + "ai.message.reasoning": "Raciocínio", + "ai.message.toolUse": "Utilização da ferramenta", "ai.workspace.title": "Agentes", "ai.workspace.newChat": "Novo chat", "ai.workspace.collapseSidebar": "Recolher a lista de chat de IA", @@ -322,7 +324,7 @@ "ai.workspace.close": "Fechar espaço de trabalho de IA", "ai.workspace.expandPanel": "Expandir o espaço de trabalho de IA", "ai.workspace.restorePanel": "Restaurar o painel do espaço de trabalho de IA", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Restaurar", "ai.workspace.closeChat": "Fechar {title}", "ai.workspace.popOut": "Abrir numa janela separada", "ai.workspace.dock": "Afixar espaço de trabalho de IA", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "{version} instalada", "ai.workspace.target.localModel": "Modelo local", "ai.workspace.target.apiModel": "Modelo de API", + "window.minimize": "Minimizar", + "window.maximize": "Maximizar", + "window.restore": "Restaurar", + "window.close": "Fechar", "mcp.setup.manageTitle": "Gerir ferramentas de IA externas", "mcp.setup.setupTitle": "Configurar ferramentas de IA externas", "mcp.setup.connectedDescription": "A Tolaria já está ligada a ferramentas de IA externas para este cofre. Volte a ligar para atualizar a configuração ou desligue para remover a Tolaria desses ficheiros de configuração de terceiros.", diff --git a/src/lib/locales/ru-RU.json b/src/lib/locales/ru-RU.json index dbfcb398..0bd1a3be 100644 --- a/src/lib/locales/ru-RU.json +++ b/src/lib/locales/ru-RU.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} не установлен. Откройте «AI Agents» в настройках.", "ai.panel.placeholder.ready": "Спросить {agent}", "ai.panel.send": "Отправить сообщение", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Сгенерировать ответ заново", + "ai.message.copy": "Скопировать ответ", + "ai.message.fork": "Разветвить чат отсюда", + "ai.message.reasoning": "Обоснование", + "ai.message.toolUse": "Использование инструмента", "ai.workspace.title": "Агенты", "ai.workspace.newChat": "Новый чат", "ai.workspace.collapseSidebar": "Свернуть список чатов с ИИ", @@ -322,7 +324,7 @@ "ai.workspace.close": "Закрыть рабочее пространство ИИ", "ai.workspace.expandPanel": "Развернуть рабочее пространство ИИ", "ai.workspace.restorePanel": "Восстановить панель рабочего пространства ИИ", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Восстановить", "ai.workspace.closeChat": "Закрыть {title}", "ai.workspace.popOut": "Открыть в отдельном окне", "ai.workspace.dock": "Закрепить рабочее пространство ИИ", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "Установлена версия {version}", "ai.workspace.target.localModel": "Локальная модель", "ai.workspace.target.apiModel": "Модель API", + "window.minimize": "Свернуть", + "window.maximize": "Развернуть", + "window.restore": "Восстановить", + "window.close": "Закрыть", "mcp.setup.manageTitle": "Управление внешними инструментами ИИ", "mcp.setup.setupTitle": "Настроить внешние инструменты ИИ", "mcp.setup.connectedDescription": "Tolaria уже подключена к внешним инструментам ИИ для этого хранилища. Подключитесь повторно, чтобы обновить конфигурацию, или отключитесь, чтобы удалить Tolaria из этих сторонних файлов конфигурации.", diff --git a/src/lib/locales/vi.json b/src/lib/locales/vi.json index 2ed3d59d..b77a1ac3 100644 --- a/src/lib/locales/vi.json +++ b/src/lib/locales/vi.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "{agent} is not installed. Open AI Agents in Settings.", "ai.panel.placeholder.ready": "Ask {agent}", "ai.panel.send": "Send message", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "Tạo lại phản hồi", + "ai.message.copy": "Sao chép phản hồi", + "ai.message.fork": "Tách nhánh cuộc trò chuyện từ đây", + "ai.message.reasoning": "Lập luận", + "ai.message.toolUse": "Sử dụng công cụ", "ai.workspace.title": "Đại lý", "ai.workspace.newChat": "Trò chuyện mới", "ai.workspace.collapseSidebar": "Thu gọn danh sách trò chuyện AI", @@ -322,7 +324,7 @@ "ai.workspace.close": "Đóng không gian làm việc AI", "ai.workspace.expandPanel": "Mở rộng không gian làm việc AI", "ai.workspace.restorePanel": "Khôi phục bảng điều khiển không gian làm việc AI", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "Khôi phục", "ai.workspace.closeChat": "Đóng {title}", "ai.workspace.popOut": "Mở trong cửa sổ riêng", "ai.workspace.dock": "Gắn không gian làm việc AI vào màn hình", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "Đã cài đặt {version}", "ai.workspace.target.localModel": "Mô hình cục bộ", "ai.workspace.target.apiModel": "Mô hình API", + "window.minimize": "Thu nhỏ", + "window.maximize": "Phóng to", + "window.restore": "Khôi phục", + "window.close": "Đóng", "mcp.setup.manageTitle": "Manage External AI Tools", "mcp.setup.setupTitle": "Set Up External AI Tools", "mcp.setup.connectedDescription": "Tolaria is already connected to external AI tools for this vault. Reconnect to refresh the configuration, or disconnect to remove Tolaria from those third-party config files.", diff --git a/src/lib/locales/zh-CN.json b/src/lib/locales/zh-CN.json index 199f4b8a..2f923ba3 100644 --- a/src/lib/locales/zh-CN.json +++ b/src/lib/locales/zh-CN.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "未安装 {agent}。在“设置”中打开 AI 代理。", "ai.panel.placeholder.ready": "询问 {agent}", "ai.panel.send": "发送消息", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "重新生成回复", + "ai.message.copy": "复制回复", + "ai.message.fork": "从此处分叉聊天", + "ai.message.reasoning": "推理", + "ai.message.toolUse": "工具使用", "ai.workspace.title": "代理", "ai.workspace.newChat": "新聊天", "ai.workspace.collapseSidebar": "收起 AI 聊天列表", @@ -322,7 +324,7 @@ "ai.workspace.close": "关闭 AI 工作区", "ai.workspace.expandPanel": "展开 AI 工作区", "ai.workspace.restorePanel": "恢复 AI 工作区面板", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "还原", "ai.workspace.closeChat": "关闭{title}", "ai.workspace.popOut": "在单独窗口中打开", "ai.workspace.dock": "停靠 AI 工作区", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "已安装 {version}", "ai.workspace.target.localModel": "本地模型", "ai.workspace.target.apiModel": "API 模型", + "window.minimize": "最小化", + "window.maximize": "最大化", + "window.restore": "还原", + "window.close": "关闭", "mcp.setup.manageTitle": "管理外部 AI 工具", "mcp.setup.setupTitle": "设置外部 AI 工具", "mcp.setup.connectedDescription": "对于此 Vault,Tolaria 已经连接到外部 AI 工具。重新连接以刷新配置,或断开连接以从这些第三方配置文件中删除 Tolaria。", diff --git a/src/lib/locales/zh-TW.json b/src/lib/locales/zh-TW.json index d6d10ffe..addfdb2d 100644 --- a/src/lib/locales/zh-TW.json +++ b/src/lib/locales/zh-TW.json @@ -312,9 +312,11 @@ "ai.panel.placeholder.missing": "未安裝 {agent}。在「設定」中開啟 AI 代理程式。", "ai.panel.placeholder.ready": "詢問 {agent}", "ai.panel.send": "傳送訊息", - "ai.message.regenerate": "Regenerate response", - "ai.message.copy": "Copy response", - "ai.message.fork": "Fork chat from here", + "ai.message.regenerate": "重新產生回覆", + "ai.message.copy": "複製回覆", + "ai.message.fork": "從此處分支聊天", + "ai.message.reasoning": "推理", + "ai.message.toolUse": "工具使用", "ai.workspace.title": "代理人", "ai.workspace.newChat": "新對話", "ai.workspace.collapseSidebar": "收合 AI 聊天清單", @@ -322,7 +324,7 @@ "ai.workspace.close": "關閉 AI 工作區", "ai.workspace.expandPanel": "展開 AI 工作區", "ai.workspace.restorePanel": "還原 AI 工作區面板", - "ai.workspace.restoreGuidance": "Restore", + "ai.workspace.restoreGuidance": "還原", "ai.workspace.closeChat": "關閉{title}", "ai.workspace.popOut": "在單獨視窗中開啟", "ai.workspace.dock": "固定 AI 工作區", @@ -356,6 +358,10 @@ "ai.workspace.target.installedVersion": "已安裝 {version}", "ai.workspace.target.localModel": "本機模型", "ai.workspace.target.apiModel": "API 模型", + "window.minimize": "最小化", + "window.maximize": "最大化", + "window.restore": "還原", + "window.close": "關閉", "mcp.setup.manageTitle": "管理外部 AI 工具", "mcp.setup.setupTitle": "設定外部 AI 工具", "mcp.setup.connectedDescription": "Tolaria 已經連接到此 Vault 的外部 AI 工具。重新連線以重新載入設定,或中斷連線以從這些第三方設定檔案中移除 Tolaria。",