const translation = {
  common: {
    effectVarConfirm: {
      content: 'Variabel ini digunakan di node lain. Apakah Anda masih ingin menghapusnya?',
      title: 'Hapus Variabel',
    },
    parallelTip: {
      click: {
        title: 'Klik',
        desc: 'untuk menambahkan',
      },
      drag: {
        desc: 'untuk terhubung',
        title: 'Tarik',
      },
      limit: 'Paralelisme terbatas pada {{num}} cabang.',
      depthLimit: 'Batas lapisan bersarang paralel sebesar {{num}} lapisan',
    },
    undo: 'Urungkan',
    embedIntoSite: 'Sematkan ke Situs',
    editing: 'Mengedit',
    inRunMode: 'Dalam Mode Jalankan',
    publishUpdate: 'Publikasikan Pembaruan',
    fileUploadTip: 'Fitur unggahan gambar telah ditingkatkan menjadi unggah file.',
    currentDraftUnpublished: 'Draf Saat Ini Tidak Diterbitkan',
    inPreview: 'Dalam Pratinjau',
    preview: 'Pratayang',
    needConnectTip: 'Langkah ini tidak terhubung ke apa pun',
    handMode: 'Mode Tangan',
    currentView: 'Tampilan Saat Ini',
    exportImage: 'Ekspor Gambar',
    noVar: 'Tidak ada variabel',
    disconnect: 'Lepaskan',
    importWarningDetails: 'Perbedaan versi DSL dapat memengaruhi fitur tertentu',
    addParallelNode: 'Tambahkan Node Paralel',
    onFailure: 'Pada Kegagalan',
    update: 'Pemutakhiran',
    configure: 'Konfigurasikan',
    copy: 'Menyalin',
    redo: 'Ulangi',
    runApp: 'Jalankan Aplikasi',
    noHistory: 'Tidak Ada Sejarah',
    importDSLTip: 'Draf saat ini akan ditimpa.\nEkspor alur kerja sebagai cadangan sebelum mengimpor.',
    loadMore: 'Muat Lebih Banyak',
    previewPlaceholder: 'Masukkan konten di kotak di bawah ini untuk mulai men-debug Chatbot',
    unpublished: 'Tidak diterbitkan',
    viewRunHistory: 'Lihat riwayat eksekusi',
    versionHistory: 'Riwayat versi',
    backupCurrentDraft: 'Cadangan Draf Saat Ini',
    latestPublished: 'Terbaru Diterbitkan',
    exportSVG: 'Ekspor sebagai SVG',
    branch: 'CABANG',
    openInExplore: 'Buka di Jelajahi',
    publish: 'Menerbitkan',
    importSuccess: 'Berhasil Impor',
    jumpToNode: 'Lompat ke simpul ini',
    tagBound: 'Jumlah aplikasi yang menggunakan tag ini',
    model: 'Model',
    workflowAsToolTip: 'Konfigurasi ulang alat diperlukan setelah pembaruan alur kerja.',
    currentDraft: 'Draf Saat Ini',
    parallel: 'SEJAJAR',
    jinjaEditorPlaceholder: 'Ketik \'/\' atau \'{\' untuk menyisipkan variabel',
    exitVersions: 'Keluar dari Versi',
    featuresDocLink: 'Pelajari lebih lanjut',
    pasteHere: 'Tempel di sini',
    importWarning: 'Hati',
    running: 'Menjalankan',
    publishedAt: 'Diterbitkan',
    run: 'Jalankan',
    importDSL: 'Impor DSL',
    featuresDescription: 'Tingkatkan pengalaman pengguna aplikasi web',
    inPreviewMode: 'Dalam Mode Pratinjau',
    duplicate: 'Duplikat',
    learnMore: 'Pelajari lebih lanjut',
    restart: 'Restart',
    setVarValuePlaceholder: 'Atur variabel',
    conversationLog: 'Log Percakapan',
    addTitle: 'Tambahkan judul...',
    searchVar: 'Variabel pencarian',
    published: 'Diterbitkan',
    viewDetailInTracingPanel: 'Lihat detail',
    variableNamePlaceholder: 'Nama variabel',
    workflowAsTool: 'Alur Kerja sebagai Alat',
    enableJinja: 'Aktifkan dukungan template Jinja',
    input: 'Masukan',
    chooseDSL: 'Pilih file DSL',
    exportPNG: 'Ekspor sebagai PNG',
    needAnswerNode: 'Node Jawaban harus ditambahkan',
    syncingData: 'Menyinkronkan data, hanya beberapa detik.',
    addFailureBranch: 'Tambahkan Cabang Gagal',
    exportJPEG: 'Ekspor sebagai JPEG',
    addBlock: 'Tambahkan Node',
    processData: 'Proses Data',
    needOutputNode: 'Node Output harus ditambahkan',
    manageInTools: 'Kelola di Alat',
    pointerMode: 'Mode Penunjuk',
    accessAPIReference: 'Referensi API Akses',
    ImageUploadLegacyTip: 'Anda sekarang dapat membuat variabel jenis file di formulir awal. Kami tidak akan lagi mendukung fitur unggah gambar di masa mendatang.',
    overwriteAndImport: 'Menimpa dan Mengimpor',
    goBackToEdit: 'Kembali ke editor',
    runHistory: 'Jalankan Riwayat',
    autoSaved: 'Disimpan Secara Otomatis',
    output: 'Hasil',
    batchRunApp: 'Aplikasi Batch Run',
    debugAndPreview: 'Pratayang',
    features: 'Fitur',
    importFailure: 'Impor Gagal',
    insertVarTip: 'Tekan tombol \'/\' untuk memasukkan dengan cepat',
    addDescription: 'Tambahkan deskripsi...',
    notRunning: 'Belum berjalan',
    workflowProcess: 'Proses Alur Kerja',
    showRunHistory: 'Tampilkan Riwayat Eksekusi',
    configureRequired: 'Konfigurasi yang Diperlukan',
    currentWorkflow: 'Alur Kerja Saat Ini',
    viewOnly: 'Lihat Saja',
    restore: 'Mengembalikan',
    listening: 'Mendengarkan',
    chooseStartNodeToRun: 'Pilih node awal untuk dijalankan',
    runAllTriggers: 'Jalankan semua pemicu',
    maxTreeDepth: 'Batas maksimum {{depth}} node per cabang',
    needAdd: 'Node {{node}} harus ditambahkan',
    needStartNode: 'Setidaknya satu node awal harus ditambahkan',
    moreActions: 'Tindakan Lain',
    workflowAsToolDisabledHint: 'Terbitkan alur kerja terbaru dan pastikan ada node Input Pengguna yang terhubung sebelum mengonfigurasinya sebagai alat.',
  },
  env: {
    modal: {
      description: 'Deskripsi',
      valuePlaceholder: 'Nilai ENV',
      descriptionPlaceholder: 'Jelaskan variabel',
      editTitle: 'Edit Variabel Lingkungan',
      namePlaceholder: 'Nama env',
      value: 'Nilai',
      name: 'Nama',
      title: 'Tambahkan Variabel Lingkungan',
      secretTip: 'Digunakan untuk menentukan informasi atau data sensitif, dengan pengaturan DSL yang dikonfigurasi untuk pencegahan kebocoran.',
      type: 'Jenis',
    },
    export: {
      ignore: 'Ekspor DSL',
      checkbox: 'Mengekspor nilai rahasia',
      title: 'Mengekspor variabel lingkungan Rahasia?',
      export: 'Mengekspor DSL dengan nilai rahasia',
    },
    envPanelButton: 'Tambahkan Variabel',
    envPanelTitle: 'Variabel Lingkungan',
    envDescription: 'Variabel lingkungan dapat digunakan untuk menyimpan informasi pribadi dan kredensial. Mereka hanya baca dan dapat dipisahkan dari file DSL selama ekspor.',
  },
  globalVar: {
    title: 'Variabel Sistem',
    description: 'Variabel sistem adalah variabel global yang dapat dirujuk oleh node apa pun tanpa koneksi jika tipenya sesuai, seperti ID pengguna akhir dan ID alur kerja.',
    fieldsDescription: {
      conversationId: 'ID percakapan',
      dialogCount: 'Jumlah percakapan',
      userId: 'ID pengguna',
      triggerTimestamp: 'Cap waktu saat aplikasi mulai berjalan',
      appId: 'ID aplikasi',
      workflowId: 'ID alur kerja',
      workflowRunId: 'ID eksekusi alur kerja',
    },
  },
  chatVariable: {
    modal: {
      valuePlaceholder: 'Nilai default, biarkan kosong untuk tidak diatur',
      name: 'Nama',
      arrayValue: 'Nilai',
      description: 'Deskripsi',
      editTitle: 'Edit Variabel Percakapan',
      editInForm: 'Edit dalam Formulir',
      type: 'Jenis',
      oneByOne: 'Tambahkan satu per satu',
      editInJSON: 'Edit dalam JSON',
      namePlaceholder: 'Nama variabel',
      objectType: 'Jenis',
      title: 'Tambahkan Variabel Percakapan',
      value: 'Nilai Default',
      descriptionPlaceholder: 'Jelaskan variabel',
      objectValue: 'Nilai Default',
      addArrayValue: 'Nilai Tambah',
      objectKey: 'Kunci',
    },
    panelTitle: 'Variabel Percakapan',
    button: 'Tambahkan Variabel',
    updatedAt: 'Diperbarui pada',
    panelDescription: 'Variabel Percakapan digunakan untuk menyimpan informasi interaktif yang perlu diingat LLM, termasuk riwayat percakapan, file yang diunggah, preferensi pengguna. Mereka dibaca-tulis.',
    docLink: 'Kunjungi dokumen kami untuk mempelajari lebih lanjut.',
    storedContent: 'Konten yang disimpan',
  },
  changeHistory: {
    nodeAdd: 'Node ditambahkan',
    nodePaste: 'Node ditempelkan',
    noteDelete: 'Catatan dihapus',
    hint: 'Petunjuk',
    nodeTitleChange: 'Judul simpul diubah',
    title: 'Riwayat Perubahan',
    nodeDescriptionChange: 'Deskripsi simpul diubah',
    clearHistory: 'Hapus Sejarah',
    placeholder: 'Anda belum mengubah apa pun',
    nodeDragStop: 'Node dipindahkan',
    hintText: 'Tindakan pengeditan Anda dilacak dalam riwayat perubahan, yang disimpan di perangkat Anda selama sesi ini. Riwayat ini akan dihapus saat Anda meninggalkan editor.',
    sessionStart: 'Mulai Sesi',
    noteChange: 'Catatan berubah',
    nodeResize: 'Node diubah ukurannya',
    nodeDelete: 'Node dihapus',
    noteAdd: 'Catatan ditambahkan',
    nodeConnect: 'Node terhubung',
    currentState: 'Keadaan Saat Ini',
    edgeDelete: 'Node terputus',
    nodeChange: 'Node diubah',
    stepBackward_one: '{{count}} langkah mundur',
    stepBackward_other: '{{count}} langkah mundur',
    stepForward_one: '{{count}} melangkah maju',
    stepForward_other: '{{count}} melangkah maju',
  },
  errorMsg: {
    fields: {
      variable: 'Nama Variabel',
      model: 'Model',
      rerankModel: 'Model Peringkat Ulang yang dikonfigurasi',
      visionVariable: 'Variabel Penglihatan',
      variableValue: 'Nilai Variabel',
      code: 'Kode',
    },
    invalidVariable: 'Variabel tidak valid',
    authRequired: 'Otorisasi diperlukan',
    rerankModelRequired: 'Model Rerank yang dikonfigurasi diperlukan',
    fieldRequired: '{{field}} wajib diisi',
    invalidJson: '{{field}} adalah JSON yang tidak valid',
    noValidTool: '{{field}} tidak ada alat yang valid dipilih',
    toolParameterRequired: '{{field}}: parameter [{{param}}] diperlukan',
    startNodeRequired: 'Silakan tambahkan node awal terlebih dahulu sebelum {{operation}}',
  },
  singleRun: {
    back: 'Belakang',
    running: 'Menjalankan',
    iteration: 'Iterasi',
    testRun: 'Uji Coba',
    testRunIteration: 'Iterasi Uji Coba',
    startRun: 'Mulai Lari',
    loop: 'Lari',
    preparingDataSource: 'Menyiapkan Sumber Data',
    reRun: 'Jalankan ulang',
  },
  tabs: {
    'utilities': 'Utilitas',
    'workflowTool': 'Alur Kerja',
    'searchBlock': 'Simpul pencarian',
    'agent': 'Strategi Agen',
    'allAdded': 'Semua ditambahkan',
    'searchTool': 'Alat pencarian',
    'customTool': 'Adat',
    'noResult': 'Tidak ada kecocokan yang ditemukan',
    'tools': 'Perkakas',
    'logic': 'Logika',
    'addAll': 'Tambahkan semua',
    'blocks': 'Node',
    'question-understand': 'Pertanyaan Pahami',
    'plugin': 'Plugin',
    'transform': 'Mengubah',
    'allTool': 'Semua',
    'sources': 'Sumber',
    'searchDataSource': 'Cari Sumber Data',
    'start': 'Mulai',
    'searchTrigger': 'Pencarian memicu...',
    'allTriggers': 'Semua pemicu',
    'noPluginsFound': 'Tidak ada plugin yang ditemukan',
    'requestToCommunity': 'Permintaan kepada komunitas',
    'featuredTools': 'Unggulan',
    'showMoreFeatured': 'Tampilkan lebih banyak',
    'showLessFeatured': 'Tampilkan lebih sedikit',
    'installed': 'Terpasang',
    'pluginByAuthor': 'Oleh {{author}}',
    'usePlugin': 'Pilih alat',
    'hideActions': 'Sembunyikan alat',
    'noFeaturedPlugins': 'Temukan lebih banyak alat di Marketplace',
    'noFeaturedTriggers': 'Temukan lebih banyak pemicu di Marketplace',
    'startDisabledTip': 'Node pemicu dan node input pengguna saling eksklusif.',
  },
  blocks: {
    'code': 'Kode',
    'http-request': 'Permintaan HTTP',
    'start': 'Mulai',
    'template-transform': 'Templat',
    'llm': 'LLM',
    'variable-assigner': 'Agregator Variabel',
    'loop-end': 'Keluar Loop',
    'iteration': 'Iterasi',
    'question-classifier': 'Pengklasifikasi Pertanyaan',
    'iteration-start': 'Iterasi Mulai',
    'knowledge-retrieval': 'Pengambilan Pengetahuan',
    'loop': 'Perulangan',
    'assigner': 'Penerima Variabel',
    'agent': 'Agen',
    'list-operator': 'Operator Daftar',
    'answer': 'Jawaban',
    'parameter-extractor': 'Ekstraktor Parameter',
    'document-extractor': 'Ekstraktor Dokumen',
    'end': 'Keluaran',
    'if-else': 'JIKA/LAIN',
    'loop-start': 'Mulai Loop',
    'variable-aggregator': 'Agregator Variabel',
    'datasource': 'Sumber Data',
    'knowledge-index': 'Basis Pengetahuan',
    'originalStartNode': 'node awal asli',
    'trigger-schedule': 'Pemicu Jadwal',
    'trigger-webhook': 'Pemicu Webhook',
    'trigger-plugin': 'Pemicu Plugin',
  },
  blocksAbout: {
    'template-transform': 'Mengonversi data menjadi string menggunakan sintaks templat Jinja',
    'answer': 'Menentukan konten balasan percakapan obrolan',
    'llm': 'Memanggil model bahasa besar untuk menjawab pertanyaan atau memproses bahasa alami',
    'question-classifier': 'Tentukan kondisi klasifikasi pertanyaan pengguna, LLM dapat menentukan bagaimana percakapan berlangsung berdasarkan deskripsi klasifikasi',
    'loop-end': 'Setara dengan "istirahat". Node ini tidak memiliki item konfigurasi. Ketika badan loop mencapai node ini, loop berakhir.',
    'start': 'Menentukan parameter awal untuk meluncurkan alur kerja',
    'iteration': 'Lakukan beberapa langkah pada objek daftar hingga semua hasil dikeluarkan.',
    'code': 'Eksekusi sepotong kode Python atau NodeJS untuk mengimplementasikan logika kustom',
    'http-request': 'Izinkan permintaan server dikirim melalui protokol HTTP',
    'assigner': 'Simpul penetapan variabel digunakan untuk menetapkan nilai ke variabel yang dapat ditulis (seperti variabel percakapan).',
    'if-else': 'Memungkinkan Anda membagi alur kerja menjadi dua cabang berdasarkan kondisi if/else',
    'agent': 'Memanggil model bahasa besar untuk menjawab pertanyaan atau memproses bahasa alami',
    'document-extractor': 'Digunakan untuk mengurai dokumen yang diunggah menjadi konten teks yang mudah dipahami oleh LLM.',
    'knowledge-retrieval': 'Memungkinkan Anda untuk mengkueri konten teks yang terkait dengan pertanyaan pengguna dari Pengetahuan',
    'parameter-extractor': 'Gunakan LLM untuk mengekstrak parameter terstruktur dari bahasa alami untuk pemanggilan alat atau permintaan HTTP.',
    'variable-assigner': 'Agregatkan variabel multi-cabang menjadi satu variabel untuk konfigurasi terpadu simpul hilir.',
    'loop': 'Jalankan perulangan logika hingga kondisi penghentian terpenuhi atau jumlah perulangan maksimum tercapai.',
    'variable-aggregator': 'Agregatkan variabel multi-cabang menjadi satu variabel untuk konfigurasi terpadu simpul hilir.',
    'end': 'Menentukan output dan jenis hasil alur kerja',
    'list-operator': 'Digunakan untuk memfilter atau mengurutkan konten array.',
    'datasource': 'Sumber Data Tentang',
    'knowledge-index': 'Basis Pengetahuan Tentang',
    'trigger-schedule': 'Pemicu alur kerja berbasis waktu yang memulai alur kerja sesuai jadwal',
    'trigger-webhook': 'Pemicu Webhook menerima push HTTP dari sistem pihak ketiga untuk secara otomatis memicu alur kerja.',
    'trigger-plugin': 'Pemicu integrasi pihak ketiga yang memulai alur kerja dari kejadian platform eksternal',
  },
  operator: {
    zoomIn: 'Perbesar',
    alignCenter: 'Pusat',
    zoomOut: 'Perkecil',
    zoomToFit: 'Perbesar agar sesuai',
    vertical: 'Vertikal',
    alignTop: 'Puncak',
    alignMiddle: 'Tengah',
    selectionAlignment: 'Perataan Seleksi',
    alignRight: 'Kanan',
    alignNodes: 'Sejajarkan Node',
    horizontal: 'Horisontal',
    distributeHorizontal: 'Spasi Secara Horizontal',
    zoomTo100: 'Perbesar hingga 100%',
    alignLeft: 'Rata Kiri',
    distributeVertical: 'Ruang Secara Vertikal',
    zoomTo50: 'Perbesar hingga 50%',
    alignBottom: 'Rata Bawah',
  },
  variableReference: {
    conversationVars: 'variabel percakapan',
    noVarsForOperation: 'Tidak ada variabel yang tersedia untuk penugasan dengan operasi yang dipilih.',
    assignedVarsDescription: 'Variabel yang ditetapkan harus berupa variabel yang dapat ditulis, seperti',
    noAssignedVars: 'Tidak ada variabel yang ditetapkan yang tersedia',
    noAvailableVars: 'Tidak ada variabel yang tersedia',
  },
  panel: {
    change: 'Ubah',
    checklist: 'Checklist',
    about: 'Sekitar',
    optional: '(opsional)',
    checklistTip: 'Pastikan semua masalah diselesaikan sebelum dipublikasikan',
    organizeBlocks: 'Mengatur simpul',
    selectNextStep: 'Pilih Langkah Berikutnya',
    addNextStep: 'Tambahkan langkah berikutnya dalam alur kerja ini',
    minimize: 'Keluar dari Layar Penuh',
    nextStep: 'Langkah Berikutnya',
    userInputField: 'Bidang Input Pengguna',
    checklistResolved: 'Semua masalah terselesaikan',
    createdBy: 'Dibuat oleh',
    helpLink: 'Docs',
    changeBlock: 'Ubah Node',
    runThisStep: 'Jalankan langkah ini',
    maximize: 'Maksimalkan Kanvas',
    optional_and_hidden: '(opsional & tersembunyi)',
    goTo: 'Pergi ke',
    startNode: 'Mulai Node',
    scrollToSelectedNode: 'Gulir ke node yang dipilih',
    openWorkflow: 'Buka Alur Kerja',
  },
  nodes: {
    common: {
      memory: {
        conversationRoleName: 'Nama Peran Percakapan',
        memoryTip: 'Pengaturan memori obrolan',
        windowSize: 'Ukuran Jendela',
        assistant: 'Awalan asisten',
        memory: 'Ingatan',
        user: 'Awalan pengguna',
      },
      memories: {
        builtIn: 'Built-in',
        title: 'Kenangan',
        tip: 'Memori obrolan',
      },
      errorHandle: {
        none: {
          desc: 'Node akan berhenti berjalan jika pengecualian terjadi dan tidak ditangani',
          title: 'Tidak',
        },
        defaultValue: {
          title: 'Nilai Default',
          output: 'Nilai Default Keluaran',
          inLog: 'Pengecualian simpul, keluaran sesuai dengan nilai default.',
          desc: 'Saat terjadi kesalahan, tentukan konten output statis.',
          tip: 'Jika kesalahan, akan mengembalikan nilai di bawah ini.',
        },
        failBranch: {
          customize: 'Buka kanvas untuk menyesuaikan logika cabang gagal.',
          desc: 'Ketika terjadi kesalahan, itu akan mengeksekusi cabang pengecualian',
          inLog: 'Pengecualian node, akan secara otomatis mengeksekusi cabang gagal. Output node akan mengembalikan jenis kesalahan dan pesan kesalahan dan meneruskannya ke hilir.',
          title: 'Cabang Gagal',
          customizeTip: 'Saat cabang gagal diaktifkan, pengecualian yang dilemparkan oleh simpul tidak akan mengakhiri proses. Sebagai gantinya, itu akan secara otomatis mengeksekusi cabang gagal yang telah ditentukan sebelumnya, memungkinkan Anda untuk secara fleksibel memberikan pesan kesalahan, laporan, perbaikan, atau tindakan lewati.',
        },
        partialSucceeded: {
          tip: 'Ada {{num}} node dalam proses yang berjalan tidak normal, silakan pergi ke tracing untuk memeriksa log.',
        },
        title: 'Penanganan Kesalahan',
        tip: 'Strategi penanganan pengecualian, dipicu ketika simpul menemukan pengecualian.',
      },
      retry: {
        retry: 'Pengulangan',
        retryFailed: 'Coba lagi gagal',
        retrying: 'Mencoba lagi...',
        ms: 'Ms',
        maxRetries: 'percobaan ulang maks',
        retryOnFailure: 'Coba lagi saat gagal',
        retryInterval: 'interval coba lagi',
        times: 'kali',
        retrySuccessful: 'Coba lagi berhasil',
        retryTimes: 'Coba ulang {{times}} kali jika gagal',
        retryFailedTimes: '{{times}} percobaan gagal',
        retries: '{{num}} Percobaan Ulang',
      },
      typeSwitch: {
        variable: 'Gunakan variabel',
        input: 'Nilai masukan',
      },
      insertVarTip: 'Sisipkan Variabel',
      outputVars: 'Variabel Keluaran',
      inputVars: 'Variabel Masukan',
      pluginNotInstalled: 'Plugin tidak terpasang',
    },
    start: {
      outputVars: {
        memories: {
          type: 'Jenis pesan',
          des: 'Riwayat percakapan',
          content: 'Konten pesan',
        },
        files: 'Daftar file',
        query: 'Masukan pengguna',
      },
      builtInVar: 'Variabel bawaan',
      noVarTip: 'Atur input yang dapat digunakan dalam Alur Kerja',
      required: 'Diperlukan',
      inputField: 'Bidang Masukan',
    },
    end: {
      output: {
        variable: 'variabel keluaran',
        type: 'Jenis keluaran',
      },
      type: {
        'plain-text': 'Teks Biasa',
        'structured': 'Terstruktur',
        'none': 'Tidak',
      },
      outputs: 'Output',
    },
    answer: {
      answer: 'Menjawab',
      outputVars: 'Variabel Keluaran',
    },
    llm: {
      roleDescription: {
        user: 'Berikan instruksi, kueri, atau input berbasis teks apa pun ke model',
        system: 'Berikan instruksi tingkat tinggi untuk percakapan',
        assistant: 'Respons model berdasarkan pesan pengguna',
      },
      resolution: {
        low: 'Rendah',
        high: 'Tinggi',
        name: 'Resolusi',
      },
      outputVars: {
        output: 'Hasilkan konten',
        reasoning_content: 'Konten penalaran',
        usage: 'Informasi Penggunaan Model',
      },
      singleRun: {
        variable: 'Variabel',
      },
      jsonSchema: {
        warningTips: {
          saveSchema: 'Harap selesaikan pengeditan bidang saat ini sebelum menyimpan skema',
        },
        addField: 'Tambahkan Bidang',
        resetDefaults: 'Reset',
        generatedResult: 'Hasil yang dihasilkan',
        regenerate: 'Regenerasi',
        generationTip: 'Anda dapat menggunakan bahasa alami untuk membuat Skema JSON dengan cepat.',
        showAdvancedOptions: 'Tampilkan opsi lanjutan',
        instruction: 'Ajaran',
        doc: 'Pelajari output terstruktur lebih lanjut',
        descriptionPlaceholder: 'Tambahkan deskripsi',
        generateJsonSchema: 'Hasilkan Skema JSON',
        fieldNamePlaceholder: 'Nama Bidang',
        generate: 'Menghasilkan',
        back: 'Belakang',
        required: 'Diperlukan',
        promptPlaceholder: 'Jelaskan Skema JSON Anda...',
        import: 'Impor dari JSON',
        apply: 'Berlaku',
        generating: 'Menghasilkan Skema JSON...',
        resultTip: 'Berikut adalah hasil yang dihasilkan. Jika Anda tidak puas, Anda dapat kembali dan mengubah prompt Anda.',
        addChildField: 'Tambahkan Bidang Anak',
        stringValidations: 'Validasi String',
        promptTooltip: 'Ubah deskripsi teks menjadi struktur Skema JSON standar.',
        title: 'Skema Output Terstruktur',
      },
      files: 'File',
      model: 'pola',
      variables: 'Variabel',
      prompt: 'cepat',
      addMessage: 'Tambahkan Pesan',
      vision: 'penglihatan',
      sysQueryInUser: 'sys.query dalam pesan pengguna diperlukan',
      contextTooltip: 'Anda dapat mengimpor Pengetahuan sebagai konteks',
      notSetContextInPromptTip: 'Untuk mengaktifkan fitur konteks, silakan isi variabel konteks di PROMPT.',
      context: 'konteks',
      reasoningFormat: {
        tagged: 'Tetap pikirkan tag',
        title: 'Aktifkan pemisahan tag penalaran',
        separated: 'Pisahkan tag pemikiran',
        tooltip: 'Ekstrak konten dari tag pikir dan simpan di field reasoning_content.',
      },
    },
    knowledgeRetrieval: {
      outputVars: {
        icon: 'Ikon tersegmentasi',
        title: 'Judul tersegmentasi',
        metadata: 'Metadata lainnya',
        output: 'Mengambil data tersegmentasi',
        url: 'URL tersegmentasi',
        content: 'Konten tersegmentasi',
        files: 'File yang diambil',
      },
      metadata: {
        options: {
          disabled: {
            title: 'Cacat',
            subTitle: 'Tidak mengaktifkan pemfilteran metadata',
          },
          automatic: {
            desc: 'Secara otomatis menghasilkan kondisi pemfilteran metadata berdasarkan Variabel Kueri',
            subTitle: 'Secara otomatis membuat kondisi pemfilteran metadata berdasarkan kueri pengguna',
            title: 'Otomatis',
          },
          manual: {
            title: 'Manual',
            subTitle: 'Menambahkan kondisi pemfilteran metadata secara manual',
          },
        },
        panel: {
          title: 'Kondisi Filter Metadata',
          placeholder: 'Masukkan nilai',
          search: 'Metadata pencarian',
          add: 'Tambahkan Kondisi',
          conditions: 'Kondisi',
          select: 'Pilih variabel...',
          datePlaceholder: 'Pilih waktu...',
        },
        tip: 'Pemfilteran metadata adalah proses menggunakan atribut metadata (seperti tag, kategori, atau izin akses) untuk menyempurnakan dan mengontrol pengambilan informasi yang relevan dalam sistem.',
        title: 'Pemfilteran Metadata',
      },
      knowledge: 'Pengetahuan',
      queryVariable: 'Variabel Kueri',
      queryText: 'Teks Query',
      queryAttachment: 'Cari Gambar',
    },
    http: {
      outputVars: {
        files: 'Daftar File',
        body: 'Konten Tanggapan',
        headers: 'Daftar Header Respons JSON',
        statusCode: 'Kode Status Respons',
      },
      authorization: {
        'header': 'Header',
        'basic': 'Dasar',
        'custom': 'Adat',
        'authorization': 'Otorisasi',
        'bearer': 'Pembawa',
        'no-auth': 'Tidak',
        'api-key': 'Kunci API',
        'authorizationType': 'Jenis Otorisasi',
        'api-key-title': 'Kunci API',
        'auth-type': 'Jenis Autentikasi',
      },
      timeout: {
        title: 'Timeout',
        connectLabel: 'Batas Waktu Koneksi',
        readPlaceholder: 'Masukkan batas waktu baca dalam hitungan detik',
        connectPlaceholder: 'Masukkan batas waktu koneksi dalam hitungan detik',
        readLabel: 'Baca Batas Waktu',
        writeLabel: 'Tulis Batas Waktu',
        writePlaceholder: 'Masukkan batas waktu tulis dalam hitungan detik',
      },
      curl: {
        placeholder: 'Tempel string cURL di sini',
        title: 'Impor dari cURL',
      },
      verifySSL: {
        title: 'Verifikasi Sertifikat SSL',
        warningTooltip: 'Menonaktifkan verifikasi SSL tidak disarankan untuk lingkungan produksi. Ini hanya boleh digunakan dalam pengembangan atau pengujian, karena membuat koneksi rentan terhadap ancaman keamanan seperti serangan man-in-the-middle.',
      },
      notStartWithHttp: 'API harus dimulai dengan http:// atau https://',
      api: 'API',
      key: 'Kunci',
      inputVars: 'Variabel Masukan',
      value: 'Nilai',
      insertVarPlaceholder: 'ketik \'/\' untuk menyisipkan variabel',
      headers: 'Header',
      binaryFileVariable: 'Variabel File Biner',
      body: 'Badan',
      keyValueEdit: 'Kunci-Nilai Edit',
      bulkEdit: 'Edit Massal',
      params: 'Parameter',
      apiPlaceholder: 'Masukkan URL, ketik variabel sisipkan \'/\'',
      type: 'Jenis',
      extractListPlaceholder: 'Masukkan indeks item daftar, ketik variabel sisipkan \'/\'',
    },
    code: {
      searchDependencies: 'Dependensi Pencarian',
      inputVars: 'Variabel Masukan',
      advancedDependencies: 'Dependensi Lanjutan',
      advancedDependenciesTip: 'Tambahkan beberapa dependensi yang dimuat sebelumnya yang membutuhkan lebih banyak waktu untuk digunakan atau tidak bawaan default di sini',
      outputVars: 'Variabel Keluaran',
      syncFunctionSignature: 'Sinkronkan tanda tangan fungsi ke kode',
    },
    templateTransform: {
      outputVars: {
        output: 'Konten yang diubah',
      },
      code: 'Kode',
      inputVars: 'Variabel Masukan',
      codeSupportTip: 'Hanya mendukung Jinja2',
    },
    ifElse: {
      comparisonOperator: {
        'is not': 'tidak',
        'after': 'sesudah',
        'empty': 'kosong',
        'all of': 'Semua',
        'not empty': 'tidak kosong',
        'not null': 'bukan null',
        'null': 'adalah nol',
        'not in': 'tidak di',
        'not contains': 'tidak mengandung',
        'exists': 'Ada',
        'end with': 'akhiri dengan',
        'before': 'sebelum',
        'in': 'di',
        'is': 'sedang',
        'contains': 'Berisi',
        'start with': 'mulai dengan',
        'not exists': 'tidak ada',
      },
      optionName: {
        localUpload: 'Unggahan Lokal',
        image: 'Citra',
        audio: 'Audio',
        video: 'Video',
        doc: 'Doc',
        url: 'URL',
      },
      conditionNotSetup: 'Kondisi TIDAK diatur',
      and: 'dan',
      selectVariable: 'Pilih variabel...',
      or: 'atau',
      else: 'Lain',
      addSubVariable: 'Sub Variabel',
      addCondition: 'Tambahkan Kondisi',
      if: 'Kalau',
      operator: 'Operator',
      enterValue: 'Masukkan nilai',
      select: 'Pilih',
      notSetVariable: 'Silakan atur variabel terlebih dahulu',
      elseDescription: 'Digunakan untuk menentukan logika yang harus dijalankan ketika kondisi if tidak terpenuhi.',
    },
    variableAssigner: {
      type: {
        number: 'Angka',
        array: 'Array',
        object: 'Benda',
        string: 'Tali',
      },
      outputVars: {
        varDescribe: 'output {{groupName}}',
      },
      noVarTip: 'Tambahkan variabel yang akan ditetapkan',
      aggregationGroup: 'Grup Agregasi',
      title: 'Tetapkan variabel',
      setAssignVariable: 'Mengatur variabel penetapan',
      varNotSet: 'Variabel tidak diatur',
      outputType: 'Jenis Keluaran',
      addGroup: 'Tambahkan Grup',
      aggregationGroupTip: 'Mengaktifkan fitur ini memungkinkan agregator variabel untuk menggabungkan beberapa set variabel.',
    },
    assigner: {
      'operations': {
        'title': 'Operasi',
        'clear': 'Jelas',
        'extend': 'Memperpanjang',
        'over-write': 'Menimpa',
        'append': 'Menambahkan',
        'remove-first': 'Hapus Pertama',
        '*=': '*=',
        'set': 'Mengeset',
        'remove-last': 'Hapus Terakhir',
        '-=': '-=',
        '/=': '/=',
        '+=': ' =',
        'overwrite': 'Menimpa',
      },
      'variable': 'Variabel',
      'writeModeTip': 'Mode tambahkan: Hanya tersedia untuk variabel array.',
      'assignedVarsDescription': 'Variabel yang ditetapkan harus berupa variabel yang dapat ditulis, seperti variabel percakapan.',
      'over-write': 'Menimpa',
      'noVarTip': 'Klik tombol " " untuk menambahkan variabel',
      'noAssignedVars': 'Tidak ada variabel yang ditetapkan yang tersedia',
      'selectAssignedVariable': 'Pilih variabel yang ditetapkan...',
      'writeMode': 'Mode Tulis',
      'variables': 'Variabel',
      'varNotSet': 'Variabel TIDAK Diatur',
      'plus': 'Tambah',
      'assignedVariable': 'Variabel yang Ditetapkan',
      'clear': 'Jelas',
      'setParameter': 'Atur parameter...',
      'append': 'Menambahkan',
      'setVariable': 'Atur Variabel',
    },
    tool: {
      outputVars: {
        files: {
          transfer_method: 'Metode transfer. Nilai adalah remote_url atau local_file',
          url: 'URL gambar',
          title: 'File yang dihasilkan alat',
          upload_file_id: 'Unggah id file',
          type: 'Jenis dukungan. Sekarang hanya mendukung gambar',
        },
        json: 'JSON yang dihasilkan alat',
        text: 'Konten yang dihasilkan alat',
      },
      insertPlaceholder2: 'Sisipkan variabel',
      insertPlaceholder1: 'Ketik atau tekan',
      authorize: 'Otorisasi',
      settings: 'Pengaturan',
      inputVars: 'Variabel Masukan',
    },
    questionClassifiers: {
      outputVars: {
        usage: 'Informasi Penggunaan Model',
        className: 'Nama Kelas',
      },
      inputVars: 'Variabel Masukan',
      topicPlaceholder: 'Tulis nama topik Anda',
      addClass: 'Tambahkan Kelas',
      classNamePlaceholder: 'Tulis nama kelas Anda',
      instruction: 'Ajaran',
      advancedSetting: 'Pengaturan Lanjutan',
      model: 'pola',
      topicName: 'Nama Topik',
      instructionTip: 'Masukkan instruksi tambahan untuk membantu pengklasifikasi pertanyaan lebih memahami cara mengkategorikan pertanyaan.',
      instructionPlaceholder: 'Tulis instruksi Anda',
      class: 'Kelas',
    },
    parameterExtractor: {
      outputVars: {
        errorReason: 'Alasan Kesalahan',
        isSuccess: 'Apakah Success.Pada keberhasilan nilainya adalah 1, pada kegagalan nilainya adalah 0.',
        usage: 'Informasi Penggunaan Model',
      },
      addExtractParameterContent: {
        name: 'Nama',
        description: 'Deskripsi',
        typePlaceholder: 'Ekstrak Jenis Parameter',
        descriptionPlaceholder: 'Ekstrak Deskripsi Parameter',
        requiredContent: 'Diperlukan hanya digunakan sebagai referensi untuk inferensi model, dan bukan untuk validasi wajib output parameter.',
        namePlaceholder: 'Ekstrak Nama Parameter',
        type: 'Jenis',
        required: 'Diperlukan',
      },
      inputVar: 'Variabel Masukan',
      instructionTip: 'Masukkan instruksi tambahan untuk membantu ekstraktor parameter memahami cara mengekstrak parameter.',
      instruction: 'Ajaran',
      extractParameters: 'Ekstrak Parameter',
      addExtractParameter: 'Tambahkan Parameter Ekstrak',
      reasoningMode: 'Mode Penalaran',
      reasoningModeTip: 'Anda dapat memilih mode penalaran yang sesuai berdasarkan kemampuan model untuk menanggapi instruksi untuk pemanggilan fungsi atau perintah.',
      importFromTool: 'Impor dari alat',
      extractParametersNotSet: 'Ekstrak Parameter tidak diatur',
      advancedSetting: 'Pengaturan Lanjutan',
    },
    iteration: {
      ErrorMethod: {
        removeAbnormalOutput: 'Hapus Output Abnormal',
        operationTerminated: 'Diakhiri',
        continueOnError: 'Lanjutkan pada Kesalahan',
      },
      output: 'Variabel Keluaran',
      deleteDesc: 'Menghapus simpul iterasi akan menghapus semua simpul turunan',
      parallelModeUpper: 'MODE PARALEL',
      parallelPanelDesc: 'Dalam mode paralel, tugas dalam iterasi mendukung eksekusi paralel.',
      MaxParallelismTitle: 'Paralelisme maksimum',
      currentIteration: 'Iterasi Saat Ini',
      input: 'Masukan',
      errorResponseMethod: 'Metode respons kesalahan',
      comma: ',',
      parallelModeEnableDesc: 'Dalam mode paralel, tugas dalam iterasi mendukung eksekusi paralel. Anda dapat mengonfigurasi ini di panel properti di sebelah kanan.',
      parallelMode: 'Mode Paralel',
      MaxParallelismDesc: 'Paralelisme maksimum digunakan untuk mengontrol jumlah tugas yang dijalankan secara bersamaan dalam satu iterasi.',
      deleteTitle: 'Hapus Node Iterasi?',
      parallelModeEnableTitle: 'Mode Paralel Diaktifkan',
      answerNodeWarningDesc: 'Peringatan mode paralel: Simpul jawaban, penetapan variabel percakapan, dan operasi baca/tulis persisten dalam iterasi dapat menyebabkan pengecualian.',
      iteration_one: '{{count}} Iterasi',
      iteration_other: '{{count}} Iterasi',
      error_one: 'Kesalahan {{count}}',
      error_other: 'Kesalahan {{count}}',
      flattenOutput: 'Ratakan Keluaran',
      flattenOutputDesc: 'Saat diaktifkan, jika semua output iterasi berupa array, mereka akan digabung menjadi satu array tunggal. Saat dinonaktifkan, output akan mempertahankan struktur array bersarang.',
    },
    loop: {
      ErrorMethod: {
        continueOnError: 'Lanjutkan pada Kesalahan',
        removeAbnormalOutput: 'Hapus Output Abnormal',
        operationTerminated: 'Diakhiri',
      },
      inputMode: 'Mode Masukan',
      deleteDesc: 'Menghapus simpul perulangan akan menghapus semua simpul turunan',
      input: 'Masukan',
      deleteTitle: 'Hapus Simpul Loop?',
      exitConditionTip: 'Simpul loop membutuhkan setidaknya satu kondisi keluar',
      variableName: 'Nama Variabel',
      loopVariables: 'Variabel Loop',
      setLoopVariables: 'Mengatur variabel dalam cakupan loop',
      breakConditionTip: 'Hanya variabel dalam loop dengan kondisi penghentian dan variabel percakapan yang dapat direferensikan.',
      loopNode: 'Loop Node',
      output: 'Variabel Keluaran',
      loopMaxCount: 'Jumlah Loop Maksimum',
      currentLoop: 'Loop Arus',
      breakCondition: 'Kondisi Penghentian Loop',
      errorResponseMethod: 'Metode Respons Kesalahan',
      comma: ',',
      finalLoopVariables: 'Variabel Loop Akhir',
      initialLoopVariables: 'Variabel Loop Awal',
      loop_one: '{{count}} Loop',
      loop_other: '{{count}} Perulangan',
      error_one: 'Kesalahan {{count}}',
      error_other: 'Kesalahan {{count}}',
      loopMaxCountError: 'Harap masukkan jumlah loop maksimum yang valid, mulai dari 1 hingga {{maxCount}}',
      currentLoopCount: 'Jumlah putaran saat ini: {{count}}',
      totalLoopCount: 'Jumlah total loop: {{count}}',
    },
    note: {
      editor: {
        bold: 'Berani',
        enterUrl: 'Masukkan URL...',
        medium: 'Sedang',
        strikethrough: 'Coret',
        openLink: 'Buka',
        unlink: 'Membatalkan tautan',
        showAuthor: 'Tampilkan Penulis',
        large: 'Besar',
        placeholder: 'Tulis catatan Anda...',
        invalidUrl: 'URL tidak valid',
        small: 'Kecil',
        italic: 'Miring',
        link: 'Tautan',
        bulletList: 'Daftar Poin',
      },
      addNote: 'Tambahkan Catatan',
    },
    docExtractor: {
      outputVars: {
        text: 'Teks yang diekstrak',
      },
      learnMore: 'Pelajari lebih lanjut',
      inputVar: 'Variabel Masukan',
      supportFileTypes: 'Jenis file yang didukung: {{types}}.',
    },
    listFilter: {
      outputVars: {
        first_record: 'Catatan pertama',
        result: 'Hasil filter',
        last_record: 'Catatan terakhir',
      },
      filterConditionKey: 'Kunci Kondisi Filter',
      filterConditionComparisonValue: 'Nilai Kondisi Filter',
      filterConditionComparisonOperator: 'Operator Perbandingan Kondisi Filter',
      selectVariableKeyPlaceholder: 'Pilih kunci sub variabel',
      orderBy: 'Pesan oleh',
      desc: 'DESC',
      extractsCondition: 'Ekstrak item N',
      asc: 'ASC',
      limit: 'N Teratas',
      inputVar: 'Variabel Masukan',
      filterCondition: 'Kondisi Filter',
    },
    agent: {
      strategy: {
        tooltip: 'Strategi Agen yang berbeda menentukan bagaimana sistem merencanakan dan menjalankan panggilan alat multi-langkah',
        searchPlaceholder: 'Strategi agen pencarian',
        configureTip: 'Silakan konfigurasikan strategi agen.',
        shortLabel: 'Strategi',
        selectTip: 'Pilih strategi agen',
        configureTipDesc: 'Setelah mengonfigurasi strategi agen, node ini akan secara otomatis memuat konfigurasi yang tersisa. Strategi tersebut akan mempengaruhi mekanisme penalaran alat multi-langkah.',
        label: 'Strategi Agen',
      },
      pluginInstaller: {
        installing: 'Menginstal',
        install: 'Pasang',
      },
      modelNotInMarketplace: {
        title: 'Model tidak dipasang',
        desc: 'Model ini diinstal dari repositori Lokal atau GitHub. Silakan gunakan setelah pemasangan.',
        manageInPlugins: 'Kelola di Plugin',
      },
      modelNotSupport: {
        title: 'Model yang Tidak Didukung',
        descForVersionSwitch: 'Versi plugin yang diinstal tidak menyediakan model ini. Klik untuk beralih versi.',
        desc: 'Versi plugin yang diinstal tidak menyediakan model ini.',
      },
      modelSelectorTooltips: {
        deprecated: 'Model ini tidak digunakan lagi',
      },
      outputVars: {
        files: {
          transfer_method: 'Metode transfer. Nilai adalah remote_url atau local_file',
          type: 'Jenis dukungan. Sekarang hanya mendukung gambar',
          upload_file_id: 'Unggah id file',
          title: 'file yang dihasilkan agen',
          url: 'URL gambar',
        },
        usage: 'Informasi Penggunaan Model',
        text: 'Konten yang dihasilkan agen',
        json: 'JSON yang dihasilkan agen',
      },
      checkList: {
        strategyNotSelected: 'Strategi tidak dipilih',
      },
      installPlugin: {
        title: 'Instal Plugin',
        changelog: 'Log perubahan',
        cancel: 'Membatalkan',
        install: 'Pasang',
        desc: 'Tentang menginstal plugin berikut',
      },
      maxIterations: 'Iterasi Maks',
      configureModel: 'Mengonfigurasi Model',
      model: 'pola',
      strategyNotSet: 'Strategi agen tidak ditetapkan',
      toolbox: 'Toolbox',
      tools: 'Perkakas',
      pluginNotInstalledDesc: 'Plugin ini diinstal dari GitHub. Silakan buka Plugins untuk menginstal ulang',
      learnMore: 'Pelajari lebih lanjut',
      notAuthorized: 'Tidak Berwenang',
      strategyNotFoundDescAndSwitchVersion: 'Versi plugin yang diinstal tidak menyediakan strategi ini. Klik untuk beralih versi.',
      modelNotInstallTooltip: 'Model ini tidak dipasang',
      pluginNotFoundDesc: 'Plugin ini diinstal dari GitHub. Silakan buka Plugins untuk menginstal ulang',
      modelNotSelected: 'Model tidak dipilih',
      unsupportedStrategy: 'Strategi yang tidak didukung',
      pluginNotInstalled: 'Plugin ini tidak diinstal',
      clickToViewParameterSchema: 'Klik untuk melihat skema parameter',
      linkToPlugin: 'Tautan ke Plugin',
      parameterSchema: 'Skema Parameter',
      strategyNotFoundDesc: 'Versi plugin yang diinstal tidak menyediakan strategi ini.',
      toolNotInstallTooltip: '{{tool}} tidak terpasang',
      toolNotAuthorizedTooltip: '{{tool}} Tidak Berwenang',
      strategyNotInstallTooltip: '{{strategy}} tidak terpasang',
    },
    dataSource: {
      add: 'Menambahkan sumber data',
      supportedFileFormatsPlaceholder: 'Ekstensi file, e.g. doc',
      supportedFileFormats: 'Format file yang didukung',
    },
    knowledgeBase: {
      chunkStructureTip: {
        learnMore: 'Pelajari lebih lanjut',
        title: 'Silakan pilih struktur potongan',
        message: 'Basis Pengetahuan Dify mendukung tiga struktur pemotongan: Umum, Induk-anak, dan Tanya Jawab. Setiap basis pengetahuan hanya dapat memiliki satu struktur. Output dari simpul sebelumnya harus selaras dengan struktur potongan yang dipilih. Perhatikan bahwa pilihan struktur chunking memengaruhi metode indeks yang tersedia.',
      },
      chooseChunkStructure: 'Pilih struktur potongan',
      aboutRetrieval: 'tentang metode pengambilan.',
      chunkIsRequired: 'Struktur potongan diperlukan',
      changeChunkStructure: 'Ubah Struktur Potongan',
      retrievalSettingIsRequired: 'Pengaturan pengambilan diperlukan',
      indexMethodIsRequired: 'Metode indeks diperlukan',
      chunkStructure: 'Struktur Potongan',
      chunksInput: 'Potongan',
      chunksInputTip: 'Variabel input dari node basis pengetahuan adalah Chunks. Tipe variabel adalah objek dengan Skema JSON tertentu yang harus konsisten dengan struktur chunk yang dipilih.',
      chunksVariableIsRequired: 'Variabel Chunks diperlukan',
      rerankingModelIsRequired: 'Model reranking diperlukan',
      embeddingModelIsRequired: 'Model embedding diperlukan',
      rerankingModelIsInvalid: 'Model reranking tidak valid',
      embeddingModelIsInvalid: 'Model embedding tidak valid',
    },
    triggerPlugin: {
      authorized: 'Otorisasi',
      notConfigured: 'Belum Dikonfigurasi',
      notAuthorized: 'Tidak Diizinkan',
      selectSubscription: 'Pilih Langganan',
      availableSubscriptions: 'Langganan Tersedia',
      addSubscription: 'Tambah Langganan Baru',
      removeSubscription: 'Hapus Langganan',
      subscriptionRemoved: 'Langganan berhasil dihapus',
      error: 'Kesalahan',
      configuration: 'Konfigurasi',
      remove: 'Hapus',
      or: 'ATAU',
      useOAuth: 'Gunakan OAuth',
      useApiKey: 'Gunakan Kunci API',
      authenticationFailed: 'Autentikasi gagal',
      authenticationSuccess: 'Autentikasi berhasil',
      oauthConfigFailed: 'Konfigurasi OAuth gagal',
      configureOAuthClient: 'Konfigurasikan Klien OAuth',
      oauthClientDescription: 'Konfigurasikan kredensial klien OAuth untuk mengaktifkan otentikasi',
      oauthClientSaved: 'Konfigurasi klien OAuth berhasil disimpan',
      configureApiKey: 'Konfigurasikan Kunci API',
      apiKeyDescription: 'Konfigurasikan kredensial kunci API untuk otentikasi',
      apiKeyConfigured: 'Kunci API berhasil dikonfigurasi',
      configurationFailed: 'Konfigurasi gagal',
      failedToStart: 'Gagal memulai alur autentikasi',
      credentialsVerified: 'Kredensial berhasil diverifikasi',
      credentialVerificationFailed: 'Verifikasi kredensial gagal',
      verifyAndContinue: 'Verifikasi & Lanjutkan',
      configureParameters: 'Konfigurasikan Parameter',
      parametersDescription: 'Konfigurasikan parameter dan properti pemicu',
      configurationComplete: 'Konfigurasi Selesai',
      configurationCompleteDescription: 'Pemicu Anda telah dikonfigurasi dengan sukses',
      configurationCompleteMessage: 'Konfigurasi pemicu Anda sekarang telah selesai dan siap digunakan.',
      parameters: 'Parameter',
      properties: 'Properti',
      propertiesDescription: 'Properti konfigurasi tambahan untuk pemicu ini',
      noConfigurationRequired: 'Tidak diperlukan pengaturan tambahan untuk pemicu ini.',
      subscriptionName: 'Nama Langganan',
      subscriptionNameDescription: 'Masukkan nama unik untuk langganan pemicu ini',
      subscriptionNamePlaceholder: 'Masukkan nama langganan...',
      subscriptionNameRequired: 'Nama langganan wajib diisi',
      subscriptionRequired: 'Berlangganan diperlukan',
    },
    triggerSchedule: {
      title: 'Jadwal',
      nodeTitle: 'Pemicu Jadwal',
      notConfigured: 'Belum dikonfigurasi',
      useCronExpression: 'Gunakan ekspresi cron',
      useVisualPicker: 'Gunakan pemilih visual',
      frequency: {
        label: 'FREKUENSI',
        hourly: 'Per jam',
        daily: 'Harian',
        weekly: 'Mingguan',
        monthly: 'Bulanan',
      },
      selectFrequency: 'Pilih frekuensi',
      frequencyLabel: 'Frekuensi',
      nextExecution: 'Eksekusi berikutnya',
      weekdays: 'Hari kerja',
      time: 'Waktu',
      cronExpression: 'Ekspresi Cron',
      nextExecutionTime: 'WAKTU EKSEKUSI BERIKUTNYA',
      nextExecutionTimes: '5 waktu eksekusi berikutnya',
      startTime: 'Waktu Mulai',
      executeNow: 'Eksekusi sekarang',
      selectDateTime: 'Pilih Tanggal & Waktu',
      hours: 'Jam',
      minutes: 'Menit',
      onMinute: 'Dalam Sejuta',
      days: 'Hari',
      lastDay: 'Hari terakhir',
      lastDayTooltip: 'Tidak semua bulan memiliki 31 hari. Gunakan opsi \'hari terakhir\' untuk memilih hari terakhir setiap bulan.',
      mode: 'Mode',
      timezone: 'Zona waktu',
      visualConfig: 'Konfigurasi Visual',
      monthlyDay: 'Hari Bulanan',
      executionTime: 'Waktu Eksekusi',
      invalidTimezone: 'Zona waktu tidak valid',
      invalidCronExpression: 'Ekspresi cron tidak valid',
      noValidExecutionTime: 'Tidak dapat menghitung waktu eksekusi yang valid',
      executionTimeCalculationError: 'Gagal menghitung waktu eksekusi',
      invalidFrequency: 'Frekuensi tidak valid',
      invalidStartTime: 'Waktu mulai tidak valid',
      startTimeMustBeFuture: 'Waktu mulai harus di masa depan',
      invalidTimeFormat: 'Format waktu tidak valid (diharapkan HH:MM AM/PM)',
      invalidWeekday: 'Hari kerja tidak valid: {{weekday}}',
      invalidMonthlyDay: 'Hari bulanan harus antara 1-31 atau "terakhir"',
      invalidOnMinute: 'Menit harus berada di antara 0-59',
      invalidExecutionTime: 'Waktu eksekusi tidak valid',
      executionTimeMustBeFuture: 'Waktu eksekusi harus di masa depan',
    },
    triggerWebhook: {
      title: 'Pemicu Webhook',
      nodeTitle: '🔗 Pemicu Webhook',
      configPlaceholder: 'Konfigurasi pemicu webhook akan diterapkan di sini',
      webhookUrl: 'URL Webhook',
      webhookUrlPlaceholder: 'Klik buat untuk membuat URL webhook',
      generate: 'Hasilkan',
      copy: 'Salin',
      test: 'Tes',
      urlGenerated: 'URL Webhook berhasil dibuat',
      urlGenerationFailed: 'Gagal membuat URL webhook',
      urlCopied: 'URL disalin ke papan klip',
      method: 'Metode',
      contentType: 'Jenis Konten',
      queryParameters: 'Parameter Kueri',
      headerParameters: 'Parameter Header',
      requestBodyParameters: 'Parameter Body Permintaan',
      parameterName: 'Nama variabel',
      varName: 'Nama variabel',
      varType: 'Jenis',
      varNamePlaceholder: 'Masukkan nama variabel...',
      required: 'Diperlukan',
      addParameter: 'Tambahkan',
      addHeader: 'Tambahkan',
      noParameters: 'Tidak ada parameter yang dikonfigurasi',
      noQueryParameters: 'Tidak ada parameter kueri yang dikonfigurasi',
      noHeaders: 'Tidak ada header yang dikonfigurasi',
      noBodyParameters: 'Tidak ada parameter tubuh yang dikonfigurasi',
      debugUrlTitle: 'Untuk percobaan, selalu gunakan URL ini',
      debugUrlCopy: 'Klik untuk menyalin',
      debugUrlCopied: 'Disalin!',
      debugUrlPrivateAddressWarning: 'URL ini tampaknya merupakan alamat internal, yang mungkin menyebabkan permintaan webhook gagal. Anda dapat mengubah TRIGGER_URL ke alamat publik.',
      errorHandling: 'Penanganan Kesalahan',
      errorStrategy: 'Penanganan Kesalahan',
      responseConfiguration: 'Tanggapan',
      asyncMode: 'Mode Asinkron',
      statusCode: 'Kode Status',
      responseBody: 'Isi Tanggapan',
      responseBodyPlaceholder: 'Tulis isi tanggapan Anda di sini',
      headers: 'Header',
      validation: {
        webhookUrlRequired: 'URL Webhook diperlukan',
        invalidParameterType: 'Tipe parameter "{{type}}" tidak valid untuk parameter "{{name}}"',
      },
    },
  },
  tracing: {
    stopBy: 'Singgah di {{user}}',
  },
  versionHistory: {
    filter: {
      empty: 'Tidak ada riwayat versi yang cocok ditemukan',
      onlyYours: 'Hanya milik Anda',
      reset: 'Atur Ulang Filter',
      onlyShowNamedVersions: 'Hanya tampilkan versi bernama',
      all: 'Semua',
    },
    editField: {
      releaseNotes: 'Catatan Rilis',
      title: 'Titel',
      titleLengthLimit: 'Judul tidak boleh melebihi {{limit}} karakter',
      releaseNotesLengthLimit: 'Catatan rilis tidak boleh melebihi {{limit}} karakter',
    },
    action: {
      copyIdSuccess: 'ID disalin ke clipboard',
      deleteFailure: 'Gagal menghapus versi',
      updateSuccess: 'Versi diperbarui',
      updateFailure: 'Gagal memperbarui versi',
      restoreSuccess: 'Versi dipulihkan',
      deleteSuccess: 'Versi dihapus',
      restoreFailure: 'Gagal memulihkan versi',
    },
    copyId: 'Salin ID',
    latest: 'Terbaru',
    nameThisVersion: 'Beri nama versi ini',
    restorationTip: 'Setelah pemulihan versi, draf saat ini akan ditimpa.',
    releaseNotesPlaceholder: 'Menjelaskan apa yang berubah',
    deletionTip: 'Penghapusan tidak dapat diubah, harap konfirmasi.',
    currentDraft: 'Draf Saat Ini',
    editVersionInfo: 'Mengedit info versi',
    title: 'Versi',
    defaultName: 'Versi Tanpa Judul',
  },
  debug: {
    noData: {
      description: 'Hasil putaran terakhir akan ditampilkan di sini',
      runThisNode: 'Jalankan simpul ini',
    },
    variableInspect: {
      trigger: {
        stop: 'Berhenti lari',
        cached: 'Melihat variabel yang di-cache',
        running: 'Status berjalan caching',
        normal: 'Inspeksi Variabel',
        clear: 'Jelas',
      },
      systemNode: 'Sistem',
      chatNode: 'Percakapan',
      clearAll: 'Setel ulang semua',
      edited: 'Diedit',
      envNode: 'Lingkungan',
      title: 'Inspeksi Variabel',
      clearNode: 'Hapus variabel cache',
      view: 'Lihat log',
      emptyLink: 'Pelajari lebih lanjut',
      reset: 'Atur ulang ke nilai eksekusi terakhir',
      resetConversationVar: 'Mengatur ulang variabel percakapan ke nilai default',
      emptyTip: 'Setelah melangkah melalui simpul di kanvas atau menjalankan simpul langkah demi langkah, Anda dapat melihat nilai variabel simpul saat ini di Inspeksi Variabel',
      export: 'ekspor',
      largeDataNoExport: 'Data besar - hanya pratinjau sebagian',
      exportToolTip: 'Ekspor Variabel sebagai File',
      largeData: 'Data besar, pratinjau baca-saja. Ekspor untuk melihat semua.',
      listening: {
        title: 'Mendengarkan peristiwa dari pemicu...',
        tip: 'Sekarang Anda dapat mensimulasikan pemicu acara dengan mengirim permintaan uji ke endpoint HTTP {{nodeName}} atau menggunakannya sebagai URL callback untuk debugging acara secara langsung. Semua output dapat dilihat langsung di Variable Inspector.',
        tipPlugin: 'Sekarang Anda dapat membuat acara di {{- pluginName}}, dan mengambil hasil dari acara ini di Inspektur Variabel.',
        tipSchedule: 'Mendengarkan acara dari pemicu jadwal.\nJalankan berikutnya yang dijadwalkan: {{nextTriggerTime}}',
        tipFallback: 'Tunggu event pemicu yang masuk. Output akan muncul di sini.',
        defaultNodeName: 'pemicu ini',
        defaultPluginName: 'pemicu plugin ini',
        defaultScheduleTime: 'Belum dikonfigurasi',
        selectedTriggers: 'pemicu yang dipilih',
        stopButton: 'Berhenti',
      },
    },
    relations: {
      noDependents: 'Tidak ada tanggungan',
      dependentsDescription: 'Node yang mengandalkan node ini',
      noDependencies: 'Tidak ada dependensi',
      dependencies: 'Dependensi',
      dependenciesDescription: 'Node yang diandalkan oleh node ini',
      dependents: 'Tanggungan',
    },
    settingsTab: 'Pengaturan',
    copyLastRunError: 'Gagal menyalin input eksekusi terakhir',
    copyLastRun: 'Salin Eksekusi Terakhir',
    noMatchingInputsFound: 'Tidak ada input yang cocok yang ditemukan dari eksekusi terakhir',
    lastRunTab: 'Lari Terakhir',
    relationsTab: 'Hubungan',
    lastOutput: 'Keluaran Terakhir',
    noLastRunFound: 'Tidak ada eksekusi sebelumnya ditemukan',
    lastRunInputsCopied: '{{count}} input yang disalin dari proses terakhir',
  },
  sidebar: {
    exportWarning: 'Ekspor Versi Tersimpan Saat Ini',
    exportWarningDesc: 'Ini akan mengekspor versi terkini dari alur kerja Anda yang telah disimpan. Jika Anda memiliki perubahan yang belum disimpan di editor, harap simpan terlebih dahulu dengan menggunakan opsi ekspor di kanvas alur kerja.',
  },
  publishLimit: {
    startNodeTitlePrefix: 'Tingkatkan ke',
    startNodeTitleSuffix: 'buka kunci pemicu tak terbatas per alur kerja',
    startNodeDesc: 'Anda telah mencapai batas 2 pemicu per alur kerja untuk paket ini. Tingkatkan paket untuk mempublikasikan alur kerja ini.',
  },
  error: {
    startNodeRequired: 'Silakan tambahkan node awal terlebih dahulu sebelum {{operation}}',
    operations: {
      connectingNodes: 'menghubungkan node',
      addingNodes: 'menambahkan node',
      modifyingWorkflow: 'memodifikasi alur kerja',
      updatingWorkflow: 'memperbarui alur kerja',
    },
  },
  customWebhook: 'Webhook Kustom',
  difyTeam: 'Tim Dify',
  triggerStatus: {
    enabled: 'PEICU',
    disabled: 'PEICU • DINONAKTIFKAN',
  },
  entryNodeStatus: {
    enabled: 'MULAI',
    disabled: 'MULAI • NONAKTIF',
  },
  onboarding: {
    title: 'Pilih node awal untuk memulai',
    description: 'Node awal yang berbeda memiliki kemampuan yang berbeda. Jangan khawatir, kamu selalu bisa mengubahnya nanti.',
    userInputFull: 'Input Pengguna (node awal asli)',
    userInputDescription: 'Node awal yang memungkinkan pengaturan variabel input pengguna, dengan aplikasi web, API layanan, server MCP, dan alur kerja sebagai kemampuan alat.',
    trigger: 'Pemicu',
    triggerDescription: 'Pemicu dapat berfungsi sebagai node awal dari alur kerja, seperti tugas terjadwal, webhook kustom, atau integrasi dengan aplikasi lain.',
    back: 'Kembali',
    learnMore: 'Pelajari lebih lanjut',
    aboutStartNode: 'tentang node awal.',
    escTip: {
      press: 'Tekan',
      key: 'esc',
      toDismiss: 'memberhentikan',
    },
  },
}

export default translation
