chore: add missing translations (#28631)

This commit is contained in:
yyh
2025-11-25 14:52:17 +08:00
committed by GitHub
parent 58be008676
commit 82dac2eba0
250 changed files with 9194 additions and 324 deletions

View File

@@ -92,6 +92,7 @@ const translation = {
title: 'Anotasi',
name: 'Balas Anotasi',
embeddingModelSwitchTip: 'Model vektorisasi teks anotasi, model switching akan disematkan kembali, menghasilkan biaya tambahan.',
editBy: 'Jawaban diedit oleh {{author}}',
}
export default translation

View File

@@ -113,6 +113,7 @@ const translation = {
deleteContextVarTip: 'Variabel ini telah ditetapkan sebagai variabel kueri konteks, dan menghapusnya akan berdampak pada penggunaan normal Pengetahuan. Jika Anda masih perlu menghapusnya, silakan pilih kembali di bagian konteks.',
ok: 'OKE',
noVarTip: 'silakan buat variabel di bawah bagian Variabel',
deleteContextVarTitle: 'Hapus variabel “{{varName}}”?',
},
notSupportSelectMulti: 'Saat ini hanya mendukung satu Pengetahuan',
selectTitle: 'Pilih referensi Pengetahuan',
@@ -140,6 +141,7 @@ const translation = {
},
tips: 'Alat menyediakan metode panggilan API standar, mengambil input atau variabel pengguna sebagai parameter permintaan untuk mengkueri data eksternal sebagai konteks.',
title: 'Perkakas',
toolsInUse: '{{count}} alat yang digunakan',
},
conversationHistory: {
editModal: {
@@ -150,6 +152,7 @@ const translation = {
description: 'Menetapkan nama awalan untuk peran percakapan',
title: 'Riwayat Percakapan',
learnMore: 'Pelajari lebih lanjut',
tip: 'Riwayat Percakapan tidak diaktifkan, silakan tambahkan <histories> di prompt di atas.',
},
toolbox: {
title: 'TOOLBOX',
@@ -316,6 +319,8 @@ const translation = {
waitForResponse: 'Harap tunggu hingga respons terhadap pesan sebelumnya selesai.',
waitForBatchResponse: 'Harap tunggu hingga respons terhadap tugas batch selesai.',
waitForFileUpload: 'Harap tunggu file/file diunggah',
nameOfKeyRequired: 'nama kunci: {{key}} diperlukan',
valueOfVarRequired: 'Nilai {{key}} tidak boleh kosong',
},
warningMessage: {
timeoutExceeded: 'Hasil tidak ditampilkan karena batas waktu. Silakan lihat log untuk mengumpulkan hasil lengkap.',
@@ -328,7 +333,13 @@ const translation = {
key: 'Kunci Variabel',
name: 'Nama Bidang Input Pengguna',
},
varKeyError: {},
varKeyError: {
canNoBeEmpty: '{{key}} wajib diisi',
tooLong: '{{key}} terlalu panjang. Tidak boleh lebih dari 30 karakter',
notValid: '{{key}} tidak valid. Hanya boleh berisi huruf, angka, dan garis bawah',
notStartWithNumber: '{{key}} tidak dapat diawali dengan angka',
keyAlreadyExists: '{{key}} sudah ada',
},
otherError: {
queryNoBeEmpty: 'Kueri harus diatur dalam prompt',
historyNoBeEmpty: 'Riwayat percakapan harus diatur dalam prompt',
@@ -406,6 +417,9 @@ const translation = {
'startSelectedOption': 'Mulai opsi yang dipilih',
'unitPlaceholder': 'Tampilkan unit setelah angka, misalnya token',
'placeholderPlaceholder': 'Masukkan teks untuk ditampilkan saat bidang kosong',
'description': 'Pengaturan untuk variabel {{varName}}',
'notSet': 'Belum diatur, coba ketik {{input}} di prompt awalan',
'maxNumberTip': 'Dokumen < {{docLimit}}, gambar < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}',
},
vision: {
visionSettings: {
@@ -418,6 +432,7 @@ const translation = {
uploadLimit: 'Batas Unggahan',
resolution: 'Resolusi',
url: 'URL',
resolutionTooltip: 'res rendah akan memungkinkan model menerima versi gambar resolusi rendah 512 x 512, dan merepresentasikan gambar dengan anggaran 65 token. Ini memungkinkan API memberikan respons lebih cepat dan menggunakan lebih sedikit token input untuk kasus penggunaan yang tidak memerlukan detail tinggi.\n\nres tinggi pertama-tama memungkinkan model melihat gambar resolusi rendah dan kemudian membuat potongan gambar yang lebih detail sebagai kotak 512px berdasarkan ukuran gambar input. Setiap potongan detail menggunakan dua kali anggaran token sehingga totalnya menjadi 129 token.',
},
settings: 'Pengaturan',
description: 'Aktifkan Penglihatan akan memungkinkan model untuk mengambil gambar dan menjawab pertanyaan tentangnya.',
@@ -446,6 +461,10 @@ const translation = {
title: 'Pembuka Percakapan',
noDataPlaceHolder: 'Memulai percakapan dengan pengguna dapat membantu AI menjalin hubungan yang lebih dekat dengan mereka dalam aplikasi percakapan.',
tooShort: 'Setidaknya 20 kata prompt awal diperlukan untuk menghasilkan pidato pembuka untuk percakapan.',
placeholder: 'Tulis pesan pembuka Anda di sini, Anda bisa menggunakan variabel, coba ketik {{variable}}.',
openingQuestionPlaceholder: 'Anda bisa menggunakan variabel, coba ketik {{variable}}.',
varTip: 'Anda dapat menggunakan variabel, coba ketik {{variable}}',
notIncludeKey: 'Prompt awal tidak menyertakan variabel: {{key}}. Harap tambahkan ke prompt awal.',
},
modelConfig: {
modeType: {
@@ -538,6 +557,8 @@ const translation = {
duplicateModel: 'Duplikat',
result: 'Teks Keluaran',
noResult: 'Output akan ditampilkan di sini.',
promptTip: 'Prompts membimbing respons AI dengan instruksi dan batasan. Masukkan variabel seperti {{input}}. Prompt ini tidak akan terlihat oleh pengguna.',
notSetVar: 'Variabel memungkinkan pengguna untuk memasukkan kata pemicu atau ucapan pembuka saat mengisi formulir. Anda dapat mencoba memasukkan "{{input}}" pada kata pemicu.',
}
export default translation

View File

@@ -16,6 +16,7 @@ const translation = {
input: 'Masukan',
status: 'KEADAAN',
runtime: 'WAKTU BERJALAN',
triggered_from: 'DIPICU OLEH',
},
pagination: {
previous: 'Sebelumnya',
@@ -24,6 +25,7 @@ const translation = {
empty: {
element: {
title: 'Apakah ada yang ada di sana?',
content: 'Amati dan anotasi interaksi antara pengguna akhir dan aplikasi AI di sini untuk terus meningkatkan akurasi AI. Anda dapat mencoba <shareLink>berbagi</shareLink> atau <testLink>menguji</testLink> Aplikasi Web sendiri, kemudian kembali ke halaman ini.',
},
noChat: 'Belum ada percakapan',
noOutput: 'Tidak ada keluaran',
@@ -48,6 +50,7 @@ const translation = {
second: 's',
promptTemplateBeforeChat: 'Templat Prompt Sebelum Obrolan · Sebagai Pesan Sistem',
uploadImages: 'Gambar yang Diunggah',
annotationTip: 'Peningkatan Ditandai oleh {{user}}',
},
filter: {
period: {
@@ -66,6 +69,7 @@ const translation = {
annotation: {
all: 'Semua',
not_annotated: 'Tidak Beranotasi',
annotated: 'Peningkatan yang Diberi Catatan ({{count}} item)',
},
ascending: 'Naik',
descending: 'Turun',
@@ -94,6 +98,15 @@ const translation = {
promptLog: 'Prompt Log',
workflowSubtitle: 'Log mencatat pengoperasian Automate.',
workflowTitle: 'Log Alur Kerja',
triggerBy: {
debugging: 'Men-debug',
appRun: 'Aplikasi Web',
webhook: 'Webhook',
schedule: 'Jadwal',
plugin: 'Plugin',
ragPipelineRun: 'Rangkaian RAG',
ragPipelineDebugging: 'Debugging RAG',
},
}
export default translation

View File

@@ -9,6 +9,7 @@ const translation = {
cloud: {
trial: {
description: 'Kuota uji coba disediakan untuk tujuan pengujian Anda. Sebelum kuota uji coba habis, harap siapkan penyedia model Anda sendiri atau beli kuota tambahan.',
title: 'Anda sedang menggunakan kuota percobaan {{providerName}}.',
},
exhausted: {
title: 'Kuota uji coba Anda telah habis, silakan atur APIKey Anda.',
@@ -53,6 +54,7 @@ const translation = {
privacyPolicyPlaceholder: 'Masukkan tautan kebijakan privasi',
customDisclaimerTip: 'Teks penafian khusus akan ditampilkan di sisi klien, memberikan informasi tambahan tentang aplikasi',
copyright: 'Hak cipta',
privacyPolicyTip: 'Membantu pengunjung memahami data yang dikumpulkan aplikasi, lihat <privacyPolicyLink>Kebijakan Privasi Dify</privacyPolicyLink>.',
},
chatColorThemeInverted: 'Terbalik',
invalidPrivacyPolicy: 'Tautan kebijakan privasi tidak valid. Silakan gunakan tautan valid yang dimulai dengan http atau https',
@@ -111,7 +113,11 @@ const translation = {
preUseReminder: 'Harap aktifkan aplikasi web sebelum melanjutkan.',
regenerateNotice: 'Apakah Anda ingin membuat ulang URL publik?',
explanation: 'Aplikasi web AI siap pakai',
enableTooltip: {},
enableTooltip: {
description: 'Untuk mengaktifkan fitur ini, harap tambahkan node Input Pengguna ke kanvas. (Mungkin sudah ada di draft, berlaku setelah dipublikasikan)',
learnMore: 'Pelajari lebih lanjut',
},
title: 'Aplikasi Web',
},
apiInfo: {
accessibleAddress: 'Titik Akhir API Layanan',
@@ -124,7 +130,14 @@ const translation = {
running: 'Berjalan',
},
title: 'Ikhtisar',
triggerInfo: {},
triggerInfo: {
title: 'Pemicu',
explanation: 'Manajemen pemicu alur kerja',
triggersAdded: '{{count}} Pemicu ditambahkan',
noTriggerAdded: 'Tidak ada pemicu yang ditambahkan',
triggerStatusDescription: 'Status node pemicu muncul di sini. (Mungkin sudah ada di draf, berlaku setelah dipublikasikan)',
learnAboutTriggers: 'Pelajari tentang Pemicu',
},
disableTooltip: {
triggerMode: 'Fitur {{feature}} tidak didukung dalam mode Node Pemicu.',
},

View File

@@ -69,6 +69,8 @@ const translation = {
useTemplate: 'Gunakan template ini',
appCreateDSLErrorPart2: 'Apakah Anda ingin melanjutkan?',
import: 'Mengimpor',
foundResult: 'Hasil {{count}}',
foundResults: 'Hasil {{count}}',
},
newAppFromTemplate: {
sidebar: {
@@ -150,6 +152,9 @@ const translation = {
databricksHost: 'URL Workspace Databricks',
personalAccessToken: 'Token Akses Pribadi (lama)',
password: 'Kata sandi',
placeholder: 'Masukkan {{key}} Anda',
viewDocsLink: 'Lihat dokumen {{key}}',
removeConfirmTitle: 'Hapus konfigurasi {{key}}?',
},
expand: 'Memperluas',
disabledTip: 'Silakan konfigurasi penyedia terlebih dahulu',
@@ -218,6 +223,10 @@ const translation = {
description: 'Menetapkan izin akses aplikasi web',
title: 'Kontrol Akses Aplikasi Web',
accessLabel: 'Siapa yang memiliki akses',
groups_one: 'GRUP {{count}}',
groups_other: '{{count}} KELOMPOK',
members_one: '{{count}} ANGGOTA',
members_other: '{{count}} ANGGOTA',
},
publishApp: {
notSetDesc: 'Saat ini tidak ada yang dapat mengakses aplikasi web. Silakan atur izin.',
@@ -260,6 +269,7 @@ const translation = {
noPluginsFound: 'Tidak ada plugin yang ditemukan',
noKnowledgeBasesFound: 'Tidak ada basis pengetahuan yang ditemukan',
tryDifferentTerm: 'Coba istilah penelusuran lain',
trySpecificSearch: 'Coba {{shortcuts}} untuk pencarian spesifik',
},
groups: {
apps: 'Apps',
@@ -288,6 +298,9 @@ const translation = {
startTyping: 'Mulai mengetik untuk mencari',
selectToNavigate: 'Pilih untuk menavigasi',
pressEscToClose: 'Tekan ESC untuk menutup',
resultCount: 'hasil {{count}}',
resultCount_other: 'hasil {{count}}',
inScope: 'di {{scope}}s',
},
createApp: 'BUAT APLIKASI',
accessControl: 'Kontrol Akses Aplikasi Web',

View File

@@ -8,6 +8,7 @@ const translation = {
annotationQuota: 'Kuota Anotasi',
perMonth: 'per bulan',
triggerEvents: 'Pemicu Acara',
resetsIn: 'Diatur ulang dalam {{count,number}} hari',
},
upgradeBtn: {
encourage: 'Tingkatkan Sekarang',
@@ -42,9 +43,12 @@ const translation = {
},
messageRequest: {
tooltip: 'Kredit pesan disediakan untuk membantu Anda mencoba berbagai model OpenAI dengan mudah di Dify. Kredit digunakan berdasarkan jenis model. Setelah habis, Anda dapat beralih ke kunci API OpenAI Anda sendiri.',
title: 'kredit pesan {{count,number}}',
titlePerMonth: '{{count,number}} kredit pesan/bulan',
},
annotatedResponse: {
tooltip: 'Pengeditan manual dan anotasi respons memberikan kemampuan menjawab pertanyaan berkualitas tinggi yang dapat disesuaikan untuk aplikasi. (Hanya berlaku di aplikasi Chat)',
title: 'Batas Kuota Anotasi {{count,number}}',
},
mostPopular: 'Populer',
free: 'Bebas',
@@ -93,6 +97,8 @@ const translation = {
triggerEvents: {
unlimited: 'Peristiwa Pemicu Tak Terbatas',
tooltip: 'Jumlah peristiwa yang secara otomatis memulai alur kerja melalui pemicu Plugin, Jadwal, atau Webhook.',
sandbox: '{{count,number}} Memicu Peristiwa',
professional: '{{count,number}} Pemicu Peristiwa/bulan',
},
workflowExecution: {
priority: 'Eksekusi Alur Kerja Prioritas',
@@ -102,7 +108,21 @@ const translation = {
},
startNodes: {
unlimited: 'Pemicu/alur kerja tanpa batas',
limited: 'Hingga {{count}} Pemicu/alur kerja',
},
title: {
plans: 'rencana',
description: 'Pilih paket yang paling sesuai dengan kebutuhan tim Anda.',
},
teamWorkspace: 'Ruang Kerja Tim {{count,number}}',
teamMember_one: 'Anggota Tim {{count,number}}',
teamMember_other: 'Anggota Tim {{count,number}}',
buildApps: 'Aplikasi {{count,number}}',
documents: '{{count,number}} Dokumen Pengetahuan',
vectorSpace: '{{size}} Penyimpanan Data Pengetahuan',
documentsRequestQuota: '{{count,number}} Permintaan Pengetahuan/menit',
apiRateLimitUnit: '{{count,number}}',
logsHistory: '{{days}} Riwayat log',
},
plans: {
sandbox: {
@@ -121,8 +141,7 @@ const translation = {
for: 'Untuk Tim Berukuran Menengah',
},
community: {
features: {
},
features: ['Semua Fitur Inti Dirilis di Bawah Repositori Publik', 'Ruang Kerja Tunggal', 'Mematuhi Lisensi Sumber Terbuka Dify'],
price: 'Bebas',
for: 'Untuk Pengguna Individu, Tim Kecil, atau Proyek Non-Komersial',
name: 'Masyarakat',
@@ -131,8 +150,7 @@ const translation = {
includesTitle: 'Fitur Gratis:',
},
premium: {
features: {
},
features: ['Keandalan yang Dikelola Sendiri oleh Berbagai Penyedia Cloud', 'Ruang Kerja Tunggal', 'Kostumisasi Logo & Merek WebApp', 'Dukungan Email & Obrolan Prioritas'],
name: 'Premi',
price: 'Scalable',
priceTip: 'Berdasarkan Cloud Marketplace',
@@ -143,8 +161,7 @@ const translation = {
btnText: 'Dapatkan Premium di',
},
enterprise: {
features: {
},
features: ['Solusi Penerapan Skala Besar Kelas Perusahaan', 'Otorisasi Lisensi Komersial', 'Fitur Eksklusif Perusahaan', 'Beberapa Ruang Kerja & Manajemen Perusahaan', 'SSO', 'SLA yang dinegosiasikan oleh Mitra Dify', 'Keamanan & Kontrol Lanjutan', 'Pembaruan dan Pemeliharaan oleh Dify Secara Resmi', 'Dukungan Teknis Profesional'],
includesTitle: 'Semuanya mulai dari Premium, ditambah:',
btnText: 'Hubungi Sales',
price: 'Adat',

View File

@@ -71,13 +71,21 @@ const translation = {
confirmAction: 'Silakan konfirmasi tindakan Anda.',
yes: 'Ya',
no: 'Tidak',
noSearchResults: 'Tidak ada {{content}} yang ditemukan',
resetKeywords: 'Atur ulang kata kunci',
selectCount: '{{count}} Dipilih',
searchCount: 'Temukan {{count}} {{content}}',
noSearchCount: '0 {{content}}',
now: 'Sekarang',
},
errorMsg: {
urlError: 'URL harus dimulai dengan http:// atau https://',
fieldRequired: '{{field}} wajib diisi',
},
placeholder: {
select: 'Silakan pilih',
input: 'Silakan masuk',
search: 'Cari...',
},
voice: {
language: {
@@ -132,6 +140,7 @@ const translation = {
presence_penalty: 'Penalti kehadiran',
presence_penaltyTip: 'Berapa banyak yang harus menghukum token baru berdasarkan apakah mereka muncul dalam teks sejauh ini.\nMeningkatkan kemungkinan model untuk membicarakan topik baru.',
temperatureTip: 'Mengontrol keacakan: Menurunkan menghasilkan lebih sedikit penyelesaian acak. Saat suhu mendekati nol, model akan menjadi deterministik dan berulang.',
setToCurrentModelMaxTokenTip: 'Token maksimum diperbarui menjadi 80% dari token maksimum model saat ini {{maxToken}}.',
},
tone: {
Precise: 'Tepat',
@@ -214,6 +223,11 @@ const translation = {
verifyEmail: 'Memverifikasi email Anda saat ini',
unAvailableEmail: 'Email ini tidak tersedia untuk sementara.',
authTip: 'Setelah email Anda diubah, akun Google atau GitHub yang ditautkan ke email lama Anda tidak akan dapat lagi masuk ke akun ini.',
content1: 'Jika Anda melanjutkan, kami akan mengirim kode verifikasi ke <email>{{email}}</email> untuk autentikasi ulang.',
content2: 'Email Anda saat ini adalah <email>{{email}}</email>. Kode verifikasi telah dikirim ke alamat email ini.',
content4: 'Kami baru saja mengirimkan kode verifikasi sementara kepada Anda ke <email>{{email}}</email>.',
changeTo: 'Ubah ke {{email}}',
resendCount: 'Kirim ulang dalam {{count}} detik',
},
account: 'Rekening',
langGeniusAccount: 'Data akun',
@@ -249,6 +263,7 @@ const translation = {
password: 'Kata sandi',
deleteTip: 'Harap dicatat, setelah dikonfirmasi, sebagai Pemilik Ruang Kerja apa pun, ruang kerja Anda akan dijadwalkan dalam antrean untuk penghapusan permanen, dan semua data pengguna Anda akan diantri untuk penghapusan permanen.',
workspaceIcon: 'Ikon Ruang Kerja',
showAppLength: 'Tampilkan {{length}} aplikasi',
},
members: {
transferModal: {
@@ -265,6 +280,10 @@ const translation = {
transferLabel: 'Mentransfer kepemilikan ruang kerja ke',
resend: 'Kirim Ulang',
transferPlaceholder: 'Pilih anggota ruang kerja...',
warning: 'Anda akan mentransfer kepemilikan “{{workspace}}”. Ini akan berlaku segera dan tidak dapat dibatalkan.',
sendTip: 'Jika Anda melanjutkan, kami akan mengirim kode verifikasi ke <email>{{email}}</email> untuk autentikasi ulang.',
verifyContent: 'Email Anda saat ini adalah <email>{{email}}</email>.',
resendCount: 'Kirim ulang dalam {{count}} detik',
},
lastActive: 'TERAKHIR AKTIF',
owner: 'Pemilik',
@@ -305,6 +324,7 @@ const translation = {
editorTip: 'Dapat membangun & mengedit aplikasi',
admin: 'Admin',
normalTip: 'Hanya dapat menggunakan aplikasi, tidak dapat membuat aplikasi',
invitedAsRole: 'Diundang sebagai pengguna {{role}}',
},
feedback: {
subtitle: 'Tolong beri tahu kami apa yang salah dengan tanggapan ini',
@@ -417,6 +437,7 @@ const translation = {
},
item: {
freeQuota: 'KUOTA GRATIS',
deleteDesc: '{{modelName}} sedang digunakan sebagai model penalaran sistem. Beberapa fungsi tidak akan tersedia setelah dihapus. Harap konfirmasi.',
},
encrypted: {
back: 'Teknologi.',
@@ -507,6 +528,11 @@ const translation = {
getFreeTokens: 'Dapatkan Token gratis',
parametersInvalidRemoved: 'Beberapa parameter tidak valid dan telah dihapus',
installDataSourceProvider: 'Pasang penyedia sumber data',
noModelFound: 'Tidak ditemukan model untuk {{model}}',
modelsNum: 'Model {{num}}',
showModelsNum: 'Tampilkan {{num}} Model',
featureSupported: '{{feature}} didukung',
apiKeyRateLimit: 'Batas kecepatan tercapai, tersedia setelah {{seconds}} detik',
},
dataSource: {
notion: {
@@ -579,6 +605,8 @@ const translation = {
about: {
changeLog: 'Log perubahan',
updateNow: 'Perbarui sekarang',
nowAvailable: 'Dify {{version}} kini tersedia.',
latestAvailable: 'Dify {{version}} adalah versi terbaru yang tersedia.',
},
appMenus: {
logs: 'Log',
@@ -637,6 +665,7 @@ const translation = {
thought: 'Pikiran',
renameConversation: 'Ganti Nama Percakapan',
conversationNamePlaceholder: 'Silakan masukkan nama percakapan',
inputPlaceholder: 'Bicaralah dengan {{botName}}',
},
promptEditor: {
context: {
@@ -647,6 +676,7 @@ const translation = {
modal: {
footer: 'Anda dapat mengelola konteks di bagian Konteks di bawah.',
add: 'Tambahkan Konteks',
title: '{{num}} Pengetahuan dalam Konteks',
},
},
history: {
@@ -692,6 +722,7 @@ const translation = {
uploadFromComputerReadError: 'Pembacaan gambar gagal, silakan coba lagi.',
pasteImageLinkInvalid: 'Tautan gambar tidak valid',
pasteImageLinkInputPlaceholder: 'Tempel tautan gambar di sini',
uploadFromComputerLimit: 'Unggah gambar tidak boleh lebih dari {{size}} MB',
},
fileUploader: {
fileExtensionNotSupport: 'Ekstensi file tidak didukung',
@@ -702,6 +733,7 @@ const translation = {
pasteFileLinkInputPlaceholder: 'Masukkan URL...',
uploadFromComputerReadError: 'Pembacaan file gagal, silakan coba lagi.',
fileExtensionBlocked: 'Tipe file ini diblokir karena alasan keamanan',
uploadFromComputerLimit: 'Unggahan {{type}} tidak boleh melebihi {{size}}',
},
tag: {
noTag: 'Tidak ada tag',
@@ -721,6 +753,7 @@ const translation = {
license: {
unlimited: 'Unlimited',
expiring: 'Kedaluwarsa dalam satu hari',
expiring_plural: 'Kedaluwarsa dalam {{count}} hari',
},
pagination: {
perPage: 'Item per halaman',
@@ -738,6 +771,13 @@ const translation = {
label: {
optional: '(opsional)',
},
noData: 'Tidak ada data',
dynamicSelect: {
error: 'Gagal memuat opsi',
noData: 'Tidak ada opsi yang tersedia',
loading: 'Memuat opsi...',
selected: '{{count}} dipilih',
},
}
export default translation

View File

@@ -35,6 +35,8 @@ const translation = {
validation: {
count: 'Beberapa file tidak didukung',
typeError: 'Jenis file tidak didukung',
size: 'Berkas terlalu besar. Maksimal {{size}}MB',
filesNumber: 'Anda telah mencapai batas unggah batch sebanyak {{filesNumber}}.',
},
buttonSingleFile: 'Seret dan lepas file, atau',
title: 'Unggah file',
@@ -43,6 +45,7 @@ const translation = {
button: 'Seret dan lepas file atau folder, atau',
change: 'Ubah',
failed: 'Upload gagal',
tip: 'Mendukung {{supportTypes}}. Maksimal {{batchCount}} dalam satu batch dan {{size}} MB masing-masing. Total maksimal {{totalCount}} file.',
},
modal: {
title: 'Buat Pengetahuan kosong',
@@ -92,6 +95,7 @@ const translation = {
firecrawlDoc: 'Dokumen Firecrawl',
configureWatercrawl: 'Konfigurasikan Watercrawl',
running: 'Menjalankan',
scrapTimeInfo: 'Telah mengumpulkan {{total}} halaman secara total dalam {{time}} detik',
},
pagePreview: 'Pratinjau Halaman',
notionSyncTitle: 'Notion tidak terhubung',
@@ -183,6 +187,8 @@ const translation = {
general: 'Umum',
indexSettingTip: 'Untuk mengubah metode indeks & model penyematan, silakan pergi ke',
qaTip: 'Saat menggunakan data Tanya Jawab terstruktur, Anda dapat membuat dokumen yang memasangkan pertanyaan dengan jawaban. Dokumen-dokumen ini diindeks berdasarkan bagian pertanyaan, memungkinkan sistem untuk mengambil jawaban yang relevan berdasarkan kesamaan kueri.',
maxLengthCheck: 'Panjang potongan maksimum sebaiknya kurang dari {{limit}}',
previewChunkCount: '{{count}} Potongan perkiraan',
},
stepThree: {
modelTitle: 'Apakah Anda yakin untuk berhenti menyematkan?',

View File

@@ -81,7 +81,10 @@ const translation = {
learnMore: 'Pelajari lebih lanjut',
addUrl: 'Tambahkan URL',
title: 'Dokumen',
sort: {},
sort: {
uploadTime: 'Waktu Unggah',
hitCount: 'Jumlah Pengambilan',
},
},
metadata: {
placeholder: {

View File

@@ -15,6 +15,7 @@ const translation = {
},
hit: {
emptyTip: 'Hasil Pengujian Pengambilan akan ditampilkan di sini',
title: '{{num}} Potongan yang Diambil',
},
keyword: 'Kata kunci',
noRecentTip: 'Tidak ada hasil kueri terbaru di sini',
@@ -27,6 +28,7 @@ const translation = {
viewChart: 'Lihat GRAFIK VAKTOR',
chunkDetail: 'Detail Potongan',
title: 'Tes Pengambilan',
hitChunks: 'Pukul {{num}} potongan anak',
}
export default translation

View File

@@ -34,6 +34,7 @@ const translation = {
publishPipeline: {
success: {
message: 'Alur Pengetahuan Diterbitkan',
tip: '<CustomLink>Buka Dokumen</CustomLink> untuk menambahkan atau mengelola dokumen.',
},
error: {
message: 'Gagal Menerbitkan Alur Pengetahuan',
@@ -56,6 +57,7 @@ const translation = {
details: {
structure: 'Struktur',
structureTooltip: 'Struktur Potongan menentukan bagaimana dokumen dibagi dan diindeks—menawarkan mode Umum, Induk-Anak, dan Tanya Jawab—dan unik untuk setiap basis pengetahuan.',
createdBy: 'Oleh {{author}}',
},
testRun: {
steps: {
@@ -112,23 +114,32 @@ const translation = {
title: 'Tambahkan Dokumen',
backToDataSource: 'Sumber Data',
characters: 'Karakter',
selectOnlineDocumentTip: 'Proses hingga {{count}} halaman',
selectOnlineDriveTip: 'Proses hingga {{count}} file, maksimum {{fileSize}} MB masing-masing',
},
documentSettings: {
title: 'Pengaturan Dokumen',
},
onlineDocument: {},
onlineDocument: {
pageSelectorTitle: '{{name}} halaman',
},
onlineDrive: {
breadcrumbs: {
allFiles: 'Semua File',
allBuckets: 'Semua Bucket Penyimpanan Cloud',
searchPlaceholder: 'Cari file...',
searchResult: 'Temukan {{searchResultsLength}} item di folder "{{folderName}}"',
},
resetKeywords: 'Mengatur ulang kata kunci',
notSupportedFileType: 'Jenis file ini tidak didukung',
emptySearchResult: 'Tidak ada barang yang ditemukan',
emptyFolder: 'Folder ini kosong',
notConnected: '{{name}} tidak terhubung',
notConnectedTip: 'Untuk menyinkronkan dengan {{name}}, koneksi ke {{name}} harus dibuat terlebih dahulu.',
},
credentialSelector: {
name: '{{credentialName}}\'s {{pluginName}}',
},
credentialSelector: {},
conversion: {
confirm: {
title: 'Konfirmasi',
@@ -149,6 +160,7 @@ const translation = {
knowledgeNameAndIcon: 'Nama & ikon pengetahuan',
knowledgeDescriptionPlaceholder: 'Jelaskan apa yang ada di Basis Pengetahuan ini. Deskripsi terperinci memungkinkan AI mengakses konten kumpulan data dengan lebih akurat. Jika kosong, Dify akan menggunakan strategi hit default. (Opsional)',
editPipelineInfo: 'Mengedit info alur',
configurationTip: 'Konfigurasikan {{pluginName}}',
}
export default translation

View File

@@ -124,12 +124,14 @@ const translation = {
checkName: {
empty: 'Nama metadata tidak boleh kosong',
invalid: 'Nama metadata hanya dapat berisi huruf kecil, angka, dan garis bawah dan harus dimulai dengan huruf kecil',
tooLong: 'Nama metadata tidak boleh melebihi {{max}} karakter',
},
batchEditMetadata: {
editMetadata: 'Edit Metadata',
applyToAllSelectDocument: 'Terapkan ke semua dokumen yang dipilih',
multipleValue: 'Beberapa Nilai',
applyToAllSelectDocumentTip: 'Secara otomatis membuat semua metadata yang diedit di atas dan baru untuk semua dokumen yang dipilih, jika tidak, mengedit metadata hanya akan berlaku untuk dokumen yang dengannya.',
editDocumentsNum: 'Mengedit dokumen {{num}}',
},
selectMetadata: {
manageAction: 'Urus',
@@ -146,6 +148,8 @@ const translation = {
builtInDescription: 'Metadata bawaan secara otomatis diekstrak dan dihasilkan. Itu harus diaktifkan sebelum digunakan dan tidak dapat diedit.',
namePlaceholder: 'Nama metadata',
builtIn: 'Bawaan',
values: 'Nilai {{num}}',
deleteContent: 'Apakah Anda yakin ingin menghapus metadata "{{name}}"',
},
documentMetadata: {
metadataToolTip: 'Metadata berfungsi sebagai filter penting yang meningkatkan akurasi dan relevansi pengambilan informasi. Anda dapat memodifikasi dan menambahkan metadata untuk dokumen ini di sini.',
@@ -227,6 +231,12 @@ const translation = {
enabled: 'Sedang Beroperasi',
disabled: 'Dinonaktifkan',
},
docAllEnabled_one: 'dokumen {{count}} diaktifkan',
docAllEnabled_other: 'Semua dokumen {{count}} diaktifkan',
partialEnabled_one: 'Total {{count}} dokumen, {{num}} tersedia',
partialEnabled_other: 'Total {{count}} dokumen, {{num}} tersedia',
documentsDisabled: '{{num}} dokumen dinonaktifkan - tidak aktif lebih dari 30 hari',
preprocessDocument: '{{num}} Prasekolah Dokumen',
}
export default translation

View File

@@ -42,6 +42,7 @@ const translation = {
},
isAboutToExpire: {
summary: 'Jangan khawatir — ini tidak akan memengaruhi langganan Anda saat ini, tetapi Anda tidak akan mendapatkan diskon pendidikan saat diperpanjang kecuali Anda memverifikasi status Anda lagi.',
title: 'Status pendidikan Anda akan berakhir pada {{date}}',
},
stillInEducation: {
isAboutToExpire: 'Verifikasi ulang sekarang untuk mendapatkan kupon baru untuk tahun akademik mendatang. Ini akan disimpan ke akun Anda dan siap digunakan pada perpanjangan berikutnya.',

View File

@@ -26,6 +26,7 @@ const translation = {
appCustomize: {
subTitle: 'Ikon & nama aplikasi',
nameRequired: 'Nama aplikasi diperlukan',
title: 'Buat aplikasi dari {{name}}',
},
category: {
Entertainment: 'Hiburan',

View File

@@ -28,10 +28,12 @@ const translation = {
loading: 'Pengolahan... Harap tunggu',
viewDetails: 'Lihat detail',
error: 'Terjadi kesalahan selama eksekusi',
footerTip: 'Dalam mode uji coba, pratinjau hingga {{count}} potongan',
},
},
ragToolSuggestions: {
title: 'Saran untuk RAG',
noRecommendationPlugins: 'Tidak ada plugin yang disarankan, temukan lebih banyak di <CustomLink>Marketplace</CustomLink>',
},
}

View File

@@ -0,0 +1,186 @@
const translation = {
subscription: {
title: 'Langganan',
listNum: 'langganan {{num}}',
empty: {
title: 'Tidak ada langganan',
button: 'Langganan baru',
},
createButton: {
oauth: 'Langganan baru dengan OAuth',
apiKey: 'Langganan baru dengan Kunci API',
manual: 'Tempel URL untuk membuat langganan baru',
},
createSuccess: 'Langganan berhasil dibuat',
createFailed: 'Gagal membuat langganan',
maxCount: 'Maks {{num}} langganan',
selectPlaceholder: 'Pilih langganan',
noSubscriptionSelected: 'Belum memilih langganan',
subscriptionRemoved: 'Langganan dihapus',
list: {
title: 'Langganan',
addButton: 'Tambahkan',
tip: 'Terima acara melalui Langganan',
item: {
enabled: 'Diaktifkan',
disabled: 'Dinonaktifkan',
credentialType: {
api_key: 'Kunci API',
oauth2: 'OAuth',
unauthorized: 'Manual',
},
actions: {
delete: 'Hapus',
deleteConfirm: {
title: 'Hapus {{name}}?',
success: 'Langganan {{name}} berhasil dihapus',
error: 'Gagal menghapus langganan {{name}}',
content: 'Setelah dihapus, langganan ini tidak dapat dikembalikan. Harap konfirmasi.',
contentWithApps: 'Langganan saat ini direferensikan oleh {{count}} aplikasi. Menghapusnya akan menyebabkan aplikasi yang dikonfigurasi berhenti menerima acara langganan.',
confirm: 'Konfirmasi Hapus',
cancel: 'Batal',
confirmInputWarning: 'Silakan masukkan nama yang benar untuk konfirmasi.',
confirmInputPlaceholder: 'Masukkan "{{name}}" untuk konfirmasi.',
confirmInputTip: 'Silakan masukkan “{{name}}” untuk mengonfirmasi.',
},
},
status: {
active: 'Aktif',
inactive: 'Tidak aktif',
},
usedByNum: 'Digunakan oleh {{num}} alur kerja',
noUsed: 'Tidak ada alur kerja yang digunakan',
},
},
addType: {
title: 'Tambah langganan',
description: 'Pilih bagaimana Anda ingin membuat langganan pemicu Anda',
options: {
apikey: {
title: 'Buat dengan Kunci API',
description: 'Buat langganan secara otomatis menggunakan kredensial API',
},
oauth: {
title: 'Buat dengan OAuth',
description: 'Otorisasi dengan platform pihak ketiga untuk membuat langganan',
clientSettings: 'Pengaturan Klien OAuth',
clientTitle: 'Klien OAuth',
default: 'Default',
custom: 'Kustom',
},
manual: {
title: 'Pengaturan Manual',
description: 'Tempel URL untuk membuat langganan baru',
tip: 'Konfigurasikan URL di platform pihak ketiga secara manual',
},
},
},
},
modal: {
steps: {
verify: 'Verifikasi',
configuration: 'Konfigurasi',
},
common: {
cancel: 'Batal',
back: 'Kembali',
next: 'Berikutnya',
create: 'Buat',
verify: 'Verifikasi',
authorize: 'Otorisasi',
creating: 'Membuat...',
verifying: 'Memverifikasi...',
authorizing: 'Mengizinkan...',
},
oauthRedirectInfo: 'Karena tidak ditemukan rahasia klien sistem untuk penyedia alat ini, pengaturannya harus dilakukan secara manual, untuk redirect_uri, silakan gunakan',
apiKey: {
title: 'Buat dengan Kunci API',
verify: {
title: 'Verifikasi Kredensial',
description: 'Silakan berikan kredensial API Anda untuk memverifikasi akses',
error: 'Verifikasi kredensial gagal. Silakan periksa kunci API Anda.',
success: 'Kredensial berhasil diverifikasi',
},
configuration: {
title: 'Atur Langganan',
description: 'Atur parameter langganan Anda',
},
},
oauth: {
title: 'Buat dengan OAuth',
authorization: {
title: 'Otorisasi OAuth',
description: 'Izinkan Dify untuk mengakses akun Anda',
redirectUrl: 'URL Pengalihan',
redirectUrlHelp: 'Gunakan URL ini dalam konfigurasi aplikasi OAuth Anda',
authorizeButton: 'Otorisasi dengan {{provider}}',
waitingAuth: 'Menunggu otorisasi...',
authSuccess: 'Otorisasi berhasil',
authFailed: 'Gagal mendapatkan informasi otorisasi OAuth',
waitingJump: 'Diizinkan, menunggu lompatan',
},
configuration: {
title: 'Atur Langganan',
description: 'Atur parameter langganan Anda setelah otorisasi',
success: 'Konfigurasi OAuth berhasil',
failed: 'Konfigurasi OAuth gagal',
},
remove: {
success: 'Penghapusan OAuth berhasil',
failed: 'Gagal menghapus OAuth',
},
save: {
success: 'Konfigurasi OAuth berhasil disimpan',
},
},
manual: {
title: 'Pengaturan Manual',
description: 'Konfigurasikan langganan webhook Anda secara manual',
logs: {
title: 'Catatan Permintaan',
request: 'Permintaan',
loading: 'Menunggu permintaan dari {{pluginName}}...',
},
},
form: {
subscriptionName: {
label: 'Nama Langganan',
placeholder: 'Masukkan nama langganan',
required: 'Nama langganan wajib diisi',
},
callbackUrl: {
label: 'URL Panggilan Balik',
description: 'URL ini akan menerima event webhook',
tooltip: 'Sediakan endpoint yang dapat diakses publik yang dapat menerima permintaan callback dari penyedia pemicu.',
placeholder: 'Sedang menghasilkan...',
privateAddressWarning: 'URL ini tampaknya merupakan alamat internal, yang mungkin menyebabkan permintaan webhook gagal. Anda dapat mengubah TRIGGER_URL ke alamat publik.',
},
},
errors: {
createFailed: 'Gagal membuat langganan',
verifyFailed: 'Gagal memverifikasi kredensial',
authFailed: 'Otorisasi gagal',
networkError: 'Kesalahan jaringan, silakan coba lagi',
},
},
events: {
title: 'Acara Tersedia',
description: 'Peristiwa yang dapat diikuti oleh plugin pemicu ini',
empty: 'Tidak ada acara tersedia',
event: 'Acara',
events: 'Acara',
actionNum: '{{num}} {{event}} TERMASUK',
item: {
parameters: 'parameter {{count}}',
noParameters: 'Tidak ada parameter',
},
output: 'Keluaran',
},
node: {
status: {
warning: 'Putuskan sambungan',
},
},
}
export default translation

View File

@@ -10,6 +10,7 @@ const translation = {
agents: 'Strategi Agen',
tools: 'Perkakas',
datasources: 'Sumber Data',
triggers: 'Pemicu',
},
categorySingle: {
bundle: 'Bundel',
@@ -18,6 +19,7 @@ const translation = {
model: 'Pola',
extension: 'Ekstensi',
datasource: 'Sumber Data',
trigger: 'Pemicu',
},
list: {
source: {
@@ -48,6 +50,7 @@ const translation = {
viewDetail: 'Lihat Detail',
install: 'Pasang',
checkUpdate: 'Periksa Pembaruan',
back: 'Kembali',
},
toolSelector: {
descriptionLabel: 'Deskripsi alat',
@@ -77,6 +80,8 @@ const translation = {
ownershipTransferred: 'kepemilikan dialihkan',
},
noReason: 'Plugin ini tidak digunakan lagi dan tidak akan diperbarui lagi.',
fullMessage: 'Plugin ini telah dihentikan karena {{deprecatedReason}}, dan tidak akan diperbarui lagi. Silakan gunakan <CustomLink href=\'https://example.com/\'>{{-alternativePluginId}}</CustomLink> sebagai gantinya.',
onlyReason: 'Plugin ini telah dihentikan penggunaannya karena {{deprecatedReason}} dan tidak akan diperbarui lagi.',
},
endpoints: 'Endpoint',
endpointDisableTip: 'Nonaktifkan Titik Akhir',
@@ -92,6 +97,11 @@ const translation = {
endpointsTip: 'Plugin ini menyediakan fungsionalitas khusus melalui titik akhir, dan Anda dapat mengonfigurasi beberapa set titik akhir untuk ruang kerja saat ini.',
endpointModalTitle: 'Menyiapkan titik akhir',
endpointsEmpty: 'Klik tombol \' \' untuk menambahkan titik akhir',
actionNum: '{{num}} {{action}} TERMASUK',
strategyNum: '{{num}} {{strategy}} TERMASUK',
endpointDisableContent: 'Apakah Anda ingin menonaktifkan {{name}}?',
endpointDeleteContent: 'Apakah Anda ingin menghapus {{name}}?',
modelNum: '{{num}} MODEL TERMASUK',
},
debugInfo: {
title: 'Debugging',
@@ -150,6 +160,10 @@ const translation = {
updateTimeTitle: 'Waktu pembaruan',
specifyPluginsToUpdate: 'Tentukan plugin untuk diperbarui',
automaticUpdates: 'Pembaruan otomatis',
excludeUpdate: 'Plugin {{num}} berikut ini tidak akan diperbarui secara otomatis',
partialUPdate: 'Hanya plugin {{num}} berikut yang akan diperbarui secara otomatis',
nextUpdateTime: 'Pembaruan otomatis berikutnya: {{time}}',
changeTimezone: 'Untuk mengubah zona waktu, pergi ke <setTimezone>Pengaturan</setTimezone>',
},
pluginInfoModal: {
repository: 'Repositori',
@@ -163,6 +177,7 @@ const translation = {
checkForUpdates: 'Periksa pembaruan',
deleteContentLeft: 'Apakah Anda ingin menghapus',
delete: 'Hapus plugin',
usedInApps: 'Plugin ini digunakan di {{num}} aplikasi.',
},
installModal: {
labels: {
@@ -189,6 +204,9 @@ const translation = {
dropPluginToInstall: 'Jatuhkan paket plugin di sini untuk menginstal',
installComplete: 'Instalasi selesai',
installPlugin: 'Instal Plugin',
uploadingPackage: 'Mengunggah {{packageName}}...',
readyToInstallPackages: 'Akan memasang plugin {{num}} berikut',
fromTrustSource: 'Pastikan Anda hanya menginstal plugin dari <trustSource>sumber yang tepercaya</trustSource>.',
},
installFromGitHub: {
installFailed: 'Instalasi gagal',
@@ -210,6 +228,7 @@ const translation = {
successfulTitle: 'Instal berhasil',
description: 'Tentang menginstal plugin berikut',
title: 'Instal Plugin',
usedInApps: 'Digunakan di {{num}} aplikasi',
},
error: {
fetchReleasesError: 'Tidak dapat mengambil rilis. Silakan coba lagi nanti.',
@@ -233,9 +252,15 @@ const translation = {
and: 'dan',
difyMarketplace: 'Dify Marketplace',
verifiedTip: 'Diverifikasi oleh Dify',
pluginsResult: 'hasil {{num}}',
},
task: {
clearAll: 'Hapus semua',
installing: 'Memasang plugin {{installingLength}}, 0 selesai.',
installingWithSuccess: 'Memasang plugin {{installingLength}}, {{successLength}} berhasil.',
installingWithError: 'Memasang {{installingLength}} plugin, {{successLength}} berhasil, {{errorLength}} gagal',
installError: 'Gagal menginstal plugin {{errorLength}}, klik untuk melihat',
installedError: 'Gagal menginstal {{errorLength}} plugin',
},
auth: {
customCredentialUnavailable: 'Kredensial kustom saat ini tidak tersedia',
@@ -281,6 +306,15 @@ const translation = {
installAction: 'Pasang',
publishPlugins: 'Menerbitkan plugin',
requestAPlugin: 'Minta plugin',
endpointsEnabled: '{{num}} set endpoint diaktifkan',
install: '{{num}} menginstal',
difyVersionNotCompatible: 'Versi Dify saat ini tidak kompatibel dengan plugin ini, harap perbarui ke versi minimum yang dibutuhkan: {{minimalDifyVersion}}',
readmeInfo: {
title: 'BACA SAYA',
needHelpCheckReadme: 'Butuh bantuan? Periksa README.',
noReadmeAvailable: 'Tidak ada README yang tersedia',
failedToFetch: 'Gagal mengambil README',
},
}
export default translation

View File

@@ -47,11 +47,15 @@ const translation = {
batchFailed: {
outputPlaceholder: 'Tidak ada konten keluaran',
retry: 'Pengulangan',
info: '{{num}} eksekusi gagal',
},
errorMsg: {
atLeastOne: 'Silakan masukkan setidaknya satu baris dalam file yang diunggah.',
empty: 'Silakan masukkan konten dalam file yang diunggah.',
fileStructNotMatch: 'File CSV yang diunggah tidak cocok dengan struct.',
emptyLine: 'Baris {{rowIndex}} kosong',
invalidLine: 'Baris {{rowIndex}}: nilai {{varName}} tidak boleh kosong',
moreThanMaxLengthLine: 'Baris {{rowIndex}}: nilai {{varName}} tidak boleh lebih dari {{maxLength}} karakter',
},
field: 'Kebun',
queryTitle: 'Kueri konten',

View File

@@ -234,6 +234,9 @@ const translation = {
parameters: 'Parameter',
noDescription: 'Tanpa deskripsi',
},
toolsCount: 'alat {{count}}',
deleteConfirmTitle: 'Apakah Anda ingin menghapus {{mcp}}?',
toolsNum: 'alat {{count}} termasuk',
},
title: 'Perkakas',
createCustomTool: 'Buat Alat Kustom',
@@ -248,6 +251,7 @@ const translation = {
builtInPromptTitle: 'Cepat',
toolNameUsageTip: 'Nama panggilan alat untuk penalaran dan permintaan agen',
allTools: 'Semua alat',
includeToolNum: '{{num}} {{action}} termasuk',
}
export default translation

View File

@@ -13,6 +13,8 @@ const translation = {
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',
@@ -33,7 +35,6 @@ const translation = {
addParallelNode: 'Tambahkan Node Paralel',
onFailure: 'Pada Kegagalan',
update: 'Pemutakhiran',
parallelRun: 'Jalankan Paralel',
configure: 'Konfigurasikan',
copy: 'Menyalin',
redo: 'Ulangi',
@@ -113,6 +114,14 @@ const translation = {
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: {
@@ -198,6 +207,10 @@ const translation = {
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: {
@@ -211,6 +224,11 @@ const translation = {
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',
@@ -242,6 +260,21 @@ const translation = {
'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',
@@ -268,6 +301,10 @@ const translation = {
'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',
@@ -292,6 +329,9 @@ const translation = {
'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',
@@ -323,7 +363,6 @@ const translation = {
change: 'Ubah',
checklist: 'Checklist',
about: 'Sekitar',
moveToThisNode: 'Pindah ke simpul ini',
optional: '(opsional)',
checklistTip: 'Pastikan semua masalah diselesaikan sebelum dipublikasikan',
organizeBlocks: 'Mengatur simpul',
@@ -339,6 +378,9 @@ const translation = {
runThisStep: 'Jalankan langkah ini',
maximize: 'Maksimalkan Kanvas',
optional_and_hidden: '(opsional & tersembunyi)',
goTo: 'Pergi ke',
startNode: 'Mulai Node',
scrollToSelectedNode: 'Gulir ke node yang dipilih',
},
nodes: {
common: {
@@ -374,7 +416,9 @@ const translation = {
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: {},
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.',
},
@@ -388,6 +432,9 @@ const translation = {
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',
@@ -649,7 +696,9 @@ const translation = {
object: 'Benda',
string: 'Tali',
},
outputVars: {},
outputVars: {
varDescribe: 'output {{groupName}}',
},
noVarTip: 'Tambahkan variabel yang akan ditetapkan',
aggregationGroup: 'Grup Agregasi',
title: 'Tetapkan variabel',
@@ -775,6 +824,12 @@ const translation = {
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: {
@@ -800,6 +855,13 @@ const translation = {
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: {
@@ -826,6 +888,7 @@ const translation = {
},
learnMore: 'Pelajari lebih lanjut',
inputVar: 'Variabel Masukan',
supportFileTypes: 'Jenis file yang didukung: {{types}}.',
},
listFilter: {
outputVars: {
@@ -913,6 +976,9 @@ const translation = {
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',
@@ -940,8 +1006,148 @@ const translation = {
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}}',
},
tracing: {},
versionHistory: {
filter: {
empty: 'Tidak ada riwayat versi yang cocok ditemukan',
@@ -953,6 +1159,8 @@ const translation = {
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',
@@ -1003,6 +1211,18 @@ const translation = {
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',
@@ -1020,11 +1240,52 @@ const translation = {
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