diff --git a/locales/id.json b/locales/id.json new file mode 100644 index 00000000..4f314f96 --- /dev/null +++ b/locales/id.json @@ -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}" + } +} \ No newline at end of file diff --git a/locales/languages.json b/locales/languages.json index 81732cec..9425c0fb 100644 --- a/locales/languages.json +++ b/locales/languages.json @@ -26,5 +26,9 @@ "de": { "label": "Deutsch", "llmInstruction": "Bitte antworten Sie auf Deutsch." + }, + "id": { + "label": "Bahasa Indonesia", + "llmInstruction": "Silakan jawab dalam bahasa Indonesia." } }