@nac3/forge-cli 1.0.54 → 1.0.56

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": "(ファイルなし)",
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
  }
@@ -230,5 +230,296 @@
230
230
  "panel.files.empty": "(sem arquivos)",
231
231
  "panel.files.truncated": "(lista truncada)",
232
232
  "panel.files.opened": "Aberto",
233
- "panel.files.openFailed": "Nao foi possivel abrir o arquivo."
233
+ "panel.files.openFailed": "Nao foi possivel abrir o arquivo.",
234
+ "startup.tab.tasks": "Tarefas",
235
+ "settings.bridge.title": "Coordenacao entre instancias",
236
+ "settings.bridge.accept": "Aceitar mensagens dirigidas de outras instancias (injetadas como chat)",
237
+ "settings.bridge.composePlaceholder": "Mensagem para as outras instancias...",
238
+ "settings.voice.title": "Voz",
239
+ "settings.voice.mode": "Modo",
240
+ "settings.voice.modeMic": "modo mic",
241
+ "settings.voice.stt": "STT",
242
+ "settings.voice.sttBrowser": "STT navegador",
243
+ "settings.voice.ttsEngine": "Motor TTS",
244
+ "settings.voice.ttsBrowser": "TTS navegador",
245
+ "settings.voice.ttsVoice": "Voz TTS (so Google)",
246
+ "settings.vad.title": "VAD (deteccao de silencio)",
247
+ "settings.vad.resetDefaults": "Restaurar padroes",
248
+ "settings.vad.engine": "Motor",
249
+ "settings.vad.engineAmplitude": "Amplitude (RMS)",
250
+ "settings.vad.engineBand": "Banda 80-400Hz",
251
+ "settings.vad.baselineWindow": "Janela de baseline",
252
+ "settings.vad.thresholdMult": "Mult. de limiar (baseline x N)",
253
+ "settings.vad.thresholdMin": "Limiar minimo",
254
+ "settings.vad.thresholdMax": "Limiar maximo",
255
+ "settings.vad.silence": "Silencio para fechar",
256
+ "settings.vad.minVoiced": "Voz minima (anti-blip)",
257
+ "settings.vad.tick": "Tick do VAD",
258
+ "settings.vad.bandLow": "Banda de voz: low (Hz)",
259
+ "settings.vad.bandHigh": "Banda de voz: high (Hz)",
260
+ "settings.vad.showOverlay": "Mostrar overlay ao vivo",
261
+ "settings.vad.logStats": "Registrar stats por sessao",
262
+ "settings.brain.anthropicMode": "Anthropic: modalidade",
263
+ "settings.brain.modePlan": "Plan (assinatura Claude)",
264
+ "settings.brain.modeConsole": "Console (API key)",
265
+ "settings.brain.modeNote": "Aplica-se ao reabrir o painel.",
266
+ "settings.brain.ecoEnabled": "Modo eco habilitado",
267
+ "settings.brain.ecoHint": "desligado = frontier sempre",
268
+ "settings.brain.modelEco": "Modelo eco",
269
+ "settings.brain.modelFrontier": "Modelo frontier",
270
+ "settings.brain.modelMultimodal": "Modelo multimodal",
271
+ "settings.brain.multimodalClearTitle": "Remover o brain multimodal dedicado (volta ao roteamento de visao automatico)",
272
+ "settings.brain.auto": "Auto",
273
+ "settings.brain.multimodalHint": "Brain dedicado para turnos com imagem. Auto = roteamento de visao automatico (o frontier se ve, ou aviso se nao).",
274
+ "settings.brain.geminiCache": "Cache explicito do Gemini (CachedContent)",
275
+ "settings.brain.geminiCacheHint": "Opt-in. Util em sessoes longas com Gemini Pro; em sessoes curtas o cache implicito gratuito do 2.5 ja basta.",
276
+ "settings.federation.title": "Federacao de brain",
277
+ "settings.federation.intro": "Use o brain de outro Forge (a key nunca sai da maquina dele) ou empreste o seu. Seu codigo roda local; so a inferencia viaja.",
278
+ "settings.federation.connectedTo": "Conectado a",
279
+ "settings.federation.disconnect": "Desconectar",
280
+ "settings.federation.connectMe": "Conectar-me",
281
+ "settings.federation.tokenPlaceholder": "Cole o codigo de federacao",
282
+ "settings.federation.connect": "Conectar",
283
+ "settings.federation.lendBrain": "Emprestar meu brain",
284
+ "settings.federation.generateCode": "Gerar codigo",
285
+ "settings.federation.host": "Hospedar (responder aos filhos)",
286
+ "settings.federation.fedBrain": "Brain de federacao",
287
+ "settings.federation.fedBrainNote": "O que responde aos filhos. API direta (DeepSeek por padrao). Claude Plan nao serve para hospedar; precisa de uma key com saldo.",
288
+ "settings.federation.codeOnce": "Codigo (uso unico)",
289
+ "settings.federation.copy": "Copiar",
290
+ "settings.keys.title": "API keys (BYOK)",
291
+ "settings.keys.configure": "Configurar",
292
+ "settings.keys.remove": "Remover",
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": "Idioma",
305
+ "settings.lang.panelVoice": "Painel + voz",
306
+ "settings.lang.changeButton": "Mudar idioma",
307
+ "settings.vault.title": "Vault (encriptado)",
308
+ "settings.vault.slots": "Slots",
309
+ "settings.vault.open": "Abrir vault",
310
+ "settings.license.email": "Email",
311
+ "settings.license.validated": "Validado",
312
+ "settings.license.connectHint": "Conecte sua conta da Polar. Coloque o email com o qual pagou e sincronizamos seu plano automaticamente.",
313
+ "settings.license.emailPlaceholder": "email@exemplo.com",
314
+ "settings.license.connect": "Conectar",
315
+ "settings.license.sync": "Sincronizar com Polar",
316
+ "settings.license.buy": "Comprar / ativar plano",
317
+ "settings.budget.title": "Orcamento deste mes",
318
+ "settings.budget.renews": "Renova",
319
+ "settings.budget.tokensEco": "Tokens eco",
320
+ "settings.budget.tokensFrontier": "Tokens frontier",
321
+ "settings.budget.buyExtension": "Comprar extensao de tokens",
322
+ "settings.limits.title": "Limites (avancado)",
323
+ "settings.limits.editHint": "Edite qualquer valor + tab/blur salva.",
324
+ "settings.limits.reset": "Restaurar padroes",
325
+ "settings.bookmarks.title": "Marcadores do Reader",
326
+ "settings.graph.title": "Grafo de conhecimento do projeto",
327
+ "settings.pair.title": "Vincular telefone",
328
+ "settings.pair.hint": "Abra o Forge Mobile, toque em \"Vincular\" e escaneie este QR. Pronto.",
329
+ "settings.pair.generateQr": "Gerar QR",
330
+ "settings.pair.cantRead": "A camera nao le o QR? Copie este codigo e cole no Forge Mobile:",
331
+ "settings.audit.viewFull": "Ver completo",
332
+ "settings.audit.close": "Fechar",
333
+ "settings.audit.allKinds": "Todos os kinds",
334
+ "settings.audit.allModes": "Todos os modes",
335
+ "settings.audit.copyJson": "Copiar JSON",
336
+ "settings.audit.closeDetail": "Fechar detalhe",
337
+ "settings.about.title": "Sobre",
338
+ "settings.danger.title": "Zona de perigo",
339
+ "settings.danger.warning": "Quando ON, o Yujin executa TODA acao sem pedir confirmacao (inclui shell.exec, rm, git push --force, etc). Velocidade sobre seguranca. Tudo fica registrado no audit log.",
340
+ "settings.keyEditor.placeholder": "Cole aqui sua API key",
341
+ "settings.license.title": "Licença",
342
+ "settings.plan": "Plano",
343
+ "settings.audit.title": "Registro de auditoria",
344
+ "settings.legal.title": "Legal",
345
+ "panel.status.projectSwitchFail": "Nao foi possivel trocar de projeto.",
346
+ "panel.status.projectRemoveFail": "Nao foi possivel remover o projeto.",
347
+ "panel.status.projectAddFail": "Nao foi possivel adicionar o projeto.",
348
+ "panel.status.cancelFail": "Nao foi possivel cancelar: {reason}",
349
+ "panel.status.cancelNetError": "Erro de rede ao cancelar o shell.",
350
+ "panel.status.notEditable": "Este tipo de conteudo nao e editavel.",
351
+ "panel.status.savedAsPicker": "Salvo como: {name} (no caminho que voce escolheu na caixa de dialogo).",
352
+ "panel.status.saveAsFail": "Erro em Salvar como: {error} -- usando fallback.",
353
+ "panel.status.saveFail": "Erro ao salvar: {error}",
354
+ "panel.status.savedAs": "Salvo como: {path} ({bytes} bytes)",
355
+ "panel.status.netError": "Erro de rede: {error}",
356
+ "panel.status.savedTabOnly": "Alteracoes salvas na aba (nao no disco -- sem file_path).",
357
+ "panel.status.saved": "Salvo: {path} ({bytes} bytes)",
358
+ "panel.status.copied": "Copiado para a area de transferencia.",
359
+ "panel.status.copyFail": "Nao foi possivel copiar.",
360
+ "panel.status.modeAvailable": "Modos disponiveis: didactico, tecnico. Uso: /modo tecnico",
361
+ "panel.status.modeChangeFail": "Nao consegui mudar o modo: {error}",
362
+ "panel.status.modeChanged": "Modo alterado para {target}. O proximo turno ja usa este modo.",
363
+ "panel.status.genericError": "Erro: {error}",
364
+ "panel.status.brainTierAuto": "Brain tier voltou para auto (o router decide por verbo / fase).",
365
+ "panel.status.brainTierForced": "Brain tier forcado para \"{target}\" nesta sessao. /auto volta ao router.",
366
+ "panel.confirm.tabUnsaved": "A aba \"{title}\" tem alteracoes nao salvas. Fechar mesmo assim?",
367
+ "panel.confirm.tabsUnsaved": "Ha abas com alteracoes nao salvas. Fechar tudo mesmo assim?",
368
+ "panel.confirm.discardChanges": "Descartar as alteracoes nao salvas?",
369
+ "panel.confirm.removeSlot": "Remover o slot \"{slot}\"? Isto nao pode ser desfeito.",
370
+ "panel.confirm.removeKey": "Remover a key de {slot}?",
371
+ "panel.prompt.saveAs": "Salvar como (caminho relativo ao projeto):",
372
+ "panel.voice.sttFallback": "STT do navegador indisponivel; usando fallback do servidor.",
373
+ "panel.voice.noMicSupport": "Seu navegador nao suporta acesso ao microfone.",
374
+ "panel.voice.recordingCountdown": "Gravando... parada automatica em {n}s",
375
+ "panel.voice.autoStopped": "Gravacao parada automaticamente aos 55s (limite de 1 min do Google STT). Tente algo mais curto.",
376
+ "panel.voice.noAudio": "Nenhum audio capturado. Tente novamente.",
377
+ "panel.voice.audioTooLong": "Audio muito longo (>1 min). Limite sincrono do Google STT. Tente algo mais curto.",
378
+ "panel.voice.ttsUnavailable": "TTS do navegador indisponivel; volte para o Google nas configuracoes.",
379
+ "panel.voice.micClosedHalfDuplex": "Mic fechado enquanto Yujin fala (half-duplex).",
380
+ "panel.voice.micBlocked": "Microfone bloqueado. Permita o microfone para este app nas configuracoes do navegador e tente novamente.",
381
+ "panel.voice.noMicDevice": "Nenhum microfone detectado neste dispositivo.",
382
+ "panel.voice.micOpenFail": "Nao consegui abrir o microfone: {error}",
383
+ "panel.voice.micOpenListening": "Mic aberto, ouvindo...",
384
+ "panel.voice.listening": "Estou ouvindo...",
385
+ "panel.voice.listeningInterim": "Estou ouvindo... {text}",
386
+ "panel.voice.micBlockedBrowser": "Microfone bloqueado pelo navegador. Clique no icone de cadeado na barra de URL e permita o microfone, depois recarregue a pagina. Ou mude o STT para \"google\" / \"whisper\" nas configuracoes se tiver a API key.",
387
+ "panel.voice.noMicPhysical": "Nenhum microfone fisico detectado. Conecte um ou mude o STT para \"google\" / \"whisper\" nas configuracoes.",
388
+ "panel.voice.networkRequired": "Web Speech requer conexao com a internet (o Chrome usa o Google por tras). Tente sem conexao intermitente ou mude o STT para \"whisper\" se tiver a API key.",
389
+ "panel.voice.langNotSupported": "Seu navegador nao suporta este idioma para STT. Mude o idioma do painel para um suportado (en, es, pt) ou mude o STT para \"google\" / \"whisper\".",
390
+ "panel.voice.micError": "Erro de mic: {error}",
391
+ "panel.voice.noAudioToRecognizer": "Nenhum audio chegou ao reconhecedor: o ditado do navegador nao esta capturando neste app.",
392
+ "panel.voice.micOpenNoVoice": "Mic aberto mas nenhuma voz detectada. Aproxime-se do microfone e fale mais alto; se continuar, o ditado gratis nao funciona nesta PWA.",
393
+ "panel.voice.voiceNoText": "Voz detectada mas o navegador nao retornou texto (STT gratis indisponivel nesta PWA).",
394
+ "panel.voice.startingDictation": "Iniciando ditado...",
395
+ "panel.voice.couldNotStartMic": "Nao consegui iniciar o mic: {error}",
396
+ "panel.status.imageTooLarge": "Imagem muito grande (>6MB): {name}",
397
+ "panel.status.imageReady": "Imagem pronta para enviar: {name}",
398
+ "panel.status.imageReadFail": "Nao consegui ler a imagem: {error}",
399
+ "panel.tip.attachFile": "Anexar arquivo",
400
+ "panel.tip.refreshDiscovery": "Atualizar discovery",
401
+ "panel.tip.refreshNow": "Atualizar agora",
402
+ "panel.tip.filterByProject": "Filtrar por projeto",
403
+ "panel.tip.concurrentRuns": "Execucoes concorrentes: limites global / por projeto",
404
+ "panel.tip.mcpBridges": "MCP Bridges (F101)",
405
+ "panel.tip.activity": "Atividade de agentes + inspetor de bridge + chat por agente",
406
+ "panel.tip.settings": "Ajustes (modo voz, STT, TTS, chaves, idioma)",
407
+ "panel.tip.zoomOut": "Reduzir zoom (Ctrl -)",
408
+ "panel.tip.zoomReset": "Redefinir zoom (Ctrl 0)",
409
+ "panel.tip.zoomIn": "Aumentar zoom (Ctrl +)",
410
+ "panel.tip.maximize": "Maximizar / restaurar (tela cheia)",
411
+ "panel.tip.closeBoard": "Fechar todo o quadro",
412
+ "panel.tip.openInEditor": "Abrir no meu editor",
413
+ "panel.tip.open": "Abrir",
414
+ "panel.tip.saveAs": "Salvar como -- escolha um novo caminho (relativo ao projeto)",
415
+ "panel.tip.codeModeDetail": "Detalhado: arquivos, diffs e comandos ao vivo",
416
+ "panel.tip.codeModeZen": "Sumi-e: arte com texto ocasional",
417
+ "panel.tip.cancelShell": "Cancelar comando shell",
418
+ "panel.tip.closeTab": "Fechar aba",
419
+ "panel.tip.reopenNativeTabs": "Reabrir abas nativas fechadas",
420
+ "panel.tip.notTestedYet": "ainda nao testado",
421
+ "panel.aria.activity": "Atividade",
422
+ "panel.aria.settings": "Ajustes",
423
+ "panel.aria.zoomOut": "Reduzir zoom",
424
+ "panel.aria.zoomIn": "Aumentar zoom",
425
+ "panel.aria.maximize": "Maximizar",
426
+ "panel.aria.closeBoard": "fechar tudo",
427
+ "panel.aria.thinking": "pensando",
428
+ "panel.hint.boardEmpty": "O conteudo estruturado aparece aqui: codigo, tabelas, documentos. Peca ao Yujin para escrever ou editar algo.",
429
+ "panel.hint.planMode": "Voce esta no modo Plan (assinatura). O quadro e desenhado quando o brain roda em modo API: altere em <strong>Ajustes &gt; Brain &gt; Anthropic: modalidade &gt; Console</strong> e reabra o painel.",
430
+ "panel.hint.bookmarksEmpty": "Sem bookmarks. Peca ao Yujin \"marque este ponto como ...\" ao ler um doc.",
431
+ "panel.voice.replyFailed": "Falha na resposta de voz: {err}",
432
+ "panel.voice.replyError": "Erro na resposta de voz: {err}",
433
+ "panel.status.languageSwitchFailed": "Falha ao trocar de idioma: {err}",
434
+ "panel.status.languageListFailed": "Nao foi possivel carregar a lista de idiomas",
435
+ "panel.legal.loading": "Carregando...",
436
+ "panel.legal.loadError": "Erro {status} ao carregar o documento.",
437
+ "panel.legal.networkError": "Erro de rede: {err}",
438
+ "panel.legal.defaultTitle": "Legal",
439
+ "panel.feedback.copied": "Copiado",
440
+ "panel.feedback.copyFailed": "Falha ao copiar",
441
+ "panel.feedback.clipboardUnavailable": "Area de transferencia indisponivel",
442
+ "panel.feedback.saving": "Salvando...",
443
+ "panel.feedback.saved": "Salvo.",
444
+ "panel.feedback.saveError": "erro ao salvar",
445
+ "panel.feedback.netError": "erro de rede",
446
+ "panel.feedback.netErrorSaving": "erro de rede ao salvar",
447
+ "panel.feedback.errorPrefix": "Erro: {detail}",
448
+ "panel.pair.generating": "Gerando...",
449
+ "panel.pair.generateQr": "Gerar QR",
450
+ "panel.pair.copy": "Copiar",
451
+ "panel.pair.expiry": "Expira em ~{mins} min. Gere novamente se caducar.",
452
+ "panel.pair.qrNetError": "Erro de rede ao gerar o QR.",
453
+ "panel.audit.copyJson": "Copiar JSON",
454
+ "panel.limits.resetApplied": "Reset para padroes aplicado",
455
+ "panel.nac3.effects": "Efeitos: {list}",
456
+ "panel.nac3.effectsUnknown": "desconhecidos",
457
+ "panel.nac3.cancel": "Cancelar",
458
+ "panel.nac3.reject": "Rejeitar",
459
+ "panel.nac3.approve": "Aprovar",
460
+ "panel.nac3.approveDestructive": "Aprovar (destrutivo)",
461
+ "panel.nac3.executing": "Executando...",
462
+ "panel.tts.providerBrowser": "TTS navegador",
463
+ "panel.tts.providerGoogle": "TTS Google",
464
+ "panel.tts.providerTitle": "Clique para alternar entre navegador (SpeechSynthesis nativo, vozes do SO) e Google Cloud TTS (server-side).",
465
+ "panel.stt.providerBrowser": "STT navegador",
466
+ "panel.stt.providerGoogle": "STT Google",
467
+ "panel.stt.providerWhisper": "STT Whisper",
468
+ "panel.stt.providerTitle": "Clique para alternar entre navegador (rapido + es-AR nativo + gratis), Google Cloud STT (server-side, BYOK) ou Whisper (server-side, BYOK).",
469
+ "panel.tts.voiceTitle": "Voz atual: {id} / {persona} ({gender}) -- {style}. Clique para ciclar. Studio = articula s claro; Neural2 = espanhol natural (aspira s finais).",
470
+ "panel.license.lendNeedsLicense": "ative sua licenca para emprestar seu brain",
471
+ "panel.license.emailInvalid": "Insira um email valido (com @).",
472
+ "panel.license.connecting": "Conectando...",
473
+ "panel.license.savingEmail": "Salvando email + sincronizando com Polar...",
474
+ "panel.license.syncFailedRetry": "Email salvo, mas o sync falhou: {err}{http}. Se voce acabou de pagar, espere 1-2 min e clique em \"Sincronizar com Polar\".",
475
+ "panel.license.planOk": "OK -- plano: {plan}.",
476
+ "panel.license.netError": "Erro de rede: {err}",
477
+ "panel.license.syncing": "Sincronizando...",
478
+ "panel.license.querying": "Consultando servidor...",
479
+ "panel.license.syncError": "Erro de sync: {err}{http}",
480
+ "panel.license.planUnchanged": "Plano sem alteracoes: {plan}",
481
+ "panel.license.planUpdated": "Plano atualizado: {before} -> {after}",
482
+ "panel.license.syncWithPolar": "Sincronizar com Polar",
483
+ "panel.license.errorWithCode": "erro: {code}",
484
+ "panel.keyEditor.keyTooShort": "Key muito curta (min 8 chars).",
485
+ "panel.bridge.coordUnavailable": "Coordenacao indisponivel.",
486
+ "panel.bridge.statusUnavailable": "indisponivel",
487
+ "panel.mcp.loadingBridges": "Carregando bridges...",
488
+ "panel.tools.loading": "Carregando tools...",
489
+ "panel.agentsChat.backPairs": "< Pares",
490
+ "panel.agentsChat.noMessages": "Sem mensagens neste par.",
491
+ "panel.agentsChat.noAgents": "sem agentes",
492
+ "panel.agentsChat.pickAgent": "Escolha um agente + digite texto antes de enviar.",
493
+ "panel.agentsChat.sending": "Enviando...",
494
+ "panel.agentsChat.errorGeneric": "Erro: {err}",
495
+ "panel.whatsNew.dismiss": "Fechar",
496
+ "panel.alert.noEditor": "Nenhum editor no PATH. Copie o caminho: {path}",
497
+ "panel.alert.pathRelative": "O caminho deve ser relativo ao projeto (sem \"/\" inicial nem \"..\").",
498
+ "panel.tip.saveTo": "Salvar em {path}",
499
+ "panel.tip.saveToMemory": "(memoria)",
500
+ "panel.button.saveAs": "Salvar como...",
501
+ "panel.aria.concurrentRuns": "Execucoes concorrentes",
502
+ "panel.activity.allProjects": "Todos os projetos",
503
+ "panel.activity.loadingFeed": "Carregando feed...",
504
+ "panel.feedback.savedShort": "salvo",
505
+ "panel.pair.qrFailed": "Nao foi possivel gerar o QR.",
506
+ "panel.brain.modePlan": "Plan (assinatura)",
507
+ "panel.brain.modeConsole": "Console (API key)",
508
+ "panel.brain.applying": "aplicando {mode}...",
509
+ "panel.brain.applied": "{mode} aplicado. O proximo turno ja usa este modo.",
510
+ "panel.brain.reopenHint": "Aplica-se ao reabrir o painel.",
511
+ "panel.brain.active": "{mode} ativo",
512
+ "panel.bridge.roleHost": "host",
513
+ "panel.bridge.roleClient": "cliente",
514
+ "panel.bridge.instanceOne": "instancia",
515
+ "panel.bridge.instanceMany": "instancias",
516
+ "panel.bridge.you": "voce",
517
+ "panel.tip.deleteTask": "Excluir tarefa",
518
+ "panel.tasks.cmdPlaceholder": "comando (ex: pnpm install)...",
519
+ "panel.readAloud.code": "Codigo",
520
+ "panel.readAloud.codeLang": "Codigo em {lang}",
521
+ "panel.readAloud.file": "Arquivo {file}",
522
+ "panel.readAloud.content": "Conteudo: {content}",
523
+ "panel.pizarron.tabOne": "aba",
524
+ "panel.pizarron.tabMany": "abas"
234
525
  }