@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.
- package/dist/chat/flow_bpmn.d.ts +54 -0
- package/dist/chat/flow_bpmn.d.ts.map +1 -0
- package/dist/chat/flow_bpmn.js +112 -0
- package/dist/chat/flow_bpmn.js.map +1 -0
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +524 -383
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +16 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/pizarron.d.ts.map +1 -1
- package/dist/chat/tools/pizarron.js +13 -2
- package/dist/chat/tools/pizarron.js.map +1 -1
- package/dist/docs/doctrine/pizarron.md +12 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/doctrine/pizarron.md +12 -0
- package/package.json +115 -115
- package/src/i18n/catalogs/ar.json +292 -1
- package/src/i18n/catalogs/de.json +292 -1
- package/src/i18n/catalogs/en.json +292 -1
- package/src/i18n/catalogs/es.json +292 -1
- package/src/i18n/catalogs/fr.json +292 -1
- package/src/i18n/catalogs/hi.json +292 -1
- package/src/i18n/catalogs/it.json +292 -1
- package/src/i18n/catalogs/ja.json +292 -1
- package/src/i18n/catalogs/pt.json +292 -1
- package/src/i18n/catalogs/zh.json +292 -1
|
@@ -230,5 +230,296 @@
|
|
|
230
230
|
"panel.files.empty": "(no files)",
|
|
231
231
|
"panel.files.truncated": "(list truncated)",
|
|
232
232
|
"panel.files.opened": "Opened",
|
|
233
|
-
"panel.files.openFailed": "Could not open the file."
|
|
233
|
+
"panel.files.openFailed": "Could not open the file.",
|
|
234
|
+
"startup.tab.tasks": "Tasks",
|
|
235
|
+
"settings.bridge.title": "Coordination between instances",
|
|
236
|
+
"settings.bridge.accept": "Accept directed messages from other instances (injected as chat)",
|
|
237
|
+
"settings.bridge.composePlaceholder": "Message to the other instances...",
|
|
238
|
+
"settings.voice.title": "Voice",
|
|
239
|
+
"settings.voice.mode": "Mode",
|
|
240
|
+
"settings.voice.modeMic": "mic mode",
|
|
241
|
+
"settings.voice.stt": "STT",
|
|
242
|
+
"settings.voice.sttBrowser": "STT browser",
|
|
243
|
+
"settings.voice.ttsEngine": "TTS engine",
|
|
244
|
+
"settings.voice.ttsBrowser": "TTS browser",
|
|
245
|
+
"settings.voice.ttsVoice": "TTS voice (Google only)",
|
|
246
|
+
"settings.vad.title": "VAD (silence detection)",
|
|
247
|
+
"settings.vad.resetDefaults": "Reset defaults",
|
|
248
|
+
"settings.vad.engine": "Engine",
|
|
249
|
+
"settings.vad.engineAmplitude": "Amplitude (RMS)",
|
|
250
|
+
"settings.vad.engineBand": "Band 80-400Hz",
|
|
251
|
+
"settings.vad.baselineWindow": "Baseline window",
|
|
252
|
+
"settings.vad.thresholdMult": "Threshold mult (baseline x N)",
|
|
253
|
+
"settings.vad.thresholdMin": "Minimum threshold",
|
|
254
|
+
"settings.vad.thresholdMax": "Maximum threshold",
|
|
255
|
+
"settings.vad.silence": "Silence to close",
|
|
256
|
+
"settings.vad.minVoiced": "Minimum voiced (anti-blip)",
|
|
257
|
+
"settings.vad.tick": "VAD tick",
|
|
258
|
+
"settings.vad.bandLow": "Voice band: low (Hz)",
|
|
259
|
+
"settings.vad.bandHigh": "Voice band: high (Hz)",
|
|
260
|
+
"settings.vad.showOverlay": "Show live overlay",
|
|
261
|
+
"settings.vad.logStats": "Log stats per session",
|
|
262
|
+
"settings.brain.anthropicMode": "Anthropic: mode",
|
|
263
|
+
"settings.brain.modePlan": "Plan (Claude subscription)",
|
|
264
|
+
"settings.brain.modeConsole": "Console (API key)",
|
|
265
|
+
"settings.brain.modeNote": "Applies when you reopen the panel.",
|
|
266
|
+
"settings.brain.ecoEnabled": "Eco mode enabled",
|
|
267
|
+
"settings.brain.ecoHint": "off = always frontier",
|
|
268
|
+
"settings.brain.modelEco": "Eco model",
|
|
269
|
+
"settings.brain.modelFrontier": "Frontier model",
|
|
270
|
+
"settings.brain.modelMultimodal": "Multimodal model",
|
|
271
|
+
"settings.brain.multimodalClearTitle": "Remove the dedicated multimodal brain (revert to automatic vision routing)",
|
|
272
|
+
"settings.brain.auto": "Auto",
|
|
273
|
+
"settings.brain.multimodalHint": "Dedicated brain for turns with images. Auto = automatic vision routing (the frontier if it sees, or a notice if not).",
|
|
274
|
+
"settings.brain.geminiCache": "Gemini explicit cache (CachedContent)",
|
|
275
|
+
"settings.brain.geminiCacheHint": "Opt-in. Useful for long sessions with Gemini Pro; for short sessions the free implicit cache of 2.5 is enough.",
|
|
276
|
+
"settings.federation.title": "Brain federation",
|
|
277
|
+
"settings.federation.intro": "Use another Forge's brain (its key never leaves its machine) or lend yours. Your code runs locally; only the inference travels.",
|
|
278
|
+
"settings.federation.connectedTo": "Connected to",
|
|
279
|
+
"settings.federation.disconnect": "Disconnect",
|
|
280
|
+
"settings.federation.connectMe": "Connect me",
|
|
281
|
+
"settings.federation.tokenPlaceholder": "Paste the federation code",
|
|
282
|
+
"settings.federation.connect": "Connect",
|
|
283
|
+
"settings.federation.lendBrain": "Lend my brain",
|
|
284
|
+
"settings.federation.generateCode": "Generate code",
|
|
285
|
+
"settings.federation.host": "Host (respond to children)",
|
|
286
|
+
"settings.federation.fedBrain": "Federation brain",
|
|
287
|
+
"settings.federation.fedBrainNote": "The one that responds to children. Direct API (DeepSeek by default). Claude Plan cannot host; it needs a key with credit.",
|
|
288
|
+
"settings.federation.codeOnce": "Code (single use)",
|
|
289
|
+
"settings.federation.copy": "Copy",
|
|
290
|
+
"settings.keys.title": "API keys (BYOK)",
|
|
291
|
+
"settings.keys.configure": "Configure",
|
|
292
|
+
"settings.keys.remove": "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": "Language",
|
|
305
|
+
"settings.lang.panelVoice": "Panel + voice",
|
|
306
|
+
"settings.lang.changeButton": "Change language",
|
|
307
|
+
"settings.vault.title": "Vault (encrypted)",
|
|
308
|
+
"settings.vault.slots": "Slots",
|
|
309
|
+
"settings.vault.open": "Open vault",
|
|
310
|
+
"settings.license.email": "Email",
|
|
311
|
+
"settings.license.validated": "Validated",
|
|
312
|
+
"settings.license.connectHint": "Connect your Polar account. Enter the email you paid with and we sync your plan automatically.",
|
|
313
|
+
"settings.license.emailPlaceholder": "email@example.com",
|
|
314
|
+
"settings.license.connect": "Connect",
|
|
315
|
+
"settings.license.sync": "Sync with Polar",
|
|
316
|
+
"settings.license.buy": "Buy / activate plan",
|
|
317
|
+
"settings.budget.title": "Budget this month",
|
|
318
|
+
"settings.budget.renews": "Renews",
|
|
319
|
+
"settings.budget.tokensEco": "Eco tokens",
|
|
320
|
+
"settings.budget.tokensFrontier": "Frontier tokens",
|
|
321
|
+
"settings.budget.buyExtension": "Buy token extension",
|
|
322
|
+
"settings.limits.title": "Limits (advanced)",
|
|
323
|
+
"settings.limits.editHint": "Edit any value + tab/blur saves.",
|
|
324
|
+
"settings.limits.reset": "Reset to defaults",
|
|
325
|
+
"settings.bookmarks.title": "Reader bookmarks",
|
|
326
|
+
"settings.graph.title": "Project knowledge graph",
|
|
327
|
+
"settings.pair.title": "Link phone",
|
|
328
|
+
"settings.pair.hint": "Open Forge Mobile, tap \"Link\" and scan this QR. Done.",
|
|
329
|
+
"settings.pair.generateQr": "Generate QR",
|
|
330
|
+
"settings.pair.cantRead": "Camera can't read the QR? Copy this code and paste it into Forge Mobile:",
|
|
331
|
+
"settings.audit.viewFull": "View full",
|
|
332
|
+
"settings.audit.close": "Close",
|
|
333
|
+
"settings.audit.allKinds": "All kinds",
|
|
334
|
+
"settings.audit.allModes": "All modes",
|
|
335
|
+
"settings.audit.copyJson": "Copy JSON",
|
|
336
|
+
"settings.audit.closeDetail": "Close detail",
|
|
337
|
+
"settings.about.title": "About",
|
|
338
|
+
"settings.danger.title": "Danger Zone",
|
|
339
|
+
"settings.danger.warning": "When ON, Yujin runs EVERY action without asking for confirmation (including shell.exec, rm, git push --force, etc). Speed over safety. Everything is recorded in the audit log.",
|
|
340
|
+
"settings.keyEditor.placeholder": "Paste your API key here",
|
|
341
|
+
"settings.license.title": "License",
|
|
342
|
+
"settings.plan": "Plan",
|
|
343
|
+
"settings.audit.title": "Audit log",
|
|
344
|
+
"settings.legal.title": "Legal",
|
|
345
|
+
"panel.status.projectSwitchFail": "Could not switch project.",
|
|
346
|
+
"panel.status.projectRemoveFail": "Could not remove the project.",
|
|
347
|
+
"panel.status.projectAddFail": "Could not add the project.",
|
|
348
|
+
"panel.status.cancelFail": "Could not cancel: {reason}",
|
|
349
|
+
"panel.status.cancelNetError": "Network error while cancelling shell.",
|
|
350
|
+
"panel.status.notEditable": "This type of content is not editable.",
|
|
351
|
+
"panel.status.savedAsPicker": "Saved as: {name} (at the path you chose in the dialog).",
|
|
352
|
+
"panel.status.saveAsFail": "Save As error: {error} -- using fallback.",
|
|
353
|
+
"panel.status.saveFail": "Error saving: {error}",
|
|
354
|
+
"panel.status.savedAs": "Saved as: {path} ({bytes} bytes)",
|
|
355
|
+
"panel.status.netError": "Network error: {error}",
|
|
356
|
+
"panel.status.savedTabOnly": "Changes saved in the tab (not on disk -- no file_path).",
|
|
357
|
+
"panel.status.saved": "Saved: {path} ({bytes} bytes)",
|
|
358
|
+
"panel.status.copied": "Copied to clipboard.",
|
|
359
|
+
"panel.status.copyFail": "Could not copy.",
|
|
360
|
+
"panel.status.modeAvailable": "Available modes: didactico, tecnico. Usage: /modo tecnico",
|
|
361
|
+
"panel.status.modeChangeFail": "Could not change the mode: {error}",
|
|
362
|
+
"panel.status.modeChanged": "Mode changed to {target}. The next turn already uses this mode.",
|
|
363
|
+
"panel.status.genericError": "Error: {error}",
|
|
364
|
+
"panel.status.brainTierAuto": "Brain tier back to auto (router decides by verb / phase).",
|
|
365
|
+
"panel.status.brainTierForced": "Brain tier forced to \"{target}\" for this session. /auto returns to the router.",
|
|
366
|
+
"panel.confirm.tabUnsaved": "The tab \"{title}\" has unsaved changes. Close anyway?",
|
|
367
|
+
"panel.confirm.tabsUnsaved": "There are tabs with unsaved changes. Close everything anyway?",
|
|
368
|
+
"panel.confirm.discardChanges": "Discard the unsaved changes?",
|
|
369
|
+
"panel.confirm.removeSlot": "Remove slot \"{slot}\"? This cannot be undone.",
|
|
370
|
+
"panel.confirm.removeKey": "Remove the key for {slot}?",
|
|
371
|
+
"panel.prompt.saveAs": "Save as (path relative to the project):",
|
|
372
|
+
"panel.voice.sttFallback": "Browser STT unavailable; using server-side fallback.",
|
|
373
|
+
"panel.voice.noMicSupport": "Your browser does not support microphone access.",
|
|
374
|
+
"panel.voice.recordingCountdown": "Recording... auto-stop in {n}s",
|
|
375
|
+
"panel.voice.autoStopped": "Recording auto-stopped at 55s (Google STT 1-min limit). Try shorter.",
|
|
376
|
+
"panel.voice.noAudio": "No audio captured. Try again.",
|
|
377
|
+
"panel.voice.audioTooLong": "Audio too long (>1 min). Google STT sync limit. Try shorter.",
|
|
378
|
+
"panel.voice.ttsUnavailable": "Browser TTS not available; switch back to Google in settings.",
|
|
379
|
+
"panel.voice.micClosedHalfDuplex": "Mic closed while Yujin speaks (half-duplex).",
|
|
380
|
+
"panel.voice.micBlocked": "Microphone blocked. Allow the microphone for this app in your browser settings and try again.",
|
|
381
|
+
"panel.voice.noMicDevice": "No microphone detected on this device.",
|
|
382
|
+
"panel.voice.micOpenFail": "Could not open the microphone: {error}",
|
|
383
|
+
"panel.voice.micOpenListening": "Mic open, listening...",
|
|
384
|
+
"panel.voice.listening": "I'm listening...",
|
|
385
|
+
"panel.voice.listeningInterim": "I'm listening... {text}",
|
|
386
|
+
"panel.voice.micBlockedBrowser": "Microphone blocked by the browser. Click the lock icon in the URL bar and allow microphone, then reload the page. Or switch STT to \"google\" / \"whisper\" in settings if you have the API key.",
|
|
387
|
+
"panel.voice.noMicPhysical": "No physical microphone detected. Connect one or switch STT to \"google\" / \"whisper\" in settings.",
|
|
388
|
+
"panel.voice.networkRequired": "Web Speech requires an internet connection (Chrome uses Google behind the scenes). Try without an intermittent connection or switch STT to \"whisper\" if you have the API key.",
|
|
389
|
+
"panel.voice.langNotSupported": "Your browser does not support this language for STT. Change the panel language to a supported one (en, es, pt) or switch STT to \"google\" / \"whisper\".",
|
|
390
|
+
"panel.voice.micError": "Mic error: {error}",
|
|
391
|
+
"panel.voice.noAudioToRecognizer": "No audio reached the recognizer: the browser's dictation is not capturing in this app.",
|
|
392
|
+
"panel.voice.micOpenNoVoice": "Mic open but no voice detected. Move closer to the microphone and speak louder; if it continues, free dictation does not work in this PWA.",
|
|
393
|
+
"panel.voice.voiceNoText": "Voice detected but the browser returned no text (free STT not available in this PWA).",
|
|
394
|
+
"panel.voice.startingDictation": "Starting dictation...",
|
|
395
|
+
"panel.voice.couldNotStartMic": "Could not start mic: {error}",
|
|
396
|
+
"panel.status.imageTooLarge": "Image too large (>6MB): {name}",
|
|
397
|
+
"panel.status.imageReady": "Image ready to send: {name}",
|
|
398
|
+
"panel.status.imageReadFail": "Could not read the image: {error}",
|
|
399
|
+
"panel.tip.attachFile": "Attach file",
|
|
400
|
+
"panel.tip.refreshDiscovery": "Refresh discovery",
|
|
401
|
+
"panel.tip.refreshNow": "Refresh now",
|
|
402
|
+
"panel.tip.filterByProject": "Filter by project",
|
|
403
|
+
"panel.tip.concurrentRuns": "Concurrent runs: global / per-project caps",
|
|
404
|
+
"panel.tip.mcpBridges": "MCP Bridges (F101)",
|
|
405
|
+
"panel.tip.activity": "Agent activity + bridge inspector + chat-per-agent",
|
|
406
|
+
"panel.tip.settings": "Settings (voice mode, STT, TTS, keys, language)",
|
|
407
|
+
"panel.tip.zoomOut": "Zoom out (Ctrl -)",
|
|
408
|
+
"panel.tip.zoomReset": "Reset zoom (Ctrl 0)",
|
|
409
|
+
"panel.tip.zoomIn": "Zoom in (Ctrl +)",
|
|
410
|
+
"panel.tip.maximize": "Maximize / restore (full screen)",
|
|
411
|
+
"panel.tip.closeBoard": "Close the whole board",
|
|
412
|
+
"panel.tip.openInEditor": "Open in my editor",
|
|
413
|
+
"panel.tip.open": "Open",
|
|
414
|
+
"panel.tip.saveAs": "Save as -- choose a new path (relative to the project)",
|
|
415
|
+
"panel.tip.codeModeDetail": "Detailed: files, diffs and commands live",
|
|
416
|
+
"panel.tip.codeModeZen": "Sumi-e: art with occasional text",
|
|
417
|
+
"panel.tip.cancelShell": "Cancel shell command",
|
|
418
|
+
"panel.tip.closeTab": "Close tab",
|
|
419
|
+
"panel.tip.reopenNativeTabs": "Reopen closed native tabs",
|
|
420
|
+
"panel.tip.notTestedYet": "not tested yet",
|
|
421
|
+
"panel.aria.activity": "Activity",
|
|
422
|
+
"panel.aria.settings": "Settings",
|
|
423
|
+
"panel.aria.zoomOut": "Zoom out",
|
|
424
|
+
"panel.aria.zoomIn": "Zoom in",
|
|
425
|
+
"panel.aria.maximize": "Maximize",
|
|
426
|
+
"panel.aria.closeBoard": "close all",
|
|
427
|
+
"panel.aria.thinking": "thinking",
|
|
428
|
+
"panel.hint.boardEmpty": "Structured content shows here: code, tables, documents. Ask Yujin to write or edit something.",
|
|
429
|
+
"panel.hint.planMode": "You are in Plan mode (subscription). The board draws when the brain runs in API mode: change it in <strong>Settings > Brain > Anthropic: mode > Console</strong> and reopen the panel.",
|
|
430
|
+
"panel.hint.bookmarksEmpty": "No bookmarks. Ask Yujin \"mark this point as ...\" while reading a doc.",
|
|
431
|
+
"panel.voice.replyFailed": "Voice reply failed: {err}",
|
|
432
|
+
"panel.voice.replyError": "Voice reply error: {err}",
|
|
433
|
+
"panel.status.languageSwitchFailed": "Language switch failed: {err}",
|
|
434
|
+
"panel.status.languageListFailed": "Could not load language list",
|
|
435
|
+
"panel.legal.loading": "Loading...",
|
|
436
|
+
"panel.legal.loadError": "Error {status} loading the document.",
|
|
437
|
+
"panel.legal.networkError": "Network error: {err}",
|
|
438
|
+
"panel.legal.defaultTitle": "Legal",
|
|
439
|
+
"panel.feedback.copied": "Copied",
|
|
440
|
+
"panel.feedback.copyFailed": "Copy failed",
|
|
441
|
+
"panel.feedback.clipboardUnavailable": "Clipboard unavailable",
|
|
442
|
+
"panel.feedback.saving": "Saving...",
|
|
443
|
+
"panel.feedback.saved": "Saved.",
|
|
444
|
+
"panel.feedback.saveError": "error saving",
|
|
445
|
+
"panel.feedback.netError": "network error",
|
|
446
|
+
"panel.feedback.netErrorSaving": "network error saving",
|
|
447
|
+
"panel.feedback.errorPrefix": "Error: {detail}",
|
|
448
|
+
"panel.pair.generating": "Generating...",
|
|
449
|
+
"panel.pair.generateQr": "Generate QR",
|
|
450
|
+
"panel.pair.copy": "Copy",
|
|
451
|
+
"panel.pair.expiry": "Expires in ~{mins} min. Generate it again if it lapses.",
|
|
452
|
+
"panel.pair.qrNetError": "Network error generating the QR.",
|
|
453
|
+
"panel.audit.copyJson": "Copy JSON",
|
|
454
|
+
"panel.limits.resetApplied": "Reset to defaults applied",
|
|
455
|
+
"panel.nac3.effects": "Effects: {list}",
|
|
456
|
+
"panel.nac3.effectsUnknown": "unknown",
|
|
457
|
+
"panel.nac3.cancel": "Cancel",
|
|
458
|
+
"panel.nac3.reject": "Reject",
|
|
459
|
+
"panel.nac3.approve": "Approve",
|
|
460
|
+
"panel.nac3.approveDestructive": "Approve (destructive)",
|
|
461
|
+
"panel.nac3.executing": "Executing...",
|
|
462
|
+
"panel.tts.providerBrowser": "TTS browser",
|
|
463
|
+
"panel.tts.providerGoogle": "TTS Google",
|
|
464
|
+
"panel.tts.providerTitle": "Click to switch between browser (native SpeechSynthesis, OS voices) and Google Cloud TTS (server-side).",
|
|
465
|
+
"panel.stt.providerBrowser": "STT browser",
|
|
466
|
+
"panel.stt.providerGoogle": "STT Google",
|
|
467
|
+
"panel.stt.providerWhisper": "STT Whisper",
|
|
468
|
+
"panel.stt.providerTitle": "Click to switch between browser (fast + native es-AR + free), Google Cloud STT (server-side, BYOK) or Whisper (server-side, BYOK).",
|
|
469
|
+
"panel.tts.voiceTitle": "Current voice: {id} / {persona} ({gender}) -- {style}. Click to cycle. Studio = articulates s clearly; Neural2 = natural Spanish (aspirates final s).",
|
|
470
|
+
"panel.license.lendNeedsLicense": "activate your license to lend your brain",
|
|
471
|
+
"panel.license.emailInvalid": "Enter a valid email (with @).",
|
|
472
|
+
"panel.license.connecting": "Connecting...",
|
|
473
|
+
"panel.license.savingEmail": "Saving email + syncing with Polar...",
|
|
474
|
+
"panel.license.syncFailedRetry": "Email saved, but sync failed: {err}{http}. If you just paid, wait 1-2 min and hit \"Sync with Polar\".",
|
|
475
|
+
"panel.license.planOk": "OK -- plan: {plan}.",
|
|
476
|
+
"panel.license.netError": "Network error: {err}",
|
|
477
|
+
"panel.license.syncing": "Syncing...",
|
|
478
|
+
"panel.license.querying": "Querying server...",
|
|
479
|
+
"panel.license.syncError": "Sync error: {err}{http}",
|
|
480
|
+
"panel.license.planUnchanged": "Plan unchanged: {plan}",
|
|
481
|
+
"panel.license.planUpdated": "Plan updated: {before} -> {after}",
|
|
482
|
+
"panel.license.syncWithPolar": "Sync with Polar",
|
|
483
|
+
"panel.license.errorWithCode": "error: {code}",
|
|
484
|
+
"panel.keyEditor.keyTooShort": "Key too short (min 8 chars).",
|
|
485
|
+
"panel.bridge.coordUnavailable": "Coordination unavailable.",
|
|
486
|
+
"panel.bridge.statusUnavailable": "unavailable",
|
|
487
|
+
"panel.mcp.loadingBridges": "Loading bridges...",
|
|
488
|
+
"panel.tools.loading": "Loading tools...",
|
|
489
|
+
"panel.agentsChat.backPairs": "< Pairs",
|
|
490
|
+
"panel.agentsChat.noMessages": "No messages in this pair.",
|
|
491
|
+
"panel.agentsChat.noAgents": "no agents",
|
|
492
|
+
"panel.agentsChat.pickAgent": "Pick an agent + type text before sending.",
|
|
493
|
+
"panel.agentsChat.sending": "Sending...",
|
|
494
|
+
"panel.agentsChat.errorGeneric": "Error: {err}",
|
|
495
|
+
"panel.whatsNew.dismiss": "Close",
|
|
496
|
+
"panel.alert.noEditor": "No editor in PATH. Copy the path: {path}",
|
|
497
|
+
"panel.alert.pathRelative": "The path must be relative to the project (no leading \"/\" or \"..\").",
|
|
498
|
+
"panel.tip.saveTo": "Save to {path}",
|
|
499
|
+
"panel.tip.saveToMemory": "(memory)",
|
|
500
|
+
"panel.button.saveAs": "Save as...",
|
|
501
|
+
"panel.aria.concurrentRuns": "Concurrent runs",
|
|
502
|
+
"panel.activity.allProjects": "All projects",
|
|
503
|
+
"panel.activity.loadingFeed": "Loading feed...",
|
|
504
|
+
"panel.feedback.savedShort": "saved",
|
|
505
|
+
"panel.pair.qrFailed": "Could not generate the QR.",
|
|
506
|
+
"panel.brain.modePlan": "Plan (subscription)",
|
|
507
|
+
"panel.brain.modeConsole": "Console (API key)",
|
|
508
|
+
"panel.brain.applying": "applying {mode}...",
|
|
509
|
+
"panel.brain.applied": "{mode} applied. The next turn already uses this mode.",
|
|
510
|
+
"panel.brain.reopenHint": "Applies when you reopen the panel.",
|
|
511
|
+
"panel.brain.active": "{mode} active",
|
|
512
|
+
"panel.bridge.roleHost": "host",
|
|
513
|
+
"panel.bridge.roleClient": "client",
|
|
514
|
+
"panel.bridge.instanceOne": "instance",
|
|
515
|
+
"panel.bridge.instanceMany": "instances",
|
|
516
|
+
"panel.bridge.you": "you",
|
|
517
|
+
"panel.tip.deleteTask": "Delete task",
|
|
518
|
+
"panel.tasks.cmdPlaceholder": "command (e.g. pnpm install)...",
|
|
519
|
+
"panel.readAloud.code": "Code",
|
|
520
|
+
"panel.readAloud.codeLang": "Code in {lang}",
|
|
521
|
+
"panel.readAloud.file": "File {file}",
|
|
522
|
+
"panel.readAloud.content": "Content: {content}",
|
|
523
|
+
"panel.pizarron.tabOne": "tab",
|
|
524
|
+
"panel.pizarron.tabMany": "tabs"
|
|
234
525
|
}
|
|
@@ -230,5 +230,296 @@
|
|
|
230
230
|
"panel.files.empty": "(sin archivos)",
|
|
231
231
|
"panel.files.truncated": "(lista truncada)",
|
|
232
232
|
"panel.files.opened": "Abierto",
|
|
233
|
-
"panel.files.openFailed": "No se pudo abrir el archivo."
|
|
233
|
+
"panel.files.openFailed": "No se pudo abrir el archivo.",
|
|
234
|
+
"startup.tab.tasks": "Tareas",
|
|
235
|
+
"settings.bridge.title": "Coordinacion entre instancias",
|
|
236
|
+
"settings.bridge.accept": "Aceptar mensajes dirigidos de otras instancias (los inyecta como chat)",
|
|
237
|
+
"settings.bridge.composePlaceholder": "Mensaje a las otras 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": "TTS engine",
|
|
244
|
+
"settings.voice.ttsBrowser": "TTS navegador",
|
|
245
|
+
"settings.voice.ttsVoice": "Voz TTS (solo Google)",
|
|
246
|
+
"settings.vad.title": "VAD (deteccion de silencio)",
|
|
247
|
+
"settings.vad.resetDefaults": "Reset defaults",
|
|
248
|
+
"settings.vad.engine": "Motor",
|
|
249
|
+
"settings.vad.engineAmplitude": "Amplitud (RMS)",
|
|
250
|
+
"settings.vad.engineBand": "Banda 80-400Hz",
|
|
251
|
+
"settings.vad.baselineWindow": "Baseline window",
|
|
252
|
+
"settings.vad.thresholdMult": "Threshold mult (baseline x N)",
|
|
253
|
+
"settings.vad.thresholdMin": "Threshold minimo",
|
|
254
|
+
"settings.vad.thresholdMax": "Threshold maximo",
|
|
255
|
+
"settings.vad.silence": "Silencio para cerrar",
|
|
256
|
+
"settings.vad.minVoiced": "Voz minima (anti-blip)",
|
|
257
|
+
"settings.vad.tick": "Tick del VAD",
|
|
258
|
+
"settings.vad.bandLow": "Banda voz: low (Hz)",
|
|
259
|
+
"settings.vad.bandHigh": "Banda voz: high (Hz)",
|
|
260
|
+
"settings.vad.showOverlay": "Mostrar overlay live",
|
|
261
|
+
"settings.vad.logStats": "Loggear stats por sesion",
|
|
262
|
+
"settings.brain.anthropicMode": "Anthropic: modalidad",
|
|
263
|
+
"settings.brain.modePlan": "Plan (suscripcion Claude)",
|
|
264
|
+
"settings.brain.modeConsole": "Console (API key)",
|
|
265
|
+
"settings.brain.modeNote": "Se aplica al reabrir el panel.",
|
|
266
|
+
"settings.brain.ecoEnabled": "Modo eco habilitado",
|
|
267
|
+
"settings.brain.ecoHint": "apagado = frontier siempre",
|
|
268
|
+
"settings.brain.modelEco": "Modelo eco",
|
|
269
|
+
"settings.brain.modelFrontier": "Modelo frontier",
|
|
270
|
+
"settings.brain.modelMultimodal": "Modelo multimodal",
|
|
271
|
+
"settings.brain.multimodalClearTitle": "Quitar el brain multimodal dedicado (vuelve al ruteo de vision automatico)",
|
|
272
|
+
"settings.brain.auto": "Auto",
|
|
273
|
+
"settings.brain.multimodalHint": "Brain dedicado para turnos con imagen. Auto = ruteo de vision automatico (el frontier si ve, o aviso si no).",
|
|
274
|
+
"settings.brain.geminiCache": "Cache explicito de Gemini (CachedContent)",
|
|
275
|
+
"settings.brain.geminiCacheHint": "Opt-in. Conviene en sesiones largas con Gemini Pro; en sesiones cortas el cache implicito gratis de 2.5 ya alcanza.",
|
|
276
|
+
"settings.federation.title": "Federacion de brain",
|
|
277
|
+
"settings.federation.intro": "Usa el brain de otro Forge (su key nunca sale de su maquina) o presta el tuyo. Tu codigo se ejecuta local; solo la inferencia viaja.",
|
|
278
|
+
"settings.federation.connectedTo": "Conectado a",
|
|
279
|
+
"settings.federation.disconnect": "Desconectar",
|
|
280
|
+
"settings.federation.connectMe": "Conectarme",
|
|
281
|
+
"settings.federation.tokenPlaceholder": "Pega el codigo de federacion",
|
|
282
|
+
"settings.federation.connect": "Conectar",
|
|
283
|
+
"settings.federation.lendBrain": "Prestar mi brain",
|
|
284
|
+
"settings.federation.generateCode": "Generar codigo",
|
|
285
|
+
"settings.federation.host": "Hospedar (responder a los hijos)",
|
|
286
|
+
"settings.federation.fedBrain": "Brain de federacion",
|
|
287
|
+
"settings.federation.fedBrainNote": "El que responde a los hijos. API directa (DeepSeek por defecto). Claude Plan no sirve para hospedar; necesita una key con saldo.",
|
|
288
|
+
"settings.federation.codeOnce": "Codigo (1 solo uso)",
|
|
289
|
+
"settings.federation.copy": "Copiar",
|
|
290
|
+
"settings.keys.title": "API keys (BYOK)",
|
|
291
|
+
"settings.keys.configure": "Configurar",
|
|
292
|
+
"settings.keys.remove": "Quitar",
|
|
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": "Panel + voz",
|
|
306
|
+
"settings.lang.changeButton": "Cambiar 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": "Conecta tu cuenta de Polar. Pone el email con el que pagaste y sincronizamos tu plan automaticamente.",
|
|
313
|
+
"settings.license.emailPlaceholder": "email@ejemplo.com",
|
|
314
|
+
"settings.license.connect": "Conectar",
|
|
315
|
+
"settings.license.sync": "Sincronizar con Polar",
|
|
316
|
+
"settings.license.buy": "Comprar / activar plan",
|
|
317
|
+
"settings.budget.title": "Presupuesto este mes",
|
|
318
|
+
"settings.budget.renews": "Renueva",
|
|
319
|
+
"settings.budget.tokensEco": "Tokens eco",
|
|
320
|
+
"settings.budget.tokensFrontier": "Tokens frontier",
|
|
321
|
+
"settings.budget.buyExtension": "Comprar extension de tokens",
|
|
322
|
+
"settings.limits.title": "Limites (avanzado)",
|
|
323
|
+
"settings.limits.editHint": "Editar cualquier valor + tab/blur guarda.",
|
|
324
|
+
"settings.limits.reset": "Reset a defaults",
|
|
325
|
+
"settings.bookmarks.title": "Reader bookmarks",
|
|
326
|
+
"settings.graph.title": "Project knowledge graph",
|
|
327
|
+
"settings.pair.title": "Vincular telefono",
|
|
328
|
+
"settings.pair.hint": "Abri Forge Mobile, toca \"Vincular\" y escanea este QR. Listo.",
|
|
329
|
+
"settings.pair.generateQr": "Generar QR",
|
|
330
|
+
"settings.pair.cantRead": "La camara no lee el QR? Copia este codigo y pegalo en Forge Mobile:",
|
|
331
|
+
"settings.audit.viewFull": "Ver completo",
|
|
332
|
+
"settings.audit.close": "Cerrar",
|
|
333
|
+
"settings.audit.allKinds": "Todos los kinds",
|
|
334
|
+
"settings.audit.allModes": "Todos los modes",
|
|
335
|
+
"settings.audit.copyJson": "Copiar JSON",
|
|
336
|
+
"settings.audit.closeDetail": "Cerrar detalle",
|
|
337
|
+
"settings.about.title": "Acerca de",
|
|
338
|
+
"settings.danger.title": "Zona de peligro",
|
|
339
|
+
"settings.danger.warning": "Cuando esta ON, Yujin ejecuta TODA accion sin pedir confirmacion (incluye shell.exec, rm, git push --force, etc). Velocidad sobre seguridad. Todo queda registrado en audit log.",
|
|
340
|
+
"settings.keyEditor.placeholder": "Pega aqui tu API key",
|
|
341
|
+
"settings.license.title": "Licencia",
|
|
342
|
+
"settings.plan": "Plan",
|
|
343
|
+
"settings.audit.title": "Registro de auditoría",
|
|
344
|
+
"settings.legal.title": "Legal",
|
|
345
|
+
"panel.status.projectSwitchFail": "No se pudo cambiar de proyecto.",
|
|
346
|
+
"panel.status.projectRemoveFail": "No se pudo quitar el proyecto.",
|
|
347
|
+
"panel.status.projectAddFail": "No se pudo anadir el proyecto.",
|
|
348
|
+
"panel.status.cancelFail": "No se pudo cancelar: {reason}",
|
|
349
|
+
"panel.status.cancelNetError": "Error de red al cancelar shell.",
|
|
350
|
+
"panel.status.notEditable": "Este tipo de contenido no es editable.",
|
|
351
|
+
"panel.status.savedAsPicker": "Guardado como: {name} (en la ruta que elegiste en el dialog).",
|
|
352
|
+
"panel.status.saveAsFail": "Error en Guardar como: {error} -- usando fallback.",
|
|
353
|
+
"panel.status.saveFail": "Error al guardar: {error}",
|
|
354
|
+
"panel.status.savedAs": "Guardado como: {path} ({bytes} bytes)",
|
|
355
|
+
"panel.status.netError": "Error de red: {error}",
|
|
356
|
+
"panel.status.savedTabOnly": "Cambios guardados en la pestana (no en disco -- sin file_path).",
|
|
357
|
+
"panel.status.saved": "Guardado: {path} ({bytes} bytes)",
|
|
358
|
+
"panel.status.copied": "Copiado al portapapeles.",
|
|
359
|
+
"panel.status.copyFail": "No se pudo copiar.",
|
|
360
|
+
"panel.status.modeAvailable": "Modos disponibles: didactico, tecnico. Uso: /modo tecnico",
|
|
361
|
+
"panel.status.modeChangeFail": "No pude cambiar el modo: {error}",
|
|
362
|
+
"panel.status.modeChanged": "Modo cambiado a {target}. El proximo turno ya usa este modo.",
|
|
363
|
+
"panel.status.genericError": "Error: {error}",
|
|
364
|
+
"panel.status.brainTierAuto": "Brain tier vuelve a auto (router decide segun verbo / phase).",
|
|
365
|
+
"panel.status.brainTierForced": "Brain tier forzado a \"{target}\" para esta sesion. /auto vuelve al router.",
|
|
366
|
+
"panel.confirm.tabUnsaved": "La pestana \"{title}\" tiene cambios sin guardar. ¿Cerrar igual?",
|
|
367
|
+
"panel.confirm.tabsUnsaved": "Hay pestanas con cambios sin guardar. ¿Cerrar todo igual?",
|
|
368
|
+
"panel.confirm.discardChanges": "Descartar los cambios sin guardar?",
|
|
369
|
+
"panel.confirm.removeSlot": "Quitar el slot \"{slot}\"? Esto no se puede deshacer.",
|
|
370
|
+
"panel.confirm.removeKey": "Quitar la key de {slot}?",
|
|
371
|
+
"panel.prompt.saveAs": "Guardar como (path relativo al proyecto):",
|
|
372
|
+
"panel.voice.sttFallback": "STT del navegador no disponible; usando fallback del servidor.",
|
|
373
|
+
"panel.voice.noMicSupport": "Tu navegador no soporta el acceso al microfono.",
|
|
374
|
+
"panel.voice.recordingCountdown": "Grabando... auto-stop en {n}s",
|
|
375
|
+
"panel.voice.autoStopped": "Grabacion detenida automaticamente a los 55s (limite de 1 min de Google STT). Proba con algo mas corto.",
|
|
376
|
+
"panel.voice.noAudio": "No se capturo audio. Proba de nuevo.",
|
|
377
|
+
"panel.voice.audioTooLong": "Audio demasiado largo (>1 min). Limite sincronico de Google STT. Proba con algo mas corto.",
|
|
378
|
+
"panel.voice.ttsUnavailable": "TTS del navegador no disponible; volve a Google en la configuracion.",
|
|
379
|
+
"panel.voice.micClosedHalfDuplex": "Mic cerrado mientras Yujin habla (half-duplex).",
|
|
380
|
+
"panel.voice.micBlocked": "Microfono bloqueado. Permiti el microfono para esta app en los ajustes del navegador y volve a intentar.",
|
|
381
|
+
"panel.voice.noMicDevice": "No detecto microfono en este dispositivo.",
|
|
382
|
+
"panel.voice.micOpenFail": "No pude abrir el microfono: {error}",
|
|
383
|
+
"panel.voice.micOpenListening": "Mic abierto, escuchando...",
|
|
384
|
+
"panel.voice.listening": "Te escucho...",
|
|
385
|
+
"panel.voice.listeningInterim": "Te escucho... {text}",
|
|
386
|
+
"panel.voice.micBlockedBrowser": "Microfono bloqueado por el navegador. Hace click en el icono del candado en la barra de URL y permiti microfono, despues recarga la pagina. O cambia STT a \"google\" / \"whisper\" en la configuracion si tenes la API key.",
|
|
387
|
+
"panel.voice.noMicPhysical": "No detecto microfono fisico. Conecta uno o cambia STT a \"google\" / \"whisper\" en la configuracion.",
|
|
388
|
+
"panel.voice.networkRequired": "Web Speech requiere conexion a internet (Chrome usa Google detras). Probate sin conexion intermitente o cambia STT a \"whisper\" si tenes API key.",
|
|
389
|
+
"panel.voice.langNotSupported": "Tu navegador no soporta este idioma para STT. Cambia el idioma del panel a uno soportado (en, es, pt) o cambia STT a \"google\" / \"whisper\".",
|
|
390
|
+
"panel.voice.micError": "Error de mic: {error}",
|
|
391
|
+
"panel.voice.noAudioToRecognizer": "No llego audio al reconocedor: el dictado del navegador no esta capturando en esta app.",
|
|
392
|
+
"panel.voice.micOpenNoVoice": "Mic abierto pero no detecte voz. Acerca el microfono y habla mas fuerte; si sigue, el dictado gratis no funciona en esta PWA.",
|
|
393
|
+
"panel.voice.voiceNoText": "Detecte voz pero el navegador no devolvio texto (STT gratis no disponible en esta PWA).",
|
|
394
|
+
"panel.voice.startingDictation": "Iniciando dictado...",
|
|
395
|
+
"panel.voice.couldNotStartMic": "No pude iniciar el mic: {error}",
|
|
396
|
+
"panel.status.imageTooLarge": "Imagen muy grande (>6MB): {name}",
|
|
397
|
+
"panel.status.imageReady": "Imagen lista para enviar: {name}",
|
|
398
|
+
"panel.status.imageReadFail": "No pude leer la imagen: {error}",
|
|
399
|
+
"panel.tip.attachFile": "Adjuntar archivo",
|
|
400
|
+
"panel.tip.refreshDiscovery": "Refrescar discovery",
|
|
401
|
+
"panel.tip.refreshNow": "Refrescar ahora",
|
|
402
|
+
"panel.tip.filterByProject": "Filtrar por proyecto",
|
|
403
|
+
"panel.tip.concurrentRuns": "Ejecuciones concurrentes: limites global / por proyecto",
|
|
404
|
+
"panel.tip.mcpBridges": "MCP Bridges (F101)",
|
|
405
|
+
"panel.tip.activity": "Actividad de agentes + inspector de bridge + chat por agente",
|
|
406
|
+
"panel.tip.settings": "Ajustes (modo voz, STT, TTS, claves, idioma)",
|
|
407
|
+
"panel.tip.zoomOut": "Reducir zoom (Ctrl -)",
|
|
408
|
+
"panel.tip.zoomReset": "Restablecer zoom (Ctrl 0)",
|
|
409
|
+
"panel.tip.zoomIn": "Aumentar zoom (Ctrl +)",
|
|
410
|
+
"panel.tip.maximize": "Maximizar / restaurar (pantalla completa)",
|
|
411
|
+
"panel.tip.closeBoard": "Cerrar todo el pizarron",
|
|
412
|
+
"panel.tip.openInEditor": "Abrir en mi editor",
|
|
413
|
+
"panel.tip.open": "Abrir",
|
|
414
|
+
"panel.tip.saveAs": "Guardar como -- elegi nuevo path (relativo al proyecto)",
|
|
415
|
+
"panel.tip.codeModeDetail": "Detallado: archivos, diffs y comandos en vivo",
|
|
416
|
+
"panel.tip.codeModeZen": "Sumi-e: arte con texto ocasional",
|
|
417
|
+
"panel.tip.cancelShell": "Cancelar comando shell",
|
|
418
|
+
"panel.tip.closeTab": "Cerrar pestana",
|
|
419
|
+
"panel.tip.reopenNativeTabs": "Reabrir pestanas nativas cerradas",
|
|
420
|
+
"panel.tip.notTestedYet": "todavia no probado",
|
|
421
|
+
"panel.aria.activity": "Actividad",
|
|
422
|
+
"panel.aria.settings": "Ajustes",
|
|
423
|
+
"panel.aria.zoomOut": "Reducir zoom",
|
|
424
|
+
"panel.aria.zoomIn": "Aumentar zoom",
|
|
425
|
+
"panel.aria.maximize": "Maximizar",
|
|
426
|
+
"panel.aria.closeBoard": "cerrar todo",
|
|
427
|
+
"panel.aria.thinking": "pensando",
|
|
428
|
+
"panel.hint.boardEmpty": "Aqui se muestra contenido estructurado: codigo, tablas, documentos. Pedile a Yujin que escriba o edite algo.",
|
|
429
|
+
"panel.hint.planMode": "Estas en modo Plan (suscripcion). El pizarron se dibuja cuando el brain corre en modo API: cambialo en <strong>Ajustes > Brain > Anthropic: modalidad > Console</strong> y reabri el panel.",
|
|
430
|
+
"panel.hint.bookmarksEmpty": "Sin bookmarks. Pedile a Yujin \"marca este punto como ...\" al leer un doc.",
|
|
431
|
+
"panel.voice.replyFailed": "Fallo la respuesta de voz: {err}",
|
|
432
|
+
"panel.voice.replyError": "Error en la respuesta de voz: {err}",
|
|
433
|
+
"panel.status.languageSwitchFailed": "Fallo el cambio de idioma: {err}",
|
|
434
|
+
"panel.status.languageListFailed": "No se pudo cargar la lista de idiomas",
|
|
435
|
+
"panel.legal.loading": "Cargando...",
|
|
436
|
+
"panel.legal.loadError": "Error {status} cargando el documento.",
|
|
437
|
+
"panel.legal.networkError": "Error de red: {err}",
|
|
438
|
+
"panel.legal.defaultTitle": "Legal",
|
|
439
|
+
"panel.feedback.copied": "Copiado",
|
|
440
|
+
"panel.feedback.copyFailed": "Fallo el copiado",
|
|
441
|
+
"panel.feedback.clipboardUnavailable": "Clipboard no disponible",
|
|
442
|
+
"panel.feedback.saving": "Guardando...",
|
|
443
|
+
"panel.feedback.saved": "Guardado.",
|
|
444
|
+
"panel.feedback.saveError": "error guardando",
|
|
445
|
+
"panel.feedback.netError": "error de red",
|
|
446
|
+
"panel.feedback.netErrorSaving": "error de red guardando",
|
|
447
|
+
"panel.feedback.errorPrefix": "Error: {detail}",
|
|
448
|
+
"panel.pair.generating": "Generando...",
|
|
449
|
+
"panel.pair.generateQr": "Generar QR",
|
|
450
|
+
"panel.pair.copy": "Copiar",
|
|
451
|
+
"panel.pair.expiry": "Expira en ~{mins} min. Generalo de nuevo si caduca.",
|
|
452
|
+
"panel.pair.qrNetError": "Error de red al generar el QR.",
|
|
453
|
+
"panel.audit.copyJson": "Copiar JSON",
|
|
454
|
+
"panel.limits.resetApplied": "Reset a defaults aplicado",
|
|
455
|
+
"panel.nac3.effects": "Efectos: {list}",
|
|
456
|
+
"panel.nac3.effectsUnknown": "desconocidos",
|
|
457
|
+
"panel.nac3.cancel": "Cancelar",
|
|
458
|
+
"panel.nac3.reject": "Rechazar",
|
|
459
|
+
"panel.nac3.approve": "Aprobar",
|
|
460
|
+
"panel.nac3.approveDestructive": "Aprobar (destructivo)",
|
|
461
|
+
"panel.nac3.executing": "Ejecutando...",
|
|
462
|
+
"panel.tts.providerBrowser": "TTS navegador",
|
|
463
|
+
"panel.tts.providerGoogle": "TTS Google",
|
|
464
|
+
"panel.tts.providerTitle": "Tocar para alternar entre navegador (SpeechSynthesis nativo, voces del SO) y 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": "Tocar para alternar entre navegador (rapido + es-AR nativo + gratis), Google Cloud STT (server-side, BYOK) o Whisper (server-side, BYOK).",
|
|
469
|
+
"panel.tts.voiceTitle": "Voz actual: {id} / {persona} ({gender}) -- {style}. Tocar para ciclar. Studio = articula s claro; Neural2 = natural espanol (aspira s finales).",
|
|
470
|
+
"panel.license.lendNeedsLicense": "activa tu licencia para prestar tu brain",
|
|
471
|
+
"panel.license.emailInvalid": "Pone un email valido (con @).",
|
|
472
|
+
"panel.license.connecting": "Conectando...",
|
|
473
|
+
"panel.license.savingEmail": "Guardando email + sincronizando con Polar...",
|
|
474
|
+
"panel.license.syncFailedRetry": "Email guardado, pero sync fallo: {err}{http}. Si recien pagaste, espera 1-2 min y dale a \"Sincronizar con Polar\".",
|
|
475
|
+
"panel.license.planOk": "OK -- plan: {plan}.",
|
|
476
|
+
"panel.license.netError": "Error de red: {err}",
|
|
477
|
+
"panel.license.syncing": "Sincronizando...",
|
|
478
|
+
"panel.license.querying": "Consultando servidor...",
|
|
479
|
+
"panel.license.syncError": "Error de sync: {err}{http}",
|
|
480
|
+
"panel.license.planUnchanged": "Plan sin cambios: {plan}",
|
|
481
|
+
"panel.license.planUpdated": "Plan actualizado: {before} -> {after}",
|
|
482
|
+
"panel.license.syncWithPolar": "Sincronizar con Polar",
|
|
483
|
+
"panel.license.errorWithCode": "error: {code}",
|
|
484
|
+
"panel.keyEditor.keyTooShort": "Key demasiado corta (min 8 chars).",
|
|
485
|
+
"panel.bridge.coordUnavailable": "Coordinacion no disponible.",
|
|
486
|
+
"panel.bridge.statusUnavailable": "no disponible",
|
|
487
|
+
"panel.mcp.loadingBridges": "Cargando bridges...",
|
|
488
|
+
"panel.tools.loading": "Cargando tools...",
|
|
489
|
+
"panel.agentsChat.backPairs": "< Pares",
|
|
490
|
+
"panel.agentsChat.noMessages": "Sin mensajes en este par.",
|
|
491
|
+
"panel.agentsChat.noAgents": "sin agentes",
|
|
492
|
+
"panel.agentsChat.pickAgent": "Elegi un agente + escribe texto antes de enviar.",
|
|
493
|
+
"panel.agentsChat.sending": "Enviando...",
|
|
494
|
+
"panel.agentsChat.errorGeneric": "Error: {err}",
|
|
495
|
+
"panel.whatsNew.dismiss": "Cerrar",
|
|
496
|
+
"panel.alert.noEditor": "No hay editor en el PATH. Copie el path: {path}",
|
|
497
|
+
"panel.alert.pathRelative": "El path debe ser relativo al proyecto (sin \"/\" inicial ni \"..\").",
|
|
498
|
+
"panel.tip.saveTo": "Guardar en {path}",
|
|
499
|
+
"panel.tip.saveToMemory": "(memoria)",
|
|
500
|
+
"panel.button.saveAs": "Guardar como...",
|
|
501
|
+
"panel.aria.concurrentRuns": "Ejecuciones concurrentes",
|
|
502
|
+
"panel.activity.allProjects": "Todos los proyectos",
|
|
503
|
+
"panel.activity.loadingFeed": "Cargando feed...",
|
|
504
|
+
"panel.feedback.savedShort": "guardado",
|
|
505
|
+
"panel.pair.qrFailed": "No pude generar el QR.",
|
|
506
|
+
"panel.brain.modePlan": "Plan (suscripcion)",
|
|
507
|
+
"panel.brain.modeConsole": "Console (API key)",
|
|
508
|
+
"panel.brain.applying": "aplicando {mode}...",
|
|
509
|
+
"panel.brain.applied": "{mode} aplicado. El proximo turno ya usa este modo.",
|
|
510
|
+
"panel.brain.reopenHint": "Se aplica al reabrir el panel.",
|
|
511
|
+
"panel.brain.active": "{mode} activo",
|
|
512
|
+
"panel.bridge.roleHost": "host",
|
|
513
|
+
"panel.bridge.roleClient": "cliente",
|
|
514
|
+
"panel.bridge.instanceOne": "instancia",
|
|
515
|
+
"panel.bridge.instanceMany": "instancias",
|
|
516
|
+
"panel.bridge.you": "vos",
|
|
517
|
+
"panel.tip.deleteTask": "Eliminar tarea",
|
|
518
|
+
"panel.tasks.cmdPlaceholder": "comando (ej: pnpm install)...",
|
|
519
|
+
"panel.readAloud.code": "Codigo",
|
|
520
|
+
"panel.readAloud.codeLang": "Codigo en {lang}",
|
|
521
|
+
"panel.readAloud.file": "Archivo {file}",
|
|
522
|
+
"panel.readAloud.content": "Contenido: {content}",
|
|
523
|
+
"panel.pizarron.tabOne": "pestana",
|
|
524
|
+
"panel.pizarron.tabMany": "pestanas"
|
|
234
525
|
}
|