-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathcommon.json
More file actions
676 lines (676 loc) · 40.2 KB
/
Copy pathcommon.json
File metadata and controls
676 lines (676 loc) · 40.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
{
"apiKey.connectionFailed": "Error en la prueba de conexión.",
"apiKey.connectionSuccess": "¡Conexión exitosa! La API responde correctamente.",
"apiKey.decryptFailed": "No se pudo descifrar la clave API",
"apiKey.decryptFailedDetail": "La clave API guardada no pudo descifrarse (p. ej. tras cambiar de navegador o borrar datos). Vuelve a introducir tu clave API.",
"apiKey.invalidKey": "Clave API inválida. Introduce una clave válida.",
"apiKey.noInternet": "Sin conexión a Internet. Comprueba tu conexión.",
"apiKey.rateLimited": "Límite de solicitudes alcanzado. Espera y vuelve a intentarlo. (La clave API es válida)",
"apiKey.test": "Probar conexión",
"apiKey.testConnection": "Probar conexión API",
"apiKey.testing": "Probando…",
"charGraph.characters": "Personajes",
"charGraph.noCharacters": "Aún no hay personajes",
"charGraph.noCharactersHint": "Añade personajes en la vista Personajes para visualizar sus relaciones aquí.",
"charGraph.relationships": "Relaciones",
"charGraph.stats": "{{count}} Personajes · {{relations}} Relaciones",
"characters.emptyState.description": "Cada gran historia comienza con alguien. Añade un personaje desde cero o deja que la IA lo esboza a partir de un concepto.",
"characters.emptyState.title": "Tu lista de personajes está vacía",
"collab.close": "Cerrar panel de colaboración",
"collab.colorTitle": "Color (aleatorio al conectar)",
"collab.connect": "Conectar",
"collab.connected": "Conectado",
"collab.connectedUsers": "Usuarios conectados",
"collab.connecting": "Conectando…",
"collab.connectionError": "Error de conexión",
"collab.copy": "Copiar",
"collab.copyToClipboard": "Copiar al portapapeles",
"collab.disconnect": "Desconectar",
"collab.displayName": "Tu nombre para mostrar",
"collab.encryptionAriaLabel": "Estado del cifrado",
"collab.encryptionDerived": "Cifrado E2E (AES-256-GCM) — señalización + canal de datos",
"collab.encryptionPskOnly": "Solo aislamiento de sala — sin cifrado E2E",
"collab.identity": "Tu identidad",
"collab.p2pDescription": "Comparte el ID de sala con tus coautores. Todos en la misma sala ven los cambios en directo — sin servidor.",
"collab.p2pTitle": "Colaboración P2P en tiempo real",
"collab.passwordHint": "Todos los participantes deben introducir la misma contraseña para unirse a la sala.",
"collab.projectId": "ID del proyecto",
"collab.room": "Sala:",
"collab.roomId": "ID de sala",
"collab.roomPassword": "Contraseña de sala (opcional)",
"collab.roomPasswordPlaceholder": "Contraseña secreta para sala privada",
"collab.securityWarning": "Servidor de señalización público",
"collab.securityWarningDetail": "Las conexiones usan un servidor de retransmisión público por defecto. El contenido de la sala está cifrado P2P, pero los metadatos de conexión (IDs de sala) pasan por el relé. Para proyectos sensibles, considera el autoalojamiento.",
"collab.selfHostLinkLabel": "Más sobre el autoalojamiento",
"collab.technicalDescription": "La colaboración usa Yjs + WebRTC para sincronización P2P. Los datos se transfieren directamente entre navegadores — ningún servidor almacena tu contenido.",
"collab.technicalNote": "Nota técnica",
"collab.title": "Colaboración",
"collab.user": "Usuario: {{name}}",
"collab.waitingForUsers": "Esperando más participantes…",
"collab.waitingForUsersHint": "Comparte el código de sala con tus compañeros de escritura para invitarlos.",
"collab.you": "Tú",
"comments.add": "Añadir",
"comments.collapseReply": "Contraer",
"comments.delete": "Eliminar comentario",
"comments.empty": "Sin comentarios aún.",
"comments.newAriaLabel": "Texto del nuevo comentario",
"comments.newPlaceholder": "Añadir comentario…",
"comments.reply": "Responder",
"comments.replyAriaLabel": "Responder a {{author}}",
"comments.replyPlaceholder": "Escribe una respuesta…",
"comments.resolve": "Resolver",
"comments.resolved": "Resuelto",
"comments.send": "Enviar",
"comments.title": "Comentarios",
"comments.unresolve": "Reabrir",
"comments.unresolved": "{{n}} abiertos",
"comments.you": "Tú",
"common.abort": "Interrumpir",
"common.add": "Añadir",
"common.appLoading": "La aplicación se está cargando",
"common.back": "Atrás",
"common.badge.experimental": "Experimental",
"common.badge.beta": "Beta",
"common.badge.new": "Nuevo",
"common.cancel": "Cancelar",
"common.close": "Cerrar",
"common.copyToClipboard": "Copiar al portapapeles",
"common.delete": "Eliminar",
"common.dictation.start": "Iniciar dictado",
"common.dictation.stop": "Detener dictado",
"common.dictation.title": "Dictar texto",
"common.generate": "Generar",
"common.loading": "Cargando…",
"common.mainContent": "Contenido principal",
"common.more": "Más",
"common.moveDown": "Bajar",
"common.moveUp": "Subir",
"common.next": "Siguiente",
"common.noResults": "No results",
"common.notifications": "Notificaciones",
"common.redo": "Rehacer",
"common.save": "Guardar",
"common.saveCharacter": "Guardar personaje",
"common.saveWorld": "Guardar mundo",
"common.saved": "Todos los cambios guardados",
"common.saving": "Guardando...",
"common.search": "Search…",
"common.skipToContent": "Saltar al contenido principal",
"common.undo": "Deshacer",
"common.viewOpenedAnnouncement": "Vista: {{view}}",
"common.words": "palabras",
"consistencyChecker.checkButton": "Verificar coherencia",
"consistencyChecker.description": "Verifica la coherencia de tus personajes con el lore establecido, otros personajes y tu manuscrito.",
"consistencyChecker.noResults": "Sin resultados",
"consistencyChecker.noResultsHint": "Selecciona un personaje de la lista de la izquierda y haz clic en Verificar coherencia para analizar tu manuscrito.",
"consistencyChecker.results": "Resultados",
"consistencyChecker.severity.info": "Info",
"consistencyChecker.severity.warn": "Advertencia",
"consistencyChecker.severity.error": "Conflicto",
"consistencyChecker.refLabel": "Relacionado",
"consistencyChecker.noFindings": "No se encontraron inconsistencias — este personaje parece coherente.",
"consistencyChecker.selectCharacter": "Seleccionar personaje",
"consistencyChecker.selectPlaceholder": "Elige un personaje a verificar",
"consistencyChecker.storyBible.edgesTitle": "Co-ocurrencia de entidades (top)",
"consistencyChecker.storyBible.empty": "Activa «Story Bible avanzado» en Ajustes → IA → Indicadores de funciones, luego edita el manuscrito para extraer datos del grafo Codex.",
"consistencyChecker.storyBible.hintsTitle": "Sugerencias de coherencia",
"consistencyChecker.storyBible.title": "Story Bible (Codex)",
"consistencyChecker.title": "Verificador de coherencia",
"critic.analyzeButton": "Analizar texto",
"critic.description": "Obtén retroalimentación profesional sobre tu escritura y detecta agujeros de trama en tu historia.",
"critic.detectPlotHoles": "Detectar agujeros de trama",
"critic.noResults": "Sin resultados de análisis.",
"critic.plotAnalysis": "Análisis de trama",
"critic.results": "Resultados del análisis",
"critic.textAnalysis": "Análisis de texto",
"critic.textPlaceholder": "Pega tu texto aquí para analizarlo...",
"critic.title": "Crítico IA y Análisis de trama",
"crossSearch.hint": "Escribe para buscar título, logline, secciones del manuscrito y personajes.",
"crossSearch.indexEmpty": "Aún no hay proyectos indexados. Abre otros proyectos para agregarlos.",
"crossSearch.inputLabel": "Consulta de búsqueda",
"crossSearch.loadingIndex": "Cargando índice de proyectos…",
"crossSearch.matchType.character": "Personaje",
"crossSearch.matchType.logline": "Argumento",
"crossSearch.matchType.manuscript": "Manuscrito",
"crossSearch.matchType.title": "Título",
"crossSearch.noResults": "No se encontraron coincidencias.",
"crossSearch.panelLabel": "Buscar en el proyecto actual",
"crossSearch.placeholder": "Buscar título, argumento, manuscrito, personajes…",
"crossSearch.resultsLabel": "Resultados de búsqueda",
"crossSearch.scopeMultiProject": "Buscando en {{count}} proyecto(s) indexado(s)",
"crossSearch.scopeNote": "Buscando en el proyecto actual — búsqueda multiproyecto en v2.",
"crossSearch.title": "Búsqueda de proyecto",
"duckdb.migration.complete": "Base de datos de análisis lista",
"duckdb.migration.dismiss": "Descartar",
"duckdb.migration.failed": "Error al actualizar la base de datos de análisis — se reintentará al próximo inicio",
"duckdb.migration.running": "Actualizando la base de datos de análisis…",
"empty.manuscript.description": "Añade tu primera sección para empezar a escribir en el editor de manuscritos.",
"empty.manuscript.title": "Sin capítulos aún",
"error.ai.auth": "Clave de API no válida o ausente. Abre Ajustes → IA y modelos para añadirla o actualizarla.",
"error.ai.canceled": "La solicitud de IA se canceló.",
"error.ai.invalidRequest": "La solicitud de IA se rechazó por no ser válida. Reformula o acorta tu mensaje.",
"error.ai.network": "No se pudo conectar con el proveedor de IA. Comprueba tu conexión e inténtalo de nuevo.",
"error.ai.offline": "Parece que estás sin conexión. Reconéctate o cambia a un modelo local en Ajustes → IA y modelos.",
"error.ai.permanent": "La solicitud de IA falló. Inténtalo de nuevo más tarde.",
"error.ai.policy": "Esta solicitud está bloqueada por tu configuración de privacidad o modo de IA. Ajústala en Ajustes → IA y modelos.",
"error.ai.rateLimit": "El proveedor de IA está limitando las solicitudes. Espera un momento e inténtalo de nuevo.",
"error.ai.transient": "El servicio de IA tuvo un problema temporal. Inténtalo de nuevo.",
"error.apiErrorDescription": "La IA no pudo generar una respuesta. Comprueba tu conexión y clave API, luego inténtalo de nuevo. Si el problema persiste, el servicio puede estar temporalmente no disponible.",
"error.apiErrorTitle": "Error del asistente IA",
"error.boundary.description": "Se produjo un error inesperado. Puedes intentar reiniciar la vista o recargar la página.",
"error.boundary.reload": "Recargar página",
"error.boundary.report": "Reportar problema",
"error.boundary.reset": "Reiniciar vista",
"error.boundary.retryAnnouncement": "{{view}} reloaded after an error.",
"error.boundary.retryAnnouncementGeneric": "View reloaded after an error.",
"error.boundary.title": "Algo salió mal.",
"error.db.aborted": "La operación de base de datos fue cancelada.",
"error.db.invalidState": "Error interno de base de datos. Recarga la página.",
"error.db.quotaExceeded": "El almacenamiento del navegador está lleno. Elimina proyectos o instantáneas antiguas.",
"error.db.unknown": "Error desconocido al acceder a la base de datos.",
"error.deepLink.title": "Error al abrir el archivo del proyecto",
"error.deepLink.unknown": "Error desconocido",
"error.fileImportError": "Error de importación de archivo",
"error.mic.denied": "Acceso al micrófono denegado. Otorga permiso en los ajustes de tu navegador.",
"error.mic.generic": "Error de reconocimiento de voz: {{error}}",
"error.mic.network": "Error de red durante el reconocimiento de voz.",
"error.mic.noDevice": "No se encontró micrófono. Conecta un micrófono.",
"error.mic.noSpeech": "No se detectó voz. Inténtalo de nuevo.",
"error.mic.unsupported": "Idioma no compatible con el navegador.",
"error.ollama.unreachable": "Ollama no accesible ({{url}}): {{message}}",
"error.ollama.unreachableHint": "Ollama no accesible ({{url}}). Asegúrate de que Ollama está en ejecución: ollama serve",
"error.snapshotError": "Error de instantánea",
"export.epubExport": "Exportar EPUB 3.0",
"export.section": "Sección {{index}}",
"header.openMenu": "Abrir menú",
"palette.accessibility.highContrast": "Alternar alto contraste",
"palette.accessibility.largeText": "Alternar texto grande",
"palette.accessibility.reducedMotion": "Alternar movimiento reducido",
"palette.action.autoTheme": "Usar tema del sistema",
"palette.action.darkMode": "Cambiar a modo oscuro",
"palette.action.lightMode": "Cambiar a modo claro",
"palette.action.switchLanguageToDe": "Cambiar idioma a alemán",
"palette.action.switchLanguageToEn": "Cambiar idioma a inglés",
"palette.aiCharacter": "/ia personaje – Generar perfil de personaje",
"palette.aiConsistency": "/coherencia – Verificar coherencia",
"palette.aiCritic": "/crítico – Iniciar crítico IA",
"palette.aiMode.cloud": "Modo IA: Solo nube",
"palette.aiMode.eco": "Modo IA: Eco (ahorro de batería)",
"palette.aiMode.hybrid": "Modo IA: Híbrido (enrutamiento inteligente)",
"palette.aiMode.local": "Modo IA: Solo local (en el dispositivo)",
"palette.aiOutline": "/ia esquema – Generar esquema IA",
"palette.aiWrite": "/ia escribir – Abrir estudio de escritura IA",
"palette.aiWriter": "/ia escribir – Abrir estudio de escritura IA",
"palette.appearance.presetDefault": "Apariencia predeterminada",
"palette.appearance.presetSepia": "Preajuste de lectura sepia",
"palette.ariaLabel": "Paleta de comandos",
"palette.category.accessibility": "Accesibilidad",
"palette.category.actions": "Acciones rápidas",
"palette.category.ai": "Comandos IA",
"palette.category.appearance": "Apariencia y temas",
"palette.category.characters": "Personajes",
"palette.category.custom": "Fijado y personalizado",
"palette.category.editor": "Editor",
"palette.category.global": "General",
"palette.category.help": "Ayuda",
"palette.category.navigation": "Navegación",
"palette.category.settings": "Ajustes y sistema",
"palette.category.worlds": "Mundos",
"palette.command.homeDashboard": "Ir al panel de control",
"palette.command.openPalette": "Abrir paleta de comandos",
"palette.consistency": "/coherencia – Verificar coherencia",
"palette.editor.distractionFree": "Alternar modo sin distracciones",
"palette.editor.focusMode": "Alternar modo enfoque",
"palette.editor.fontMono": "Usar fuente monoespaciada",
"palette.editor.fontSans": "Usar fuente sin serifa",
"palette.editor.fontSerif": "Usar fuente con serifa",
"palette.editor.typewriterMode": "Alternar modo máquina de escribir",
"palette.editor.zenMode": "Alternar modo zen",
"palette.export": "/export – Exportar y descargar",
"palette.footer.navigate": "Navegar",
"palette.footer.pinHint": "Clic derecho: fijar / desfijar",
"palette.footer.select": "Seleccionar",
"palette.labs.crossProjectSearch": "Lab: Búsqueda entre proyectos",
"palette.labs.crossProjectToastBody": "La búsqueda en el selector de proyectos llegará pronto — quédate en el panel de control por ahora.",
"palette.labs.crossProjectToastTitle": "Búsqueda entre proyectos",
"palette.labs.healthScore": "Lab: Puntuación de salud del proyecto",
"palette.labs.healthScoreToastBody": "Activa la tarjeta del panel en Ajustes → IA → Opciones de labo, luego refina tus objetivos y listas de personajes.",
"palette.labs.healthScoreToastTitle": "Información de salud",
"palette.lang.switchTo": "Cambiar la interfaz a {{name}}",
"palette.noResults": "No se encontraron resultados.",
"palette.openRouter.disabledToast": "Proveedor OpenRouter desactivado",
"palette.openRouter.enabledToast": "Proveedor OpenRouter activado",
"palette.openRouter.noPause": "OpenRouter no tiene ninguna pausa por límite de tasa activa",
"palette.openRouter.resetCircuit": "Modo IA: Restablecer la pausa por límite de tasa de OpenRouter",
"palette.openRouter.resetToast": "Pausa de OpenRouter cancelada: las solicitudes se reanudarán",
"palette.openRouter.toggle": "Modo IA: Activar/desactivar el proveedor OpenRouter",
"palette.pin.badge": "Fijado",
"palette.placeholder": "Escribe un comando o busca...",
"palette.resultsLabel": "Resultados de comandos",
"palette.resultsLive": "{{count}} comandos listados",
"palette.section.allCommands": "Todos los comandos",
"palette.section.pinned": "Fijado",
"palette.section.recent": "Reciente",
"palette.section.suggestions": "Sugerido",
"palette.shortcut.newSectionToast": "Nueva sección añadida a tu manuscrito.",
"palette.shortcut.saveFailedTitle": "Error al guardar",
"palette.shortcut.saveNoProject": "No hay datos de proyecto disponibles.",
"palette.shortcut.saveSuccessBody": "Proyecto guardado en almacenamiento local.",
"palette.shortcut.saveSuccessTitle": "Guardado",
"palette.shortcut.searchHintBody": "Usa la paleta de comandos para ir a cualquier lugar — incluida la navegación tipo Búsqueda.",
"palette.shortcut.searchHintTitle": "Consejo de búsqueda en manuscrito",
"palette.shortcut.searchOpenPaletteAction": "Abrir paleta",
"palette.suggestion.fromDashboard": "Accede a la escritura desde tu panel de control",
"palette.suggestion.longDraft": "Ejecuta una revisión de coherencia en tu borrador",
"palette.suggestion.lowWordCount": "Inicia el estudio de escritura IA",
"palette.voice.listeningLive": "Entrada de voz activa",
"palette.voice.start": "Iniciar búsqueda por voz",
"palette.voice.stop": "Detener búsqueda por voz",
"preview.controls.ariaLabel": "Controles de vista previa",
"preview.controls.decreaseFontSize": "Reducir tamaño de fuente",
"preview.controls.exitFullscreen": "Salir de pantalla completa",
"preview.controls.export": "Exportar (EPUB)",
"preview.controls.pagedMode": "Vista de página",
"preview.progress.ariaLabel": "Progreso de lectura",
"preview.controls.fontFamily": "Tipo de letra",
"preview.controls.fontMono": "Monoespaciado",
"preview.controls.fontSerif": "Serif",
"preview.controls.fontSystemUi": "Sistema",
"preview.controls.fullscreen": "Pantalla completa",
"preview.controls.increaseFontSize": "Aumentar tamaño de fuente",
"preview.controls.wordCount": "Recuento de palabras",
"preview.emptyScene": "Sin contenido aún.",
"preview.noScenes": "El manuscrito está vacío",
"preview.noScenesHint": "Ve a la vista Manuscrito y añade tu primera escena para ver una vista previa aquí.",
"preview.title": "Vista previa del libro",
"preview.toc.ariaLabel": "Tabla de contenidos",
"preview.toc.close": "Cerrar tabla de contenidos",
"preview.toc.title": "Contenido",
"preview.toc.toggle": "Alternar tabla de contenidos",
"preview.untitledScene": "Escena sin título",
"preview.wordCount": "{{count}} palabras",
"proforge.dashboard.abortAria": "Cancelar canalización",
"proforge.dashboard.config.aiProvider": "Proveedor de IA:",
"proforge.dashboard.config.creativity": "Creatividad:",
"proforge.dashboard.config.genrePreset": "Preajuste de género:",
"proforge.dashboard.config.maxTokens": "Tokens máx.:",
"proforge.dashboard.config.ragMode": "Modo RAG:",
"proforge.dashboard.defaultLabel": "Canalización {{date}}",
"proforge.dashboard.hideConfig": "Ocultar configuración",
"proforge.dashboard.labelPlaceholder": "Etiqueta de la canalización (opcional)",
"proforge.dashboard.showConfig": "Mostrar configuración",
"proforge.dashboard.stageLabel.analytics": "8. Resumen de la ejecución",
"proforge.dashboard.stageLabel.archived": "Archivado",
"proforge.dashboard.stageLabel.copyEdit": "4. Corrección de estilo",
"proforge.dashboard.stageLabel.idle": "Listo",
"proforge.dashboard.stageLabel.intake": "1. Leyendo tu borrador",
"proforge.dashboard.stageLabel.lineProse": "3. Puliendo la prosa",
"proforge.dashboard.stageLabel.production": "6. Preparando tus archivos",
"proforge.dashboard.stageLabel.proof": "5. Revisión final",
"proforge.dashboard.stageLabel.publishing": "7. Preparación para publicar",
"proforge.dashboard.stageLabel.structural": "2. Dando forma a la historia",
"proforge.dashboard.stagesHeading": "Etapas de la canalización",
"proforge.dashboard.start": "Iniciar canalización",
"proforge.dashboard.starting": "Iniciando…",
"proforge.dashboard.trace": "Registro",
"proforge.dashboard.traceAria": "Ver registro de seguimiento",
"proforge.emptyState.description": "ProForge lee cada capítulo y te guía por la edición etapa por etapa. No se pierde nada — cada cambio es reversible.",
"proforge.emptyState.title": "Tu manuscrito, refinado.",
"proforge.enabledHint": "Pipeline ProForge activado. Abre la vista de Escritor y haz clic en el botón ProForge en el panel de herramientas.",
"proforge.loading.analytics": "Resumiendo la ejecución…",
"proforge.loading.copyEdit": "Cazando comas extraviadas…",
"proforge.loading.default": "Trabajando en ello…",
"proforge.loading.intake": "Leyendo tu borrador con atención…",
"proforge.loading.lineProse": "Escuchando el ritmo de tu prosa…",
"proforge.loading.production": "Preparando tus archivos…",
"proforge.loading.proof": "Una última lectura cuidadosa…",
"proforge.loading.publishing": "Preparándose para el mundo…",
"proforge.loading.structural": "Observando la forma de tu historia…",
"proforge.pipeline.noneActive": "Sin pipeline activa",
"proforge.pipeline.reviewRequired": "Experimental: se requiere tu revisión; el manuscrito nunca se modifica sin tu aprobación.",
"proforge.pipeline.title": "Ultimate Author Pipeline",
"proforge.progress.activeStage": "Etapa activa",
"proforge.progress.awaitingReviewHint": "⚠️ Esta etapa está esperando tu revisión. Haz clic en el botón de la etapa de arriba para revisar los elementos.",
"proforge.progress.completedStages": "Etapas completadas",
"proforge.progress.currentStatus": "Estado actual",
"proforge.progress.itemsCount": "{{count}} elementos",
"proforge.progress.metric.aiCalls": "Llamadas a IA",
"proforge.progress.metric.duration": "Duración",
"proforge.progress.metric.itemsFound": "Elementos encontrados",
"proforge.progress.metric.tokens": "Tokens",
"proforge.progress.metric.totalAiCalls": "Total de llamadas a IA",
"proforge.progress.metric.totalItems": "Total de elementos",
"proforge.progress.metric.totalTime": "Tiempo total",
"proforge.progress.metric.totalTokens": "Total de tokens",
"proforge.progress.noneRunning": "Ninguna canalización en ejecución.",
"proforge.progress.stageDetails": "Detalles de la etapa: {{stage}}",
"proforge.progress.statusLabel": "Estado",
"proforge.progress.totals": "Totales de la canalización",
"proforge.review.accept": "Aceptar",
"proforge.review.acceptAll": "Aceptar todo",
"proforge.review.acceptAllCritical": "Aceptar todo lo crítico",
"proforge.review.announceSubmitted": "Revisión de {{stage}} enviada",
"proforge.review.confidence": "{{percent}} % de confianza",
"proforge.review.counts": "{{pending}} pendientes · {{accepted}} aceptados · {{rejected}} rechazados",
"proforge.review.criticalHeadingOne": "{{count}} problema crítico requiere atención",
"proforge.review.criticalHeadingOther": "{{count}} problemas críticos requieren atención",
"proforge.review.filter.accepted": "Aceptados",
"proforge.review.filter.all": "Todos",
"proforge.review.filter.pending": "Pendientes",
"proforge.review.filter.rejected": "Rechazados",
"proforge.review.group.critical": "Acciones críticas",
"proforge.review.group.info": "Sugerencias",
"proforge.review.group.warning": "Advertencias",
"proforge.review.heading": "Revisión: {{stage}}",
"proforge.review.ignore": "Ignorar",
"proforge.review.moreCritical": "+{{count}} más problemas críticos abajo",
"proforge.review.noItems": "No hay elementos de revisión disponibles.",
"proforge.review.noItemsForFilter": "Ningún elemento coincide con este filtro.",
"proforge.review.original": "Original:",
"proforge.review.pendingCount": "{{count}} pendientes",
"proforge.review.proposed": "Propuesta:",
"proforge.review.quickAccept": "Aceptar rápido ({{count}})",
"proforge.review.quickAcceptTitle": "Aceptar todas las sugerencias no críticas de alta confianza",
"proforge.review.reject": "Rechazar",
"proforge.review.rejectAll": "Rechazar todo",
"proforge.review.severity.critical": "Crítico",
"proforge.review.severity.info": "Información",
"proforge.review.severity.warning": "Advertencia",
"proforge.review.showDetails": "Mostrar detalles",
"proforge.review.showLess": "Mostrar menos",
"proforge.review.skipStage": "Omitir fase",
"proforge.review.submitContinue": "Enviar y continuar",
"proforge.review.type.arcIssue": "Arco",
"proforge.review.type.consistencyIssue": "Coherencia",
"proforge.review.type.grammarEdit": "Gramática",
"proforge.review.type.legalWarning": "Legal",
"proforge.review.type.pacingIssue": "Ritmo",
"proforge.review.type.plotHole": "Vacío argumental",
"proforge.review.type.proseEdit": "Prosa",
"proforge.review.type.repetitionHit": "Repetición",
"proforge.review.type.structuralEdit": "Estructura",
"proforge.review.type.styleEdit": "Estilo",
"proforge.review.type.technicalIssue": "Técnico",
"proforge.stageName.analytics": "Análisis",
"proforge.stageName.archived": "Archivado",
"proforge.stageName.copyEdit": "Corrección de estilo",
"proforge.stageName.idle": "Inactivo",
"proforge.stageName.intake": "Recepción y diagnóstico",
"proforge.stageName.lineProse": "Línea y prosa",
"proforge.stageName.production": "Producción",
"proforge.stageName.proof": "Corrección de pruebas",
"proforge.stageName.publishing": "Publicación",
"proforge.stageName.structural": "Edición estructural",
"proforge.status.aborted": "Cancelado",
"proforge.status.accepted": "Aceptado",
"proforge.status.awaitingReview": "Esperando revisión",
"proforge.status.completed": "Completado",
"proforge.status.failed": "Fallido",
"proforge.status.idle": "Listo",
"proforge.status.pending": "Pendiente",
"proforge.status.rejected": "Rechazado",
"proforge.status.rolledBack": "Revertido",
"proforge.status.running": "En ejecución",
"proforge.status.skipped": "Omitido",
"proforge.toggle.activate": "Activar la canalización ProForge",
"proforge.toggle.deactivate": "Desactivar ProForge",
"progress.allTime.label": "palabras escritas en sesiones",
"progress.allTime.title": "Total histórico",
"progress.bestDay.title": "Mejor día",
"progress.bestDay.words": "palabras",
"progress.chart.ariaLabel": "Gráfico de velocidad de escritura para los últimos {{count}} días",
"progress.chart.noData": "Sin historial de escritura aún.",
"progress.chart.tableDate": "Fecha",
"progress.chart.tableWords": "Palabras escritas",
"progress.chart.title": "Velocidad de escritura (30 días)",
"progress.goals.daily": "Objetivo diario (palabras)",
"progress.goals.title": "Objetivos",
"progress.goals.weekly": "Objetivo semanal (palabras)",
"progress.heatmap.ariaLabel": "Mapa de calor de actividad de escritura",
"progress.heatmap.title": "Actividad (12 semanas)",
"progress.session.elapsed": "Transcurrido: {{time}}",
"progress.session.start": "Iniciar sesión",
"progress.session.stop": "Finalizar sesión",
"progress.session.title": "Sesión de escritura",
"progress.session.wordsWritten": "+{{n}} palabras en esta sesión",
"progress.streak.days": "Racha de {{n}} días",
"progress.streak.longest": "Más larga: {{n}} días",
"progress.streak.title": "Racha",
"progress.title": "Seguimiento de progreso",
"progress.today.ofGoal": "de {{goal}} objetivo",
"progress.today.remaining": "{{n}} palabras restantes",
"progress.today.title": "Hoy",
"progress.weekly.progress": "Progreso semanal",
"progress.weekly.title": "Esta semana",
"pwa.aiUnavailable": "Funciones de IA no disponibles.",
"pwa.backOnline": "Vuelves a estar en línea.",
"pwa.closeBanner": "Cerrar banner",
"pwa.closeMessage": "Cerrar mensaje",
"pwa.closeNotification": "Cerrar notificación",
"pwa.install": "Instalar",
"pwa.installApp": "Instalar aplicación",
"pwa.installBannerAriaLabel": "Instalar WorldScript Studio",
"pwa.installDescription": "Disponible sin conexión · Acceso directo desde la pantalla de inicio",
"pwa.installHint": "Disponible sin conexión · Acceso directo desde la pantalla de inicio",
"pwa.later": "Más tarde",
"pwa.offlineAiUnavailable": "Funciones de IA no disponibles.",
"pwa.offlineBadgeTitle": "Sin conexión",
"pwa.offlineNote": "Escritura, guardado e instantáneas siguen funcionando.",
"pwa.offlineWorksContinue": "Escritura, guardado y snapshots siguen funcionando.",
"pwa.shareReceivedHint": "Guardado para esta sesión — puedes pegarlo en el Estudio de escritura cuando quieras.",
"pwa.shareReceivedTitle": "Contenido compartido recibido",
"pwa.updateAvailable": "Actualización disponible",
"pwa.updateDescription": "Una nueva versión de WorldScript Studio está lista.",
"pwa.updateNow": "Actualizar ahora",
"pwa.wentOffline": "Estás sin conexión. La escritura y el guardado siguen funcionando.",
"reference.ariaLabel": "Panel de referencia",
"reference.binder.empty": "Sin elementos de carpeta vinculados a esta escena.",
"reference.characters.empty": "Sin personajes vinculados a esta escena.",
"reference.notes.ariaLabel": "Notas de escena",
"reference.notes.placeholder": "Notas de escena…",
"reference.reindex.action": "Reindexar para IA",
"reference.reindex.busy": "Indexando…",
"reference.reindex.done": "Índice IA actualizado",
"reference.reindex.doneDetail": "{{count}} pasajes indexados.",
"reference.reindex.error": "Error al reindexar",
"reference.tabs.binder": "Carpeta",
"reference.tabs.characters": "Personajes",
"reference.tabs.comments": "Comentarios",
"reference.tabs.notes": "Notas",
"reference.tabs.revisions": "Revisiones",
"reference.tabs.world": "Mundo",
"reference.world.empty": "Sin ubicaciones mundiales vinculadas a esta escena.",
"revisions.cancel": "Cancelar",
"revisions.confirmRestore": "Confirmar restauración",
"revisions.count": "{{n}} guardadas",
"revisions.delete": "Eliminar revisión",
"revisions.diff.identical": "El contenido es idéntico.",
"revisions.empty": "Sin revisiones guardadas.",
"revisions.hideDiff": "Ocultar diff",
"revisions.labelAriaLabel": "Etiqueta de revisión",
"revisions.labelPlaceholder": "Etiqueta (opcional)",
"revisions.restore": "Restaurar",
"revisions.saveNamed": "Guardar revisión",
"revisions.showDiff": "Mostrar diff",
"revisions.title": "Historial de revisiones",
"revisions.wordCount": "{{n}} palabras",
"roster.completeness": "Perfil {{percent}}% completo",
"roster.noResults.description": "Nada coincide con «{{query}}». Prueba otra búsqueda.",
"roster.noResults.title": "Sin coincidencias",
"roster.resultCount": "{{count}} de {{total}}",
"roster.sort.completeAsc": "Menos completos",
"roster.sort.completeDesc": "Más completos",
"roster.sort.nameAsc": "Nombre (A–Z)",
"roster.sort.nameDesc": "Nombre (Z–A)",
"roster.sortAriaLabel": "Orden",
"sceneboard.act1": "Acto 1",
"sceneboard.act1.label": "Acto 1 – Presentación",
"sceneboard.act2": "Acto 2",
"sceneboard.act2.label": "Acto 2 – Conflicto",
"sceneboard.act3": "Acto 3",
"sceneboard.act3.label": "Acto 3 – Resolución",
"sceneboard.addScene": "Añadir escena",
"sceneboard.addSceneToAct": "Añadir escena a este acto",
"sceneboard.ai.empty": "Sin sugerencias. Vuelve a ejecutar con contenido.",
"sceneboard.ai.panelTitle": "Sugerencias de trama IA",
"sceneboard.ai.contextNote": "El análisis usa títulos de escena y líneas iniciales, hasta ~2.000 caracteres.",
"sceneboard.ai.ragChunks": "{{count}} pasajes de la historia",
"sceneboard.ai.retry": "Sugerir de nuevo",
"sceneboard.ai.suggestBeat": "Sugerir beat IA",
"sceneboard.ai.suggesting": "Sugiriendo…",
"sceneboard.canvas.ariaLabel": "Canvas de escenas libre",
"sceneboard.canvas.connectionLabel": "conexión",
"sceneboard.canvas.connections": "conexiones",
"sceneboard.canvas.empty": "Aún no hay escenas — añade una arriba para colocarla en el canvas.",
"sceneboard.canvas.modeLabel": "Canvas",
"sceneboard.canvas.noConnections": "Sin conexiones",
"sceneboard.canvas.snapToGrid": "Ajustar a cuadrícula",
"sceneboard.confirmDelete": "¿Estás seguro de querer eliminar esta escena?",
"sceneboard.connectionToolbar.close": "Deseleccionar conexión",
"sceneboard.connectionToolbar.delete": "Eliminar conexión",
"sceneboard.connectionToolbar.label": "Barra de herramientas de conexión",
"sceneboard.connectionToolbar.labelInput": "Etiqueta de conexión",
"sceneboard.connectionToolbar.labelPlaceholder": "Etiqueta…",
"sceneboard.connectionToolbar.typeLabel": "Tipo de conexión",
"sceneboard.connectionType.cause-effect": "Causa y efecto",
"sceneboard.connectionType.character-arc": "Arco del personaje",
"sceneboard.connectionType.parallel": "Paralela",
"sceneboard.connectionType.subplot": "Subtrama",
"sceneboard.connectionType.temporal": "Temporal",
"sceneboard.dnd.cancelled": "Arrastre cancelado.",
"sceneboard.dnd.dropped": "Escena {{title}} soltada en el acto {{act}}.",
"sceneboard.dnd.over": "La escena {{title}} está sobre el acto {{act}}.",
"sceneboard.dnd.start": "Escena {{title}} agarrada. Usa las flechas para mover, Espacio para soltar, Escape para cancelar.",
"sceneboard.dragAriaLabel": "Ordenar escenas – Arrastrar y soltar o pulsa Enter para seleccionar, flechas para mover",
"sceneboard.dragEmptyHint": "Arrastra una escena aquí",
"sceneboard.editScene": "Editar escena: {{title}}",
"sceneboard.emptyState.description": "Añade tu primera escena o importa tu esquema para comenzar a planificar tu historia.",
"sceneboard.emptyState.title": "Tu tablero de tramas es un lienzo en blanco",
"sceneboard.minimap.ariaLabel": "Plot board mini-map",
"sceneboard.newSceneTitle": "Nueva escena",
"sceneboard.noScenes": "Sin escenas. Añade una para empezar.",
"sceneboard.scenes": "Escenas",
"sceneboard.status.draft": "Borrador",
"sceneboard.status.final": "Final",
"sceneboard.status.firstDraft": "Primer borrador",
"sceneboard.status.outline": "Esquema",
"sceneboard.status.revised": "Revisado",
"sceneboard.subplot.addSubplot": "Añadir subtrama",
"sceneboard.subplot.assignScenes": "Asignar escenas",
"sceneboard.subplot.changeColor": "Cambiar color",
"sceneboard.subplot.collapsePanel": "Contraer panel",
"sceneboard.subplot.customColor": "Color personalizado",
"sceneboard.subplot.defaultName": "Nueva subtrama",
"sceneboard.subplot.delete": "Eliminar subtrama",
"sceneboard.subplot.editName": "Editar nombre",
"sceneboard.subplot.empty": "Sin subtramas todavía",
"sceneboard.subplot.expandPanel": "Expandir panel",
"sceneboard.subplot.filterToggle": "Activar/desactivar filtro",
"sceneboard.subplot.namePlaceholder": "Nombre de la subtrama…",
"sceneboard.subplot.noScenes": "No hay escenas disponibles",
"sceneboard.subplot.panelLabel": "Panel de subtramas",
"sceneboard.subplot.title": "Subtramas",
"sceneboard.summary.placeholder": "Resumen de la escena...",
"sceneboard.tension.beatSheetHero": "El viaje del héroe",
"sceneboard.tension.beatSheetNone": "Ninguna",
"sceneboard.tension.beatSheetSaveCat": "Save the Cat",
"sceneboard.tension.beatSheetSelect": "Seleccionar hoja de ritmo",
"sceneboard.tension.beatSheetThreeAct": "Tres actos",
"sceneboard.tension.chartAriaLabel": "Gráfico de curva de tensión",
"sceneboard.tension.clearOverrides": "Restablecer ajustes",
"sceneboard.tension.noScenes": "Añade escenas para ver la curva de tensión.",
"sceneboard.tension.showBeatSheet": "Hoja de ritmo",
"sceneboard.tension.title": "Curva de tensión",
"sceneboard.timeline.chartTimed": "Línea temporal interna (escenas fechadas)",
"sceneboard.timeline.chartWords": "Escala relativa por palabras",
"sceneboard.timeline.hint": "Introduce inicio ISO y duración ISO 8601 (p. ej. PT2H o 3 días) al editar la escena.",
"sceneboard.timeline.locationLabel": "Ubicación principal",
"sceneboard.timeline.locationNone": "Sin ubicación vinculada",
"sceneboard.timeline.metaHeading": "Tiempo y lugar",
"sceneboard.timeline.modeBoard": "Tablero",
"sceneboard.timeline.modeTabs": "Modo del tablero de escenas",
"sceneboard.timeline.modeTimeline": "Línea temporal",
"sceneboard.timeline.noHints": "Sin problemas detectados en los campos de tiempo.",
"sceneboard.timeline.nonPositiveDuration": "{{title}}: la duración debe ser positiva.",
"sceneboard.timeline.overlap": "Solapamiento entre «{{prev}}» y «{{next}}».",
"sceneboard.timeline.povLabel": "Personaje POV",
"sceneboard.timeline.povNone": "Sin POV",
"sceneboard.timeline.regionChart": "Gráfico de línea temporal",
"sceneboard.timeline.regionRules": "Reglas de línea temporal",
"sceneboard.timeline.rulesTitle": "Pistas lógicas",
"sceneboard.timeline.rulesTruncated": "Solo los primeros avisos — lista ligera.",
"sceneboard.timeline.sceneDurationPlaceholder": "Duración (p. ej. PT90M o 2 días)",
"sceneboard.timeline.sceneStartPlaceholder": "Inicio de escena (fecha/hora ISO)",
"sceneboard.timeline.unparsedFields": "{{title}}: no se pudieron interpretar los campos de tiempo — revisa ISO.",
"sceneboard.title": "Tablero de escenas",
"sceneboard.words": "Palabras",
"templates.applyAsProject": "Aplicar como proyecto",
"templates.byAuthor": "por {{author}}",
"templates.chapters": "Capítulos",
"templates.communityError": "Error al cargar las plantillas de la comunidad.",
"templates.epubExport": "Exportar EPUB 3.0",
"templates.hideSections": "Ocultar secciones",
"templates.loadError": "Error al cargar las plantillas de la comunidad.",
"templates.offlineFallback": "Estás sin conexión — mostrando plantillas integradas. Para la oferta completa, conéctate a Internet.",
"templates.offlineNotice": "Estás sin conexión — mostrando plantillas integradas. Para la oferta completa, conéctate a Internet.",
"templates.showSections": "Mostrar secciones",
"tooltip.commandPalette": "Buscar comandos y navegar",
"tooltip.commandPaletteShortcut": "Ctrl+K",
"vc.active": "Activo",
"vc.allBranches": "Todas las ramas",
"vc.branchDescPlaceholder": "Descripción (opcional)",
"vc.branchNamePlaceholder": "Nombre de rama, p. ej. Final alternativo",
"vc.close": "Cerrar historial de versiones",
"vc.compare": "Comparar con el actual",
"vc.compareCurrentColumn": "Borrador actual",
"vc.compareHint": "Texto en paralelo; resaltado a nivel de línea.",
"vc.compareSnapshotColumn": "Instantánea",
"vc.compareTitle": "Diff de instantánea",
"vc.compareTruncated": "Mostrando las primeras {{shown}} de {{total}} líneas (menos carga en equipos lentos).",
"vc.compareWordHint": "Las líneas cambiadas también resaltan diferencias por palabras.",
"vc.createBranch": "Crear nueva rama",
"vc.createBranchDescription": "Las ramas permiten historias alternativas (p. ej. «Final alternativo»).",
"vc.createBranchTitle": "Crear nueva rama",
"vc.createSnapshot": "Crear nueva instantánea",
"vc.createSnapshotDescription": "Guarda el estado actual del manuscrito como una instantánea restaurable.",
"vc.createSnapshotTitle": "Crear instantánea",
"vc.created": "Creado",
"vc.currentBranch": "Rama actual",
"vc.deleteBranch": "Eliminar rama «{{name}}»",
"vc.deleteSnapshot": "Eliminar instantánea «{{label}}»",
"vc.newBranch": "+ Rama",
"vc.newSnapshot": "+ Instantánea",
"vc.noSnapshots": "Sin instantáneas.",
"vc.noSnapshotsHint": "Crea una instantánea para guardar el estado actual.",
"vc.restore": "Restaurar",
"vc.restoreDescription": "El manuscrito se restablecerá a la instantánea",
"vc.restoreSnapshot": "Restaurar instantánea «{{label}}»",
"vc.restoreTimestamp": "el",
"vc.restoreTitle": "Restaurar instantánea",
"vc.restoreWarning": "El estado actual se perderá si no existe una instantánea. ¡Crea una de antemano!",
"vc.scopeSection": "Sección",
"vc.snapshotPlaceholder": "p. ej. Antes del gran giro",
"vc.snapshots": "Instantáneas",
"vc.switch": "Cambiar",
"vc.switchBranch": "Cambiar de rama",
"vc.switchBranchTitle": "Cambiar de rama",
"vc.title": "Historial de versiones",
"vc.words": "palabras",
"voice.cancelSpeech": "Cancelar voz",
"voice.modeChip.commands": "Comandos",
"voice.modeChip.dictation": "Dictado",
"voice.feedback.confidence": "Confianza {{percent}}%",
"voice.panelLabel": "Control de voz",
"voice.permissionDenied": "Acceso al micrófono denegado. Permite el acceso al micrófono en la configuración de tu navegador.",
"voice.startDictation": "Iniciar dictado",
"voice.startListening": "Iniciar escucha",
"voice.status.dictating": "Dictando",
"voice.status.inactive": "Inactivo",
"voice.status.listening": "Escuchando",
"voice.status.processing": "Procesando",
"voice.status.speaking": "Hablando",
"voice.stopDictation": "Detener dictado",
"voice.stopListening": "Detener escucha",
"worlds.emptyState.description": "Construye los lugares, reglas e historias en los que vive tu historia. Comienza con una ubicación.",
"worlds.emptyState.title": "El mundo te espera"
}