feat: type the plugin host record, move plugin strings out of core and add lint checks

This commit is contained in:
LukeGus committed 2026-09-29 13:08:39 -05:00
1 parent bba06f7ff6
commit b8bbcd2196
626 files changed
+23884 -4590

No files matched your search

+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Pilih tema, warna aksen, dan bahasa Anda. Ketiganya dapat diubah nanti di Pengaturan.",
"featuresTitle": "Apa lagi yang dilakukan Termix?",
"featuresIntro": "Setiap server yang Anda simpan dapat dibuka di lebih dari satu terminal. Berikut adalah apa yang ada di balik ikon di sebelah kiri.",
"feature_files": "Pengelola berkas",
"feature_files_desc": "Jelajahi, unggah, unduh, dan edit file melalui SFTP tanpa meninggalkan aplikasi.",
"feature_tunnels": "Terowongan",
"feature_tunnels_desc": "Meneruskan port melalui server untuk mengakses layanan yang tidak terekspos.",
"feature_snippets": "Cuplikan",
"feature_snippets_desc": "Simpan perintah yang sering Anda jalankan dan kirimkan ke terminal hanya dengan satu klik.",
"featuresRailHint": "Tidak membutuhkan salah satu dari ini? Sembunyikan ikon apa pun dari bilah sisi di Pengaturan, di bawah Navigasi.",
@@ -449,7 +445,6 @@
"passwordSaved": "Kata sandi tersimpan, ketik untuk mengubahnya",
"key": "Kunci",
"credential": "Mandat",
"none": "Tidak ada",
"sshPrivateKey": "Kunci Pribadi SSH",
"keyType": "Jenis Kunci",
"uploadFile": "Unggah File",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Interval Keepalive (detik)",
"maxKeepaliveMisses": "Max Keepalive Gagal",
"sameHost": "Host ini (terowongan langsung)",
"bindHost": "Host Terikat",
"connectionToolbar": "Toolbar Koneksi",
"showConnectionToolbar": "Tampilkan bilah alat koneksi",
"showConnectionToolbarDesc": "Tampilkan toolbar di sesi SSH, RDP, VNC, dan Telnet host ini. Anda juga dapat menyembunyikannya sementara dari toolbar itu sendiri.",
"proxmoxLastSyncStatus": {
"success": "Kesuksesan"
},
"proxmoxGuestsSelected_one": "{{count}} tamu — {{selected}} terpilih",
"proxmoxGuestsSelected_other": "{{count}} tamu — {{selected}} terpilih",
"proxmoxImportButton_one": "Impor {{count}} host",
"proxmoxImportButton_other": "Impor {{count}} host",
"proxmoxResultSkippedNoIp": "{{count}} dilewati (tidak ditemukan IP)",
"proxmoxStatsUrlCopied": "URL Statistik Proxmox disalin ke papan klip",
"copyProxmoxStatsUrlAction": "Salin URL Statistik Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Host {{count}} yang diperbarui",
"friendlyNameLabel": "Nama yang Ramah",
"descriptionLabel": "Keterangan",
"loadingHost": "Memuat host...",
"loadingHosts": "Memuat host...",
"loadingCredentials": "Sedang memuat kredensial...",
"noHostsYet": "Belum ada host",
"noHostsYetHint": "Tambahkan server untuk membuka terminal, menelusuri file, dan melihat metrik.",
"noHostsMatchSearch": "Tidak ada host yang sesuai dengan pencarian Anda.",
"hostNotFound": "Host tidak ditemukan",
"searchHosts": "Cari host...",
"sortHosts": "Urutkan Host",
"sortDefault": "Urutan Default",
@@ -925,7 +913,6 @@
"filterAuthKey": "Kunci SSH",
"filterAuthCredential": "Mandat",
"filterAuthNone": "Tidak ada",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Langkah CA",
"filterProtocolGroup": "Protokol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Terhubung ke Host",
"clear": "Jernih",
"paste": "Pasta",
"connected": "Terhubung",
"clipboardWriteFailed": "Gagal menyalin ke papan klip. Pastikan halaman disajikan melalui HTTPS atau localhost.",
"clipboardReadFailed": "Gagal membaca dari clipboard. Pastikan izin clipboard telah diberikan.",
"tmuxDetach": "Lepaskan diri dari sesi tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Menjalankan {{command}} - {{host}}",
"totpRequired": "Diperlukan Otentikasi Dua Faktor",
"totpCodeLabel": "Kode Verifikasi",
"totpVerify": "Memeriksa",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Salin ke host…",
"moveToHost": "Pindah ke host…",
"copyItemsToHost": "Salin {{count}} item ke host…",
"moveItemsToHost": "Pindahkan {{count}} item ke host…",
"noHostsConnected": "Tidak ada penyedia pengelola file lain yang tersedia.",
"noHostsConnectedHint": "Tambahkan host SSH lain dengan File Manager diaktifkan di Host Manager.",
"selectDestinationHost": "Pilih host tujuan",
"destinationPath": "Jalur tujuan",
"recentDestinations": "Destinasi terkini",
"collapseRecentDestinations": "Ciutkan destinasi terbaru",
"expandRecentDestinations": "Perluas destinasi terbaru",
"browseFolders": "Telusuri folder tujuan",
"browseDestination": "Telusuri atau masukkan jalur",
"confirmCopy": "Menyalin",
"confirmMove": "Bergerak",
"transferring": "Mentransfer…",
"progressVerifying": "Memverifikasi integritas file…",
"progressBenchmarking": "Memilih rute transfer tercepat…",
"compressing": "Mengompresi…",
"extracting": "Mengekstrak…",
"transferringItems": "Memindahkan {{current}} dari {{total}} item…",
"transferSuccess": "Transfer selesai",
"transferError": "Transfer gagal",
"transferPartial": "Transfer selesai dengan {{count}} kesalahan",
"transferPartialHint": "Tidak dapat mentransfer: {{paths}}",
"itemsSummary": "{{count}} item",
"destMustBeDirectory": "Tujuan harus berupa direktori untuk transfer multi-item.",
"selectThisFolder": "Pilih folder ini",
"browsePathWillBeCreated": "Folder ini belum ada. Folder ini akan dibuat saat transfer dimulai.",
"browsePathError": "Tidak dapat membuka jalur ini pada host tujuan.",
"goUp": "Naik",
"copyFolderToHost": "Salin folder ke host…",
"moveFolderToHost": "Pindahkan folder ke host…",
"hostReady": "Siap",
"hostConnecting": "Menghubungkan…",
"hostDisconnected": "Tidak terhubung",
"hostAuthRequired": "Diperlukan autentikasi — buka File Manager di host ini terlebih dahulu.",
"hostConnectionFailed": "Koneksi gagal",
"metricsTitle": "Waktu transfer",
"metricsPrepare": "Siapkan tujuan: {{duration}}",
"metricsCompress": "Kompres pada sumber: {{duration}}",
"metricsHopSourceRead": "Sumber → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → tujuan (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → tujuan (lokal): {{throughput}}",
"metricsTransfer": "Ujung ke ujung: {{throughput}} ({{duration}})",
"metricsExtract": "Ekstrak pada tujuan: {{duration}}",
"metricsVerify": "SHA-256 terverifikasi: {{duration}}",
"metricsRouteBenchmark": "Pemeriksaan rute — langsung: {{direct}}, relai: {{relay}}",
"metricsSourceDelete": "Hapus dari sumber: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Kompresi pada host sumber…",
"progressExtracting": "Mengekstraksi pada tujuan…",
"progressTransferring": "Mentransfer data…",
"progressReconnecting": "Menghubungkan kembali…",
"parallelSegmentsLabel": "Jalur transfer paralel",
"parallelSegmentsOption": "{{count}} jalur",
"parallelSegmentsHint": "File berukuran besar dibagi menjadi bagian-bagian berukuran 256 MB. Beberapa jalur menggunakan koneksi terpisah (seperti memulai beberapa transfer) untuk throughput total yang lebih tinggi.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} lajur)",
"progressTransferringItems": "Mentransfer berkas ({{current}} dari {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "berkas {{current}} / {{total}}",
"sourceNotDeletedPartial": "Berkas sumber tetap disimpan (transfer sebagian)",
"jumpHostLimitation": "Kedua host harus dapat dijangkau dari server Termix. Perutean langsung antar host tidak didukung.",
"cancel": "Membatalkan",
"methodLabel": "Metode transfer",
"methodAuto": "Mobil",
"methodTar": "Arsip Tar",
"methodItemSftp": "SFTP per file",
"methodAutoHint": "Memilih antara tar atau SFTP per-file berdasarkan jumlah file, ukuran, dan kemampuan kompresi. File tunggal selalu menggunakan SFTP streaming.",
"methodTarHint": "Kompres di sumber, transfer satu arsip, ekstrak di tujuan. Membutuhkan tar di kedua host Unix.",
"methodItemSftpHint": "Transfer setiap file secara individual melalui SFTP. Berfungsi di semua host termasuk Windows.",
"methodPreviewLoading": "Metode perhitungan transfer…",
"methodPreviewError": "Metode transfer tidak dapat dipratinjau. Server akan tetap memilih metode saat Anda memulai.",
"methodPreviewWillUseTar": "Akan menggunakan: Arsip Tar",
"methodPreviewWillUseItemSftp": "Akan menggunakan: SFTP per file",
"methodPreviewScanSummary": "{{fileCount}} berkas, {{totalSize}} total (dipindai pada host sumber).",
"methodItemSftpLimitation": "Setiap berkas menggunakan aliran SFTP yang sama sebagai salinan berkas tunggal, satu demi satu. Kemajuan digabungkan di semua berkas, sehingga bilah kemajuan bergerak lambat selama pemrosesan berkas berukuran besar.",
"methodReason": {
"user_item_sftp": "Anda memilih SFTP per-file.",
"user_tar": "Anda memilih arsip tar.",
"tar_unavailable": "Tar tidak tersedia di salah satu atau kedua host — SFTP per-file akan digunakan sebagai gantinya.",
"windows_host": "Sistem operasi yang digunakan adalah Windows — tar tidak digunakan.",
"auto_multi_large": "Otomatis: beberapa file termasuk file besar ({{largestSize}}) dengan data yang dapat dikompresi — tar menggabungkan menjadi satu transfer.",
"auto_single_large_in_archive": "Otomatis: satu file besar ({{largestSize}}) dalam set ini — SFTP per file.",
"auto_many_incompressible": "Otomatis: sebagian besar data tidak dapat dikompresi — SFTP per file.",
"auto_many_files": "Otomatis: banyak file ({{fileCount}}) — tar mengurangi overhead per file.",
"auto_default": "Otomatis: SFTP per-file untuk set ini."
},
"progressCancel": "Membatalkan",
"progressCancelling": "Membatalkan…",
"progressStalled": "Terhenti",
"resumedHint": "Terhubung kembali ke transfer aktif yang dimulai di jendela lain.",
"transferCancelled": "Transfer dibatalkan",
"transferCancelledCopyHint": "File yang tidak lengkap mungkin masih tersisa di tujuan.",
"transferCancelledMoveHint": "Sebagian berkas mungkin masih tersisa di tujuan. Berkas sumber tidak dihapus.",
"cleanupDestFiles": "Tujuan pembersihan",
"cleanupDestFilesSuccess": "File parsial telah dihapus dari tujuan.",
"cleanupDestFilesPartial": "Beberapa file parsial tidak dapat dihapus.",
"cleanupDestFilesNothing": "Tidak ada yang perlu dibersihkan di tempat tujuan.",
"cleanupDestFilesError": "Pembersihan gagal",
"retryTransfer": "Mencoba kembali",
"retryTransferError": "Percobaan ulang gagal.",
"transferFailedRetryHint": "Sebagian data tersimpan di tujuan. Upaya pengulangan akan dilanjutkan saat koneksi kembali pulih."
"sourceNotDeletedPartial": "Berkas sumber tetap disimpan (transfer sebagian)"
},
"tunnels": {
"connect": "Menghubungkan",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Terowongan Klien",
"addClientTunnel": "Tambahkan Terowongan Klien",
"active": "Aktif",
"start": "Awal",
"stop": "Berhenti",
"typeServerLocalDesc": "Host saat ini ke titik akhir.",
"typeServerRemoteDesc": "Endpoint kembali ke host saat ini.",
"typeClientLocalDesc": "Komputer lokal ke titik akhir.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Pembatasan laju: Terlalu banyak upaya verifikasi. Harap tunggu {{time}} detik sebelum mencoba lagi.",
"authTokenSaveFailed": "Gagal menyimpan token otentikasi.",
"authTokenMissing": "Server tidak mengembalikan token otentikasi baru. Silakan masuk kembali.",
"failedToLoadServer": "Server gagal dimuat.",
"remoteServerRequired": "Diperlukan server jarak jauh. Hubungkan server jarak jauh di Pengaturan untuk menggunakan jenis koneksi ini."
"failedToLoadServer": "Server gagal dimuat."
},
"messages": {
"registrationDisabled": "Pendaftaran akun baru saat ini dinonaktifkan oleh administrator. Silakan masuk atau hubungi administrator.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokol",
"domainLabel": "Domain",
"domainPlaceholder": "opsional",
"connectToTerminal": "Hubungkan ke Terminal",
"connectToFiles": "Menghubungkan ke File"
},
"splitScreen": {