@nac3/forge-cli 1.0.55 → 1.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -230,5 +230,296 @@
230
230
  "panel.files.empty": "(nessun file)",
231
231
  "panel.files.truncated": "(elenco troncato)",
232
232
  "panel.files.opened": "Aperto",
233
- "panel.files.openFailed": "Impossibile aprire il file."
233
+ "panel.files.openFailed": "Impossibile aprire il file.",
234
+ "startup.tab.tasks": "Attivita",
235
+ "settings.bridge.title": "Coordinamento tra istanze",
236
+ "settings.bridge.accept": "Accetta messaggi diretti da altre istanze (iniettati come chat)",
237
+ "settings.bridge.composePlaceholder": "Messaggio alle altre istanze...",
238
+ "settings.voice.title": "Voce",
239
+ "settings.voice.mode": "Modalita",
240
+ "settings.voice.modeMic": "modalita mic",
241
+ "settings.voice.stt": "STT",
242
+ "settings.voice.sttBrowser": "STT browser",
243
+ "settings.voice.ttsEngine": "Motore TTS",
244
+ "settings.voice.ttsBrowser": "TTS browser",
245
+ "settings.voice.ttsVoice": "Voce TTS (solo Google)",
246
+ "settings.vad.title": "VAD (rilevamento del silenzio)",
247
+ "settings.vad.resetDefaults": "Ripristina predefiniti",
248
+ "settings.vad.engine": "Motore",
249
+ "settings.vad.engineAmplitude": "Ampiezza (RMS)",
250
+ "settings.vad.engineBand": "Banda 80-400Hz",
251
+ "settings.vad.baselineWindow": "Finestra baseline",
252
+ "settings.vad.thresholdMult": "Mult. soglia (baseline x N)",
253
+ "settings.vad.thresholdMin": "Soglia minima",
254
+ "settings.vad.thresholdMax": "Soglia massima",
255
+ "settings.vad.silence": "Silenzio per chiudere",
256
+ "settings.vad.minVoiced": "Voce minima (anti-blip)",
257
+ "settings.vad.tick": "Tick del VAD",
258
+ "settings.vad.bandLow": "Banda voce: low (Hz)",
259
+ "settings.vad.bandHigh": "Banda voce: high (Hz)",
260
+ "settings.vad.showOverlay": "Mostra overlay live",
261
+ "settings.vad.logStats": "Registra stat per sessione",
262
+ "settings.brain.anthropicMode": "Anthropic: modalita",
263
+ "settings.brain.modePlan": "Plan (abbonamento Claude)",
264
+ "settings.brain.modeConsole": "Console (API key)",
265
+ "settings.brain.modeNote": "Si applica alla riapertura del pannello.",
266
+ "settings.brain.ecoEnabled": "Modalita eco abilitata",
267
+ "settings.brain.ecoHint": "spento = sempre frontier",
268
+ "settings.brain.modelEco": "Modello eco",
269
+ "settings.brain.modelFrontier": "Modello frontier",
270
+ "settings.brain.modelMultimodal": "Modello multimodal",
271
+ "settings.brain.multimodalClearTitle": "Rimuovi il brain multimodal dedicato (torna al routing della vision automatico)",
272
+ "settings.brain.auto": "Auto",
273
+ "settings.brain.multimodalHint": "Brain dedicato per i turni con immagine. Auto = routing della vision automatico (il frontier se vede, altrimenti un avviso).",
274
+ "settings.brain.geminiCache": "Cache esplicita di Gemini (CachedContent)",
275
+ "settings.brain.geminiCacheHint": "Opt-in. Utile nelle sessioni lunghe con Gemini Pro; nelle sessioni brevi la cache implicita gratuita di 2.5 basta.",
276
+ "settings.federation.title": "Federazione di brain",
277
+ "settings.federation.intro": "Usa il brain di un altro Forge (la sua key non lascia mai la sua macchina) o presta il tuo. Il tuo codice gira in locale; viaggia solo l'inferenza.",
278
+ "settings.federation.connectedTo": "Connesso a",
279
+ "settings.federation.disconnect": "Disconnetti",
280
+ "settings.federation.connectMe": "Connettimi",
281
+ "settings.federation.tokenPlaceholder": "Incolla il codice di federazione",
282
+ "settings.federation.connect": "Connetti",
283
+ "settings.federation.lendBrain": "Presta il mio brain",
284
+ "settings.federation.generateCode": "Genera codice",
285
+ "settings.federation.host": "Ospita (rispondi ai figli)",
286
+ "settings.federation.fedBrain": "Brain di federazione",
287
+ "settings.federation.fedBrainNote": "Quello che risponde ai figli. API diretta (DeepSeek per default). Claude Plan non serve per ospitare; serve una key con saldo.",
288
+ "settings.federation.codeOnce": "Codice (uso singolo)",
289
+ "settings.federation.copy": "Copia",
290
+ "settings.keys.title": "API keys (BYOK)",
291
+ "settings.keys.configure": "Configura",
292
+ "settings.keys.remove": "Rimuovi",
293
+ "settings.keys.brainAnthropic": "Brain (Anthropic)",
294
+ "settings.keys.brainOpenai": "Brain (OpenAI)",
295
+ "settings.keys.brainGoogle": "Brain (Google IA)",
296
+ "settings.keys.brainDeepseek": "Brain (DeepSeek)",
297
+ "settings.keys.brainXai": "Brain (xAI / Grok)",
298
+ "settings.keys.brainMistral": "Brain (Mistral)",
299
+ "settings.keys.brainCohere": "Brain (Cohere)",
300
+ "settings.keys.sttGoogle": "STT Google",
301
+ "settings.keys.ttsGoogle": "TTS Google",
302
+ "settings.keys.ttsElevenlabs": "TTS ElevenLabs",
303
+ "settings.keys.sttWhisper": "STT Whisper",
304
+ "settings.lang.title": "Lingua",
305
+ "settings.lang.panelVoice": "Pannello + voce",
306
+ "settings.lang.changeButton": "Cambia lingua",
307
+ "settings.vault.title": "Vault (criptato)",
308
+ "settings.vault.slots": "Slot",
309
+ "settings.vault.open": "Apri vault",
310
+ "settings.license.email": "Email",
311
+ "settings.license.validated": "Validato",
312
+ "settings.license.connectHint": "Connetti il tuo account Polar. Inserisci l'email con cui hai pagato e sincronizziamo il tuo piano automaticamente.",
313
+ "settings.license.emailPlaceholder": "email@esempio.com",
314
+ "settings.license.connect": "Connetti",
315
+ "settings.license.sync": "Sincronizza con Polar",
316
+ "settings.license.buy": "Acquista / attiva piano",
317
+ "settings.budget.title": "Budget di questo mese",
318
+ "settings.budget.renews": "Si rinnova",
319
+ "settings.budget.tokensEco": "Token eco",
320
+ "settings.budget.tokensFrontier": "Token frontier",
321
+ "settings.budget.buyExtension": "Acquista estensione di token",
322
+ "settings.limits.title": "Limiti (avanzato)",
323
+ "settings.limits.editHint": "Modifica qualsiasi valore + tab/blur salva.",
324
+ "settings.limits.reset": "Ripristina predefiniti",
325
+ "settings.bookmarks.title": "Segnalibri del Reader",
326
+ "settings.graph.title": "Grafo della conoscenza del progetto",
327
+ "settings.pair.title": "Collega il telefono",
328
+ "settings.pair.hint": "Apri Forge Mobile, tocca \"Collega\" e scansiona questo QR. Fatto.",
329
+ "settings.pair.generateQr": "Genera QR",
330
+ "settings.pair.cantRead": "La fotocamera non legge il QR? Copia questo codice e incollalo in Forge Mobile:",
331
+ "settings.audit.viewFull": "Vedi tutto",
332
+ "settings.audit.close": "Chiudi",
333
+ "settings.audit.allKinds": "Tutti i kinds",
334
+ "settings.audit.allModes": "Tutti i modes",
335
+ "settings.audit.copyJson": "Copia JSON",
336
+ "settings.audit.closeDetail": "Chiudi dettaglio",
337
+ "settings.about.title": "Informazioni",
338
+ "settings.danger.title": "Zona di pericolo",
339
+ "settings.danger.warning": "Quando ON, Yujin esegue OGNI azione senza chiedere conferma (incluso shell.exec, rm, git push --force, ecc). Velocita prima della sicurezza. Tutto viene registrato nell'audit log.",
340
+ "settings.keyEditor.placeholder": "Incolla qui la tua API key",
341
+ "settings.license.title": "Licenza",
342
+ "settings.plan": "Piano",
343
+ "settings.audit.title": "Registro di audit",
344
+ "settings.legal.title": "Note legali",
345
+ "panel.status.projectSwitchFail": "Impossibile cambiare progetto.",
346
+ "panel.status.projectRemoveFail": "Impossibile rimuovere il progetto.",
347
+ "panel.status.projectAddFail": "Impossibile aggiungere il progetto.",
348
+ "panel.status.cancelFail": "Impossibile annullare: {reason}",
349
+ "panel.status.cancelNetError": "Errore di rete durante l'annullamento della shell.",
350
+ "panel.status.notEditable": "Questo tipo di contenuto non e modificabile.",
351
+ "panel.status.savedAsPicker": "Salvato come: {name} (nel percorso scelto nella finestra di dialogo).",
352
+ "panel.status.saveAsFail": "Errore in Salva come: {error} -- uso del fallback.",
353
+ "panel.status.saveFail": "Errore durante il salvataggio: {error}",
354
+ "panel.status.savedAs": "Salvato come: {path} ({bytes} byte)",
355
+ "panel.status.netError": "Errore di rete: {error}",
356
+ "panel.status.savedTabOnly": "Modifiche salvate nella scheda (non su disco -- senza file_path).",
357
+ "panel.status.saved": "Salvato: {path} ({bytes} byte)",
358
+ "panel.status.copied": "Copiato negli appunti.",
359
+ "panel.status.copyFail": "Impossibile copiare.",
360
+ "panel.status.modeAvailable": "Modalita disponibili: didactico, tecnico. Uso: /modo tecnico",
361
+ "panel.status.modeChangeFail": "Impossibile cambiare modalita: {error}",
362
+ "panel.status.modeChanged": "Modalita cambiata in {target}. Il prossimo turno usa gia questa modalita.",
363
+ "panel.status.genericError": "Errore: {error}",
364
+ "panel.status.brainTierAuto": "Brain tier di nuovo su auto (il router decide in base a verbo / fase).",
365
+ "panel.status.brainTierForced": "Brain tier forzato a \"{target}\" per questa sessione. /auto torna al router.",
366
+ "panel.confirm.tabUnsaved": "La scheda \"{title}\" ha modifiche non salvate. Chiudere comunque?",
367
+ "panel.confirm.tabsUnsaved": "Ci sono schede con modifiche non salvate. Chiudere tutto comunque?",
368
+ "panel.confirm.discardChanges": "Annullare le modifiche non salvate?",
369
+ "panel.confirm.removeSlot": "Rimuovere lo slot \"{slot}\"? L'operazione non puo essere annullata.",
370
+ "panel.confirm.removeKey": "Rimuovere la key di {slot}?",
371
+ "panel.prompt.saveAs": "Salva come (percorso relativo al progetto):",
372
+ "panel.voice.sttFallback": "STT del browser non disponibile; uso del fallback lato server.",
373
+ "panel.voice.noMicSupport": "Il tuo browser non supporta l'accesso al microfono.",
374
+ "panel.voice.recordingCountdown": "Registrazione... stop automatico tra {n}s",
375
+ "panel.voice.autoStopped": "Registrazione interrotta automaticamente a 55s (limite di 1 min di Google STT). Prova qualcosa di piu breve.",
376
+ "panel.voice.noAudio": "Nessun audio acquisito. Riprova.",
377
+ "panel.voice.audioTooLong": "Audio troppo lungo (>1 min). Limite sincrono di Google STT. Prova qualcosa di piu breve.",
378
+ "panel.voice.ttsUnavailable": "TTS del browser non disponibile; torna a Google nelle impostazioni.",
379
+ "panel.voice.micClosedHalfDuplex": "Mic chiuso mentre Yujin parla (half-duplex).",
380
+ "panel.voice.micBlocked": "Microfono bloccato. Consenti il microfono per questa app nelle impostazioni del browser e riprova.",
381
+ "panel.voice.noMicDevice": "Nessun microfono rilevato su questo dispositivo.",
382
+ "panel.voice.micOpenFail": "Impossibile aprire il microfono: {error}",
383
+ "panel.voice.micOpenListening": "Mic aperto, in ascolto...",
384
+ "panel.voice.listening": "Ti ascolto...",
385
+ "panel.voice.listeningInterim": "Ti ascolto... {text}",
386
+ "panel.voice.micBlockedBrowser": "Microfono bloccato dal browser. Fai clic sull'icona del lucchetto nella barra degli URL e consenti il microfono, poi ricarica la pagina. Oppure cambia STT in \"google\" / \"whisper\" nelle impostazioni se hai la API key.",
387
+ "panel.voice.noMicPhysical": "Nessun microfono fisico rilevato. Collegane uno o cambia STT in \"google\" / \"whisper\" nelle impostazioni.",
388
+ "panel.voice.networkRequired": "Web Speech richiede una connessione a internet (Chrome usa Google dietro le quinte). Prova senza connessione intermittente o cambia STT in \"whisper\" se hai la API key.",
389
+ "panel.voice.langNotSupported": "Il tuo browser non supporta questa lingua per lo STT. Cambia la lingua del pannello con una supportata (en, es, pt) o cambia STT in \"google\" / \"whisper\".",
390
+ "panel.voice.micError": "Errore mic: {error}",
391
+ "panel.voice.noAudioToRecognizer": "Nessun audio e arrivato al riconoscitore: la dettatura del browser non sta acquisendo in questa app.",
392
+ "panel.voice.micOpenNoVoice": "Mic aperto ma nessuna voce rilevata. Avvicinati al microfono e parla piu forte; se continua, la dettatura gratuita non funziona in questa PWA.",
393
+ "panel.voice.voiceNoText": "Voce rilevata ma il browser non ha restituito testo (STT gratuito non disponibile in questa PWA).",
394
+ "panel.voice.startingDictation": "Avvio della dettatura...",
395
+ "panel.voice.couldNotStartMic": "Impossibile avviare il mic: {error}",
396
+ "panel.status.imageTooLarge": "Immagine troppo grande (>6MB): {name}",
397
+ "panel.status.imageReady": "Immagine pronta per l'invio: {name}",
398
+ "panel.status.imageReadFail": "Impossibile leggere l'immagine: {error}",
399
+ "panel.tip.attachFile": "Allega file",
400
+ "panel.tip.refreshDiscovery": "Aggiorna discovery",
401
+ "panel.tip.refreshNow": "Aggiorna ora",
402
+ "panel.tip.filterByProject": "Filtra per progetto",
403
+ "panel.tip.concurrentRuns": "Esecuzioni concorrenti: limiti globale / per progetto",
404
+ "panel.tip.mcpBridges": "MCP Bridges (F101)",
405
+ "panel.tip.activity": "Attivita agenti + ispettore bridge + chat per agente",
406
+ "panel.tip.settings": "Impostazioni (modalita voce, STT, TTS, chiavi, lingua)",
407
+ "panel.tip.zoomOut": "Riduci zoom (Ctrl -)",
408
+ "panel.tip.zoomReset": "Reimposta zoom (Ctrl 0)",
409
+ "panel.tip.zoomIn": "Aumenta zoom (Ctrl +)",
410
+ "panel.tip.maximize": "Massimizza / ripristina (schermo intero)",
411
+ "panel.tip.closeBoard": "Chiudi l'intera lavagna",
412
+ "panel.tip.openInEditor": "Apri nel mio editor",
413
+ "panel.tip.open": "Apri",
414
+ "panel.tip.saveAs": "Salva come -- scegli un nuovo percorso (relativo al progetto)",
415
+ "panel.tip.codeModeDetail": "Dettagliato: file, diff e comandi in tempo reale",
416
+ "panel.tip.codeModeZen": "Sumi-e: arte con testo occasionale",
417
+ "panel.tip.cancelShell": "Annulla comando shell",
418
+ "panel.tip.closeTab": "Chiudi scheda",
419
+ "panel.tip.reopenNativeTabs": "Riapri le schede native chiuse",
420
+ "panel.tip.notTestedYet": "non ancora testato",
421
+ "panel.aria.activity": "Attivita",
422
+ "panel.aria.settings": "Impostazioni",
423
+ "panel.aria.zoomOut": "Riduci zoom",
424
+ "panel.aria.zoomIn": "Aumenta zoom",
425
+ "panel.aria.maximize": "Massimizza",
426
+ "panel.aria.closeBoard": "chiudi tutto",
427
+ "panel.aria.thinking": "sto pensando",
428
+ "panel.hint.boardEmpty": "I contenuti strutturati appaiono qui: codice, tabelle, documenti. Chiedi a Yujin di scrivere o modificare qualcosa.",
429
+ "panel.hint.planMode": "Sei in modalita Plan (abbonamento). La lavagna viene disegnata quando il brain gira in modalita API: cambiala in <strong>Impostazioni &gt; Brain &gt; Anthropic: modalita &gt; Console</strong> e riapri il pannello.",
430
+ "panel.hint.bookmarksEmpty": "Nessun bookmark. Chiedi a Yujin \"segna questo punto come ...\" mentre leggi un documento.",
431
+ "panel.voice.replyFailed": "Risposta vocale non riuscita: {err}",
432
+ "panel.voice.replyError": "Errore nella risposta vocale: {err}",
433
+ "panel.status.languageSwitchFailed": "Cambio lingua non riuscito: {err}",
434
+ "panel.status.languageListFailed": "Impossibile caricare la lista delle lingue",
435
+ "panel.legal.loading": "Caricamento...",
436
+ "panel.legal.loadError": "Errore {status} nel caricamento del documento.",
437
+ "panel.legal.networkError": "Errore di rete: {err}",
438
+ "panel.legal.defaultTitle": "Note legali",
439
+ "panel.feedback.copied": "Copiato",
440
+ "panel.feedback.copyFailed": "Copia non riuscita",
441
+ "panel.feedback.clipboardUnavailable": "Appunti non disponibili",
442
+ "panel.feedback.saving": "Salvataggio...",
443
+ "panel.feedback.saved": "Salvato.",
444
+ "panel.feedback.saveError": "errore di salvataggio",
445
+ "panel.feedback.netError": "errore di rete",
446
+ "panel.feedback.netErrorSaving": "errore di rete nel salvataggio",
447
+ "panel.feedback.errorPrefix": "Errore: {detail}",
448
+ "panel.pair.generating": "Generazione...",
449
+ "panel.pair.generateQr": "Genera QR",
450
+ "panel.pair.copy": "Copia",
451
+ "panel.pair.expiry": "Scade tra ~{mins} min. Rigeneralo se scade.",
452
+ "panel.pair.qrNetError": "Errore di rete nella generazione del QR.",
453
+ "panel.audit.copyJson": "Copia JSON",
454
+ "panel.limits.resetApplied": "Ripristino ai valori predefiniti applicato",
455
+ "panel.nac3.effects": "Effetti: {list}",
456
+ "panel.nac3.effectsUnknown": "sconosciuti",
457
+ "panel.nac3.cancel": "Annulla",
458
+ "panel.nac3.reject": "Rifiuta",
459
+ "panel.nac3.approve": "Approva",
460
+ "panel.nac3.approveDestructive": "Approva (distruttivo)",
461
+ "panel.nac3.executing": "Esecuzione...",
462
+ "panel.tts.providerBrowser": "TTS browser",
463
+ "panel.tts.providerGoogle": "TTS Google",
464
+ "panel.tts.providerTitle": "Clicca per alternare tra browser (SpeechSynthesis nativo, voci del SO) e Google Cloud TTS (lato server).",
465
+ "panel.stt.providerBrowser": "STT browser",
466
+ "panel.stt.providerGoogle": "STT Google",
467
+ "panel.stt.providerWhisper": "STT Whisper",
468
+ "panel.stt.providerTitle": "Clicca per alternare tra browser (veloce + es-AR nativo + gratis), Google Cloud STT (lato server, BYOK) o Whisper (lato server, BYOK).",
469
+ "panel.tts.voiceTitle": "Voce attuale: {id} / {persona} ({gender}) -- {style}. Clicca per scorrere. Studio = articola la s chiara; Neural2 = spagnolo naturale (aspira le s finali).",
470
+ "panel.license.lendNeedsLicense": "attiva la licenza per prestare il tuo brain",
471
+ "panel.license.emailInvalid": "Inserisci un email valida (con @).",
472
+ "panel.license.connecting": "Connessione...",
473
+ "panel.license.savingEmail": "Salvataggio email + sincronizzazione con Polar...",
474
+ "panel.license.syncFailedRetry": "Email salvata, ma il sync e fallito: {err}{http}. Se hai appena pagato, attendi 1-2 min e premi \"Sincronizza con Polar\".",
475
+ "panel.license.planOk": "OK -- piano: {plan}.",
476
+ "panel.license.netError": "Errore di rete: {err}",
477
+ "panel.license.syncing": "Sincronizzazione...",
478
+ "panel.license.querying": "Interrogazione del server...",
479
+ "panel.license.syncError": "Errore di sync: {err}{http}",
480
+ "panel.license.planUnchanged": "Piano invariato: {plan}",
481
+ "panel.license.planUpdated": "Piano aggiornato: {before} -> {after}",
482
+ "panel.license.syncWithPolar": "Sincronizza con Polar",
483
+ "panel.license.errorWithCode": "errore: {code}",
484
+ "panel.keyEditor.keyTooShort": "Key troppo corta (min 8 caratteri).",
485
+ "panel.bridge.coordUnavailable": "Coordinamento non disponibile.",
486
+ "panel.bridge.statusUnavailable": "non disponibile",
487
+ "panel.mcp.loadingBridges": "Caricamento bridge...",
488
+ "panel.tools.loading": "Caricamento tool...",
489
+ "panel.agentsChat.backPairs": "< Coppie",
490
+ "panel.agentsChat.noMessages": "Nessun messaggio in questa coppia.",
491
+ "panel.agentsChat.noAgents": "nessun agente",
492
+ "panel.agentsChat.pickAgent": "Scegli un agente + scrivi del testo prima di inviare.",
493
+ "panel.agentsChat.sending": "Invio...",
494
+ "panel.agentsChat.errorGeneric": "Errore: {err}",
495
+ "panel.whatsNew.dismiss": "Chiudi",
496
+ "panel.alert.noEditor": "Nessun editor nel PATH. Copia il percorso: {path}",
497
+ "panel.alert.pathRelative": "Il percorso deve essere relativo al progetto (senza \"/\" iniziale ne \"..\").",
498
+ "panel.tip.saveTo": "Salva in {path}",
499
+ "panel.tip.saveToMemory": "(memoria)",
500
+ "panel.button.saveAs": "Salva come...",
501
+ "panel.aria.concurrentRuns": "Esecuzioni concorrenti",
502
+ "panel.activity.allProjects": "Tutti i progetti",
503
+ "panel.activity.loadingFeed": "Caricamento feed...",
504
+ "panel.feedback.savedShort": "salvato",
505
+ "panel.pair.qrFailed": "Impossibile generare il QR.",
506
+ "panel.brain.modePlan": "Plan (abbonamento)",
507
+ "panel.brain.modeConsole": "Console (API key)",
508
+ "panel.brain.applying": "applicazione di {mode}...",
509
+ "panel.brain.applied": "{mode} applicato. Il prossimo turno usa gia questa modalita.",
510
+ "panel.brain.reopenHint": "Si applica alla riapertura del pannello.",
511
+ "panel.brain.active": "{mode} attivo",
512
+ "panel.bridge.roleHost": "host",
513
+ "panel.bridge.roleClient": "client",
514
+ "panel.bridge.instanceOne": "istanza",
515
+ "panel.bridge.instanceMany": "istanze",
516
+ "panel.bridge.you": "tu",
517
+ "panel.tip.deleteTask": "Elimina attivita",
518
+ "panel.tasks.cmdPlaceholder": "comando (es: pnpm install)...",
519
+ "panel.readAloud.code": "Codice",
520
+ "panel.readAloud.codeLang": "Codice in {lang}",
521
+ "panel.readAloud.file": "File {file}",
522
+ "panel.readAloud.content": "Contenuto: {content}",
523
+ "panel.pizarron.tabOne": "scheda",
524
+ "panel.pizarron.tabMany": "schede"
234
525
  }
@@ -230,5 +230,296 @@
230
230
  "panel.files.empty": "(ファイルなし)",
231
231
  "panel.files.truncated": "(リストは省略されています)",
232
232
  "panel.files.opened": "開きました",
233
- "panel.files.openFailed": "ファイルを開けませんでした。"
233
+ "panel.files.openFailed": "ファイルを開けませんでした。",
234
+ "startup.tab.tasks": "タスク",
235
+ "settings.bridge.title": "インスタンス間の調整",
236
+ "settings.bridge.accept": "他のインスタンスからの指定メッセージを受け入れる(チャットとして挿入)",
237
+ "settings.bridge.composePlaceholder": "他のインスタンスへのメッセージ...",
238
+ "settings.voice.title": "音声",
239
+ "settings.voice.mode": "モード",
240
+ "settings.voice.modeMic": "マイクモード",
241
+ "settings.voice.stt": "STT",
242
+ "settings.voice.sttBrowser": "STT ブラウザ",
243
+ "settings.voice.ttsEngine": "TTS エンジン",
244
+ "settings.voice.ttsBrowser": "TTS ブラウザ",
245
+ "settings.voice.ttsVoice": "TTS 音声(Google のみ)",
246
+ "settings.vad.title": "VAD(無音検出)",
247
+ "settings.vad.resetDefaults": "デフォルトに戻す",
248
+ "settings.vad.engine": "エンジン",
249
+ "settings.vad.engineAmplitude": "振幅(RMS)",
250
+ "settings.vad.engineBand": "帯域 80-400Hz",
251
+ "settings.vad.baselineWindow": "ベースライン窓",
252
+ "settings.vad.thresholdMult": "閾値倍率(ベースライン x N)",
253
+ "settings.vad.thresholdMin": "最小閾値",
254
+ "settings.vad.thresholdMax": "最大閾値",
255
+ "settings.vad.silence": "終了する無音時間",
256
+ "settings.vad.minVoiced": "最小発話(アンチブリップ)",
257
+ "settings.vad.tick": "VAD のティック",
258
+ "settings.vad.bandLow": "音声帯域: low (Hz)",
259
+ "settings.vad.bandHigh": "音声帯域: high (Hz)",
260
+ "settings.vad.showOverlay": "ライブオーバーレイを表示",
261
+ "settings.vad.logStats": "セッションごとの統計を記録",
262
+ "settings.brain.anthropicMode": "Anthropic: モード",
263
+ "settings.brain.modePlan": "Plan(Claude サブスク)",
264
+ "settings.brain.modeConsole": "Console(API key)",
265
+ "settings.brain.modeNote": "パネルを再度開くと適用されます。",
266
+ "settings.brain.ecoEnabled": "eco モード有効",
267
+ "settings.brain.ecoHint": "オフ = 常に frontier",
268
+ "settings.brain.modelEco": "eco モデル",
269
+ "settings.brain.modelFrontier": "frontier モデル",
270
+ "settings.brain.modelMultimodal": "multimodal モデル",
271
+ "settings.brain.multimodalClearTitle": "専用 multimodal brain を削除(自動ビジョンルーティングに戻る)",
272
+ "settings.brain.auto": "自動",
273
+ "settings.brain.multimodalHint": "画像付きターン用の専用 brain。自動 = 自動ビジョンルーティング(frontier が見えればそれを、見えなければ通知)。",
274
+ "settings.brain.geminiCache": "Gemini の明示的キャッシュ(CachedContent)",
275
+ "settings.brain.geminiCacheHint": "オプトイン。Gemini Pro での長いセッションに有効。短いセッションでは 2.5 の無料の暗黙キャッシュで十分。",
276
+ "settings.federation.title": "brain のフェデレーション",
277
+ "settings.federation.intro": "別の Forge の brain を使う(その key はマシンから出ない)か、自分のものを貸す。コードはローカルで実行され、推論だけが移動する。",
278
+ "settings.federation.connectedTo": "接続先",
279
+ "settings.federation.disconnect": "切断",
280
+ "settings.federation.connectMe": "接続する",
281
+ "settings.federation.tokenPlaceholder": "フェデレーションコードを貼り付け",
282
+ "settings.federation.connect": "接続",
283
+ "settings.federation.lendBrain": "自分の brain を貸す",
284
+ "settings.federation.generateCode": "コードを生成",
285
+ "settings.federation.host": "ホストする(子に応答)",
286
+ "settings.federation.fedBrain": "フェデレーションの brain",
287
+ "settings.federation.fedBrainNote": "子に応答するもの。直接 API(デフォルトは DeepSeek)。Claude Plan はホストに使えない。残高のある key が必要。",
288
+ "settings.federation.codeOnce": "コード(1回限り)",
289
+ "settings.federation.copy": "コピー",
290
+ "settings.keys.title": "API keys(BYOK)",
291
+ "settings.keys.configure": "設定",
292
+ "settings.keys.remove": "削除",
293
+ "settings.keys.brainAnthropic": "Brain(Anthropic)",
294
+ "settings.keys.brainOpenai": "Brain(OpenAI)",
295
+ "settings.keys.brainGoogle": "Brain(Google AI)",
296
+ "settings.keys.brainDeepseek": "Brain(DeepSeek)",
297
+ "settings.keys.brainXai": "Brain(xAI / Grok)",
298
+ "settings.keys.brainMistral": "Brain(Mistral)",
299
+ "settings.keys.brainCohere": "Brain(Cohere)",
300
+ "settings.keys.sttGoogle": "STT Google",
301
+ "settings.keys.ttsGoogle": "TTS Google",
302
+ "settings.keys.ttsElevenlabs": "TTS ElevenLabs",
303
+ "settings.keys.sttWhisper": "STT Whisper",
304
+ "settings.lang.title": "言語",
305
+ "settings.lang.panelVoice": "パネル + 音声",
306
+ "settings.lang.changeButton": "言語を変更",
307
+ "settings.vault.title": "Vault(暗号化)",
308
+ "settings.vault.slots": "スロット",
309
+ "settings.vault.open": "Vault を開く",
310
+ "settings.license.email": "メール",
311
+ "settings.license.validated": "検証済み",
312
+ "settings.license.connectHint": "Polar アカウントを接続します。支払いに使ったメールを入力すると、プランを自動で同期します。",
313
+ "settings.license.emailPlaceholder": "email@example.com",
314
+ "settings.license.connect": "接続",
315
+ "settings.license.sync": "Polar と同期",
316
+ "settings.license.buy": "プランを購入 / 有効化",
317
+ "settings.budget.title": "今月の予算",
318
+ "settings.budget.renews": "更新",
319
+ "settings.budget.tokensEco": "eco トークン",
320
+ "settings.budget.tokensFrontier": "frontier トークン",
321
+ "settings.budget.buyExtension": "トークンの追加を購入",
322
+ "settings.limits.title": "制限(詳細)",
323
+ "settings.limits.editHint": "任意の値を編集 + tab/blur で保存。",
324
+ "settings.limits.reset": "デフォルトに戻す",
325
+ "settings.bookmarks.title": "Reader のブックマーク",
326
+ "settings.graph.title": "プロジェクトの知識グラフ",
327
+ "settings.pair.title": "スマホを連携",
328
+ "settings.pair.hint": "Forge Mobile を開き、「連携」をタップしてこの QR をスキャンしてください。完了。",
329
+ "settings.pair.generateQr": "QR を生成",
330
+ "settings.pair.cantRead": "カメラが QR を読めない場合は、このコードをコピーして Forge Mobile に貼り付けてください:",
331
+ "settings.audit.viewFull": "全体を表示",
332
+ "settings.audit.close": "閉じる",
333
+ "settings.audit.allKinds": "すべての kind",
334
+ "settings.audit.allModes": "すべての mode",
335
+ "settings.audit.copyJson": "JSON をコピー",
336
+ "settings.audit.closeDetail": "詳細を閉じる",
337
+ "settings.about.title": "情報",
338
+ "settings.danger.title": "危険ゾーン",
339
+ "settings.danger.warning": "ON のとき、Yujin は確認なしですべてのアクションを実行します(shell.exec、rm、git push --force などを含む)。安全より速度。すべて audit log に記録されます。",
340
+ "settings.keyEditor.placeholder": "ここに API key を貼り付け",
341
+ "settings.license.title": "ライセンス",
342
+ "settings.plan": "プラン",
343
+ "settings.audit.title": "監査ログ",
344
+ "settings.legal.title": "法的情報",
345
+ "panel.status.projectSwitchFail": "プロジェクトを切り替えできませんでした。",
346
+ "panel.status.projectRemoveFail": "プロジェクトを削除できませんでした。",
347
+ "panel.status.projectAddFail": "プロジェクトを追加できませんでした。",
348
+ "panel.status.cancelFail": "キャンセルできませんでした: {reason}",
349
+ "panel.status.cancelNetError": "シェルのキャンセル中にネットワークエラーが発生しました。",
350
+ "panel.status.notEditable": "この種類のコンテンツは編集できません。",
351
+ "panel.status.savedAsPicker": "{name} として保存しました(ダイアログで選んだパスに保存)。",
352
+ "panel.status.saveAsFail": "名前を付けて保存でエラー: {error} -- フォールバックを使用します。",
353
+ "panel.status.saveFail": "保存中にエラー: {error}",
354
+ "panel.status.savedAs": "{path} として保存しました({bytes} バイト)",
355
+ "panel.status.netError": "ネットワークエラー: {error}",
356
+ "panel.status.savedTabOnly": "変更をタブに保存しました(ディスクには未保存 -- file_path なし)。",
357
+ "panel.status.saved": "保存しました: {path}({bytes} バイト)",
358
+ "panel.status.copied": "クリップボードにコピーしました。",
359
+ "panel.status.copyFail": "コピーできませんでした。",
360
+ "panel.status.modeAvailable": "利用可能なモード: didactico, tecnico. 使い方: /modo tecnico",
361
+ "panel.status.modeChangeFail": "モードを変更できませんでした: {error}",
362
+ "panel.status.modeChanged": "モードを {target} に変更しました。次のターンからこのモードが使われます。",
363
+ "panel.status.genericError": "エラー: {error}",
364
+ "panel.status.brainTierAuto": "Brain tier を auto に戻しました(router が verb / phase で判断します)。",
365
+ "panel.status.brainTierForced": "このセッションでは Brain tier を \"{target}\" に固定しました。/auto で router に戻ります。",
366
+ "panel.confirm.tabUnsaved": "タブ \"{title}\" に未保存の変更があります。閉じますか?",
367
+ "panel.confirm.tabsUnsaved": "未保存の変更があるタブがあります。すべて閉じますか?",
368
+ "panel.confirm.discardChanges": "未保存の変更を破棄しますか?",
369
+ "panel.confirm.removeSlot": "slot \"{slot}\" を削除しますか?この操作は元に戻せません。",
370
+ "panel.confirm.removeKey": "{slot} の key を削除しますか?",
371
+ "panel.prompt.saveAs": "名前を付けて保存(プロジェクトからの相対パス):",
372
+ "panel.voice.sttFallback": "ブラウザの STT が利用できません。サーバー側のフォールバックを使用します。",
373
+ "panel.voice.noMicSupport": "お使いのブラウザはマイクへのアクセスに対応していません。",
374
+ "panel.voice.recordingCountdown": "録音中... {n}秒後に自動停止",
375
+ "panel.voice.autoStopped": "55秒で録音を自動停止しました(Google STT の1分制限)。短くしてお試しください。",
376
+ "panel.voice.noAudio": "音声が取得できませんでした。もう一度お試しください。",
377
+ "panel.voice.audioTooLong": "音声が長すぎます(1分超)。Google STT の同期制限です。短くしてお試しください。",
378
+ "panel.voice.ttsUnavailable": "ブラウザの TTS が利用できません。設定で Google に戻してください。",
379
+ "panel.voice.micClosedHalfDuplex": "Yujin の発話中はマイクを閉じています(半二重)。",
380
+ "panel.voice.micBlocked": "マイクがブロックされています。ブラウザの設定でこのアプリのマイクを許可して、もう一度お試しください。",
381
+ "panel.voice.noMicDevice": "このデバイスでマイクを検出できませんでした。",
382
+ "panel.voice.micOpenFail": "マイクを開けませんでした: {error}",
383
+ "panel.voice.micOpenListening": "マイク オン、聞いています...",
384
+ "panel.voice.listening": "聞いています...",
385
+ "panel.voice.listeningInterim": "聞いています... {text}",
386
+ "panel.voice.micBlockedBrowser": "ブラウザによってマイクがブロックされています。URL バーの鍵アイコンをクリックしてマイクを許可し、ページを再読み込みしてください。API key があれば、設定で STT を \"google\" / \"whisper\" に変更してください。",
387
+ "panel.voice.noMicPhysical": "物理マイクを検出できません。接続するか、設定で STT を \"google\" / \"whisper\" に変更してください。",
388
+ "panel.voice.networkRequired": "Web Speech にはインターネット接続が必要です(Chrome は裏で Google を使用します)。接続が不安定でない状態で試すか、API key があれば STT を \"whisper\" に変更してください。",
389
+ "panel.voice.langNotSupported": "お使いのブラウザはこの言語の STT に対応していません。パネルの言語を対応言語(en, es, pt)に変更するか、STT を \"google\" / \"whisper\" に変更してください。",
390
+ "panel.voice.micError": "マイクエラー: {error}",
391
+ "panel.voice.noAudioToRecognizer": "認識エンジンに音声が届きませんでした。このアプリでブラウザのディクテーションが取得できていません。",
392
+ "panel.voice.micOpenNoVoice": "マイクは開いていますが音声を検出できません。マイクに近づいて大きめに話してください。続く場合、この PWA では無料のディクテーションが動作しません。",
393
+ "panel.voice.voiceNoText": "音声を検出しましたが、ブラウザからテキストが返りませんでした(この PWA では無料の STT が利用できません)。",
394
+ "panel.voice.startingDictation": "ディクテーションを開始しています...",
395
+ "panel.voice.couldNotStartMic": "マイクを開始できませんでした: {error}",
396
+ "panel.status.imageTooLarge": "画像が大きすぎます(>6MB): {name}",
397
+ "panel.status.imageReady": "送信準備ができた画像: {name}",
398
+ "panel.status.imageReadFail": "画像を読み込めませんでした: {error}",
399
+ "panel.tip.attachFile": "ファイルを添付",
400
+ "panel.tip.refreshDiscovery": "ディスカバリを更新",
401
+ "panel.tip.refreshNow": "今すぐ更新",
402
+ "panel.tip.filterByProject": "プロジェクトで絞り込み",
403
+ "panel.tip.concurrentRuns": "同時実行: グローバル / プロジェクトごとの上限",
404
+ "panel.tip.mcpBridges": "MCP ブリッジ (F101)",
405
+ "panel.tip.activity": "エージェントの活動 + ブリッジ検査 + エージェントごとのチャット",
406
+ "panel.tip.settings": "設定 (音声モード、STT、TTS、キー、言語)",
407
+ "panel.tip.zoomOut": "ズームアウト (Ctrl -)",
408
+ "panel.tip.zoomReset": "ズームをリセット (Ctrl 0)",
409
+ "panel.tip.zoomIn": "ズームイン (Ctrl +)",
410
+ "panel.tip.maximize": "最大化 / 復元 (全画面)",
411
+ "panel.tip.closeBoard": "ボード全体を閉じる",
412
+ "panel.tip.openInEditor": "自分のエディタで開く",
413
+ "panel.tip.open": "開く",
414
+ "panel.tip.saveAs": "名前を付けて保存 -- 新しいパスを選択 (プロジェクトからの相対)",
415
+ "panel.tip.codeModeDetail": "詳細: ファイル、差分、コマンドをライブ表示",
416
+ "panel.tip.codeModeZen": "Sumi-e: 時折テキストを添えたアート",
417
+ "panel.tip.cancelShell": "シェルコマンドをキャンセル",
418
+ "panel.tip.closeTab": "タブを閉じる",
419
+ "panel.tip.reopenNativeTabs": "閉じたネイティブタブを再度開く",
420
+ "panel.tip.notTestedYet": "まだテストされていません",
421
+ "panel.aria.activity": "アクティビティ",
422
+ "panel.aria.settings": "設定",
423
+ "panel.aria.zoomOut": "ズームアウト",
424
+ "panel.aria.zoomIn": "ズームイン",
425
+ "panel.aria.maximize": "最大化",
426
+ "panel.aria.closeBoard": "すべて閉じる",
427
+ "panel.aria.thinking": "考え中",
428
+ "panel.hint.boardEmpty": "ここに構造化されたコンテンツ (コード、表、ドキュメント) が表示されます。Yujin に何かを書くか編集するよう頼んでください。",
429
+ "panel.hint.planMode": "Plan モード (サブスクリプション) です。ボードは brain が API モードで動作するときに描画されます。<strong>設定 &gt; Brain &gt; Anthropic: モード &gt; Console</strong> で変更し、パネルを開き直してください。",
430
+ "panel.hint.bookmarksEmpty": "ブックマークがありません。ドキュメントを読みながら Yujin に「この箇所を ... としてマーク」と頼んでください。",
431
+ "panel.voice.replyFailed": "音声応答に失敗しました: {err}",
432
+ "panel.voice.replyError": "音声応答エラー: {err}",
433
+ "panel.status.languageSwitchFailed": "言語の切り替えに失敗しました: {err}",
434
+ "panel.status.languageListFailed": "言語リストを読み込めませんでした",
435
+ "panel.legal.loading": "読み込み中...",
436
+ "panel.legal.loadError": "ドキュメントの読み込みエラー {status}。",
437
+ "panel.legal.networkError": "ネットワークエラー: {err}",
438
+ "panel.legal.defaultTitle": "法的情報",
439
+ "panel.feedback.copied": "コピーしました",
440
+ "panel.feedback.copyFailed": "コピーに失敗しました",
441
+ "panel.feedback.clipboardUnavailable": "クリップボードを利用できません",
442
+ "panel.feedback.saving": "保存中...",
443
+ "panel.feedback.saved": "保存しました。",
444
+ "panel.feedback.saveError": "保存エラー",
445
+ "panel.feedback.netError": "ネットワークエラー",
446
+ "panel.feedback.netErrorSaving": "保存中のネットワークエラー",
447
+ "panel.feedback.errorPrefix": "エラー: {detail}",
448
+ "panel.pair.generating": "生成中...",
449
+ "panel.pair.generateQr": "QR を生成",
450
+ "panel.pair.copy": "コピー",
451
+ "panel.pair.expiry": "約 {mins} 分で期限切れです。期限が切れたら再生成してください。",
452
+ "panel.pair.qrNetError": "QR の生成中にネットワークエラーが発生しました。",
453
+ "panel.audit.copyJson": "JSON をコピー",
454
+ "panel.limits.resetApplied": "デフォルトへのリセットを適用しました",
455
+ "panel.nac3.effects": "影響: {list}",
456
+ "panel.nac3.effectsUnknown": "不明",
457
+ "panel.nac3.cancel": "キャンセル",
458
+ "panel.nac3.reject": "拒否",
459
+ "panel.nac3.approve": "承認",
460
+ "panel.nac3.approveDestructive": "承認 (破壊的)",
461
+ "panel.nac3.executing": "実行中...",
462
+ "panel.tts.providerBrowser": "TTS ブラウザ",
463
+ "panel.tts.providerGoogle": "TTS Google",
464
+ "panel.tts.providerTitle": "クリックでブラウザ (ネイティブの SpeechSynthesis、OS の音声) と Google Cloud TTS (サーバー側) を切り替えます。",
465
+ "panel.stt.providerBrowser": "STT ブラウザ",
466
+ "panel.stt.providerGoogle": "STT Google",
467
+ "panel.stt.providerWhisper": "STT Whisper",
468
+ "panel.stt.providerTitle": "クリックでブラウザ (高速 + ネイティブ es-AR + 無料)、Google Cloud STT (サーバー側、BYOK)、Whisper (サーバー側、BYOK) を切り替えます。",
469
+ "panel.tts.voiceTitle": "現在の音声: {id} / {persona} ({gender}) -- {style}。クリックで切り替え。Studio = s を明瞭に発音; Neural2 = 自然なスペイン語 (語末の s を弱める)。",
470
+ "panel.license.lendNeedsLicense": "brain を貸し出すにはライセンスを有効化してください",
471
+ "panel.license.emailInvalid": "有効なメールアドレスを入力してください (@ を含む)。",
472
+ "panel.license.connecting": "接続中...",
473
+ "panel.license.savingEmail": "メールを保存 + Polar と同期中...",
474
+ "panel.license.syncFailedRetry": "メールは保存されましたが同期に失敗しました: {err}{http}。支払ったばかりなら 1-2 分待って「Polar と同期」を押してください。",
475
+ "panel.license.planOk": "OK -- プラン: {plan}。",
476
+ "panel.license.netError": "ネットワークエラー: {err}",
477
+ "panel.license.syncing": "同期中...",
478
+ "panel.license.querying": "サーバーに問い合わせ中...",
479
+ "panel.license.syncError": "同期エラー: {err}{http}",
480
+ "panel.license.planUnchanged": "プランは変更なし: {plan}",
481
+ "panel.license.planUpdated": "プランを更新: {before} -> {after}",
482
+ "panel.license.syncWithPolar": "Polar と同期",
483
+ "panel.license.errorWithCode": "エラー: {code}",
484
+ "panel.keyEditor.keyTooShort": "キーが短すぎます (最小 8 文字)。",
485
+ "panel.bridge.coordUnavailable": "コーディネーションは利用できません。",
486
+ "panel.bridge.statusUnavailable": "利用不可",
487
+ "panel.mcp.loadingBridges": "ブリッジを読み込み中...",
488
+ "panel.tools.loading": "ツールを読み込み中...",
489
+ "panel.agentsChat.backPairs": "< ペア",
490
+ "panel.agentsChat.noMessages": "このペアにメッセージはありません。",
491
+ "panel.agentsChat.noAgents": "エージェントなし",
492
+ "panel.agentsChat.pickAgent": "送信する前にエージェントを選んでテキストを入力してください。",
493
+ "panel.agentsChat.sending": "送信中...",
494
+ "panel.agentsChat.errorGeneric": "エラー: {err}",
495
+ "panel.whatsNew.dismiss": "閉じる",
496
+ "panel.alert.noEditor": "PATH にエディタがありません。パスをコピーしてください: {path}",
497
+ "panel.alert.pathRelative": "パスはプロジェクトからの相対でなければなりません (先頭の \"/\" や \"..\" は不可)。",
498
+ "panel.tip.saveTo": "{path} に保存",
499
+ "panel.tip.saveToMemory": "(メモリ)",
500
+ "panel.button.saveAs": "名前を付けて保存...",
501
+ "panel.aria.concurrentRuns": "同時実行",
502
+ "panel.activity.allProjects": "すべてのプロジェクト",
503
+ "panel.activity.loadingFeed": "フィードを読み込み中...",
504
+ "panel.feedback.savedShort": "保存済み",
505
+ "panel.pair.qrFailed": "QR を生成できませんでした。",
506
+ "panel.brain.modePlan": "Plan (サブスクリプション)",
507
+ "panel.brain.modeConsole": "Console (API キー)",
508
+ "panel.brain.applying": "{mode} を適用中...",
509
+ "panel.brain.applied": "{mode} を適用しました。次のターンからこのモードを使用します。",
510
+ "panel.brain.reopenHint": "パネルを再度開くと適用されます。",
511
+ "panel.brain.active": "{mode} 有効",
512
+ "panel.bridge.roleHost": "ホスト",
513
+ "panel.bridge.roleClient": "クライアント",
514
+ "panel.bridge.instanceOne": "インスタンス",
515
+ "panel.bridge.instanceMany": "インスタンス",
516
+ "panel.bridge.you": "あなた",
517
+ "panel.tip.deleteTask": "タスクを削除",
518
+ "panel.tasks.cmdPlaceholder": "コマンド (例: pnpm install)...",
519
+ "panel.readAloud.code": "コード",
520
+ "panel.readAloud.codeLang": "{lang} のコード",
521
+ "panel.readAloud.file": "ファイル {file}",
522
+ "panel.readAloud.content": "内容: {content}",
523
+ "panel.pizarron.tabOne": "タブ",
524
+ "panel.pizarron.tabMany": "タブ"
234
525
  }