Files
apes-sidebar/src/client/locales-it.ts
T
Menghuan1918 d38fefe55d feat(tasks): 任务输出常驻浮动窗 + 节点卡去竖线 + 手机设置
三件事一起落地(用户 brief),各自独立可验证:

1) 后台任务输出改为常驻浮动窗
   - 新增 src/client/FloatingWindow.tsx + .module.css:可复用组件,标题栏(拖拽手柄 +
     复制/关闭)、内容区(自滚动,长输出不再跑出视口)、可选底部行、三个拉伸柄
     (右/下/右下)。生命周期与 AnchoredPopover 相反:外部点击、失焦、锚点离屏都不关,
     只有关闭按钮与 Escape 结束;尺寸只在挂载时量一次(流式输出帧不会挪动读者摆好的窗);
     拖拽保持整窗在视口内(放不下才退化到保留 48px 可达);视口变化时夹回。
   - 手势复用既有范式:移动走 window 级 pointermove(同 AnchoredPopover),拉伸走
     setPointerCapture + createFrameBatcher(同 EditorHost 的面板拉伸)。
   - JobOutputPopoverContent → JobOutputWindow;顺带修掉「跟随最新」从不滚动的 bug
     (原先滚的是 TerminalBlock 外面那个永不滚动的 div),并清掉随旧弹窗死掉的
     .popPre / .jobPopPre 规则。节点/工作流详情与任务窗保持原样。

2) 节点卡统一
   - 删除两条左侧竖条(层级条 .cardTop::before、当前会话条 .nodeCurrent::before);
     层级改由上段极淡底色承担(7/5/3.5/2.5% → 9/7/5/3.5% 补偿对比度);
     当前会话改为 2px accent 描边(「边框加粗高亮」)。
   - 圆角 4px → 8px(与浮动窗同一家族);成员/工作流/聚合按用户选择保留类型区分。
   - 2px 而非 1.5px:真机 recon 发现 Chromium 在 DPR 1 下把亚像素边框向下取整,
     1.5px 的「加粗」完全看不出(实测 borderTopWidth: "1px")。几何不受影响
     (border-box + min-height,卡片外框 247×134 与预算逐像素一致)。

3) 手机设置
   - 两个新偏好 mobileNoAutoOpen / mobileDefaultTree(默认都开),落到 prefs-shared、
     PrefsSchema(volatile 自动)、parsePrefs 校验与设置页新增的「手机」分组。
   - 窄屏(沿用 768px 断点)时:新子代理与新后台任务都不再自动激活任务页;
     任务页默认树状图(页内切换仍是临时覆盖)。宽屏或开关关掉后行为完全不变。
   - 5 条词条 ×20 份词典;外部插件指南的 PrefsSchema 键清单同步。

验证:typecheck / lint ✅;pnpm test 1254 passed / 9 skipped(新增 14 例);
挂载 lane 7/7(真实 DSH 0.1.7-rc.2);3080 真机自测通过(长输出窗口内部滚动
5459px/449px、拖拽 424→304、拉伸 1008×540→918×480、外部点击不关、Escape 关、
卡片 8px/2px/无竖条、窄屏不自动弹出且默认树状图)。

(cherry picked from commit 7d9b428c6c34d28ad2d60c2086496eb533902273)
2026-09-27 22:18:57 +08:00

486 lines
34 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Italian copy for the sidebar. Key-set-equal to `zh` in `locales.ts`;
* consumed by the better-locale override store (see `locales.ts` for the
* zh/en/ja lookup chain and the `attachBetterLocale` contract).
*
* @module dsh-better-sidebar/client/locales-it
*/
export const it: Record<string, string> = {
files: 'File',
guideDescFiles: 'Sfoglia l\'albero del workspace; un clic apre anteprima o editor',
guideDescGit: 'Modifiche Git e modifiche ai file di questa sessione in un solo tab',
guideDescSubagent: 'Grafo del workflow, bacheca delle attività del team e attività in background, in tempo reale',
guideDescSidechat: 'Un thread di approfondimento indipendente che eredita il contesto della sessione',
guideDescTerminal: 'Una vera shell (xterm + pty) con riconnessione',
guideDescBrowser: 'Browser integrato, può aprire i link della chat',
changesSessionEmpty: 'Ancora nessuna operazione sui file in questa sessione',
changesRead: 'Lettura',
changesMdReading: 'Lettura',
changesHtmlRender: "Render",
changesHtmlRaw: "Sorgente",
changesPdfRender: "Render",
changesPdfRaw: "Sorgente",
changesMdRaw: 'Grezzo',
changesWrite: 'Scrittura',
changesEdit: 'Modifica',
changesRunning: 'in esecuzione',
changesError: 'errore',
changesFold: '{count} righe… clicca per espandere',
changesFoldLoading: 'Espansione…',
changesFoldUnavailable: 'Contesto non disponibile',
changesContext: 'contesto',
changesPriorUnknown: 'Il contenuto precedente è fuori dalla finestra; mostrato come interamente aggiunto',
explorer: 'Esplora risorse',
terminal: 'Terminale',
editor: 'Editor',
editorExplorer: 'Modalità di apertura dei file',
editorExplorerDesc: 'Controlla come si aprono i file',
editorExplorerMerged: 'Unito',
editorExplorerMergedDesc: 'I file cambiano sul posto nella stessa finestra; le nuove finestre avviano l’albero espanso',
editorExplorerSplit: 'Separato',
editorExplorerSplitDesc: 'Le finestre senza percorso sono l’esplora risorse autonomo (solo albero dei file); ogni file apre la propria finestra (albero agganciato, chiuso per impostazione predefinita)',
editorTreeToggle: 'Pannello dell’albero dei file',
editorPathPlaceholder: 'Percorso del file (relativo alla directory della sessione o assoluto), Invio per aprire',
editorSearchPlaceholder: 'Cerca file per nome…',
editorSearchNoResults: 'Nessun file corrispondente',
editorSearchTruncated: 'Troppi risultati — viene mostrato un elenco parziale',
editorEmptyHint: 'Scelga un file dal pannello dell’albero a destra o dal campo del percorso in alto per iniziare l’anteprima',
openFileNewTab: 'Apri in una nuova scheda',
openFileSide: 'Apri a lato',
openWithMenu: 'Apri con',
openWithSshSuffix: ' (SSH)',
pinOpenWith: 'Fissa al menu',
unpinOpenWith: 'Rimuovi dal fisso',
openWithExplorer: 'Esplora risorse',
openWithVscode: 'VS Code',
openWithCursor: 'Cursor',
openWithZed: 'Zed',
openWithSettingsSshTitle: 'Host remoto SSH',
openWithSettingsSshDesc: 'Vuoto = spazio di lavoro locale; con un user@host o un alias SSH, gli apritori della famiglia VSCode passano al protocollo vscode-remote/ssh-remote e l’Esplora risorse / Zed / gli editor personalizzati non VSCode vengono nascosti dal menu',
openWithSettingsSshPlaceholder: 'user@host o alias SSH',
openWithSettingsCustomTitle: 'Editor personalizzati',
openWithSettingsCustomDesc: 'Nome + modello URL (segnaposto {path}) + flag famiglia VSCode; in modalità remota solo gli editor della famiglia VSCode possono aprire un percorso remoto',
openWithSettingsAdd: 'Aggiungi',
openWithSettingsName: 'Nome',
openWithSettingsTemplate: 'es. cursor://file/{path}',
openWithSettingsFamily: 'Famiglia VSCode',
openWithSettingsFamilyDesc: 'Questo editor usa il protocollo URL di VSCode (supporta aperture SSH remote)',
openWithSettingsRemove: 'Rimuovi',
openWithSettingsInvalidHint: 'Gli editor con nome mancante o modello senza {path} / scheme:// non vengono mostrati nel menu',
newTab: 'Nuova scheda',
brokenSymlink: 'Collegamento simbolico interrotto',
close: 'Chiudi',
closeOtherTabs: 'Chiudi le altre schede',
closeLeftTabs: 'Chiudi le schede a sinistra',
closeRightTabs: 'Chiudi le schede a destra',
pinTerminal: 'Blocca Terminale',
pinAgentTerminal: 'Blocca Terminale Agent',
pinToWorkspace: 'Blocca in Workspace',
pinToGlobal: 'Blocca Globalmente',
unpinTerminal: 'Sblocca',
collapseBottomPanel: 'Comprimi pannello inferiore',
expandBottomPanel: 'Espandi pannello inferiore',
terminalError: 'Connessione del terminale non riuscita',
terminalConnectFailed: 'Il terminale non è riuscito a connettersi più volte',
terminalRetry: 'Riprova',
terminalWaitBanner: 'L’agente è in attesa di {needle}',
terminalSkipWait: 'Salta attesa',
terminalDepsFailed: 'Caricamento della dipendenza del terminale node-pty non riuscito',
terminalDepsHint: 'Esegua il comando seguente in un terminale o cmd sul computer DSH per ripristinarlo, poi riprovi (node-pty resta sincronizzato con la versione del core DSH):',
terminalDepsProfile: ' (rilevato profilo: {profile})',
terminalShellNotFound: 'Shell configurata non trovata: {name} — verifica il percorso della shell in Impostazioni → Side card → Terminal',
preview: 'Anteprima',
toc: 'Indice',
edit: 'Modifica',
mermaidError: 'Rendering Mermaid non riuscito',
mermaidZoomIn: 'Ingrandisci',
mermaidZoomOut: 'Riduci',
mermaidZoomReset: 'Ripristina',
mermaidZoomHint: 'Scorra per zoom · trascini per panoramica · Esc per chiudere',
refresh: 'Aggiorna',
showInFolder: 'Mostra nella cartella',
refreshUnsavedConfirm: 'Il file è cambiato su disco. Aggiornare scarterà le modifiche non salvate. Continuare?',
save: 'Salva',
saved: 'Salvato',
unsaved: 'Non salvato',
saveFailed: 'Salvataggio non riuscito',
truncation: 'File troppo grande — vengono mostrati i primi 512KB',
binary: 'File binario, anteprima non disponibile',
loading: 'Caricamento…',
error: 'Caricamento non riuscito',
retry: 'Riprova',
notRepo: 'Questa directory non è un repository git',
noChanges: 'Nessuna modifica',
statusTruncated: 'Troppe modifiche; vengono mostrate solo le prime 2000 voci',
stage: 'Prepara',
unstage: 'Rimuovi dalla preparazione',
stageAll: 'Prepara tutto',
unstageAll: 'Rimuovi tutto dalla preparazione',
commitPlaceholder: 'Messaggio di commit (Ctrl+Enter)',
commit: 'Commit',
branch: 'Ramo',
worktree: 'Albero di lavoro',
checkoutError: 'Cambio di ramo non riuscito',
history: 'Cronologia',
changes: 'Modifiche',
changesGitLens: 'Git',
changesSessionLens: 'Sessione',
changesFilterAll: 'Tutti',
changesFilterEmpty: 'Nessuna operazione di questo tipo',
changesOpenDiffTab: 'Apri in una scheda diff',
changesClosePreview: 'Ridimensiona l\'anteprima',
changesResizePreview: 'Ridimensiona anteprima',
changesLoadError: 'I record dei file della sessione non sono disponibili',
staged: 'In stage',
unstaged: 'Non in stage',
cancel: 'Annulla',
diffEmpty: 'Nessuna modifica testuale',
diffLoadError: 'Caricamento del diff non riuscito',
diffBinary: 'Binario',
diffAdded: 'Aggiunto',
diffDeleted: 'Eliminato',
diffRenamed: 'Rinominato',
diffExpand: 'Espandi altre {count} righe',
discard: 'Annulla modifiche',
discardTitle: 'Annulla modifiche',
discardDesc: 'Questo annulla le modifiche della copia di lavoro di «{path}» (non recuperabile).',
viewCommitDiff: 'Vedi il diff del commit',
copyShortHash: 'Copia hash breve',
copyFullHash: 'Copia hash completo',
copySubject: 'Copia messaggio di commit',
revertCommit: 'Ripristina questo commit',
revertTitle: 'Ripristina questo commit',
revertDesc: 'Crea un nuovo commit sul ramo attuale che inverte «{subject}».',
cherryPickCommit: 'Cherry-pick di questo commit',
cherryPickTitle: 'Cherry-pick di questo commit',
cherryPickDesc: 'Applica le modifiche di «{subject}» al ramo attuale.',
timeJustNow: 'adesso',
timeMinutesAgo: '{n} min fa',
timeHoursAgo: '{n} h fa',
timeYesterday: 'ieri',
loadMore: 'Carica altro',
historyLoadError: 'Caricamento di altra cronologia non riuscito',
produced: 'Prodotti',
disconnected: 'Terminale disconnesso, riconnessione…',
exited: 'Il processo del terminale è terminato',
noSession: 'Selezioni una conversazione per usare la barra laterale',
pluginNotLoaded: 'Plugin non caricato; scheda non disponibile:',
parent: 'Directory superiore',
copied: 'Copiato',
copy: 'Copia',
openEditor: 'Apri editor',
referenceFile: '@file',
addToConversation: 'Aggiungi alla conversazione',
copyRelative: 'Copia percorso relativo',
copyAbsolute: 'Copia percorso assoluto',
rename: 'Rinomina',
renameInvalid: 'Il nome non può essere vuoto o contenere separatori di percorso.',
delete: 'Elimina',
deleteTitle: 'Eliminare "{name}"?',
deleteDescFile: 'Il file verrà eliminato definitivamente. Questa azione non può essere annullata.',
deleteDescDir: 'La directory e tutto il suo contenuto verranno eliminati definitivamente. Questa azione non può essere annullata.',
dismiss: 'Chiudi',
download: 'Scarica',
uploadFiles: 'Carica file',
uploadFolder: 'Carica cartella',
uploadHere: 'Carica qui',
uploadDropHint: 'Trascini file/cartelle qui per caricarli',
uploadDropChat: 'Trascini sulla chat per aggiungere immagini alla conversazione',
uploadTo: 'Carica in {dir}',
uploadingTo: 'Caricamento in {dir}…',
uploadProgress: 'Caricamento {done}/{total}: {name}',
uploadDone: 'Caricati {count} file',
uploadFailed: 'Caricamento non riuscito: {error}',
uploadFailedUnknown: 'Errore sconosciuto',
uploadTooLarge: 'File troppo grande (oltre il limite di caricamento)',
uploadCancelled: 'Caricamento annullato',
settingsNav: 'Scheda laterale',
settingsIntro: 'Gestisca cosa mostra la scheda laterale e come si comporta',
settingsPopupDesc: 'Configuri le opzioni relative a {feature}',
settingsDone: 'Fatto',
settingsOpenToolsTitle: 'Iniettare lo strumento di apertura della barra laterale per il modello',
settingsOpenToolsDesc: 'Se attivato, il modello può aprire file, cartelle e pagine HTTP(S) nella barra laterale tramite lo strumento sidebar_open (disattivato per impostazione predefinita)',
settingsTitleBarTitle: 'Modalità di compatibilità della posizione',
settingsTitleBarDesc: 'Scelga lo schema di compatibilità della barra del titolo: rilevamento automatico (predefinito, prudente) / DSH Web ufficiale / shell desktop note / personalizzato (distanza di scorrimento + CSS personalizzato)',
settingsTitleBarStripTitle: 'Distanza di scorrimento',
settingsTitleBarStripDesc: 'Altezza della striscia della barra del titolo: di quanti pixel scendono i pulsanti e i contenuti della barra laterale (0–120, predefinito 40; si applica con lo schema personalizzato)',
settingsSchemeAutoTitle: 'Rilevamento automatico',
settingsSchemeAutoDesc: 'Prudente: solo l’API standard Window Controls Overlay contribuisce (altezza reale della barra del titolo); gli ambienti web puri non subiscono modifiche',
settingsSchemeWebTitle: 'DSH Web ufficiale',
settingsSchemeWebDesc: 'Dichiara esplicitamente la web UI ufficiale: nessun adattamento (nemmeno la geometria WCO standard)',
settingsSchemeCustomTitle: 'Personalizzato',
settingsSchemeCustomDesc: 'Controllo totale: inietti CSS personalizzato (può sovrascrivere gli stili integrati) e imposti la distanza di scorrimento della barra del titolo',
settingsSchemeDetectedSuffix: 'rilevato',
settingsCustomCssTitle: 'CSS personalizzato',
settingsCustomCssPlaceholder: '/* es. riserva 36px per una shell con barra del titolo disegnata a mano */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}',
settingsSaveFailed: 'Salvataggio non riuscito',
settingsConflict: 'L’impostazione è stata modificata in un’altra finestra — riprovi',
binaryNoPreview: 'Questo tipo di file non può essere visualizzato in anteprima',
downloadToView: 'Scarica per visualizzare',
settingsSubagentTitle: 'Attiva automaticamente la pagina Attività quando compare un sottoagente',
settingsSubagentDesc: 'Quando nella conversazione attuale compare un nuovo sottoagente, attiva automaticamente la pagina Attività; sugli schermi ampi espande anche la barra laterale, mentre sugli schermi stretti non forza l’apertura del pannello a schermo intero; disattiva per selezionare la pagina manualmente',
settingsJobsTitle: 'Attiva automaticamente la pagina Attività quando compare una nuova attività in background',
settingsJobsDesc: 'Quando nella conversazione attuale compare una nuova attività in background, attiva automaticamente la pagina Attività (l’attivazione avviene per ogni nuova attività); sugli schermi ampi espande anche la barra laterale, mentre sugli schermi stretti non forza l’apertura del pannello a schermo intero; disattiva per selezionare la pagina manualmente',
settingsToolsTitle: 'Inietta strumenti del terminale per il modello',
settingsToolsDesc: 'Se attivato, il modello può creare e gestire terminali della barra laterale attraverso gli 8 strumenti terminal_* (disattivato per impostazione predefinita)',
settingsFenceTitle: 'Controllo dei percorsi del workspace',
settingsFenceDesc: 'Attivo, le funzioni file della barra laterale raggiungono solo i percorsi nel workspace di sessione (predefinito); disattivo, ogni file dell\'host è raggiungibile — gli script della pagina ottengono la stessa portata nel frattempo',
fenceErrorReason: 'Questo percorso è fuori dal workspace di sessione ed è stato bloccato dal controllo',
fenceDisableAction: 'Disattiva il controllo del workspace',
settingsBottomTerminalTitle: 'Apri automaticamente un terminale alla prima espansione del pannello inferiore',
settingsBottomTerminalDesc: 'Quando il pannello inferiore viene espanso per la prima volta in una sessione, prova ad aprire una nuova scheda terminale nel pannello inferiore (il limite di terminali si applica comunque; attivo per impostazione predefinita)',
settingsFontFamilyTitle: 'Famiglia di caratteri del terminale',
settingsFontFamilyDesc: 'Famiglia di caratteri personalizzata del terminale (uno stack CSS font-family come "JetBrains Mono", monospace; lasci vuoto per seguire il carattere a spaziatura fissa del tema)',
settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace',
settingsFontSizeTitle: 'Dimensione del carattere del terminale',
settingsFontSizeDesc: 'Dimensione del carattere del terminale in px (9–32, predefinito 13)',
settingsShellTitle: 'Percorso della shell',
settingsShellDesc: 'Shell avviata per i terminali dell’interfaccia e del modello (percorso assoluto o nome eseguibile). Vuoto mantiene l’ordine preesistente: config.shell di yaml → $SHELL / shell di login / powershell.exe di Windows. Si applica ai terminali aperti successivamente',
settingsShellPlaceholder: 'es. /bin/zsh (vuoto = automatico)',
settingsShellArgsTitle: 'Argomenti della shell',
settingsShellArgsDesc: 'Argomenti espliciti della shell, separati da spazi; quando non vuoti sostituiscono completamente i predefiniti (stesso contratto di shellArgs di yaml)',
settingsShellArgsPlaceholder: 'es. -l (vuoto = predefiniti)',
settingsTabsTitle: 'Contenuto della barra laterale',
settingsViewersTitle: 'Visualizzatori di file',
settingsMobileTitle: "Mobile",
settingsMobileNoAutoOpenTitle: "Non aprire automaticamente su schermi stretti",
settingsMobileNoAutoOpenDesc: "Su telefono / schermo stretto un nuovo subagent o job in background non passa più da solo alla pagina Attività (puoi comunque aprirla a mano)",
settingsMobileTreeTitle: "Pagina Attività predefinita ad albero",
settingsMobileTreeDesc: "Su telefono / schermo stretto la pagina Attività si apre come albero classico invece che come grafo del workflow; il pulsante nella pagina resta attivo",
settingsGeneralTitle: 'Generali',
settingsPopup: 'Impostazioni della funzionalità',
settingsViewerCatchAll: 'Raccoglitore: qualsiasi file',
viewerMarkdown: 'Markdown',
viewerCode: 'Codice',
viewerHtml: 'HTML',
browser: 'Browser',
browserPlaceholder: 'Inserisca un URL, es. example.com',
browserGo: 'Vai',
browserBack: 'Indietro',
browserForward: 'Avanti',
browserStart: 'Inserisca un URL per iniziare a navigare (modalità sandbox)',
browserBlockedScheme: 'Bloccato: sono ammessi solo URL http/https',
browserBlockedLoopback: 'Bloccato: gli indirizzi locali e interni non possono essere navigati qui',
browserInvalid: 'URL non valido',
htmlNoSandboxWarning: 'Sandbox disattivata: questo HTML viene eseguito con la stessa origine dell’interfaccia e può leggere i file di sessione e le API interne (può riattivarla nelle impostazioni)',
sandboxStatusOn: 'Modalità sandbox: attiva · le pagine non possono accedere ai dati dell’interfaccia o ai file locali; i login e i cookie di terze parti potrebbero non funzionare',
sandboxUnlock: 'Disattiva temporaneamente (non sicuro)',
sandboxRestore: 'Ripristina sandbox',
settingsHtmlDefaultUnsafeTitle: 'Apri le anteprime HTML senza sandbox per impostazione predefinita (non sicuro)',
settingsHtmlDefaultUnsafeDesc: 'Se attivato, ogni anteprima HTML appena aperta inizia nello stato senza sandbox (stessa origine dell’interfaccia — può leggere i file di sessione e le API interne); la riga di stato offre ancora un ripristino con un tocco',
settingsHtmlSandboxTitle: 'Disattiva la sandbox dell’anteprima HTML (non sicuro)',
settingsHtmlSandboxDesc: 'Con la sandbox disattivata, l’HTML in anteprima viene eseguito con la stessa origine dell’interfaccia: può leggere i file di sessione, l’archiviazione locale e chiamare le API interne. Attivi solo per file completamente attendibili',
settingsBrowserSandboxTitle: 'Disattiva la sandbox del browser (non sicuro)',
settingsBrowserSandboxDesc: 'Con la sandbox disattivata, ogni sito visitato viene eseguito con la stessa origine dell’interfaccia: può leggere i dati di sessione e fingersi la sua sessione di login. Attivi solo per siti completamente attendibili',
settingsBrowserLoopbackTitle: 'Indirizzi locali consentiti',
settingsBrowserLoopbackDesc: 'Allowlist separata da virgole di indirizzi di loopback (es. localhost:5174 o 127.0.0.1:8080) che il browser della barra laterale può visitare; vuoto blocca tutti gli indirizzi locali per impostazione predefinita. La sandbox si applica ancora — le pagine non possono leggere i dati della GUI',
settingsBrowserLoopbackPlaceholder: 'es. localhost:5174, 127.0.0.1:8080',
browserOpenExternal: 'Apri nel browser',
browserEmbedBlocked: '{host} ha rifiutato di essere incorporato',
browserEmbedBlockedDesc: 'Il sito vieta di essere mostrato all’interno di altre pagine (X-Frame-Options / frame-ancestors), per cui non può essere caricato nella barra laterale. Lo apra direttamente nel browser.',
browserEmbedAnyway: 'Carica comunque',
subagent: 'Attività',
subagentMainAgent: 'Agente principale',
subagentEmpty: 'Nessun sottoagente',
subagentEmptyDesc: 'I sottoagenti generati dall’agente principale compariranno qui',
subagentInactive: 'Inattivo',
subagentModeOneShot: 'Monouso',
subagentModeContinuable: 'Proseguibile',
subagentCount: '{count} sottoagenti',
subagentCountRunning: '{count} sottoagenti · {running} in esecuzione',
subagentThinking: 'In pensiero…',
sideChat: 'Chat laterale (beta)',
sideChatNew: 'Nuova conversazione',
sideChatUntitled: 'Nuova conversazione',
sideChatEmpty: 'Nessuna conversazione laterale',
sideChatEmptyDesc: 'Ogni conversazione laterale è una scheda a sé nella striscia delle schede — eredita il contesto della sessione attuale e non entra mai nella conversazione principale',
sideChatCreating: 'Creazione della conversazione laterale…',
sideChatRetry: 'Riprova',
sideChatThreads: 'Cambia conversazione / nuova',
sideChatSave: 'Salva come nuova sessione',
sideChatSaveTitle: 'Promuove questa conversazione a sessione di primo livello nella lista delle sessioni principali',
sideChatSaved: 'Salvata come nuova sessione',
sideChatNoTurn: 'Il salvataggio è disponibile dopo il primo turno completato',
sideChatPendingDrop: 'L’ultima domanda di follow-up senza risposta non sarà inclusa nella sessione salvata',
sideChatFirstPlaceholder: 'Ponga la prima domanda — contesto ereditato…',
sideChatComposerPlaceholder: 'Ponga un follow-up…',
sideChatThinking: 'Approfondimento…',
sideChatThink: 'Pensiero',
sideChatInjection: 'Contesto iniettato',
sideChatSend: 'Invia',
sideChatCancelTitle: 'Interrompe il turno in corso (il lavoro in coda è conservato)',
sideChatError: 'Errore della chat laterale: {message}',
sideChatTurnUsage: 'Input {input} tok · Output {output} tok',
sideChatBlockCollapse: 'Comprimi',
sideChatBlockCollapseAria: 'Comprimi',
sideChatBlockExpand: 'Espandi {hidden} righe',
sideChatBlockExpandAria: 'Espandi altre {hidden} righe',
sideChatBlockSignal: 'Terminato dal segnale: {signal}',
sideChatBlockExitCode: 'Codice di uscita {code}',
sideChatBlockNoExitCode: "Terminato senza codice di uscita",
sideChatBlockRunning: 'In esecuzione',
sideChatBlockFailed: 'Non riuscito',
sideChatBlockDone: 'Completato',
sideChatBlockNoOutput: '(nessun output)',
codeBlockTitle: 'Blocco di codice',
codeBlockWrap: 'A capo automatico',
codeBlockUnwrap: 'Nessun a capo',
sideChatBlockWindow: '{shown} di {total} righe',
sideChatConnDisconnected: 'Connessione persa',
sideChatConnConnecting: 'Riconnessione…',
sideChatConnRecovered: 'Connessione ripristinata',
sideChatConnReconnectAction: 'Riconnetti ora',
sideChatConnRestartAction: 'Riavvia la connessione',
jobs: 'Attività in background',
jobsCount: '{count} attività in background',
jobsCountRunning: '{count} attività in background · {running} in esecuzione',
jobStatusRunning: 'In esecuzione',
jobStatusStopping: 'Arresto in corso',
jobStatusCompleted: 'Completata',
jobStatusKilled: 'Terminata',
jobStatusFailed: 'Non riuscita',
jobDurationSeconds: '{seconds}s',
jobDurationMinutes: '{minutes}min {seconds}s',
jobDurationHours: '{hours}h {minutes}min',
jobViewOutput: 'Vedi output',
jobNoOutput: 'Nessun output per ora',
jobNotReadYet: 'In attesa che il modello legga questa attività; il suo output compare qui quando il modello esegue job_output',
jobOutputTruncated: 'Output troncato',
jobOutputError: 'Lettura dell’output non riuscita',
jobKill: 'Termina',
jobKillConfirm: 'Faccia di nuovo clic per confermare la terminazione',
jobKillError: 'Terminazione non riuscita',
tasksViewGraph: 'Grafo del workflow',
tasksViewTree: 'Albero',
tasksViewSwitchToGraph: 'Passa al grafo del workflow',
tasksViewSwitchToTree: 'Passa all’albero',
settingsViewModeTitle: 'Vista predefinita della pagina Attività',
settingsViewModeDesc: 'Come si apre la pagina Attività (l’interruttore in pagina permette comunque di cambiare al volo)',
settingsViewModeGraph: 'Grafo del workflow',
settingsViewModeGraphDesc: 'Grafo di nodi a livelli, con zoom e pan',
settingsViewModeTree: 'Albero',
settingsViewModeTreeDesc: 'Albero a rientri classico, navigabile da tastiera',
tasksFoldCompleted: '✓ {count} completati',
tasksFoldOne: 'Raggruppa nei completati',
tasksFoldExpand: 'Espandi i nodi completati',
tasksFoldCollapse: 'Comprimi i nodi completati',
tasksZoomIn: 'Ingrandisci',
tasksZoomOut: 'Riduci',
tasksZoomFit: 'Adatta all’area di disegno',
tasksNodeJump: 'Apri trascrizione',
tasksNodeDetail: 'Dettagli del nodo',
workflowRun: 'Workflow',
tasksNodeState: 'Stato',
tasksNodeMode: 'Modalità',
tasksNodeModel: 'Modello',
tasksNodeTeamRole: 'Ruolo nel team',
tasksNodeActivity: 'Ultima attività',
tasksStateRunning: 'In esecuzione',
tasksStateIdle: 'In attesa',
tasksStateDone: 'Completato',
tasksStateError: 'Errore',
tasksKindSubagent: 'Subagent',
tasksKindTeammate: 'Membro del team',
tasksKindWorkflow: 'Workflow',
teamBoard: 'Bacheca delle attività del team',
teamChip: 'Team {members} membri · {tasks} attività',
teamTasksEmpty: 'Ancora nessuna attività condivisa',
teamTaskCreate: 'Nuova attività',
teamTaskSubject: 'Titolo',
teamTaskDescription: 'Descrizione',
teamTaskOwner: 'Responsabile',
teamTaskUnowned: 'Non assegnata',
teamTaskPending: 'Da fare',
teamTaskInProgress: 'In corso',
teamTaskCompleted: 'Completata',
teamTaskBlocked: 'Bloccata',
teamTaskComplete: 'Completa',
teamTaskReopen: 'Riapri',
teamTaskDelete: 'Elimina',
teamTaskDeleteConfirm: 'Conferma eliminazione',
teamTaskEdit: 'Modifica',
teamTaskSave: 'Salva',
teamTaskCancel: 'Annulla',
teamTaskConflict: 'L’attività è stata modificata da altri; aggiornata',
teamTaskError: 'Operazione non riuscita: {message}',
teamTaskDeleted: 'Eliminata',
teamTaskActions: 'Azioni attività',
teamTaskDetail: 'Dettagli attività',
teamTaskNoDescription: 'Nessuna descrizione — fai clic su «Modifica» per aggiungerne una',
teamTaskBlockedBy: 'Bloccata da',
teamTaskSubjectPlaceholder: 'Descrivi il lavoro in una riga',
teamTaskDescriptionPlaceholder: 'Dettagli aggiuntivi (opzionale)',
teamFilterAll: 'Tutti',
tasksNodeTasks: 'Attività condivise',
jobCopyOutput: 'Copia output',
jobCopied: 'Copiato',
jobFollowTail: 'Segui le ultime righe',
jobDragHint: 'Trascina per spostare',
workflowRunning: 'In corso',
workflowCompleted: 'Completato',
workflowCancelled: 'Annullato',
workflowFailed: 'Non riuscito',
workflowPhaseUnnamed: 'Fase senza nome',
workflowMembers: '{done}/{total} membri',
jobsAutoCollapsed: 'Compresso automaticamente (molti agenti)',
catalogLoadFailed: 'Impossibile caricare {count} branch',
addPluginsTabCard: 'Aggiungi plugin scheda',
addPluginsTabCardDesc: 'Registri una nuova pagina della barra laterale',
addPluginsViewerCard: 'Aggiungi plugin di anteprima',
addPluginsViewerCardDesc: 'Registri un’anteprima di tipo di file',
addPluginsTabDesc: 'Le pagine della barra laterale (schede) possono essere estese dai plugin. I plugin si registrano tramite il servizio ctx.betterSidebar; cliccando Installa viene copiato il comando di installazione — lo incolli in un terminale dove risiede il profilo DSH e lo esegua.',
addPluginsViewerDesc: 'I visualizzatori di file possono essere estesi dai plugin. I plugin si registrano tramite il servizio ctx.betterSidebar; cliccando Installa viene copiato il comando di installazione — lo incolli in un terminale dove risiede il profilo DSH e lo esegua.',
addPluginsBrowseMore: 'Sfogli altri plugin su GitHub (topic: dsh-better-sidebar)',
addPluginsSearch: 'Cerca per nome / descrizione del plugin…',
addPluginsNoMatch: 'Nessun plugin corrispondente',
addPluginsRecommended: 'Plugin consigliati',
addPluginsEmpty: 'Nessun plugin curato per ora — pubblichi il suo sotto il topic GitHub',
openPlugin: 'Apri',
copyInstall: 'Copia comando di installazione',
pluginOfficeDesc: 'Anteprima della suite Office (.docx / .xlsx / .pptx) per l’editor di better-sidebar, tenendo le pesanti librerie di rendering Office fuori dal bundle principale, installabili su richiesta',
pluginFlowglassDesc: 'Diagramma di flusso live della sessione con tre corsie per utente, assistente e chiamate agli strumenti, più gruppi paralleli, rami dei sottoagenti, drill-down e stato in tempo reale; registra una scheda nativa Flowglass quando better-sidebar è installato e mantiene il suo cassetto autonomo come fallback',
pluginGitForgeDesc: 'Scheda Git Forge: libreria di account GitHub/Gitea (e altri forge) + concessioni per progetto + blocco rigido della politica di push; i token restano nei segreti locali (mai nel contesto del modello); strumento GitForge in sola lettura e helper di credenziali HTTPS per l’agente',
pluginGithubWorkbenchDesc: 'Scheda GitHub Workbench: albero del repository remoto + Issues / Pull requests / Actions con pieno supporto in scrittura — creazione di issue/PR, commenti, modifica, chiusura/riapertura, merge squash·merge·rebase (conferma rafforzata), riavvio/annullamento della CI; il selettore dei repository elenca automaticamente quelli accessibili e cerca tra quelli pubblici; senza better-sidebar esegue il fallback a un pannello laterale destro indipendente',
pluginMdExportDesc: 'Aggiunge un pulsante «Esporta» alla barra degli strumenti Markdown di better-sidebar: con un clic esegue il rendering del .md corrente in HTML autonomo (tabelle/blocchi di codice/diagrammi Mermaid in linea, layout fedele al tema di anteprima) e lo salva accanto al .md, oppure esporta in PDF tramite la finestra di stampa',
pluginCodeNavDesc: 'Navigazione dell’anteprima del codice: rileva il linguaggio dal tipo di file ed evidenzia la sintassi, struttura dei simboli (filtri classi/metodi/variabili + salto con un clic) e ricerca nel file (tutte le corrispondenze evidenziate, precedente/successiva, maiuscole/minuscole) — gestisce l’anteprima dei file di codice nell’editor better-sidebar',
pluginSuhuangScrollDesc: 'Collega il Runtime Suhuang Scroll locale alle impostazioni DSH e a better-sidebar per configurare il modello, testare la connessione e controllare la correzione continua; richiede Suhuang Scroll Runtime e dsh-better-sidebar',
pluginBetterOverleafDesc: 'Tab Overleaf per better-sidebar: accesso diretto tramite browser CDP (supporta Chromium di terze parti), elenco/cambio progetti, mirror git locali in <workspace>/overleaf/, sincronizzazione git bidirezionale con fallback API di sola lettura e anteprima dei file tramite la workbench della barra laterale',
pluginGitRemotesDesc: 'Scheda Git Remotes: rami/upstream/ahead-behind, fetch (prune opzionale), pull ff-only e push solo dopo una conferma nella scheda. Non sostituisce la scheda stage/commit integrata di Git, e non offre force-push o uno strumento di push automatico del modello',
pluginSentinelDesc: 'Sistema di risveglio dell’agente guidato da condizioni: sensori file/processo/porta/HTTP/comando/webhook risvegliano le sessioni dormienti quando le condizioni si verificano; registra una scheda «Sentinella» con la tabella di monitoraggio globale del server',
pluginServerDeckDesc: 'Dashboard a schede dei server: una scheda per host con stato online, OS, uptime, utilizzo CPU/RAM/disco e latenza; clicca una scheda per aprire un terminale interattivo xterm.js; importazione del ~/.ssh/config con un clic (gli alias di hosting Git vengono saltati). Registra la scheda nativa «Server» quando better-sidebar è installato, altrimenti mantiene il pannello laterale autonomo',
pluginSidebarQaDesc: 'Selezione e domanda: selezioni il testo della conversazione → ponga la domanda nel pannello a destra → una sessione di follow-up dedicata (❓ follow-up) nello stesso spazio di lavoro; un modello veloce senza pensiero comprime il contesto principale e lo inietta con la citazione, senza interrompere la conversazione principale. I follow-up si annidano, proseguono e si archiviano',
pluginSidenoteDesc: 'Side chat in stile Codex + annotazioni da selezione: esegui il fork della sessione corrente in un pannello laterale persistente (archiviata e nascosta dall’elenco delle sessioni, più istanze, comando /side, sopravvive al reload, il modello segue la sessione principale); seleziona il testo dell’assistant → badge numerato + editor di note → un chip "N annotazioni" che viaggia con il tuo prossimo messaggio, oppure chiedi direttamente in una side chat',
pluginSshTunnelDesc: 'Scheda SSH Tunnel: inventario multi-host + concessioni per progetto + chiavi locali; strumento SSHManager per il modello (exec/SFTP/strategie di sessione); terminale interattivo centrale e SFTP a due pannelli',
pluginTurnReviewDesc: 'Una porta umana sul diff del turno appena concluso: Approve / Request changes per percorso con un commento facoltativo; percorsi raggruppati per sessione principale / sottoagente / non attribuito; diff snapshot-vs-ora in linea prima di decidere. Nessun fork, nessun /rewind',
pluginVideoPreviewDesc: 'Anteprima video in linea nell’editor di better-sidebar (.mp4/.webm/.mov/.mkv/.avi ecc.), supportata da una route host /video dedicata con supporto HTTP Range (206) — la barra di scorrimento funziona e i file non sono limitati dal mediaLimit di 20MB',
pluginDocsPanelDesc: 'Documenti globali nella barra laterale di DSH: legga le sue note Markdown da qualsiasi spazio di lavoro — una lista di file, una struttura, apertura in Chrome / VS Code e pulsanti di copia; la directory dei documenti è configurabile (predefinita ~/.dsh/docs)',
pluginEgoBrowserDesc: 'Il browser agente per DeepSeek Harness: 32 strumenti ego_* pilotano un vero Chromium; una scheda nativa «ego browser» nella barra laterale mostra in tempo reale ogni pagina visitata dall’agente — puoi cliccare, trascinare e digitare per prendere il controllo. Registra la scheda automaticamente se better-sidebar è presente, altrimenti una bolla flottante',
pluginBilingualReaderDesc: 'Leggi PDF nella barra laterale DSH: visualizzazione PDF nativa, seleziona il testo per tradurlo con l’LLM, con contesto e completamente isolato dalla conversazione principale',
changesRedactOn: "Mascheramento attivo: i segreti appaiono come [REDACTED]; clicca per disattivare (a tuo rischio)",
changesRedactOff: "Mascheramento disattivo: il contenuto appare invariato; clicca per attivare",
changesRedactOnLabel: "Mascheramento",
changesRedactOffLabel: "Senza mascheramento",
changesRedactBanner: "Mascherato",
pluginSentinelName: 'dsh-sentinel Sistema di riattivazione',
pluginEgoBrowserName: 'ego-browser Browser dell’agente',
pluginBetterOverleafName: 'dsh-better-overleaf Scheda Overleaf',
pluginDocsPanelName: 'dsh-docs-panel Documenti globali',
pluginFlowglassName: 'dsh-flowglass Flowglass',
pluginGitForgeName: 'dsh-git-forge Credenziali Git',
pluginGitRemotesName: 'dsh-git-remotes Remote Git',
pluginGithubWorkbenchName: 'dsh-github-workbench Banco di lavoro GitHub',
pluginSidebarQaName: 'dsh-sidebar-qa Seleziona e chiedi',
pluginSidenoteName: 'dsh-sidenote Chat laterale',
pluginServerDeckName: 'dsh-server-deck Ponte server',
pluginSuhuangScrollName: 'dsh-suhuang-scroll Suhuang Scroll',
pluginSshTunnelName: 'dsh-ssh-tunnel Tunnel SSH',
pluginTurnReviewName: 'dsh-turn-review Revisione del turno',
pluginBilingualReaderName: 'dsh-bilingual-reader Lettore bilingue',
pluginOfficeName: 'Anteprima Office',
pluginMdExportName: 'Esportazione Markdown',
pluginCodeNavName: 'Navigatore anteprima codice',
pluginVideoPreviewName: 'Anteprima video',
presetDshDesktopDesc: 'Modalità avanzata Electron (senza bordi): macOS riserva 20px in alto; Windows riserva 32px per la barra del titolo quando WCO non è disponibile',
}