feat: add Indonesian (id) locale

Adds Bahasa Indonesia as a supported language:
- locales/id.json: full translation of 629 keys across 17 sections
  (common, meta, nav, home, main, step1-5, graph, history, api,
  progress, log, report, console)
- locales/languages.json: register 'id' entry with label and
  llmInstruction 'Silakan jawab dalam bahasa Indonesia.'

Fills a gap in the existing i18n registry (zh, en, es, fr, pt, ru, de).
Indonesian has ~270M speakers and is widely used in Southeast Asian
academic and policy contexts — a natural fit for the multi-agent
simulation use cases MiroFish targets (e.g. policy rehearsal for
Indonesian ministries, USD/IDR economic scenarios, regional crisis
planning).

Indonesian users can switch via:
- Frontend: language picker in the UI
- API: Accept-Language: id header on backend calls
- LLM calls: get_language_instruction() will return the Indonesian
  instruction, anchoring the LLM to respond in Bahasa Indonesia

Translations preserve technical terms (MiroFish, API, LLM, PDF, Zep)
and placeholder syntax (e.g. 'Bagian {title}: {conflictCount}...')
exactly as the upstream English file does.

Generated with DeepSeek (deepseek-chat); 629/629 keys validated
against en.json structure.
This commit is contained in:
Ardha 2026-06-07 06:00:09 +00:00
parent 96096ea0ff
commit ad1873d943
2 changed files with 675 additions and 0 deletions

671
locales/id.json Normal file
View File

@ -0,0 +1,671 @@
{
"common": {
"confirm": "Konfirmasi",
"cancel": "Batal",
"loading": "Memuat...",
"error": "Kesalahan",
"success": "Berhasil",
"completed": "Selesai",
"processing": "Menghasilkan",
"pending": "Tertunda",
"ready": "Siap",
"running": "Berjalan",
"failed": "Gagal",
"unknown": "Tidak Diketahui",
"unknownError": "Kesalahan tidak diketahui",
"none": "Tidak Ada",
"close": "Tutup",
"back": "Kembali",
"next": "Berikutnya",
"retry": "Coba Lagi",
"noData": "Tidak ada data tersedia",
"hours": "jam",
"minutes": "menit",
"rounds": "ronde",
"items": "item",
"files": "berkas"
},
"meta": {
"title": "MiroFish - Prediksi Segalanya",
"description": "MiroFish - Sistem Simulasi Opini Media Sosial"
},
"nav": {
"visitGithub": "Kunjungi halaman Github kami"
},
"home": {
"tagline": "Mesin Kecerdasan Swarm yang Ringkas & Universal",
"version": "/ v0.1-Preview",
"heroTitle1": "Unggah Laporan,",
"heroTitle2": "Prediksi Masa Depan",
"heroDesc": "Dari satu dokumen, {brand} mengekstrak benih realitas untuk secara otomatis menghasilkan dunia paralel dengan hingga {agentScale}. Suntikkan variabel dari sudut pandang dewa untuk menemukan {optimalSolution} dalam dinamika kelompok yang kompleks.",
"heroDescBrand": "MiroFish",
"heroDescAgentScale": "Agen skala-juta",
"heroDescOptimalSolution": "\"optimum lokal\"",
"slogan": "Biarkan Agen berlatih masa depan, biarkan keputusan menang",
"systemStatus": "Status Sistem",
"systemReady": "Siap",
"systemReadyDesc": "Mesin prediksi dalam mode siaga. Unggah data tidak terstruktur untuk memulai urutan simulasi.",
"metricLowCost": "Biaya Rendah",
"metricLowCostDesc": "Rata-rata $5/sim",
"metricHighAvail": "Skalabel",
"metricHighAvailDesc": "Jutaan Agen",
"workflowSequence": "Alur Kerja",
"step01Title": "Pembangunan Graf",
"step01Desc": "Ekstraksi benih & injeksi memori & konstruksi GraphRAG",
"step02Title": "Pengaturan Lingkungan",
"step02Desc": "Ekstraksi entitas & pembuatan persona & injeksi konfigurasi Agen",
"step03Title": "Simulasi",
"step03Desc": "Simulasi paralel dual-platform & penguraian kebutuhan otomatis & memori temporal",
"step04Title": "Laporan",
"step04Desc": "ReportAgent berinteraksi dengan lingkungan pasca-simulasi melalui alat yang kaya",
"step05Title": "Interaksi",
"step05Desc": "Chat dengan individu yang disimulasikan & berbincang dengan ReportAgent",
"realitySeed": "01 / Benih Realitas",
"supportedFormats": "Format: PDF, MD, TXT",
"dragToUpload": "Seret file untuk mengunggah",
"orBrowse": "atau klik untuk menjelajahi file",
"inputParams": "Parameter Masukan",
"simulationPrompt": ">_ 02 / Prompt Simulasi",
"promptPlaceholder": "// Jelaskan kebutuhan simulasi atau prediksi Anda dalam bahasa alami",
"engineBadge": "Mesin: MiroFish-V1.0",
"startEngine": "Mulai Mesin",
"initializing": "Memulai..."
},
"main": {
"layoutGraph": "Grafik",
"layoutSplit": "Pisah",
"layoutWorkbench": "Meja Kerja",
"stepNames": [
"Pembangunan Grafik",
"Pengaturan Lingkungan",
"Jalankan Simulasi",
"Pembuatan Laporan",
"Interaksi Mendalam"
]
},
"step1": {
"ontologyGeneration": "Pembuatan Ontologi",
"ontologyCompleted": "Selesai",
"ontologyGenerating": "Sedang Membuat",
"ontologyPending": "Menunggu",
"ontologyDesc": "LLM menganalisis konten dokumen dan kebutuhan simulasi, mengekstrak benih realitas, dan secara otomatis menghasilkan struktur ontologi yang sesuai",
"analyzingDocs": "Menganalisis dokumen...",
"graphRagBuild": "Pembangunan GraphRAG",
"graphRagDesc": "Berdasarkan ontologi yang dihasilkan, dokumen di-chunk secara otomatis dan dikirim ke Zep untuk membangun knowledge graph, mengekstrak entitas dan relasi, membentuk memori temporal dan ringkasan komunitas",
"entityNodes": "Node Entitas",
"relationEdges": "Edge Relasi",
"schemaTypes": "Tipe Skema",
"buildComplete": "Pembangunan Selesai",
"buildCompleteDesc": "Pembangunan graph selesai. Lanjutkan ke langkah berikutnya untuk pengaturan lingkungan simulasi.",
"inProgress": "Sedang Berlangsung",
"creating": "Membuat...",
"enterEnvSetup": "Masuk ke Pengaturan Lingkungan",
"createSimulationFailed": "Gagal membuat simulasi: {error}",
"createSimulationException": "Kesalahan pembuatan simulasi: {error}"
},
"step2": {
"simInstanceInit": "Inisialisasi Instance Simulasi",
"simInstanceDesc": "Buat instance simulasi baru dan ambil template parameter dunia",
"asyncTaskDone": "Tugas asinkron selesai",
"generateAgentPersona": "Hasilkan Persona Agen",
"generateAgentPersonaDesc": "Gabungkan konteks untuk mengekstrak entitas dan relasi secara otomatis dari knowledge graph, inisialisasi individu yang disimulasikan, dan tetapkan perilaku serta memori unik berdasarkan reality seeds",
"currentAgentCount": "Agen Saat Ini",
"expectedAgentTotal": "Total Agen yang Diharapkan",
"relatedTopicsCount": "Topik Terkait Reality Seed",
"generatedAgentPersonas": "Persona Agen yang Dihasilkan",
"unknownProfession": "Profesi tidak diketahui",
"noBio": "Tidak ada bio tersedia",
"dualPlatformConfig": "Hasilkan Konfigurasi Dual-Platform",
"dualPlatformConfigDesc": "LLM secara cerdas mengatur aliran waktu dunia, algoritma rekomendasi, jam aktif setiap individu, frekuensi posting, pemicu peristiwa, dan lainnya berdasarkan kebutuhan dan reality seeds",
"simulationDuration": "Durasi Simulasi",
"roundDuration": "Durasi Ronde",
"totalRounds": "Total Ronde",
"activePerHour": "Aktif Per Jam",
"peakHours": "Jam Sibuk",
"workHours": "Jam Kerja",
"morningHours": "Jam Pagi",
"offPeakHours": "Jam Sepi",
"agentConfig": "Konfigurasi Agen",
"activeTimePeriod": "Jam Aktif",
"postsPerHour": "Postingan/jam",
"commentsPerHour": "Komentar/jam",
"responseDelay": "Penundaan Respons",
"activityLevel": "Tingkat Aktivitas",
"sentimentBias": "Bias Sentimen",
"influenceWeight": "Pengaruh",
"recommendAlgoConfig": "Konfigurasi Algoritma Rekomendasi",
"platform1Name": "Platform 1: Plaza / Feed",
"platform2Name": "Platform 2: Topik / Komunitas",
"recencyWeight": "Bobot Kebaruan",
"popularityWeight": "Bobot Popularitas",
"relevanceWeight": "Bobot Relevansi",
"viralThreshold": "Ambang Viral",
"echoChamberStrength": "Kekuatan Echo Chamber",
"llmConfigReasoning": "Penalaran Konfigurasi LLM",
"initialActivation": "Orkestrasi Aktivasi Awal",
"initialActivationDesc": "Hasilkan secara otomatis peristiwa aktivasi awal dan topik hangat berdasarkan arahan naratif untuk memandu keadaan awal dunia simulasi",
"orchestrating": "Mengorkestrasi",
"narrativeDirection": "Arahan Naratif",
"initialHotTopics": "Topik Hangat Awal",
"initialActivationSeq": "Urutan Aktivasi Awal ({count})",
"setupComplete": "Pengaturan Selesai",
"setupCompleteDesc": "Lingkungan simulasi sudah siap. Anda sekarang dapat memulai simulasi.",
"roundsConfig": "Konfigurasi Ronde Simulasi",
"roundsConfigDesc": "MiroFish secara otomatis merencanakan simulasi selama {hours} jam dunia nyata, setiap ronde mewakili {minutesPerRound} menit waktu yang berlalu",
"customToggle": "Kustom",
"roundsUnit": "ronde",
"estimatedDuration": "Untuk 100 Agen: perkiraan ~{minutes} menit",
"estimatedDurationFull": "Untuk 100 Agen: perkiraan {minutes} menit",
"recommendedRounds": "{rounds} (direkomendasikan)",
"customTip": "Untuk percobaan pertama, kami sangat menyarankan beralih ke 'Mode Kustom' untuk mengurangi ronde demi pratinjau cepat dan mengurangi risiko kesalahan",
"backToGraphBuild": "Kembali ke Pembuatan Graph",
"startDualWorldSim": "Mulai Simulasi Paralel Dual-World",
"profileModalAge": "Usia Tampak",
"profileModalGender": "Jenis Kelamin Tampak",
"profileModalCountry": "Negara/Wilayah",
"profileModalMbti": "MBTI Tampak",
"profileModalBio": "Bio Persona",
"profileModalTopics": "Topik Terkait Reality Seed",
"profileModalPersona": "Latar Belakang Persona Detail",
"personaDimExperience": "Pengalaman Peristiwa Lengkap",
"personaDimExperienceDesc": "Lintasan perilaku lengkap dalam peristiwa ini",
"personaDimBehavior": "Profil Perilaku",
"personaDimBehaviorDesc": "Ringkasan pengalaman dan preferensi perilaku",
"personaDimMemory": "Jejak Memori Unik",
"personaDimMemoryDesc": "Memori yang terbentuk dari reality seeds",
"personaDimSocial": "Jaringan Sosial",
"personaDimSocialDesc": "Koneksi individu dan grafik interaksi",
"genderMale": "Laki-laki",
"genderFemale": "Perempuan",
"genderOther": "Lainnya",
"yearsOld": "tahun",
"initializing": "Menginisialisasi",
"generating": "Menghasilkan"
},
"step3": {
"startGenerateReport": "Hasilkan Laporan",
"generatingReport": "Memulai...",
"waitingForActions": "Menunggu tindakan agen...",
"errorMissingSimId": "Error: simulationId tidak ada",
"startingDualSim": "Memulai simulasi paralel dua platform...",
"graphMemoryUpdateEnabled": "Pembaruan memori grafik dinamis diaktifkan",
"setMaxRounds": "Jumlah putaran simulasi maksimum diatur ke: {rounds}",
"oldSimCleared": "Log simulasi lama dibersihkan, memulai ulang simulasi",
"engineStarted": "Mesin simulasi berhasil dimulai",
"startFailed": "Gagal memulai: {error}",
"startException": "Kesalahan saat memulai: {error}",
"stoppingSim": "Menghentikan simulasi...",
"simStopped": "Simulasi dihentikan",
"stopFailed": "Gagal menghentikan: {error}",
"stopException": "Kesalahan saat menghentikan: {error}",
"allPlatformsCompleted": "Semua simulasi platform telah berakhir",
"simCompleted": "Simulasi selesai",
"graphRealtimeRefresh": "Penyegaran grafik waktu nyata diaktifkan (30 detik)",
"graphRefreshStopped": "Penyegaran grafik waktu nyata dihentikan",
"preparingGoBack": "Mempersiapkan kembali ke Langkah 2, menutup simulasi...",
"closingSimEnv": "Menutup lingkungan simulasi...",
"simEnvClosed": "Lingkungan simulasi ditutup",
"closeFailed": "Gagal menutup lingkungan simulasi, mencoba penghentian paksa...",
"stoppingProcess": "Menghentikan proses simulasi...",
"checkStatusFailed": "Gagal memeriksa status simulasi: {error}",
"forceStopSuccess": "Simulasi dihentikan paksa",
"forceStopFailed": "Penghentian paksa gagal: {error}",
"startGenerateReportBtn": "Hasilkan Laporan",
"generatingReportBtn": "Memulai..."
},
"step4": {
"generatingSection": "Menghasilkan {title}...",
"goToInteraction": "Masuk ke Interaksi Mendalam",
"waitingForReportAgent": "Menunggu Agen Laporan...",
"collapse": "Ciutkan ▲",
"expandAll": "Tampilkan semua {count} ▼",
"expandAllEntities": "Tampilkan semua {count} ▼",
"scenarioLabel": "Skenario: ",
"tabKeyFacts": "Fakta Kunci ({count})",
"tabCoreEntities": "Entitas Inti ({count})",
"tabRelationChains": "Rantai Relasi ({count})",
"tabSubQueries": "Sub-kueri ({count})",
"panelKeyFacts": "Fakta kunci terbaru dari memori temporal",
"totalCount": "{count} total",
"totalEntityCount": "{count} total",
"panelCoreEntities": "Entitas Inti",
"factCount": "{count} fakta",
"panelRelationChains": "Rantai Relasi",
"panelSubQueries": "Pertanyaan analisis kueri drift",
"emptyKeyFacts": "Tidak ada fakta kunci yang tersedia",
"emptyCoreEntities": "Tidak ada entitas inti yang tersedia",
"emptyRelationChains": "Tidak ada rantai relasi yang tersedia",
"tabActiveFacts": "Fakta Aktif ({count})",
"tabHistoricalFacts": "Fakta Historis ({count})",
"tabEntities": "Entitas ({count})",
"panelActiveFacts": "Fakta Aktif",
"emptyActiveFacts": "Tidak ada fakta aktif yang tersedia",
"panelHistoricalFacts": "Fakta Historis",
"emptyHistoricalFacts": "Tidak ada fakta historis yang tersedia",
"panelEntities": "Entitas",
"emptyEntities": "Tidak ada entitas yang tersedia",
"searchLabel": "Cari: ",
"tabFacts": "Fakta ({count})",
"tabEdges": "Tepi ({count})",
"tabNodes": "Simpul ({count})",
"panelSearchResults": "Hasil Pencarian",
"emptySearchResults": "Tidak ada hasil ditemukan",
"panelRelatedEdges": "Tepi Terkait",
"panelRelatedNodes": "Simpul Terkait",
"world1": "Dunia 1",
"world2": "Dunia 2"
},
"step5": {
"interactiveTools": "Alat Interaktif",
"agentsAvailable": "{count} agen tersedia",
"chatWithReportAgent": "Chat dengan Agen Laporan",
"chatWithAgent": "Chat dengan individu mana pun di dunia",
"selectChatTarget": "Pilih target chat",
"sendSurvey": "Kirim survei ke dunia",
"reportAgentChat": "Agen Laporan - Chat",
"reportAgentDesc": "Versi percakapan dari agen pembuatan laporan dengan akses ke 4 alat profesional dan memori lengkap MiroFish",
"toolInsightForge": "InsightForge Atribusi Mendalam",
"toolInsightForgeDesc": "Menyelaraskan data seed dunia nyata dengan keadaan simulasi, menggabungkan Memori Global/Lokal untuk analisis atribusi mendalam lintas waktu",
"toolPanoramaSearch": "PanoramaSearch Pelacakan Penuh",
"toolPanoramaSearchDesc": "Algoritma BFS berbasis grafik yang merekonstruksi jalur propagasi peristiwa, menangkap topologi penuh aliran informasi",
"toolQuickSearch": "QuickSearch Pengambilan Cepat",
"toolQuickSearchDesc": "Antarmuka kueri instan berbasis GraphRAG dengan pengindeksan yang dioptimalkan untuk ekstraksi cepat atribut node dan fakta diskrit",
"toolInterviewSubAgent": "InterviewSubAgent Wawancara Virtual",
"toolInterviewSubAgentDesc": "Wawancara otonom yang melakukan dialog multi-putaran paralel dengan individu yang disimulasikan, mengumpulkan data opini tidak terstruktur dan keadaan psikologis",
"profileBio": "Bio",
"chatEmptyReportAgent": "Chat dengan Agen Laporan untuk menjelajahi konten laporan secara mendalam",
"chatEmptyAgent": "Chat dengan individu yang disimulasikan untuk memahami perspektif mereka",
"chatInputPlaceholder": "Ketik pertanyaan Anda...",
"selectSurveyTarget": "Pilih target survei",
"selectedCount": "Dipilih {selected} / {total}",
"surveyQuestions": "Pertanyaan Survei",
"surveyInputPlaceholder": "Masukkan pertanyaan yang ingin Anda tanyakan kepada semua target yang dipilih...",
"submitSurvey": "Kirim Survei",
"surveyResults": "Hasil Survei",
"surveyResultsCount": "{count} tanggapan",
"selectAll": "Pilih Semua",
"clearSelection": "Hapus",
"errorOccurred": "Maaf, terjadi kesalahan: {error}",
"noResponse": "Tidak ada tanggapan",
"requestFailed": "Permintaan gagal",
"selectAgentFirst": "Silakan pilih individu yang disimulasikan terlebih dahulu"
},
"graph": {
"panelTitle": "Visualisasi Hubungan Grafik",
"refreshGraph": "Segarkan Grafik",
"graphMemoryRealtime": "Pembaruan memori jangka pendek/panjang GraphRAG secara real-time",
"realtimeUpdating": "Memperbarui secara real-time...",
"pendingContentHint": "Beberapa konten masih diproses. Pertimbangkan untuk menyegarkan grafik secara manual nanti.",
"nodeDetails": "Detail Node",
"relationship": "Hubungan",
"graphDataLoading": "Memuat data grafik...",
"waitingOntology": "Menunggu pembuatan ontologi...",
"toggleMaximize": "Maksimalkan/Pulihkan",
"closeHint": "Tutup petunjuk"
},
"history": {
"title": "Riwayat Simulasi",
"graphBuild": "Pembangunan Grafik",
"envSetup": "Pengaturan Lingkungan",
"analysisReport": "Laporan Analisis",
"moreFiles": "+{count} berkas",
"noFiles": "Tidak ada berkas",
"loadingText": "Memuat...",
"simRequirement": "Persyaratan Simulasi",
"relatedFiles": "Berkas Terkait",
"noRelatedFiles": "Tidak ada berkas terkait",
"replayTitle": "Pemutaran Ulang Simulasi",
"step1Button": "Pembangunan Grafik",
"step2Button": "Pengaturan Lingkungan",
"step4Button": "Laporan Analisis",
"replayHint": "Langkah 3 'Jalankan Simulasi' dan Langkah 5 'Interaksi Mendalam' harus dimulai saat runtime dan tidak mendukung pemutaran ulang riwayat",
"notStarted": "Belum dimulai",
"roundsProgress": "{current}/{total} putaran",
"untitledSimulation": "Simulasi tanpa judul",
"unknownFile": "Berkas tidak dikenal"
},
"api": {
"projectNotFound": "Proyek tidak ditemukan: {id}",
"projectDeleteFailed": "Proyek tidak ditemukan atau penghapusan gagal: {id}",
"projectDeleted": "Proyek dihapus: {id}",
"projectReset": "Proyek direset: {id}",
"requireSimulationRequirement": "Harap berikan persyaratan simulasi (simulation_requirement)",
"requireFileUpload": "Harap unggah setidaknya satu file dokumen",
"noDocProcessed": "Tidak ada dokumen yang berhasil diproses. Harap periksa format file.",
"requireProjectId": "Harap berikan project_id",
"configError": "Kesalahan konfigurasi: {details}",
"zepApiKeyMissing": "ZEP_API_KEY tidak dikonfigurasi",
"ontologyNotGenerated": "Ontologi belum dibuat. Harap panggil /ontology/generate terlebih dahulu.",
"graphBuilding": "Pembangunan graf sedang berlangsung. Jangan kirim ulang. Untuk memaksa pembangunan ulang, tambahkan force: true.",
"textNotFound": "Konten teks yang diekstrak tidak ditemukan",
"ontologyNotFound": "Definisi ontologi tidak ditemukan",
"graphBuildStarted": "Tugas pembangunan graf dimulai. Cek progres melalui /task/{taskId}.",
"graphBuildComplete": "Pembangunan graf selesai",
"buildFailed": "Pembangunan gagal: {error}",
"taskNotFound": "Tugas tidak ditemukan: {id}",
"graphDeleted": "Graf dihapus: {id}",
"entityNotFound": "Entitas tidak ditemukan: {id}",
"graphNotBuilt": "Graf belum dibangun. Harap panggil /api/graph/build terlebih dahulu.",
"requireSimulationId": "Harap berikan simulation_id",
"simulationNotFound": "Simulasi tidak ditemukan: {id}",
"projectMissingRequirement": "Proyek tidak memiliki persyaratan simulasi (simulation_requirement)",
"prepareStarted": "Tugas persiapan dimulai. Cek progres melalui /api/simulation/prepare/status.",
"alreadyPrepared": "Persiapan sudah selesai. Tidak perlu menghasilkan ulang.",
"notStartedPrepare": "Persiapan belum dimulai. Harap panggil /api/simulation/prepare.",
"taskCompletedPrepared": "Tugas selesai (persiapan sudah ada)",
"requireTaskOrSimId": "Harap berikan task_id atau simulation_id",
"configNotFound": "Konfigurasi simulasi tidak ditemukan. Harap panggil /prepare terlebih dahulu.",
"configFileNotFound": "File konfigurasi tidak ditemukan. Harap panggil /prepare terlebih dahulu.",
"unknownScript": "Skrip tidak dikenal: {name}. Tersedia: {allowed}",
"scriptFileNotFound": "File skrip tidak ditemukan: {name}",
"requireGraphId": "Harap berikan graph_id",
"noMatchingEntities": "Tidak ada entitas yang cocok ditemukan",
"maxRoundsPositive": "max_rounds harus berupa bilangan bulat positif",
"maxRoundsInvalid": "max_rounds harus berupa bilangan bulat yang valid",
"invalidPlatform": "Tipe platform tidak valid: {platform}. Opsi: twitter/reddit/parallel",
"simRunningForceHint": "Simulasi sedang berjalan. Hentikan terlebih dahulu melalui /stop, atau gunakan force=true untuk memulai ulang.",
"simNotReady": "Simulasi belum siap. Status saat ini: {status}. Harap panggil /prepare terlebih dahulu.",
"graphIdRequiredForMemory": "Pembaruan memori graf memerlukan graph_id yang valid. Pastikan graf telah dibangun.",
"dbNotExist": "Database tidak ada. Simulasi mungkin belum berjalan.",
"requireMessage": "Harap berikan pesan",
"missingGraphId": "ID graf hilang",
"missingGraphIdEnsure": "ID graf hilang. Harap pastikan graf telah dibangun.",
"missingSimRequirement": "Deskripsi persyaratan simulasi hilang",
"reportAlreadyExists": "Laporan sudah ada",
"reportGenerateStarted": "Tugas pembuatan laporan dimulai. Cek progres melalui /api/report/generate/status.",
"reportGenerated": "Laporan dibuat",
"reportNotFound": "Laporan tidak ditemukan: {id}",
"noReportForSim": "Tidak ada laporan yang ditemukan untuk simulasi ini: {id}",
"reportDeleted": "Laporan dihapus: {id}",
"reportGenerateFailed": "Pembuatan laporan gagal",
"sectionNotFound": "Bagian tidak ditemukan: section_{index}.md",
"reportProgressNotAvail": "Laporan tidak ditemukan atau progres tidak tersedia: {id}",
"requireAgentId": "Harap berikan agent_id",
"requirePrompt": "Harap berikan prompt (pertanyaan wawancara)",
"invalidInterviewPlatform": "Platform harus berupa 'twitter' atau 'reddit'",
"envNotRunning": "Lingkungan simulasi tidak berjalan atau ditutup. Pastikan simulasi selesai dan dalam mode command-wait.",
"interviewTimeout": "Respons wawancara habis waktu: {error}",
"requireInterviews": "Harap berikan wawancara (daftar wawancara)",
"interviewListMissingAgentId": "Item daftar wawancara {index} tidak memiliki agent_id",
"interviewListMissingPrompt": "Item daftar wawancara {index} tidak memiliki prompt",
"interviewListInvalidPlatform": "Platform item daftar wawancara {index} harus 'twitter' atau 'reddit'",
"batchInterviewTimeout": "Respons wawancara batch habis waktu: {error}",
"globalInterviewTimeout": "Respons wawancara global habis waktu: {error}",
"envRunning": "Lingkungan berjalan dan siap untuk perintah wawancara",
"envNotRunningShort": "Lingkungan tidak berjalan atau ditutup",
"requireGraphIdAndQuery": "Harap berikan graph_id dan query",
"initReportAgent": "Menginisialisasi Agen Laporan..."
},
"progress": {
"initGraphService": "Memulai layanan pembuatan grafik...",
"textChunking": "Memotong teks...",
"creatingZepGraph": "Membuat grafik Zep...",
"settingOntology": "Mengatur definisi ontologi...",
"addingChunks": "Menambahkan {count} potongan teks...",
"waitingZepProcess": "Menunggu Zep memproses data...",
"fetchingGraphData": "Mengambil data grafik...",
"graphBuildComplete": "Pembuatan grafik selesai",
"buildFailed": "Pembuatan gagal: {error}",
"startBuildingGraph": "Memulai pembuatan grafik...",
"graphCreated": "Grafik dibuat: {graphId}",
"ontologySet": "Ontologi ditetapkan",
"textSplit": "Teks dibagi menjadi {count} potongan",
"fetchingGraphInfo": "Mengambil info grafik...",
"sendingBatch": "Mengirim batch {current}/{total} ({chunks} potongan)...",
"batchFailed": "Batch {batch} gagal: {error}",
"noEpisodesWait": "Tidak ada episode yang perlu ditunggu",
"waitingEpisodes": "Menunggu {count} potongan teks diproses...",
"episodesTimeout": "Beberapa potongan waktu habis, {completed}/{total} selesai",
"zepProcessing": "Pemrosesan Zep... {completed}/{total} selesai, {pending} tertunda ({elapsed}s)",
"processingComplete": "Pemrosesan selesai: {completed}/{total}",
"taskComplete": "Tugas selesai",
"taskFailed": "Tugas gagal",
"startPreparingEnv": "Menyiapkan lingkungan simulasi...",
"connectingZepGraph": "Menghubungkan ke grafik Zep...",
"readingNodeData": "Membaca data node...",
"readingComplete": "Selesai, {count} entitas ditemukan",
"startGenerating": "Memulai pembuatan...",
"analyzingRequirements": "Menganalisis kebutuhan simulasi...",
"generatingOutline": "Membuat kerangka laporan...",
"parsingOutline": "Mengurai struktur kerangka...",
"outlinePlanComplete": "Perencanaan kerangka selesai",
"deepSearchAndWrite": "Pencarian mendalam & penulisan ({current}/{max})",
"initReport": "Memulai laporan...",
"startPlanningOutline": "Merencanakan kerangka laporan...",
"outlineDone": "Kerangka selesai, {count} bagian",
"generatingSection": "Membuat bagian: {title} ({current}/{total})",
"sectionDone": "Bagian {title} selesai",
"assemblingReport": "Merakit laporan lengkap...",
"reportComplete": "Pembuatan laporan selesai",
"reportFailed": "Pembuatan laporan gagal: {error}",
"savingProfiles": "Menyimpan file profil...",
"profilesComplete": "Selesai, {count} profil dibuat",
"callingLLMConfig": "Memanggil LLM untuk menghasilkan konfigurasi...",
"savingConfigFiles": "Menyimpan file konfigurasi...",
"configComplete": "Pembuatan konfigurasi selesai",
"generatingTimeConfig": "Membuat konfigurasi waktu...",
"generatingEventConfig": "Membuat konfigurasi acara dan topik hangat...",
"generatingAgentConfig": "Membuat konfigurasi agen ({start}-{end}/{total})...",
"generatingPlatformConfig": "Membuat konfigurasi platform...",
"zepSearchQuery": "Semua informasi, aktivitas, acara, hubungan, dan latar belakang tentang {name}",
"timeConfigLabel": "Konfigurasi Waktu",
"eventConfigLabel": "Konfigurasi Acara",
"agentConfigResult": "Konfigurasi Agen: {count} dibuat",
"postAssignResult": "Penugasan Posting: {count} posting ditugaskan",
"profileGenerated": "[Dibuat] {name} ({type})",
"readingGraphEntities": "Membaca Entitas Grafik",
"generatingProfiles": "Membuat Profil Agen",
"generatingSimConfig": "Membuat Konfigurasi Simulasi",
"preparingScripts": "Menyiapkan Skrip"
},
"log": {
"preparingGoBack": "Mempersiapkan kembali ke Langkah 2, menutup simulasi...",
"closingSimEnv": "Menutup lingkungan simulasi...",
"simEnvClosed": "✓ Lingkungan simulasi ditutup",
"closeSimEnvFailed": "Gagal menutup lingkungan simulasi, mencoba penghentian paksa...",
"simForceStopSuccess": "✓ Simulasi dihentikan paksa",
"forceStopFailed": "Penghentian paksa gagal: {error}",
"stoppingSimProcess": "Menghentikan proses simulasi...",
"simStopped": "✓ Simulasi dihentikan",
"stopSimFailed": "Gagal menghentikan simulasi: {error}",
"checkStatusFailed": "Gagal memeriksa status simulasi: {error}",
"enterStep4": "Memasuki Langkah 4: Pembuatan Laporan",
"loadingSimData": "Memuat data simulasi: {id}",
"timeConfig": "Konfigurasi waktu: {minutes} menit per putaran",
"timeConfigFetchFailed": "Gagal mengambil konfigurasi waktu, menggunakan default: {minutes} menit/putaran",
"projectLoadSuccess": "Proyek dimuat: {id}",
"loadSimDataFailed": "Gagal memuat data simulasi: {error}",
"loadException": "Kesalahan muat: {error}",
"graphDataLoadSuccess": "Data grafik berhasil dimuat",
"graphLoadFailed": "Grafik gagal dimuat: {error}",
"graphRealtimeRefreshStart": "Penyegaran real-time grafik diaktifkan (30 detik)",
"graphRealtimeRefreshStop": "Penyegaran real-time grafik dihentikan",
"simRunViewInit": "SimulationRunView diinisialisasi",
"customRounds": "Putaran simulasi kustom: {rounds}",
"enterStep3": "Memasuki Langkah 3: Jalankan Simulasi",
"customRoundsConfig": "Putaran simulasi kustom: {rounds} putaran",
"useAutoRounds": "Menggunakan putaran simulasi yang dikonfigurasi otomatis",
"detectedSimEnvRunning": "Mendeteksi lingkungan simulasi berjalan, menutup...",
"closeSimEnvFailedWithError": "Gagal menutup lingkungan simulasi: {error}",
"closeSimEnvException": "Kesalahan penutupan lingkungan simulasi: {error}",
"detectedSimRunning": "Mendeteksi simulasi berjalan, menghentikan...",
"forceStopSimFailed": "Penghentian paksa simulasi gagal: {error}",
"forceStopSimException": "Kesalahan penghentian paksa simulasi: {error}",
"simViewInit": "SimulationView diinisialisasi",
"errorMissingSimId": "Kesalahan: simulationId tidak ada",
"simInstanceCreated": "Instance simulasi dibuat: {id}",
"preparingSimEnv": "Mempersiapkan lingkungan simulasi...",
"detectedExistingPrep": "Mendeteksi persiapan yang ada, menggunakannya langsung",
"prepareTaskStarted": "Tugas persiapan dimulai",
"prepareTaskId": " └─ ID Tugas: {taskId}",
"zepEntitiesFound": "Ditemukan {count} entitas dari grafik Zep",
"entityTypes": " └─ Tipe entitas: {types}",
"startPollingProgress": "Memeriksa kemajuan persiapan...",
"prepareFailed": "Persiapan gagal: {error}",
"prepareException": "Kesalahan persiapan: {error}",
"prepareComplete": "✓ Persiapan selesai",
"prepareFailedWithError": "✗ Persiapan gagal: {error}",
"startGeneratingConfig": "Menghasilkan konfigurasi simulasi dual-platform...",
"generatingAgentProfileConfig": "Menghasilkan konfigurasi persona agen...",
"generatingLLMConfig": "Memanggil LLM untuk menghasilkan parameter konfigurasi simulasi...",
"configComplete": "✓ Konfigurasi simulasi dihasilkan",
"configSummaryAgents": " ├─ Agen: {count}",
"configSummaryHours": " ├─ Durasi: {hours} jam",
"configSummaryPosts": " ├─ Postingan awal: {count}",
"configSummaryTopics": " ├─ Topik hangat: {count}",
"configSummaryPlatforms": " └─ Platform: Twitter {twitter}, Reddit {reddit}",
"timeConfigDetail": "Konfigurasi waktu: {minutes} menit/putaran, total {rounds} putaran",
"narrativeDirection": "Arah naratif: {direction}",
"envSetupComplete": "✓ Pengaturan lingkungan selesai, siap untuk simulasi",
"startSimCustomRounds": "Memulai simulasi, putaran kustom: {rounds}",
"startSimAutoRounds": "Memulai simulasi, putaran dikonfigurasi otomatis: {rounds}",
"startGeneratingAgentProfiles": "Menghasilkan persona agen...",
"agentProfile": "→ Persona agen {current}/{total}: {name} ({profession})",
"allProfilesComplete": "✓ Semua {count} persona agen dihasilkan",
"loadingExistingConfig": "Memuat data konfigurasi yang ada...",
"loadedAgentProfiles": "Dimuat {count} persona agen",
"configLoadSuccess": "✓ Konfigurasi simulasi dimuat",
"configSummaryPostsAlt": " └─ Postingan awal: {count}",
"configGenerating": "Konfigurasi sedang dihasilkan, memeriksa...",
"loadConfigFailed": "Gagal memuat konfigurasi: {error}",
"step2Init": "Pengaturan lingkungan Langkah 2 diinisialisasi",
"step3Init": "Jalankan simulasi Langkah 3 diinisialisasi",
"startingDualSim": "Memulai simulasi paralel dual-platform...",
"setMaxRounds": "Putaran simulasi maksimum diatur ke: {rounds}",
"graphMemoryUpdateEnabled": "Pembaruan memori grafik dinamis diaktifkan",
"oldSimCleared": "✓ Log simulasi lama dibersihkan, memulai ulang simulasi",
"engineStarted": "✓ Mesin simulasi berhasil dimulai",
"startFailed": "✗ Mulai gagal: {error}",
"startException": "✗ Kesalahan mulai: {error}",
"stoppingSim": "Menghentikan simulasi...",
"simStoppedSuccess": "✓ Simulasi dihentikan",
"stopFailed": "Penghentian gagal: {error}",
"stopException": "Kesalahan penghentian: {error}",
"allPlatformsCompleted": "✓ Semua simulasi platform telah berakhir",
"simCompleted": "✓ Simulasi selesai",
"reportRequestSent": "Permintaan pembuatan laporan dikirim, harap tunggu...",
"startingReportGen": "Memulai pembuatan laporan...",
"reportGenTaskStarted": "✓ Tugas pembuatan laporan dimulai: {reportId}",
"reportGenFailed": "✗ Gagal memulai pembuatan laporan: {error}",
"reportGenException": "✗ Kesalahan pembuatan laporan: {error}",
"step5Init": "Interaksi mendalam Langkah 5 diinisialisasi",
"selectChatTarget": "Target obrolan dipilih: {name}",
"sendFailed": "Pengiriman gagal: {error}",
"sendToReportAgent": "Dikirim ke Agen Laporan: {message}...",
"reportAgentReplied": "Agen Laporan membalas",
"sendToAgent": "Dikirim ke {name}: {message}...",
"agentReplied": "{name} membalas",
"sendSurvey": "Mengirim survei ke {count} target...",
"receivedReplies": "Menerima {count} balasan",
"surveySendFailed": "Pengiriman survei gagal: {error}",
"loadReportData": "Memuat data laporan: {id}",
"loadReportFailed": "Gagal memuat laporan: {error}",
"reportDataLoaded": "Data laporan dimuat",
"loadReportLogFailed": "Gagal memuat log laporan: {error}",
"loadedProfiles": "Dimuat {count} individu simulasi",
"loadProfilesFailed": "Gagal memuat individu simulasi: {error}",
"interactionViewInit": "InteractionView diinisialisasi",
"reportViewInit": "ReportView diinisialisasi",
"getReportInfoFailed": "Gagal mendapatkan info laporan: {error}",
"enterStep": "Memasuki Langkah {step}: {name}",
"returnToStep": "Kembali ke Langkah {step}: {name}",
"customSimRounds": "Putaran simulasi kustom: {rounds} putaran"
},
"report": {
"taskStarted": "Tugas pembuatan laporan dimulai",
"planningStart": "Memulai perencanaan kerangka laporan",
"fetchSimContext": "Mengambil konteks simulasi",
"planningComplete": "Perencanaan kerangka selesai",
"sectionStart": "Memulai pembuatan bagian: {title}",
"reactThought": "Pemikiran ReACT putaran {iteration}",
"toolCall": "Memanggil alat: {toolName}",
"toolResult": "Alat {toolName} mengembalikan hasil",
"llmResponse": "Respons LLM (panggilan alat: {hasToolCalls}, jawaban akhir: {hasFinalAnswer})",
"sectionContentDone": "Pembuatan konten bagian {title} selesai",
"sectionComplete": "Pembuatan bagian {title} selesai",
"reportComplete": "Pembuatan laporan selesai",
"errorOccurred": "Terjadi kesalahan: {error}",
"agentInitDone": "ReportAgent diinisialisasi: graph_id={graphId}, simulation_id={simulationId}",
"executingTool": "Menjalankan alat: {toolName}, params: {params}",
"toolExecFailed": "Eksekusi alat gagal: {toolName}, error: {error}",
"startPlanningOutline": "Memulai perencanaan kerangka laporan...",
"outlinePlanDone": "Perencanaan kerangka selesai: {count} bagian",
"outlinePlanFailed": "Perencanaan kerangka gagal: {error}",
"reactGenerateSection": "ReACT membuat bagian: {title}",
"sectionIterNone": "Bagian {title} iterasi {iteration}: LLM mengembalikan None",
"sectionConflict": "Bagian {title} putaran {iteration}: LLM menghasilkan panggilan alat dan Jawaban Akhir (konflik #{conflictCount})",
"sectionConflictDowngrade": "Bagian {title}: {conflictCount} konflik berturut-turut, menurunkan ke pemotongan dan eksekusi panggilan alat pertama",
"sectionGenDone": "Pembuatan bagian {title} selesai (panggilan alat: {count})",
"multiToolOnlyFirst": "LLM mencoba {total} panggilan alat, hanya menjalankan yang pertama: {toolName}",
"sectionNoPrefix": "Bagian {title} tidak memiliki awalan 'Jawaban Akhir:', mengadopsi keluaran LLM sebagai konten akhir (panggilan alat: {count})",
"sectionMaxIter": "Bagian {title} mencapai iterasi maksimum, memaksa pembuatan",
"sectionForceFailed": "Bagian {title} force-finish LLM mengembalikan None, menggunakan pesan kesalahan default",
"sectionGenFailedContent": "(Bagian ini gagal dibuat: LLM mengembalikan respons kosong, silakan coba lagi nanti)",
"outlineSavedToFile": "Kerangka disimpan ke file: {reportId}/outline.json",
"sectionSaved": "Bagian disimpan: {reportId}/section_{sectionNum}.md",
"reportGenDone": "Pembuatan laporan selesai: {reportId}",
"reportGenFailed": "Pembuatan laporan gagal: {error}",
"agentChat": "Percakapan Agen Laporan: {message}...",
"fetchReportFailed": "Gagal mengambil konten laporan: {error}",
"outlineSaved": "Kerangka disimpan: {reportId}",
"sectionFileSaved": "Bagian disimpan: {reportId}/{fileSuffix}",
"fullReportAssembled": "Laporan lengkap dirakit: {reportId}",
"reportSaved": "Laporan disimpan: {reportId}",
"reportFolderDeleted": "Folder laporan dihapus: {reportId}",
"redirectToQuickSearch": "search_graph dialihkan ke quick_search",
"redirectToInsightForge": "get_simulation_context dialihkan ke insight_forge"
},
"console": {
"zepToolsInitialized": "ZepToolsService diinisialisasi",
"zepRetryAttempt": "Percobaan {operation} Zep {attempt} gagal: {error}, mencoba ulang dalam {delay}s...",
"zepAllRetriesFailed": "{operation} Zep gagal setelah {retries} percobaan: {error}",
"graphSearch": "Pencarian graf: graph_id={graphId}, query={query}...",
"graphSearchOp": "Pencarian graf (graph={graphId})",
"searchComplete": "Pencarian selesai: ditemukan {count} fakta relevan",
"zepSearchApiFallback": "Zep Search API gagal, beralih ke pencarian lokal: {error}",
"usingLocalSearch": "Menggunakan pencarian lokal: query={query}...",
"localSearchComplete": "Pencarian lokal selesai: ditemukan {count} fakta relevan",
"localSearchFailed": "Pencarian lokal gagal: {error}",
"fetchingAllNodes": "Mengambil semua node untuk graf {graphId}...",
"fetchedNodes": "Mengambil {count} node",
"fetchingAllEdges": "Mengambil semua edge untuk graf {graphId}...",
"fetchedEdges": "Mengambil {count} edge",
"fetchingNodeDetail": "Mengambil detail node: {uuid}...",
"fetchNodeDetailOp": "Ambil detail node (uuid={uuid}...)",
"fetchNodeDetailFailed": "Gagal mengambil detail node: {error}",
"fetchingNodeEdges": "Mengambil edge untuk node {uuid}...",
"foundNodeEdges": "Ditemukan {count} edge terkait node",
"fetchNodeEdgesFailed": "Gagal mengambil edge node: {error}",
"fetchingEntitiesByType": "Mengambil entitas bertipe {type}...",
"foundEntitiesByType": "Ditemukan {count} entitas bertipe {type}",
"fetchingEntitySummary": "Mengambil ringkasan hubungan untuk entitas {name}...",
"fetchingGraphStats": "Mengambil statistik untuk graf {graphId}...",
"fetchingSimContext": "Mengambil konteks simulasi: {requirement}...",
"insightForgeStart": "Pengambilan wawasan mendalam InsightForge: {query}...",
"generatedSubQueries": "Menghasilkan {count} sub-kueri",
"insightForgeComplete": "InsightForge selesai: {facts} fakta, {entities} entitas, {relationships} hubungan",
"generateSubQueriesFailed": "Gagal menghasilkan sub-kueri: {error}, menggunakan default",
"panoramaSearchStart": "Pencarian luas PanoramaSearch: {query}...",
"panoramaSearchComplete": "PanoramaSearch selesai: {active} aktif, {historical} historis",
"quickSearchStart": "Pencarian sederhana QuickSearch: {query}...",
"quickSearchComplete": "QuickSearch selesai: {count} hasil",
"interviewAgentsStart": "Wawancara mendalam InterviewAgents (API nyata): {requirement}...",
"profilesNotFound": "Profil tidak ditemukan untuk simulasi {simId}",
"loadedProfiles": "Memuat {count} profil agen",
"selectedAgentsForInterview": "Memilih {count} agen untuk wawancara: {indices}",
"generatedInterviewQuestions": "Menghasilkan {count} pertanyaan wawancara",
"callingBatchInterviewApi": "Memanggil API wawancara batch (dual platform): {count} agen",
"interviewApiReturned": "API wawancara mengembalikan: {count} hasil, success={success}",
"interviewApiReturnedFailure": "API wawancara mengembalikan kegagalan: {error}",
"interviewApiCallFailed": "Panggilan API wawancara gagal (env tidak berjalan?): {error}",
"interviewApiCallException": "Eksepsi panggilan API wawancara: {error}",
"interviewAgentsComplete": "InterviewAgents selesai: mewawancarai {count} agen (dual platform)",
"loadedRedditProfiles": "Memuat {count} profil dari reddit_profiles.json",
"readRedditProfilesFailed": "Gagal membaca reddit_profiles.json: {error}",
"loadedTwitterProfiles": "Memuat {count} profil dari twitter_profiles.csv",
"readTwitterProfilesFailed": "Gagal membaca twitter_profiles.csv: {error}",
"llmSelectAgentFailed": "Pemilihan agen LLM gagal, menggunakan pilihan default: {error}",
"generateInterviewQuestionsFailed": "Gagal menghasilkan pertanyaan wawancara: {error}",
"generateInterviewSummaryFailed": "Gagal menghasilkan ringkasan wawancara: {error}"
}
}

View File

@ -26,5 +26,9 @@
"de": {
"label": "Deutsch",
"llmInstruction": "Bitte antworten Sie auf Deutsch."
},
"id": {
"label": "Bahasa Indonesia",
"llmInstruction": "Silakan jawab dalam bahasa Indonesia."
}
}