Finish the Indonesian translation

The Indonesian UI still showed English or mixed labels: Workspace
overview, Knowledge graph, Konten in progress, Lihat di Results, Masuk
Library, Sumber: seluruh Brain, and "Klik sebuah node". They are now
translated, and the Brain is called Otak throughout, as most Indonesian
text already did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Iqbal
2026-10-30 13:53:16 +07:00
parent 012159aae2
commit 7ce5a0fa12

View File

@@ -539,35 +539,35 @@ const id: Record<Key, string> = {
'prod.unitMaterial': 'materi', 'prod.unitMaterial': 'materi',
'prod.unitMaterialOne': 'materi', 'prod.unitMaterialOne': 'materi',
'prod.unitContent': 'konten', 'prod.unitContent': 'konten',
'prod.metricMaterial': 'Total materi di Brain', 'prod.metricMaterial': 'Total materi di Otak',
'prod.metricMaterialSub': 'Sumber pengetahuan tim Anda', 'prod.metricMaterialSub': 'Sumber pengetahuan tim Anda',
'prod.metricMade': 'Semua konten dibuat', 'prod.metricMade': 'Semua konten dibuat',
'prod.metricMadeSub': 'Seluruh hasil pembuatan konten', 'prod.metricMadeSub': 'Seluruh hasil pembuatan konten',
'prod.metricLms': 'Sudah diupload ke LMS', 'prod.metricLms': 'Sudah diunggah ke LMS',
'prod.metricLmsSub': 'Status upload pada demo ini', 'prod.metricLmsSub': 'Status unggahan pada demo ini',
'prod.activityTitle': 'Aktivitas konten', 'prod.activityTitle': 'Aktivitas konten',
'prod.activityDescription': 'Dari pengetahuan di Brain menjadi pembelajaran baru.', 'prod.activityDescription': 'Dari pengetahuan di Otak menjadi pembelajaran baru.',
'prod.activityAll': 'Lihat semua hasil konten', 'prod.activityAll': 'Lihat semua hasil konten',
'prod.activityLatest': 'Konten terbaru', 'prod.activityLatest': 'Konten terbaru',
'prod.activityWorking': 'Konten in progress', 'prod.activityWorking': 'Konten sedang dibuat',
'prod.activityNoneLatest': 'Belum ada konten yang dibuat.', 'prod.activityNoneLatest': 'Belum ada konten yang dibuat.',
'prod.activityNoneWorking': 'Tidak ada konten yang sedang dibuat.', 'prod.activityNoneWorking': 'Tidak ada konten yang sedang dibuat.',
'prod.eyebrow': 'Workspace overview', 'prod.eyebrow': 'Ringkasan ruang kerja',
'prod.welcome': 'Selamat datang', 'prod.welcome': 'Selamat datang',
'prod.welcomeName': 'Selamat datang, {name}', 'prod.welcomeName': 'Selamat datang, {name}',
'prod.newContent': 'Buat konten baru', 'prod.newContent': 'Buat konten baru',
'prod.graphTitle': 'Knowledge graph', 'prod.graphTitle': 'Peta pengetahuan',
'prod.clickNode': 'Klik sebuah node', 'prod.clickNode': 'Klik titik untuk melihat detailnya',
'prod.fullscreen': 'Layar penuh', 'prod.fullscreen': 'Layar penuh',
'prod.exitFullscreen': 'Keluar layar penuh', 'prod.exitFullscreen': 'Keluar layar penuh',
'prod.loadingGraph': 'Menggambar knowledge graph…', 'prod.loadingGraph': 'Menggambar peta pengetahuan…',
'prod.graphLabel': 'Knowledge graph berisi {nodes} node', 'prod.graphLabel': 'Peta pengetahuan berisi {nodes} titik',
'prod.hub.sources': 'Basis pengetahuan', 'prod.hub.sources': 'Basis pengetahuan',
'prod.hub.made': 'Konten', 'prod.hub.made': 'Konten',
'prod.nodes': 'Node', 'prod.nodes': 'Titik',
'prod.nodesSub': 'di Otak ini', 'prod.nodesSub': 'di Otak ini',
'prod.links': 'Tautan', 'prod.links': 'Tautan',
'prod.linksSub': 'koneksi antar node', 'prod.linksSub': 'koneksi antartitik',
'prod.scheduleTitle': 'Jadwal', 'prod.scheduleTitle': 'Jadwal',
'prod.noSchedules': 'Belum ada jadwal.', 'prod.noSchedules': 'Belum ada jadwal.',
'prod.giveInstruction': 'Beri perintah', 'prod.giveInstruction': 'Beri perintah',
@@ -586,7 +586,7 @@ const id: Record<Key, string> = {
'layout.breadcrumb': 'Ruang kerja', 'layout.breadcrumb': 'Ruang kerja',
'layout.signOut': 'Keluar', 'layout.signOut': 'Keluar',
'layout.engine': 'Engine learning-lab', 'layout.engine': 'Engine learning-lab',
'layout.creditsTitle': 'Saldo kredit workspace', 'layout.creditsTitle': 'Saldo kredit ruang kerja',
'layout.toStudio': 'Beralih ke Learning Lab', 'layout.toStudio': 'Beralih ke Learning Lab',
'layout.footer': 'Ruang kerja untuk pengetahuan yang terus berkembang.', 'layout.footer': 'Ruang kerja untuk pengetahuan yang terus berkembang.',
'layout.mainNav': 'Navigasi utama', 'layout.mainNav': 'Navigasi utama',
@@ -618,7 +618,7 @@ const id: Record<Key, string> = {
'brain.metricMaterial': 'Materi', 'brain.metricMaterial': 'Materi',
'brain.metricMaterialSub': 'dokumen di ruang kerja', 'brain.metricMaterialSub': 'dokumen di ruang kerja',
'brain.metricReady': 'Masuk Otak', 'brain.metricReady': 'Masuk Otak',
'brain.metricReadySub': 'knowledge base siap', 'brain.metricReadySub': 'basis pengetahuan siap',
'brain.metricAction': 'Perlu tindakan', 'brain.metricAction': 'Perlu tindakan',
'brain.metricActionSub': 'menunggu persetujuan Anda', 'brain.metricActionSub': 'menunggu persetujuan Anda',
'brain.listTitle': 'Materi', 'brain.listTitle': 'Materi',
@@ -757,8 +757,8 @@ const id: Record<Key, string> = {
'prod.stepDone': 'Selesai', 'prod.stepDone': 'Selesai',
'prod.failed': 'Produksi gagal ({code}).', 'prod.failed': 'Produksi gagal ({code}).',
'prod.someFailed': '{n} gagal.', 'prod.someFailed': '{n} gagal.',
'prod.shortfall': 'Brain hanya punya materi baru untuk lebih sedikit konten dari yang diminta (kurang {n}); tambah dokumen untuk topik lain.', 'prod.shortfall': 'Otak hanya punya materi baru untuk lebih sedikit konten dari yang diminta (kurang {n}); tambah dokumen untuk topik lain.',
'prod.viewResults': 'Lihat di Results', 'prod.viewResults': 'Lihat di Hasil',
'sch.produceHowMany': 'Berapa konten sekarang? (sisa {max} untuk minggu ini)', 'sch.produceHowMany': 'Berapa konten sekarang? (sisa {max} untuk minggu ini)',
'sch.checkPrice': 'Cek harga', 'sch.checkPrice': 'Cek harga',
'sch.checkingPrice': 'Mengecek…', 'sch.checkingPrice': 'Mengecek…',
@@ -781,9 +781,9 @@ const id: Record<Key, string> = {
'runErr.material_sources_unavailable': 'Tidak ada materi siap yang cocok dengan jadwal ini.', 'runErr.material_sources_unavailable': 'Tidak ada materi siap yang cocok dengan jadwal ini.',
'runErr.knowledge_search_failed': 'Pencarian materi gagal. Coba lagi.', 'runErr.knowledge_search_failed': 'Pencarian materi gagal. Coba lagi.',
'runErr.organization_wallet': 'Kredit organisasi tidak cukup.', 'runErr.organization_wallet': 'Kredit organisasi tidak cukup.',
'runErr.run_cap': 'Run ini melebihi batas kredit per run.', 'runErr.run_cap': 'Proses ini melebihi batas kredit per proses.',
'runErr.monthly_cap': 'Batas kredit bulanan jadwal ini sudah tercapai.', 'runErr.monthly_cap': 'Batas kredit bulanan jadwal ini sudah tercapai.',
'runErr.reservation_cap': 'Terlalu banyak kredit sudah dipesan oleh run lain.', 'runErr.reservation_cap': 'Terlalu banyak kredit sudah dipesan oleh proses lain.',
'runErr.price_changed': 'Harga berubah. Coba lagi.', 'runErr.price_changed': 'Harga berubah. Coba lagi.',
'runErr.video_price_changed': 'Harga video berubah. Coba lagi.', 'runErr.video_price_changed': 'Harga video berubah. Coba lagi.',
'runErr.agent_not_active': 'Jadwal sedang dijeda atau sudah dihapus.', 'runErr.agent_not_active': 'Jadwal sedang dijeda atau sudah dihapus.',
@@ -794,20 +794,20 @@ const id: Record<Key, string> = {
'runErr.video_storyboard_outcome_unknown': 'Video berhenti tanpa hasil yang pasti. Batalkan di Hasil agar bisa dibuat ulang.', 'runErr.video_storyboard_outcome_unknown': 'Video berhenti tanpa hasil yang pasti. Batalkan di Hasil agar bisa dibuat ulang.',
'runErr.video_style_outcome_unknown': 'Video berhenti tanpa hasil yang pasti. Batalkan di Hasil agar bisa dibuat ulang.', 'runErr.video_style_outcome_unknown': 'Video berhenti tanpa hasil yang pasti. Batalkan di Hasil agar bisa dibuat ulang.',
'runErr.video_clip_outcome_unknown': 'Video berhenti tanpa hasil yang pasti. Batalkan di Hasil agar bisa dibuat ulang.', 'runErr.video_clip_outcome_unknown': 'Video berhenti tanpa hasil yang pasti. Batalkan di Hasil agar bisa dibuat ulang.',
'sch.noNewSources': 'Tidak ada source baru yang ditemukan. Topik yang lebih spesifik bisa membantu.', 'sch.noNewSources': 'Tidak ada sumber baru yang ditemukan. Topik yang lebih spesifik bisa membantu.',
'sch.blockedBy': 'Materi yang menahan:', 'sch.blockedBy': 'Materi yang menahan:',
'sch.blockedNone': 'Semua materi sudah siap. Coba lagi.', 'sch.blockedNone': 'Semua materi sudah siap. Coba lagi.',
'sch.fixInStudio': 'Buka di Learning Studio', 'sch.fixInStudio': 'Buka di Learning Studio',
'issue.document_processing': 'masih diproses', 'issue.document_processing': 'masih diproses',
'issue.document_failed': 'gagal diproses; proses ulang atau hapus', 'issue.document_failed': 'gagal diproses; proses ulang atau hapus',
'issue.graph_building': 'knowledge graph masih dibangun', 'issue.graph_building': 'peta pengetahuan masih dibangun',
'issue.graph_not_ready': 'knowledge graph belum disiapkan', 'issue.graph_not_ready': 'peta pengetahuan belum disiapkan',
'issue.legacy_set_needs_conversion': 'set Compose lama; perlu dikonversi', 'issue.legacy_set_needs_conversion': 'set Compose lama; perlu dikonversi',
'issue.no_knowledge_sources': 'set Compose tidak punya sumber', 'issue.no_knowledge_sources': 'set Compose tidak punya sumber',
'issue.source_not_accessible': 'set Compose memakai dokumen yang tidak bisa kamu akses', 'issue.source_not_accessible': 'set Compose memakai dokumen yang tidak bisa kamu akses',
'issue.source_graph_not_ready': 'salah satu dokumen sumber belum siap', 'issue.source_graph_not_ready': 'salah satu dokumen sumber belum siap',
'issue.source_version_changed': 'dokumen sumber berubah; perbarui set-nya', 'issue.source_version_changed': 'dokumen sumber berubah; perbarui set-nya',
'issue.snapshot_not_ready': 'graph Compose belum disiapkan', 'issue.snapshot_not_ready': 'peta pengetahuan Compose belum disiapkan',
'res.title': 'Hasil', 'res.title': 'Hasil',
'res.description': 'Semua konten yang dihasilkan Express: teks, kuis, roleplay, video, audio, dan SCORM.', 'res.description': 'Semua konten yang dihasilkan Express: teks, kuis, roleplay, video, audio, dan SCORM.',
@@ -835,18 +835,18 @@ const id: Record<Key, string> = {
'res.state.failed': 'Gagal', 'res.state.failed': 'Gagal',
'res.state.rejected': 'Ditolak', 'res.state.rejected': 'Ditolak',
'res.source.pending': 'Perlu ditinjau', 'res.source.pending': 'Perlu ditinjau',
'res.source.accepted': 'Masuk Library', 'res.source.accepted': 'Masuk Pustaka',
'res.source.rejected': 'Ditolak', 'res.source.rejected': 'Ditolak',
'res.loadFailed': 'Hasil tidak dapat dimuat', 'res.loadFailed': 'Hasil tidak dapat dimuat',
'res.noMatch': 'Tidak ada yang cocok', 'res.noMatch': 'Tidak ada yang cocok',
'res.noMatchCopy': 'Coba kata kunci, jenis, atau status lain.', 'res.noMatchCopy': 'Coba kata kunci, jenis, atau status lain.',
'res.noteContent': 'Unduh sebagai PDF, Markdown, atau SCORM; slide deck juga sebagai PowerPoint, video sebagai MP4, naskah audio sebagai teks. Roleplay dan simulasi dijalankan secara interaktif di Learning Studio.', 'res.noteContent': 'Unduh sebagai PDF, Markdown, atau SCORM; slide deck juga sebagai PowerPoint, video sebagai MP4, naskah audio sebagai teks. Roleplay dan simulasi dijalankan secara interaktif di Learning Studio.',
'res.noteResearch': 'Riset menemukan sumber dari web. Masukkan yang berguna ke Library, lalu bangun pengetahuannya di halaman Brain.', 'res.noteResearch': 'Riset menemukan sumber dari web. Masukkan yang berguna ke Pustaka, lalu bangun pengetahuannya di halaman Upload materi.',
'res.sourceCount': '{n} sumber', 'res.sourceCount': '{n} sumber',
'res.sourceOne': '1 sumber', 'res.sourceOne': '1 sumber',
'res.working': 'Sedang dibuat…', 'res.working': 'Sedang dibuat…',
'res.close': 'Tutup', 'res.close': 'Tutup',
'res.reviewNotice': 'Draft buatan AI. Periksa dulu, lalu setujui atau tolak.', 'res.reviewNotice': 'Draf buatan AI. Periksa dulu, lalu setujui atau tolak.',
'res.noContent': 'Tidak ada konten untuk ditampilkan', 'res.noContent': 'Tidak ada konten untuk ditampilkan',
'res.noContentCopy': 'Item ini belum selesai atau hasilnya sudah tidak tersedia.', 'res.noContentCopy': 'Item ini belum selesai atau hasilnya sudah tidak tersedia.',
'res.info': 'Informasi konten', 'res.info': 'Informasi konten',
@@ -854,17 +854,17 @@ const id: Record<Key, string> = {
'res.schedule': 'Jadwal', 'res.schedule': 'Jadwal',
'res.created': 'Dibuat', 'res.created': 'Dibuat',
'res.sources': 'Sumber', 'res.sources': 'Sumber',
'res.footNote': 'Dibuat oleh Express dari Brain Anda.', 'res.footNote': 'Dibuat oleh Express dari Otak Anda.',
'res.openStudio': 'Buka di Learning Studio', 'res.openStudio': 'Buka di Learning Studio',
'res.download': 'Unduh', 'res.download': 'Unduh',
'res.preparingFile': 'Menyiapkan file…', 'res.preparingFile': 'Menyiapkan file…',
'res.pdfHint': 'Membuka dialog cetak: pilih “Save as PDF” / “Simpan sebagai PDF”', 'res.pdfHint': 'Membuka dialog cetak: pilih “Simpan sebagai PDF”',
'res.pptxHint': 'Slide dari Learning Studio', 'res.pptxHint': 'Slide dari Learning Studio',
'res.mdHint': 'Teks dengan judul, untuk disunting', 'res.mdHint': 'Teks dengan judul, untuk disunting',
'res.accept': 'Setujui', 'res.accept': 'Setujui',
'res.reject': 'Tolak', 'res.reject': 'Tolak',
'res.addToBrain': 'Masukkan ke Library', 'res.addToBrain': 'Masukkan ke Pustaka',
'res.inBrain': 'lihat Brain', 'res.inBrain': 'lihat di Otak',
'res.answer': 'Jawaban', 'res.answer': 'Jawaban',
'res.slide': 'Slide {n}', 'res.slide': 'Slide {n}',
'res.field.description': 'Deskripsi', 'res.field.description': 'Deskripsi',
@@ -929,7 +929,7 @@ const id: Record<Key, string> = {
'agent.wholeBrain': 'Oke, pakai seluruh Otak.', 'agent.wholeBrain': 'Oke, pakai seluruh Otak.',
'agent.reset': 'Mulai dari awal. Apa yang perlu dibuat?', 'agent.reset': 'Mulai dari awal. Apa yang perlu dibuat?',
'agent.approving': 'Membuat jadwal…', 'agent.approving': 'Membuat jadwal…',
'agent.attaching': 'Menghubungkan Brain ke jadwal {n} dari {count}: {done} dari {total} dokumen', 'agent.attaching': 'Menghubungkan Otak ke jadwal {n} dari {count}: {done} dari {total} dokumen',
'agent.done': 'Selesai: {n} jadwal aktif dan langsung berjalan.', 'agent.done': 'Selesai: {n} jadwal aktif dan langsung berjalan.',
'agent.partial': '{ok} dari {n} jadwal berhasil dibuat. Yang gagal masih ada di rencana: perbaiki, lalu setujui lagi.', 'agent.partial': '{ok} dari {n} jadwal berhasil dibuat. Yang gagal masih ada di rencana: perbaiki, lalu setujui lagi.',
'agent.optSkip': 'Lewati', 'agent.optSkip': 'Lewati',
@@ -997,26 +997,26 @@ const id: Record<Key, string> = {
'audio.ready': '{n} kalimat · tekan Dengarkan untuk mulai', 'audio.ready': '{n} kalimat · tekan Dengarkan untuk mulai',
'audio.sentence': 'Kalimat {n} dari {total}', 'audio.sentence': 'Kalimat {n} dari {total}',
'brain.deleted': '“{name}” dihapus.', 'brain.deleted': '“{name}” dihapus.',
'brainPanel.title': 'Brain', 'brainPanel.title': 'Otak',
'brainPanel.count': '{n} materi', 'brainPanel.count': '{n} materi',
'brainPanel.copy': 'Knowledge base tim Anda.', 'brainPanel.copy': 'Basis pengetahuan tim Anda.',
'brainPanel.search': 'Cari materi…', 'brainPanel.search': 'Cari materi…',
'brainPanel.noMatch': 'Belum ada materi yang cocok', 'brainPanel.noMatch': 'Belum ada materi yang cocok',
'brainPanel.noMatchCopy': 'Coba kata kunci lain atau upload materi baru.', 'brainPanel.noMatchCopy': 'Coba kata kunci lain atau upload materi baru.',
'brainPanel.note': 'Materi yang dipilih menjadi acuan AI. Kosongkan pilihan untuk memakai seluruh Brain.', 'brainPanel.note': 'Materi yang dipilih menjadi acuan AI. Kosongkan pilihan untuk memakai seluruh Otak.',
'brainPanel.selectAll': 'Pilih semua', 'brainPanel.selectAll': 'Pilih semua',
'brainPanel.nChosen': '{n} materi pilihan', 'brainPanel.nChosen': '{n} materi pilihan',
'ins.topicPlaceholderChosen': 'Topik (kosong = semua materi pilihan)', 'ins.topicPlaceholderChosen': 'Topik (kosong = semua materi pilihan)',
'brainPanel.selected': '{n} dipilih', 'brainPanel.selected': '{n} dipilih',
'brainPanel.wholeBrain': 'Seluruh Brain digunakan', 'brainPanel.wholeBrain': 'Seluruh Otak digunakan',
'brainPanel.select': 'Pilih {name}', 'brainPanel.select': 'Pilih {name}',
'brainPanel.notReady': 'Bisa dipilih setelah masuk Brain', 'brainPanel.notReady': 'Bisa dipilih setelah masuk Otak',
'ins.sourcesChosen': 'Sumber: {n} materi dipilih', 'ins.sourcesChosen': 'Sumber: {n} materi dipilih',
'ins.sourcesAll': 'Sumber: seluruh Brain', 'ins.sourcesAll': 'Sumber: seluruh Otak',
'ins.tooFewChosen': ' Jadwal konten (ringkasan, kuis, dan sejenisnya) butuh minimal {n} materi. Pilih satu lagi di panel Brain.', 'ins.tooFewChosen': ' Jadwal konten (ringkasan, kuis, dan sejenisnya) butuh minimal {n} materi. Pilih satu lagi di panel Otak.',
'ins.tooFewInBrain': ' Jadwal konten (ringkasan, kuis, dan sejenisnya) butuh minimal {n} materi siap di Brain. Unggah satu lagi dulu.', 'ins.tooFewInBrain': ' Jadwal konten (ringkasan, kuis, dan sejenisnya) butuh minimal {n} materi siap di Otak. Unggah satu lagi dulu.',
'sch.tooFewSources': 'Jadwal ini punya kurang dari {n} materi siap, padahal konten direncanakan dari pasangan materi. Hapus lalu buat ulang dengan {n} materi atau lebih.', 'sch.tooFewSources': 'Jadwal ini punya kurang dari {n} materi siap, padahal konten direncanakan dari pasangan materi. Hapus lalu buat ulang dengan {n} materi atau lebih.',
'brainPanel.upload': 'Upload materi', 'brainPanel.upload': 'Unggah materi',
// Panduan // Panduan
'help.boxTitle': 'Cara kerja Express', 'help.boxTitle': 'Cara kerja Express',