forked from tinyhumansai/openhuman
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathid.ts
More file actions
6617 lines (6597 loc) · 389 KB
/
Copy pathid.ts
File metadata and controls
6617 lines (6597 loc) · 389 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';
// Indonesian (Bahasa Indonesia) translations. Keys mirror en.ts; missing/
// English-identical values fall back to English via I18nContext.resolveEn().
const messages: TranslationMap = {
// Privacy Mode selector (#4435) — data-egress posture
'privacy.mode.title': 'Mode Privasi',
'privacy.mode.description':
'Mengontrol seberapa banyak data Anda yang boleh keluar dari perangkat ini. Terpisah dari mode akses agen.',
'privacy.mode.localOnly': 'Hanya lokal',
'privacy.mode.localOnlyDesc': 'Hanya model di perangkat. Panggilan model eksternal diblokir.',
'privacy.mode.standard': 'Standar',
'privacy.mode.standardDesc': 'Seimbang. Model eksternal digunakan sesuai konfigurasi.',
'privacy.mode.sensitive': 'Sensitif',
'privacy.mode.sensitiveDesc':
'Perhatian ekstra untuk data sensitif. Kontrol lainnya segera hadir.',
'privacy.mode.saved': 'Tersimpan',
'privacy.mode.saveError': 'Tidak dapat memperbarui mode privasi.',
'skills.recallCalendar.title': 'Google Kalender',
'skills.recallCalendar.description':
'Bergabung otomatis ke panggilan Google Meet melalui Recall.ai',
// Core connection panel (GH-4396)
'settings.core.title': 'Koneksi core',
'settings.core.menuDesc': 'Gunakan core lokal bawaan atau hubungkan ke core jarak jauh.',
'settings.core.useRemoteToggle': 'Gunakan core jarak jauh',
'settings.core.useRemoteToggleDesc':
'Hubungkan ke core jarak jauh melalui HTTP alih-alih core lokal bawaan.',
'settings.core.statusConnectedRemote': 'Terhubung ke core jarak jauh',
'settings.core.statusConnectedLocal': 'Terhubung ke core lokal',
'settings.core.statusChecking': 'Memeriksa koneksi…',
'settings.core.statusAuthFailed': 'Dapat dijangkau, tetapi token ditolak',
'settings.core.statusUnreachable': 'Tidak dapat menjangkau core',
'settings.core.recheck': 'Periksa ulang',
'settings.core.save': 'Simpan & mulai ulang',
'settings.core.applyRestartNote':
'Menyimpan akan memulai ulang OpenHuman untuk menyambung kembali.',
// Cross-host vault (#4278)
'crossHostVault.title': 'Vault berada di host core.',
'crossHostVault.message':
'Vault memori ini disimpan di host openhuman-core ({os}). Hanya dapat dibuka atau ditampilkan di mesin tersebut, bukan dari perangkat ini.',
'conversations.toolFailure.whyLabel': 'Mengapa',
'conversations.toolFailure.nextLabel': 'Yang harus dilakukan',
'conversations.toolFailure.missingPermission.cause':
'OpenHuman belum memiliki izin untuk melakukan ini.',
'conversations.toolFailure.missingPermission.next':
'Berikan izin yang diperlukan, lalu coba lagi.',
'conversations.toolFailure.missingApp.cause':
'Aplikasi atau program yang diperlukan untuk tindakan ini tidak tersedia.',
'conversations.toolFailure.missingApp.next': 'Instal atau buka aplikasinya, lalu coba lagi.',
'conversations.toolFailure.serviceUnavailable.cause':
'Layanan yang dibutuhkan OpenHuman sedang tidak tersedia untuk sementara.',
'conversations.toolFailure.serviceUnavailable.next':
'OpenHuman akan mencoba lagi sebentar lagi — tidak perlu tindakan apa pun.',
'conversations.toolFailure.badCredentials.cause':
'Detail masuk yang tersimpan tidak ada atau tidak lagi valid.',
'conversations.toolFailure.badCredentials.next':
'Masuk kembali atau perbarui kredensial, lalu coba lagi.',
'conversations.toolFailure.blockedByPolicy.cause':
'Tindakan ini diblokir oleh pengaturan keamanan Anda.',
'conversations.toolFailure.blockedByPolicy.next':
'Izinkan di Pengaturan → Akses agen jika Anda ingin menjalankannya.',
'conversations.toolFailure.modelConnection.cause': 'OpenHuman tidak dapat menjangkau model AI.',
'conversations.toolFailure.modelConnection.next':
'Periksa koneksi atau pengaturan model Anda; OpenHuman akan mencoba lagi.',
'conversations.toolFailure.timeout.cause': 'Tindakan memakan waktu terlalu lama dan dihentikan.',
'conversations.toolFailure.timeout.next':
'OpenHuman akan mencoba lagi, atau Anda dapat mengulanginya secara manual.',
'conversations.toolFailure.denied.cause': 'Anda menolak tindakan ini.',
'conversations.toolFailure.denied.next': 'Tidak ada yang perlu dilakukan — tindakan ini tidak dijalankan. Minta lagi jika Anda berubah pikiran.',
'conversations.toolFailure.approvalExpired.cause': 'Permintaan persetujuan kedaluwarsa sebelum ada yang merespons.',
'conversations.toolFailure.approvalExpired.next': 'Minta lagi untuk menjalankannya — OpenHuman tidak akan mencobanya sendiri.',
'conversations.toolFailure.unknown.cause': 'Terjadi kesalahan pada tindakan ini.',
'conversations.toolFailure.unknown.next':
'Coba lagi; jika terus gagal, jalankan diagnostik dari Pengaturan.',
'conversations.backgroundTasks.title': 'Background tasks',
'nav.feedback': 'Bagikan masukan',
'feedback.board': 'Papan masukan',
'feedback.empty': 'Belum ada masukan. Jadilah yang pertama membagikan ide.',
'feedback.loadMore': 'Muat lebih banyak',
'feedback.loadError': 'Gagal memuat masukan',
'feedback.expand': 'Tampilkan lebih banyak',
'feedback.collapse': 'Tampilkan lebih sedikit',
'feedback.comments': 'komentar',
'feedback.viewIssue': 'Lihat isu',
'feedback.status.open': 'Terbuka',
'feedback.status.planned': 'Direncanakan',
'feedback.status.completed': 'Selesai',
'feedback.status.closed': 'Ditutup',
'feedback.type.feature': 'Fitur',
'feedback.type.bug': 'Bug',
'feedback.sort.hot': 'Populer',
'feedback.sort.top': 'Teratas',
'feedback.sort.new': 'Terbaru',
'feedback.filter.allTypes': 'Semua tipe',
'feedback.filter.allStatuses': 'Semua status',
'feedback.vote.up': 'Dukung',
'feedback.vote.down': 'Tolak',
'feedback.submit.heading': 'Bagikan masukan',
'feedback.submit.subheading': 'Sarankan fitur atau laporkan bug. Orang lain bisa memberi suara.',
'feedback.submit.titlePlaceholder': 'Judul',
'feedback.submit.bodyPlaceholder': 'Jelaskan ide Anda atau masalah yang Anda alami',
'feedback.submit.action': 'Kirim',
'feedback.submit.success': 'Terima kasih! Masukan Anda kini ada di papan.',
'feedback.submit.rejected': 'Masukan Anda tidak dapat dipublikasikan.',
'feedback.submit.error': 'Terjadi kesalahan. Silakan coba lagi.',
'feedback.admin.status': 'Status',
'feedback.admin.updateFailed': 'Gagal memperbarui status',
'feedback.comments.empty': 'Belum ada komentar.',
'feedback.comments.placeholder': 'Tambahkan komentar',
'feedback.comments.post': 'Kirim',
'feedback.comments.loadError': 'Gagal memuat komentar',
'feedback.comments.postError': 'Gagal mengirim komentar',
'feedback.comments.you': 'Anda',
'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': 'Dibatalkan',
'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': 'Di obrolan ini',
'conversations.backgroundTasks.sectionScheduled': 'Tugas terjadwal',
'conversations.backgroundTasks.sectionSubconscious': 'Pemikiran bawah sadar',
'conversations.backgroundTasks.sectionMemory': 'Menyinkronkan memori',
'conversations.backgroundTasks.cronEmpty': 'Tidak ada tugas terjadwal.',
'conversations.backgroundTasks.cronUnnamed': 'Tugas tanpa judul',
'conversations.backgroundTasks.cronPaused': 'Dijeda',
'conversations.backgroundTasks.cronNext': 'Berikutnya {time}',
'conversations.backgroundTasks.cronLast': 'Terakhir dijalankan {time}',
'conversations.backgroundTasks.cronNever': 'Belum pernah dijalankan',
'conversations.backgroundTasks.cronSchedCron': 'Cron {expr}',
'conversations.backgroundTasks.cronSchedEvery': 'Setiap {duration}',
'conversations.backgroundTasks.cronSchedAt': 'Sekali',
'conversations.backgroundTasks.subOff': 'Mati',
'conversations.backgroundTasks.subWorking': 'Bekerja…',
'conversations.backgroundTasks.subIdle': 'Diam',
'conversations.backgroundTasks.subLastRan': 'Terakhir dijalankan {time}',
'conversations.backgroundTasks.subNeverRan': 'Belum pernah dijalankan',
'conversations.backgroundTasks.subTicks': '{count} kali dijalankan',
'conversations.backgroundTasks.subQueued': '{count} dalam antrean',
'conversations.backgroundTasks.memUpToDate': 'Semua memori terkini',
'conversations.backgroundTasks.memIngesting': 'Mengindeks {title}',
'conversations.backgroundTasks.memIngestingUntitled': 'Mengindeks memori',
'conversations.backgroundTasks.memQueued': '{count} dalam antrean',
'conversations.backgroundTasks.memProviderActive': 'Menyinkronkan sekarang',
'conversations.backgroundTasks.memProviderRecent': 'Baru saja disinkronkan',
'conversations.backgroundTasks.memProviderIdle': 'Diam',
'nav.home': 'Beranda',
'nav.human': 'Manusia',
'nav.chat': 'Obrolan',
'nav.assistant': 'Asisten',
'assistant.faceMode.on': 'Berbicara dengan Tiny',
'assistant.faceMode.off': 'Bicara dengan Tiny',
'assistant.faceMode.turnOn': 'Tampilkan maskot',
'assistant.faceMode.turnOff': 'Sembunyikan maskot',
'nav.connections': 'Koneksi',
'nav.memory': 'Memori',
'nav.alerts': 'Peringatan',
'nav.rewards': 'Hadiah',
'nav.settings': 'Pengaturan',
'nav.agentProfiles': 'Profil agen',
'nav.switchAgentProfile': 'Ganti profil agen',
'nav.defaultAgentProfile': 'Agen default',
'nav.noAgentProfiles': 'Profil agen tidak ditemukan',
'nav.activity': 'Aktivitas',
'nav.brain': 'Otak',
'nav.flows': 'Alur Kerja',
'nav.agentWorld': 'Tiny Place',
'nav.wallet': 'Dompet',
'agentWorld.description':
'Tiny.Place adalah jejaring sosial untuk agen AI. Gunakan OpenHuman untuk berinteraksi, menemukan dan memasang pekerjaan, berdagang, serta tumbuh bersama.',
'agentWorld.world': 'Dunia',
'agentWorld.world.booting': 'Memulai perender...',
'agentWorld.world.initError': 'Tidak dapat memulai perender dunia.',
'agentWorld.world.retry': 'Coba lagi',
'agentWorld.world.title': 'Tiny Place',
'agentWorld.world.description':
'Bergabunglah dengan tiny.place agar agen Anda dapat berkoordinasi dengan agen lain: menemukan dan memposting pekerjaan, berdagang, berkirim pesan, dan bekerja sama dalam bounty.',
'agentWorld.world.room': 'Ruang',
'agentWorld.world.rooms.poker.name': 'Poker',
'agentWorld.world.rooms.poker.description': 'Delapan kursi mengelilingi meja felt.',
'agentWorld.world.rooms.court.name': 'Pengadilan',
'agentWorld.world.rooms.court.description': 'Bangku tinggi, kotak juri, dan galeri.',
'agentWorld.world.rooms.office.name': 'Kantor',
'agentWorld.world.rooms.office.description': 'Kubikel, meja, dan papan tulis.',
'agentWorld.world.rooms.home.name': 'Rumah',
'agentWorld.world.rooms.home.description': 'Lounge nyaman dengan sofa dan karpet.',
'agentWorld.world.rooms.outside.name': 'Dunia',
'agentWorld.world.rooms.outside.description': 'Plaza terbuka besar yang dikelilingi gedung.',
'agentWorld.feed': 'Feed',
'agentWorld.ledger': 'Buku Besar',
'agentWorld.jobs': 'Pekerjaan',
'agentWorld.bounties': 'Hadiah',
'agentWorld.explore': 'Jelajahi',
'agentWorld.directory': 'Direktori',
'agentWorld.identities': 'Identitas',
'agentWorld.profiles': 'Profil',
'agentWorld.marketplace': 'Pasar',
'agentWorld.messaging': 'Pesan',
'agentWorld.walletNotConfigured': 'Dompet belum diatur',
'agentWorld.copyAddress': 'Salin alamat',
'agentWorld.addressCopied': 'Disalin',
'agentWorld.walletUnavailable': 'Dompet tidak tersedia',
'agentWorld.walletRetry': 'Coba muat dompet lagi',
// Agent World — Explore section live data
'explore.networkOverview': 'Ikhtisar Jaringan',
'explore.trendingCommunities': 'Komunitas Trending',
'explore.activeJobs': 'Pekerjaan Aktif',
'explore.featuredBounties': 'Bounty Unggulan',
'explore.newAgents': 'Agen Baru',
'explore.viewAll': 'Lihat semua',
'explore.noCommunities': 'Belum ada komunitas',
'explore.noJobs': 'Tidak ada pekerjaan aktif',
'explore.noBounties': 'Tidak ada bounty terbuka',
'explore.noAgents': 'Tidak ada agen terdaftar',
'agentWorld.jobs.deadlineFuture': 'Batas waktu proposal harus di masa depan',
'nav.avatarMenu.account': 'Akun',
'nav.avatarMenu.billing': 'Tagihan',
'nav.avatarMenu.rewards': 'Hadiah',
'nav.avatarMenu.invites': 'Undang teman',
'nav.avatarMenu.wallet': 'Dompet',
// Brain — full-page memory knowledge-graph surface
'brain.subtitle': 'Grafik pengetahuan, sumber memori, dan kontrol Anda.',
'brain.tabs.memory': 'Memori',
'brain.tabs.subconscious': 'Alam Bawah Sadar',
'brain.tabs.graph': 'Grafik',
'brain.tabs.goals': 'Tujuan',
'brain.goals.title': 'Tujuan jangka panjang',
'brain.goals.description':
'Tujuan tetap agen untuk bekerja dengan Anda. Edit di sini atau biarkan Refleksi memperbaruinya.',
'brain.goals.reflect': 'Refleksi',
'brain.goals.reflecting': 'Merefleksikan…',
'brain.goals.reflectDone': 'Tujuan diperbarui.',
'brain.goals.add': 'Tambah',
'brain.goals.addPlaceholder': 'Tambahkan tujuan jangka panjang…',
'brain.goals.empty':
'Belum ada tujuan. Tambahkan satu, atau gunakan Refleksi untuk mengisinya dari konteks terbaru.',
'brain.goals.editGoal': 'Edit tujuan',
'brain.goals.deleteGoal': 'Hapus tujuan',
'brain.goals.actionError': 'Terjadi kesalahan. Silakan coba lagi.',
'brain.tabs.sources': 'Sumber',
'brain.tabs.sync': 'Sinkronisasi',
'brain.tabs.tinyplaceOrchestration': 'TinyPlace',
'tinyplaceOrchestration.title': 'Relay TinyPlace',
'tinyplaceOrchestration.subtitle': 'Kanal agen tersemat dan chat sesi aplikasi',
'tinyplaceOrchestration.refresh': 'Segarkan',
'tinyplaceOrchestration.pinned': 'Tersemat',
'tinyplaceOrchestration.sessions': 'Sesi',
'tinyplaceOrchestration.loading': 'Memuat chat TinyPlace…',
'tinyplaceOrchestration.paymentRequired': 'Akses TinyPlace memerlukan pembayaran.',
'tinyplaceOrchestration.failedToLoad': 'Gagal memuat chat TinyPlace',
'tinyplaceOrchestration.noSessions': 'Belum ada sesi aplikasi TinyPlace.',
'tinyplaceOrchestration.noMessages': 'Belum ada pesan di chat ini.',
'tinyplaceOrchestration.active': 'Aktif',
'tinyplaceOrchestration.inactive': 'Tidak aktif',
'tinyplaceOrchestration.encryptedBody': 'Pesan TinyPlace terenkripsi',
'tinyplaceOrchestration.unknownSender': 'Pengirim tidak dikenal',
'tinyplaceOrchestration.master.title': 'Agen / manusia',
'tinyplaceOrchestration.master.subtitle': 'Chat master',
'tinyplaceOrchestration.master.preview': 'Koordinasi langsung antara Anda dan OpenHuman.',
'tinyplaceOrchestration.subconscious.title': 'Alam Bawah Sadar',
'tinyplaceOrchestration.subconscious.subtitle': 'Chat internal agen',
'tinyplaceOrchestration.subconscious.preview': 'Koordinasi agen latar belakang dan loop memori.',
'tinyplaceOrchestration.session.subtitle': 'Sesi aplikasi TinyPlace',
'tinyplaceOrchestration.pairing.linkLabel': 'Tautkan sesi',
'tinyplaceOrchestration.pairing.linkPlaceholder': 'Tempel ID agen sesi',
'tinyplaceOrchestration.pairing.linkAction': 'Tautkan',
'tinyplaceOrchestration.pairing.requests': 'Permintaan kontak',
'tinyplaceOrchestration.pairing.accept': 'Terima',
'tinyplaceOrchestration.pairing.decline': 'Tolak',
'tinyplaceOrchestration.pairing.block': 'Blokir',
'tinyplaceOrchestration.pairing.linked': 'Tertaut',
'tinyplaceOrchestration.pairing.pending': 'Menunggu',
'tinyplaceOrchestration.pairing.unlinked': 'Belum tertaut',
'tinyplaceOrchestration.pairing.incoming': 'Masuk',
'tinyplaceOrchestration.pairing.outgoing': 'Keluar',
'tinyplaceOrchestration.master.you': 'Anda',
'tinyplaceOrchestration.composer.placeholder': 'Pesan ke OpenHuman…',
'tinyplaceOrchestration.composer.send': 'Kirim',
'tinyplaceOrchestration.composer.sendFailed': 'Gagal mengirim pesan',
'tinyplaceOrchestration.steering.label': 'Pengarahan',
'brain.empty': 'Otak Anda masih kosong — hubungkan sumber untuk mulai membangun memori.',
'brain.error': 'Tidak dapat memuat otak Anda. Silakan coba lagi.',
'common.cancel': 'Batal',
'common.save': 'Simpan',
'common.confirm': 'Konfirmasi',
'common.delete': 'Hapus',
'common.edit': 'Ubah',
'common.create': 'Buat',
'common.search': 'Cari',
'common.loading': 'memuat…',
'sync.runs': 'sinkronisasi',
'sync.totalCost': 'total',
'sync.when': 'Kapan',
'sync.source': 'Sumber',
'sync.items': 'Item',
'sync.tokens': 'Token',
'sync.cost': 'Biaya',
'sync.duration': 'Durasi',
'sync.noAuditEntries': 'Belum ada sinkronisasi yang tercatat.',
'sync.timeAgo.justNow': 'baru saja',
'sync.timeAgo.minutes': '{n} mnt lalu',
'sync.timeAgo.hours': '{n} jam lalu',
'sync.timeAgo.days': '{n} hr lalu',
'sync.status.success': 'Berhasil',
'sync.status.failed': 'Gagal',
'common.error': 'Kesalahan',
'common.success': 'Berhasil',
'common.back': 'Kembali',
'common.next': 'Berikutnya',
'common.finish': 'Selesai',
'common.close': 'Tutup',
'common.enabled': 'Aktif',
'common.disabled': 'Nonaktif',
'common.on': 'Nyala',
'common.off': 'Mati',
'common.yes': 'Ya',
'common.no': 'Tidak',
'common.ok': 'Mengerti',
'common.name': 'Nama',
'common.retry': 'Coba lagi',
'common.copy': 'Salin',
'common.copied': 'Disalin',
'common.learnMore': 'Pelajari lagi',
'common.seeAll': 'Lihat',
'common.dismiss': 'Abaikan',
'common.clear': 'Bersihkan',
'common.reset': 'Atur ulang',
'common.refresh': 'Segarkan',
'common.export': 'Ekspor',
'common.import': 'Impor',
'common.upload': 'Unggah',
'common.download': 'Unduh',
'common.add': 'Tambah',
'common.remove': 'Hapus',
'common.showMore': 'Tampilkan lagi',
'common.showLess': 'Tampilkan sedikit',
'common.submit': 'Kirim',
'common.continue': 'Lanjutkan',
'common.comingSoon': 'Segera Hadir',
'common.breadcrumb': 'Breadcrumb',
'common.beta': 'Beta',
'common.betaDisclaimer':
'Fitur ini dalam tahap beta. Mungkin berubah atau memiliki kekurangan — masukan Anda membantu kami memperbaikinya.',
'settings.general': 'Umum',
// Settings layman groups (Phase 4 IA revamp)
'settings.groups.account': 'Akun',
'settings.groups.assistant': 'Asisten',
'settings.groups.privacySecurity': 'Privasi & Keamanan',
'settings.groups.notifications': 'Notifikasi',
'settings.groups.about': 'Tentang',
'settings.assistant.personality': 'Kepribadian',
'settings.personalityFace.title': 'Kepribadian & wajah',
'settings.personalityFace.menuDesc': 'Sesuaikan karakter asisten Anda dan pilih wajahnya',
'settings.assistant.voice': 'Suara',
'settings.assistant.voiceDesc': 'Pengaturan ucapan-ke-teks dan teks-ke-ucapan',
'settings.assistant.faceMascot': 'Wajah / Maskot',
'settings.assistant.backgroundActivity': 'Bawah sadar',
'settings.assistant.backgroundActivityDesc':
'Kontrol seberapa aktif asisten Anda bekerja di latar belakang',
'settings.assistant.screenAwareness': 'Kesadaran layar',
'settings.assistant.screenAwarenessDesc': 'Biarkan asisten melihat jendela aktif Anda',
'settings.assistant.desktopCompanion': 'Pendamping desktop',
'settings.assistant.desktopCompanionDesc':
'Mode pendamping selalu aktif dengan pintasan baki sistem',
'settings.assistant.permissions': 'Izin',
'settings.assistant.permissionsDesc':
'Pilih apa yang dapat dilakukan asisten dan di mana ia dapat bekerja',
'settings.privacySecurity.privacy': 'Privasi',
'settings.privacySecurity.privacyDesc': 'Kontrol data apa yang meninggalkan komputer Anda',
'settings.privacySecurity.security': 'Keamanan',
'settings.privacySecurity.securityDesc': 'Sesi dan opsi masuk',
'settings.privacySecurity.approvalsHistory': 'Persetujuan & riwayat',
'settings.privacySecurity.approvalsHistoryDesc': 'Tinjau keputusan persetujuan alat terbaru',
'settings.notifications.menuTitle': 'Notifikasi',
'settings.notifications.menuDesc': 'Kotak masuk peringatan dan preferensi notifikasi',
'settings.devGroups.knowledgeMemory': 'Pengetahuan & Memori',
'settings.devGroups.agentsAutonomy': 'Agen & Otonomi',
'settings.devGroups.modelsInference': 'Model & Inferensi',
'settings.devGroups.automationIntegrations': 'Otomasi & Integrasi',
'settings.devGroups.toolsCapabilities': 'Alat & Kemampuan',
'settings.devGroups.council': 'Dewan',
'settings.analysisViews.title': 'Tampilan analisis',
'settings.analysisViews.menuDesc':
'Analisis grafik memori — diagram, sentralitas, kohesi, asosiasi, kesegaran, lini masa, jalur, dan namespace',
'settings.buildInfo.title': 'Info build / versi',
'settings.buildInfo.menuDesc': 'Build aplikasi, versi, dan detail koneksi core',
'settings.tokenUsage.title': 'Token & Biaya',
'settings.tokenUsage.menuDesc':
'Pengaturan kompresi dan berapa banyak token dan dolar yang telah dihemat',
'settings.tokenUsage.saving': 'Menyimpan…',
'settings.tokenUsage.saved': 'Tersimpan',
'settings.tokenUsage.savingsTitle': 'Penghematan',
'settings.tokenUsage.attributedTo': 'Biaya dihitung untuk {model}',
'settings.tokenUsage.tokensSaved': 'Token yang dihemat',
'settings.tokenUsage.costSaved': 'Biaya yang dihemat',
'settings.tokenUsage.cacheOccupancy': 'Naskah asli yang di-cache',
'settings.tokenUsage.compactions': 'Pemadatan',
'settings.tokenUsage.overEvents': 'dari {count} pemadatan',
'settings.tokenUsage.byCompressor': 'Menurut kompresor',
'settings.tokenUsage.refresh': 'Segarkan',
'settings.tokenUsage.reset': 'Setel ulang statistik',
'settings.tokenUsage.compressionTitle': 'Kompresi',
'settings.tokenUsage.compressionDesc':
'Pemadatan yang sadar konten untuk keluaran alat besar sebelum masuk ke konteks model.',
'settings.tokenUsage.routerEnabled': 'Aktifkan kompresi',
'settings.tokenUsage.routerEnabledDesc': 'Sakelar utama untuk router konten.',
'settings.tokenUsage.search': 'Hasil pencarian',
'settings.tokenUsage.searchDesc':
'Mengurutkan keluaran grep/pencarian menurut relevansi, mempertahankan kecocokan teratas.',
'settings.tokenUsage.code': 'Kode sumber',
'settings.tokenUsage.codeDesc': 'Pertahankan tanda tangan, lipat badan fungsi.',
'settings.tokenUsage.html': 'HTML',
'settings.tokenUsage.htmlDesc': 'Hapus markup menjadi teks yang dapat dibaca.',
'settings.tokenUsage.ml': 'Kompresor teks ML',
'settings.tokenUsage.mlDesc':
'Model ModernBERT lokal untuk teks biasa (memerlukan runtime Python).',
'settings.tokenUsage.ccrTitle': 'Cache & pemulihan (CCR)',
'settings.tokenUsage.ccrDesc':
'Naskah asli yang dipadatkan di-cache sehingga agen dapat mengambil teks lengkap sesuai permintaan.',
'settings.tokenUsage.ccrEnabled': 'Simpan naskah asli untuk pemulihan',
'settings.tokenUsage.ccrEnabledDesc':
'Pindahkan naskah asli dan tambahkan penanda pengambilan sehingga tidak ada yang hilang.',
'settings.tokenUsage.ccrMinTokens': 'Ukuran minimum untuk di-cache',
'settings.tokenUsage.ccrMinTokensDesc':
'Hanya cache dan padatkan secara lossy hasil yang diperkirakan sebanyak ini token atau lebih.',
'settings.tokenUsage.tokensUnit': 'token',
'settings.tokenUsage.ccrDisk': 'Simpan cache ke disk',
'settings.tokenUsage.ccrDiskDesc':
'Pertahankan naskah asli yang dapat dipulihkan di seluruh mulai ulang.',
'settings.dataSync.title': 'Sinkronisasi Data',
'settings.dataSync.menuDesc': 'Yang disinkronkan asisten Anda — sumber, kesegaran, dan status',
'settings.dataSync.description':
'Kelola apa yang disinkronkan ke memori asisten Anda: setiap sumber terhubung dengan waktu sinkronisasi terakhirnya, seberapa banyak yang disinkronkan, dan apakah sedang menyinkronkan sekarang.',
'settings.devGroups.diagnosticsLogs': 'Diagnostik & Log',
'settings.featuresAndAI': 'Fitur & AI',
'settings.billingAndRewards': 'Tagihan & Hadiah',
'settings.support': 'Dukungan',
'settings.advanced': 'Lanjutan',
'settings.dangerZone': 'Zona Berbahaya',
'settings.account': 'Akun',
'settings.accountDesc': 'Frasa pemulihan, tim, koneksi, dan privasi',
'settings.notifications': 'Notifikasi',
'settings.notificationsDesc': 'Jangan Ganggu dan kontrol notifikasi per akun',
'settings.notifications.tabs.preferences': 'Preferensi',
'settings.notifications.tabs.routing': 'Perutean',
'settings.features': 'Fitur',
'settings.featuresDesc': 'Kesadaran layar, pesan, dan alat',
'settings.aiModels': 'AI & Model',
'settings.aiModelsDesc': 'Pengaturan model AI lokal, unduhan, dan penyedia LLM',
'settings.ai': 'AI',
'settings.aiDesc': 'Penyedia cloud, model Ollama lokal, dan routing per beban kerja',
'settings.billingUsage': 'Tagihan & Pemakaian',
'settings.billingUsageDesc': 'Paket langganan, kredit, dan metode pembayaran',
'settings.rewards': 'Hadiah',
'settings.rewardsDesc': 'Referral, kupon, dan kredit yang diperoleh',
'settings.restartTour': 'Ulangi Tur',
'settings.restartTourDesc': 'Putar ulang panduan produk dari awal',
'settings.about': 'Tentang',
'settings.aboutDesc': 'Versi aplikasi dan pembaruan perangkat lunak',
'settings.developerOptions': 'Opsi Developer',
'settings.developerOptionsDesc': 'Diagnostik, panel debug, webhook, dan inspeksi memori',
'settings.developerDiagnostics': 'Developer & Diagnostik',
'settings.developerDiagnosticsDesc':
'Alat developer lanjutan, diagnostik, memori, agen, dan panel debug',
'settings.developerMode.title': 'Mode developer',
'settings.developerMode.description': 'Tampilkan alat developer & diagnostik lanjutan',
'settings.developerMode.enabledByBuild': 'Selalu aktif di build pengembangan',
'settings.clearAppData': 'Bersihkan Data Aplikasi',
'settings.clearAppDataDesc': 'Keluar dan hapus permanen semua data aplikasi lokal',
'settings.logOut': 'Keluar',
'settings.logOutDesc': 'Keluar dari akun Anda',
'settings.exitLocalSession': 'Keluar dari sesi lokal',
'settings.exitLocalSessionDesc': 'Kembali ke layar masuk',
'settings.language': 'Bahasa',
'settings.navGroups.general': 'Umum',
'settings.navGroups.assistant': 'Asisten',
'settings.navGroups.data': 'Data',
'settings.navGroups.connections': 'Koneksi',
'settings.navGroups.system': 'Sistem',
'settings.betaBuild': 'Versi beta - v{version}',
'settings.languageDesc': 'Bahasa tampilan untuk antarmuka aplikasi',
'settings.alerts': 'Peringatan',
'settings.alertsDesc': 'Lihat peringatan terbaru dan aktivitas di kotak masuk Anda',
'settings.account.profile': 'Profil',
'settings.account.profileDesc': 'Nama, email, dan avatar',
'settings.account.devices': 'Perangkat',
'settings.account.devicesDesc': 'Pasangkan dan kelola perangkat seluler',
'settings.account.teamMembers': 'Tim & anggota',
'settings.account.teamMembersDesc': 'Kelola akses tim dan peran anggota',
'settings.account.dataMigration': 'Data & migrasi',
'settings.account.dataMigrationDesc': 'Impor memori dari asisten lain',
'settings.account.recoveryPhrase': 'Frasa Pemulihan',
'settings.account.recoveryPhraseDesc': 'Lihat dan cadangkan frasa pemulihan akun Anda',
'settings.account.team': 'Tim',
'settings.account.teamDesc': 'Kelola anggota tim dan izin',
'settings.account.connections': 'Koneksi',
'settings.account.connectionsDesc': 'Kelola akun dan layanan yang terhubung',
'settings.account.privacy': 'Privasi',
'settings.account.privacyDesc': 'Kontrol data apa saja yang keluar dari komputer Anda',
'migration.title': 'Impor dari asisten lain',
'migration.description':
'Migrasikan memori dan catatan dari asisten lokal lain ke ruang kerja ini. Mulai dengan Pratinjau untuk melihat persis apa yang akan berubah, lalu klik Terapkan untuk menyalin datanya. Memori Anda saat ini dicadangkan terlebih dahulu.',
'migration.vendorLabel': 'Sumber',
'migration.vendor.openclaw': 'OpenClaw',
'migration.vendor.hermes': 'Agen Hermes',
'migration.sourceLabel': 'Path ruang kerja sumber (opsional)',
'migration.sourcePlaceholder':
'Biarkan kosong untuk deteksi otomatis (misalnya ~/.openclaw/workspace)',
'migration.sourcePlaceholderHermes': 'Biarkan kosong untuk deteksi otomatis (mis. ~/.hermes)',
'migration.sourceHint':
'Kosong berarti memakai lokasi default sumber. Isi path eksplisit jika ruang kerja sudah dipindahkan.',
'migration.previewAction': 'Pratinjau',
'migration.previewRunning': 'Memuat pratinjau…',
'migration.applyAction': 'Terapkan impor',
'migration.applyRunning': 'Mengimpor…',
'migration.applyDisclaimer':
'Terapkan terbuka setelah Pratinjau berhasil untuk sumber yang sama. Memori yang ada dicadangkan sebelum impor apa pun.',
'migration.reportTitlePreview': 'Pratinjau — belum ada yang diimpor',
'migration.reportTitleApplied': 'Impor selesai',
'migration.report.source': 'Ruang kerja sumber',
'migration.report.target': 'Ruang kerja tujuan',
'migration.report.fromSqlite': 'Dari SQLite (brain.db)',
'migration.report.fromMarkdown': 'Dari Markdown',
'migration.report.imported': 'Diimpor',
'migration.report.skippedUnchanged': 'Dilewati (tidak berubah)',
'migration.report.renamedConflicts': 'Diganti nama saat konflik',
'migration.report.warnings': 'Peringatan',
'migration.report.previewHint':
'Belum ada data yang diimpor. Klik Terapkan impor untuk menyalinnya.',
'migration.report.appliedHint':
'Entri yang diimpor kini ada di memori Anda. Jalankan Pratinjau lagi untuk membandingkan.',
'migration.confirmImport.singular':
'Impor {count} entri ke ruang kerja saat ini?\n\nSumber: {source}\nTujuan: {target}\n\nMemori yang ada akan dicadangkan sebelum impor dimulai.',
'migration.confirmImport.plural':
'Impor {count} entri ke ruang kerja saat ini?\n\nSumber: {source}\nTujuan: {target}\n\nMemori yang ada akan dicadangkan sebelum impor dimulai.',
'settings.notifications.doNotDisturb': 'Jangan Ganggu',
'settings.notifications.doNotDisturbDesc': 'Jeda semua notifikasi selama periode tertentu',
'settings.notifications.channelControls': 'Kontrol Per Kanal',
'settings.notifications.channelControlsDesc': 'Atur preferensi notifikasi untuk setiap kanal',
'settings.features.screenAwareness': 'Kesadaran Layar',
'settings.features.screenAwarenessDesc': 'Izinkan asisten melihat jendela aktif Anda',
'settings.features.messaging': 'Pesan',
'settings.features.messagingDesc': 'Pengaturan kanal dan integrasi pesan',
'settings.features.tools': 'Alat',
'settings.features.toolsDesc': 'Kelola alat dan integrasi yang terhubung',
'settings.ai.localSetup': 'Pengaturan AI Lokal',
'settings.ai.localSetupDesc': 'Unduh dan konfigurasikan model AI lokal',
'settings.ai.llmProvider': 'Penyedia LLM',
'settings.ai.llmProviderDesc': 'Pilih dan konfigurasikan penyedia AI Anda',
'clearData.title': 'Bersihkan Data Aplikasi',
'clearData.warning':
'Ini akan mengeluarkan Anda dan menghapus permanen data aplikasi lokal termasuk:',
'clearData.bulletSettings': 'Pengaturan aplikasi dan percakapan',
'clearData.bulletCache': 'Semua data cache integrasi lokal',
'clearData.bulletWorkspace': 'Data workspace',
'clearData.bulletOther': 'Semua data lokal lainnya',
'clearData.irreversible': 'Tindakan ini tidak dapat dibatalkan.',
'clearData.clearing': 'Membersihkan Data Aplikasi...',
'clearData.failed': 'Gagal membersihkan data dan keluar. Silakan coba lagi.',
'clearData.failedLogout': 'Gagal keluar. Silakan coba lagi.',
'clearData.failedPersist': 'Gagal membersihkan status aplikasi tersimpan. Silakan coba lagi.',
'welcome.logoAlt': 'OpenHuman',
'welcome.title': 'Selamat datang di OpenHuman',
'welcome.subtitle': 'Asisten AI Anda untuk komunitas',
'welcome.connectPrompt': 'Konfigurasikan RPC URL (Lanjutan)',
'welcome.selectRuntime': 'Pilih Runtime',
'welcome.clearingAppData': 'Menghapus data aplikasi...',
'welcome.clearAppDataAndRestart': 'Hapus data aplikasi & memulai ulang',
'welcome.clearAppDataWarning':
'Ini akan menghapus rahasia dan akun yang tersimpan secara lokal di perangkat ini. Akun cloud Anda tidak terpengaruh — Anda dapat masuk kembali segera setelahnya.',
'welcome.resetErrorFallback':
'Tidak dapat menghapus data aplikasi. Silakan keluar dan buka kembali OpenHuman, lalu coba lagi.',
'welcome.signingIn': 'Memasukkan Anda...',
'welcome.termsIntro': 'Dengan melanjutkan, Anda menyetujui',
'welcome.termsOfUse': 'Persyaratan',
'welcome.termsJoiner': 'dan',
'welcome.privacyPolicy': 'Kebijakan Privasi',
'welcome.termsOutro': '.',
'welcome.urlPlaceholder': 'http://localhost:8089',
'welcome.invalidUrl': 'Masukkan URL HTTP atau HTTPS yang valid',
'welcome.connecting': 'Menguji',
'welcome.connect': 'Uji',
'home.greeting': 'Selamat pagi',
'home.greetingAfternoon': 'Selamat siang',
'home.greetingEvening': 'Selamat malam',
'home.askAssistant': 'Tanyakan apa saja ke asisten Anda...',
'home.statusOk': 'Asistenmu siap kapan pun kamu siap. Ketik sesuatu di bawah untuk memulai.',
'home.statusBackendOnly':
'Menghubungkan ulang ke backend... agen Anda akan segera tersedia lagi.',
'home.statusCoreUnreachable':
'Core sidecar lokal tidak merespons. Proses latar OpenHuman mungkin crash atau gagal dimulai.',
'home.statusInternetOffline':
'Perangkat Anda sedang offline. Periksa jaringan atau mulai ulang aplikasi untuk menyambung lagi.',
'home.restartCore': 'Mulai Ulang Core',
'home.restartingCore': 'Memulai ulang core...',
'home.themeToggle.toLight': 'Beralih ke mode terang',
'home.themeToggle.toDark': 'Beralih ke mode gelap',
'home.usageExhaustedTitle': 'Jatah penggunaan Anda telah habis',
'home.usageExhaustedBody':
'Kuota penggunaan yang termasuk saat ini sudah habis. Mulai langganan untuk membuka kapasitas berkelanjutan yang lebih besar.',
'home.usageExhaustedCta': 'Mulai berlangganan',
'openrouterFree.cta': 'Gunakan model gratis OpenRouter',
'openrouterFree.saving': 'Menghubungkan OpenRouter...',
'openrouterFree.error':
'Tidak dapat beralih ke model gratis OpenRouter. Periksa login OpenRouter Anda dan coba lagi.',
'home.routinesCard': 'Rutinitas Anda',
'home.routinesActive': '{count} aktif',
'routines.title': 'Rutinitas Anda',
'routines.subtitle': 'Hal yang dilakukan asisten Anda secara otomatis',
'routines.loading': 'Memuat rutinitas…',
'routines.empty': 'Belum ada rutinitas',
'routines.emptyHint':
'Asistenmu bisa menjalankan tugas sesuai jadwal seperti pengarahan pagi atau ringkasan harian.',
'routines.refresh': 'Segarkan',
'routines.nextRun': 'Jalankan berikutnya',
'routines.lastRunSuccess': 'Terakhir berjalan berhasil',
'routines.lastRunFailed': 'Terakhir berjalan gagal',
'routines.notRunYet': 'Belum pernah dijalankan',
'routines.runNow': 'Jalankan Sekarang',
'routines.running': 'Berjalan...',
'routines.runNowTimedOut': 'Waktu habis — silakan muat ulang dan coba lagi.',
'routines.viewHistory': 'Lihat riwayat',
'routines.loadingHistory': 'Memuat…',
'routines.noHistory': 'Belum ada riwayat eksekusi.',
'routines.statusSuccess': 'Berhasil',
'routines.statusError': 'Kesalahan',
'routines.showOutput': 'Tampilkan output',
'routines.hideOutput': 'Sembunyikan output',
'routines.toggleEnabled': 'Aktifkan atau matikan rutinitas ini',
'routines.typeAgent': 'Agen',
'routines.typeCommand': 'Perintah',
'nav.routines': 'Routines',
'chat.newThread': 'Thread baru',
'chat.newConversation': 'Percakapan baru',
'chat.newWindowWelcome1': 'Selamat datang, {name} 👋',
'chat.newWindowWelcome2': 'Ayo mulai, {name} 🧑🍳.',
'chat.newWindowWelcome3': 'Waktunya fokus 🧘🏻',
'chat.typeMessage': 'Apa yang bisa saya bantu hari ini?',
'chat.send': 'Kirim pesan',
'chat.stopGeneration': 'Hentikan pembuatan',
'chat.parallelBranchHint': 'Ketik cabang paralel — ⌘/Ctrl+Enter untuk mengirim',
'chat.followupHint':
'Antrekan tindak lanjut — dikirim setelah balasan ini · ⌘/Ctrl+Enter untuk cabang paralel',
'chat.queuedFollowups.label': 'Tindak lanjut dalam antrean',
'chat.queuedFollowups.clear': 'Hapus',
'chat.queuedFollowups.clearFailed': 'Gagal mengosongkan antrean — coba lagi.',
'chat.parallelBranchLabel': 'Cabang paralel',
'chat.thinking': 'Berpikir...',
'chat.noMessages': 'Belum ada pesan',
'chat.startConversation': 'Mulai percakapan',
'chat.regenerate': 'Buat ulang',
'chat.copyResponse': 'Salin respons',
'chat.citations': 'Sitasi',
'chat.toolUsed': 'Alat yang digunakan',
'scope.legacy': 'Lama',
'scope.user': 'Pengguna',
'scope.project': 'Proyek',
'skills.title': 'Koneksi',
'skills.search': 'Cari koneksi...',
'skills.noResults': 'Koneksi tidak ditemukan',
'skills.loadingIntegrations': 'Memuat integrasi…',
'skills.connect': 'Hubungkan',
'skills.disconnect': 'Putuskan',
'skills.configure': 'Kelola',
'skills.connected': 'Terhubung',
'skills.available': 'Tersedia',
'skills.addAccount': 'Tambah Akun',
'skills.channels': 'Pesan',
'skills.explorer.emptyCta': 'Instal dari URL',
'skills.explorer.emptyDescription':
'Instal paket SKILL.md atau letakkan folder bergaya Hermes di ~/.openhuman/skills.',
'skills.explorer.emptyTitle': 'Tidak ada skill ditemukan',
'skills.explorer.installFromUrl': 'Instal dari URL',
'skills.explorer.newSkill': 'Skill baru',
'skills.explorer.subtitle':
'Jelajahi paket SKILL.md, termasuk markdown, skrip, referensi, templat, contoh, dan prompt bergaya Hermes.',
'skills.explorer.title': 'Penjelajah skill',
'skills.explorer.searchPlaceholder': 'Cari skill...',
'skills.explorer.scopeUser': 'User',
'skills.explorer.scopeProject': 'Project',
'skills.explorer.scopeLegacy': 'Legacy',
'skills.explorer.noDescription': 'Tidak ada deskripsi.',
'skills.explorer.uninstallSuccess': 'Skill berhasil dihapus.',
'skills.explorer.registryTab': 'Registri',
'skills.explorer.installedTab': 'Terpasang',
'skills.explorer.allFormats': 'Semua format',
'skills.explorer.refreshRegistry': 'Segarkan registri',
'skills.explorer.registryEmptyTitle': 'Tidak ada entri registri',
'skills.explorer.registryEmptyDescription':
'Tidak dapat memuat registri keterampilan. Periksa koneksi Anda dan coba segarkan.',
'skills.explorer.showingOf':
'Menampilkan {shown} dari {total} hasil. Perbaiki pencarian Anda untuk melihat lebih banyak.',
'skills.explorer.installed': 'Terpasang',
'skills.explorer.install': 'Pasang',
'skills.explorer.installing': 'Memasang…',
'skills.integrations': 'Integrasi Composio',
'skills.integrationsSubtitle':
'Koneksi OAuth berbasis cloud — masuk dengan akun Anda dan Composio mengelola token agar agen dapat membaca dan bertindak atas nama Anda. Tidak perlu mengelola API key.',
'skills.composio.noApiKeyTitle': 'Belum ada API key Composio yang dikonfigurasi',
'skills.composio.noApiKeyDescription':
'Mode lokal menggunakan API key Composio milik Anda sendiri. Buka Pengaturan → Lanjutan → Composio untuk menambahkannya sebelum menghubungkan integrasi di sini.',
'skills.composio.noApiKeyCta': 'Buka di Pengaturan',
'skills.tabs.composio': 'Composio',
'skills.tabs.channels': 'Saluran',
'skills.tabs.explorer': 'Skill',
'skills.tabs.meetings': 'Rapat Google Meet',
'skills.tabs.mcp': 'MCP Server',
'connections.tabs.composio': 'Composio',
'connections.tabs.channels': 'Saluran',
'connections.tabs.mcp': 'Server MCP',
'connections.tabs.skills': 'Keterampilan',
'connections.tabs.meetings': 'Rapat',
'connections.groups.integrations': 'Integrasi',
'connections.tabs.oauth': 'OAuth',
'connections.tabs.composioKey': 'Composio',
'connections.groups.apiKeys': 'Kunci API',
'connections.groups.intelligence': 'Intelijen',
'memory.title': 'Memori',
'memory.search': 'Cari memori...',
'memory.noResults': 'Memori tidak ditemukan',
'memory.empty': 'Belum ada memori. Memori dibuat otomatis saat Anda berinteraksi.',
'memory.tab.memory': 'Memori',
'memory.tab.memoryTree': 'Pohon Memori',
'memory.tab.tasks': 'Tugas',
'memory.tab.tasksDescription':
'Buat dan lacak tugas — to-do Anda sendiri beserta papan yang dibangun agen Anda di berbagai percakapan.',
'memory.tab.subconscious': 'Bawah sadar',
'memory.tab.agentWork': 'Kerja agen',
'memory.tab.agentWorkDescription':
'Pusat kendali untuk setiap proses agen latar belakang — dikelompokkan berdasarkan apa yang butuh masukan Anda, apa yang sedang berjalan, dan apa yang sudah selesai.',
'memory.tab.worktrees': 'Worktree',
'memory.tab.worktreesDescription':
'Worktree git terisolasi dari worker agen paralel — periksa perubahan, buka, atau bersihkan.',
'memory.tab.teams': 'Tim',
'memory.tab.teamsDescription':
'Tim agen yang terkoordinasi — siapa yang menangani setiap tugas, apa yang terhambat, dan apa yang dibicarakan rekan satu tim satu sama lain.',
'memory.tab.agents': 'Perpustakaan',
'memory.tab.agentsDescription':
'Telusuri dan jalankan agen yang tersedia — masing-masing dengan alat, kemampuan, dan area fokusnya sendiri.',
'memory.tab.workflows': 'Workflows',
'memory.tab.workflowsDescription':
'Prosedur yang dapat digunakan ulang dan dijalankan — sebuah tujuan beserta langkah-langkah untuk mencapainya. Buat satu, instal dari URL, atau buka alur kerja untuk menjalankannya.',
'memory.tab.dreams': 'Mimpi',
'memory.tab.calls': 'Panggilan',
'memory.tab.diagram': 'Diagram',
'memory.tab.centrality': 'Centrality',
'memory.tab.namespaces': 'Namespace',
'memory.tab.timeline': 'Timeline',
'memory.tab.settings': 'Pengaturan',
'memory.analyzeNow': 'Analisis Sekarang',
'memoryTimeline.title': 'Lini Masa Memori',
'memoryTimeline.intro':
'Kapan asisten mempelajari tentang Anda — fakta dikelompokkan berdasarkan bulan terakhir diperkuat. Menunjukkan pertumbuhan, lonjakan aktivitas, dan periode tenang.',
'memoryTimeline.loading': 'Membangun lini masa…',
'memoryTimeline.errorPrefix': 'Tidak dapat memuat graf:',
'memoryTimeline.retry': 'Retry',
'memoryTimeline.namespaceLabel': 'Namespace',
'memoryTimeline.namespaceAll': 'Semua namespace',
'memoryTimeline.empty': 'Belum ada graf pengetahuan.',
'memoryTimeline.emptyHint':
'Ketika asisten mencatat fakta tentang Anda, lini masanya akan muncul di sini.',
'memoryTimeline.metricTotal': 'Facts',
'memoryTimeline.metricMonths': 'Bulan aktif',
'memoryTimeline.metricRecent': '30 hari terakhir',
'memoryTimeline.heading': 'Fakta yang dipelajari per bulan',
'memoryTimeline.busiestCaption': 'Paling aktif: {period} ({count})',
'memoryTimeline.undatedNote': '{count} fakta tanpa tanggal tercatat.',
'memoryTimeline.truncated': 'Menampilkan {shown} terbaru dari {total} bulan.',
'namespaceOverview.title': 'Ikhtisar Namespace',
'namespaceOverview.intro':
'Bagaimana pengetahuan Anda terdistribusi di seluruh konteks — jumlah fakta dan entitas berbeda yang tercatat di setiap namespace.',
'namespaceOverview.loading': 'Menggabungkan namespace…',
'namespaceOverview.errorPrefix': 'Tidak dapat memuat grafiknya:',
'namespaceOverview.retry': 'Coba lagi',
'namespaceOverview.empty': 'Belum ada grafik pengetahuan.',
'namespaceOverview.emptyHint':
'Saat asisten mencatat fakta di seluruh konteks, setiap namespace akan muncul di sini.',
'namespaceOverview.metricNamespaces': 'Namespace',
'namespaceOverview.metricFacts': 'Fakta',
'namespaceOverview.metricEntities': 'Entitas',
'namespaceOverview.heading': 'Berdasarkan namespace',
'namespaceOverview.unnamespaced': '(tanpa namespace)',
'namespaceOverview.factsLabel': '{count} fakta',
'namespaceOverview.entitiesLabel': '{count} entitas',
'namespaceOverview.entitiesShort': '{count} ent.',
'namespaceOverview.truncated': 'Menampilkan {shown} teratas dari {total} namespace.',
'graphCentrality.title': 'Centralitas Grafik Pengetahuan',
'graphCentrality.intro':
'PageRank melalui grafik memori Anda permukaan hub load- bantalan - dan entiti konektor yang menghubungkan lain-terpisah cluster, yang jumlah frekuensi mentah tidak dapat mengungkapkan.',
'graphCentrality.loading': 'Komputer sentralitas...',
'graphCentrality.errorPrefix': 'Tidak dapat memuat grafiknya:',
'graphCentrality.retry': 'Coba lagi',
'graphCentrality.empty': 'Belum ada grafik pengetahuan.',
'graphCentrality.emptyHint':
'Sebagai asisten mencatat fakta tentang Anda, entitas yang paling terhubung akan muncul di sini.',
'graphCentrality.namespaceLabel': 'Namespace',
'graphCentrality.namespaceAll': 'Semua ruang-nama',
'graphCentrality.metricEntities': 'Entitas',
'graphCentrality.metricConnections': 'Koneksi',
'graphCentrality.metricClusters': 'Cluster',
'graphCentrality.clustersCaption': '{components} cluster terbesar memegang {largest}',
'graphCentrality.approximateBadge': 'approximate',
'graphCentrality.approximateTitle': 'Berhenti di puncak iterasi sebelum sepenuhnya konverging',
'graphCentrality.rankedHeading': 'Entitas atas dengan pengaruh',
'graphCentrality.colRank': '#',
'graphCentrality.colEntity': 'Entitas',
'graphCentrality.colInfluence': 'Influensi',
'graphCentrality.colLinks': 'Taut',
'graphCentrality.bridgeBadge': 'connector',
'graphCentrality.bridgeTitle':
'Konektor - lebih berpengaruh daripada jumlah link yang menunjukkan',
'graphCentrality.degreeTitle': '{in} keluar',
'memory.tab.associations': 'Associations',
'entityAssociations.title': 'Asosiasi Entitas',
'entityAssociations.intro':
'Entitas yang berbagi banyak koneksi yang sama berasosiasi — meskipun tidak ada satu fakta pun yang menghubungkan mereka secara langsung. Kesamaan Jaccard mengungkap pasangan tersembunyi ini.',
'entityAssociations.loading': 'Menghitung asosiasi…',
'entityAssociations.errorPrefix': 'Tidak dapat memuat graf:',
'entityAssociations.retry': 'Retry',
'entityAssociations.empty': 'Belum ada asosiasi.',
'entityAssociations.emptyHint':
'Ketika entitas mulai berbagi koneksi, pasangan terkuat akan muncul di sini.',
'entityAssociations.namespaceLabel': 'Namespace',
'entityAssociations.namespaceAll': 'Semua namespace',
'entityAssociations.metricEntities': 'Entities',
'entityAssociations.metricPairs': 'Associations',
'entityAssociations.rankedHeading': 'Asosiasi terkuat',
'entityAssociations.linkedBadge': 'linked',
'entityAssociations.inferredBadge': 'inferred',
'entityAssociations.linkedTitle': 'Entitas-entitas ini terhubung langsung.',
'entityAssociations.inferredTitle':
'Tidak ada tautan langsung — terkait hanya melalui koneksi bersama.',
'entityAssociations.sharedLabel': '{shared} bersama',
'entityAssociations.pairTitle': '{jaccard}% mirip · {shared} dari {union} koneksi bersama',
'entityAssociations.truncated': 'Menampilkan {shown} dari {total} — terkuat lebih dulu.',
'memory.tab.freshness': 'Freshness',
'memoryFreshness.title': 'Kesegaran Pengetahuan',
'memoryFreshness.intro':
'Fakta yang belum dikonfirmasi ulang oleh asisten baru-baru ini akan memudar mengikuti kurva lupa. Ini menunjukkan apa yang menjadi usang dan perlu diperiksa ulang, agar fakta lama tidak dianggap masih pasti.',
'memoryFreshness.loading': 'Menghitung kesegaran…',
'memoryFreshness.errorPrefix': 'Tidak dapat memuat graf:',
'memoryFreshness.retry': 'Retry',
'memoryFreshness.empty': 'Belum ada graf pengetahuan.',
'memoryFreshness.emptyHint':
'Ketika asisten mencatat fakta tentang Anda, kesegarannya akan dilacak di sini.',
'memoryFreshness.namespaceLabel': 'Namespace',
'memoryFreshness.namespaceAll': 'Semua namespace',
'memoryFreshness.metricFresh': 'Fresh',
'memoryFreshness.metricFading': 'Fading',
'memoryFreshness.metricStale': 'Stale',
'memoryFreshness.recallCaption': 'Rata-rata recall {recall}% dari {total} fakta',
'memoryFreshness.queueHeading': 'Antrean konfirmasi ulang',
'memoryFreshness.queueTruncated': 'Menampilkan {shown} dari {total} — tangani ini lebih dulu.',
'memoryFreshness.allFresh': 'Semua fakta masih segar — tidak perlu dikonfirmasi ulang.',
'memoryFreshness.statusFading': 'fading',
'memoryFreshness.statusStale': 'stale',
'memoryFreshness.ageLabel': '{days} hari lalu',
'memoryFreshness.recallTitle': '{recall}% recall · waktu paruh {halfLife} hari',
'memory.tab.path': 'Jalur',
'connectionPath.title': 'Jalur Koneksi',
'connectionPath.intro':
'Telusuri rantai relasi terpendek yang menghubungkan dua entitas mana pun — bagaimana graf menghubungkan keduanya, bahkan melalui beberapa lompatan.',
'connectionPath.loading': 'Memuat graf…',
'connectionPath.errorPrefix': 'Tidak dapat memuat graf:',
'connectionPath.retry': 'Coba lagi',
'connectionPath.namespaceLabel': 'Namespace',
'connectionPath.namespaceAll': 'Semua namespace',
'connectionPath.sourceLabel': 'Dari',
'connectionPath.targetLabel': 'Ke',
'connectionPath.sourcePlaceholder': 'Entitas awal',
'connectionPath.targetPlaceholder': 'Entitas akhir',
'connectionPath.prompt': 'Pilih dua entitas untuk menelusuri bagaimana keduanya terhubung.',
'connectionPath.empty': 'Belum ada graf pengetahuan.',
'connectionPath.emptyHint':
'Setelah asisten mencatat fakta-fakta terkait, Anda dapat menelusuri koneksi di sini.',
'connectionPath.resultHeading': 'Jalur terpendek',
'connectionPath.pathSummary': 'Berjarak {length} lompatan',
'connectionPath.sameMessage': 'Pilih dua entitas yang berbeda.',
'connectionPath.missingSource': '"{entity}" tidak ada dalam graf.',
'connectionPath.missingTarget': '"{entity}" tidak ada dalam graf.',
'connectionPath.noPath': 'Tidak ditemukan koneksi antara "{source}" dan "{target}".',
'memoryTree.status.title': 'Pohon Memori',
'memoryTree.status.autoSyncLabel': 'Sinkronisasi otomatis',
'memoryTree.status.autoSyncDescription':
'Jeda untuk menghentikan ingest baru. Wiki yang ada tetap dapat dikueri.',
'memoryTree.status.statusTile': 'Status',
'memoryTree.status.lastSyncTile': 'Sinkronisasi terakhir',
'memoryTree.status.totalChunksTile': 'Total potongan',
'memoryTree.status.wikiSizeTile': 'Ukuran wiki',
'memoryTree.status.statusRunning': 'Berjalan',
'memoryTree.status.statusPaused': 'Dijeda',
'memoryTree.status.statusSyncing': 'Menyinkronkan',
'memoryTree.status.statusError': 'Kesalahan',
'memoryTree.status.statusIdle': 'Diam',
'memoryTree.status.never': 'Tidak pernah',
'memoryTree.status.fetchError': 'Gagal mengambil status Pohon Memori',
'memoryTree.status.retry': 'Coba lagi',
'memoryTree.status.toggleFailed': 'Gagal mengalihkan sinkronisasi otomatis',
'memoryTree.status.justNow': 'baru saja',
'memoryTree.status.secondsAgo': '{count} dtk lalu',
'memoryTree.status.minuteAgo': '1 mnt lalu',
'memoryTree.status.minutesAgo': '{count} mnt lalu',
'memoryTree.status.hourAgo': '1 jam lalu',
'memoryTree.status.hoursAgo': '{count} jam lalu',
'memoryTree.status.dayAgo': '1 hari lalu',
'memoryTree.status.daysAgo': '{count} hari lalu',
'memoryTree.status.integrationsTitle': 'Kesehatan per integrasi',
'memoryTree.status.integrationsEmpty': 'Tidak ada integrasi tersambung',
'memoryTree.status.integrationActive': 'Aktif',
'memoryTree.status.integrationStale': 'Usang',
'memoryTree.status.integrationChunks': 'Potongan: {count}',
'alerts.title': 'Peringatan',
'alerts.empty': 'Belum ada peringatan',
'alerts.markAllRead': 'Tandai semua sudah dibaca',
'alerts.unread': 'belum dibaca',
'rewards.title': 'Hadiah',
'rewards.referrals': 'Referral',
'rewards.coupons': 'Tukarkan',
'rewards.localUnavailable':
'Login lokal tidak mendapatkan reward, kupon, atau kredit referral. Keluar lalu lanjutkan dengan masuk menggunakan akun OpenHuman jika Anda ingin reward dihitung.',
'rewards.localUnavailableCta': 'Buka Pengaturan Akun',
'rewards.credits': 'Kredit',
'rewards.referralCode': 'Kode referral Anda',
'rewards.copyCode': 'Salin kode',
'rewards.share': 'Bagikan',
'onboarding.welcome': 'Hai. Saya OpenHuman.',
'onboarding.welcomeDesc':
'Asisten AI super cerdas yang berjalan di komputer Anda. Privat, sederhana, dan sangat kuat.',
'onboarding.context': 'Pengumpulan Konteks',
'onboarding.contextDesc': 'Hubungkan alat dan layanan yang Anda gunakan setiap hari.',
'onboarding.localAI': 'AI Lokal',
'onboarding.localAIDesc': 'Siapkan model AI lokal yang berjalan di mesin Anda.',
'onboarding.chatProvider': 'Penyedia Chat',
'onboarding.chatProviderDesc': 'Pilih cara Anda ingin berinteraksi dengan asisten.',
'onboarding.referral': 'Rujukan',
'onboarding.referralDesc': 'Gunakan kode referral jika Anda memilikinya.',
'onboarding.finish': 'Selesaikan Pengaturan',
'onboarding.finishDesc': 'Semua siap! Mulai gunakan OpenHuman.',
'onboarding.skip': 'Lewati',
'onboarding.getStarted': 'Mulai',
'onboarding.runtimeChoice.title': 'Bagaimana Anda ingin menjalankan OpenHuman?',
'onboarding.runtimeChoice.subtitle':
'Pilih pengaturan yang paling sesuai untuk Anda. Anda dapat mengubahnya nanti di Pengaturan.',
'onboarding.runtimeChoice.cloud.title': 'Sederhana',
'onboarding.runtimeChoice.cloud.tagline': 'Biarkan OpenHuman mengelola segalanya untuk Anda.',
'onboarding.runtimeChoice.cloud.f1': 'Keamanan bawaan',
'onboarding.runtimeChoice.cloud.f2': 'Kompresi token untuk memaksimalkan penggunaan Anda',
'onboarding.runtimeChoice.cloud.f3': 'Satu langganan, semua model sudah termasuk',
'onboarding.runtimeChoice.cloud.f4': 'Tidak perlu mengelola API key',
'onboarding.runtimeChoice.cloud.f5': 'Mudah diatur',
'onboarding.runtimeChoice.custom.title': 'Jalankan Kustom',
'onboarding.runtimeChoice.custom.tagline':
'Bawa key Anda sendiri. Kontrol penuh atas apa yang Anda gunakan.',
'onboarding.runtimeChoice.custom.f1': 'Anda memerlukan API key untuk hampir semuanya',
'onboarding.runtimeChoice.custom.f2': 'Memanfaatkan ulang layanan yang sudah Anda bayar',
'onboarding.runtimeChoice.custom.f3': 'Bisa gratis jika Anda menjalankan semuanya secara lokal',
'onboarding.runtimeChoice.custom.f4': 'Lebih banyak pengaturan, lebih banyak kontrol',
'onboarding.runtimeChoice.custom.f5': 'Terbaik untuk pengguna power dan developer',
'onboarding.runtimeChoice.cloud.creditHighlight': 'Kredit gratis saat mendaftar',
'onboarding.runtimeChoice.continueCloud': 'Lanjutkan dengan Sederhana',
'onboarding.runtimeChoice.continueCustom': 'Lanjutkan dengan Kustom',
'onboarding.runtimeChoice.recommended': 'Direkomendasikan',
'onboarding.runtimeChoice.exitError': 'Tidak dapat menyelesaikan orientasi. Silakan coba lagi.',
'onboarding.apiKeys.title': 'Mari Tambahkan API Key Anda',
'onboarding.apiKeys.subtitle':
'Anda dapat menempelkannya sekarang atau lewati dan tambahkan nanti di Pengaturan › AI. Key disimpan di perangkat ini, dienkripsi saat penyimpanan.',
'onboarding.apiKeys.openaiLabel': 'API key OpenAI',
'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
'onboarding.apiKeys.openaiOauthHint':
'Gunakan ChatGPT Plus/Pro (berlangganan) atau kunci OpenAI API — keduanya tidak diperlukan.',
'onboarding.apiKeys.openaiOauthOpening': 'Membuka proses masuk…',
'onboarding.apiKeys.openaiOauthConnect': 'Masuk dengan ChatGPT',
'onboarding.apiKeys.openaiOauthConnected': 'Terhubung dengan ChatGPT',
'onboarding.apiKeys.openaiOauthCallbackHint':
'Setelah masuk, tempel URL pengalihan lengkap dari browser Anda (dimulai dengan {url}).',
'onboarding.apiKeys.oauthDesktopOnly': 'Masuk ChatGPT hanya tersedia di aplikasi desktop.',
'onboarding.apiKeys.oauthStartFailed':
'Tidak dapat memulai proses masuk ChatGPT. Coba lagi atau gunakan kunci API.',
'onboarding.apiKeys.oauthPasteRedirect': 'Tempel URL pengalihan dari browser Anda setelah masuk.',
'onboarding.apiKeys.oauthCompleteFailed':
'Proses masuk ChatGPT tidak selesai. Periksa URL pengalihan dan coba lagi.',
'onboarding.apiKeys.finishSignIn': 'Selesaikan proses masuk ChatGPT',
'onboarding.apiKeys.orApiKey': 'atau kunci API',
'onboarding.apiKeys.anthropicLabel': 'API key Anthropic',
'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
'onboarding.apiKeys.saveError':
'Tidak dapat menyimpan key tersebut. Periksa kembali dan coba lagi.',
'onboarding.apiKeys.skipForNow': 'Lewati untuk sekarang',
'onboarding.apiKeys.continue': 'Simpan dan lanjutkan',