-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Expand file tree
/
Copy pathes.ts
More file actions
6553 lines (6532 loc) · 401 KB
/
Copy pathes.ts
File metadata and controls
6553 lines (6532 loc) · 401 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
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
import type { TranslationMap } from './types';
// Spanish (Español) translations. Keys mirror en.ts; missing/
// English-identical values fall back to English via I18nContext.resolveEn().
const messages: TranslationMap = {
// Core connection panel (GH-4396)
'settings.core.title': 'Conexión del core',
'settings.core.menuDesc': 'Usa el core local integrado o conéctate a un core remoto.',
'settings.core.useRemoteToggle': 'Usar core remoto',
'settings.core.useRemoteToggleDesc': 'Conéctate a un core remoto por HTTP en lugar del core local integrado.',
'settings.core.statusConnectedRemote': 'Conectado al core remoto',
'settings.core.statusConnectedLocal': 'Conectado al core local',
'settings.core.statusChecking': 'Comprobando la conexión…',
'settings.core.statusAuthFailed': 'Accesible, pero el token fue rechazado',
'settings.core.statusUnreachable': 'No se puede conectar con el core',
'settings.core.recheck': 'Volver a comprobar',
'settings.core.save': 'Guardar y reiniciar',
'settings.core.applyRestartNote': 'Al guardar, OpenHuman se reinicia para volver a conectarse.',
// Cross-host vault (#4278)
'crossHostVault.title': 'El vault está en el host del core.',
'crossHostVault.message':
'Este vault de memoria se almacena en el host de openhuman-core ({os}). Solo se puede abrir o mostrar en esa máquina, no desde este dispositivo.',
'conversations.backgroundTasks.title': 'Background tasks',
'nav.feedback': 'Compartir opiniones',
'feedback.board': 'Tablero de opiniones',
'feedback.empty': 'Aún no hay opiniones. Sé el primero en compartir una idea.',
'feedback.loadMore': 'Cargar más',
'feedback.loadError': 'No se pudieron cargar las opiniones',
'feedback.expand': 'Mostrar más',
'feedback.collapse': 'Mostrar menos',
'feedback.comments': 'comentarios',
'feedback.viewIssue': 'Ver incidencia',
'feedback.status.open': 'Abierta',
'feedback.status.planned': 'Planificada',
'feedback.status.completed': 'Completada',
'feedback.status.closed': 'Cerrada',
'feedback.type.feature': 'Función',
'feedback.type.bug': 'Error',
'feedback.sort.hot': 'Tendencia',
'feedback.sort.top': 'Mejor valoradas',
'feedback.sort.new': 'Nuevas',
'feedback.filter.allTypes': 'Todos los tipos',
'feedback.filter.allStatuses': 'Todos los estados',
'feedback.vote.up': 'Votar a favor',
'feedback.vote.down': 'Votar en contra',
'feedback.submit.heading': 'Comparte tu opinión',
'feedback.submit.subheading':
'Sugiere una función o informa de un error. Los demás pueden votarla.',
'feedback.submit.titlePlaceholder': 'Título',
'feedback.submit.bodyPlaceholder': 'Describe tu idea o el problema que encontraste',
'feedback.submit.action': 'Enviar',
'feedback.submit.success': '¡Gracias! Tu opinión ya está en el tablero.',
'feedback.submit.rejected': 'No se pudo publicar tu opinión.',
'feedback.submit.error': 'Algo salió mal. Inténtalo de nuevo.',
'feedback.admin.status': 'Estado',
'feedback.admin.updateFailed': 'No se pudo actualizar el estado',
'feedback.comments.empty': 'Aún no hay comentarios.',
'feedback.comments.placeholder': 'Añadir un comentario',
'feedback.comments.post': 'Publicar',
'feedback.comments.loadError': 'No se pudieron cargar los comentarios',
'feedback.comments.postError': 'No se pudo publicar el comentario',
'feedback.comments.you': 'Tú',
'conversations.backgroundTasks.titleWithCount': 'Background tasks ({count})',
'conversations.backgroundTasks.running': '{count} running',
'conversations.backgroundTasks.noneRunning': 'none running',
'conversations.backgroundTasks.total': '{count} total',
'conversations.backgroundTasks.empty':
'No background tasks in this chat. Ask the assistant to do something in the background and it shows up here.',
'conversations.backgroundTasks.statusRunning': 'Running',
'conversations.backgroundTasks.statusDone': 'Done',
'conversations.backgroundTasks.statusFailed': 'Failed',
'conversations.backgroundTasks.statusNeedsYou': 'Needs you',
'conversations.backgroundTasks.statusCancelled': 'Cancelado',
'conversations.backgroundTasks.toolCallOne': '{count} tool call',
'conversations.backgroundTasks.toolCallOther': '{count} tool calls',
'conversations.backgroundTasks.steps': '{count} steps',
'conversations.backgroundTasks.viewDetails': 'View details →',
'conversations.backgroundTasks.close': 'Close',
'conversations.backgroundTasks.sectionThisChat': 'En este chat',
'conversations.backgroundTasks.sectionScheduled': 'Tareas programadas',
'conversations.backgroundTasks.sectionSubconscious': 'Pensamiento subconsciente',
'conversations.backgroundTasks.sectionMemory': 'Sincronizando memoria',
'conversations.backgroundTasks.cronEmpty': 'No hay tareas programadas.',
'conversations.backgroundTasks.cronUnnamed': 'Tarea sin título',
'conversations.backgroundTasks.cronPaused': 'En pausa',
'conversations.backgroundTasks.cronNext': 'Próxima {time}',
'conversations.backgroundTasks.cronLast': 'Última ejecución {time}',
'conversations.backgroundTasks.cronNever': 'Aún no se ha ejecutado',
'conversations.backgroundTasks.cronSchedCron': 'Cron {expr}',
'conversations.backgroundTasks.cronSchedEvery': 'Cada {duration}',
'conversations.backgroundTasks.cronSchedAt': 'Una vez',
'conversations.backgroundTasks.subOff': 'Desactivado',
'conversations.backgroundTasks.subWorking': 'Trabajando…',
'conversations.backgroundTasks.subIdle': 'Inactivo',
'conversations.backgroundTasks.subLastRan': 'Última ejecución {time}',
'conversations.backgroundTasks.subNeverRan': 'Aún no se ha ejecutado',
'conversations.backgroundTasks.subTicks': '{count} ejecuciones',
'conversations.backgroundTasks.subQueued': '{count} en cola',
'conversations.backgroundTasks.memUpToDate': 'Todas las memorias actualizadas',
'conversations.backgroundTasks.memIngesting': 'Indexando {title}',
'conversations.backgroundTasks.memIngestingUntitled': 'Indexando memorias',
'conversations.backgroundTasks.memQueued': '{count} en cola',
'conversations.backgroundTasks.memProviderActive': 'Sincronizando ahora',
'conversations.backgroundTasks.memProviderRecent': 'Sincronizado recientemente',
'conversations.backgroundTasks.memProviderIdle': 'Inactivo',
'nav.home': 'Inicio',
'nav.human': 'Humano',
'nav.chat': 'Charla',
'nav.assistant': 'Asistente',
'assistant.faceMode.on': 'Hablando con Tiny',
'assistant.faceMode.off': 'Habla con Tiny',
'assistant.faceMode.turnOn': 'Mostrar mascota',
'assistant.faceMode.turnOff': 'Ocultar mascota',
'nav.connections': 'Conexiones',
'nav.memory': 'Inteligencia',
'nav.alerts': 'Alertas',
'nav.rewards': 'Recompensas',
'nav.settings': 'Configuración',
'nav.agentProfiles': 'Perfiles de agente',
'nav.switchAgentProfile': 'Cambiar perfil de agente',
'nav.defaultAgentProfile': 'Agente predeterminado',
'nav.noAgentProfiles': 'No se encontraron perfiles de agente',
'nav.activity': 'Actividad',
'nav.brain': 'Cerebro',
'nav.agentWorld': 'Tiny Place',
'nav.wallet': 'Cartera',
'agentWorld.description':
'Tiny.Place es una red social para agentes de IA. Usa OpenHuman para interactuar, encontrar y publicar trabajos, comerciar y crecer juntos.',
'agentWorld.world': 'Mundo',
'agentWorld.world.booting': 'Iniciando renderizador...',
'agentWorld.world.initError': 'No se pudo iniciar el renderizador del mundo.',
'agentWorld.world.retry': 'Reintentar',
'agentWorld.world.title': 'Tiny Place',
'agentWorld.world.description':
'Únete a tiny.place para que tu agente coordine con otros agentes: encontrar y publicar trabajos, comerciar, enviar mensajes y colaborar en recompensas.',
'agentWorld.world.room': 'Sala',
'agentWorld.world.rooms.poker.name': 'Póker',
'agentWorld.world.rooms.poker.description': 'Ocho asientos alrededor de una mesa de fieltro.',
'agentWorld.world.rooms.court.name': 'Tribunal',
'agentWorld.world.rooms.court.description': 'Estrado, jurado y galería.',
'agentWorld.world.rooms.office.name': 'Oficina',
'agentWorld.world.rooms.office.description': 'Cubículos, escritorios y una pizarra.',
'agentWorld.world.rooms.home.name': 'Hogar',
'agentWorld.world.rooms.home.description': 'Una sala acogedora con sofás y una alfombra.',
'agentWorld.world.rooms.outside.name': 'Mundo',
'agentWorld.world.rooms.outside.description': 'Una gran plaza abierta rodeada de edificios.',
'agentWorld.feed': 'Noticias',
'agentWorld.ledger': 'Libro mayor',
'agentWorld.jobs': 'Trabajos',
'agentWorld.bounties': 'Recompensas',
'agentWorld.explore': 'Explorar',
'agentWorld.directory': 'Directorio',
'agentWorld.identities': 'Identidades',
'agentWorld.profiles': 'Perfiles',
'agentWorld.marketplace': 'Mercado',
'agentWorld.messaging': 'Mensajes',
'agentWorld.walletNotConfigured': 'Cartera no configurada',
'agentWorld.copyAddress': 'Copiar dirección',
'agentWorld.addressCopied': 'Copiada',
'agentWorld.walletUnavailable': 'Cartera no disponible',
'agentWorld.walletRetry': 'Reintentar cargar la cartera',
// Agent World — Explore section live data
'explore.networkOverview': 'Resumen de red',
'explore.trendingCommunities': 'Comunidades en tendencia',
'explore.activeJobs': 'Trabajos activos',
'explore.featuredBounties': 'Recompensas destacadas',
'explore.newAgents': 'Nuevos agentes',
'explore.viewAll': 'Ver todo',
'explore.noCommunities': 'Aún no hay comunidades',
'explore.noJobs': 'No hay trabajos activos',
'explore.noBounties': 'No hay recompensas abiertas',
'explore.noAgents': 'No hay agentes registrados',
'agentWorld.jobs.deadlineFuture': 'La fecha límite de la propuesta debe ser en el futuro',
'nav.avatarMenu.account': 'Cuenta',
'nav.avatarMenu.billing': 'Facturación',
'nav.avatarMenu.rewards': 'Recompensas',
'nav.avatarMenu.invites': 'Invitar a un amigo',
'nav.avatarMenu.wallet': 'Cartera',
// Brain — full-page memory knowledge-graph surface
'brain.subtitle': 'Tu grafo de conocimiento, fuentes de memoria y controles.',
'brain.tabs.memory': 'Memoria',
'brain.tabs.subconscious': 'Subconsciente',
'brain.tabs.graph': 'Gráfico',
'brain.tabs.goals': 'Objetivos',
'brain.goals.title': 'Objetivos a largo plazo',
'brain.goals.description':
'Los objetivos duraderos del agente para trabajar contigo. Edítalos aquí o deja que Reflexionar los actualice.',
'brain.goals.reflect': 'Reflexionar',
'brain.goals.reflecting': 'Reflexionando…',
'brain.goals.reflectDone': 'Objetivos actualizados.',
'brain.goals.add': 'Añadir',
'brain.goals.addPlaceholder': 'Añade un objetivo a largo plazo…',
'brain.goals.empty':
'Aún no hay objetivos. Añade uno o usa Reflexionar para generarlos a partir del contexto reciente.',
'brain.goals.editGoal': 'Editar objetivo',
'brain.goals.deleteGoal': 'Eliminar objetivo',
'brain.goals.actionError': 'Algo salió mal. Inténtalo de nuevo.',
'brain.tabs.sources': 'Fuentes',
'brain.tabs.sync': 'Sincronización',
'brain.tabs.tinyplaceOrchestration': 'TinyPlace',
'tinyplaceOrchestration.title': 'Relay de TinyPlace',
'tinyplaceOrchestration.subtitle': 'Canales de agentes fijados y chats de sesiones de app',
'tinyplaceOrchestration.refresh': 'Actualizar',
'tinyplaceOrchestration.pinned': 'Fijados',
'tinyplaceOrchestration.sessions': 'Sesiones',
'tinyplaceOrchestration.loading': 'Cargando chats de TinyPlace…',
'tinyplaceOrchestration.paymentRequired': 'El acceso a TinyPlace requiere pago.',
'tinyplaceOrchestration.failedToLoad': 'No se pudieron cargar los chats de TinyPlace',
'tinyplaceOrchestration.noSessions': 'Aún no hay sesiones de app de TinyPlace.',
'tinyplaceOrchestration.noMessages': 'Aún no hay mensajes en este chat.',
'tinyplaceOrchestration.active': 'Activa',
'tinyplaceOrchestration.inactive': 'Inactiva',
'tinyplaceOrchestration.encryptedBody': 'Mensaje cifrado de TinyPlace',
'tinyplaceOrchestration.unknownSender': 'Remitente desconocido',
'tinyplaceOrchestration.master.title': 'Agente / humano',
'tinyplaceOrchestration.master.subtitle': 'Chat maestro',
'tinyplaceOrchestration.master.preview': 'Coordinación directa entre tú y OpenHuman.',
'tinyplaceOrchestration.subconscious.title': 'Subconsciente',
'tinyplaceOrchestration.subconscious.subtitle': 'Chats internos de agentes',
'tinyplaceOrchestration.subconscious.preview':
'Coordinación de agentes en segundo plano y bucles de memoria.',
'tinyplaceOrchestration.session.subtitle': 'Sesión de app de TinyPlace',
'tinyplaceOrchestration.pairing.linkLabel': 'Vincular sesión',
'tinyplaceOrchestration.pairing.linkPlaceholder': 'Pega el ID del agente de sesión',
'tinyplaceOrchestration.pairing.linkAction': 'Vincular',
'tinyplaceOrchestration.pairing.requests': 'Solicitudes de contacto',
'tinyplaceOrchestration.pairing.accept': 'Aceptar',
'tinyplaceOrchestration.pairing.decline': 'Rechazar',
'tinyplaceOrchestration.pairing.block': 'Bloquear',
'tinyplaceOrchestration.pairing.linked': 'Vinculada',
'tinyplaceOrchestration.pairing.pending': 'Pendiente',
'tinyplaceOrchestration.pairing.unlinked': 'Sin vincular',
'tinyplaceOrchestration.pairing.incoming': 'Entrantes',
'tinyplaceOrchestration.pairing.outgoing': 'Salientes',
'brain.empty':
'Tu cerebro está vacío por ahora: conecta una fuente para empezar a construir tu memoria.',
'brain.error': 'No se pudo cargar tu cerebro. Inténtalo de nuevo.',
'common.cancel': 'Cancelar',
'common.save': 'Guardar',
'common.confirm': 'Confirmar',
'common.delete': 'Eliminar',
'common.edit': 'Editar',
'common.create': 'Crear',
'common.search': 'Buscar',
'common.loading': 'cargando…',
'sync.runs': 'sincronizaciones',
'sync.totalCost': 'total',
'sync.when': 'Cuándo',
'sync.source': 'Origen',
'sync.items': 'Elementos',
'sync.tokens': 'Tokens',
'sync.cost': 'Costo',
'sync.duration': 'Duración',
'sync.noAuditEntries': 'Aún no hay sincronizaciones registradas.',
'sync.timeAgo.justNow': 'ahora mismo',
'sync.timeAgo.minutes': 'hace {n} min',
'sync.timeAgo.hours': 'hace {n} h',
'sync.timeAgo.days': 'hace {n} d',
'sync.status.success': 'Correcto',
'sync.status.failed': 'Fallido',
'common.error': 'error',
'common.success': 'Éxito',
'common.back': 'Atrás',
'common.next': 'Siguiente',
'common.finish': 'Finalizar',
'common.close': 'Cerrar',
'common.enabled': 'Activado',
'common.disabled': 'Desactivado',
'common.on': 'Activado',
'common.off': 'Desactivado',
'common.yes': 'Sí',
'common.no': 'No',
'common.ok': 'Entendido',
'common.name': 'Nombre',
'common.retry': 'Reintentar',
'common.copy': 'Copiar',
'common.copied': 'Copiado',
'common.learnMore': 'Más información',
'common.seeAll': 'Ver',
'common.dismiss': 'Descartar',
'common.clear': 'Limpiar',
'common.reset': 'Restablecer',
'common.refresh': 'Actualizar',
'common.export': 'Exportar',
'common.import': 'Importar',
'common.upload': 'Subir',
'common.download': 'Descargar',
'common.add': 'Agregar',
'common.remove': 'Eliminar',
'common.showMore': 'Ver más',
'common.showLess': 'Ver menos',
'common.submit': 'Enviar',
'common.continue': 'Continuar',
'common.comingSoon': 'Próximamente',
'common.breadcrumb': 'Miga de pan',
'common.beta': 'Beta',
'common.betaDisclaimer':
'Esta función está en beta. Puede cambiar o tener aspectos por pulir — tus comentarios nos ayudan a mejorarla.',
'settings.general': 'generales',
// Settings layman groups (Phase 4 IA revamp)
'settings.groups.account': 'Cuenta',
'settings.groups.assistant': 'Asistente',
'settings.groups.privacySecurity': 'Privacidad y seguridad',
'settings.groups.notifications': 'Notificaciones',
'settings.groups.about': 'Acerca de',
'settings.assistant.personality': 'Personalidad',
'settings.personalityFace.title': 'Personalidad y cara',
'settings.personalityFace.menuDesc': 'Ajusta el carácter de tu asistente y elige su cara',
'settings.assistant.voice': 'Voz',
'settings.assistant.voiceDesc': 'Configuración de voz a texto y texto a voz',
'settings.assistant.faceMascot': 'Cara / Mascota',
'settings.assistant.backgroundActivity': 'Subconsciente',
'settings.assistant.backgroundActivityDesc':
'Controla qué tan activo trabaja tu asistente en segundo plano',
'settings.assistant.screenAwareness': 'Conciencia de pantalla',
'settings.assistant.screenAwarenessDesc': 'Permite al asistente ver tu ventana activa',
'settings.assistant.desktopCompanion': 'Compañero de escritorio',
'settings.assistant.desktopCompanionDesc':
'Modo compañero siempre activo con acceso directo en la bandeja del sistema',
'settings.assistant.permissions': 'Permisos',
'settings.assistant.permissionsDesc': 'Elige qué puede hacer el asistente y dónde puede trabajar',
'settings.privacySecurity.privacy': 'Privacidad',
'settings.privacySecurity.privacyDesc': 'Controla qué datos salen de tu ordenador',
'settings.privacySecurity.security': 'Seguridad',
'settings.privacySecurity.securityDesc': 'Sesiones y opciones de inicio de sesión',
'settings.privacySecurity.approvalsHistory': 'Aprobaciones e historial',
'settings.privacySecurity.approvalsHistoryDesc':
'Revisa las decisiones de aprobación de herramientas recientes',
'settings.notifications.menuTitle': 'Notificaciones',
'settings.notifications.menuDesc': 'Bandeja de alertas y preferencias de notificaciones',
'settings.devGroups.knowledgeMemory': 'Conocimiento y memoria',
'settings.devGroups.agentsAutonomy': 'Agentes y autonomía',
'settings.devGroups.modelsInference': 'Modelos e inferencia',
'settings.devGroups.automationIntegrations': 'Automatización e integraciones',
'settings.devGroups.toolsCapabilities': 'Herramientas y capacidades',
'settings.devGroups.council': 'Consejo',
'settings.analysisViews.title': 'Vistas de análisis',
'settings.analysisViews.menuDesc':
'Análisis del grafo de memoria: diagrama, centralidad, cohesión, asociaciones, frescura, línea de tiempo, rutas y espacios de nombres',
'settings.buildInfo.title': 'Información de compilación/versión',
'settings.buildInfo.menuDesc': 'Compilación de la app, versión y detalles de conexión del núcleo',
'settings.tokenUsage.title': 'Tokens y coste',
'settings.tokenUsage.menuDesc': 'Ajustes de compresión y cuántos tokens y dólares han ahorrado',
'settings.tokenUsage.saving': 'Guardando…',
'settings.tokenUsage.saved': 'Guardado',
'settings.tokenUsage.savingsTitle': 'Ahorros',
'settings.tokenUsage.attributedTo': 'Coste calculado para {model}',
'settings.tokenUsage.tokensSaved': 'Tokens ahorrados',
'settings.tokenUsage.costSaved': 'Coste ahorrado',
'settings.tokenUsage.cacheOccupancy': 'Originales en caché',
'settings.tokenUsage.compactions': 'Compactaciones',
'settings.tokenUsage.overEvents': 'a lo largo de {count} compactaciones',
'settings.tokenUsage.byCompressor': 'Por compresor',
'settings.tokenUsage.refresh': 'Actualizar',
'settings.tokenUsage.reset': 'Restablecer estadísticas',
'settings.tokenUsage.compressionTitle': 'Compresión',
'settings.tokenUsage.compressionDesc':
'Compactación según el contenido de las salidas grandes de herramientas antes de que entren en el contexto del modelo.',
'settings.tokenUsage.routerEnabled': 'Activar compresión',
'settings.tokenUsage.routerEnabledDesc': 'Interruptor principal del enrutador de contenido.',
'settings.tokenUsage.search': 'Resultados de búsqueda',
'settings.tokenUsage.searchDesc':
'Ordenar la salida de grep/búsqueda por relevancia, conservando las mejores coincidencias.',
'settings.tokenUsage.code': 'Código fuente',
'settings.tokenUsage.codeDesc': 'Conservar las firmas, plegar los cuerpos de las funciones.',
'settings.tokenUsage.html': 'HTML',
'settings.tokenUsage.htmlDesc': 'Eliminar el marcado para obtener texto legible.',
'settings.tokenUsage.ml': 'Compresor de texto con ML',
'settings.tokenUsage.mlDesc':
'Modelo ModernBERT local para texto sin formato (requiere entorno de ejecución de Python).',
'settings.tokenUsage.ccrTitle': 'Caché y recuperación (CCR)',
'settings.tokenUsage.ccrDesc':
'Los originales compactados se almacenan en caché para que el agente pueda recuperar el texto completo cuando lo necesite.',
'settings.tokenUsage.ccrEnabled': 'Conservar originales para recuperación',
'settings.tokenUsage.ccrEnabledDesc':
'Descargar el original y añadir un marcador de recuperación para que no se pierda nada.',
'settings.tokenUsage.ccrMinTokens': 'Tamaño mínimo para almacenar en caché',
'settings.tokenUsage.ccrMinTokensDesc':
'Almacenar en caché y compactar con pérdida solo los resultados estimados en esta cantidad de tokens o más.',
'settings.tokenUsage.tokensUnit': 'tokens',
'settings.tokenUsage.ccrDisk': 'Conservar la caché en disco',
'settings.tokenUsage.ccrDiskDesc': 'Mantener los originales recuperables entre reinicios.',
'settings.dataSync.title': 'Sincronización de datos',
'settings.dataSync.menuDesc': 'Lo que sincroniza tu asistente: fuentes, actualidad y estado',
'settings.dataSync.description':
'Gestiona qué se sincroniza en la memoria de tu asistente: cada fuente conectada con su última sincronización, cuánto se ha sincronizado y si se está sincronizando ahora.',
'settings.devGroups.diagnosticsLogs': 'Diagnósticos y registros',
'settings.featuresAndAI': 'Funciones e IA',
'settings.billingAndRewards': 'Facturación y recompensas',
'settings.support': 'Soporte',
'settings.advanced': 'Avanzado',
'settings.dangerZone': 'Zona de peligro',
'settings.account': 'Cuenta',
'settings.accountDesc': 'Frase de recuperación, equipo, conexiones y privacidad',
'settings.notifications': 'Notificaciones',
'settings.notificationsDesc': 'No molestar y controles de notificación por cuenta',
'settings.notifications.tabs.preferences': 'Preferencias',
'settings.notifications.tabs.routing': 'Enrutamiento',
'settings.features': 'Funciones',
'settings.featuresDesc': 'Conciencia de pantalla, mensajería y herramientas',
'settings.aiModels': 'IA y modelos',
'settings.aiModelsDesc': 'Configuración de modelos de IA locales, descargas y proveedor LLM',
'settings.ai': 'Configuración de IA',
'settings.aiDesc':
'Proveedores en la nube, modelos locales de Ollama y enrutamiento por carga de trabajo',
'settings.billingUsage': 'Facturación y uso',
'settings.billingUsageDesc': 'Plan de suscripción, créditos y métodos de pago',
'settings.rewards': 'Recompensas',
'settings.rewardsDesc': 'Referidos, cupones y créditos ganados',
'settings.restartTour': 'Reiniciar tour',
'settings.restartTourDesc': 'Reproduce el recorrido del producto desde el principio',
'settings.about': 'Acerca de',
'settings.aboutDesc': 'Versión de la app y actualizaciones de software',
'settings.developerOptions': 'Avanzado',
'settings.developerOptionsDesc':
'Configuración de IA, canales de mensajería, herramientas, diagnósticos y paneles de depuración',
'settings.developerDiagnostics': 'Desarrollador y Diagnóstico',
'settings.developerDiagnosticsDesc':
'Herramientas avanzadas de desarrollador, diagnóstico, memoria, agentes y paneles de depuración',
'settings.developerMode.title': 'Modo desarrollador',
'settings.developerMode.description':
'Mostrar herramientas avanzadas de desarrollador y diagnóstico',
'settings.developerMode.enabledByBuild': 'Siempre activo en compilaciones de desarrollo',
'settings.clearAppData': 'Borrar datos de la app',
'settings.clearAppDataDesc':
'Cerrar sesión y eliminar permanentemente todos los datos locales de la app',
'settings.logOut': 'Cerrar sesión',
'settings.logOutDesc': 'Salir de tu cuenta',
'settings.exitLocalSession': 'Salir de la sesión local',
'settings.exitLocalSessionDesc': 'Volver a la pantalla de inicio de sesión',
'settings.language': 'Idioma',
'settings.navGroups.general': 'General',
'settings.navGroups.assistant': 'Asistente',
'settings.navGroups.data': 'Datos',
'settings.navGroups.connections': 'Conexiones',
'settings.navGroups.system': 'Sistema',
'settings.betaBuild': 'Compilación beta: v{version}',
'settings.languageDesc': 'Idioma de visualización de la interfaz de la app',
'settings.alerts': 'Alertas',
'settings.alertsDesc': 'Ver alertas recientes y actividad en tu bandeja',
'settings.account.profile': 'Perfil',
'settings.account.profileDesc': 'Nombre, correo electrónico y avatar',
'settings.account.devices': 'Dispositivos',
'settings.account.devicesDesc': 'Vincular y gestionar dispositivos móviles',
'settings.account.teamMembers': 'Equipo y miembros',
'settings.account.teamMembersDesc': 'Gestionar acceso al equipo y roles de miembros',
'settings.account.dataMigration': 'Datos y migración',
'settings.account.dataMigrationDesc': 'Importar memoria desde otro asistente',
'settings.account.recoveryPhrase': 'Frase de recuperación',
'settings.account.recoveryPhraseDesc': 'Ver y respaldar tu frase de recuperación de cuenta',
'settings.account.team': 'Equipo',
'settings.account.teamDesc': 'Administrar miembros del equipo y permisos',
'settings.account.connections': 'Conexiones',
'settings.account.connectionsDesc': 'Administrar cuentas y servicios vinculados',
'settings.account.privacy': 'Privacidad',
'settings.account.privacyDesc': 'Controla qué datos salen de tu computadora',
'migration.title': 'Importar desde otro asistente',
'migration.description':
'Migra la memoria y las notas de otro asistente local a este espacio de trabajo. Empieza con una Vista previa para ver exactamente qué cambiará y luego pulsa Aplicar para copiar los datos. Tu memoria actual se respalda primero.',
'migration.vendorLabel': 'Proveedor de origen',
'migration.vendor.openclaw': 'OpenClaw',
'migration.vendor.hermes': 'Hermes Agent',
'migration.sourceLabel': 'Ruta del espacio de trabajo de origen (opcional)',
'migration.sourcePlaceholder':
'Déjalo en blanco para detectar automáticamente (p. ej. ~/.openclaw/workspace)',
'migration.sourcePlaceholderHermes':
'Dejar en blanco para detectar automáticamente (p. ej., ~/.hermes)',
'migration.sourceHint':
'Si está vacío, se usa la ubicación predeterminada del proveedor. Indica una ruta explícita si moviste el espacio de trabajo a otro sitio.',
'migration.previewAction': 'Vista previa',
'migration.previewRunning': 'Previsualizando…',
'migration.applyAction': 'Aplicar importación',
'migration.applyRunning': 'Importando…',
'migration.applyDisclaimer':
'Aplicar se desbloquea tras una Vista previa exitosa del mismo origen. La memoria actual se respalda antes de cualquier importación.',
'migration.reportTitlePreview': 'Vista previa — aún no se importó nada',
'migration.reportTitleApplied': 'Importación completa',
'migration.report.source': 'Espacio de trabajo de origen',
'migration.report.target': 'Espacio de trabajo de destino',
'migration.report.fromSqlite': 'Desde SQLite (brain.db)',
'migration.report.fromMarkdown': 'Desde Markdown',
'migration.report.imported': 'Importado',
'migration.report.skippedUnchanged': 'Omitido (sin cambios)',
'migration.report.renamedConflicts': 'Renombrado por conflicto',
'migration.report.warnings': 'Advertencias',
'migration.report.previewHint':
'Todavía no se importó ningún dato. Pulsa Aplicar importación para copiarlo.',
'migration.report.appliedHint':
'Las entradas importadas ya están en tu memoria. Vuelve a ejecutar Vista previa si quieres comparar de nuevo.',
'migration.confirmImport.singular':
'¿Importar {count} entrada al espacio de trabajo actual?\n\nOrigen: {source}\nDestino: {target}\n\nLa memoria existente se respaldará antes de la importación.',
'migration.confirmImport.plural':
'¿Importar {count} entradas al espacio de trabajo actual?\n\nOrigen: {source}\nDestino: {target}\n\nLa memoria existente se respaldará antes de la importación.',
'settings.notifications.doNotDisturb': 'No molestar',
'settings.notifications.doNotDisturbDesc':
'Pausar todas las notificaciones por un período determinado',
'settings.notifications.channelControls': 'Controles por canal',
'settings.notifications.channelControlsDesc':
'Configura las preferencias de notificación para cada canal',
'settings.features.screenAwareness': 'Conciencia de pantalla',
'settings.features.screenAwarenessDesc': 'Permite que el asistente vea tu ventana activa',
'settings.features.messaging': 'Mensajería',
'settings.features.messagingDesc': 'Configuración de integración de canales y mensajería',
'settings.features.tools': 'Herramientas',
'settings.features.toolsDesc': 'Administrar herramientas e integraciones conectadas',
'settings.ai.localSetup': 'Configuración de IA local',
'settings.ai.localSetupDesc': 'Descargar y configurar modelos de IA locales',
'settings.ai.llmProvider': 'Proveedor LLM',
'settings.ai.llmProviderDesc': 'Elegir y configurar tu proveedor de IA',
'clearData.title': 'Borrar datos de la app',
'clearData.warning':
'Esto cerrará tu sesión y eliminará permanentemente los datos locales de la app, incluyendo:',
'clearData.bulletSettings': 'Configuración de la app y conversaciones',
'clearData.bulletCache': 'Todos los datos de caché de integraciones locales',
'clearData.bulletWorkspace': 'Datos del espacio de trabajo',
'clearData.bulletOther': 'Todos los demás datos locales',
'clearData.irreversible': 'Esta acción no se puede deshacer.',
'clearData.clearing': 'Borrando datos de la app...',
'clearData.failed': 'No se pudieron borrar los datos ni cerrar sesión. Inténtalo de nuevo.',
'clearData.failedLogout': 'No se pudo cerrar sesión. Inténtalo de nuevo.',
'clearData.failedPersist':
'No se pudo borrar el estado persistido de la app. Inténtalo de nuevo.',
'welcome.logoAlt': 'OpenHuman',
'welcome.title': 'Bienvenido a OpenHuman',
'welcome.subtitle':
'Tu super inteligencia artificial personal. Privada, simple y extremadamente poderosa.',
'welcome.connectPrompt': 'Configurar URL de RPC (Avanzado)',
'welcome.selectRuntime': 'Seleccionar un runtime',
'welcome.clearingAppData': 'Borrando datos de la aplicación...',
'welcome.clearAppDataAndRestart': 'Borrar datos de la aplicación y reiniciar',
'welcome.clearAppDataWarning':
'Esto borra los secretos y las cuentas almacenados localmente en este dispositivo. Tu cuenta en la nube no se ve afectada; puedes volver a iniciar sesión inmediatamente.',
'welcome.resetErrorFallback':
'No se pudieron borrar los datos de la aplicación. Cierra y vuelve a abrir OpenHuman, luego inténtalo de nuevo.',
'welcome.signingIn': 'Registrándote...',
'welcome.termsIntro': 'Al continuar, aceptas las',
'welcome.termsOfUse': 'Términos',
'welcome.termsJoiner': 'y',
'welcome.privacyPolicy': 'Política de privacidad',
'welcome.termsOutro': '.',
'welcome.urlPlaceholder': 'http://localhost:8089',
'welcome.invalidUrl': 'Ingresa una URL HTTP o HTTPS válida',
'welcome.connecting': 'Probando',
'welcome.connect': 'Probar',
'home.greeting': 'Buenos días',
'home.greetingAfternoon': 'Buenas tardes',
'home.greetingEvening': 'Buenas noches',
'home.askAssistant': 'Pregúntale lo que quieras a tu asistente...',
'home.statusOk': 'Tu asistente está listo cuando tú lo estés. Escribe algo abajo para empezar.',
'home.statusBackendOnly':
'Reconectando al backend… tu agente estará disponible nuevamente en breve.',
'home.statusCoreUnreachable':
'El proceso en segundo plano de OpenHuman no responde. Es posible que haya fallado o no haya podido iniciarse.',
'home.statusInternetOffline':
'Tu dispositivo está sin conexión. Verifica tu red o reinicia la app para reconectar.',
'home.restartCore': 'Reiniciar core',
'home.restartingCore': 'Reiniciando core…',
'home.themeToggle.toLight': 'Cambiar a modo claro',
'home.themeToggle.toDark': 'Cambiar a modo oscuro',
'home.usageExhaustedTitle': 'Has agotado tu uso',
'home.usageExhaustedBody':
'Ya no te queda uso incluido por ahora. Inicia una suscripción para desbloquear más capacidad continua.',
'home.usageExhaustedCta': 'Obtener una suscripción',
'openrouterFree.cta': 'Usar modelos gratis de OpenRouter',
'openrouterFree.saving': 'Conectando OpenRouter...',
'openrouterFree.error':
'No se pudo cambiar a los modelos gratis de OpenRouter. Revisa tu inicio de sesión de OpenRouter e inténtalo de nuevo.',
'home.routinesCard': 'Tus rutinas',
'home.routinesActive': '{count} activas',
'routines.title': 'Tus rutinas',
'routines.subtitle': 'Cosas que tu asistente hace automáticamente',
'routines.loading': 'Cargando rutinas…',
'routines.empty': 'Aún no hay rutinas',
'routines.emptyHint':
'Tu asistente puede ejecutar tareas según un horario, como informes matutinos o resúmenes diarios.',
'routines.refresh': 'Refrescar',
'routines.nextRun': 'Próxima carrera',
'routines.lastRunSuccess': 'La última ejecución tuvo éxito',
'routines.lastRunFailed': 'La última ejecución falló',
'routines.notRunYet': 'Aún no se ha ejecutado',
'routines.runNow': 'Corre ahora',
'routines.running': 'Corriendo…',
'routines.runNowTimedOut': 'Tiempo de espera agotado — actualiza e intenta de nuevo.',
'routines.viewHistory': 'Ver historial',
'routines.loadingHistory': 'Cargando…',
'routines.noHistory': 'Aún no hay historial de ejecuciones.',
'routines.statusSuccess': 'Éxito',
'routines.statusError': 'Error',
'routines.showOutput': 'Mostrar salida',
'routines.hideOutput': 'Ocultar salida',
'routines.toggleEnabled': 'Habilitar o deshabilitar esta rutina',
'routines.typeAgent': 'Agente',
'routines.typeCommand': 'Comando',
'nav.routines': 'Routines',
'chat.newThread': 'Nuevo hilo',
'chat.newConversation': 'Nueva conversación',
'chat.newWindowWelcome1': 'Hola, {name} 👋',
'chat.newWindowWelcome2': 'Manos a la obra, {name} 🧑🍳.',
'chat.newWindowWelcome3': 'Hora de concentrarse 🧘🏻',
'chat.typeMessage': '¿En qué puedo ayudarte hoy?',
'chat.send': 'Enviar mensaje',
'chat.stopGeneration': 'Detener generación',
'chat.parallelBranchHint': 'Escribe una rama paralela — ⌘/Ctrl+Enter para enviar',
'chat.followupHint':
'Pon en cola un seguimiento — se envía tras esta respuesta · ⌘/Ctrl+Enter para una rama paralela',
'chat.queuedFollowups.label': 'Seguimientos en cola',
'chat.queuedFollowups.clear': 'Borrar',
'chat.queuedFollowups.clearFailed': 'No se pudo vaciar la cola: inténtalo de nuevo.',
'chat.parallelBranchLabel': 'Rama paralela',
'chat.thinking': 'Pensando...',
'chat.noMessages': 'Sin mensajes aún',
'chat.startConversation': 'Inicia una conversación',
'chat.regenerate': 'Regenerar',
'chat.copyResponse': 'Copiar respuesta',
'chat.citations': 'Citas',
'chat.toolUsed': 'Herramienta usada',
'scope.legacy': 'Legado',
'scope.user': 'Usuario',
'scope.project': 'Proyecto',
'skills.title': 'Conexiones',
'skills.search': 'Buscar conexiones...',
'skills.noResults': 'No se encontraron conexiones',
'skills.loadingIntegrations': 'Cargando integraciones…',
'skills.connect': 'Conectar',
'skills.disconnect': 'Desconectar',
'skills.configure': 'Administrar',
'skills.connected': 'Conectado',
'skills.available': 'Disponible',
'skills.addAccount': 'Agregar cuenta',
'skills.channels': 'Mensajería',
'skills.explorer.emptyCta': 'Instalar desde URL',
'skills.explorer.emptyDescription':
'Instala un paquete SKILL.md o coloca carpetas estilo Hermes en ~/.openhuman/skills.',
'skills.explorer.emptyTitle': 'No se encontraron skills',
'skills.explorer.installFromUrl': 'Instalar desde URL',
'skills.explorer.newSkill': 'Nueva skill',
'skills.explorer.subtitle':
'Explora paquetes SKILL.md, incluidos markdown, scripts, referencias, plantillas, ejemplos y prompts estilo Hermes.',
'skills.explorer.title': 'Explorador de skills',
'skills.explorer.searchPlaceholder': 'Buscar skills...',
'skills.explorer.scopeUser': 'User',
'skills.explorer.scopeProject': 'Project',
'skills.explorer.scopeLegacy': 'Legacy',
'skills.explorer.noDescription': 'No se proporcionó descripción.',
'skills.explorer.uninstallSuccess': 'Skill desinstalada correctamente.',
'skills.explorer.registryTab': 'Registro',
'skills.explorer.installedTab': 'Instaladas',
'skills.explorer.allFormats': 'Todos los formatos',
'skills.explorer.refreshRegistry': 'Actualizar registro',
'skills.explorer.registryEmptyTitle': 'Sin entradas en el registro',
'skills.explorer.registryEmptyDescription':
'No se pudo cargar el registro de habilidades. Verifique su conexión e intente actualizar.',
'skills.explorer.showingOf':
'Mostrando {shown} de {total} resultados. Refina tu búsqueda para ver más.',
'skills.explorer.installed': 'Instalada',
'skills.explorer.install': 'Instalar',
'skills.explorer.installing': 'Instalando…',
'skills.integrations': 'Integraciones de Composio',
'skills.integrationsSubtitle':
'Conexiones OAuth en la nube: inicia sesión con tu cuenta y Composio gestiona los tokens para que los agentes puedan leer y actuar en tu nombre. Sin claves de API que administrar.',
'skills.composio.noApiKeyTitle': 'No hay una API key de Composio configurada',
'skills.composio.noApiKeyDescription':
'El modo local usa tu propia API key de Composio. Abre Ajustes → Avanzado → Composio para añadir una antes de conectar integraciones aquí.',
'skills.composio.noApiKeyCta': 'Abrir en Ajustes',
'skills.tabs.composio': 'Composio',
'skills.tabs.channels': 'Canales',
'skills.tabs.explorer': 'Skills',
'skills.tabs.meetings': 'Reuniones de Google Meet',
'skills.tabs.mcp': 'MCP Servidores',
'connections.tabs.composio': 'Composio',
'connections.tabs.channels': 'Canales',
'connections.tabs.mcp': 'Servidores MCP',
'connections.tabs.skills': 'Habilidades',
'connections.tabs.meetings': 'Reuniones',
'connections.groups.integrations': 'Integraciones',
'connections.tabs.oauth': 'OAuth',
'connections.tabs.composioKey': 'Composio',
'connections.groups.apiKeys': 'Claves de API',
'connections.groups.intelligence': 'Inteligencia',
'memory.title': 'Memoria',
'memory.search': 'Buscar recuerdos...',
'memory.noResults': 'No se encontraron recuerdos',
'memory.empty': 'Sin recuerdos aún. Los recuerdos se crean automáticamente mientras interactúas.',
'memory.tab.memory': 'Memoria',
'memory.tab.memoryTree': 'Árbol de memoria',
'memory.tab.tasks': 'Tareas',
'memory.tab.tasksDescription':
'Crea y realiza un seguimiento de tareas: tus propios pendientes más los tableros que tus agentes crean a lo largo de las conversaciones.',
'memory.tab.subconscious': 'Subconsciente',
'memory.tab.agentWork': 'Trabajo del agente',
'memory.tab.agentWorkDescription':
'Un centro de mando para cada ejecución de agente en segundo plano, agrupado según lo que necesita tu intervención, lo que está en curso y lo que ha terminado.',
'memory.tab.worktrees': 'Worktrees',
'memory.tab.worktreesDescription':
'Worktrees de git aislados de los workers de agentes en paralelo: inspecciona los cambios, ábrelos o límpialos.',
'memory.tab.teams': 'Equipos',
'memory.tab.teamsDescription':
'Equipos de agentes coordinados: quién se encarga de cada tarea, qué está bloqueado y qué se dicen los compañeros entre sí.',
'memory.tab.agents': 'Biblioteca',
'memory.tab.agentsDescription':
'Explora y ejecuta los agentes disponibles — cada uno con sus propias herramientas, capacidades y área de enfoque.',
'memory.tab.workflows': 'Workflows',
'memory.tab.workflowsDescription':
'Procedimientos reutilizables y ejecutables — un objetivo y los pasos para alcanzarlo. Crea uno, instala desde una URL o abre un flujo de trabajo para ejecutarlo.',
'memory.tab.dreams': 'Sueños',
'memory.tab.calls': 'Llamadas',
'memory.tab.diagram': 'Diagram',
'memory.tab.centrality': 'Centrality',
'memory.tab.namespaces': 'Espacios de nombres',
'memory.tab.timeline': 'Timeline',
'memory.tab.settings': 'Configuración',
'memory.analyzeNow': 'Analizar ahora',
'memoryTimeline.title': 'Línea de tiempo de la memoria',
'memoryTimeline.intro':
'Cuándo el asistente aprendió sobre ti — hechos agrupados por el mes en que se reforzaron por última vez. Muestra crecimiento, picos de actividad y períodos tranquilos.',
'memoryTimeline.loading': 'Construyendo la línea de tiempo…',
'memoryTimeline.errorPrefix': 'No se pudo cargar el grafo:',
'memoryTimeline.retry': 'Reintentar',
'memoryTimeline.namespaceLabel': 'Espacio de nombres',
'memoryTimeline.namespaceAll': 'Todos los espacios de nombres',
'memoryTimeline.empty': 'Aún no hay grafo de conocimiento.',
'memoryTimeline.emptyHint':
'Cuando el asistente registre hechos sobre ti, la línea de tiempo aparecerá aquí.',
'memoryTimeline.metricTotal': 'Hechos',
'memoryTimeline.metricMonths': 'Meses activos',
'memoryTimeline.metricRecent': 'Últimos 30 días',
'memoryTimeline.heading': 'Hechos aprendidos por mes',
'memoryTimeline.busiestCaption': 'Más activo: {period} ({count})',
'memoryTimeline.undatedNote': '{count} hecho(s) sin fecha registrada.',
'memoryTimeline.truncated': 'Mostrando los {shown} más recientes de {total} meses.',
'namespaceOverview.title': 'Resumen de espacios de nombres',
'namespaceOverview.intro':
'Cómo se distribuye tu conocimiento entre contextos: el número de hechos y entidades distintas registradas en cada espacio de nombres.',
'namespaceOverview.loading': 'Agregando espacios de nombres…',
'namespaceOverview.errorPrefix': 'No se pudo cargar el gráfico:',
'namespaceOverview.retry': 'Reintentar',
'namespaceOverview.empty': 'Aún no hay gráfico de conocimiento.',
'namespaceOverview.emptyHint':
'A medida que el asistente registra hechos entre contextos, cada espacio de nombres aparecerá aquí.',
'namespaceOverview.metricNamespaces': 'Espacios de nombres',
'namespaceOverview.metricFacts': 'Hechos',
'namespaceOverview.metricEntities': 'Entidades',
'namespaceOverview.heading': 'Por espacio de nombres',
'namespaceOverview.unnamespaced': '(sin espacio de nombres)',
'namespaceOverview.factsLabel': '{count} hechos',
'namespaceOverview.entitiesLabel': '{count} entidades',
'namespaceOverview.entitiesShort': '{count} ent.',
'namespaceOverview.truncated':
'Mostrando los {shown} principales de {total} espacios de nombres.',
'graphCentrality.title': 'Centralidad del gráfico de conocimiento',
'graphCentrality.intro':
'El PageRank sobre su gráfico de memoria muestra los centros de carga y las entidades conectoras que vinculan grupos que de otro modo estarían separados, que un recuento de frecuencia sin procesar no puede revelar.',
'graphCentrality.loading': 'Centralidad informática…',
'graphCentrality.errorPrefix': 'No se pudo cargar el gráfico:',
'graphCentrality.retry': 'Rever',
'graphCentrality.empty': 'Aún no hay gráfico de conocimiento.',
'graphCentrality.emptyHint':
'A medida que el asistente registre datos sobre usted, las entidades más conectadas aparecerán aquí.',
'graphCentrality.namespaceLabel': 'Espacio de nombres',
'graphCentrality.namespaceAll': 'Todos los espacios de nombres',
'graphCentrality.metricEntities': 'Entidades',
'graphCentrality.metricConnections': 'Conexiones',
'graphCentrality.metricClusters': 'Clústeres',
'graphCentrality.clustersCaption': 'Clústeres {components} · holdings más grandes {largest}',
'graphCentrality.approximateBadge': 'aproximado',
'graphCentrality.approximateTitle':
'Se detuvo en el límite de iteración antes de converger completamente',
'graphCentrality.rankedHeading': 'Principales entidades por influencia',
'graphCentrality.colRank': '#',
'graphCentrality.colEntity': 'Entidad',
'graphCentrality.colInfluence': 'Influencia',
'graphCentrality.colLinks': 'Campo de golf',
'graphCentrality.bridgeBadge': 'conector',
'graphCentrality.bridgeTitle': 'Conector: más influyente de lo que sugiere su número de enlaces',
'graphCentrality.degreeTitle': '{in} entra · {out} sale',
'memory.tab.associations': 'Associations',
'entityAssociations.title': 'Asociaciones de entidades',
'entityAssociations.intro':
'Las entidades que comparten muchas conexiones están asociadas — incluso cuando ningún hecho las vincula directamente. La similitud de Jaccard revela estos emparejamientos ocultos.',
'entityAssociations.loading': 'Calculando asociaciones…',
'entityAssociations.errorPrefix': 'No se pudo cargar el grafo:',
'entityAssociations.retry': 'Reintentar',
'entityAssociations.empty': 'Aún no hay asociaciones.',
'entityAssociations.emptyHint':
'Cuando las entidades compartan conexiones, las asociaciones más fuertes aparecerán aquí.',
'entityAssociations.namespaceLabel': 'Espacio de nombres',
'entityAssociations.namespaceAll': 'Todos los espacios de nombres',
'entityAssociations.metricEntities': 'Entidades',
'entityAssociations.metricPairs': 'Asociaciones',
'entityAssociations.rankedHeading': 'Asociaciones más fuertes',
'entityAssociations.linkedBadge': 'vinculada',
'entityAssociations.inferredBadge': 'inferida',
'entityAssociations.linkedTitle': 'Estas entidades están conectadas directamente.',
'entityAssociations.inferredTitle':
'Sin enlace directo — asociadas solo a través de conexiones compartidas.',
'entityAssociations.sharedLabel': '{shared} compartidas',
'entityAssociations.pairTitle': '{jaccard}% similar · {shared} de {union} conexiones compartidas',
'entityAssociations.truncated': 'Mostrando {shown} de {total} — las más fuertes primero.',
'memory.tab.freshness': 'Freshness',
'memoryFreshness.title': 'Frescura del conocimiento',
'memoryFreshness.intro':
'Los hechos que el asistente no ha reconfirmado recientemente decaen a lo largo de una curva de olvido. Esto muestra qué se está volviendo obsoleto y vale la pena volver a verificar, para no tratar hechos antiguos como certeros.',
'memoryFreshness.loading': 'Calculando frescura…',
'memoryFreshness.errorPrefix': 'No se pudo cargar el grafo:',
'memoryFreshness.retry': 'Reintentar',
'memoryFreshness.empty': 'Aún no hay grafo de conocimiento.',
'memoryFreshness.emptyHint':
'Cuando el asistente registre hechos sobre ti, su frescura se rastreará aquí.',
'memoryFreshness.namespaceLabel': 'Espacio de nombres',
'memoryFreshness.namespaceAll': 'Todos los espacios de nombres',
'memoryFreshness.metricFresh': 'Fresco',
'memoryFreshness.metricFading': 'Desvaneciendose',
'memoryFreshness.metricStale': 'Obsoleto',
'memoryFreshness.recallCaption': 'Recuperación promedio {recall}% en {total} hechos',
'memoryFreshness.queueHeading': 'Cola de reconfirmación',
'memoryFreshness.queueTruncated': 'Mostrando {shown} de {total} — atiende estos primero.',
'memoryFreshness.allFresh': 'Todos los hechos siguen frescos — nada que reconfirmar.',
'memoryFreshness.statusFading': 'desvaneciendose',
'memoryFreshness.statusStale': 'obsoleto',
'memoryFreshness.ageLabel': '{days} días',
'memoryFreshness.recallTitle': '{recall}% recuperación · vida media {halfLife} días',
'memory.tab.path': 'Rutas',
'connectionPath.title': 'Ruta de conexión',
'connectionPath.intro':
'Rastrea la cadena de relaciones más corta que une dos entidades cualesquiera: cómo las conecta el grafo, incluso a través de varios saltos.',
'connectionPath.loading': 'Cargando el grafo…',
'connectionPath.errorPrefix': 'No se pudo cargar el grafo:',
'connectionPath.retry': 'Reintentar',
'connectionPath.namespaceLabel': 'Espacio de nombres',
'connectionPath.namespaceAll': 'Todos los espacios de nombres',
'connectionPath.sourceLabel': 'Desde',
'connectionPath.targetLabel': 'Hasta',
'connectionPath.sourcePlaceholder': 'Entidad inicial',
'connectionPath.targetPlaceholder': 'Entidad final',
'connectionPath.prompt': 'Elige dos entidades para rastrear cómo están conectadas.',
'connectionPath.empty': 'Aún no hay grafo de conocimiento.',
'connectionPath.emptyHint':
'Cuando el asistente registre datos relacionados, podrás rastrear conexiones aquí.',
'connectionPath.resultHeading': 'Ruta más corta',
'connectionPath.pathSummary': 'A {length} salto(s) de distancia',
'connectionPath.sameMessage': 'Elige dos entidades diferentes.',
'connectionPath.missingSource': '«{entity}» no está en el grafo.',
'connectionPath.missingTarget': '«{entity}» no está en el grafo.',
'connectionPath.noPath': 'No se encontró ninguna conexión entre «{source}» y «{target}».',
'memoryTree.status.title': 'Árbol de la memoria',
'memoryTree.status.autoSyncLabel': 'Auto-sincronización',
'memoryTree.status.autoSyncDescription':
'Pausa para detener la nueva ingestión. El wiki existente sigue siendo consultable.',
'memoryTree.status.statusTile': 'Estado',
'memoryTree.status.lastSyncTile': 'Última sincronización',
'memoryTree.status.totalChunksTile': 'Fragmentos totales',
'memoryTree.status.wikiSizeTile': 'Tamaño de la wiki',
'memoryTree.status.statusRunning': 'Corriendo',
'memoryTree.status.statusPaused': 'Pausado',
'memoryTree.status.statusSyncing': 'Sincronizando',
'memoryTree.status.statusError': 'Error',
'memoryTree.status.statusIdle': 'Inactivo',
'memoryTree.status.never': 'Nunca',
'memoryTree.status.fetchError': 'No se pudo obtener el estado del Árbol de Memoria',
'memoryTree.status.retry': 'Rever',
'memoryTree.status.toggleFailed': 'No se pudo activar la sincronización automática',
'memoryTree.status.justNow': 'justo ahora',
'memoryTree.status.secondsAgo': '{count}s hace',
'memoryTree.status.minuteAgo': 'Hace 1 minuto',
'memoryTree.status.minutesAgo': '{count} hace un minuto',
'memoryTree.status.hourAgo': 'Hace 1 hora',
'memoryTree.status.hoursAgo': '{count} hace hr',
'memoryTree.status.dayAgo': 'Hace 1 día',
'memoryTree.status.daysAgo': '{count} hace días',
'memoryTree.status.integrationsTitle': 'Estado por integración',
'memoryTree.status.integrationsEmpty': 'No hay integraciones conectadas',
'memoryTree.status.integrationActive': 'Activa',
'memoryTree.status.integrationStale': 'Inactiva',
'memoryTree.status.integrationChunks': 'Fragmentos: {count}',
'alerts.title': 'Alertas',
'alerts.empty': 'Sin alertas aún',
'alerts.markAllRead': 'Marcar todo como leído',
'alerts.unread': 'sin leer',
'rewards.title': 'Recompensas',
'rewards.referrals': 'Referidos',
'rewards.coupons': 'Canjear',
'rewards.localUnavailable':
'El acceso local no obtiene recompensas, cupones ni crédito por referidos. Cierra sesión y continúa iniciando sesión con una cuenta de OpenHuman si quieres que las recompensas cuenten.',
'rewards.localUnavailableCta': 'Abrir ajustes de la cuenta',
'rewards.credits': 'Créditos',
'rewards.referralCode': 'Tu código de referido',
'rewards.copyCode': 'Copiar código',
'rewards.share': 'Compartir',
'onboarding.welcome': 'Hola. Soy OpenHuman.',
'onboarding.welcomeDesc':
'Tu asistente de IA superinteligente que corre en tu computadora. Privado, simple y extremadamente poderoso.',
'onboarding.context': 'Recopilación de contexto',
'onboarding.contextDesc': 'Conecta las herramientas y servicios que usas todos los días.',
'onboarding.localAI': 'IA local',
'onboarding.localAIDesc': 'Configura un modelo de IA local que corra en tu máquina.',
'onboarding.chatProvider': 'Proveedor de chat',
'onboarding.chatProviderDesc': 'Elige cómo quieres interactuar con tu asistente.',
'onboarding.referral': 'Referido',
'onboarding.referralDesc': 'Ingresa un código de referido si tienes uno.',
'onboarding.finish': 'Finalizar configuración',
'onboarding.finishDesc': '¡Todo listo! Empieza a usar OpenHuman.',
'onboarding.skip': 'Omitir',
'onboarding.getStarted': 'Empezar',
'onboarding.runtimeChoice.title': '¿Cómo quieres ejecutar OpenHuman?',
'onboarding.runtimeChoice.subtitle':
'Elige la configuración que mejor se adapte a ti. Puedes cambiarlo más tarde en Configuración.',
'onboarding.runtimeChoice.cloud.title': 'Sencillo',
'onboarding.runtimeChoice.cloud.tagline': 'Deja que OpenHuman lo gestione todo por ti.',
'onboarding.runtimeChoice.cloud.f1': 'Seguridad integrada',
'onboarding.runtimeChoice.cloud.f2': 'Compresión de tokens para aprovechar más tu uso',
'onboarding.runtimeChoice.cloud.f3': 'Una suscripción, todos los modelos incluidos',
'onboarding.runtimeChoice.cloud.f4': 'Sin claves API que gestionar',
'onboarding.runtimeChoice.cloud.f5': 'Fácil de configurar',
'onboarding.runtimeChoice.custom.title': 'Personalizado',
'onboarding.runtimeChoice.custom.tagline':
'Usa tus propias claves. Control total sobre lo que usas.',
'onboarding.runtimeChoice.custom.f1': 'Necesitarás claves API para casi todo',
'onboarding.runtimeChoice.custom.f2': 'Reutiliza servicios por los que ya pagas',
'onboarding.runtimeChoice.custom.f3': 'Puede ser gratuito si ejecutas todo localmente',
'onboarding.runtimeChoice.custom.f4': 'Más configuración, más opciones',
'onboarding.runtimeChoice.custom.f5': 'Ideal para usuarios avanzados y desarrolladores',
'onboarding.runtimeChoice.cloud.creditHighlight': 'Créditos gratis al registrarte',
'onboarding.runtimeChoice.continueCloud': 'Continuar con Simple',
'onboarding.runtimeChoice.continueCustom': 'Continuar con Personalizado',
'onboarding.runtimeChoice.recommended': 'Recomendado',
'onboarding.runtimeChoice.exitError':
'No se pudo completar el proceso de incorporación. Por favor, inténtalo de nuevo.',
'onboarding.apiKeys.title': 'Agreguemos tus claves API',
'onboarding.apiKeys.subtitle':
'Puedes pegarlas ahora u omitir y agregarlas luego en Configuración › IA. Las claves se guardan en este dispositivo, cifradas en reposo.',
'onboarding.apiKeys.openaiLabel': 'Clave API de OpenAI',
'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
'onboarding.apiKeys.openaiOauthHint':
'Utilice ChatGPT Plus/Pro (suscripción) o una clave OpenAI API; no se requieren ambas.',
'onboarding.apiKeys.openaiOauthOpening': 'Abriendo inicio de sesión…',
'onboarding.apiKeys.openaiOauthConnect': 'Iniciar sesión con ChatGPT',
'onboarding.apiKeys.openaiOauthConnected': 'Conectado con ChatGPT',
'onboarding.apiKeys.openaiOauthCallbackHint':
'Después de iniciar sesión, pega la URL de redirección completa de tu navegador (empieza por {url}).',
'onboarding.apiKeys.oauthDesktopOnly':
'El inicio de sesión con ChatGPT solo está disponible en la aplicación de escritorio.',
'onboarding.apiKeys.oauthStartFailed':
'No se pudo iniciar el inicio de sesión con ChatGPT. Inténtalo de nuevo o usa una clave de API.',
'onboarding.apiKeys.oauthPasteRedirect':
'Pega la URL de redirección de tu navegador después de iniciar sesión.',
'onboarding.apiKeys.oauthCompleteFailed':
'El inicio de sesión con ChatGPT no se completó. Comprueba la URL de redirección e inténtalo de nuevo.',
'onboarding.apiKeys.finishSignIn': 'Finalizar el inicio de sesión en ChatGPT',
'onboarding.apiKeys.orApiKey': 'o tecla API',
'onboarding.apiKeys.anthropicLabel': 'Clave API de Anthropic',
'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
'onboarding.apiKeys.saveError': 'No se pudo guardar esa clave. Verifícala y vuelve a intentarlo.',
'onboarding.apiKeys.skipForNow': 'Omitir por ahora',
'onboarding.apiKeys.continue': 'Guardar y continuar',
'onboarding.apiKeys.saving': 'Guardando…',
'onboarding.custom.stepperInference': 'Inferencia',
'onboarding.custom.stepperVoice': 'Voz',
'onboarding.custom.stepperOAuth': 'OAuth',
'onboarding.custom.stepperSearch': 'Búsqueda',
'onboarding.custom.stepperEmbeddings': 'Embeddings',
'onboarding.custom.stepperMemory': 'Memoria',
'onboarding.custom.stepCounter': 'Paso {n} de {total}',
'onboarding.custom.defaultTitle': 'Por defecto',
'onboarding.custom.defaultSubtitle': 'Deja que OpenHuman lo gestione por ti.',
'onboarding.custom.configureTitle': 'Configurar',
'onboarding.custom.configureSubtitle': 'Yo elijo qué usar.',
'onboarding.custom.progressAriaLabel': 'Progreso del onboarding',
'onboarding.custom.continue': 'Continuar',
'onboarding.custom.back': 'Atrás',
'onboarding.custom.finish': 'Finalizar configuración',
'onboarding.custom.configureLater':
'Puedes terminar de configurar esto después del onboarding. Te llevaremos a la página de configuración correspondiente cuando termines.',
'onboarding.custom.openSettings': 'Abrir en Configuración',
'onboarding.custom.inference.title': 'Inferencia (Texto)',
'onboarding.custom.inference.subtitle':
'¿Qué modelo de lenguaje debe responder tus preguntas y ejecutar tus agentes?',
'onboarding.custom.inference.defaultDesc':
'OpenHuman dirige cada carga de trabajo a un modelo predeterminado adecuado. Sin claves, sin configuración.',
'onboarding.custom.inference.configureDesc':
'Usa tu propia clave de OpenAI o Anthropic. La usamos para todas las cargas de trabajo basadas en texto.',
'onboarding.custom.voice.title': 'Voz',
'onboarding.custom.voice.subtitle': 'Texto a voz y voz a texto para el modo de voz.',
'onboarding.custom.voice.defaultDesc':
'OpenHuman incluye STT/TTS gestionado que funciona de inmediato. Sin nada que configurar.',
'onboarding.custom.voice.configureDesc':
'Usa tu propio ElevenLabs / OpenAI Whisper / etc. Configura en Configuración › Voz.',
'onboarding.custom.oauth.title': 'Conexiones (OAuth)',
'onboarding.custom.oauth.subtitle':
'Gmail, Slack, Notion y otros servicios conectados que necesitan OAuth.',
'onboarding.custom.oauth.defaultDesc':
'OpenHuman ejecuta un espacio de trabajo de Composio gestionado. Un clic para conectar cada servicio más tarde.',
'onboarding.custom.oauth.configureDesc':
'Usa tu propia cuenta / clave API de Composio. Configura en Configuración › Conexiones.',
'onboarding.custom.search.title': 'Búsqueda web',
'onboarding.custom.search.subtitle': 'Cómo OpenHuman busca en la web en tu nombre.',
'onboarding.custom.search.defaultDesc':
'OpenHuman usa un backend de búsqueda gestionado. Sin claves necesarias.',
'onboarding.custom.search.configureDesc':
'Usa tu propia clave de proveedor de búsqueda (Tavily, Brave, etc.). Configura en Configuración › Herramientas.',