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:
78
src/i18n.ts
78
src/i18n.ts
@@ -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',
|
||||||
|
|||||||
Reference in New Issue
Block a user