diff --git a/src/locales/translated/id.json b/src/locales/translated/id.json index e319cfd7..8441094b 100644 --- a/src/locales/translated/id.json +++ b/src/locales/translated/id.json @@ -1,882 +1,882 @@ { "credentials": { - "credentialsViewer": "Credentials Viewer", - "manageYourSSHCredentials": "Manage your SSH credentials securely", - "addCredential": "Add Credential", - "createCredential": "Create Credential", - "editCredential": "Edit Credential", - "viewCredential": "View Credential", - "duplicateCredential": "Duplicate Credential", - "deleteCredential": "Delete Credential", - "updateCredential": "Update Credential", - "credentialName": "Credential Name", - "credentialDescription": "Description", - "username": "Username", - "searchCredentials": "Search credentials...", - "selectFolder": "Select Folder", - "selectAuthType": "Select Auth Type", - "allFolders": "All Folders", - "allAuthTypes": "All Auth Types", - "uncategorized": "Uncategorized", + "credentialsViewer": "Penampil Kredensial", + "manageYourSSHCredentials": "Kelola kredensial SSH Anda dengan aman.", + "addCredential": "Tambahkan Kredensial", + "createCredential": "Buat Kredensial", + "editCredential": "Edit Kredensial", + "viewCredential": "Lihat Kredensial", + "duplicateCredential": "Kredensial Ganda", + "deleteCredential": "Hapus Kredensial", + "updateCredential": "Perbarui Kredensial", + "credentialName": "Nama Kredensial", + "credentialDescription": "Keterangan", + "username": "Nama belakang", + "searchCredentials": "Cari kredensial...", + "selectFolder": "Pilih Folder", + "selectAuthType": "Pilih Jenis Otorisasi", + "allFolders": "Semua Folder", + "allAuthTypes": "Semua Jenis Otorisasi", + "uncategorized": "Tidak dikategorikan", "totalCredentials": "Total", - "keyBased": "Key-based", - "passwordBased": "Password-based", - "folders": "Folders", - "noCredentialsMatchFilters": "No credentials match your filters", - "noCredentialsYet": "No credentials created yet", - "createFirstCredential": "Create your first credential", - "failedToFetchCredentials": "Failed to fetch credentials", - "credentialDeletedSuccessfully": "Credential deleted successfully", - "failedToDeleteCredential": "Failed to delete credential", - "confirmDeleteCredential": "Are you sure you want to delete credential \"{{name}}\"?", - "credentialCreatedSuccessfully": "Credential created successfully", - "credentialUpdatedSuccessfully": "Credential updated successfully", - "failedToSaveCredential": "Failed to save credential", - "failedToFetchCredentialDetails": "Failed to fetch credential details", - "failedToFetchHostsUsing": "Failed to fetch hosts using this credential", - "loadingCredentials": "Loading credentials...", - "retry": "Retry", - "noCredentials": "No Credentials", - "noCredentialsMessage": "You haven't added any credentials yet. Click \"Add Credential\" to get started.", - "sshCredentials": "SSH Credentials", - "credentialsCount": "{{count}} credentials", - "refresh": "Refresh", - "passwordRequired": "Password is required", - "sshKeyRequired": "SSH key is required", - "credentialAddedSuccessfully": "Credential \"{{name}}\" added successfully", - "general": "General", - "description": "Description", - "folder": "Folder", - "tags": "Tags", - "addTagsSpaceToAdd": "Add tags (press space to add)", - "password": "Password", - "key": "Key", - "sshPrivateKey": "SSH Private Key", - "upload": "Upload", - "updateKey": "Update Key", - "keyPassword": "Key Password", - "keyType": "Key Type", + "keyBased": "Berbasis kunci", + "passwordBased": "Berbasis kata sandi", + "folders": "Folder", + "noCredentialsMatchFilters": "Tidak ada kredensial yang cocok dengan filter Anda.", + "noCredentialsYet": "Belum ada kredensial yang dibuat.", + "createFirstCredential": "Buat kredensial pertama Anda", + "failedToFetchCredentials": "Gagal mengambil kredensial.", + "credentialDeletedSuccessfully": "Kredensial berhasil dihapus.", + "failedToDeleteCredential": "Gagal menghapus kredensial", + "confirmDeleteCredential": "Apakah Anda yakin ingin menghapus kredensial \"{{name}}\"?", + "credentialCreatedSuccessfully": "Kredensial berhasil dibuat.", + "credentialUpdatedSuccessfully": "Kredensial berhasil diperbarui.", + "failedToSaveCredential": "Gagal menyimpan kredensial", + "failedToFetchCredentialDetails": "Gagal mengambil detail kredensial", + "failedToFetchHostsUsing": "Gagal mengambil host menggunakan kredensial ini.", + "loadingCredentials": "Sedang memuat kredensial...", + "retry": "Mencoba kembali", + "noCredentials": "Tidak Ada Kredensial", + "noCredentialsMessage": "Anda belum menambahkan kredensial apa pun. Klik \"Tambahkan Kredensial\" untuk memulai.", + "sshCredentials": "Kredensial SSH", + "credentialsCount": "{{count}} kredensial", + "refresh": "Menyegarkan", + "passwordRequired": "Kata sandi diperlukan", + "sshKeyRequired": "Kunci SSH diperlukan.", + "credentialAddedSuccessfully": "Kredensial \"{{name}}\" berhasil ditambahkan", + "general": "Umum", + "description": "Keterangan", + "folder": "Map", + "tags": "Tag", + "addTagsSpaceToAdd": "Tambahkan tag (tekan spasi untuk menambahkan)", + "password": "Kata sandi", + "key": "Kunci", + "sshPrivateKey": "Kunci Pribadi SSH", + "upload": "Mengunggah", + "updateKey": "Kunci Pembaruan", + "keyPassword": "Kata Sandi Kunci", + "keyType": "Jenis Kunci", "keyTypeRSA": "RSA", "keyTypeECDSA": "ECDSA", "keyTypeEd25519": "Ed25519", - "basicInfo": "Basic Info", - "authentication": "Authentication", - "organization": "Organization", - "basicInformation": "Basic Information", - "basicInformationDescription": "Enter the basic information for this credential", - "authenticationMethod": "Authentication Method", - "authenticationMethodDescription": "Choose how you want to authenticate with SSH servers", - "organizationDescription": "Organize your credentials with folders and tags", - "enterCredentialName": "Enter credential name", - "enterCredentialDescription": "Enter description (optional)", - "enterUsername": "Enter username", - "nameIsRequired": "Credential name is required", - "usernameIsRequired": "Username is required", - "authenticationType": "Authentication Type", - "passwordAuthDescription": "Use password authentication", - "sshKeyAuthDescription": "Use SSH key authentication", - "passwordIsRequired": "Password is required", - "sshKeyIsRequired": "SSH key is required", - "sshKeyType": "SSH Key Type", - "privateKey": "Private Key", - "enterPassword": "Enter password", - "enterPrivateKey": "Enter private key", - "keyPassphrase": "Key Passphrase", - "enterKeyPassphrase": "Enter key passphrase (optional)", - "keyPassphraseOptional": "Optional: leave empty if your key has no passphrase", - "leaveEmptyToKeepCurrent": "Leave empty to keep current value", - "uploadKeyFile": "Upload Key File", - "generateKeyPairButton": "Generate Key Pair", - "generateKeyPair": "Generate Key Pair", - "generateKeyPairDescription": "Generate a new SSH key pair. If you want to protect the key with a passphrase, enter it in the Key Password field below first.", - "deploySSHKey": "Deploy SSH Key", - "deploySSHKeyDescription": "Deploy public key to target server", - "sourceCredential": "Source Credential", + "basicInfo": "Informasi Dasar", + "authentication": "Autentikasi", + "organization": "Organisasi", + "basicInformation": "Informasi Dasar", + "basicInformationDescription": "Masukkan informasi dasar untuk kredensial ini.", + "authenticationMethod": "Metode Otentikasi", + "authenticationMethodDescription": "Pilih cara Anda ingin melakukan autentikasi dengan server SSH.", + "organizationDescription": "Atur kredensial Anda dengan folder dan tag.", + "enterCredentialName": "Masukkan nama kredensial", + "enterCredentialDescription": "Masukkan deskripsi (opsional)", + "enterUsername": "Masukkan nama pengguna", + "nameIsRequired": "Nama kredensial wajib diisi.", + "usernameIsRequired": "Nama pengguna wajib diisi.", + "authenticationType": "Jenis Otentikasi", + "passwordAuthDescription": "Gunakan autentikasi kata sandi.", + "sshKeyAuthDescription": "Gunakan autentikasi kunci SSH", + "passwordIsRequired": "Kata sandi diperlukan", + "sshKeyIsRequired": "Kunci SSH diperlukan.", + "sshKeyType": "Jenis Kunci SSH", + "privateKey": "Kunci Pribadi", + "enterPassword": "Masukkan kata sandi", + "enterPrivateKey": "Masukkan kunci pribadi", + "keyPassphrase": "Kata Sandi Kunci", + "enterKeyPassphrase": "Masukkan kata sandi (opsional)", + "keyPassphraseOptional": "Opsional: biarkan kosong jika kunci Anda tidak memiliki kata sandi.", + "leaveEmptyToKeepCurrent": "Biarkan kosong untuk mempertahankan nilai saat ini.", + "uploadKeyFile": "Unggah File Kunci", + "generateKeyPairButton": "Hasilkan Pasangan Kunci", + "generateKeyPair": "Hasilkan Pasangan Kunci", + "generateKeyPairDescription": "Buat pasangan kunci SSH baru. Jika Anda ingin melindungi kunci dengan frasa sandi, masukkan terlebih dahulu di kolom Kata Sandi Kunci di bawah ini.", + "deploySSHKey": "Sebarkan Kunci SSH", + "deploySSHKeyDescription": "Sebarkan kunci publik ke server target.", + "sourceCredential": "Kredensial Sumber", "targetHost": "Target Host", - "deploymentProcess": "Deployment Process", - "deploymentProcessDescription": "This will safely add the public key to the target host's ~/.ssh/authorized_keys file without overwriting existing keys. The operation is reversible.", - "chooseHostToDeploy": "Choose a host to deploy to...", - "deploying": "Deploying...", - "name": "Name", - "noHostsAvailable": "No hosts available", - "noHostsMatchSearch": "No hosts match your search", - "sshKeyGenerationNotImplemented": "SSH key generation feature coming soon", - "connectionTestingNotImplemented": "Connection testing feature coming soon", - "testConnection": "Test Connection", - "selectOrCreateFolder": "Select or create folder", - "noFolder": "No folder", - "orCreateNewFolder": "Or create new folder", - "addTag": "Add tag", - "saving": "Saving...", - "credentialId": "Credential ID", - "overview": "Overview", - "security": "Security", - "usage": "Usage", - "securityDetails": "Security Details", - "securityDetailsDescription": "View encrypted credential information", - "credentialSecured": "Credential Secured", - "credentialSecuredDescription": "All sensitive data is encrypted with AES-256", - "passwordAuthentication": "Password Authentication", - "keyAuthentication": "Key Authentication", - "securityReminder": "Security Reminder", - "securityReminderText": "Never share your credentials. All data is encrypted at rest.", - "hostsUsingCredential": "Hosts Using This Credential", - "noHostsUsingCredential": "No hosts are currently using this credential", - "timesUsed": "Times Used", - "lastUsed": "Last Used", - "connectedHosts": "Connected Hosts", - "created": "Created", - "lastModified": "Last Modified", - "usageStatistics": "Usage Statistics", - "copiedToClipboard": "{{field}} copied to clipboard", - "failedToCopy": "Failed to copy to clipboard", - "sshKey": "SSH Key", - "createCredentialDescription": "Create a new SSH credential for secure access", - "editCredentialDescription": "Update the credential information", - "listView": "List", - "folderView": "Folders", - "unknownCredential": "Unknown", - "confirmRemoveFromFolder": "Are you sure you want to remove \"{{name}}\" from folder \"{{folder}}\"? The credential will be moved to \"Uncategorized\".", - "removedFromFolder": "Credential \"{{name}}\" removed from folder successfully", - "failedToRemoveFromFolder": "Failed to remove credential from folder", - "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", - "failedToRenameFolder": "Failed to rename folder", - "movedToFolder": "Credential \"{{name}}\" moved to \"{{folder}}\" successfully", - "failedToMoveToFolder": "Failed to move credential to folder", - "sshPublicKey": "SSH Public Key", - "publicKeyNote": "Public key is optional but recommended for key validation", - "publicKeyUploaded": "Public Key Uploaded", - "uploadPublicKey": "Upload Public Key", - "uploadPrivateKeyFile": "Upload Private Key File", - "uploadPublicKeyFile": "Upload Public Key File", - "privateKeyRequiredForGeneration": "Private key is required to generate public key", - "failedToGeneratePublicKey": "Failed to generate public key", - "generatePublicKey": "Generate from Private Key", - "publicKeyGeneratedSuccessfully": "Public key generated successfully", - "detectedKeyType": "Detected key type", - "detectingKeyType": "detecting...", - "optional": "Optional", - "generateKeyPairNew": "Generate New Key Pair", - "generateEd25519": "Generate Ed25519", - "generateECDSA": "Generate ECDSA", - "generateRSA": "Generate RSA", + "deploymentProcess": "Proses Penyebaran", + "deploymentProcessDescription": "Ini akan menambahkan kunci publik dengan aman ke file ~/.ssh/authorized_keys pada host target tanpa menimpa kunci yang sudah ada. Operasi ini dapat dibatalkan.", + "chooseHostToDeploy": "Pilih host tempat untuk melakukan deployment...", + "deploying": "Sedang melakukan penyebaran...", + "name": "Nama", + "noHostsAvailable": "Tidak ada tuan rumah yang tersedia.", + "noHostsMatchSearch": "Tidak ada host yang sesuai dengan pencarian Anda.", + "sshKeyGenerationNotImplemented": "Fitur pembuatan kunci SSH akan segera hadir.", + "connectionTestingNotImplemented": "Fitur pengujian koneksi akan segera hadir.", + "testConnection": "Uji Koneksi", + "selectOrCreateFolder": "Pilih atau buat folder", + "noFolder": "Tidak ada folder", + "orCreateNewFolder": "Atau buat folder baru", + "addTag": "Tambahkan tag", + "saving": "Penghematan...", + "credentialId": "ID Kredensial", + "overview": "Ringkasan", + "security": "Keamanan", + "usage": "Penggunaan", + "securityDetails": "Detail Keamanan", + "securityDetailsDescription": "Lihat informasi kredensial terenkripsi", + "credentialSecured": "Kredensial Terjamin", + "credentialSecuredDescription": "Semua data sensitif dienkripsi dengan AES-256.", + "passwordAuthentication": "Autentikasi Kata Sandi", + "keyAuthentication": "Otentikasi Kunci", + "securityReminder": "Pengingat Keamanan", + "securityReminderText": "Jangan pernah membagikan kredensial Anda. Semua data dienkripsi saat disimpan.", + "hostsUsingCredential": "Host yang Menggunakan Kredensial Ini", + "noHostsUsingCredential": "Saat ini tidak ada host yang menggunakan kredensial ini.", + "timesUsed": "Kali Digunakan", + "lastUsed": "Terakhir Digunakan", + "connectedHosts": "Host yang Terhubung", + "created": "Dibuat", + "lastModified": "Terakhir Diubah", + "usageStatistics": "Statistik Penggunaan", + "copiedToClipboard": "{{field}} disalin ke papan klip", + "failedToCopy": "Gagal menyalin ke papan klip", + "sshKey": "Kunci SSH", + "createCredentialDescription": "Buat kredensial SSH baru untuk akses aman.", + "editCredentialDescription": "Perbarui informasi kredensial", + "listView": "Daftar", + "folderView": "Folder", + "unknownCredential": "Tidak dikenal", + "confirmRemoveFromFolder": "Apakah Anda yakin ingin menghapus \"{{name}}\" dari folder \"{{folder}}\"? Kredensial akan dipindahkan ke \"Tidak Berkategori\".", + "removedFromFolder": "Kredensial \"{{name}}\" berhasil dihapus dari folder", + "failedToRemoveFromFolder": "Gagal menghapus kredensial dari folder.", + "folderRenamed": "Folder \"{{oldName}}\" berhasil diganti namanya menjadi \"{{newName}}\"", + "failedToRenameFolder": "Gagal mengganti nama folder", + "movedToFolder": "Kredensial \"{{name}}\" berhasil dipindahkan ke \"{{folder}}\"", + "failedToMoveToFolder": "Gagal memindahkan kredensial ke folder.", + "sshPublicKey": "Kunci Publik SSH", + "publicKeyNote": "Kunci publik bersifat opsional tetapi direkomendasikan untuk validasi kunci.", + "publicKeyUploaded": "Kunci Publik Diunggah", + "uploadPublicKey": "Unggah Kunci Publik", + "uploadPrivateKeyFile": "Unggah File Kunci Pribadi", + "uploadPublicKeyFile": "Unggah File Kunci Publik", + "privateKeyRequiredForGeneration": "Kunci privat diperlukan untuk menghasilkan kunci publik.", + "failedToGeneratePublicKey": "Gagal menghasilkan kunci publik", + "generatePublicKey": "Hasilkan dari Kunci Pribadi", + "publicKeyGeneratedSuccessfully": "Kunci publik berhasil dibuat.", + "detectedKeyType": "Jenis kunci terdeteksi", + "detectingKeyType": "mendeteksi...", + "optional": "Opsional", + "generateKeyPairNew": "Hasilkan Pasangan Kunci Baru", + "generateEd25519": "Hasilkan Ed25519", + "generateECDSA": "Hasilkan ECDSA", + "generateRSA": "Hasilkan RSA", "keyTypeEcdsaP256": "ECDSA P-256 (SSH)", "keyTypeEcdsaP384": "ECDSA P-384 (SSH)", "keyTypeEcdsaP521": "ECDSA P-521 (SSH)", "keyTypeDsa": "DSA (SSH)", "keyTypeRsaSha256": "RSA-SHA2-256", "keyTypeRsaSha512": "RSA-SHA2-512", - "keyPairGeneratedSuccessfully": "{{keyType}} key pair generated successfully", - "failedToGenerateKeyPair": "Failed to generate key pair", - "generateKeyPairNote": "Generate a new SSH key pair directly. This will replace any existing keys in the form.", - "invalidKey": "Invalid Key", - "detectionError": "Detection Error", - "removing": "Removing:", - "clickToEditCredential": "Click to edit credential", - "dragToMoveBetweenFolders": "Drag to move between folders", - "keyBasedOnlyForDeployment": "Only SSH key-based credentials can be deployed", - "publicKeyRequiredForDeployment": "Public key is required for deployment", - "selectTargetHost": "Please select a target host", - "keyDeployedSuccessfully": "SSH key deployed successfully", - "deploymentFailed": "Deployment failed", - "failedToDeployKey": "Failed to deploy SSH key", - "clickToRenameFolder": "Click to rename folder", - "renameFolder": "Rename folder", - "idLabel": "ID:" + "keyPairGeneratedSuccessfully": "{{keyType}} pasangan kunci berhasil dibuat", + "failedToGenerateKeyPair": "Gagal menghasilkan pasangan kunci", + "generateKeyPairNote": "Buat pasangan kunci SSH baru secara langsung. Ini akan menggantikan kunci yang sudah ada dalam format tersebut.", + "invalidKey": "Kunci Tidak Valid", + "detectionError": "Kesalahan Deteksi", + "removing": "Menghapus:", + "clickToEditCredential": "Klik untuk mengedit kredensial", + "dragToMoveBetweenFolders": "Seret untuk berpindah antar folder", + "keyBasedOnlyForDeployment": "Hanya kredensial berbasis kunci SSH yang dapat digunakan.", + "publicKeyRequiredForDeployment": "Kunci publik diperlukan untuk penerapan.", + "selectTargetHost": "Silakan pilih host target.", + "keyDeployedSuccessfully": "Kunci SSH berhasil diinstal.", + "deploymentFailed": "Penyebaran gagal", + "failedToDeployKey": "Gagal menerapkan kunci SSH", + "clickToRenameFolder": "Klik untuk mengganti nama folder", + "renameFolder": "Ganti nama folder", + "idLabel": "PENGENAL:" }, "dragIndicator": { - "error": "Error: {{error}}", - "dragging": "Dragging {{fileName}}", - "preparing": "Preparing {{fileName}}", - "readySingle": "Ready to download {{fileName}}", - "readyMultiple": "Ready to download {{count}} files", - "batchDrag": "Drag {{count}} files to desktop", - "dragToDesktop": "Drag to desktop", - "canDragAnywhere": "You can drag files anywhere on your desktop" + "error": "Kesalahan: {{error}}", + "dragging": "Menyeret {{fileName}}", + "preparing": "Mempersiapkan {{fileName}}", + "readySingle": "Siap untuk diunduh {{fileName}}", + "readyMultiple": "Siap mengunduh {{count}} file", + "batchDrag": "Seret {{count}} file ke desktop", + "dragToDesktop": "Seret ke desktop", + "canDragAnywhere": "Anda dapat menyeret file ke mana saja di desktop Anda." }, "sshTools": { - "title": "SSH Tools", - "closeTools": "Close SSH Tools", - "keyRecording": "Key Recording", - "startKeyRecording": "Start Key Recording", - "stopKeyRecording": "Stop Key Recording", - "selectTerminals": "Select terminals:", - "typeCommands": "Type commands (all keys supported):", - "commandsWillBeSent": "Commands will be sent to {{count}} selected terminal(s).", - "settings": "Settings", - "enableRightClickCopyPaste": "Enable right‑click copy/paste", - "shareIdeas": "Have ideas for what should come next for ssh tools? Share them on", + "title": "Alat SSH", + "closeTools": "Tutup Alat SSH", + "keyRecording": "Rekaman Kunci", + "startKeyRecording": "Mulai Perekaman Tombol", + "stopKeyRecording": "Hentikan Perekaman Tombol", + "selectTerminals": "Pilih terminal:", + "typeCommands": "Ketik perintah (semua tombol didukung):", + "commandsWillBeSent": "Perintah akan dikirim ke {{count}} terminal yang dipilih.", + "settings": "Pengaturan", + "enableRightClickCopyPaste": "Aktifkan salin/tempel dengan klik kanan", + "shareIdeas": "Punya ide tentang apa yang seharusnya hadir selanjutnya untuk alat SSH? Bagikan ide Anda di sini.", "scripts": { - "inputPlaceholder": "e.g., System Commands, Docker Scripts" + "inputPlaceholder": "misalnya, Perintah Sistem, Skrip Docker" } }, "snippets": { - "title": "Snippets", - "new": "New Snippet", - "create": "Create Snippet", - "edit": "Edit Snippet", - "run": "Run", - "empty": "No snippets yet", - "emptyHint": "Create a snippet to save commonly used commands", - "searchSnippets": "Search snippets...", - "name": "Name", - "description": "Description", - "content": "Command", - "namePlaceholder": "e.g., Restart Nginx", - "descriptionPlaceholder": "Optional description", - "contentPlaceholder": "e.g., sudo systemctl restart nginx", - "nameRequired": "Name is required", - "contentRequired": "Command is required", - "createDescription": "Create a new command snippet for quick execution", - "editDescription": "Edit this command snippet", - "deleteConfirmTitle": "Delete Snippet", - "deleteConfirmDescription": "Are you sure you want to delete \"{{name}}\"?", - "createSuccess": "Snippet created successfully", - "updateSuccess": "Snippet updated successfully", - "deleteSuccess": "Snippet deleted successfully", - "createFailed": "Failed to create snippet", - "updateFailed": "Failed to update snippet", - "deleteFailed": "Failed to delete snippet", - "failedToFetch": "Failed to fetch snippets", - "executeSuccess": "Executing: {{name}}", - "copySuccess": "Copied \"{{name}}\" to clipboard", - "runTooltip": "Execute this snippet in the terminal", - "copyTooltip": "Copy snippet to clipboard", - "editTooltip": "Edit this snippet", - "deleteTooltip": "Delete this snippet", - "newFolder": "New Folder", - "reorderSameFolder": "Can only reorder snippets within the same folder", - "reorderSuccess": "Snippets reordered successfully", - "reorderFailed": "Failed to reorder snippets", - "deleteFolderConfirm": "Delete folder \"{{name}}\"? All snippets will be moved to Uncategorized.", - "deleteFolderSuccess": "Folder deleted successfully", - "deleteFolderFailed": "Failed to delete folder", - "updateFolderSuccess": "Folder updated successfully", - "createFolderSuccess": "Folder created successfully", - "updateFolderFailed": "Failed to update folder", - "createFolderFailed": "Failed to create folder", - "selectTerminals": "Select Terminals (optional)", - "executeOnSelected": "Execute on {{count}} selected terminal(s)", - "executeOnCurrent": "Execute on current terminal (click to select multiple)", - "folder": "Folder", - "selectFolder": "Select a folder or leave empty", - "noFolder": "No folder (Uncategorized)", - "folderName": "Folder Name", - "folderNameRequired": "Folder name is required", - "folderColor": "Folder Color", - "folderIcon": "Folder Icon", - "preview": "Preview", - "updateFolder": "Update Folder", - "createFolder": "Create Folder", + "title": "Cuplikan", + "new": "Cuplikan Baru", + "create": "Buat Cuplikan", + "edit": "Edit Cuplikan", + "run": "Berlari", + "empty": "Belum ada cuplikan", + "emptyHint": "Buat cuplikan kode untuk menyimpan perintah yang sering digunakan.", + "searchSnippets": "Cuplikan pencarian...", + "name": "Nama", + "description": "Keterangan", + "content": "Memerintah", + "namePlaceholder": "misalnya, Restart Nginx", + "descriptionPlaceholder": "Deskripsi opsional", + "contentPlaceholder": "misalnya, sudo systemctl restart nginx", + "nameRequired": "Nama wajib diisi.", + "contentRequired": "Perintah diperlukan", + "createDescription": "Buat cuplikan perintah baru untuk eksekusi cepat.", + "editDescription": "Edit cuplikan perintah ini", + "deleteConfirmTitle": "Hapus Cuplikan", + "deleteConfirmDescription": "Apakah Anda yakin ingin menghapus \"{{name}}\"?", + "createSuccess": "Cuplikan berhasil dibuat.", + "updateSuccess": "Cuplikan berhasil diperbarui.", + "deleteSuccess": "Cuplikan berhasil dihapus", + "createFailed": "Gagal membuat cuplikan", + "updateFailed": "Gagal memperbarui cuplikan", + "deleteFailed": "Gagal menghapus cuplikan", + "failedToFetch": "Gagal mengambil cuplikan", + "executeSuccess": "Menjalankan: {{name}}", + "copySuccess": "\"{{name}}\" disalin ke papan klip", + "runTooltip": "Jalankan cuplikan kode ini di terminal.", + "copyTooltip": "Salin cuplikan ke papan klip", + "editTooltip": "Edit cuplikan ini", + "deleteTooltip": "Hapus cuplikan ini", + "newFolder": "Folder Baru", + "reorderSameFolder": "Hanya dapat mengubah urutan cuplikan dalam folder yang sama.", + "reorderSuccess": "Cuplikan berhasil diurutkan ulang", + "reorderFailed": "Gagal menyusun ulang cuplikan", + "deleteFolderConfirm": "Hapus folder \"{{name}}\"? Semua cuplikan akan dipindahkan ke Tak Berkategori.", + "deleteFolderSuccess": "Folder berhasil dihapus.", + "deleteFolderFailed": "Gagal menghapus folder", + "updateFolderSuccess": "Folder berhasil diperbarui.", + "createFolderSuccess": "Folder berhasil dibuat.", + "updateFolderFailed": "Gagal memperbarui folder", + "createFolderFailed": "Gagal membuat folder", + "selectTerminals": "Pilih Terminal (opsional)", + "executeOnSelected": "Jalankan pada {{count}} terminal yang dipilih", + "executeOnCurrent": "Jalankan di terminal saat ini (klik untuk memilih beberapa)", + "folder": "Map", + "selectFolder": "Pilih folder atau biarkan kosong.", + "noFolder": "Tidak ada folder (Tidak terkategorikan)", + "folderName": "Nama Folder", + "folderNameRequired": "Nama folder wajib diisi.", + "folderColor": "Warna Folder", + "folderIcon": "Ikon Folder", + "preview": "Pratinjau", + "updateFolder": "Perbarui Folder", + "createFolder": "Buat Folder", "editFolder": "Edit Folder", - "editFolderDescription": "Customize your snippet folder", - "createFolderDescription": "Organize your snippets into folders" + "editFolderDescription": "Sesuaikan folder cuplikan Anda", + "createFolderDescription": "Susun cuplikan Anda ke dalam folder." }, "commandHistory": { - "title": "History", - "searchPlaceholder": "Search commands...", - "noTerminal": "No active terminal", - "noTerminalHint": "Open a terminal to see its command history.", - "empty": "No command history yet", - "emptyHint": "Execute commands in the active terminal to build its history.", - "noResults": "No commands found", - "noResultsHint": "No commands matching \"{{query}}\"", - "deleteSuccess": "Command deleted from history", - "deleteFailed": "Failed to delete command.", - "deleteTooltip": "Delete command", - "tabHint": "Use Tab in Terminal to autocomplete from command history if enabled in User Profile", - "authRequiredRefresh": "Authentication required. Please refresh the page.", - "dataAccessLockedReauth": "Data access locked. Please re-authenticate.", - "loading": "Loading command history...", - "error": "Error Loading History" + "title": "Sejarah", + "searchPlaceholder": "Perintah pencarian...", + "noTerminal": "Tidak ada terminal aktif.", + "noTerminalHint": "Buka terminal untuk melihat riwayat perintahnya.", + "empty": "Belum ada riwayat perintah.", + "emptyHint": "Jalankan perintah di terminal aktif untuk membangun riwayatnya.", + "noResults": "Tidak ada perintah yang ditemukan", + "noResultsHint": "Tidak ada perintah yang cocok dengan \"{{query}}\"", + "deleteSuccess": "Perintah dihapus dari riwayat", + "deleteFailed": "Perintah penghapusan gagal.", + "deleteTooltip": "Perintah hapus", + "tabHint": "Gunakan tombol Tab di Terminal untuk melengkapi otomatis dari riwayat perintah jika diaktifkan di Profil Pengguna.", + "authRequiredRefresh": "Diperlukan autentikasi. Silakan segarkan halaman.", + "dataAccessLockedReauth": "Akses data terkunci. Silakan autentikasi ulang.", + "loading": "Memuat riwayat perintah...", + "error": "Kesalahan Saat Memuat Riwayat" }, "splitScreen": { - "title": "Split Screen", - "none": "None", - "twoSplit": "2-Way", - "threeSplit": "3-Way", - "fourSplit": "4-Way", - "availableTabs": "Available Tabs", - "dragTabsHint": "Drag tabs to the layout cells below to assign them", - "layout": "Split Screen Layout", - "dropHere": "Drop tab here", - "apply": "Apply Split", - "clear": "Clear Split", - "selectMode": "Select a split screen mode", - "helpText": "Choose how many tabs you want to view at once", - "success": "Split screen applied successfully", - "cleared": "Split screen cleared", + "title": "Layar Terpisah", + "none": "Tidak ada", + "twoSplit": "Dua Arah", + "threeSplit": "3 Arah", + "fourSplit": "4 Arah", + "availableTabs": "Tab yang Tersedia", + "dragTabsHint": "Seret tab ke sel tata letak di bawah untuk menetapkannya.", + "layout": "Tata Letak Layar Terpisah", + "dropHere": "Jatuhkan tab di sini", + "apply": "Terapkan Pemisahan", + "clear": "Pemisahan yang Jelas", + "selectMode": "Pilih mode layar terpisah", + "helpText": "Pilih berapa banyak tab yang ingin Anda lihat sekaligus.", + "success": "Layar terpisah berhasil diterapkan.", + "cleared": "Layar terpisah telah dibersihkan.", "error": { - "noAssignments": "Please assign at least one tab to the layout", - "fillAllSlots": "Please fill all {{count}} slots before applying" + "noAssignments": "Harap tetapkan setidaknya satu tab ke tata letak.", + "fillAllSlots": "Harap isi semua {{count}} slot sebelum mendaftar" } }, "homepage": { - "loggedInTitle": "Logged in!", - "loggedInMessage": "You are logged in! Use the sidebar to access all available tools. To get started, create an SSH Host in the SSH Manager tab. Once created, you can connect to that host using the other apps in the sidebar.", - "failedToLoadAlerts": "Failed to load alerts", - "failedToDismissAlert": "Failed to dismiss alert" + "loggedInTitle": "Berhasil masuk!", + "loggedInMessage": "Anda sudah masuk! Gunakan bilah sisi untuk mengakses semua alat yang tersedia. Untuk memulai, buat Host SSH di tab Pengelola SSH. Setelah dibuat, Anda dapat terhubung ke host tersebut menggunakan aplikasi lain di bilah sisi.", + "failedToLoadAlerts": "Peringatan gagal dimuat.", + "failedToDismissAlert": "Gagal menutup peringatan" }, "serverConfig": { - "title": "Server Configuration", - "description": "Configure the Termix server URL to connect to your backend services", - "serverUrl": "Server URL", - "enterServerUrl": "Please enter a server URL", - "testConnectionFirst": "Please test the connection first", - "connectionSuccess": "Connection successful!", - "connectionFailed": "Connection failed", - "connectionError": "Connection error occurred", - "connected": "Connected", - "disconnected": "Disconnected", - "configSaved": "Configuration saved successfully", - "saveFailed": "Failed to save configuration", - "saveError": "Error saving configuration", - "saving": "Saving...", - "saveConfig": "Save Configuration", - "helpText": "Enter the URL where your Termix server is running (e.g., http://localhost:30001 or https://your-server.com)", - "warning": "Warning", - "notValidatedWarning": "URL not validated - ensure it's correct", - "changeServer": "Change Server", - "mustIncludeProtocol": "Server URL must start with http:// or https://" + "title": "Konfigurasi Server", + "description": "Konfigurasikan URL server Termix untuk terhubung ke layanan backend Anda.", + "serverUrl": "URL Server", + "enterServerUrl": "Silakan masukkan URL server", + "testConnectionFirst": "Silakan uji koneksi terlebih dahulu.", + "connectionSuccess": "Koneksi berhasil!", + "connectionFailed": "Koneksi gagal", + "connectionError": "Terjadi kesalahan koneksi.", + "connected": "Terhubung", + "disconnected": "Terputus", + "configSaved": "Konfigurasi berhasil disimpan.", + "saveFailed": "Gagal menyimpan konfigurasi", + "saveError": "Terjadi kesalahan saat menyimpan konfigurasi.", + "saving": "Penghematan...", + "saveConfig": "Simpan Konfigurasi", + "helpText": "Masukkan URL tempat server Termix Anda berjalan (misalnya, http://localhost:30001 atau https://your-server.com)", + "warning": "Peringatan", + "notValidatedWarning": "URL belum divalidasi - pastikan URL sudah benar.", + "changeServer": "Ubah Server", + "mustIncludeProtocol": "URL server harus diawali dengan http:// atau https://" }, "versionCheck": { - "error": "Version Check Error", - "checkFailed": "Failed to check for updates", - "upToDate": "App is Up to Date", - "currentVersion": "You are running version {{version}}", - "updateAvailable": "Update Available", - "newVersionAvailable": "A new version is available! You are running {{current}}, but {{latest}} is available.", - "releasedOn": "Released on {{date}}", - "downloadUpdate": "Download Update", - "dismiss": "Dismiss", - "checking": "Checking for updates...", - "checkUpdates": "Check for Updates", - "checkingUpdates": "Checking for updates...", - "refresh": "Refresh", - "updateRequired": "Update Required", - "updateDismissed": "Update notification dismissed", - "noUpdatesFound": "No updates found" + "error": "Kesalahan Pemeriksaan Versi", + "checkFailed": "Gagal memeriksa pembaruan.", + "upToDate": "Aplikasi sudah diperbarui.", + "currentVersion": "Anda menjalankan versi {{version}}", + "updateAvailable": "Pembaruan Tersedia", + "newVersionAvailable": "Versi baru tersedia! Anda menjalankan {{current}}, tetapi {{latest}} tersedia.", + "releasedOn": "Dirilis pada {{date}}", + "downloadUpdate": "Unduh Pembaruan", + "dismiss": "Membubarkan", + "checking": "Memeriksa pembaruan...", + "checkUpdates": "Periksa Pembaruan", + "checkingUpdates": "Memeriksa pembaruan...", + "refresh": "Menyegarkan", + "updateRequired": "Pembaruan Diperlukan", + "updateDismissed": "Pemberitahuan pembaruan ditolak.", + "noUpdatesFound": "Tidak ada pembaruan yang ditemukan." }, "common": { - "close": "Close", - "minimize": "Minimize", - "online": "Online", + "close": "Menutup", + "minimize": "Memperkecil", + "online": "On line", "offline": "Offline", - "continue": "Continue", - "maintenance": "Maintenance", - "degraded": "Degraded", - "discord": "Discord", - "error": "Error", - "warning": "Warning", - "info": "Info", - "success": "Success", - "loading": "Loading...", - "required": "Required", - "optional": "Optional", - "connect": "Connect", - "connecting": "Connecting...", - "creating": "Creating...", - "clear": "Clear", - "toggleSidebar": "Toggle Sidebar", + "continue": "Melanjutkan", + "maintenance": "Pemeliharaan", + "degraded": "Terdegradasi", + "discord": "Perselisihan", + "error": "Kesalahan", + "warning": "Peringatan", + "info": "Informasi", + "success": "Kesuksesan", + "loading": "Memuat...", + "required": "Diperlukan", + "optional": "Opsional", + "connect": "Menghubungkan", + "connecting": "Menghubungkan...", + "creating": "Membuat...", + "clear": "Jernih", + "toggleSidebar": "Alihkan Sidebar", "sidebar": "Sidebar", - "home": "Home", - "expired": "Expired", - "expiresToday": "Expires today", - "expiresTomorrow": "Expires in {{days}} days", - "updateAvailable": "Update Available", - "sshPath": "SSH Path", - "localPath": "Local Path", + "home": "Rumah", + "expired": "Kedaluwarsa", + "expiresToday": "Berakhir hari ini", + "expiresTomorrow": "Berakhir dalam {{days}} hari", + "updateAvailable": "Pembaruan Tersedia", + "sshPath": "Jalur SSH", + "localPath": "Jalur Lokal", "appName": "Termix", - "resetSidebarWidth": "Reset sidebar width", - "dragToResizeSidebar": "Drag to resize sidebar", - "noAuthCredentials": "No authentication credentials available for this SSH host", - "noReleases": "No Releases", - "updatesAndReleases": "Updates & Releases", - "newVersionAvailable": "A new version ({{version}}) is available.", - "failedToFetchUpdateInfo": "Failed to fetch update information", - "preRelease": "Pre-release", - "loginFailed": "Login failed", - "noReleasesFound": "No releases found.", - "yourBackupCodes": "Your Backup Codes", - "sendResetCode": "Send Reset Code", - "verifyCode": "Verify Code", - "resetPassword": "Reset Password", - "resetCode": "Reset Code", - "newPassword": "New Password", - "folder": "Folder", - "file": "File", - "renamedSuccessfully": "renamed successfully", - "deletedSuccessfully": "deleted successfully", - "noTunnelConnections": "No tunnel connections configured", - "sshTools": "SSH Tools", - "english": "English", - "chinese": "Chinese", - "german": "German", - "cancel": "Cancel", - "username": "Username", - "name": "Name", + "resetSidebarWidth": "Atur ulang lebar sidebar", + "dragToResizeSidebar": "Seret untuk mengubah ukuran bilah sisi", + "noAuthCredentials": "Tidak ada kredensial otentikasi yang tersedia untuk host SSH ini.", + "noReleases": "Tidak ada rilis", + "updatesAndReleases": "Pembaruan & Rilis", + "newVersionAvailable": "Versi baru ({{version}}) tersedia.", + "failedToFetchUpdateInfo": "Gagal mengambil informasi pembaruan.", + "preRelease": "Pra-rilis", + "loginFailed": "Login gagal.", + "noReleasesFound": "Tidak ada rilis yang ditemukan.", + "yourBackupCodes": "Kode Cadangan Anda", + "sendResetCode": "Kirim Kode Reset", + "verifyCode": "Verifikasi Kode", + "resetPassword": "Atur Ulang Kata Sandi", + "resetCode": "Atur Ulang Kode", + "newPassword": "Kata Sandi Baru", + "folder": "Map", + "file": "Mengajukan", + "renamedSuccessfully": "berhasil diganti namanya", + "deletedSuccessfully": "berhasil dihapus", + "noTunnelConnections": "Tidak ada koneksi terowongan yang dikonfigurasi.", + "sshTools": "Alat SSH", + "english": "Bahasa inggris", + "chinese": "Cina", + "german": "Jerman", + "cancel": "Membatalkan", + "username": "Nama belakang", + "name": "Nama", "login": "Login", - "logout": "Logout", - "register": "Register", - "password": "Password", - "version": "Version", - "confirmPassword": "Confirm Password", - "back": "Back", - "email": "Email", - "submit": "Submit", - "change": "Change", - "save": "Save", - "saving": "Saving...", - "delete": "Delete", + "logout": "Keluar", + "register": "Daftar", + "password": "Kata sandi", + "version": "Versi", + "confirmPassword": "Konfirmasi Kata Sandi", + "back": "Kembali", + "email": "E-mail", + "submit": "Kirim", + "change": "Mengubah", + "save": "Menyimpan", + "saving": "Penghematan...", + "delete": "Menghapus", "edit": "Edit", - "add": "Add", - "search": "Search", - "confirm": "Confirm", - "yes": "Yes", - "no": "No", - "ok": "OK", - "enabled": "Enabled", - "disabled": "Disabled", - "important": "Important", - "notEnabled": "Not Enabled", - "settingUp": "Setting up...", - "next": "Next", - "previous": "Previous", - "refresh": "Refresh", - "settings": "Settings", - "profile": "Profile", - "help": "Help", - "about": "About", - "language": "Language", - "autoDetect": "Auto-detect", - "changeAccountPassword": "Change your account password", - "passwordResetTitle": "Password Reset", - "passwordResetDescription": "You are about to reset your password. This will log you out of all active sessions.", - "enterSixDigitCode": "Enter the 6-digit code from the docker container logs for user:", - "enterNewPassword": "Enter your new password for user:", - "passwordsDoNotMatch": "Passwords do not match", - "passwordMinLength": "Password must be at least 6 characters long", - "passwordResetSuccess": "Password reset successfully! You can now log in with your new password.", - "failedToInitiatePasswordReset": "Failed to initiate password reset", - "failedToVerifyResetCode": "Failed to verify reset code", - "failedToCompletePasswordReset": "Failed to complete password reset", - "documentation": "Documentation", - "retry": "Retry", - "checking": "Checking...", - "checkingDatabase": "Checking database connection...", - "actions": "Actions", - "remove": "Remove", - "revoke": "Revoke", - "create": "Create" + "add": "Menambahkan", + "search": "Mencari", + "confirm": "Mengonfirmasi", + "yes": "Ya", + "no": "TIDAK", + "ok": "OKE", + "enabled": "Diaktifkan", + "disabled": "Dengan disabilitas", + "important": "Penting", + "notEnabled": "Tidak Diaktifkan", + "settingUp": "Sedang mempersiapkan...", + "next": "Berikutnya", + "previous": "Sebelumnya", + "refresh": "Menyegarkan", + "settings": "Pengaturan", + "profile": "Profil", + "help": "Membantu", + "about": "Tentang", + "language": "Bahasa", + "autoDetect": "Deteksi otomatis", + "changeAccountPassword": "Ubah kata sandi akun Anda", + "passwordResetTitle": "Reset Kata Sandi", + "passwordResetDescription": "Anda akan mengatur ulang kata sandi Anda. Ini akan membuat Anda keluar dari semua sesi aktif.", + "enterSixDigitCode": "Masukkan kode 6 digit dari log kontainer Docker untuk pengguna:", + "enterNewPassword": "Masukkan kata sandi baru Anda untuk pengguna:", + "passwordsDoNotMatch": "Kata sandi tidak cocok", + "passwordMinLength": "Kata sandi harus minimal 6 karakter.", + "passwordResetSuccess": "Reset kata sandi berhasil! Anda sekarang dapat masuk dengan kata sandi baru Anda.", + "failedToInitiatePasswordReset": "Gagal memulai pengaturan ulang kata sandi.", + "failedToVerifyResetCode": "Gagal memverifikasi kode reset", + "failedToCompletePasswordReset": "Gagal menyelesaikan pengaturan ulang kata sandi.", + "documentation": "Dokumentasi", + "retry": "Mencoba kembali", + "checking": "Sedang memeriksa...", + "checkingDatabase": "Memeriksa koneksi basis data...", + "actions": "Tindakan", + "remove": "Menghapus", + "revoke": "Menarik kembali", + "create": "Membuat" }, "nav": { - "home": "Home", - "hosts": "Hosts", - "credentials": "Credentials", + "home": "Rumah", + "hosts": "Tuan rumah", + "credentials": "Kredensial", "terminal": "Terminal", - "docker": "Docker", - "tunnels": "Tunnels", - "fileManager": "File Manager", - "serverStats": "Server Stats", + "docker": "Buruh pelabuhan", + "tunnels": "Terowongan", + "fileManager": "Pengelola File", + "serverStats": "Statistik Server", "admin": "Admin", - "userProfile": "User Profile", - "tools": "Tools", - "snippets": "Snippets", - "newTab": "New Tab", - "splitScreen": "Split Screen", - "closeTab": "Close Tab", - "sshManager": "SSH Manager", - "hostManager": "Host Manager", - "cannotSplitTab": "Cannot split this tab", - "tabNavigation": "Tab Navigation", + "userProfile": "Profil Pengguna", + "tools": "Peralatan", + "snippets": "Cuplikan", + "newTab": "Tab Baru", + "splitScreen": "Layar Terpisah", + "closeTab": "Tutup Tab", + "sshManager": "Manajer SSH", + "hostManager": "Manajer Host", + "cannotSplitTab": "Tidak dapat memisahkan tab ini", + "tabNavigation": "Navigasi Tab", "hostTabTitle": "{{username}}@{{ip}}:{{port}}" }, "admin": { - "title": "Admin Settings", + "title": "Pengaturan Admin", "oidc": "OIDC", - "users": "Users", - "userManagement": "User Management", - "makeAdmin": "Make Admin", - "removeAdmin": "Remove Admin", - "deleteUser": "Delete user {{username}}? This cannot be undone.", - "allowRegistration": "Allow Registration", - "oidcSettings": "OIDC Settings", - "clientId": "Client ID", - "clientSecret": "Client Secret", - "issuerUrl": "Issuer URL", - "authorizationUrl": "Authorization URL", - "tokenUrl": "Token URL", - "updateSettings": "Update Settings", - "confirmDelete": "Are you sure you want to delete this user?", - "confirmMakeAdmin": "Are you sure you want to make {{username}} an admin?", - "confirmRemoveAdmin": "Are you sure you want to remove admin status from {{username}}?", - "externalAuthentication": "External Authentication (OIDC)", - "configureExternalProvider": "Configure external identity provider for OIDC/OAuth2 authentication.", - "userIdentifierPath": "User Identifier Path", - "displayNamePath": "Display Name Path", - "scopes": "Scopes", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "reset": "Reset", - "success": "Success", - "loading": "Loading...", - "refresh": "Refresh", - "loadingUsers": "Loading users...", - "username": "Username", - "type": "Type", - "actions": "Actions", - "external": "External", - "local": "Local", - "adminManagement": "Admin Management", - "makeUserAdmin": "Make User Admin", - "adding": "Adding...", - "currentAdmins": "Current Admins", + "users": "Pengguna", + "userManagement": "Manajemen Pengguna", + "makeAdmin": "Jadikan Admin", + "removeAdmin": "Hapus Admin", + "deleteUser": "Hapus pengguna {{username}}? Tindakan ini tidak dapat dibatalkan.", + "allowRegistration": "Izinkan Pendaftaran", + "oidcSettings": "Pengaturan OIDC", + "clientId": "ID Klien", + "clientSecret": "Rahasia Klien", + "issuerUrl": "URL Penerbit", + "authorizationUrl": "URL Otorisasi", + "tokenUrl": "URL Token", + "updateSettings": "Perbarui Pengaturan", + "confirmDelete": "Apakah Anda yakin ingin menghapus pengguna ini?", + "confirmMakeAdmin": "Apakah Anda yakin ingin menjadikan {{username}} sebagai admin?", + "confirmRemoveAdmin": "Apakah Anda yakin ingin menghapus status admin dari {{username}}?", + "externalAuthentication": "Otentikasi Eksternal (OIDC)", + "configureExternalProvider": "Konfigurasikan penyedia identitas eksternal untuk autentikasi OIDC/OAuth2.", + "userIdentifierPath": "Jalur Pengidentifikasi Pengguna", + "displayNamePath": "Jalur Nama Tampilan", + "scopes": "Lingkup", + "saving": "Penghematan...", + "saveConfiguration": "Simpan Konfigurasi", + "reset": "Mengatur ulang", + "success": "Kesuksesan", + "loading": "Memuat...", + "refresh": "Menyegarkan", + "loadingUsers": "Sedang memuat pengguna...", + "username": "Nama belakang", + "type": "Jenis", + "actions": "Tindakan", + "external": "Luar", + "local": "Lokal", + "adminManagement": "Manajemen Admin", + "makeUserAdmin": "Jadikan Pengguna Admin", + "adding": "Menambahkan...", + "currentAdmins": "Admin Saat Ini", "adminBadge": "Admin", - "removeAdminButton": "Remove Admin", - "general": "General", - "userRegistration": "User Registration", - "allowNewAccountRegistration": "Allow new account registration", - "allowPasswordLogin": "Allow username/password login", - "missingRequiredFields": "Missing required fields: {{fields}}", - "oidcConfigurationUpdated": "OIDC configuration updated successfully!", - "failedToFetchOidcConfig": "Failed to fetch OIDC configuration", - "failedToFetchRegistrationStatus": "Failed to fetch registration status", - "failedToFetchPasswordLoginStatus": "Failed to fetch password login status", - "failedToFetchUsers": "Failed to fetch users", - "oidcConfigurationDisabled": "OIDC configuration disabled successfully!", - "failedToUpdateOidcConfig": "Failed to update OIDC configuration", - "failedToDisableOidcConfig": "Failed to disable OIDC configuration", - "enterUsernameToMakeAdmin": "Enter username to make admin", - "userIsNowAdmin": "User {{username}} is now an admin", - "failedToMakeUserAdmin": "Failed to make user admin", - "removeAdminStatus": "Remove admin status from {{username}}?", - "adminStatusRemoved": "Admin status removed from {{username}}", - "failedToRemoveAdminStatus": "Failed to remove admin status", - "userDeletedSuccessfully": "User {{username}} deleted successfully", - "failedToDeleteUser": "Failed to delete user", - "overrideUserInfoUrl": "Override User Info URL (not required)", - "failedToFetchSessions": "Failed to fetch sessions", - "sessionRevokedSuccessfully": "Session revoked successfully", - "failedToRevokeSession": "Failed to revoke session", - "confirmRevokeSession": "Are you sure you want to revoke this session?", - "confirmRevokeAllSessions": "Are you sure you want to revoke all sessions for this user?", - "failedToRevokeSessions": "Failed to revoke sessions", - "sessionsRevokedSuccessfully": "Sessions revoked successfully", - "linkToPasswordAccount": "Link to Password Account", - "linkOIDCDialogTitle": "Link OIDC Account to Password Account", - "linkOIDCDialogDescription": "Link {{username}} (OIDC user) to an existing password account. This will enable dual authentication for the password account.", - "createUser": "Create User", - "createUserDescription": "Create a new local user with username and password", - "enterUsername": "Enter username", - "enterPassword": "Enter password", - "userCreatedSuccessfully": "User {{username}} created successfully", - "failedToCreateUser": "Failed to create user", - "manageUser": "Manage User", - "manageUserDescription": "Manage user settings, roles, and permissions", - "authType": "Authentication Type", - "adminStatus": "Admin Status", - "userId": "User ID", - "regularUser": "Regular User", - "adminPrivileges": "Administrator Privileges", - "administratorRole": "Administrator Role", - "administratorRoleDescription": "Grant full system access and management privileges", - "passwordManagement": "Password Management", - "passwordResetWarning": "Resetting a user's password will delete all their data (SSH hosts, credentials, settings). This action cannot be undone.", - "resetUserPassword": "Reset User Password", - "resettingPassword": "Resetting...", - "passwordResetInitiated": "Password reset initiated for {{username}}. Reset code sent.", - "failedToResetPassword": "Failed to initiate password reset", - "sessionManagement": "Session Management", - "revokeAllSessions": "Revoke All Sessions", - "revokeAllSessionsDescription": "Force logout from all devices and sessions", - "revoking": "Revoking...", - "revoke": "Revoke All", - "dangerZone": "Danger Zone", - "deleteUserTitle": "Delete User Account", - "deleteUserWarning": "Permanently delete this user account and all associated data. This action cannot be undone.", - "deleting": "Deleting...", - "cannotDeleteSelf": "You cannot delete your own account", - "cannotRemoveLastAdmin": "Cannot remove the last administrator", - "cannotRemoveOwnAdmin": "You cannot remove your own admin privileges", - "cannotModifyOwnAdminStatus": "You cannot modify your own admin status", - "dualAuth": "Dual Auth", - "externalOIDC": "External (OIDC)", - "localPassword": "Local Password", - "confirmRevokeOwnSessions": "Are you sure you want to revoke all your own sessions? You will be logged out.", - "linkOIDCWarningTitle": "Warning: OIDC User Data Will Be Deleted", - "linkOIDCActionDeleteUser": "Delete the OIDC user account and all their data", - "linkOIDCActionAddCapability": "Add OIDC login capability to the target password account", - "linkOIDCActionDualAuth": "Allow the password account to login with both password and OIDC", - "linkTargetUsernameLabel": "Target Password Account Username", - "linkTargetUsernamePlaceholder": "Enter username of password account", - "linkAccountsButton": "Link Accounts", - "linkingAccounts": "Linking...", - "accountsLinkedSuccessfully": "OIDC user {{oidcUsername}} has been linked to {{targetUsername}}", - "failedToLinkAccounts": "Failed to link accounts", - "linkTargetUsernameRequired": "Target username is required", - "unlinkOIDCTitle": "Unlink OIDC Authentication", - "unlinkOIDCDescription": "Remove OIDC authentication from {{username}}? The user will only be able to login with username/password after this.", - "unlinkOIDCSuccess": "OIDC unlinked from {{username}}", - "failedToUnlinkOIDC": "Failed to unlink OIDC", - "databaseSecurity": "Database Security", - "encryptionStatus": "Encryption Status", - "encryptionEnabled": "Encryption Enabled", - "enabled": "Enabled", - "disabled": "Disabled", - "keyId": "Key ID", - "created": "Created", - "migrationStatus": "Migration Status", - "migrationCompleted": "Migration completed", - "migrationRequired": "Migration required", - "deviceProtectedMasterKey": "Environment-Protected Master Key", - "legacyKeyStorage": "Legacy Key Storage", - "masterKeyEncryptedWithDeviceFingerprint": "Master key encrypted with environment fingerprint (KEK protection active)", - "keyNotProtectedByDeviceBinding": "Key not protected by environment binding (upgrade recommended)", - "valid": "Valid", - "initializeDatabaseEncryption": "Initialize Database Encryption", - "enableAes256EncryptionWithDeviceBinding": "Enable AES-256 encryption with environment-bound master key protection. This creates enterprise-grade security for SSH keys, passwords, and authentication tokens.", - "featuresEnabled": "Features enabled:", - "aes256GcmAuthenticatedEncryption": "AES-256-GCM authenticated encryption", - "deviceFingerprintMasterKeyProtection": "Environment fingerprint master key protection (KEK)", - "pbkdf2KeyDerivation": "PBKDF2 key derivation with 100K iterations", - "automaticKeyManagement": "Automatic key management and rotation", - "initializing": "Initializing...", - "initializeEnterpriseEncryption": "Initialize Enterprise Encryption", - "migrateExistingData": "Migrate Existing Data", - "encryptExistingUnprotectedData": "Encrypt existing unprotected data in your database. This process is safe and creates automatic backups.", - "testMigrationDryRun": "Verify Encryption Compatibility", - "migrating": "Migrating...", - "migrateData": "Migrate Data", - "securityInformation": "Security Information", - "sshPrivateKeysEncryptedWithAes256": "SSH private keys and passwords are encrypted with AES-256-GCM", - "userAuthTokensProtected": "User authentication tokens and 2FA secrets are protected", - "masterKeysProtectedByDeviceFingerprint": "Master encryption keys are protected by device fingerprint (KEK)", - "keysBoundToServerInstance": "Keys are bound to current server environment (migratable via environment variables)", - "pbkdf2HkdfKeyDerivation": "PBKDF2 + HKDF key derivation with 100K iterations", - "backwardCompatibleMigration": "All data remains backward compatible during migration", - "enterpriseGradeSecurityActive": "Enterprise-Grade Security Active", - "masterKeysProtectedByDeviceBinding": "Your master encryption keys are protected by environment fingerprinting. This uses server hostname, paths, and other environment info to generate protection keys. To migrate servers, set the DB_ENCRYPTION_KEY environment variable on the new server.", - "important": "Important", - "keepEncryptionKeysSecure": "Ensure data security: regularly backup your database files and server configuration. To migrate to a new server, set the DB_ENCRYPTION_KEY environment variable on the new environment, or maintain the same hostname and directory structure.", - "loadingEncryptionStatus": "Loading encryption status...", - "testMigrationDescription": "Verify that existing data can be safely migrated to encrypted format without actually modifying any data", - "serverMigrationGuide": "Server Migration Guide", - "migrationInstructions": "To migrate encrypted data to a new server: 1) Backup database files, 2) Set environment variable DB_ENCRYPTION_KEY=\"your-key\" on new server, 3) Restore database files", - "environmentProtection": "Environment Protection", - "environmentProtectionDesc": "Protects encryption keys based on server environment info (hostname, paths, etc.), migratable via environment variables", - "verificationCompleted": "Compatibility verification completed - no data was changed", - "verificationInProgress": "Verification completed", - "dataMigrationCompleted": "Data migration completed successfully!", - "verificationFailed": "Compatibility verification failed", - "migrationFailed": "Migration failed", - "runningVerification": "Running compatibility verification...", - "startingMigration": "Starting migration...", - "hardwareFingerprintSecurity": "Hardware Fingerprint Security", - "hardwareBoundEncryption": "Hardware-Bound Encryption Active", - "masterKeysNowProtectedByHardwareFingerprint": "Master keys are now protected by real hardware fingerprinting instead of environment variables", - "cpuSerialNumberDetection": "CPU serial number detection", - "motherboardUuidIdentification": "Motherboard UUID identification", - "diskSerialNumberVerification": "Disk serial number verification", - "biosSerialNumberCheck": "BIOS serial number check", - "stableMacAddressFiltering": "Stable MAC address filtering", - "databaseFileEncryption": "Database File Encryption", - "dualLayerProtection": "Dual-Layer Protection Active", - "bothFieldAndFileEncryptionActive": "Both field-level and file-level encryption are now active for maximum security", - "fieldLevelAes256Encryption": "Field-level AES-256 encryption for sensitive data", - "fileLevelDatabaseEncryption": "File-level database encryption with hardware binding", - "hardwareBoundFileKeys": "Hardware-bound file encryption keys", - "automaticEncryptedBackups": "Automatic encrypted backup creation", - "createEncryptedBackup": "Create Encrypted Backup", - "creatingBackup": "Creating Backup...", - "backupCreated": "Backup Created", - "encryptedBackupCreatedSuccessfully": "Encrypted backup created successfully", - "backupCreationFailed": "Backup creation failed", - "databaseMigration": "Database Migration", - "exportForMigration": "Export for Migration", - "exportDatabaseForHardwareMigration": "Export database as SQLite file with decrypted data for migration to new hardware", - "exportDatabase": "Export SQLite Database", - "exporting": "Exporting...", - "exportCreated": "SQLite Export Created", - "exportContainsDecryptedData": "SQLite export contains decrypted data - keep secure!", - "databaseExportedSuccessfully": "SQLite database exported successfully", - "databaseExportFailed": "SQLite database export failed", - "importFromMigration": "Import from Migration", - "importDatabaseFromAnotherSystem": "Import SQLite database from another system or hardware", - "importDatabase": "Import SQLite Database", - "importing": "Importing...", - "selectedFile": "Selected SQLite File", - "importWillReplaceExistingData": "SQLite import will replace existing data - backup recommended!", - "pleaseSelectImportFile": "Please select a SQLite import file", - "databaseImportedSuccessfully": "SQLite database imported successfully", - "databaseImportFailed": "SQLite database import failed", - "manageEncryptionAndBackups": "Manage encryption keys, database security, and backup operations", - "activeSecurityFeatures": "Currently active security measures and protections", - "deviceBindingTechnology": "Advanced hardware-based key protection technology", - "backupAndRecovery": "Secure backup creation and database recovery options", - "crossSystemDataTransfer": "Export and import databases across different systems", - "noMigrationNeeded": "No migration needed", - "encryptionKey": "Encryption Key", - "keyProtection": "Key Protection", - "active": "Active", - "legacy": "Legacy", - "dataStatus": "Data Status", - "encrypted": "Encrypted", - "needsMigration": "Needs Migration", - "ready": "Ready", - "initializeEncryption": "Initialize Encryption", - "initialize": "Initialize", - "test": "Test", - "migrate": "Migrate", - "backup": "Backup", - "createBackup": "Create Backup", - "exportImport": "Export/Import", - "export": "Export", - "import": "Import", - "passwordRequired": "Password required", - "confirmExport": "Confirm Export", - "exportDescription": "Export SSH hosts and credentials as SQLite file", - "importDescription": "Import SQLite file with incremental merge (skips duplicates)", - "criticalWarning": "Critical Warning", - "cannotDisablePasswordLoginWithoutOIDC": "Cannot disable password login without OIDC configured! You must configure OIDC authentication before disabling password login, or you will lose access to Termix.", - "confirmDisablePasswordLogin": "Are you sure you want to disable password login? Make sure OIDC is properly configured and working before proceeding, or you will lose access to your Termix instance.", - "passwordLoginDisabled": "Password login disabled successfully", - "passwordLoginAndRegistrationDisabled": "Password login and new account registration disabled successfully", - "requiresPasswordLogin": "Requires password login enabled", - "passwordLoginDisabledWarning": "Password login is disabled. Ensure OIDC is properly configured or you will not be able to log in to Termix.", - "oidcRequiredWarning": "CRITICAL: Password login is disabled. If you reset or misconfigure OIDC, you will lose all access to Termix and brick your instance. Only proceed if you are absolutely certain.", - "confirmDisableOIDCWarning": "WARNING: You are about to disable OIDC while password login is also disabled. This will brick your Termix instance and you will lose all access. Are you absolutely sure you want to proceed?", - "failedToUpdatePasswordLoginStatus": "Failed to update password login status", - "loadingSessions": "Loading sessions...", - "noActiveSessions": "No active sessions found.", - "device": "Device", - "user": "User", - "lastActive": "Last Active", - "expires": "Expires", - "revoked": "Revoked", - "revokeAllUserSessionsTitle": "Revoke all sessions for this user", - "revokeAll": "Revoke All", - "linkOidcToPasswordAccount": "Link OIDC Account to Password Account", - "linkOidcToPasswordAccountDescription": "Link {{username}} (OIDC user) to an existing password account. This will enable dual authentication for the password account.", - "linkOidcWarningTitle": "Warning: OIDC User Data Will Be Deleted", - "linkOidcWarningDescription": "This action will:", - "linkOidcActionDeleteUser": "Delete the OIDC user account and all their data", - "linkOidcActionAddCapability": "Add OIDC login capability to the target password account", - "linkOidcActionDualAuth": "Allow the password account to login with both password and OIDC", - "passwordMinLength": "Password must be at least 6 characters", - "currentRoles": "Current Roles", - "noRolesAssigned": "No roles assigned", - "assignNewRole": "Assign New Role" + "removeAdminButton": "Hapus Admin", + "general": "Umum", + "userRegistration": "Pendaftaran Pengguna", + "allowNewAccountRegistration": "Izinkan pendaftaran akun baru", + "allowPasswordLogin": "Izinkan login menggunakan nama pengguna/kata sandi.", + "missingRequiredFields": "Kolom yang wajib diisi belum terisi: {{fields}}", + "oidcConfigurationUpdated": "Konfigurasi OIDC berhasil diperbarui!", + "failedToFetchOidcConfig": "Gagal mengambil konfigurasi OIDC", + "failedToFetchRegistrationStatus": "Gagal mengambil status pendaftaran", + "failedToFetchPasswordLoginStatus": "Gagal mengambil status login kata sandi", + "failedToFetchUsers": "Gagal mengambil data pengguna.", + "oidcConfigurationDisabled": "Konfigurasi OIDC berhasil dinonaktifkan!", + "failedToUpdateOidcConfig": "Gagal memperbarui konfigurasi OIDC", + "failedToDisableOidcConfig": "Gagal menonaktifkan konfigurasi OIDC.", + "enterUsernameToMakeAdmin": "Masukkan nama pengguna untuk menjadi admin", + "userIsNowAdmin": "Pengguna {{username}} sekarang menjadi admin", + "failedToMakeUserAdmin": "Gagal menjadikan pengguna sebagai admin.", + "removeAdminStatus": "Hapus status admin dari {{username}}?", + "adminStatusRemoved": "Status admin dihapus dari {{username}}", + "failedToRemoveAdminStatus": "Gagal menghapus status admin", + "userDeletedSuccessfully": "Pengguna {{username}} berhasil dihapus", + "failedToDeleteUser": "Gagal menghapus pengguna", + "overrideUserInfoUrl": "Timpa URL Info Pengguna (tidak wajib)", + "failedToFetchSessions": "Gagal mengambil sesi", + "sessionRevokedSuccessfully": "Sesi berhasil dibatalkan", + "failedToRevokeSession": "Gagal mencabut sesi", + "confirmRevokeSession": "Apakah Anda yakin ingin membatalkan sesi ini?", + "confirmRevokeAllSessions": "Apakah Anda yakin ingin mencabut semua sesi untuk pengguna ini?", + "failedToRevokeSessions": "Gagal mencabut sesi", + "sessionsRevokedSuccessfully": "Sesi berhasil dibatalkan", + "linkToPasswordAccount": "Tautan ke Akun Kata Sandi", + "linkOIDCDialogTitle": "Hubungkan Akun OIDC ke Akun Kata Sandi", + "linkOIDCDialogDescription": "Hubungkan {{username}} (pengguna OIDC) ke akun kata sandi yang sudah ada. Ini akan mengaktifkan otentikasi ganda untuk akun kata sandi.", + "createUser": "Buat Pengguna", + "createUserDescription": "Buat pengguna lokal baru dengan nama pengguna dan kata sandi.", + "enterUsername": "Masukkan nama pengguna", + "enterPassword": "Masukkan kata sandi", + "userCreatedSuccessfully": "Pengguna {{username}} berhasil dibuat", + "failedToCreateUser": "Gagal membuat pengguna", + "manageUser": "Kelola Pengguna", + "manageUserDescription": "Kelola pengaturan pengguna, peran, dan izin.", + "authType": "Jenis Otentikasi", + "adminStatus": "Status Admin", + "userId": "ID Pengguna", + "regularUser": "Pengguna Biasa", + "adminPrivileges": "Hak Akses Administrator", + "administratorRole": "Peran Administrator", + "administratorRoleDescription": "Berikan akses penuh ke sistem dan hak istimewa manajemen.", + "passwordManagement": "Manajemen Kata Sandi", + "passwordResetWarning": "Mengatur ulang kata sandi pengguna akan menghapus semua data mereka (host SSH, kredensial, pengaturan). Tindakan ini tidak dapat dibatalkan.", + "resetUserPassword": "Atur Ulang Kata Sandi Pengguna", + "resettingPassword": "Mengatur ulang...", + "passwordResetInitiated": "Reset kata sandi dimulai untuk {{username}}. Kode reset telah dikirim.", + "failedToResetPassword": "Gagal memulai pengaturan ulang kata sandi.", + "sessionManagement": "Manajemen Sesi", + "revokeAllSessions": "Batalkan Semua Sesi", + "revokeAllSessionsDescription": "Paksa logout dari semua perangkat dan sesi.", + "revoking": "Mencabut...", + "revoke": "Cabut Semua", + "dangerZone": "Zona Bahaya", + "deleteUserTitle": "Hapus Akun Pengguna", + "deleteUserWarning": "Hapus secara permanen akun pengguna ini dan semua data terkait. Tindakan ini tidak dapat dibatalkan.", + "deleting": "Menghapus...", + "cannotDeleteSelf": "Anda tidak dapat menghapus akun Anda sendiri.", + "cannotRemoveLastAdmin": "Tidak dapat menghapus administrator terakhir.", + "cannotRemoveOwnAdmin": "Anda tidak dapat menghapus hak akses administrator Anda sendiri.", + "cannotModifyOwnAdminStatus": "Anda tidak dapat mengubah status admin Anda sendiri.", + "dualAuth": "Otorisasi Ganda", + "externalOIDC": "Eksternal (OIDC)", + "localPassword": "Kata Sandi Lokal", + "confirmRevokeOwnSessions": "Apakah Anda yakin ingin mencabut semua sesi Anda sendiri? Anda akan keluar dari akun.", + "linkOIDCWarningTitle": "Peringatan: Data Pengguna OIDC Akan Dihapus", + "linkOIDCActionDeleteUser": "Hapus akun pengguna OIDC dan semua datanya.", + "linkOIDCActionAddCapability": "Tambahkan kemampuan login OIDC ke akun kata sandi target.", + "linkOIDCActionDualAuth": "Izinkan akun kata sandi untuk masuk menggunakan kata sandi dan OIDC.", + "linkTargetUsernameLabel": "Target Kata Sandi Akun Nama Pengguna", + "linkTargetUsernamePlaceholder": "Masukkan nama pengguna atau kata sandi akun Anda.", + "linkAccountsButton": "Tautkan Akun", + "linkingAccounts": "Menghubungkan...", + "accountsLinkedSuccessfully": "Pengguna OIDC {{oidcUsername}} telah dihubungkan ke {{targetUsername}}", + "failedToLinkAccounts": "Gagal menautkan akun", + "linkTargetUsernameRequired": "Nama pengguna target wajib diisi.", + "unlinkOIDCTitle": "Lepaskan Otentikasi OIDC", + "unlinkOIDCDescription": "Hapus otentikasi OIDC dari {{username}}? Pengguna hanya akan dapat masuk dengan nama pengguna/kata sandi setelah ini.", + "unlinkOIDCSuccess": "OIDC tidak terhubung dari {{username}}", + "failedToUnlinkOIDC": "Gagal melepaskan tautan OIDC", + "databaseSecurity": "Keamanan Basis Data", + "encryptionStatus": "Status Enkripsi", + "encryptionEnabled": "Enkripsi Diaktifkan", + "enabled": "Diaktifkan", + "disabled": "Dengan disabilitas", + "keyId": "ID Kunci", + "created": "Dibuat", + "migrationStatus": "Status Migrasi", + "migrationCompleted": "Migrasi selesai", + "migrationRequired": "Migrasi diperlukan", + "deviceProtectedMasterKey": "Kunci Utama yang Dilindungi Lingkungan", + "legacyKeyStorage": "Penyimpanan Kunci Warisan", + "masterKeyEncryptedWithDeviceFingerprint": "Kunci utama dienkripsi dengan sidik jari lingkungan (perlindungan KEK aktif)", + "keyNotProtectedByDeviceBinding": "Kunci tidak dilindungi oleh pengikatan lingkungan (disarankan untuk melakukan peningkatan versi)", + "valid": "Sah", + "initializeDatabaseEncryption": "Inisialisasi Enkripsi Basis Data", + "enableAes256EncryptionWithDeviceBinding": "Aktifkan enkripsi AES-256 dengan perlindungan kunci utama yang terikat pada lingkungan. Ini menciptakan keamanan tingkat perusahaan untuk kunci SSH, kata sandi, dan token otentikasi.", + "featuresEnabled": "Fitur yang diaktifkan:", + "aes256GcmAuthenticatedEncryption": "Enkripsi terautentikasi AES-256-GCM", + "deviceFingerprintMasterKeyProtection": "Perlindungan kunci utama sidik jari lingkungan (KEK)", + "pbkdf2KeyDerivation": "Penurunan kunci PBKDF2 dengan 100.000 iterasi", + "automaticKeyManagement": "Manajemen dan rotasi kunci otomatis", + "initializing": "Menginisialisasi...", + "initializeEnterpriseEncryption": "Inisialisasi Enkripsi Perusahaan", + "migrateExistingData": "Migrasi Data yang Ada", + "encryptExistingUnprotectedData": "Enkripsikan data yang ada dan tidak terlindungi di basis data Anda. Proses ini aman dan membuat cadangan otomatis.", + "testMigrationDryRun": "Verifikasi Kompatibilitas Enkripsi", + "migrating": "Sedang bermigrasi...", + "migrateData": "Migrasi Data", + "securityInformation": "Informasi Keamanan", + "sshPrivateKeysEncryptedWithAes256": "Kunci privat dan kata sandi SSH dienkripsi dengan AES-256-GCM.", + "userAuthTokensProtected": "Token otentikasi pengguna dan rahasia 2FA dilindungi.", + "masterKeysProtectedByDeviceFingerprint": "Kunci enkripsi utama dilindungi oleh sidik jari perangkat (KEK).", + "keysBoundToServerInstance": "Kunci terikat pada lingkungan server saat ini (dapat dipindahkan melalui variabel lingkungan)", + "pbkdf2HkdfKeyDerivation": "Derivasi kunci PBKDF2 + HKDF dengan 100.000 iterasi", + "backwardCompatibleMigration": "Semua data tetap kompatibel dengan versi sebelumnya selama migrasi.", + "enterpriseGradeSecurityActive": "Keamanan Tingkat Perusahaan Aktif", + "masterKeysProtectedByDeviceBinding": "Kunci enkripsi utama Anda dilindungi oleh sidik jari lingkungan. Ini menggunakan nama host server, jalur, dan informasi lingkungan lainnya untuk menghasilkan kunci perlindungan. Untuk memigrasikan server, atur variabel lingkungan DB_ENCRYPTION_KEY pada server baru.", + "important": "Penting", + "keepEncryptionKeysSecure": "Pastikan keamanan data: lakukan pencadangan rutin pada file basis data dan konfigurasi server Anda. Untuk bermigrasi ke server baru, atur variabel lingkungan DB_ENCRYPTION_KEY pada lingkungan baru, atau pertahankan nama host dan struktur direktori yang sama.", + "loadingEncryptionStatus": "Memuat status enkripsi...", + "testMigrationDescription": "Pastikan bahwa data yang ada dapat dimigrasikan dengan aman ke format terenkripsi tanpa benar-benar memodifikasi data apa pun.", + "serverMigrationGuide": "Panduan Migrasi Server", + "migrationInstructions": "Untuk memindahkan data terenkripsi ke server baru: 1) Cadangkan file basis data, 2) Atur variabel lingkungan DB_ENCRYPTION_KEY=\"kunci-Anda\" pada server baru, 3) Pulihkan file basis data", + "environmentProtection": "Perlindungan Lingkungan", + "environmentProtectionDesc": "Melindungi kunci enkripsi berdasarkan informasi lingkungan server (nama host, jalur, dll.), dapat dipindahkan melalui variabel lingkungan.", + "verificationCompleted": "Verifikasi kompatibilitas selesai - tidak ada data yang diubah.", + "verificationInProgress": "Verifikasi selesai", + "dataMigrationCompleted": "Migrasi data berhasil diselesaikan!", + "verificationFailed": "Verifikasi kompatibilitas gagal", + "migrationFailed": "Migrasi gagal", + "runningVerification": "Menjalankan verifikasi kompatibilitas...", + "startingMigration": "Memulai migrasi...", + "hardwareFingerprintSecurity": "Keamanan Sidik Jari Perangkat Keras", + "hardwareBoundEncryption": "Enkripsi Terikat Perangkat Keras Aktif", + "masterKeysNowProtectedByHardwareFingerprint": "Kunci utama kini dilindungi oleh sidik jari perangkat keras asli, bukan lagi variabel lingkungan.", + "cpuSerialNumberDetection": "Deteksi nomor seri CPU", + "motherboardUuidIdentification": "Identifikasi UUID motherboard", + "diskSerialNumberVerification": "Verifikasi nomor seri disk", + "biosSerialNumberCheck": "pengecekan nomor seri BIOS", + "stableMacAddressFiltering": "Penyaringan alamat MAC yang stabil", + "databaseFileEncryption": "Enkripsi File Basis Data", + "dualLayerProtection": "Perlindungan Ganda Aktif", + "bothFieldAndFileEncryptionActive": "Enkripsi tingkat bidang dan tingkat berkas kini diaktifkan untuk keamanan maksimal.", + "fieldLevelAes256Encryption": "Enkripsi AES-256 tingkat bidang untuk data sensitif", + "fileLevelDatabaseEncryption": "Enkripsi basis data tingkat file dengan pengikatan perangkat keras.", + "hardwareBoundFileKeys": "Kunci enkripsi file yang terikat pada perangkat keras", + "automaticEncryptedBackups": "Pembuatan cadangan terenkripsi otomatis", + "createEncryptedBackup": "Buat Cadangan Terenkripsi", + "creatingBackup": "Membuat Cadangan...", + "backupCreated": "Cadangan telah dibuat.", + "encryptedBackupCreatedSuccessfully": "Cadangan terenkripsi berhasil dibuat.", + "backupCreationFailed": "Pembuatan cadangan gagal", + "databaseMigration": "Migrasi Basis Data", + "exportForMigration": "Ekspor untuk Migrasi", + "exportDatabaseForHardwareMigration": "Ekspor basis data sebagai file SQLite dengan data yang telah didekripsi untuk migrasi ke perangkat keras baru.", + "exportDatabase": "Ekspor Basis Data SQLite", + "exporting": "Mengekspor...", + "exportCreated": "Ekspor SQLite telah dibuat.", + "exportContainsDecryptedData": "Ekspor SQLite berisi data yang telah didekripsi - jaga kerahasiaannya!", + "databaseExportedSuccessfully": "Basis data SQLite berhasil diekspor.", + "databaseExportFailed": "Ekspor basis data SQLite gagal", + "importFromMigration": "Impor dari Migrasi", + "importDatabaseFromAnotherSystem": "Impor basis data SQLite dari sistem atau perangkat keras lain.", + "importDatabase": "Impor Basis Data SQLite", + "importing": "Pengimporan...", + "selectedFile": "File SQLite yang dipilih", + "importWillReplaceExistingData": "Impor SQLite akan mengganti data yang sudah ada - disarankan untuk melakukan pencadangan!", + "pleaseSelectImportFile": "Silakan pilih file impor SQLite.", + "databaseImportedSuccessfully": "Basis data SQLite berhasil diimpor.", + "databaseImportFailed": "Impor basis data SQLite gagal.", + "manageEncryptionAndBackups": "Mengelola kunci enkripsi, keamanan basis data, dan operasi pencadangan.", + "activeSecurityFeatures": "Saat ini, langkah-langkah dan perlindungan keamanan yang aktif.", + "deviceBindingTechnology": "Teknologi perlindungan kunci berbasis perangkat keras tingkat lanjut", + "backupAndRecovery": "Opsi pembuatan cadangan dan pemulihan basis data yang aman.", + "crossSystemDataTransfer": "Mengekspor dan mengimpor basis data antar sistem yang berbeda.", + "noMigrationNeeded": "Tidak perlu migrasi.", + "encryptionKey": "Kunci Enkripsi", + "keyProtection": "Perlindungan Kunci", + "active": "Aktif", + "legacy": "Warisan", + "dataStatus": "Status Data", + "encrypted": "Terenkripsi", + "needsMigration": "Membutuhkan Migrasi", + "ready": "Siap", + "initializeEncryption": "Inisialisasi Enkripsi", + "initialize": "Inisialisasi", + "test": "Tes", + "migrate": "Bermigrasi", + "backup": "Cadangan", + "createBackup": "Buat Cadangan", + "exportImport": "Ekspor/Impor", + "export": "Ekspor", + "import": "Impor", + "passwordRequired": "Kata sandi diperlukan", + "confirmExport": "Konfirmasi Ekspor", + "exportDescription": "Ekspor host dan kredensial SSH sebagai file SQLite.", + "importDescription": "Impor file SQLite dengan penggabungan bertahap (melewati duplikat)", + "criticalWarning": "Peringatan Penting", + "cannotDisablePasswordLoginWithoutOIDC": "Anda tidak dapat menonaktifkan login kata sandi tanpa konfigurasi OIDC! Anda harus mengkonfigurasi otentikasi OIDC sebelum menonaktifkan login kata sandi, atau Anda akan kehilangan akses ke Termix.", + "confirmDisablePasswordLogin": "Apakah Anda yakin ingin menonaktifkan login kata sandi? Pastikan OIDC telah dikonfigurasi dengan benar dan berfungsi sebelum melanjutkan, atau Anda akan kehilangan akses ke instance Termix Anda.", + "passwordLoginDisabled": "Login kata sandi berhasil dinonaktifkan.", + "passwordLoginAndRegistrationDisabled": "Login kata sandi dan pendaftaran akun baru berhasil dinonaktifkan.", + "requiresPasswordLogin": "Membutuhkan login dengan kata sandi yang diaktifkan.", + "passwordLoginDisabledWarning": "Login dengan kata sandi dinonaktifkan. Pastikan OIDC dikonfigurasi dengan benar, jika tidak, Anda tidak akan dapat masuk ke Termix.", + "oidcRequiredWarning": "PENTING: Login kata sandi dinonaktifkan. Jika Anda mengatur ulang atau salah mengkonfigurasi OIDC, Anda akan kehilangan semua akses ke Termix dan instance Anda akan rusak. Lanjutkan hanya jika Anda benar-benar yakin.", + "confirmDisableOIDCWarning": "PERINGATAN: Anda akan menonaktifkan OIDC sementara login kata sandi juga dinonaktifkan. Ini akan merusak instance Termix Anda dan Anda akan kehilangan semua akses. Apakah Anda benar-benar yakin ingin melanjutkan?", + "failedToUpdatePasswordLoginStatus": "Gagal memperbarui status login kata sandi.", + "loadingSessions": "Memuat sesi...", + "noActiveSessions": "Tidak ditemukan sesi aktif.", + "device": "Perangkat", + "user": "Pengguna", + "lastActive": "Terakhir Aktif", + "expires": "Berakhir", + "revoked": "Dicabut", + "revokeAllUserSessionsTitle": "Cabut semua sesi untuk pengguna ini.", + "revokeAll": "Cabut Semua", + "linkOidcToPasswordAccount": "Hubungkan Akun OIDC ke Akun Kata Sandi", + "linkOidcToPasswordAccountDescription": "Hubungkan {{username}} (pengguna OIDC) ke akun kata sandi yang sudah ada. Ini akan mengaktifkan otentikasi ganda untuk akun kata sandi.", + "linkOidcWarningTitle": "Peringatan: Data Pengguna OIDC Akan Dihapus", + "linkOidcWarningDescription": "Tindakan ini akan:", + "linkOidcActionDeleteUser": "Hapus akun pengguna OIDC dan semua datanya.", + "linkOidcActionAddCapability": "Tambahkan kemampuan login OIDC ke akun kata sandi target.", + "linkOidcActionDualAuth": "Izinkan akun kata sandi untuk masuk menggunakan kata sandi dan OIDC.", + "passwordMinLength": "Kata sandi harus terdiri minimal 6 karakter.", + "currentRoles": "Peran Saat Ini", + "noRolesAssigned": "Tidak ada peran yang ditugaskan", + "assignNewRole": "Tetapkan Peran Baru" }, "hosts": { - "title": "Host Manager", - "sshHosts": "SSH Hosts", - "noHosts": "No SSH Hosts", - "noHostsMessage": "You haven't added any SSH hosts yet. Click \"Add Host\" to get started.", - "loadingHosts": "Loading hosts...", - "failedToLoadHosts": "Failed to load hosts", - "retry": "Retry", - "refresh": "Refresh", - "optional": "Optional", - "hostsCount": "{{count}} hosts", - "importJson": "Import JSON", - "importing": "Importing...", - "importJsonTitle": "Import SSH Hosts from JSON", - "importJsonDesc": "Upload a JSON file to bulk import multiple SSH hosts (max 100).", - "downloadSample": "Download Sample", - "formatGuide": "Format Guide", - "exportCredentialWarning": "Warning: Host \"{{name}}\" uses credential authentication. The exported file will not include the credential data and will need to be manually reconfigured after import. Do you want to continue?", - "exportSensitiveDataWarning": "Warning: Host \"{{name}}\" contains sensitive authentication data (password/SSH key). The exported file will include this data in plaintext. Please keep the file secure and delete it after use. Do you want to continue?", - "uncategorized": "Uncategorized", - "confirmDelete": "Are you sure you want to delete \"{{name}}\" ?", - "failedToDeleteHost": "Failed to delete host", - "failedToExportHost": "Failed to export host. Please ensure you're logged in and have access to the host data.", - "jsonMustContainHosts": "JSON must contain a \"hosts\" array or be an array of hosts", - "noHostsInJson": "No hosts found in JSON file", - "maxHostsAllowed": "Maximum 100 hosts allowed per import", - "importCompleted": "Import completed: {{success}} successful, {{failed}} failed", - "importFailed": "Import failed", - "importError": "Import error", - "failedToImportJson": "Failed to import JSON file", - "connectionDetails": "Connection Details", - "organization": "Organization", - "ipAddress": "IP Address", - "port": "Port", - "name": "Name", - "username": "Username", - "folder": "Folder", - "tags": "Tags", + "title": "Manajer Host", + "sshHosts": "Host SSH", + "noHosts": "Tidak ada Host SSH", + "noHostsMessage": "Anda belum menambahkan host SSH apa pun. Klik \"Tambah Host\" untuk memulai.", + "loadingHosts": "Memuat host...", + "failedToLoadHosts": "Gagal memuat host", + "retry": "Mencoba kembali", + "refresh": "Menyegarkan", + "optional": "Opsional", + "hostsCount": "{{count}} tuan rumah", + "importJson": "Impor JSON", + "importing": "Pengimporan...", + "importJsonTitle": "Impor Host SSH dari JSON", + "importJsonDesc": "Unggah file JSON untuk mengimpor beberapa host SSH secara massal (maksimal 100).", + "downloadSample": "Unduh Sampel", + "formatGuide": "Panduan Format", + "exportCredentialWarning": "Peringatan: Host \"{{name}}\" menggunakan otentikasi kredensial. File yang diekspor tidak akan menyertakan data kredensial dan perlu dikonfigurasi ulang secara manual setelah impor. Apakah Anda ingin melanjutkan?", + "exportSensitiveDataWarning": "Peringatan: Host \"{{name}}\" berisi data otentikasi sensitif (kata sandi/kunci SSH). File yang diekspor akan menyertakan data ini dalam bentuk teks biasa. Harap simpan file ini dengan aman dan hapus setelah digunakan. Apakah Anda ingin melanjutkan?", + "uncategorized": "Tidak dikategorikan", + "confirmDelete": "Apakah Anda yakin ingin menghapus \"{{name}}\" ?", + "failedToDeleteHost": "Gagal menghapus host", + "failedToExportHost": "Ekspor host gagal. Pastikan Anda sudah login dan memiliki akses ke data host.", + "jsonMustContainHosts": "JSON harus berisi array \"hosts\" atau berupa array host.", + "noHostsInJson": "Tidak ditemukan host dalam file JSON.", + "maxHostsAllowed": "Maksimal 100 host diperbolehkan per impor.", + "importCompleted": "Impor selesai: {{success}} berhasil, {{failed}} gagal", + "importFailed": "Impor gagal", + "importError": "Kesalahan impor", + "failedToImportJson": "Gagal mengimpor file JSON", + "connectionDetails": "Detail Koneksi", + "organization": "Organisasi", + "ipAddress": "Alamat IP", + "port": "Pelabuhan", + "name": "Nama", + "username": "Nama belakang", + "folder": "Map", + "tags": "Tag", "pin": "Pin", - "notes": "Notes", - "expirationDate": "Expiration Date", - "passwordRequired": "Password is required when using password authentication", - "sshKeyRequired": "SSH Private Key is required when using key authentication", - "keyTypeRequired": "Key Type is required when using key authentication", - "mustSelectValidSshConfig": "Must select a valid SSH configuration from the list", - "addHost": "Add Host", + "notes": "Catatan", + "expirationDate": "Kedaluwarsa", + "passwordRequired": "Kata sandi diperlukan saat menggunakan autentikasi kata sandi.", + "sshKeyRequired": "Kunci privat SSH diperlukan saat menggunakan autentikasi kunci.", + "keyTypeRequired": "Jenis Kunci diperlukan saat menggunakan autentikasi kunci.", + "mustSelectValidSshConfig": "Harus memilih konfigurasi SSH yang valid dari daftar.", + "addHost": "Tambahkan Host", "editHost": "Edit Host", - "cloneHost": "Clone Host", - "updateHost": "Update Host", - "hostUpdatedSuccessfully": "Host \"{{name}}\" updated successfully!", - "hostAddedSuccessfully": "Host \"{{name}}\" added successfully!", - "hostDeletedSuccessfully": "Host \"{{name}}\" deleted successfully!", - "failedToSaveHost": "Failed to save host. Please try again.", - "savingHost": "Saving host...", - "updatingHost": "Updating host...", - "cloningHost": "Cloning host...", - "enableTerminal": "Enable Terminal", - "enableTerminalDesc": "Enable/disable host visibility in Terminal tab", - "enableTunnel": "Enable Tunnel", - "enableTunnelDesc": "Enable/disable host visibility in Tunnel tab", - "enableFileManager": "Enable File Manager", - "enableFileManagerDesc": "Enable/disable host visibility in File Manager tab", - "enableDockerDesc": "Enable/disable host visibility in Docker tab", - "enableDocker": "Enable Docker", - "defaultPath": "Default Path", - "defaultPathDesc": "Default directory when opening file manager for this host", - "tunnelConnections": "Tunnel Connections", - "connection": "Connection", - "remove": "Remove", - "sourcePort": "Source Port", - "sourcePortDesc": " (Source refers to the Current Connection Details in the General tab)", - "endpointPort": "Endpoint Port", - "endpointSshConfig": "Endpoint SSH Configuration", - "tunnelForwardDescription": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", - "maxRetries": "Max Retries", - "maxRetriesDescription": "Maximum number of retry attempts for tunnel connection.", - "retryInterval": "Retry Interval (seconds)", - "retryIntervalDescription": "Time to wait between retry attempts.", - "autoStartContainer": "Auto Start on Container Launch", - "autoStartDesc": "Automatically start this tunnel when the container launches", - "addConnection": "Add Tunnel Connection", - "sshpassRequired": "Sshpass Required For Password Authentication", - "sshpassRequiredDesc": "For password authentication in tunnels, sshpass must be installed on the system.", - "otherInstallMethods": "Other installation methods:", - "debianUbuntuEquivalent": "(Debian/Ubuntu) or the equivalent for your OS.", - "or": "or", + "cloneHost": "Kloning Host", + "updateHost": "Perbarui Host", + "hostUpdatedSuccessfully": "Host \"{{name}}\" berhasil diperbarui!", + "hostAddedSuccessfully": "Host \"{{name}}\" berhasil ditambahkan!", + "hostDeletedSuccessfully": "Host \"{{name}}\" berhasil dihapus!", + "failedToSaveHost": "Gagal menyimpan host. Silakan coba lagi.", + "savingHost": "Menyimpan host...", + "updatingHost": "Memperbarui host...", + "cloningHost": "Mengkloning host...", + "enableTerminal": "Aktifkan Terminal", + "enableTerminalDesc": "Aktifkan/nonaktifkan visibilitas host di tab Terminal.", + "enableTunnel": "Aktifkan Terowongan", + "enableTunnelDesc": "Aktifkan/nonaktifkan visibilitas host di tab Tunnel.", + "enableFileManager": "Aktifkan Pengelola File", + "enableFileManagerDesc": "Aktifkan/nonaktifkan visibilitas host di tab Pengelola File.", + "enableDockerDesc": "Aktifkan/nonaktifkan visibilitas host di tab Docker.", + "enableDocker": "Aktifkan Docker", + "defaultPath": "Jalur Default", + "defaultPathDesc": "Direktori default saat membuka pengelola file untuk host ini", + "tunnelConnections": "Koneksi Terowongan", + "connection": "Koneksi", + "remove": "Menghapus", + "sourcePort": "Port Sumber", + "sourcePortDesc": " (Sumber mengacu pada Detail Koneksi Saat Ini di tab Umum)", + "endpointPort": "Port Titik Akhir", + "endpointSshConfig": "Konfigurasi Endpoint SSH", + "tunnelForwardDescription": "Terowongan ini akan meneruskan lalu lintas dari port {{sourcePort}} pada mesin sumber (detail koneksi saat ini di tab umum) ke port {{endpointPort}} pada mesin titik akhir.", + "maxRetries": "Jumlah Percobaan Maksimum", + "maxRetriesDescription": "Jumlah maksimum percobaan ulang untuk koneksi terowongan.", + "retryInterval": "Interval Percobaan Ulang (detik)", + "retryIntervalDescription": "Waktu tunggu antar upaya percobaan ulang.", + "autoStartContainer": "Mulai Otomatis saat Kontainer Diluncurkan", + "autoStartDesc": "Secara otomatis memulai terowongan ini saat kontainer diluncurkan.", + "addConnection": "Tambahkan Koneksi Terowongan", + "sshpassRequired": "Sshpass Diperlukan untuk Otentikasi Kata Sandi", + "sshpassRequiredDesc": "Untuk otentikasi kata sandi di dalam terowongan, sshpass harus diinstal pada sistem.", + "otherInstallMethods": "Metode pemasangan lainnya:", + "debianUbuntuEquivalent": "(Debian/Ubuntu) atau yang setara untuk sistem operasi Anda.", + "or": "atau", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", "windows": "Windows", - "sshServerConfigRequired": "SSH Server Configuration Required", - "sshServerConfigDesc": "For tunnel connections, the SSH server must be configured to allow port forwarding:", - "gatewayPortsYes": "to bind remote ports to all interfaces", - "allowTcpForwardingYes": "to enable port forwarding", - "permitRootLoginYes": "if using root user for tunneling", - "editSshConfig": "Edit /etc/ssh/sshd_config and restart SSH: sudo systemctl restart sshd", - "upload": "Upload", - "authentication": "Authentication", - "password": "Password", - "key": "Key", - "credential": "Credential", - "none": "None", - "selectCredential": "Select Credential", - "selectCredentialPlaceholder": "Choose a credential...", - "credentialRequired": "Credential is required when using credential authentication", - "credentialDescription": "Selecting a credential will overwrite the current username and use the credential's authentication details.", - "cannotChangeAuthAsSharedUser": "Cannot change authentication as shared user", - "sshPrivateKey": "SSH Private Key", - "keyPassword": "Key Password", - "keyType": "Key Type", - "autoDetect": "Auto-detect", + "sshServerConfigRequired": "Konfigurasi Server SSH Diperlukan", + "sshServerConfigDesc": "Untuk koneksi terowongan, server SSH harus dikonfigurasi untuk mengizinkan penerusan port:", + "gatewayPortsYes": "untuk mengikat port jarak jauh ke semua antarmuka", + "allowTcpForwardingYes": "untuk mengaktifkan penerusan port", + "permitRootLoginYes": "jika menggunakan pengguna root untuk tunneling", + "editSshConfig": "Edit /etc/ssh/sshd_config dan mulai ulang SSH: sudo systemctl restart sshd", + "upload": "Mengunggah", + "authentication": "Autentikasi", + "password": "Kata sandi", + "key": "Kunci", + "credential": "Mandat", + "none": "Tidak ada", + "selectCredential": "Pilih Kredensial", + "selectCredentialPlaceholder": "Pilih sertifikasi...", + "credentialRequired": "Kredensial diperlukan saat menggunakan autentikasi kredensial.", + "credentialDescription": "Memilih kredensial akan menimpa nama pengguna saat ini dan menggunakan detail otentikasi kredensial tersebut.", + "cannotChangeAuthAsSharedUser": "Tidak dapat mengubah otentikasi sebagai pengguna bersama.", + "sshPrivateKey": "Kunci Pribadi SSH", + "keyPassword": "Kata Sandi Kunci", + "keyType": "Jenis Kunci", + "autoDetect": "Deteksi otomatis", "rsa": "RSA", "ed25519": "ED25519", "ecdsaNistP256": "ECDSA NIST P-256", @@ -885,1015 +885,1015 @@ "dsa": "DSA", "rsaSha2256": "RSA SHA2-256", "rsaSha2512": "RSA SHA2-512", - "uploadFile": "Upload File", - "pasteKey": "Paste Key", - "updateKey": "Update Key", - "existingKey": "Existing Key (click to change)", - "existingCredential": "Existing Credential (click to change)", - "addTagsSpaceToAdd": "add tags (space to add)", + "uploadFile": "Unggah File", + "pasteKey": "Tempelkan Kunci", + "updateKey": "Kunci Pembaruan", + "existingKey": "Kunci yang Ada (klik untuk mengubah)", + "existingCredential": "Kredensial yang Sudah Ada (klik untuk mengubah)", + "addTagsSpaceToAdd": "Tambahkan tag (ruang untuk menambahkan)", "terminalBadge": "Terminal", - "tunnelBadge": "Tunnel", - "fileManagerBadge": "File Manager", - "general": "General", + "tunnelBadge": "Terowongan", + "fileManagerBadge": "Pengelola File", + "general": "Umum", "terminal": "Terminal", - "tunnel": "Tunnel", - "fileManager": "File Manager", - "serverStats": "Server Stats", - "hostViewer": "Host Viewer", - "enableServerStats": "Enable Server Stats", - "enableServerStatsDesc": "Enable/disable server statistics collection for this host", - "displayItems": "Display Items", - "displayItemsDesc": "Choose which metrics to display on the server stats page", - "enableCpu": "CPU Usage", - "enableMemory": "Memory Usage", - "enableDisk": "Disk Usage", - "enableNetwork": "Network Statistics (Coming Soon)", - "enableProcesses": "Process Count (Coming Soon)", - "enableUptime": "Uptime (Coming Soon)", - "enableHostname": "Hostname (Coming Soon)", - "enableOs": "Operating System (Coming Soon)", - "customCommands": "Custom Commands (Coming Soon)", - "customCommandsDesc": "Define custom shutdown and reboot commands for this server", - "shutdownCommand": "Shutdown Command", - "rebootCommand": "Reboot Command", - "confirmRemoveFromFolder": "Are you sure you want to remove \"{{name}}\" from folder \"{{folder}}\"? The host will be moved to \"No Folder\".", - "removedFromFolder": "Host \"{{name}}\" removed from folder successfully", - "failedToRemoveFromFolder": "Failed to remove host from folder", - "folderRenamed": "Folder \"{{oldName}}\" renamed to \"{{newName}}\" successfully", - "failedToRenameFolder": "Failed to rename folder", - "editFolderAppearance": "Edit Folder Appearance", - "editFolderAppearanceDesc": "Customize the color and icon for folder", - "folderColor": "Folder Color", - "folderIcon": "Folder Icon", - "preview": "Preview", - "folderAppearanceUpdated": "Folder appearance updated successfully", - "failedToUpdateFolderAppearance": "Failed to update folder appearance", - "deleteAllHostsInFolder": "Delete All Hosts in Folder", - "confirmDeleteAllHostsInFolder": "Are you sure you want to delete all {{count}} hosts in folder \"{{folder}}\"? This action cannot be undone.", - "allHostsInFolderDeleted": "Deleted {{count}} hosts from folder \"{{folder}}\" successfully", - "failedToDeleteHostsInFolder": "Failed to delete hosts in folder", - "movedToFolder": "Host \"{{name}}\" moved to \"{{folder}}\" successfully", - "failedToMoveToFolder": "Failed to move host to folder", - "clickToRenameFolder": "Click to rename folder", - "renameFolder": "Rename folder", - "removeFromFolder": "Remove from folder \"{{folder}}\"", + "tunnel": "Terowongan", + "fileManager": "Pengelola File", + "serverStats": "Statistik Server", + "hostViewer": "Pemirsa Pembawa Acara", + "enableServerStats": "Aktifkan Statistik Server", + "enableServerStatsDesc": "Aktifkan/nonaktifkan pengumpulan statistik server untuk host ini.", + "displayItems": "Barang Pajangan", + "displayItemsDesc": "Pilih metrik mana yang ingin ditampilkan di halaman statistik server.", + "enableCpu": "Penggunaan CPU", + "enableMemory": "Penggunaan Memori", + "enableDisk": "Penggunaan Disk", + "enableNetwork": "Statistik Jaringan (Segera Hadir)", + "enableProcesses": "Jumlah Proses (Segera Hadir)", + "enableUptime": "Waktu Operasional (Segera Hadir)", + "enableHostname": "Nama host (Segera hadir)", + "enableOs": "Sistem Operasi (Segera Hadir)", + "customCommands": "Perintah Kustom (Segera Hadir)", + "customCommandsDesc": "Tetapkan perintah pematian dan memulai ulang khusus untuk server ini.", + "shutdownCommand": "Perintah Matikan", + "rebootCommand": "Perintah Reboot", + "confirmRemoveFromFolder": "Apakah Anda yakin ingin menghapus \"{{name}}\" dari folder \"{{folder}}\"? Host akan dipindahkan ke \"Tidak Ada Folder\".", + "removedFromFolder": "Host \"{{name}}\" berhasil dihapus dari folder", + "failedToRemoveFromFolder": "Gagal menghapus host dari folder.", + "folderRenamed": "Folder \"{{oldName}}\" berhasil diganti namanya menjadi \"{{newName}}\"", + "failedToRenameFolder": "Gagal mengganti nama folder", + "editFolderAppearance": "Edit Tampilan Folder", + "editFolderAppearanceDesc": "Sesuaikan warna dan ikon untuk folder.", + "folderColor": "Warna Folder", + "folderIcon": "Ikon Folder", + "preview": "Pratinjau", + "folderAppearanceUpdated": "Tampilan folder berhasil diperbarui.", + "failedToUpdateFolderAppearance": "Gagal memperbarui tampilan folder", + "deleteAllHostsInFolder": "Hapus Semua Host di Folder", + "confirmDeleteAllHostsInFolder": "Apakah Anda yakin ingin menghapus semua host {{count}} di folder \"{{folder}}\"? Tindakan ini tidak dapat dibatalkan.", + "allHostsInFolderDeleted": "Host {{count}} dari folder \"{{folder}}\" berhasil dihapus", + "failedToDeleteHostsInFolder": "Gagal menghapus host di dalam folder.", + "movedToFolder": "Host \"{{name}}\" berhasil dipindahkan ke \"{{folder}}\"", + "failedToMoveToFolder": "Gagal memindahkan host ke folder", + "clickToRenameFolder": "Klik untuk mengganti nama folder", + "renameFolder": "Ganti nama folder", + "removeFromFolder": "Hapus dari folder \"{{folder}}\"", "editHostTooltip": "Edit host", - "deleteHostTooltip": "Delete host", - "exportHostTooltip": "Export host", - "cloneHostTooltip": "Clone host", - "clickToEditHost": "Click to edit host", - "dragToMoveBetweenFolders": "Drag to move between folders", - "exportedHostConfig": "Exported host configuration for {{name}}", - "openTerminal": "Open Terminal", - "openFileManager": "Open File Manager", - "openTunnels": "Open Tunnels", - "openServerDetails": "Open Server Details", - "statistics": "Statistics", - "enabledWidgets": "Enabled Widgets", - "openServerStats": "Open Server Stats", - "enabledWidgetsDesc": "Select which statistics widgets to display for this host", - "monitoringConfiguration": "Monitoring Configuration", - "monitoringConfigurationDesc": "Configure how often server statistics and status are checked", - "statusCheckEnabled": "Enable Status Monitoring", - "statusCheckEnabledDesc": "Check if the server is online or offline", - "statusCheckInterval": "Status Check Interval", - "statusCheckIntervalDesc": "How often to check if host is online (5s - 1h)", - "metricsEnabled": "Enable Metrics Monitoring", - "metricsEnabledDesc": "Collect CPU, RAM, disk, and other system statistics", - "metricsInterval": "Metrics Collection Interval", - "metricsIntervalDesc": "How often to collect server statistics (5s - 1h)", - "intervalSeconds": "seconds", - "intervalMinutes": "minutes", - "intervalValidation": "Monitoring intervals must be between 5 seconds and 1 hour (3600 seconds)", - "monitoringDisabled": "Server monitoring is disabled for this host", - "enableMonitoring": "Enable monitoring in Host Manager → Statistics tab", - "monitoringDisabledBadge": "Monitoring Off", + "deleteHostTooltip": "Hapus host", + "exportHostTooltip": "Ekspor host", + "cloneHostTooltip": "Kloning host", + "clickToEditHost": "Klik untuk mengedit host", + "dragToMoveBetweenFolders": "Seret untuk berpindah antar folder", + "exportedHostConfig": "Konfigurasi host yang diekspor untuk {{name}}", + "openTerminal": "Terminal Terbuka", + "openFileManager": "Buka Pengelola File", + "openTunnels": "Terowongan Terbuka", + "openServerDetails": "Buka Detail Server", + "statistics": "Statistik", + "enabledWidgets": "Widget yang Diaktifkan", + "openServerStats": "Statistik Server Terbuka", + "enabledWidgetsDesc": "Pilih widget statistik mana yang akan ditampilkan untuk host ini.", + "monitoringConfiguration": "Konfigurasi Pemantauan", + "monitoringConfigurationDesc": "Konfigurasikan seberapa sering statistik dan status server diperiksa.", + "statusCheckEnabled": "Aktifkan Pemantauan Status", + "statusCheckEnabledDesc": "Periksa apakah server sedang online atau offline.", + "statusCheckInterval": "Interval Pemeriksaan Status", + "statusCheckIntervalDesc": "Seberapa sering memeriksa apakah host sedang online (5 detik - 1 jam)", + "metricsEnabled": "Aktifkan Pemantauan Metrik", + "metricsEnabledDesc": "Kumpulkan statistik CPU, RAM, disk, dan sistem lainnya.", + "metricsInterval": "Interval Pengumpulan Metrik", + "metricsIntervalDesc": "Seberapa sering mengumpulkan statistik server (5 detik - 1 jam)", + "intervalSeconds": "detik", + "intervalMinutes": "menit", + "intervalValidation": "Interval pemantauan harus antara 5 detik dan 1 jam (3600 detik).", + "monitoringDisabled": "Pemantauan server dinonaktifkan untuk host ini.", + "enableMonitoring": "Aktifkan pemantauan di Host Manager → tab Statistik", + "monitoringDisabledBadge": "Pemantauan Mati", "statusMonitoring": "Status", - "metricsMonitoring": "Metrics", - "terminalCustomization": "Terminal Customization", - "appearance": "Appearance", - "behavior": "Behavior", - "advanced": "Advanced", - "themePreview": "Theme Preview", - "theme": "Theme", - "selectTheme": "Select theme", - "chooseColorTheme": "Choose a color theme for the terminal", - "fontFamily": "Font Family", - "selectFont": "Select font", - "selectFontDesc": "Select the font to use in the terminal", - "fontSize": "Font Size", - "fontSizeValue": "Font Size: {{value}}px", - "adjustFontSize": "Adjust the terminal font size", - "letterSpacing": "Letter Spacing", - "letterSpacingValue": "Letter Spacing: {{value}}px", - "adjustLetterSpacing": "Adjust spacing between characters", - "lineHeight": "Line Height", - "lineHeightValue": "Line Height: {{value}}", - "adjustLineHeight": "Adjust spacing between lines", - "cursorStyle": "Cursor Style", - "selectCursorStyle": "Select cursor style", - "cursorStyleBlock": "Block", - "cursorStyleUnderline": "Underline", - "cursorStyleBar": "Bar", - "chooseCursorAppearance": "Choose the cursor appearance", - "cursorBlink": "Cursor Blink", - "enableCursorBlink": "Enable cursor blinking animation", - "scrollbackBuffer": "Scrollback Buffer", - "scrollbackBufferValue": "Scrollback Buffer: {{value}} lines", - "scrollbackBufferDesc": "Number of lines to keep in scrollback history", - "bellStyle": "Bell Style", - "selectBellStyle": "Select bell style", - "bellStyleNone": "None", - "bellStyleSound": "Sound", + "metricsMonitoring": "Metrik", + "terminalCustomization": "Kustomisasi Terminal", + "appearance": "Penampilan", + "behavior": "Perilaku", + "advanced": "Canggih", + "themePreview": "Pratinjau Tema", + "theme": "Tema", + "selectTheme": "Pilih tema", + "chooseColorTheme": "Pilih tema warna untuk terminal.", + "fontFamily": "Keluarga Font", + "selectFont": "Pilih font", + "selectFontDesc": "Pilih font yang akan digunakan di terminal.", + "fontSize": "Ukuran Huruf", + "fontSizeValue": "Ukuran Huruf: {{value}}px", + "adjustFontSize": "Sesuaikan ukuran font terminal", + "letterSpacing": "Jarak Antar Huruf", + "letterSpacingValue": "Jarak Antar Huruf: {{value}}px", + "adjustLetterSpacing": "Sesuaikan jarak antar karakter", + "lineHeight": "Tinggi Baris", + "lineHeightValue": "Tinggi Baris: {{value}}", + "adjustLineHeight": "Sesuaikan jarak antar baris", + "cursorStyle": "Gaya Kursor", + "selectCursorStyle": "Pilih gaya kursor", + "cursorStyleBlock": "Memblokir", + "cursorStyleUnderline": "Menggarisbawahi", + "cursorStyleBar": "Batang", + "chooseCursorAppearance": "Pilih tampilan kursor", + "cursorBlink": "Kedipan Kursor", + "enableCursorBlink": "Aktifkan animasi kedipan kursor", + "scrollbackBuffer": "Buffer Gulir Balik", + "scrollbackBufferValue": "Buffer Gulir Balik: {{value}} baris", + "scrollbackBufferDesc": "Jumlah baris yang akan disimpan dalam riwayat gulir.", + "bellStyle": "Gaya Lonceng", + "selectBellStyle": "Pilih gaya bel", + "bellStyleNone": "Tidak ada", + "bellStyleSound": "Suara", "bellStyleVisual": "Visual", - "bellStyleBoth": "Both", - "bellStyleDesc": "How to handle terminal bell (BEL character, \\x07). Programs trigger this when completing tasks, encountering errors, or for notifications. \"Sound\" plays an audio beep, \"Visual\" flashes the screen briefly, \"Both\" does both, \"None\" disables bell alerts.", - "rightClickSelectsWord": "Right Click Selects Word", - "rightClickSelectsWordDesc": "Right-clicking selects the word under cursor", - "fastScrollModifier": "Fast Scroll Modifier", - "selectModifier": "Select modifier", - "modifierAlt": "Alt", + "bellStyleBoth": "Keduanya", + "bellStyleDesc": "Cara menangani bel terminal (karakter BEL, \\x07). Program memicu ini saat menyelesaikan tugas, menemukan kesalahan, atau untuk pemberitahuan. \"Suara\" memutar bunyi bip audio, \"Visual\" membuat layar berkedip sebentar, \"Keduanya\" melakukan keduanya, \"Tidak ada\" menonaktifkan peringatan bel.", + "rightClickSelectsWord": "Klik kanan memilih Word", + "rightClickSelectsWordDesc": "Mengklik kanan akan memilih kata di bawah kursor.", + "fastScrollModifier": "Pengubah Gulir Cepat", + "selectModifier": "Pilih pengubah", + "modifierAlt": "Alternatif", "modifierCtrl": "Ctrl", - "modifierShift": "Shift", - "fastScrollModifierDesc": "Modifier key for fast scrolling", - "fastScrollSensitivity": "Fast Scroll Sensitivity", - "fastScrollSensitivityValue": "Fast Scroll Sensitivity: {{value}}", - "fastScrollSensitivityDesc": "Scroll speed multiplier when modifier is held", - "minimumContrastRatio": "Minimum Contrast Ratio", - "minimumContrastRatioValue": "Minimum Contrast Ratio: {{value}}", - "minimumContrastRatioDesc": "Automatically adjust colors for better readability", - "sshAgentForwarding": "SSH Agent Forwarding", - "sshAgentForwardingDesc": "Forward SSH authentication agent to remote host", - "backspaceMode": "Backspace Mode", - "selectBackspaceMode": "Select backspace mode", + "modifierShift": "Menggeser", + "fastScrollModifierDesc": "Tombol pengubah untuk pengguliran cepat", + "fastScrollSensitivity": "Sensitivitas Gulir Cepat", + "fastScrollSensitivityValue": "Sensitivitas Gulir Cepat: {{value}}", + "fastScrollSensitivityDesc": "Pengali kecepatan gulir saat tombol pengubah ditahan", + "minimumContrastRatio": "Rasio Kontras Minimum", + "minimumContrastRatioValue": "Rasio Kontras Minimum: {{value}}", + "minimumContrastRatioDesc": "Sesuaikan warna secara otomatis untuk keterbacaan yang lebih baik.", + "sshAgentForwarding": "Penerusan Agen SSH", + "sshAgentForwardingDesc": "Teruskan agen otentikasi SSH ke host jarak jauh", + "backspaceMode": "Mode Hapus", + "selectBackspaceMode": "Pilih mode backspace", "backspaceModeNormal": "Normal (DEL)", - "backspaceModeControlH": "Control-H (^H)", - "backspaceModeDesc": "Backspace key behavior for compatibility", - "startupSnippet": "Startup Snippet", - "selectSnippet": "Select snippet", - "searchSnippets": "Search snippets...", - "snippetNone": "None", - "noneAuthTitle": "Keyboard-Interactive Authentication", - "noneAuthDescription": "This authentication method will use keyboard-interactive authentication when connecting to the SSH server.", - "noneAuthDetails": "Keyboard-interactive authentication allows the server to prompt you for credentials during connection. This is useful for servers that require multi-factor authentication or if you do not want to save credentials locally.", - "forceKeyboardInteractive": "Force Keyboard-Interactive", - "forceKeyboardInteractiveDesc": "Forces the use of keyboard-interactive authentication. This is sometimes required for servers that use Two-Factor Authentication (TOTP/2FA).", - "overrideCredentialUsername": "Override Credential Username", - "overrideCredentialUsernameDesc": "Use a different username than the one stored in the credential. This allows you to use the same credential with different usernames.", - "jumpHosts": "Jump Hosts", - "jumpHostsDescription": "Jump hosts (also known as bastion hosts) allow you to connect to a target server through one or more intermediate servers. This is useful for accessing servers behind firewalls or in private networks.", - "jumpHostChain": "Jump Host Chain", - "addJumpHost": "Add Jump Host", - "selectServer": "Select Server", - "searchServers": "Search servers...", - "noServerFound": "No server found", - "jumpHostsOrder": "Connections will be made in order: Jump Host 1 → Jump Host 2 → ... → Target Server", - "socks5Proxy": "SOCKS5 Proxy", - "socks5Description": "Configure SOCKS5 proxy for SSH connection. All traffic will be routed through the specified proxy server.", - "enableSocks5": "Enable SOCKS5 Proxy", - "enableSocks5Description": "Use SOCKS5 proxy for this SSH connection", - "socks5Host": "Proxy Host", - "socks5Port": "Proxy Port", - "socks5Username": "Proxy Username", - "socks5Password": "Proxy Password", - "socks5UsernameOptional": "Optional: leave empty if proxy doesn't require authentication", - "socks5PasswordOptional": "Optional: leave empty if proxy doesn't require authentication", - "socks5ProxyChain": "Proxy Chain", - "socks5ProxyChainDescription": "Configure a chain of SOCKS proxies. Each proxy in the chain will connect through the previous one.", - "socks5ProxyMode": "Proxy Mode", - "socks5UseSingleProxy": "Use Single Proxy", - "socks5UseProxyChain": "Use Proxy Chain", - "socks5UsePreset": "Use Saved Preset", - "socks5SelectPreset": "Select Preset", - "socks5ManagePresets": "Manage Presets", - "socks5ProxyNode": "Proxy {{number}}", - "socks5AddProxy": "Add Proxy to Chain", - "socks5RemoveProxy": "Remove Proxy", - "socks5ProxyType": "Proxy Type", - "socks5SaveAsPreset": "Save as Preset", - "socks5SavePresetTitle": "Save Proxy Chain as Preset", - "socks5SavePresetDescription": "Save the current proxy chain configuration as a reusable preset", - "socks5PresetName": "Preset Name", - "socks5PresetDescription": "Description (optional)", - "socks5PresetCreated": "Proxy chain preset created", - "socks5PresetUpdated": "Proxy chain preset updated", - "socks5PresetDeleted": "Proxy chain preset deleted", - "socks5PresetSaved": "Preset \"{{name}}\" saved successfully", - "socks5PresetSaveError": "Failed to save preset", - "socks5PresetNameRequired": "Preset name is required", - "socks5EmptyChainError": "Cannot save an empty proxy chain", - "socks5ProxyChainEmpty": "Add at least one proxy to the chain", - "socks5HostDescription": "Hostname or IP address of the SOCKS proxy server", - "socks5PortDescription": "Port number of the SOCKS proxy server (default: 1080)", - "addProxyNode": "Add Proxy Node", - "noProxyNodes": "No proxy nodes configured. Click 'Add Proxy Node' to add one.", - "proxyNode": "Proxy Node", - "proxyType": "Proxy Type", - "quickActions": "Quick Actions", - "quickActionsDescription": "Quick actions allow you to create custom buttons that execute SSH snippets on this server. These buttons will appear at the top of the Server Stats page for quick access.", - "quickActionsList": "Quick Actions List", - "addQuickAction": "Add Quick Action", - "quickActionName": "Action name", - "noSnippetFound": "No snippet found", - "quickActionsOrder": "Quick action buttons will appear in the order listed above on the Server Stats page", - "advancedAuthSettings": "Advanced Authentication Settings", - "sudoPasswordAutoFill": "Sudo Password Auto-Fill", - "sudoPasswordAutoFillDesc": "Automatically offer to insert SSH password when sudo prompts for password", - "sudoPassword": "Sudo Password", - "sudoPasswordDesc": "Optional password for sudo commands (useful with key authentication)", - "socks4": "SOCKS4", - "socks5": "SOCKS5", - "executeSnippetOnConnect": "Execute a snippet when the terminal connects", + "backspaceModeControlH": "Kontrol-H (^H)", + "backspaceModeDesc": "Perilaku tombol Backspace untuk kompatibilitas", + "startupSnippet": "Cuplikan Startup", + "selectSnippet": "Pilih cuplikan", + "searchSnippets": "Cuplikan pencarian...", + "snippetNone": "Tidak ada", + "noneAuthTitle": "Otentikasi Interaktif Keyboard", + "noneAuthDescription": "Metode autentikasi ini akan menggunakan autentikasi interaktif keyboard saat terhubung ke server SSH.", + "noneAuthDetails": "Autentikasi interaktif keyboard memungkinkan server untuk meminta kredensial Anda selama koneksi. Ini berguna untuk server yang memerlukan autentikasi multi-faktor atau jika Anda tidak ingin menyimpan kredensial secara lokal.", + "forceKeyboardInteractive": "Paksa Interaktif Keyboard", + "forceKeyboardInteractiveDesc": "Memaksa penggunaan autentikasi interaktif keyboard. Ini terkadang diperlukan untuk server yang menggunakan Autentikasi Dua Faktor (TOTP/2FA).", + "overrideCredentialUsername": "Ganti Nama Pengguna Kredensial", + "overrideCredentialUsernameDesc": "Gunakan nama pengguna yang berbeda dari yang tersimpan di kredensial. Ini memungkinkan Anda untuk menggunakan kredensial yang sama dengan nama pengguna yang berbeda.", + "jumpHosts": "Pembawa Acara Lompat", + "jumpHostsDescription": "Jump host (juga dikenal sebagai bastion host) memungkinkan Anda untuk terhubung ke server target melalui satu atau lebih server perantara. Ini berguna untuk mengakses server di balik firewall atau di jaringan pribadi.", + "jumpHostChain": "Rantai Host Lompatan", + "addJumpHost": "Tambahkan Jump Host", + "selectServer": "Pilih Server", + "searchServers": "Cari server...", + "noServerFound": "Tidak ada server yang ditemukan.", + "jumpHostsOrder": "Koneksi akan dibuat secara berurutan: Jump Host 1 → Jump Host 2 → ... → Server Target", + "socks5Proxy": "Proksi SOCKS5", + "socks5Description": "Konfigurasikan proxy SOCKS5 untuk koneksi SSH. Semua lalu lintas akan dialihkan melalui server proxy yang ditentukan.", + "enableSocks5": "Aktifkan Proksi SOCKS5", + "enableSocks5Description": "Gunakan proxy SOCKS5 untuk koneksi SSH ini.", + "socks5Host": "Host Proksi", + "socks5Port": "Port Proksi", + "socks5Username": "Nama Pengguna Proksi", + "socks5Password": "Kata Sandi Proksi", + "socks5UsernameOptional": "Opsional: biarkan kosong jika proxy tidak memerlukan otentikasi.", + "socks5PasswordOptional": "Opsional: biarkan kosong jika proxy tidak memerlukan otentikasi.", + "socks5ProxyChain": "Rantai Proksi", + "socks5ProxyChainDescription": "Konfigurasikan rantai proxy SOCKS. Setiap proxy dalam rantai akan terhubung melalui proxy sebelumnya.", + "socks5ProxyMode": "Mode Proksi", + "socks5UseSingleProxy": "Gunakan Proxy Tunggal", + "socks5UseProxyChain": "Gunakan Rantai Proksi", + "socks5UsePreset": "Gunakan Preset yang Tersimpan", + "socks5SelectPreset": "Pilih Preset", + "socks5ManagePresets": "Kelola Preset", + "socks5ProxyNode": "Proksi {{number}}", + "socks5AddProxy": "Tambahkan Proxy ke Rantai", + "socks5RemoveProxy": "Hapus Proxy", + "socks5ProxyType": "Jenis Proksi", + "socks5SaveAsPreset": "Simpan sebagai Preset", + "socks5SavePresetTitle": "Simpan Rantai Proksi sebagai Preset", + "socks5SavePresetDescription": "Simpan konfigurasi rantai proxy saat ini sebagai preset yang dapat digunakan kembali.", + "socks5PresetName": "Nama Preset", + "socks5PresetDescription": "Deskripsi (opsional)", + "socks5PresetCreated": "Preset rantai proxy telah dibuat.", + "socks5PresetUpdated": "Preset rantai proxy telah diperbarui.", + "socks5PresetDeleted": "Pengaturan awal rantai proxy telah dihapus.", + "socks5PresetSaved": "Preset \"{{name}}\" berhasil disimpan", + "socks5PresetSaveError": "Gagal menyimpan preset.", + "socks5PresetNameRequired": "Nama preset wajib diisi.", + "socks5EmptyChainError": "Tidak dapat menyimpan rantai proksi kosong.", + "socks5ProxyChainEmpty": "Tambahkan setidaknya satu proxy ke dalam rantai.", + "socks5HostDescription": "Nama host atau alamat IP dari server proxy SOCKS", + "socks5PortDescription": "Nomor port server proxy SOCKS (default: 1080)", + "addProxyNode": "Tambahkan Node Proksi", + "noProxyNodes": "Belum ada node proxy yang dikonfigurasi. Klik 'Tambahkan Node Proxy' untuk menambahkannya.", + "proxyNode": "Node Proksi", + "proxyType": "Jenis Proksi", + "quickActions": "Tindakan Cepat", + "quickActionsDescription": "Tindakan cepat memungkinkan Anda membuat tombol khusus yang menjalankan cuplikan SSH pada server ini. Tombol-tombol ini akan muncul di bagian atas halaman Statistik Server untuk akses cepat.", + "quickActionsList": "Daftar Tindakan Cepat", + "addQuickAction": "Tambahkan Tindakan Cepat", + "quickActionName": "Nama tindakan", + "noSnippetFound": "Tidak ditemukan cuplikan.", + "quickActionsOrder": "Tombol tindakan cepat akan muncul sesuai urutan yang tercantum di atas pada halaman Statistik Server.", + "advancedAuthSettings": "Pengaturan Otentikasi Lanjutan", + "sudoPasswordAutoFill": "Isi Otomatis Kata Sandi Sudo", + "sudoPasswordAutoFillDesc": "Secara otomatis menawarkan untuk memasukkan kata sandi SSH saat sudo meminta kata sandi.", + "sudoPassword": "Kata Sandi Sudo", + "sudoPasswordDesc": "Kata sandi opsional untuk perintah sudo (berguna dengan otentikasi kunci)", + "socks4": "KAOS KAKI4", + "socks5": "KAOS KAKI5", + "executeSnippetOnConnect": "Jalankan cuplikan kode saat terminal terhubung.", "autoMosh": "Auto-MOSH", - "autoMoshDesc": "Automatically run MOSH command on connect", - "moshCommand": "MOSH Command", - "moshCommandDesc": "The MOSH command to execute", - "environmentVariables": "Environment Variables", - "environmentVariablesDesc": "Set custom environment variables for the terminal session", - "variableName": "Variable name", - "variableValue": "Value", - "addVariable": "Add Variable", - "docker": "Docker", - "openDocker": "Open Docker", - "notEnabled": "Docker is not enabled for this host. Enable it in Host Settings to use Docker features.", - "validating": "Validating Docker...", - "error": "Error", - "errorCode": "Error code: {{code}}", + "autoMoshDesc": "Jalankan perintah MOSH secara otomatis saat terhubung.", + "moshCommand": "Komando MOSH", + "moshCommandDesc": "Perintah MOSH untuk dieksekusi", + "environmentVariables": "Variabel Lingkungan", + "environmentVariablesDesc": "Tetapkan variabel lingkungan khusus untuk sesi terminal.", + "variableName": "Nama variabel", + "variableValue": "Nilai", + "addVariable": "Tambahkan Variabel", + "docker": "Buruh pelabuhan", + "openDocker": "Buka Docker", + "notEnabled": "Docker belum diaktifkan untuk host ini. Aktifkan di Pengaturan Host untuk menggunakan fitur Docker.", + "validating": "Memvalidasi Docker...", + "error": "Kesalahan", + "errorCode": "Kode kesalahan: {{code}}", "version": "Docker v{{version}}", - "current": "Current", - "used_limit": "Used / Limit", - "percentage": "Percentage", - "input": "Input", - "output": "Output", - "read": "Read", - "write": "Write", - "pids": "PIDs", - "id": "ID", - "state": "State", - "console": "Console", - "containerMustBeRunning": "Container must be running to connect to console", - "authenticationRequired": "Authentication required", - "connectedTo": "Connected to {{containerName}}", - "disconnected": "Disconnected", - "consoleError": "Console error", - "errorMessage": "Error: {{message}}", - "failedToConnect": "Failed to connect to console", - "disconnectedFromContainer": "Disconnected from container console.", - "containerNotRunning": "Container is not running", - "startContainerToAccess": "Start the container to access the console", - "selectShell": "Select shell", - "bash": "Bash", + "current": "Saat ini", + "used_limit": "Digunakan / Batas", + "percentage": "Persentase", + "input": "Masukan", + "output": "Keluaran", + "read": "Membaca", + "write": "Menulis", + "pids": "PID", + "id": "PENGENAL", + "state": "Negara", + "console": "Menghibur", + "containerMustBeRunning": "Kontainer harus berjalan agar dapat terhubung ke konsol.", + "authenticationRequired": "Diperlukan otentikasi.", + "connectedTo": "Terhubung ke {{containerName}}", + "disconnected": "Terputus", + "consoleError": "Kesalahan konsol", + "errorMessage": "Kesalahan: {{message}}", + "failedToConnect": "Gagal terhubung ke konsol", + "disconnectedFromContainer": "Terputus dari konsol kontainer.", + "containerNotRunning": "Kontainer tidak berjalan", + "startContainerToAccess": "Jalankan kontainer untuk mengakses konsol.", + "selectShell": "Pilih cangkang", + "bash": "Pesta", "sh": "Sh", - "ash": "Ash", - "connecting": "Connecting...", - "connect": "Connect", - "disconnect": "Disconnect", - "notConnected": "Not connected", - "clickToConnect": "Click Connect to start an interactive shell", - "connectingTo": "Connecting to {{containerName}}...", - "containerMustBeRunningToViewStats": "Container must be running to view stats", - "failedToFetchStats": "Failed to fetch stats", - "noContainersFound": "No containers found", - "noContainersFoundHint": "Start by creating containers on your server", - "searchPlaceholder": "Search by name, image, or ID...", - "filterByStatusPlaceholder": "Filter by status", - "allContainersCount": "All ({{count}})", + "ash": "Abu", + "connecting": "Menghubungkan...", + "connect": "Menghubungkan", + "disconnect": "Memutuskan", + "notConnected": "Tidak terhubung", + "clickToConnect": "Klik Sambungkan untuk memulai shell interaktif.", + "connectingTo": "Menghubungkan ke {{containerName}}...", + "containerMustBeRunningToViewStats": "Kontainer harus berjalan agar statistik dapat dilihat.", + "failedToFetchStats": "Gagal mengambil statistik.", + "noContainersFound": "Tidak ditemukan wadah apa pun", + "noContainersFoundHint": "Mulailah dengan membuat kontainer di server Anda.", + "searchPlaceholder": "Cari berdasarkan nama, gambar, atau ID...", + "filterByStatusPlaceholder": "Saring berdasarkan status", + "allContainersCount": "Semua ({{count}})", "statusCount": "{{status}} ({{count}})", - "noContainersMatchFilters": "No containers match your filters", - "noContainersMatchFiltersHint": "Try adjusting your search or filter", - "containerStarted": "Container {{name}} started", - "failedToStartContainer": "Failed to start container: {{error}}", - "containerStopped": "Container {{name}} stopped", - "failedToStopContainer": "Failed to stop container: {{error}}", - "containerRestarted": "Container {{name}} restarted", - "failedToRestartContainer": "Failed to restart container: {{error}}", - "containerUnpaused": "Container {{name}} unpaused", - "containerPaused": "Container {{name}} paused", - "failedToTogglePauseContainer": "Failed to {{action}} container: {{error}}", - "containerRemoved": "Container {{name}} removed", - "failedToRemoveContainer": "Failed to remove container: {{error}}", - "image": "Image:", - "idLabel": "ID:", - "ports": "Ports:", - "noPorts": "None", - "created": "Created:", - "start": "Start", - "stop": "Stop", - "unpause": "Unpause", - "pause": "Pause", - "restart": "Restart", - "removeContainer": "Remove Container", - "confirmRemoveContainer": "Are you sure you want to remove container \"{{name}}\"?", - "runningContainerWarning": "Warning: This container is currently running and will be force-removed.", - "removing": "Removing:", - "containerNotFound": "Container not found", - "backToList": "Back to list", - "logs": "Logs", - "stats": "Stats", - "consoleTab": "Console", - "failedToFetchLogs": "Failed to fetch logs: {{error}}", - "failedToDownloadLogs": "Failed to download logs: {{error}}", - "linesToShow": "Lines to show", - "last50Lines": "Last 50 lines", - "last100Lines": "Last 100 lines", - "last500Lines": "Last 500 lines", - "last1000Lines": "Last 1000 lines", - "allLogs": "All logs", - "showTimestamps": "Show Timestamps", - "autoRefresh": "Auto Refresh", - "filterLogsPlaceholder": "Filter logs...", - "noLogsAvailable": "No logs available" + "noContainersMatchFilters": "Tidak ada wadah yang sesuai dengan filter Anda.", + "noContainersMatchFiltersHint": "Cobalah menyesuaikan pencarian atau filter Anda.", + "containerStarted": "Kontainer {{name}} dimulai", + "failedToStartContainer": "Gagal memulai kontainer: {{error}}", + "containerStopped": "Kontainer {{name}} berhenti", + "failedToStopContainer": "Gagal menghentikan kontainer: {{error}}", + "containerRestarted": "Kontainer {{name}} dimulai ulang", + "failedToRestartContainer": "Gagal memulai ulang kontainer: {{error}}", + "containerUnpaused": "Kontainer {{name}} tidak dijeda", + "containerPaused": "Kontainer {{name}} berhenti", + "failedToTogglePauseContainer": "Gagal ke kontainer {{action}} : {{error}}", + "containerRemoved": "Kontainer {{name}} dihapus", + "failedToRemoveContainer": "Gagal menghapus kontainer: {{error}}", + "image": "Gambar:", + "idLabel": "PENGENAL:", + "ports": "Pelabuhan:", + "noPorts": "Tidak ada", + "created": "Dibuat:", + "start": "Awal", + "stop": "Berhenti", + "unpause": "Lanjutkan jeda", + "pause": "Berhenti sebentar", + "restart": "Mulai ulang", + "removeContainer": "Lepaskan Kontainer", + "confirmRemoveContainer": "Apakah Anda yakin ingin menghapus kontainer \"{{name}}\"?", + "runningContainerWarning": "Peringatan: Kontainer ini sedang berjalan dan akan dihapus secara paksa.", + "removing": "Menghapus:", + "containerNotFound": "Kontainer tidak ditemukan", + "backToList": "Kembali ke daftar", + "logs": "Log", + "stats": "Statistik", + "consoleTab": "Menghibur", + "failedToFetchLogs": "Gagal mengambil log: {{error}}", + "failedToDownloadLogs": "Gagal mengunduh log: {{error}}", + "linesToShow": "Garis untuk menunjukkan", + "last50Lines": "50 baris terakhir", + "last100Lines": "100 baris terakhir", + "last500Lines": "500 baris terakhir", + "last1000Lines": "1000 baris terakhir", + "allLogs": "Semua log", + "showTimestamps": "Tampilkan Cap Waktu", + "autoRefresh": "Penyegaran Otomatis", + "filterLogsPlaceholder": "Filter log...", + "noLogsAvailable": "Tidak ada log yang tersedia." }, "terminal": { "title": "Terminal", - "connect": "Connect to Host", - "disconnect": "Disconnect", - "clear": "Clear", - "copy": "Copy", - "paste": "Paste", - "find": "Find", - "fullscreen": "Fullscreen", - "splitHorizontal": "Split Horizontal", - "splitVertical": "Split Vertical", - "closePanel": "Close Panel", - "reconnect": "Reconnect", - "sessionEnded": "Session Ended", - "connectionLost": "Connection Lost", - "error": "ERROR: {{message}}", - "disconnected": "Disconnected", - "connectionClosed": "Connection closed", - "connectionError": "Connection error: {{message}}", - "connected": "Connected", - "sshConnected": "SSH connection established", - "authError": "Authentication failed: {{message}}", - "unknownError": "Unknown error occurred", - "messageParseError": "Failed to parse server message", - "websocketError": "WebSocket connection error", - "connecting": "Connecting...", - "reconnecting": "Reconnecting... ({{attempt}}/{{max}})", - "reconnected": "Reconnected successfully", - "maxReconnectAttemptsReached": "Maximum reconnection attempts reached", - "connectionTimeout": "Connection timeout", + "connect": "Terhubung ke Host", + "disconnect": "Memutuskan", + "clear": "Jernih", + "copy": "Menyalin", + "paste": "Pasta", + "find": "Menemukan", + "fullscreen": "Layar penuh", + "splitHorizontal": "Belah Horizontal", + "splitVertical": "Vertikal Terpisah", + "closePanel": "Tutup Panel", + "reconnect": "Terhubung kembali", + "sessionEnded": "Sesi Berakhir", + "connectionLost": "Koneksi Terputus", + "error": "KESALAHAN: {{message}}", + "disconnected": "Terputus", + "connectionClosed": "Koneksi terputus", + "connectionError": "Kesalahan koneksi: {{message}}", + "connected": "Terhubung", + "sshConnected": "Koneksi SSH berhasil dibuat.", + "authError": "Autentikasi gagal: {{message}}", + "unknownError": "Terjadi kesalahan yang tidak diketahui.", + "messageParseError": "Gagal mengurai pesan server", + "websocketError": "Kesalahan koneksi WebSocket", + "connecting": "Menghubungkan...", + "reconnecting": "Menghubungkan kembali... ({{attempt}}/{{max}})", + "reconnected": "Berhasil terhubung kembali", + "maxReconnectAttemptsReached": "Upaya penyambungan kembali maksimum telah tercapai.", + "connectionTimeout": "Waktu habis koneksi", "terminalTitle": "Terminal - {{host}}", "terminalWithPath": "Terminal - {{host}}:{{path}}", - "runTitle": "Running {{command}} - {{host}}", - "totpRequired": "Two-Factor Authentication Required", - "totpCodeLabel": "Verification Code", + "runTitle": "Menjalankan {{command}} - {{host}}", + "totpRequired": "Diperlukan Otentikasi Dua Faktor", + "totpCodeLabel": "Kode Verifikasi", "totpPlaceholder": "000000", - "totpVerify": "Verify", - "sudoPasswordPopupTitle": "Insert Password?", - "sudoPasswordPopupHint": "Press Enter to insert, Esc to dismiss", - "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Dismiss" + "totpVerify": "Memeriksa", + "sudoPasswordPopupTitle": "Masukkan kata sandi?", + "sudoPasswordPopupHint": "Tekan Enter untuk memasukkan, Esc untuk menutup.", + "sudoPasswordPopupConfirm": "Menyisipkan", + "sudoPasswordPopupDismiss": "Membubarkan" }, "fileManager": { - "title": "File Manager", - "file": "File", - "folder": "Folder", - "connectToSsh": "Connect to SSH to use file operations", - "uploadFile": "Upload File", - "downloadFile": "Download", - "extractArchive": "Extract Archive", - "extractingArchive": "Extracting {{name}}...", - "archiveExtractedSuccessfully": "{{name}} extracted successfully", - "extractFailed": "Extract failed", - "compressFile": "Compress File", - "compressFiles": "Compress Files", - "compressFilesDesc": "Compress {{count}} items into an archive", - "archiveName": "Archive Name", - "enterArchiveName": "Enter archive name...", - "compressionFormat": "Compression Format", - "selectedFiles": "Selected files", - "andMoreFiles": "and {{count}} more...", - "compress": "Compress", - "compressingFiles": "Compressing {{count}} items into {{name}}...", - "filesCompressedSuccessfully": "{{name}} created successfully", - "compressFailed": "Compression failed", + "title": "Pengelola File", + "file": "Mengajukan", + "folder": "Map", + "connectToSsh": "Hubungkan ke SSH untuk menggunakan operasi file.", + "uploadFile": "Unggah File", + "downloadFile": "Unduh", + "extractArchive": "Ekstrak Arsip", + "extractingArchive": "Mengekstrak {{name}}...", + "archiveExtractedSuccessfully": "{{name}} berhasil diekstrak", + "extractFailed": "Ekstraksi gagal", + "compressFile": "Kompres File", + "compressFiles": "Kompres File", + "compressFilesDesc": "Kompres {{count}} item ke dalam arsip", + "archiveName": "Nama Arsip", + "enterArchiveName": "Masukkan nama arsip...", + "compressionFormat": "Format Kompresi", + "selectedFiles": "File terpilih", + "andMoreFiles": "dan {{count}} lagi...", + "compress": "Kompres", + "compressingFiles": "Mengompres {{count}} item menjadi {{name}}...", + "filesCompressedSuccessfully": "{{name}} berhasil dibuat", + "compressFailed": "Kompresi gagal", "edit": "Edit", - "preview": "Preview", - "previous": "Previous", - "next": "Next", - "pageXOfY": "Page {{current}} of {{total}}", - "zoomOut": "Zoom Out", - "zoomIn": "Zoom In", - "newFile": "New File", - "newFolder": "New Folder", - "rename": "Rename", - "renameItem": "Rename Item", - "deleteItem": "Delete Item", - "currentPath": "Current Path", - "uploadFileTitle": "Upload File", - "maxFileSize": "Max: 1GB (JSON) / 5GB (Binary) - Large files supported", - "removeFile": "Remove File", - "clickToSelectFile": "Click to select a file", - "chooseFile": "Choose File", - "uploading": "Uploading...", - "downloading": "Downloading...", - "uploadingFile": "Uploading {{name}}...", - "uploadingLargeFile": "Uploading large file {{name}} ({{size}})...", - "downloadingFile": "Downloading {{name}}...", - "creatingFile": "Creating {{name}}...", - "creatingFolder": "Creating {{name}}...", - "deletingItem": "Deleting {{type}} {{name}}...", - "renamingItem": "Renaming {{type}} {{oldName}} to {{newName}}...", - "createNewFile": "Create New File", - "fileName": "File Name", - "creating": "Creating...", - "createFile": "Create File", - "createNewFolder": "Create New Folder", - "folderName": "Folder Name", - "createFolder": "Create Folder", - "warningCannotUndo": "Warning: This action cannot be undone", - "itemPath": "Item Path", - "thisIsDirectory": "This is a directory (will delete recursively)", - "deleting": "Deleting...", - "currentPathLabel": "Current Path", - "newName": "New Name", - "thisIsDirectoryRename": "This is a directory", - "renaming": "Renaming...", - "fileUploadedSuccessfully": "File \"{{name}}\" uploaded successfully", - "failedToUploadFile": "Failed to upload file", - "fileDownloadedSuccessfully": "File \"{{name}}\" downloaded successfully", - "failedToDownloadFile": "Failed to download file", - "noFileContent": "No file content received", - "filePath": "File Path", - "fileCreatedSuccessfully": "File \"{{name}}\" created successfully", - "failedToCreateFile": "Failed to create file", - "folderCreatedSuccessfully": "Folder \"{{name}}\" created successfully", - "failedToCreateFolder": "Failed to create folder", - "failedToCreateItem": "Failed to create item", - "operationFailed": "{{operation}} operation failed for {{name}}: {{error}}", - "failedToResolveSymlink": "Failed to resolve symlink", - "itemDeletedSuccessfully": "{{type}} deleted successfully", - "itemsDeletedSuccessfully": "{{count}} items deleted successfully", - "failedToDeleteItems": "Failed to delete items", - "dragFilesToUpload": "Drop files here to upload", - "emptyFolder": "This folder is empty", - "itemCount": "{{count}} items", - "selectedCount": "{{count}} selected", - "searchFiles": "Search files...", - "upload": "Upload", - "selectHostToStart": "Select a host to start file management", - "failedToConnect": "Failed to connect to SSH", - "failedToLoadDirectory": "Failed to load directory", - "noSSHConnection": "No SSH connection available", - "enterFolderName": "Enter folder name:", - "enterFileName": "Enter file name:", - "copy": "Copy", - "cut": "Cut", - "paste": "Paste", - "copyPath": "Copy Path", - "copyPaths": "Copy Paths", - "delete": "Delete", - "properties": "Properties", - "refresh": "Refresh", - "downloadFiles": "Download {{count}} files to Browser", - "copyFiles": "Copy {{count}} items", - "cutFiles": "Cut {{count}} items", - "deleteFiles": "Delete {{count}} items", - "filesCopiedToClipboard": "{{count}} items copied to clipboard", - "filesCutToClipboard": "{{count}} items cut to clipboard", - "pathCopiedToClipboard": "Path copied to clipboard", - "pathsCopiedToClipboard": "{{count}} paths copied to clipboard", - "failedToCopyPath": "Failed to copy path to clipboard", - "movedItems": "Moved {{count}} items", - "failedToDeleteItem": "Failed to delete item", - "itemRenamedSuccessfully": "{{type}} renamed successfully", - "failedToRenameItem": "Failed to rename item", - "download": "Download", - "permissions": "Permissions", - "size": "Size", - "modified": "Modified", - "path": "Path", - "confirmDelete": "Are you sure you want to delete {{name}}?", - "uploadSuccess": "File uploaded successfully", - "uploadFailed": "File upload failed", - "downloadSuccess": "File downloaded successfully", - "downloadFailed": "File download failed", - "permissionDenied": "Permission denied", - "checkDockerLogs": "Check the Docker logs for detailed error information", - "internalServerError": "Internal server error occurred", - "serverError": "Server Error", - "error": "Error", - "requestFailed": "Request failed with status code", - "unknownFileError": "unknown", - "cannotReadFile": "Cannot read file", - "noSshSessionId": "No SSH session ID available", - "noFilePath": "No file path available", - "noCurrentHost": "No current host available", - "fileSavedSuccessfully": "File saved successfully", - "saveTimeout": "Save operation timed out. The file may have been saved successfully, but the operation took too long to complete. Check the Docker logs for confirmation.", - "failedToSaveFile": "Failed to save file", - "deletedSuccessfully": "deleted successfully", - "connectToServer": "Connect to a Server", - "selectServerToEdit": "Select a server from the sidebar to start editing files", - "fileOperations": "File Operations", - "confirmDeleteMessage": "Are you sure you want to delete {{name}}?", - "confirmDeleteSingleItem": "Are you sure you want to permanently delete \"{{name}}\"?", - "confirmDeleteMultipleItems": "Are you sure you want to permanently delete {{count}} items?", - "confirmDeleteMultipleItemsWithFolders": "Are you sure you want to permanently delete {{count}} items? This includes folders and their contents.", - "confirmDeleteFolder": "Are you sure you want to permanently delete the folder \"{{name}}\" and all its contents?", - "deleteDirectoryWarning": "This will delete the folder and all its contents.", - "actionCannotBeUndone": "This action cannot be undone.", - "permanentDeleteWarning": "This action cannot be undone. The item(s) will be permanently deleted from the server.", - "recent": "Recent", - "pinned": "Pinned", - "folderShortcuts": "Folder Shortcuts", - "noRecentFiles": "No recent files.", - "noPinnedFiles": "No pinned files.", - "enterFolderPath": "Enter folder path", - "noShortcuts": "No shortcuts.", - "searchFilesAndFolders": "Search files and folders...", - "noFilesOrFoldersFound": "No files or folders found.", - "failedToConnectSSH": "Failed to connect to SSH", - "failedToReconnectSSH": "Failed to reconnect SSH session", - "failedToListFiles": "Failed to list files", - "fetchHomeDataTimeout": "Fetch home data timed out", - "sshStatusCheckTimeout": "SSH status check timed out", - "sshReconnectionTimeout": "SSH reconnection timed out", - "saveOperationTimeout": "Save operation timed out", - "cannotSaveFile": "Cannot save file", - "dragSystemFilesToUpload": "Drag system files here to upload", - "dragFilesToWindowToDownload": "Drag files outside window to download", - "openTerminalHere": "Open Terminal Here", - "run": "Run", - "saveToSystem": "Save as...", - "selectLocationToSave": "Select Location to Save", - "openTerminalInFolder": "Open Terminal in This Folder", - "openTerminalInFileLocation": "Open Terminal at File Location", + "preview": "Pratinjau", + "previous": "Sebelumnya", + "next": "Berikutnya", + "pageXOfY": "Halaman {{current}} dari {{total}}", + "zoomOut": "Perkecil tampilan", + "zoomIn": "Perbesar", + "newFile": "Berkas Baru", + "newFolder": "Folder Baru", + "rename": "Ganti nama", + "renameItem": "Ganti Nama Item", + "deleteItem": "Hapus Item", + "currentPath": "Jalur Saat Ini", + "uploadFileTitle": "Unggah File", + "maxFileSize": "Maksimum: 1GB (JSON) / 5GB (Biner) - Mendukung file berukuran besar", + "removeFile": "Hapus File", + "clickToSelectFile": "Klik untuk memilih file", + "chooseFile": "Pilih File", + "uploading": "Sedang mengunggah...", + "downloading": "Sedang mengunduh...", + "uploadingFile": "Mengunggah {{name}}...", + "uploadingLargeFile": "Mengunggah file besar {{name}} ({{size}})...", + "downloadingFile": "Mengunduh {{name}}...", + "creatingFile": "Membuat {{name}}...", + "creatingFolder": "Membuat {{name}}...", + "deletingItem": "Menghapus {{type}} {{name}}...", + "renamingItem": "Mengganti nama {{type}} {{oldName}} menjadi {{newName}}...", + "createNewFile": "Buat File Baru", + "fileName": "Nama File", + "creating": "Membuat...", + "createFile": "Buat File", + "createNewFolder": "Buat Folder Baru", + "folderName": "Nama Folder", + "createFolder": "Buat Folder", + "warningCannotUndo": "Peringatan: Tindakan ini tidak dapat dibatalkan", + "itemPath": "Jalur Item", + "thisIsDirectory": "Ini adalah direktori (akan dihapus secara rekursif)", + "deleting": "Menghapus...", + "currentPathLabel": "Jalur Saat Ini", + "newName": "Nama Baru", + "thisIsDirectoryRename": "Ini adalah direktori", + "renaming": "Mengganti nama...", + "fileUploadedSuccessfully": "Berkas \"{{name}}\" berhasil diunggah", + "failedToUploadFile": "Gagal mengunggah file", + "fileDownloadedSuccessfully": "File \"{{name}}\" berhasil diunduh", + "failedToDownloadFile": "Gagal mengunduh file", + "noFileContent": "Tidak ada konten file yang diterima.", + "filePath": "Jalur File", + "fileCreatedSuccessfully": "File \"{{name}}\" berhasil dibuat", + "failedToCreateFile": "Gagal membuat file", + "folderCreatedSuccessfully": "Folder \"{{name}}\" berhasil dibuat", + "failedToCreateFolder": "Gagal membuat folder", + "failedToCreateItem": "Gagal membuat item", + "operationFailed": "Operasi {{operation}} gagal untuk {{name}}: {{error}}", + "failedToResolveSymlink": "Gagal menyelesaikan symlink", + "itemDeletedSuccessfully": "{{type}} berhasil dihapus", + "itemsDeletedSuccessfully": "{{count}} item berhasil dihapus", + "failedToDeleteItems": "Gagal menghapus item", + "dragFilesToUpload": "Seret file ke sini untuk mengunggah", + "emptyFolder": "Folder ini kosong", + "itemCount": "{{count}} item", + "selectedCount": "{{count}} dipilih", + "searchFiles": "Cari file...", + "upload": "Mengunggah", + "selectHostToStart": "Pilih host untuk memulai manajemen file.", + "failedToConnect": "Gagal terhubung ke SSH", + "failedToLoadDirectory": "Gagal memuat direktori", + "noSSHConnection": "Tidak ada koneksi SSH yang tersedia.", + "enterFolderName": "Masukkan nama folder:", + "enterFileName": "Masukkan nama file:", + "copy": "Menyalin", + "cut": "Memotong", + "paste": "Pasta", + "copyPath": "Salin Jalur", + "copyPaths": "Salin Jalur", + "delete": "Menghapus", + "properties": "Properti", + "refresh": "Menyegarkan", + "downloadFiles": "Unduh {{count}} file ke Browser", + "copyFiles": "Salin {{count}} item", + "cutFiles": "Potong {{count}} item", + "deleteFiles": "Hapus {{count}} item", + "filesCopiedToClipboard": "{{count}} item disalin ke papan klip", + "filesCutToClipboard": "{{count}} item dipotong ke papan klip", + "pathCopiedToClipboard": "Jalur disalin ke papan klip", + "pathsCopiedToClipboard": "{{count}} jalur disalin ke papan klip", + "failedToCopyPath": "Gagal menyalin jalur ke papan klip.", + "movedItems": "Memindahkan {{count}} item", + "failedToDeleteItem": "Gagal menghapus item", + "itemRenamedSuccessfully": "{{type}} berhasil diganti namanya", + "failedToRenameItem": "Gagal mengganti nama item", + "download": "Unduh", + "permissions": "Izin", + "size": "Ukuran", + "modified": "Dimodifikasi", + "path": "Jalur", + "confirmDelete": "Apakah Anda yakin ingin menghapus {{name}}?", + "uploadSuccess": "File berhasil diunggah.", + "uploadFailed": "Unggahan berkas gagal", + "downloadSuccess": "File berhasil diunduh.", + "downloadFailed": "Pengunduhan file gagal.", + "permissionDenied": "Izin ditolak", + "checkDockerLogs": "Periksa log Docker untuk informasi kesalahan yang lebih detail.", + "internalServerError": "Terjadi kesalahan server internal", + "serverError": "Kesalahan Server", + "error": "Kesalahan", + "requestFailed": "Permintaan gagal dengan kode status", + "unknownFileError": "tidak dikenal", + "cannotReadFile": "Tidak dapat membaca file", + "noSshSessionId": "Tidak ada ID sesi SSH yang tersedia.", + "noFilePath": "Tidak ada jalur file yang tersedia.", + "noCurrentHost": "Saat ini tidak ada host yang tersedia.", + "fileSavedSuccessfully": "Berkas berhasil disimpan.", + "saveTimeout": "Operasi penyimpanan mengalami batas waktu. File mungkin telah berhasil disimpan, tetapi operasi tersebut membutuhkan waktu terlalu lama untuk diselesaikan. Periksa log Docker untuk konfirmasi.", + "failedToSaveFile": "Gagal menyimpan file", + "deletedSuccessfully": "berhasil dihapus", + "connectToServer": "Menghubungkan ke Server", + "selectServerToEdit": "Pilih server dari bilah sisi untuk mulai mengedit file.", + "fileOperations": "Operasi File", + "confirmDeleteMessage": "Apakah Anda yakin ingin menghapus {{name}}?", + "confirmDeleteSingleItem": "Apakah Anda yakin ingin menghapus \"{{name}}\" secara permanen?", + "confirmDeleteMultipleItems": "Apakah Anda yakin ingin menghapus {{count}} item secara permanen?", + "confirmDeleteMultipleItemsWithFolders": "Apakah Anda yakin ingin menghapus {{count}} item secara permanen? Ini termasuk folder dan isinya.", + "confirmDeleteFolder": "Apakah Anda yakin ingin menghapus folder \"{{name}}\" beserta seluruh isinya secara permanen?", + "deleteDirectoryWarning": "Ini akan menghapus folder dan semua isinya.", + "actionCannotBeUndone": "Tindakan ini tidak dapat dibatalkan.", + "permanentDeleteWarning": "Tindakan ini tidak dapat dibatalkan. Item tersebut akan dihapus secara permanen dari server.", + "recent": "Terkini", + "pinned": "Disematkan", + "folderShortcuts": "Pintasan Folder", + "noRecentFiles": "Tidak ada berkas terbaru.", + "noPinnedFiles": "Tidak ada file yang disematkan.", + "enterFolderPath": "Masukkan jalur folder", + "noShortcuts": "Tidak ada jalan pintas.", + "searchFilesAndFolders": "Cari file dan folder...", + "noFilesOrFoldersFound": "Tidak ditemukan file atau folder.", + "failedToConnectSSH": "Gagal terhubung ke SSH", + "failedToReconnectSSH": "Gagal menyambungkan kembali sesi SSH", + "failedToListFiles": "Gagal menampilkan daftar file.", + "fetchHomeDataTimeout": "Pengambilan data beranda mengalami batas waktu habis.", + "sshStatusCheckTimeout": "Pemeriksaan status SSH mengalami batas waktu habis.", + "sshReconnectionTimeout": "Koneksi ulang SSH mengalami batas waktu.", + "saveOperationTimeout": "Operasi penyimpanan habis waktu.", + "cannotSaveFile": "Tidak dapat menyimpan file", + "dragSystemFilesToUpload": "Seret file sistem ke sini untuk mengunggah", + "dragFilesToWindowToDownload": "Seret file ke luar jendela untuk mengunduh.", + "openTerminalHere": "Buka Terminal di Sini", + "run": "Berlari", + "saveToSystem": "Simpan sebagai...", + "selectLocationToSave": "Pilih Lokasi untuk Menyimpan", + "openTerminalInFolder": "Buka Terminal di Folder Ini", + "openTerminalInFileLocation": "Buka Terminal di Lokasi File", "terminalWithPath": "Terminal - {{host}}:{{path}}", - "runningFile": "Running - {{file}}", - "onlyRunExecutableFiles": "Can only run executable files", - "noHostSelected": "No host selected", - "starred": "Starred", - "shortcuts": "Shortcuts", - "directories": "Directories", - "removedFromRecentFiles": "Removed \"{{name}}\" from recent files", - "removeFailed": "Remove failed", - "unpinnedSuccessfully": "Unpinned \"{{name}}\" successfully", - "unpinFailed": "Unpin failed", - "removedShortcut": "Removed shortcut \"{{name}}\"", - "removeShortcutFailed": "Remove shortcut failed", - "clearedAllRecentFiles": "Cleared all recent files", - "clearFailed": "Clear failed", - "removeFromRecentFiles": "Remove from recent files", - "clearAllRecentFiles": "Clear all recent files", - "unpinFile": "Unpin file", - "removeShortcut": "Remove shortcut", - "saveFilesToSystem": "Save {{count}} files as...", + "runningFile": "Berlari - {{file}}", + "onlyRunExecutableFiles": "Hanya dapat menjalankan file yang dapat dieksekusi.", + "noHostSelected": "Tidak ada pembawa acara yang dipilih.", + "starred": "Berbintang", + "shortcuts": "Jalan pintas", + "directories": "Direktori", + "removedFromRecentFiles": "Menghapus \"{{name}}\" dari file terbaru", + "removeFailed": "Hapus yang gagal", + "unpinnedSuccessfully": "Pin \"{{name}}\" berhasil dilepas", + "unpinFailed": "Gagal membuka pin", + "removedShortcut": "Pintasan \"{{name}}\" telah dihapus", + "removeShortcutFailed": "Penghapusan pintasan gagal.", + "clearedAllRecentFiles": "Semua file terbaru telah dihapus.", + "clearFailed": "Hapus gagal", + "removeFromRecentFiles": "Hapus dari berkas terbaru", + "clearAllRecentFiles": "Hapus semua file terbaru", + "unpinFile": "Lepaskan pin file", + "removeShortcut": "Hapus pintasan", + "saveFilesToSystem": "Simpan {{count}} file sebagai...", "pinFile": "Pin file", - "addToShortcuts": "Add to shortcuts", - "downloadToDefaultLocation": "Download to default location", - "pasteFailed": "Paste failed", - "noUndoableActions": "No undoable actions", - "undoCopySuccess": "Undid copy operation: Deleted {{count}} copied files", - "undoCopyFailedDelete": "Undo failed: Could not delete any copied files", - "undoCopyFailedNoInfo": "Undo failed: Could not find copied file information", - "undoMoveSuccess": "Undid move operation: Moved {{count}} files back to original location", - "undoMoveFailedMove": "Undo failed: Could not move any files back", - "undoMoveFailedNoInfo": "Undo failed: Could not find moved file information", - "undoDeleteNotSupported": "Delete operation cannot be undone: Files have been permanently deleted from server", - "undoTypeNotSupported": "Unsupported undo operation type", - "undoOperationFailed": "Undo operation failed", - "unknownError": "Unknown error", - "enterPath": "Enter path...", - "editPath": "Edit path", - "confirm": "Confirm", - "cancel": "Cancel", - "find": "Find...", - "replaceWith": "Replace with...", - "replace": "Replace", - "replaceAll": "Replace All", - "downloadInstead": "Download Instead", - "keyboardShortcuts": "Keyboard Shortcuts", - "searchAndReplace": "Search & Replace", - "editing": "Editing", - "navigation": "Navigation", - "code": "Code", - "search": "Search", - "findNext": "Find Next", - "findPrevious": "Find Previous", - "save": "Save", - "selectAll": "Select All", - "undo": "Undo", - "redo": "Redo", - "goToLine": "Go to Line", - "moveLineUp": "Move Line Up", - "moveLineDown": "Move Line Down", - "toggleComment": "Toggle Comment", + "addToShortcuts": "Tambahkan ke pintasan", + "downloadToDefaultLocation": "Unduh ke lokasi default", + "pasteFailed": "Pasta gagal", + "noUndoableActions": "Tidak ada tindakan yang tidak dapat dibatalkan.", + "undoCopySuccess": "Batalkan operasi penyalinan: Menghapus {{count}} file yang disalin", + "undoCopyFailedDelete": "Pembatalan gagal: Tidak dapat menghapus file yang disalin.", + "undoCopyFailedNoInfo": "Pembatalan gagal: Informasi file yang disalin tidak ditemukan.", + "undoMoveSuccess": "Operasi pemindahan dibatalkan: {{count}} berkas dipindahkan kembali ke lokasi semula", + "undoMoveFailedMove": "Pembatalan gagal: Tidak dapat memindahkan file apa pun kembali.", + "undoMoveFailedNoInfo": "Pembatalan gagal: Informasi file yang dipindahkan tidak ditemukan.", + "undoDeleteNotSupported": "Operasi penghapusan tidak dapat dibatalkan: File telah dihapus secara permanen dari server.", + "undoTypeNotSupported": "Jenis operasi undo yang tidak didukung", + "undoOperationFailed": "Operasi pembatalan gagal", + "unknownError": "Kesalahan tidak dikenal", + "enterPath": "Masuk ke jalur...", + "editPath": "Edit jalur", + "confirm": "Mengonfirmasi", + "cancel": "Membatalkan", + "find": "Menemukan...", + "replaceWith": "Ganti dengan...", + "replace": "Mengganti", + "replaceAll": "Ganti Semua", + "downloadInstead": "Unduh sebagai gantinya", + "keyboardShortcuts": "Pintasan Keyboard", + "searchAndReplace": "Cari & Ganti", + "editing": "Pengeditan", + "navigation": "Navigasi", + "code": "Kode", + "search": "Mencari", + "findNext": "Temukan Selanjutnya", + "findPrevious": "Temukan Sebelumnya", + "save": "Menyimpan", + "selectAll": "Pilih Semua", + "undo": "Membuka", + "redo": "Mengulangi", + "goToLine": "Buka Line", + "moveLineUp": "Susunan Langkah", + "moveLineDown": "Geser Garis ke Bawah", + "toggleComment": "Alihkan Komentar", "indent": "Indent", - "outdent": "Outdent", - "autoComplete": "Auto Complete", - "imageLoadError": "Failed to load image", - "rotate": "Rotate", - "originalSize": "Original Size", - "startTyping": "Start typing...", - "unknownSize": "Unknown size", - "fileIsEmpty": "File is empty", - "largeFileWarning": "Large File Warning", - "largeFileWarningDesc": "This file is {{size}} in size, which may cause performance issues when opened as text.", - "fileNotFoundAndRemoved": "File \"{{name}}\" not found and has been removed from recent/pinned files", - "failedToLoadFile": "Failed to load file: {{error}}", - "serverErrorOccurred": "Server error occurred. Please try again later.", - "autoSaveFailed": "Auto-save failed", - "fileAutoSaved": "File auto-saved", - "moveFileFailed": "Failed to move {{name}}", - "moveOperationFailed": "Move operation failed", - "canOnlyCompareFiles": "Can only compare two files", - "comparingFiles": "Comparing files: {{file1}} and {{file2}}", - "dragFailed": "Drag operation failed", - "filePinnedSuccessfully": "File \"{{name}}\" pinned successfully", - "pinFileFailed": "Failed to pin file", - "fileUnpinnedSuccessfully": "File \"{{name}}\" unpinned successfully", - "unpinFileFailed": "Failed to unpin file", - "shortcutAddedSuccessfully": "Folder shortcut \"{{name}}\" added successfully", - "addShortcutFailed": "Failed to add shortcut", - "operationCompletedSuccessfully": "{{operation}} {{count}} items successfully", - "operationCompleted": "{{operation}} {{count}} items", - "downloadFileSuccess": "File {{name}} downloaded successfully", - "downloadFileFailed": "Download failed", - "moveTo": "Move to {{name}}", - "diffCompareWith": "Diff compare with {{name}}", - "dragOutsideToDownload": "Drag outside window to download ({{count}} files)", - "newFolderDefault": "NewFolder", - "newFileDefault": "NewFile.txt", - "successfullyMovedItems": "Successfully moved {{count}} items to {{target}}", - "move": "Move", - "searchInFile": "Search in file (Ctrl+F)", - "showKeyboardShortcuts": "Show keyboard shortcuts", - "startWritingMarkdown": "Start writing your markdown content...", - "loadingFileComparison": "Loading file comparison...", - "reload": "Reload", - "compare": "Compare", - "sideBySide": "Side by Side", - "inline": "Inline", - "fileComparison": "File Comparison: {{file1}} vs {{file2}}", - "fileTooLarge": "File too large: {{error}}", - "sshConnectionFailed": "SSH connection failed. Please check your connection to {{name}} ({{ip}}:{{port}})", - "loadFileFailed": "Failed to load file: {{error}}", - "connectedSuccessfully": "Connected successfully", - "totpVerificationFailed": "TOTP verification failed", - "verificationCodePrompt": "Verification code:", - "changePermissions": "Change Permissions", - "changePermissionsDesc": "Modify file permissions for", - "currentPermissions": "Current Permissions", - "newPermissions": "New Permissions", - "owner": "Owner", - "group": "Group", - "others": "Others", - "read": "Read", - "write": "Write", - "execute": "Execute", - "permissionsChangedSuccessfully": "Permissions changed successfully", - "failedToChangePermissions": "Failed to change permissions" + "outdent": "Menonjol ke luar", + "autoComplete": "Pelengkapan Otomatis", + "imageLoadError": "Gambar gagal dimuat", + "rotate": "Memutar", + "originalSize": "Ukuran Asli", + "startTyping": "Mulai mengetik...", + "unknownSize": "Ukuran tidak diketahui", + "fileIsEmpty": "Berkas kosong", + "largeFileWarning": "Peringatan Ukuran File Besar", + "largeFileWarningDesc": "File ini berukuran {{size}} , yang dapat menyebabkan masalah kinerja saat dibuka sebagai teks.", + "fileNotFoundAndRemoved": "Berkas \"{{name}}\" tidak ditemukan dan telah dihapus dari berkas terbaru/yang disematkan", + "failedToLoadFile": "Gagal memuat file: {{error}}", + "serverErrorOccurred": "Terjadi kesalahan server. Silakan coba lagi nanti.", + "autoSaveFailed": "Penyimpanan otomatis gagal", + "fileAutoSaved": "Berkas tersimpan otomatis", + "moveFileFailed": "Gagal memindahkan {{name}}", + "moveOperationFailed": "Operasi pemindahan gagal", + "canOnlyCompareFiles": "Hanya dapat membandingkan dua file.", + "comparingFiles": "Membandingkan berkas: {{file1}} dan {{file2}}", + "dragFailed": "Operasi seret gagal", + "filePinnedSuccessfully": "Berkas \"{{name}}\" berhasil disematkan", + "pinFileFailed": "Gagal menyematkan file", + "fileUnpinnedSuccessfully": "Berkas \"{{name}}\" berhasil dilepas pinnya", + "unpinFileFailed": "Gagal melepaskan pin file", + "shortcutAddedSuccessfully": "Pintasan folder \"{{name}}\" berhasil ditambahkan", + "addShortcutFailed": "Gagal menambahkan pintasan", + "operationCompletedSuccessfully": "{{operation}} {{count}} item berhasil", + "operationCompleted": "{{operation}} {{count}} item", + "downloadFileSuccess": "File {{name}} berhasil diunduh", + "downloadFileFailed": "Pengunduhan gagal", + "moveTo": "Pindah ke {{name}}", + "diffCompareWith": "Bandingkan perbedaan dengan {{name}}", + "dragOutsideToDownload": "Seret ke luar jendela untuk mengunduh ({{count}} file)", + "newFolderDefault": "Folder Baru", + "newFileDefault": "File Baru.txt", + "successfullyMovedItems": "Berhasil memindahkan {{count}} item ke {{target}}", + "move": "Bergerak", + "searchInFile": "Cari di dalam file (Ctrl+F)", + "showKeyboardShortcuts": "Tampilkan pintasan keyboard", + "startWritingMarkdown": "Mulailah menulis konten markdown Anda...", + "loadingFileComparison": "Sedang memuat perbandingan file...", + "reload": "Muat ulang", + "compare": "Membandingkan", + "sideBySide": "Berdampingan", + "inline": "Sejajar", + "fileComparison": "Perbandingan File: {{file1}} vs {{file2}}", + "fileTooLarge": "Ukuran file terlalu besar: {{error}}", + "sshConnectionFailed": "Koneksi SSH gagal. Silakan periksa koneksi Anda ke {{name}} ({{ip}}:{{port}})", + "loadFileFailed": "Gagal memuat file: {{error}}", + "connectedSuccessfully": "Terhubung berhasil", + "totpVerificationFailed": "Verifikasi TOTP gagal", + "verificationCodePrompt": "Kode verifikasi:", + "changePermissions": "Ubah Izin", + "changePermissionsDesc": "Ubah izin file untuk", + "currentPermissions": "Izin Saat Ini", + "newPermissions": "Izin Baru", + "owner": "Pemilik", + "group": "Kelompok", + "others": "Yang lain", + "read": "Membaca", + "write": "Menulis", + "execute": "Menjalankan", + "permissionsChangedSuccessfully": "Izin berhasil diubah.", + "failedToChangePermissions": "Gagal mengubah izin" }, "tunnel": { - "noTunnelsConfigured": "No Tunnels Configured", - "configureTunnelsInHostSettings": "Configure tunnel connections in the Host Manager to get started" + "noTunnelsConfigured": "Tidak Ada Terowongan yang Dikonfigurasi", + "configureTunnelsInHostSettings": "Konfigurasikan koneksi terowongan di Host Manager untuk memulai." }, "tunnels": { - "title": "SSH Tunnels", - "noSshTunnels": "No SSH Tunnels", - "createFirstTunnelMessage": "You haven't created any SSH tunnels yet. Configure tunnel connections in the Host Manager to get started.", - "connected": "Connected", - "disconnected": "Disconnected", - "connecting": "Connecting...", - "disconnecting": "Disconnecting...", - "unknownTunnelStatus": "Unknown", - "statusUnknown": "Unknown", - "unknown": "Unknown", - "error": "Error", - "failed": "Failed", - "retrying": "Retrying", - "waiting": "Waiting", - "waitingForRetry": "Waiting for retry", - "retryingConnection": "Retrying connection", - "canceling": "Canceling...", - "connect": "Connect", - "disconnect": "Disconnect", - "cancel": "Cancel", - "port": "Port", - "attempt": "Attempt {{current}} of {{max}}", - "nextRetryIn": "Next retry in {{seconds}} seconds", - "checkDockerLogs": "Check your Docker logs for the error reason, join the", - "orCreate": "or create a ", - "noTunnelConnections": "No tunnel connections configured", - "tunnelConnections": "Tunnel Connections", - "addTunnel": "Add Tunnel", - "editTunnel": "Edit Tunnel", - "deleteTunnel": "Delete Tunnel", - "tunnelName": "Tunnel Name", - "localPort": "Local Port", - "remoteHost": "Remote Host", - "remotePort": "Remote Port", - "autoStart": "Auto Start", + "title": "Terowongan SSH", + "noSshTunnels": "Tidak ada terowongan SSH", + "createFirstTunnelMessage": "Anda belum membuat terowongan SSH apa pun. Konfigurasikan koneksi terowongan di Host Manager untuk memulai.", + "connected": "Terhubung", + "disconnected": "Terputus", + "connecting": "Menghubungkan...", + "disconnecting": "Memutuskan sambungan...", + "unknownTunnelStatus": "Tidak dikenal", + "statusUnknown": "Tidak dikenal", + "unknown": "Tidak dikenal", + "error": "Kesalahan", + "failed": "Gagal", + "retrying": "Mencoba lagi", + "waiting": "Menunggu", + "waitingForRetry": "Menunggu percobaan ulang", + "retryingConnection": "Mencoba kembali koneksi", + "canceling": "Membatalkan...", + "connect": "Menghubungkan", + "disconnect": "Memutuskan", + "cancel": "Membatalkan", + "port": "Pelabuhan", + "attempt": "Percobaan {{current}} dari {{max}}", + "nextRetryIn": "Percobaan berikutnya dalam {{seconds}} detik", + "checkDockerLogs": "Periksa log Docker Anda untuk mengetahui penyebab kesalahan, bergabunglah dengan", + "orCreate": "atau membuat ", + "noTunnelConnections": "Tidak ada koneksi terowongan yang dikonfigurasi.", + "tunnelConnections": "Koneksi Terowongan", + "addTunnel": "Tambahkan Terowongan", + "editTunnel": "Terowongan Edit", + "deleteTunnel": "Hapus Terowongan", + "tunnelName": "Nama Terowongan", + "localPort": "Pelabuhan Lokal", + "remoteHost": "Host Jarak Jauh", + "remotePort": "Port Jarak Jauh", + "autoStart": "Mulai Otomatis", "status": "Status", - "active": "Active", - "inactive": "Inactive", - "start": "Start", - "stop": "Stop", - "restart": "Restart", - "connectionType": "Connection Type", - "local": "Local", - "remote": "Remote", - "dynamic": "Dynamic", - "unknownConnectionStatus": "Unknown", + "active": "Aktif", + "inactive": "Tidak aktif", + "start": "Awal", + "stop": "Berhenti", + "restart": "Mulai ulang", + "connectionType": "Jenis Koneksi", + "local": "Lokal", + "remote": "Terpencil", + "dynamic": "Dinamis", + "unknownConnectionStatus": "Tidak dikenal", "portMapping": "Port {{sourcePort}} → {{endpointHost}}:{{endpointPort}}", - "endpointHostNotFound": "Endpoint host not found", - "discord": "Discord", - "githubIssue": "GitHub issue", - "forHelp": "for help" + "endpointHostNotFound": "Host titik akhir tidak ditemukan", + "discord": "Perselisihan", + "githubIssue": "Masalah GitHub", + "forHelp": "untuk bantuan" }, "serverStats": { - "title": "Server Statistics", + "title": "Statistik Server", "cpu": "CPU", - "memory": "Memory", + "memory": "Ingatan", "disk": "Disk", - "network": "Network", - "uptime": "Uptime", - "loadAverage": "Avg: {{avg1}}, {{avg5}}, {{avg15}}", - "processes": "Processes", - "connections": "Connections", - "usage": "Usage", - "available": "Available", + "network": "Jaringan", + "uptime": "Waktu aktif", + "loadAverage": "Rata-rata: {{avg1}}, {{avg5}}, {{avg15}}", + "processes": "Proses", + "connections": "Koneksi", + "usage": "Penggunaan", + "available": "Tersedia", "total": "Total", - "free": "Free", - "used": "Used", - "percentage": "Percentage", - "refreshStatusAndMetrics": "Refresh status and metrics", - "refreshStatus": "Refresh Status", - "fileManagerAlreadyOpen": "File Manager already open for this host", - "openFileManager": "Open File Manager", + "free": "Bebas", + "used": "Digunakan", + "percentage": "Persentase", + "refreshStatusAndMetrics": "Perbarui status dan metrik", + "refreshStatus": "Perbarui Status", + "fileManagerAlreadyOpen": "Pengelola berkas sudah terbuka untuk host ini.", + "openFileManager": "Buka Pengelola File", "cpuCores_one": "{{count}} CPU", - "cpuCores_other": "{{count}} CPUs", - "naCpus": "N/A CPU(s)", - "loadAverageNA": "Avg: N/A", - "cpuUsage": "CPU Usage", - "memoryUsage": "Memory Usage", - "diskUsage": "Disk Usage", - "rootStorageSpace": "Root Storage Space", - "of": "of", - "feedbackMessage": "Have ideas for what should come next for server management? Share them on", - "failedToFetchHostConfig": "Failed to fetch host configuration", - "failedToFetchStatus": "Failed to fetch server status", - "failedToFetchMetrics": "Failed to fetch server metrics", - "failedToFetchHomeData": "Failed to fetch home data", - "loadingMetrics": "Loading metrics...", - "connecting": "Connecting...", - "refreshing": "Refreshing...", + "cpuCores_other": "{{count}} CPU", + "naCpus": "CPU tidak tersedia", + "loadAverageNA": "Rata-rata: Tidak tersedia", + "cpuUsage": "Penggunaan CPU", + "memoryUsage": "Penggunaan Memori", + "diskUsage": "Penggunaan Disk", + "rootStorageSpace": "Ruang Penyimpanan Akar", + "of": "dari", + "feedbackMessage": "Punya ide tentang apa yang seharusnya terjadi selanjutnya untuk manajemen server? Bagikan ide Anda di sini.", + "failedToFetchHostConfig": "Gagal mengambil konfigurasi host", + "failedToFetchStatus": "Gagal mengambil status server", + "failedToFetchMetrics": "Gagal mengambil metrik server.", + "failedToFetchHomeData": "Gagal mengambil data beranda", + "loadingMetrics": "Sedang memuat metrik...", + "connecting": "Menghubungkan...", + "refreshing": "Menyegarkan...", "serverOffline": "Server Offline", - "cannotFetchMetrics": "Cannot fetch metrics from offline server", - "totpRequired": "TOTP Authentication Required", - "totpUnavailable": "Server Stats unavailable for TOTP-enabled servers", - "totpVerified": "TOTP verified, metrics collection started", - "totpFailed": "TOTP verification failed", - "totpInvalidCode": "Invalid verification code", - "totpCancelled": "Metrics collection cancelled", - "authenticationFailed": "Authentication failed", - "noneAuthNotSupported": "Server Stats does not support 'none' authentication type.", - "load": "Load", - "editLayout": "Edit Layout", - "cancelEdit": "Cancel", - "addWidget": "Add Widget", - "saveLayout": "Save Layout", - "unsavedChanges": "Unsaved changes", - "layoutSaved": "Layout saved successfully", - "failedToSaveLayout": "Failed to save layout", - "systemInfo": "System Information", - "hostname": "Hostname", - "operatingSystem": "Operating System", - "kernel": "Kernel", - "totalUptime": "Total Uptime", - "seconds": "seconds", - "networkInterfaces": "Network Interfaces", - "noInterfacesFound": "No network interfaces found", - "totalProcesses": "Total Processes", - "running": "Running", - "noProcessesFound": "No processes found", - "loginStats": "SSH Login Statistics", - "totalLogins": "Total Logins", - "uniqueIPs": "Unique IPs", - "recentSuccessfulLogins": "Recent Successful Logins", - "recentFailedAttempts": "Recent Failed Attempts", - "noRecentLoginData": "No recent login data", - "from": "from", - "quickActions": "Quick Actions", - "executeQuickAction": "Execute {{name}}", - "executingQuickAction": "Executing {{name}}...", - "quickActionSuccess": "{{name}} completed successfully", - "quickActionFailed": "{{name}} failed", - "quickActionError": "Failed to execute {{name}}" + "cannotFetchMetrics": "Tidak dapat mengambil metrik dari server offline.", + "totpRequired": "Otentikasi TOTP Diperlukan", + "totpUnavailable": "Statistik server tidak tersedia untuk server yang mendukung TOTP.", + "totpVerified": "TOTP terverifikasi, pengumpulan metrik dimulai.", + "totpFailed": "Verifikasi TOTP gagal", + "totpInvalidCode": "Kode verifikasi tidak valid", + "totpCancelled": "Pengumpulan metrik dibatalkan", + "authenticationFailed": "Autentikasi gagal", + "noneAuthNotSupported": "Statistik Server tidak mendukung tipe autentikasi 'none'.", + "load": "Memuat", + "editLayout": "Edit Tata Letak", + "cancelEdit": "Membatalkan", + "addWidget": "Tambahkan Widget", + "saveLayout": "Simpan Tata Letak", + "unsavedChanges": "Perubahan yang belum disimpan", + "layoutSaved": "Tata letak berhasil disimpan.", + "failedToSaveLayout": "Gagal menyimpan tata letak", + "systemInfo": "Informasi Sistem", + "hostname": "Nama host", + "operatingSystem": "Sistem Operasi", + "kernel": "Inti", + "totalUptime": "Total Waktu Aktif", + "seconds": "detik", + "networkInterfaces": "Antarmuka Jaringan", + "noInterfacesFound": "Tidak ditemukan antarmuka jaringan.", + "totalProcesses": "Proses Total", + "running": "Berlari", + "noProcessesFound": "Tidak ada proses yang ditemukan.", + "loginStats": "Statistik Login SSH", + "totalLogins": "Total Login", + "uniqueIPs": "IP Unik", + "recentSuccessfulLogins": "Login Berhasil Terbaru", + "recentFailedAttempts": "Upaya Gagal Baru-baru Ini", + "noRecentLoginData": "Tidak ada data login terbaru.", + "from": "dari", + "quickActions": "Tindakan Cepat", + "executeQuickAction": "Eksekusi {{name}}", + "executingQuickAction": "Menjalankan {{name}}...", + "quickActionSuccess": "{{name}} berhasil diselesaikan", + "quickActionFailed": "{{name}} gagal", + "quickActionError": "Gagal mengeksekusi {{name}}" }, "auth": { - "tagline": "SSH SERVER MANAGER", - "description": "Secure, powerful, and intuitive SSH connection management", - "welcomeBack": "Welcome back to TERMIX", - "createAccount": "Create your TERMIX account", - "continueExternal": "Continue with external provider", - "loginTitle": "Login to Termix", - "registerTitle": "Create Account", + "tagline": "MANAJER SERVER SSH", + "description": "Manajemen koneksi SSH yang aman, andal, dan intuitif.", + "welcomeBack": "Selamat datang kembali di TERMIX", + "createAccount": "Buat akun TERMIX Anda", + "continueExternal": "Lanjutkan dengan penyedia eksternal", + "loginTitle": "Masuk ke Termix", + "registerTitle": "Buat Akun", "loginButton": "Login", - "registerButton": "Register", - "forgotPassword": "Forgot Password?", - "rememberMe": "Remember Me", - "noAccount": "Don't have an account?", - "hasAccount": "Already have an account?", - "loginSuccess": "Login successful", - "loginFailed": "Login failed", - "registerSuccess": "Registration successful", - "registerFailed": "Registration failed", - "logoutSuccess": "Logged out successfully", - "invalidCredentials": "Invalid username or password", - "accountCreated": "Account created successfully", - "passwordReset": "Password reset link sent", - "twoFactorAuth": "Two-Factor Authentication", - "enterCode": "Enter verification code", - "backupCode": "Or use backup code", - "verifyCode": "Verify Code", - "redirectingToApp": "Redirecting to app...", - "enableTwoFactor": "Enable Two-Factor Authentication", - "disableTwoFactor": "Disable Two-Factor Authentication", - "scanQRCode": "Scan this QR code with your authenticator app", - "backupCodes": "Backup Codes", - "saveBackupCodes": "Save these backup codes in a safe place", - "twoFactorEnabledSuccess": "Two-factor authentication enabled successfully!", - "twoFactorDisabled": "Two-factor authentication disabled", - "newBackupCodesGenerated": "New backup codes generated", - "backupCodesDownloaded": "Backup codes downloaded", - "pleaseEnterSixDigitCode": "Please enter a 6-digit code", - "invalidVerificationCode": "Invalid verification code", - "failedToDisableTotp": "Failed to disable TOTP", - "failedToGenerateBackupCodes": "Failed to generate backup codes", - "enterPassword": "Enter your password", - "lockedOidcAuth": "Locked (OIDC Auth)", - "twoFactorTitle": "Two-Factor Authentication", - "twoFactorProtected": "Your account is protected with two-factor authentication", - "twoFactorActive": "Two-factor authentication is currently active on your account", - "disable2FA": "Disable 2FA", - "disableTwoFactorWarning": "Disabling two-factor authentication will make your account less secure", - "passwordOrTotpCode": "Password or TOTP Code", - "or": "Or", - "generateNewBackupCodesText": "Generate new backup codes if you've lost your existing ones", - "generateNewBackupCodes": "Generate New Backup Codes", - "yourBackupCodes": "Your Backup Codes", - "download": "Download", - "setupTwoFactorTitle": "Set Up Two-Factor Authentication", - "sshAuthenticationRequired": "SSH Authentication Required", - "sshNoKeyboardInteractive": "Keyboard-Interactive Authentication Unavailable", - "sshAuthenticationFailed": "Authentication Failed", - "sshAuthenticationTimeout": "Authentication Timeout", - "sshNoKeyboardInteractiveDescription": "The server does not support keyboard-interactive authentication. Please provide your password or SSH key.", - "sshAuthFailedDescription": "The provided credentials were incorrect. Please try again with valid credentials.", - "sshTimeoutDescription": "The authentication attempt timed out. Please try again.", - "sshProvideCredentialsDescription": "Please provide your SSH credentials to connect to this server.", - "sshPasswordDescription": "Enter the password for this SSH connection.", - "sshKeyPasswordDescription": "If your SSH key is encrypted, enter the passphrase here.", - "step1ScanQR": "Step 1: Scan the QR code with your authenticator app", - "manualEntryCode": "Manual Entry Code", - "cannotScanQRText": "If you can't scan the QR code, enter this code manually in your authenticator app", - "nextVerifyCode": "Next: Verify Code", - "verifyAuthenticator": "Verify Your Authenticator", - "step2EnterCode": "Step 2: Enter the 6-digit code from your authenticator app", - "verificationCode": "Verification Code", - "back": "Back", - "verifyAndEnable": "Verify and Enable", - "saveBackupCodesTitle": "Save Your Backup Codes", - "step3StoreCodesSecurely": "Step 3: Store these codes in a safe place", - "importantBackupCodesText": "Save these backup codes in a secure location. You can use them to access your account if you lose your authenticator device.", - "completeSetup": "Complete Setup", - "notEnabledText": "Two-factor authentication adds an extra layer of security by requiring a code from your authenticator app when signing in.", - "enableTwoFactorButton": "Enable Two-Factor Authentication", - "addExtraSecurityLayer": "Add an extra layer of security to your account", - "firstUser": "First User", - "firstUserMessage": "You are the first user and will be made an admin. You can view admin settings in the sidebar user dropdown. If you think this is a mistake, check the docker logs, or create a GitHub issue.", - "external": "External", - "loginWithExternal": "Login with External Provider", - "loginWithExternalDesc": "Login using your configured external identity provider", - "externalNotSupportedInElectron": "External authentication is not supported in the Electron app yet. Please use the web version for OIDC login.", - "resetPasswordButton": "Reset Password", - "sendResetCode": "Send Reset Code", - "resetCodeDesc": "Enter your username to receive a password reset code. The code will be logged in the docker container logs.", - "resetCode": "Reset Code", - "verifyCodeButton": "Verify Code", - "enterResetCode": "Enter the 6-digit code from the docker container logs for user:", - "goToLogin": "Go to Login", - "newPassword": "New Password", - "confirmNewPassword": "Confirm Password", - "enterNewPassword": "Enter your new password for user:", - "signUp": "Sign Up", - "mobileApp": "Mobile App", - "loggingInToMobileApp": "Logging in to the mobile app", - "desktopApp": "Desktop App", - "loggingInToDesktopApp": "Logging in to the desktop app", - "loggingInToDesktopAppViaWeb": "Logging in to the desktop app via web interface", - "loadingServer": "Loading server...", - "authenticating": "Authenticating...", - "dataLossWarning": "Resetting your password this way will delete all your saved SSH hosts, credentials, and other encrypted data. This action cannot be undone. Only use this if you have forgotten your password and are not logged in.", - "authenticationDisabled": "Authentication Disabled", - "authenticationDisabledDesc": "All authentication methods are currently disabled. Please contact your administrator.", - "passwordResetSuccess": "Password Reset Successful", - "passwordResetSuccessDesc": "Your password has been reset successfully. You can now log in with your new password." + "registerButton": "Daftar", + "forgotPassword": "Lupa kata sandi?", + "rememberMe": "Ingatlah Aku", + "noAccount": "Belum punya akun?", + "hasAccount": "Sudah punya akun?", + "loginSuccess": "Login berhasil.", + "loginFailed": "Login gagal.", + "registerSuccess": "Pendaftaran berhasil", + "registerFailed": "Pendaftaran gagal", + "logoutSuccess": "Berhasil keluar", + "invalidCredentials": "Nama pengguna atau kata sandi tidak valid", + "accountCreated": "Akun berhasil dibuat.", + "passwordReset": "Tautan pengaturan ulang kata sandi telah dikirim.", + "twoFactorAuth": "Autentikasi Dua Faktor", + "enterCode": "Masukkan kode verifikasi", + "backupCode": "Atau gunakan kode cadangan", + "verifyCode": "Verifikasi Kode", + "redirectingToApp": "Mengalihkan ke aplikasi...", + "enableTwoFactor": "Aktifkan Otentikasi Dua Faktor", + "disableTwoFactor": "Nonaktifkan Otentikasi Dua Faktor", + "scanQRCode": "Pindai kode QR ini dengan aplikasi otentikasi Anda.", + "backupCodes": "Kode Cadangan", + "saveBackupCodes": "Simpan kode cadangan ini di tempat yang aman.", + "twoFactorEnabledSuccess": "Autentikasi dua faktor berhasil diaktifkan!", + "twoFactorDisabled": "Autentikasi dua faktor dinonaktifkan", + "newBackupCodesGenerated": "Kode cadangan baru telah dibuat.", + "backupCodesDownloaded": "Kode cadangan telah diunduh", + "pleaseEnterSixDigitCode": "Silakan masukkan kode 6 digit", + "invalidVerificationCode": "Kode verifikasi tidak valid", + "failedToDisableTotp": "Gagal menonaktifkan TOTP", + "failedToGenerateBackupCodes": "Gagal menghasilkan kode cadangan.", + "enterPassword": "Masukkan kata sandi Anda", + "lockedOidcAuth": "Terkunci (Otorisasi OIDC)", + "twoFactorTitle": "Autentikasi Dua Faktor", + "twoFactorProtected": "Akun Anda dilindungi dengan otentikasi dua faktor.", + "twoFactorActive": "Autentikasi dua faktor saat ini aktif di akun Anda.", + "disable2FA": "Nonaktifkan otentikasi dua faktor (2FA).", + "disableTwoFactorWarning": "Menonaktifkan otentikasi dua faktor akan membuat akun Anda kurang aman.", + "passwordOrTotpCode": "Kata Sandi atau Kode TOTP", + "or": "Atau", + "generateNewBackupCodesText": "Buat kode cadangan baru jika Anda kehilangan kode yang sudah ada.", + "generateNewBackupCodes": "Hasilkan Kode Cadangan Baru", + "yourBackupCodes": "Kode Cadangan Anda", + "download": "Unduh", + "setupTwoFactorTitle": "Siapkan Otentikasi Dua Faktor", + "sshAuthenticationRequired": "Autentikasi SSH Diperlukan", + "sshNoKeyboardInteractive": "Autentikasi Interaktif Keyboard Tidak Tersedia", + "sshAuthenticationFailed": "Autentikasi Gagal", + "sshAuthenticationTimeout": "Batas Waktu Otentikasi", + "sshNoKeyboardInteractiveDescription": "Server ini tidak mendukung autentikasi interaktif keyboard. Harap berikan kata sandi atau kunci SSH Anda.", + "sshAuthFailedDescription": "Kredensial yang diberikan salah. Silakan coba lagi dengan kredensial yang valid.", + "sshTimeoutDescription": "Upaya otentikasi telah habis waktu. Silakan coba lagi.", + "sshProvideCredentialsDescription": "Silakan berikan kredensial SSH Anda untuk terhubung ke server ini.", + "sshPasswordDescription": "Masukkan kata sandi untuk koneksi SSH ini.", + "sshKeyPasswordDescription": "Jika kunci SSH Anda dienkripsi, masukkan kata sandi di sini.", + "step1ScanQR": "Langkah 1: Pindai kode QR dengan aplikasi otentikasi Anda", + "manualEntryCode": "Kode Entri Manual", + "cannotScanQRText": "Jika Anda tidak dapat memindai kode QR, masukkan kode ini secara manual di aplikasi otentikasi Anda.", + "nextVerifyCode": "Selanjutnya: Verifikasi Kode", + "verifyAuthenticator": "Verifikasi Otentikator Anda", + "step2EnterCode": "Langkah 2: Masukkan kode 6 digit dari aplikasi otentikasi Anda", + "verificationCode": "Kode Verifikasi", + "back": "Kembali", + "verifyAndEnable": "Verifikasi dan Aktifkan", + "saveBackupCodesTitle": "Simpan Kode Cadangan Anda", + "step3StoreCodesSecurely": "Langkah 3: Simpan kode-kode ini di tempat yang aman.", + "importantBackupCodesText": "Simpan kode cadangan ini di lokasi yang aman. Anda dapat menggunakannya untuk mengakses akun Anda jika Anda kehilangan perangkat otentikator Anda.", + "completeSetup": "Pengaturan Lengkap", + "notEnabledText": "Autentikasi dua faktor menambahkan lapisan keamanan ekstra dengan mewajibkan kode dari aplikasi autentikasi Anda saat masuk.", + "enableTwoFactorButton": "Aktifkan Otentikasi Dua Faktor", + "addExtraSecurityLayer": "Tambahkan lapisan keamanan ekstra ke akun Anda", + "firstUser": "Pengguna Pertama", + "firstUserMessage": "Anda adalah pengguna pertama dan akan dijadikan admin. Anda dapat melihat pengaturan admin di menu tarik-turun pengguna di sidebar. Jika Anda merasa ini adalah kesalahan, periksa log Docker, atau buat masalah di GitHub.", + "external": "Luar", + "loginWithExternal": "Masuk dengan Penyedia Eksternal", + "loginWithExternalDesc": "Masuk menggunakan penyedia identitas eksternal yang telah Anda konfigurasi.", + "externalNotSupportedInElectron": "Autentikasi eksternal belum didukung di aplikasi Electron. Silakan gunakan versi web untuk login OIDC.", + "resetPasswordButton": "Atur Ulang Kata Sandi", + "sendResetCode": "Kirim Kode Reset", + "resetCodeDesc": "Masukkan nama pengguna Anda untuk menerima kode pengaturan ulang kata sandi. Kode tersebut akan tercatat dalam log kontainer Docker.", + "resetCode": "Atur Ulang Kode", + "verifyCodeButton": "Verifikasi Kode", + "enterResetCode": "Masukkan kode 6 digit dari log kontainer Docker untuk pengguna:", + "goToLogin": "Buka halaman Login", + "newPassword": "Kata Sandi Baru", + "confirmNewPassword": "Konfirmasi Kata Sandi", + "enterNewPassword": "Masukkan kata sandi baru Anda untuk pengguna:", + "signUp": "Mendaftar", + "mobileApp": "Aplikasi Seluler", + "loggingInToMobileApp": "Masuk ke aplikasi seluler", + "desktopApp": "Aplikasi Desktop", + "loggingInToDesktopApp": "Masuk ke aplikasi desktop", + "loggingInToDesktopAppViaWeb": "Masuk ke aplikasi desktop melalui antarmuka web.", + "loadingServer": "Sedang memuat server...", + "authenticating": "Sedang melakukan autentikasi...", + "dataLossWarning": "Mengatur ulang kata sandi Anda dengan cara ini akan menghapus semua host SSH, kredensial, dan data terenkripsi lainnya yang telah Anda simpan. Tindakan ini tidak dapat dibatalkan. Gunakan cara ini hanya jika Anda lupa kata sandi dan belum masuk.", + "authenticationDisabled": "Autentikasi Dinonaktifkan", + "authenticationDisabledDesc": "Semua metode otentikasi saat ini dinonaktifkan. Silakan hubungi administrator Anda.", + "passwordResetSuccess": "Reset Kata Sandi Berhasil", + "passwordResetSuccessDesc": "Kata sandi Anda telah berhasil direset. Anda sekarang dapat masuk dengan kata sandi baru Anda." }, "errors": { - "notFound": "Page not found", - "unauthorized": "Unauthorized access", - "forbidden": "Access forbidden", - "serverError": "Server error", - "networkError": "Network error", - "databaseConnection": "Could not connect to the database", - "unknownError": "Unknown error", - "loginFailed": "Login failed", - "failedPasswordReset": "Failed to initiate password reset", - "failedVerifyCode": "Failed to verify reset code", - "failedCompleteReset": "Failed to complete password reset", - "invalidTotpCode": "Invalid TOTP code", - "failedOidcLogin": "Failed to start OIDC login", - "failedUserInfo": "Failed to get user info after OIDC login", - "oidcAuthFailed": "OIDC authentication failed", - "noTokenReceived": "No token received from login", - "invalidAuthUrl": "Invalid authorization URL received from backend", - "invalidInput": "Invalid input", - "requiredField": "This field is required", - "minLength": "Minimum length is {{min}}", - "maxLength": "Maximum length is {{max}}", - "invalidEmail": "Invalid email address", - "passwordMismatch": "Passwords do not match", - "passwordLoginDisabled": "Username/password login is currently disabled", - "weakPassword": "Password is too weak", - "usernameExists": "Username already exists", - "emailExists": "Email already exists", - "loadFailed": "Failed to load data", - "saveError": "Failed to save", - "sessionExpired": "Session expired - please log in again" + "notFound": "Halaman tidak ditemukan", + "unauthorized": "Akses tidak sah", + "forbidden": "Akses dilarang", + "serverError": "Kesalahan server", + "networkError": "Kesalahan jaringan", + "databaseConnection": "Tidak dapat terhubung ke basis data.", + "unknownError": "Kesalahan tidak dikenal", + "loginFailed": "Login gagal.", + "failedPasswordReset": "Gagal memulai pengaturan ulang kata sandi.", + "failedVerifyCode": "Gagal memverifikasi kode reset", + "failedCompleteReset": "Gagal menyelesaikan pengaturan ulang kata sandi.", + "invalidTotpCode": "Kode TOTP tidak valid", + "failedOidcLogin": "Gagal memulai login OIDC.", + "failedUserInfo": "Gagal mendapatkan informasi pengguna setelah login OIDC.", + "oidcAuthFailed": "Autentikasi OIDC gagal", + "noTokenReceived": "Tidak ada token yang diterima dari login.", + "invalidAuthUrl": "URL otorisasi yang diterima dari backend tidak valid.", + "invalidInput": "Masukan tidak valid", + "requiredField": "Kolom ini wajib diisi.", + "minLength": "Panjang minimum adalah {{min}}", + "maxLength": "Panjang maksimumnya adalah {{max}}", + "invalidEmail": "Alamat email tidak valid", + "passwordMismatch": "Kata sandi tidak cocok", + "passwordLoginDisabled": "Login menggunakan nama pengguna/kata sandi saat ini dinonaktifkan.", + "weakPassword": "Kata sandi terlalu lemah", + "usernameExists": "Nama pengguna sudah ada.", + "emailExists": "Email sudah ada.", + "loadFailed": "Gagal memuat data", + "saveError": "Gagal menyimpan", + "sessionExpired": "Sesi telah berakhir - silakan masuk kembali." }, "messages": { - "saveSuccess": "Saved successfully", - "saveError": "Failed to save", - "deleteSuccess": "Deleted successfully", - "deleteError": "Failed to delete", - "updateSuccess": "Updated successfully", - "updateError": "Failed to update", - "copySuccess": "Copied to clipboard", - "copyError": "Failed to copy", - "copiedToClipboard": "{{item}} copied to clipboard", - "connectionEstablished": "Connection established", - "connectionClosed": "Connection closed", - "reconnecting": "Reconnecting...", - "processing": "Processing...", - "pleaseWait": "Please wait...", - "registrationDisabled": "New account registration is currently disabled by an admin. Please log in or contact an administrator.", - "databaseConnected": "Database connected successfully", - "databaseConnectionFailed": "Failed to connect to the database server", - "checkServerConnection": "Please check your server connection and try again", - "resetCodeSent": "Reset code sent to Docker logs", - "codeVerified": "Code verified successfully", - "passwordResetSuccess": "Password reset successfully", - "loginSuccess": "Login successful", - "registrationSuccess": "Registration successful" + "saveSuccess": "Berhasil disimpan", + "saveError": "Gagal menyimpan", + "deleteSuccess": "Penghapusan berhasil", + "deleteError": "Gagal menghapus", + "updateSuccess": "Pembaruan berhasil", + "updateError": "Pembaruan gagal", + "copySuccess": "Disalin ke papan klip", + "copyError": "Gagal menyalin", + "copiedToClipboard": "{{item}} disalin ke papan klip", + "connectionEstablished": "Koneksi berhasil terjalin.", + "connectionClosed": "Koneksi terputus", + "reconnecting": "Menghubungkan kembali...", + "processing": "Pengolahan...", + "pleaseWait": "Harap tunggu...", + "registrationDisabled": "Pendaftaran akun baru saat ini dinonaktifkan oleh administrator. Silakan masuk atau hubungi administrator.", + "databaseConnected": "Koneksi basis data berhasil.", + "databaseConnectionFailed": "Gagal terhubung ke server basis data", + "checkServerConnection": "Silakan periksa koneksi server Anda dan coba lagi.", + "resetCodeSent": "Kode reset dikirim ke log Docker", + "codeVerified": "Kode berhasil diverifikasi.", + "passwordResetSuccess": "Kata sandi berhasil direset.", + "loginSuccess": "Login berhasil.", + "registrationSuccess": "Pendaftaran berhasil" }, "profile": { - "title": "User Profile", - "description": "Manage your account settings and security", - "security": "Security", - "changePassword": "Change Password", - "twoFactorAuth": "Two-Factor Authentication", - "accountInfo": "Account Information", - "role": "Role", + "title": "Profil Pengguna", + "description": "Kelola pengaturan dan keamanan akun Anda.", + "security": "Keamanan", + "changePassword": "Ubah Kata Sandi", + "twoFactorAuth": "Autentikasi Dua Faktor", + "accountInfo": "Informasi Akun", + "role": "Peran", "admin": "Administrator", - "user": "User", - "authMethod": "Authentication Method", - "local": "Local", - "external": "External (OIDC)", - "externalAndLocal": "Dual Auth", - "selectPreferredLanguage": "Select your preferred language for the interface", - "fileColorCoding": "File Color Coding", - "fileColorCodingDesc": "Color-code files by type: folders (red), files (blue), symlinks (green)", - "commandAutocomplete": "Command Autocomplete", - "commandAutocompleteDesc": "Enable Tab key autocomplete suggestions for terminal commands based on your command history", - "defaultSnippetFoldersCollapsed": "Collapse Snippet Folders by Default", - "defaultSnippetFoldersCollapsedDesc": "When enabled, all snippet folders will be collapsed when you open the snippets tab", - "terminalSyntaxHighlighting": "Terminal Syntax Highlighting", - "showHostTags": "Show Host Tags", - "showHostTagsDesc": "Display tags under each host in the sidebar. Disable to hide all tags.", - "account": "Account", - "appearance": "Appearance", - "languageLocalization": "Language & Localization", - "fileManagerSettings": "File Manager", + "user": "Pengguna", + "authMethod": "Metode Otentikasi", + "local": "Lokal", + "external": "Eksternal (OIDC)", + "externalAndLocal": "Otorisasi Ganda", + "selectPreferredLanguage": "Pilih bahasa pilihan Anda untuk antarmuka.", + "fileColorCoding": "Pengkodean Warna File", + "fileColorCodingDesc": "Beri kode warna pada file berdasarkan jenisnya: folder (merah), file (biru), symlink (hijau)", + "commandAutocomplete": "Pelengkapan Otomatis Perintah", + "commandAutocompleteDesc": "Aktifkan saran pelengkapan otomatis tombol Tab untuk perintah terminal berdasarkan riwayat perintah Anda.", + "defaultSnippetFoldersCollapsed": "Secara default, folder cuplikan akan diciutkan.", + "defaultSnippetFoldersCollapsedDesc": "Saat diaktifkan, semua folder cuplikan akan dilipat saat Anda membuka tab cuplikan.", + "terminalSyntaxHighlighting": "Penyorotan Sintaks Terminal", + "showHostTags": "Tag Pembawa Acara", + "showHostTagsDesc": "Tampilkan tag di bawah setiap host di sidebar. Nonaktifkan untuk menyembunyikan semua tag.", + "account": "Akun", + "appearance": "Penampilan", + "languageLocalization": "Bahasa & Lokalisasi", + "fileManagerSettings": "Pengelola File", "terminalSettings": "Terminal", "hostSidebarSettings": "Host & Sidebar", - "snippetsSettings": "Snippets", - "currentPassword": "Current Password", - "passwordChangedSuccess": "Password changed successfully! Please log in again.", - "failedToChangePassword": "Failed to change password. Please check your current password and try again.", - "theme": "Theme", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", - "appearanceDesc": "Select the color theme for the application", - "terminalSyntaxHighlightingDesc": "Automatically highlight commands, paths, IPs, and log levels in terminal output" + "snippetsSettings": "Cuplikan", + "currentPassword": "Kata Sandi Saat Ini", + "passwordChangedSuccess": "Kata sandi berhasil diubah! Silakan masuk kembali.", + "failedToChangePassword": "Perubahan kata sandi gagal. Silakan periksa kata sandi Anda saat ini dan coba lagi.", + "theme": "Tema", + "themeLight": "Lampu", + "themeDark": "Gelap", + "themeSystem": "Sistem", + "appearanceDesc": "Pilih tema warna untuk aplikasi tersebut.", + "terminalSyntaxHighlightingDesc": "Secara otomatis menyorot perintah, jalur, IP, dan level log pada output terminal." }, "user": { - "failedToLoadVersionInfo": "Failed to load version information" + "failedToLoadVersionInfo": "Gagal memuat informasi versi." }, "placeholders": { "enterCode": "000000", @@ -1901,48 +1901,48 @@ "port": "22", "maxRetries": "3", "retryInterval": "10", - "language": "Language", - "username": "username", - "hostname": "host name", - "folder": "folder", - "password": "password", - "keyPassword": "key password", - "sudoPassword": "sudo password (optional)", - "notes": "add notes about this host...", - "expirationDate": "Select expiration date", - "pastePrivateKey": "Paste your private key here...", - "pastePublicKey": "Paste your public key here...", - "credentialName": "My SSH Server", - "description": "SSH credential description", - "searchCredentials": "Search credentials by name, username, or tags...", - "sshConfig": "endpoint ssh configuration", - "homePath": "/home", - "clientId": "your-client-id", - "clientSecret": "your-client-secret", + "language": "Bahasa", + "username": "nama belakang", + "hostname": "nama host", + "folder": "map", + "password": "kata sandi", + "keyPassword": "kata sandi kunci", + "sudoPassword": "kata sandi sudo (opsional)", + "notes": "Tambahkan catatan tentang host ini...", + "expirationDate": "Pilih tanggal kedaluwarsa", + "pastePrivateKey": "Tempelkan kunci pribadi Anda di sini...", + "pastePublicKey": "Tempelkan kunci publik Anda di sini...", + "credentialName": "Server SSH saya", + "description": "Deskripsi kredensial SSH", + "searchCredentials": "Cari kredensial berdasarkan nama, nama pengguna, atau tag...", + "sshConfig": "konfigurasi endpoint ssh", + "homePath": "/rumah", + "clientId": "ID klien Anda", + "clientSecret": "rahasia-klien-Anda", "authUrl": "https://your-provider.com/application/o/authorize/", "redirectUrl": "https://your-provider.com/application/o/termix/", "tokenUrl": "https://your-provider.com/application/o/token/", "userIdField": "sub", - "usernameField": "name", - "scopes": "openid email profile", + "usernameField": "nama", + "scopes": "profil email openid", "userinfoUrl": "https://your-provider.com/application/o/userinfo/", - "enterUsername": "Enter username to make admin", - "searchHosts": "Search hosts by name, username, IP, folder, tags...", - "enterPassword": "Enter your password", - "totpCode": "6-digit TOTP code", - "searchHostsAny": "Search hosts (try: tag:prod, user:root, ip:192.168)...", - "confirmPassword": "Enter your password to confirm", - "typeHere": "Type here", - "fileName": "Enter file name (e.g., example.txt)", - "folderName": "Enter folder name", - "fullPath": "Enter full path to item", - "currentPath": "Enter current path to item", - "newName": "Enter new name", + "enterUsername": "Masukkan nama pengguna untuk menjadi admin", + "searchHosts": "Cari host berdasarkan nama, nama pengguna, IP, folder, tag...", + "enterPassword": "Masukkan kata sandi Anda", + "totpCode": "Kode TOTP 6 digit", + "searchHostsAny": "Cari host (coba: tag:prod, user:root, ip:192.168)...", + "confirmPassword": "Masukkan kata sandi Anda untuk konfirmasi.", + "typeHere": "Ketik di sini", + "fileName": "Masukkan nama file (misalnya, example.txt)", + "folderName": "Masukkan nama folder", + "fullPath": "Masukkan jalur lengkap ke item", + "currentPath": "Masukkan jalur saat ini ke item", + "newName": "Masukkan nama baru", "socks5Host": "127.0.0.1", - "socks5Username": "proxy username", - "socks5Password": "proxy password", - "socks5PresetName": "e.g., Work VPN Chain", - "socks5PresetDescription": "e.g., Proxy chain for accessing work servers", + "socks5Username": "nama pengguna proxy", + "socks5Password": "kata sandi proxy", + "socks5PresetName": "misalnya, Rantai VPN Kantor", + "socks5PresetDescription": "Contoh: Rantai proxy untuk mengakses server kerja", "moshCommand": "mosh user@server", "defaultPort": "22", "defaultEndpointPort": "224", @@ -1950,453 +1950,453 @@ "defaultRetryInterval": "10" }, "leftSidebar": { - "failedToLoadHosts": "Failed to load hosts", - "noFolder": "No Folder", - "passwordRequired": "Password is required", - "failedToDeleteAccount": "Failed to delete account", - "failedToMakeUserAdmin": "Failed to make user admin", - "userIsNowAdmin": "User {{username}} is now an admin", - "removeAdminConfirm": "Are you sure you want to remove admin status from {{username}}?", - "deleteUserConfirm": "Are you sure you want to delete user {{username}}? This action cannot be undone.", - "deleteAccount": "Delete Account", - "closeDeleteAccount": "Close Delete Account", - "deleteAccountWarning": "This action cannot be undone. This will permanently delete your account and all associated data.", - "deleteAccountWarningDetails": "Deleting your account will remove all your data including SSH hosts, configurations, and settings. This action is irreversible.", - "deleteAccountWarningShort": "This action is not reversible and will permanently delete your account.", - "cannotDeleteAccount": "Cannot Delete Account", - "lastAdminWarning": "You are the last admin user. You cannot delete your account as this would leave the system without any administrators. Please make another user an admin first, or contact system support.", - "confirmPassword": "Confirm Password", - "deleting": "Deleting...", - "cancel": "Cancel" + "failedToLoadHosts": "Gagal memuat host", + "noFolder": "Tidak ada Folder", + "passwordRequired": "Kata sandi diperlukan", + "failedToDeleteAccount": "Gagal menghapus akun", + "failedToMakeUserAdmin": "Gagal menjadikan pengguna sebagai admin.", + "userIsNowAdmin": "Pengguna {{username}} sekarang menjadi admin", + "removeAdminConfirm": "Apakah Anda yakin ingin menghapus status admin dari {{username}}?", + "deleteUserConfirm": "Apakah Anda yakin ingin menghapus pengguna {{username}}? Tindakan ini tidak dapat dibatalkan.", + "deleteAccount": "Hapus Akun", + "closeDeleteAccount": "Tutup Hapus Akun", + "deleteAccountWarning": "Tindakan ini tidak dapat dibatalkan. Ini akan menghapus akun Anda dan semua data terkait secara permanen.", + "deleteAccountWarningDetails": "Menghapus akun Anda akan menghapus semua data Anda termasuk host SSH, konfigurasi, dan pengaturan. Tindakan ini tidak dapat dibatalkan.", + "deleteAccountWarningShort": "Tindakan ini tidak dapat dibatalkan dan akan menghapus akun Anda secara permanen.", + "cannotDeleteAccount": "Tidak dapat menghapus akun.", + "lastAdminWarning": "Anda adalah pengguna admin terakhir. Anda tidak dapat menghapus akun Anda karena hal ini akan menyebabkan sistem tanpa administrator. Harap jadikan pengguna lain sebagai admin terlebih dahulu, atau hubungi dukungan sistem.", + "confirmPassword": "Konfirmasi Kata Sandi", + "deleting": "Menghapus...", + "cancel": "Membatalkan" }, "interface": { "sidebar": "Sidebar", - "toggleSidebar": "Toggle Sidebar", - "close": "Close", - "online": "Online", + "toggleSidebar": "Alihkan Sidebar", + "close": "Menutup", + "online": "On line", "offline": "Offline", - "maintenance": "Maintenance", - "degraded": "Degraded", - "noTunnelConnections": "No tunnel connections configured", - "discord": "Discord", - "connectToSshForOperations": "Connect to SSH to use file operations", - "uploadFile": "Upload File", - "newFile": "New File", - "newFolder": "New Folder", - "rename": "Rename", - "deleteItem": "Delete Item", - "createNewFile": "Create New File", - "createNewFolder": "Create New Folder", - "renameItem": "Rename Item", - "clickToSelectFile": "Click to select a file", - "noSshHosts": "No SSH Hosts", - "sshHosts": "SSH Hosts", - "importSshHosts": "Import SSH Hosts from JSON", - "clientId": "Client ID", - "clientSecret": "Client Secret", - "error": "Error", - "warning": "Warning", - "deleteAccount": "Delete Account", - "closeDeleteAccount": "Close Delete Account", - "cannotDeleteAccount": "Cannot Delete Account", - "confirmPassword": "Confirm Password", - "deleting": "Deleting...", - "externalAuth": "External Authentication (OIDC)", - "configureExternalProvider": "Configure external identity provider for", - "waitingForRetry": "Waiting for retry", - "retryingConnection": "Retrying connection", - "resetSplitSizes": "Reset split sizes", - "sshManagerAlreadyOpen": "SSH Manager already open", - "disabledDuringSplitScreen": "Disabled during split screen", - "unknown": "Unknown", - "connected": "Connected", - "disconnected": "Disconnected", - "maxRetriesExhausted": "Max retries exhausted", - "endpointHostNotFound": "Endpoint host not found", + "maintenance": "Pemeliharaan", + "degraded": "Terdegradasi", + "noTunnelConnections": "Tidak ada koneksi terowongan yang dikonfigurasi.", + "discord": "Perselisihan", + "connectToSshForOperations": "Hubungkan ke SSH untuk menggunakan operasi file.", + "uploadFile": "Unggah File", + "newFile": "Berkas Baru", + "newFolder": "Folder Baru", + "rename": "Ganti nama", + "deleteItem": "Hapus Item", + "createNewFile": "Buat File Baru", + "createNewFolder": "Buat Folder Baru", + "renameItem": "Ganti Nama Item", + "clickToSelectFile": "Klik untuk memilih file", + "noSshHosts": "Tidak ada Host SSH", + "sshHosts": "Host SSH", + "importSshHosts": "Impor Host SSH dari JSON", + "clientId": "ID Klien", + "clientSecret": "Rahasia Klien", + "error": "Kesalahan", + "warning": "Peringatan", + "deleteAccount": "Hapus Akun", + "closeDeleteAccount": "Tutup Hapus Akun", + "cannotDeleteAccount": "Tidak dapat menghapus akun.", + "confirmPassword": "Konfirmasi Kata Sandi", + "deleting": "Menghapus...", + "externalAuth": "Otentikasi Eksternal (OIDC)", + "configureExternalProvider": "Konfigurasikan penyedia identitas eksternal untuk", + "waitingForRetry": "Menunggu percobaan ulang", + "retryingConnection": "Mencoba kembali koneksi", + "resetSplitSizes": "Atur ulang ukuran pemisahan", + "sshManagerAlreadyOpen": "SSH Manager sudah terbuka.", + "disabledDuringSplitScreen": "Dinonaktifkan selama layar terpisah", + "unknown": "Tidak dikenal", + "connected": "Terhubung", + "disconnected": "Terputus", + "maxRetriesExhausted": "Jumlah percobaan maksimal telah habis.", + "endpointHostNotFound": "Host titik akhir tidak ditemukan", "administrator": "Administrator", - "user": "User", - "external": "External", - "local": "Local", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "loading": "Loading...", - "refresh": "Refresh", - "adding": "Adding...", - "makeAdmin": "Make Admin", - "verifying": "Verifying...", - "verifyAndEnable": "Verify and Enable", - "secretKey": "Secret key", - "totpQrCode": "TOTP QR Code", - "passwordRequired": "Password is required when using password authentication", - "sshKeyRequired": "SSH Private Key is required when using key authentication", - "keyTypeRequired": "Key Type is required when using key authentication", - "validSshConfigRequired": "Must select a valid SSH configuration from the list", - "updateHost": "Update Host", - "addHost": "Add Host", + "user": "Pengguna", + "external": "Luar", + "local": "Lokal", + "saving": "Penghematan...", + "saveConfiguration": "Simpan Konfigurasi", + "loading": "Memuat...", + "refresh": "Menyegarkan", + "adding": "Menambahkan...", + "makeAdmin": "Jadikan Admin", + "verifying": "Memverifikasi...", + "verifyAndEnable": "Verifikasi dan Aktifkan", + "secretKey": "Kunci rahasia", + "totpQrCode": "Kode QR TOTP", + "passwordRequired": "Kata sandi diperlukan saat menggunakan autentikasi kata sandi.", + "sshKeyRequired": "Kunci privat SSH diperlukan saat menggunakan autentikasi kunci.", + "keyTypeRequired": "Jenis Kunci diperlukan saat menggunakan autentikasi kunci.", + "validSshConfigRequired": "Harus memilih konfigurasi SSH yang valid dari daftar.", + "updateHost": "Perbarui Host", + "addHost": "Tambahkan Host", "editHost": "Edit Host", - "pinConnection": "Pin Connection", - "authentication": "Authentication", - "password": "Password", - "key": "Key", - "sshPrivateKey": "SSH Private Key", - "keyPassword": "Key Password", - "keyType": "Key Type", - "enableTerminal": "Enable Terminal", - "enableTunnel": "Enable Tunnel", - "enableFileManager": "Enable File Manager", - "defaultPath": "Default Path", - "tunnelConnections": "Tunnel Connections", - "maxRetries": "Max Retries", - "upload": "Upload", - "updateKey": "Update Key", - "productionFolder": "Production", - "databaseServer": "Database Server", - "developmentServer": "Development Server", - "developmentFolder": "Development", - "webServerProduction": "Web Server - Production", - "unknownError": "Unknown error", - "failedToInitiatePasswordReset": "Failed to initiate password reset", - "failedToVerifyResetCode": "Failed to verify reset code", - "failedToCompletePasswordReset": "Failed to complete password reset", - "invalidTotpCode": "Invalid TOTP code", - "failedToStartOidcLogin": "Failed to start OIDC login", - "failedToGetUserInfoAfterOidc": "Failed to get user info after OIDC login", - "loginWithExternalProvider": "Login with external provider", - "loginWithExternal": "Login with External Provider", - "sendResetCode": "Send Reset Code", - "verifyCode": "Verify Code", - "resetPassword": "Reset Password", + "pinConnection": "Koneksi Pin", + "authentication": "Autentikasi", + "password": "Kata sandi", + "key": "Kunci", + "sshPrivateKey": "Kunci Pribadi SSH", + "keyPassword": "Kata Sandi Kunci", + "keyType": "Jenis Kunci", + "enableTerminal": "Aktifkan Terminal", + "enableTunnel": "Aktifkan Terowongan", + "enableFileManager": "Aktifkan Pengelola File", + "defaultPath": "Jalur Default", + "tunnelConnections": "Koneksi Terowongan", + "maxRetries": "Jumlah Percobaan Maksimum", + "upload": "Mengunggah", + "updateKey": "Kunci Pembaruan", + "productionFolder": "Produksi", + "databaseServer": "Server Basis Data", + "developmentServer": "Server Pengembangan", + "developmentFolder": "Perkembangan", + "webServerProduction": "Server Web - Produksi", + "unknownError": "Kesalahan tidak dikenal", + "failedToInitiatePasswordReset": "Gagal memulai pengaturan ulang kata sandi.", + "failedToVerifyResetCode": "Gagal memverifikasi kode reset", + "failedToCompletePasswordReset": "Gagal menyelesaikan pengaturan ulang kata sandi.", + "invalidTotpCode": "Kode TOTP tidak valid", + "failedToStartOidcLogin": "Gagal memulai login OIDC.", + "failedToGetUserInfoAfterOidc": "Gagal mendapatkan informasi pengguna setelah login OIDC.", + "loginWithExternalProvider": "Masuk dengan penyedia eksternal", + "loginWithExternal": "Masuk dengan Penyedia Eksternal", + "sendResetCode": "Kirim Kode Reset", + "verifyCode": "Verifikasi Kode", + "resetPassword": "Atur Ulang Kata Sandi", "login": "Login", - "signUp": "Sign Up", - "failedToUpdateOidcConfig": "Failed to update OIDC configuration", - "failedToMakeUserAdmin": "Failed to make user admin", - "failedToStartTotpSetup": "Failed to start TOTP setup", - "invalidVerificationCode": "Invalid verification code", - "failedToDisableTotp": "Failed to disable TOTP", - "failedToGenerateBackupCodes": "Failed to generate backup codes" + "signUp": "Mendaftar", + "failedToUpdateOidcConfig": "Gagal memperbarui konfigurasi OIDC", + "failedToMakeUserAdmin": "Gagal menjadikan pengguna sebagai admin.", + "failedToStartTotpSetup": "Gagal memulai pengaturan TOTP", + "invalidVerificationCode": "Kode verifikasi tidak valid", + "failedToDisableTotp": "Gagal menonaktifkan TOTP", + "failedToGenerateBackupCodes": "Gagal menghasilkan kode cadangan." }, "mobile": { - "selectHostToStart": "Select a host to start your terminal session", - "limitedSupportMessage": "Website mobile support is still in progress. Use the mobile app for a better experience.", - "mobileAppInProgress": "Mobile app is in progress", - "mobileAppInProgressDesc": "We're working on a dedicated mobile app to provide a better experience on mobile devices.", - "viewMobileAppDocs": "Install Mobile App", - "mobileAppDocumentation": "Mobile App Documentation" + "selectHostToStart": "Pilih host untuk memulai sesi terminal Anda.", + "limitedSupportMessage": "Dukungan situs web untuk perangkat seluler masih dalam pengembangan. Gunakan aplikasi seluler untuk pengalaman yang lebih baik.", + "mobileAppInProgress": "Aplikasi seluler sedang dalam pengembangan.", + "mobileAppInProgressDesc": "Kami sedang mengerjakan aplikasi seluler khusus untuk memberikan pengalaman yang lebih baik di perangkat seluler.", + "viewMobileAppDocs": "Instal Aplikasi Seluler", + "mobileAppDocumentation": "Dokumentasi Aplikasi Seluler" }, "dashboard": { - "title": "Dashboard", + "title": "Dasbor", "github": "GitHub", - "support": "Support", - "discord": "Discord", - "donate": "Donate", - "serverOverview": "Server Overview", - "version": "Version", - "upToDate": "Up to Date", - "updateAvailable": "Update Available", - "uptime": "Uptime", - "database": "Database", - "healthy": "Healthy", - "error": "Error", - "totalServers": "Total Servers", - "totalTunnels": "Total Tunnels", - "totalCredentials": "Total Credentials", - "recentActivity": "Recent Activity", - "reset": "Reset", - "loadingRecentActivity": "Loading recent activity...", - "noRecentActivity": "No recent activity", - "quickActions": "Quick Actions", - "addHost": "Add Host", - "addCredential": "Add Credential", - "adminSettings": "Admin Settings", - "userProfile": "User Profile", - "serverStats": "Server Stats", - "loadingServerStats": "Loading server stats...", - "noServerData": "No server data available", + "support": "Mendukung", + "discord": "Perselisihan", + "donate": "Menyumbangkan", + "serverOverview": "Gambaran Umum Server", + "version": "Versi", + "upToDate": "Terkini", + "updateAvailable": "Pembaruan Tersedia", + "uptime": "Waktu aktif", + "database": "Basis data", + "healthy": "Sehat", + "error": "Kesalahan", + "totalServers": "Total Server", + "totalTunnels": "Total Terowongan", + "totalCredentials": "Kredensial Total", + "recentActivity": "Aktivitas Terkini", + "reset": "Mengatur ulang", + "loadingRecentActivity": "Memuat aktivitas terbaru...", + "noRecentActivity": "Tidak ada aktivitas terbaru.", + "quickActions": "Tindakan Cepat", + "addHost": "Tambahkan Host", + "addCredential": "Tambahkan Kredensial", + "adminSettings": "Pengaturan Admin", + "userProfile": "Profil Pengguna", + "serverStats": "Statistik Server", + "loadingServerStats": "Memuat statistik server...", + "noServerData": "Tidak ada data server yang tersedia.", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "Tidak tersedia" }, "rbac": { - "shareHost": "Share Host", - "shareHostTitle": "Share Host Access", - "shareHostDescription": "Grant temporary or permanent access to this host", - "targetUser": "Target User", - "selectUser": "Select a user to share with", - "duration": "Duration", - "durationHours": "Duration (hours)", - "neverExpires": "Never expires", - "permissionLevel": "Permission Level", + "shareHost": "Bagikan Host", + "shareHostTitle": "Akses Host Bersama", + "shareHostDescription": "Berikan akses sementara atau permanen ke host ini.", + "targetUser": "Pengguna Sasaran", + "selectUser": "Pilih pengguna yang ingin Anda ajak berbagi.", + "duration": "Lamanya", + "durationHours": "Durasi (jam)", + "neverExpires": "Tidak pernah kedaluwarsa", + "permissionLevel": "Tingkat Izin", "permissionLevels": { - "readonly": "Read-Only", - "readonlyDesc": "Can view only, no command input", - "restricted": "Restricted", - "restrictedDesc": "Blocks dangerous commands (passwd, rm -rf, etc.)", - "monitored": "Monitored", - "monitoredDesc": "Records all commands but doesn't block (Recommended)", - "full": "Full Access", - "fullDesc": "No restrictions (Not recommended)" + "readonly": "Hanya Baca", + "readonlyDesc": "Hanya bisa dilihat, tidak ada input perintah.", + "restricted": "Terbatas", + "restrictedDesc": "Memblokir perintah berbahaya (passwd, rm -rf, dll.)", + "monitored": "Dipantau", + "monitoredDesc": "Merekam semua perintah tetapi tidak memblokir (Direkomendasikan)", + "full": "Akses Penuh", + "fullDesc": "Tidak ada batasan (Tidak disarankan)" }, - "blockedCommands": "Blocked Commands", - "blockedCommandsPlaceholder": "Enter commands to block, e.g., passwd, rm, dd", - "maxSessionDuration": "Max Session Duration (minutes)", - "createTempUser": "Create Temporary User", - "createTempUserDesc": "Creates a restricted user on the server instead of sharing your credentials. Requires sudo access. Most secure option.", - "expiresAt": "Expires At", - "expiresIn": "Expires in {{hours}} hours", - "expired": "Expired", - "grantedBy": "Granted By", - "accessLevel": "Access Level", - "lastAccessed": "Last Accessed", - "accessCount": "Access Count", - "revokeAccess": "Revoke Access", - "confirmRevokeAccess": "Are you sure you want to revoke access for {{username}}?", - "hostSharedSuccessfully": "Host shared successfully with {{username}}", - "hostAccessUpdated": "Host access updated", - "failedToShareHost": "Failed to share host", - "accessRevokedSuccessfully": "Access revoked successfully", - "failedToRevokeAccess": "Failed to revoke access", - "shared": "Shared", - "sharedHosts": "Shared Hosts", - "sharedWithMe": "Shared With Me", - "noSharedHosts": "No hosts shared with you", - "owner": "Owner", - "viewAccessList": "View Access List", - "accessList": "Access List", - "noAccessGranted": "No access has been granted for this host", - "noAccessGrantedMessage": "No users have been granted access to this host yet", - "manageAccessFor": "Manage access for", - "totalAccessRecords": "{{count}} access record(s)", - "neverAccessed": "Never", - "timesAccessed": "{{count}} time(s)", - "daysRemaining": "{{days}} day(s)", - "hoursRemaining": "{{hours}} hour(s)", - "failedToFetchAccessList": "Failed to fetch access list", - "currentAccess": "Current Access", - "securityWarning": "Security Warning", - "securityWarningMessage": "Sharing credentials gives the user full access to perform any operations on the server, including changing passwords and deleting files. Only share with trusted users.", - "tempUserRecommended": "We recommend enabling 'Create Temporary User' for better security.", - "roleManagement": "Role Management", - "manageRoles": "Manage Roles", - "manageRolesFor": "Manage roles for {{username}}", - "assignRole": "Assign Role", - "removeRole": "Remove Role", - "userRoles": "User Roles", - "permissions": "Permissions", - "systemRole": "System Role", - "customRole": "Custom Role", - "roleAssignedSuccessfully": "Role assigned to {{username}} successfully", - "failedToAssignRole": "Failed to assign role", - "roleRemovedSuccessfully": "Role removed from {{username}} successfully", - "failedToRemoveRole": "Failed to remove role", - "cannotRemoveSystemRole": "Cannot remove system role", - "cannotShareWithSelf": "Cannot share host with yourself", - "noCustomRolesToAssign": "No custom roles available. System roles are auto-assigned.", - "credentialSharingWarning": "Credential Authentication Not Supported for Sharing", - "credentialRequired": "Credential is required when sharing a host", - "credentialRequiredDescription": "This host does not use credential-based authentication. In order to share hosts, due to per-user-encryption, the host must use credential based authentication.", - "auditLogs": "Audit Logs", - "viewAuditLogs": "View Audit Logs", - "action": "Action", - "resourceType": "Resource Type", - "resourceName": "Resource Name", - "timestamp": "Timestamp", - "ipAddress": "IP Address", - "userAgent": "User Agent", - "success": "Success", - "failed": "Failed", - "details": "Details", - "noAuditLogs": "No audit logs available", - "sessionRecordings": "Session Recordings", - "viewRecording": "View Recording", - "downloadRecording": "Download Recording", - "dangerousCommand": "Dangerous Command Detected", - "commandBlocked": "Command Blocked", - "terminateSession": "Terminate Session", - "sessionTerminated": "Session terminated by host owner", - "sharedAccessExpired": "Your shared access to this host has expired", - "sharedAccessExpiresIn": "Shared access expires in {{hours}} hours", + "blockedCommands": "Perintah yang Diblokir", + "blockedCommandsPlaceholder": "Masukkan perintah untuk memblokir, misalnya, passwd, rm, dd", + "maxSessionDuration": "Durasi Sesi Maksimum (menit)", + "createTempUser": "Buat Pengguna Sementara", + "createTempUserDesc": "Membuat pengguna terbatas di server sebagai pengganti berbagi kredensial Anda. Membutuhkan akses sudo. Opsi paling aman.", + "expiresAt": "Berakhir pada", + "expiresIn": "Berakhir dalam {{hours}} jam", + "expired": "Kedaluwarsa", + "grantedBy": "Diberikan Oleh", + "accessLevel": "Tingkat Akses", + "lastAccessed": "Terakhir Diakses", + "accessCount": "Jumlah Akses", + "revokeAccess": "Cabut Akses", + "confirmRevokeAccess": "Apakah Anda yakin ingin mencabut akses untuk {{username}}?", + "hostSharedSuccessfully": "Host berhasil berbagi dengan {{username}}", + "hostAccessUpdated": "Akses host diperbarui", + "failedToShareHost": "Gagal berbagi host", + "accessRevokedSuccessfully": "Akses berhasil dicabut.", + "failedToRevokeAccess": "Gagal mencabut akses", + "shared": "Dibagikan", + "sharedHosts": "Penyedia Layanan Hosting Bersama", + "sharedWithMe": "Dibagikan Kepada Saya", + "noSharedHosts": "Tidak ada informasi mengenai host yang dibagikan kepada Anda.", + "owner": "Pemilik", + "viewAccessList": "Lihat Daftar Akses", + "accessList": "Daftar Akses", + "noAccessGranted": "Akses belum diberikan untuk host ini.", + "noAccessGrantedMessage": "Belum ada pengguna yang diberikan akses ke host ini.", + "manageAccessFor": "Kelola akses untuk", + "totalAccessRecords": "{{count}} catatan akses", + "neverAccessed": "Tidak pernah", + "timesAccessed": "{{count}} waktu", + "daysRemaining": "{{days}} hari", + "hoursRemaining": "{{hours}} jam", + "failedToFetchAccessList": "Gagal mengambil daftar akses", + "currentAccess": "Akses Saat Ini", + "securityWarning": "Peringatan Keamanan", + "securityWarningMessage": "Berbagi kredensial memberi pengguna akses penuh untuk melakukan operasi apa pun di server, termasuk mengubah kata sandi dan menghapus file. Bagikan hanya dengan pengguna tepercaya.", + "tempUserRecommended": "Kami menyarankan untuk mengaktifkan 'Buat Pengguna Sementara' demi keamanan yang lebih baik.", + "roleManagement": "Manajemen Peran", + "manageRoles": "Kelola Peran", + "manageRolesFor": "Kelola peran untuk {{username}}", + "assignRole": "Tetapkan Peran", + "removeRole": "Hapus Peran", + "userRoles": "Peran Pengguna", + "permissions": "Izin", + "systemRole": "Peran Sistem", + "customRole": "Peran Kustom", + "roleAssignedSuccessfully": "Peran berhasil diberikan kepada {{username}}", + "failedToAssignRole": "Gagal menetapkan peran", + "roleRemovedSuccessfully": "Peran berhasil dihapus dari {{username}}", + "failedToRemoveRole": "Gagal menghapus peran", + "cannotRemoveSystemRole": "Tidak dapat menghapus peran sistem.", + "cannotShareWithSelf": "Tidak dapat berbagi host dengan Anda", + "noCustomRolesToAssign": "Tidak ada peran khusus yang tersedia. Peran sistem ditetapkan secara otomatis.", + "credentialSharingWarning": "Autentikasi Kredensial Tidak Didukung untuk Berbagi", + "credentialRequired": "Kredensial diperlukan saat berbagi host.", + "credentialRequiredDescription": "Host ini tidak menggunakan autentikasi berbasis kredensial. Untuk dapat berbagi host, karena enkripsi per pengguna, host harus menggunakan autentikasi berbasis kredensial.", + "auditLogs": "Catatan Audit", + "viewAuditLogs": "Lihat Log Audit", + "action": "Tindakan", + "resourceType": "Jenis Sumber Daya", + "resourceName": "Nama Sumber Daya", + "timestamp": "Cap waktu", + "ipAddress": "Alamat IP", + "userAgent": "Agen Pengguna", + "success": "Kesuksesan", + "failed": "Gagal", + "details": "Detail", + "noAuditLogs": "Tidak ada log audit yang tersedia.", + "sessionRecordings": "Rekaman Sesi", + "viewRecording": "Lihat Rekaman", + "downloadRecording": "Unduh Rekaman", + "dangerousCommand": "Perintah Berbahaya Terdeteksi", + "commandBlocked": "Perintah Diblokir", + "terminateSession": "Akhiri Sesi", + "sessionTerminated": "Sesi diakhiri oleh pemilik host.", + "sharedAccessExpired": "Akses bersama Anda ke host ini telah kedaluwarsa.", + "sharedAccessExpiresIn": "Akses bersama akan berakhir dalam {{hours}} jam", "roles": { - "label": "Roles", + "label": "Peran", "admin": "Administrator", - "user": "User" + "user": "Pengguna" }, - "createRole": "Create Role", - "editRole": "Edit Role", - "roleName": "Role Name", - "displayName": "Display Name", - "description": "Description", - "assignRoles": "Assign Roles", - "userRoleAssignment": "User-Role Assignment", - "selectUserPlaceholder": "Select a user", - "searchUsers": "Search users...", - "noUserFound": "No user found", - "currentRoles": "Current Roles", - "noRolesAssigned": "No roles assigned", - "assignNewRole": "Assign New Role", - "selectRolePlaceholder": "Select a role", - "searchRoles": "Search roles...", - "noRoleFound": "No role found", - "assign": "Assign", - "roleCreatedSuccessfully": "Role created successfully", - "roleUpdatedSuccessfully": "Role updated successfully", - "roleDeletedSuccessfully": "Role deleted successfully", - "failedToLoadRoles": "Failed to load roles", - "failedToSaveRole": "Failed to save role", - "failedToDeleteRole": "Failed to delete role", - "roleDisplayNameRequired": "Role display name is required", - "roleNameRequired": "Role name is required", - "roleNameHint": "Use lowercase letters, numbers, underscores, and hyphens only", - "displayNamePlaceholder": "Developer", - "descriptionPlaceholder": "Software developers and engineers", - "confirmDeleteRole": "Delete Role", - "confirmDeleteRoleDescription": "Are you sure you want to delete the role '{{name}}'? This action cannot be undone.", - "confirmRemoveRole": "Remove Role", - "confirmRemoveRoleDescription": "Are you sure you want to remove this role from the user?", - "editRoleDescription": "Update role information", - "createRoleDescription": "Create a new custom role for grouping users", - "assignRolesDescription": "Manage role assignments for users", - "noRoles": "No roles found", - "selectRole": "Select Role", - "type": "Type", - "user": "User", - "role": "Role", - "saveHostFirst": "Save Host First", - "saveHostFirstDescription": "Please save the host before configuring sharing settings.", - "shareWithUser": "Share with User", - "shareWithRole": "Share with Role", - "share": "Share", + "createRole": "Buat Peran", + "editRole": "Edit Peran", + "roleName": "Nama Peran", + "displayName": "Nama Tampilan", + "description": "Keterangan", + "assignRoles": "Tetapkan Peran", + "userRoleAssignment": "Penugasan Peran Pengguna", + "selectUserPlaceholder": "Pilih pengguna", + "searchUsers": "Cari pengguna...", + "noUserFound": "Tidak ada pengguna yang ditemukan.", + "currentRoles": "Peran Saat Ini", + "noRolesAssigned": "Tidak ada peran yang ditugaskan", + "assignNewRole": "Tetapkan Peran Baru", + "selectRolePlaceholder": "Pilih peran", + "searchRoles": "Cari peran...", + "noRoleFound": "Tidak ada peran yang ditemukan", + "assign": "Menetapkan", + "roleCreatedSuccessfully": "Peran berhasil dibuat.", + "roleUpdatedSuccessfully": "Peran berhasil diperbarui.", + "roleDeletedSuccessfully": "Peran berhasil dihapus.", + "failedToLoadRoles": "Gagal memuat peran", + "failedToSaveRole": "Gagal menyimpan peran", + "failedToDeleteRole": "Gagal menghapus peran", + "roleDisplayNameRequired": "Nama tampilan peran wajib diisi.", + "roleNameRequired": "Nama peran wajib diisi.", + "roleNameHint": "Gunakan huruf kecil, angka, garis bawah, dan tanda hubung saja.", + "displayNamePlaceholder": "Pengembang", + "descriptionPlaceholder": "Pengembang dan insinyur perangkat lunak", + "confirmDeleteRole": "Hapus Peran", + "confirmDeleteRoleDescription": "Apakah Anda yakin ingin menghapus peran '{{name}}'? Tindakan ini tidak dapat dibatalkan.", + "confirmRemoveRole": "Hapus Peran", + "confirmRemoveRoleDescription": "Apakah Anda yakin ingin menghapus peran ini dari pengguna?", + "editRoleDescription": "Perbarui informasi peran", + "createRoleDescription": "Buat peran khusus baru untuk mengelompokkan pengguna.", + "assignRolesDescription": "Kelola penugasan peran untuk pengguna.", + "noRoles": "Tidak ada peran yang ditemukan", + "selectRole": "Pilih Peran", + "type": "Jenis", + "user": "Pengguna", + "role": "Peran", + "saveHostFirst": "Utamakan Perlindungan Tuan Rumah", + "saveHostFirstDescription": "Harap simpan host sebelum mengkonfigurasi pengaturan berbagi.", + "shareWithUser": "Bagikan dengan Pengguna", + "shareWithRole": "Bagikan dengan Peran", + "share": "Membagikan", "target": "Target", - "expires": "Expires", - "never": "Never", - "noAccessRecords": "No access records found", - "sharedSuccessfully": "Shared successfully", - "failedToShare": "Failed to share", - "confirmRevokeAccessDescription": "Are you sure you want to revoke this access?", - "hours": "hours", - "sharing": "Sharing", - "selectUserAndRole": "Please select both a user and a role", - "view": "View Only", - "viewDesc": "Due to the Termix encryption system, other permission levels will come at a later date" + "expires": "Berakhir", + "never": "Tidak pernah", + "noAccessRecords": "Tidak ditemukan catatan akses.", + "sharedSuccessfully": "Berhasil dibagikan", + "failedToShare": "Gagal berbagi", + "confirmRevokeAccessDescription": "Apakah Anda yakin ingin mencabut akses ini?", + "hours": "jam", + "sharing": "Membagikan", + "selectUserAndRole": "Silakan pilih pengguna dan peran.", + "view": "Hanya Lihat", + "viewDesc": "Karena sistem enkripsi Termix, tingkat izin lainnya akan tersedia di kemudian hari." }, "commandPalette": { - "searchPlaceholder": "Search for hosts or quick actions...", - "recentActivity": "Recent Activity", - "navigation": "Navigation", - "addHost": "Add Host", - "addCredential": "Add Credential", - "adminSettings": "Admin Settings", - "userProfile": "User Profile", - "updateLog": "Update Log", - "hosts": "Hosts", - "openServerDetails": "Open Server Details", - "openFileManager": "Open File Manager", + "searchPlaceholder": "Cari host atau tindakan cepat...", + "recentActivity": "Aktivitas Terkini", + "navigation": "Navigasi", + "addHost": "Tambahkan Host", + "addCredential": "Tambahkan Kredensial", + "adminSettings": "Pengaturan Admin", + "userProfile": "Profil Pengguna", + "updateLog": "Log Pembaruan", + "hosts": "Tuan rumah", + "openServerDetails": "Buka Detail Server", + "openFileManager": "Buka Pengelola File", "edit": "Edit", - "links": "Links", + "links": "Tautan", "github": "GitHub", - "support": "Support", - "discord": "Discord", - "donate": "Donate", - "press": "Press", - "toToggle": "to toggle", - "close": "Close", - "hostManager": "Host Manager", - "pressToToggle": "Press Left Shift twice to open the command palette" + "support": "Mendukung", + "discord": "Perselisihan", + "donate": "Menyumbangkan", + "press": "Tekan", + "toToggle": "untuk beralih", + "close": "Menutup", + "hostManager": "Manajer Host", + "pressToToggle": "Tekan tombol Shift kiri dua kali untuk membuka palet perintah." }, "docker": { - "notEnabled": "Docker is not enabled for this host", - "validating": "Validating Docker...", - "connectingToHost": "Connecting to host...", - "error": "Error", - "errorCode": "Error code: {{code}}", + "notEnabled": "Docker tidak diaktifkan untuk host ini.", + "validating": "Memvalidasi Docker...", + "connectingToHost": "Menghubungkan ke host...", + "error": "Kesalahan", + "errorCode": "Kode kesalahan: {{code}}", "version": "Docker {{version}}", - "containerStarted": "Container {{name}} started", - "failedToStartContainer": "Failed to start container {{name}}", - "containerStopped": "Container {{name}} stopped", - "failedToStopContainer": "Failed to stop container {{name}}", - "containerRestarted": "Container {{name}} restarted", - "failedToRestartContainer": "Failed to restart container {{name}}", - "containerPaused": "Container {{name}} paused", - "containerUnpaused": "Container {{name}} unpaused", - "failedToTogglePauseContainer": "Failed to toggle pause state for container {{name}}", - "containerRemoved": "Container {{name}} removed", - "failedToRemoveContainer": "Failed to remove container {{name}}", - "image": "Image", - "idLabel": "ID", - "ports": "Ports", - "noPorts": "No ports", - "created": "Created", - "start": "Start", - "stop": "Stop", - "pause": "Pause", - "unpause": "Unpause", - "restart": "Restart", - "remove": "Remove", - "removeContainer": "Remove Container", - "confirmRemoveContainer": "Are you sure you want to remove the container '{{name}}'? This action cannot be undone.", - "runningContainerWarning": "Warning: This container is currently running. Removing it will stop the container first.", - "removing": "Removing...", - "loadingContainers": "Loading containers...", - "noContainersFound": "No containers found", - "noContainersFoundHint": "No Docker containers are available on this host", - "searchPlaceholder": "Search containers...", - "filterByStatusPlaceholder": "Filter by status", - "allContainersCount": "All ({{count}})", + "containerStarted": "Kontainer {{name}} dimulai", + "failedToStartContainer": "Gagal memulai kontainer {{name}}", + "containerStopped": "Kontainer {{name}} berhenti", + "failedToStopContainer": "Gagal menghentikan kontainer {{name}}", + "containerRestarted": "Kontainer {{name}} dimulai ulang", + "failedToRestartContainer": "Gagal memulai ulang kontainer {{name}}", + "containerPaused": "Kontainer {{name}} berhenti", + "containerUnpaused": "Kontainer {{name}} tidak dijeda", + "failedToTogglePauseContainer": "Gagal mengubah status jeda untuk kontainer {{name}}", + "containerRemoved": "Kontainer {{name}} dihapus", + "failedToRemoveContainer": "Gagal menghapus kontainer {{name}}", + "image": "Gambar", + "idLabel": "PENGENAL", + "ports": "Pelabuhan", + "noPorts": "Tidak ada port", + "created": "Dibuat", + "start": "Awal", + "stop": "Berhenti", + "pause": "Berhenti sebentar", + "unpause": "Lanjutkan jeda", + "restart": "Mulai ulang", + "remove": "Menghapus", + "removeContainer": "Lepaskan Kontainer", + "confirmRemoveContainer": "Apakah Anda yakin ingin menghapus kontainer '{{name}}'? Tindakan ini tidak dapat dibatalkan.", + "runningContainerWarning": "Peringatan: Kontainer ini sedang berjalan. Menghapusnya akan menghentikan kontainer terlebih dahulu.", + "removing": "Menghapus...", + "loadingContainers": "Memuat kontainer...", + "noContainersFound": "Tidak ditemukan wadah apa pun", + "noContainersFoundHint": "Tidak ada kontainer Docker yang tersedia di host ini.", + "searchPlaceholder": "Cari kontainer...", + "filterByStatusPlaceholder": "Saring berdasarkan status", + "allContainersCount": "Semua ({{count}})", "statusCount": "{{status}} ({{count}})", - "noContainersMatchFilters": "No containers match your filters", - "noContainersMatchFiltersHint": "Try adjusting your search or filter criteria", - "containerMustBeRunningToViewStats": "Container must be running to view statistics", - "failedToFetchStats": "Failed to fetch container statistics", - "containerNotRunning": "Container not running", - "startContainerToViewStats": "Start the container to view statistics", - "loadingStats": "Loading statistics...", - "errorLoadingStats": "Error loading statistics", - "noStatsAvailable": "No statistics available", - "cpuUsage": "CPU Usage", - "current": "Current", - "memoryUsage": "Memory Usage", - "usedLimit": "Used / Limit", - "percentage": "Percentage", - "networkIo": "Network I/O", - "input": "Input", - "output": "Output", - "blockIo": "Block I/O", - "read": "Read", - "write": "Write", - "pids": "PIDs", - "containerInformation": "Container Information", - "name": "Name", - "id": "ID", - "state": "State", - "disconnectedFromContainer": "Disconnected from container", - "containerMustBeRunning": "Container must be running to access console", - "authenticationRequired": "Authentication required", - "verificationCodePrompt": "Enter verification code", - "totpVerificationFailed": "TOTP verification failed. Please try again.", - "connectedTo": "Connected to {{containerName}}", - "disconnected": "Disconnected", - "consoleError": "Console error", - "errorMessage": "Error: {{message}}", - "failedToConnect": "Failed to connect to container", - "console": "Console", - "selectShell": "Select shell", - "bash": "Bash", + "noContainersMatchFilters": "Tidak ada wadah yang sesuai dengan filter Anda.", + "noContainersMatchFiltersHint": "Cobalah menyesuaikan kriteria pencarian atau filter Anda.", + "containerMustBeRunningToViewStats": "Kontainer harus berjalan agar statistik dapat dilihat.", + "failedToFetchStats": "Gagal mengambil statistik kontainer", + "containerNotRunning": "Kontainer tidak berjalan", + "startContainerToViewStats": "Jalankan kontainer untuk melihat statistik.", + "loadingStats": "Memuat statistik...", + "errorLoadingStats": "Terjadi kesalahan saat memuat statistik.", + "noStatsAvailable": "Tidak ada statistik yang tersedia.", + "cpuUsage": "Penggunaan CPU", + "current": "Saat ini", + "memoryUsage": "Penggunaan Memori", + "usedLimit": "Digunakan / Batas", + "percentage": "Persentase", + "networkIo": "Input/Output Jaringan", + "input": "Masukan", + "output": "Keluaran", + "blockIo": "Blok I/O", + "read": "Membaca", + "write": "Menulis", + "pids": "PID", + "containerInformation": "Informasi Kontainer", + "name": "Nama", + "id": "PENGENAL", + "state": "Negara", + "disconnectedFromContainer": "Terputus dari kontainer", + "containerMustBeRunning": "Kontainer harus berjalan agar dapat mengakses konsol.", + "authenticationRequired": "Diperlukan otentikasi.", + "verificationCodePrompt": "Masukkan kode verifikasi", + "totpVerificationFailed": "Verifikasi TOTP gagal. Silakan coba lagi.", + "connectedTo": "Terhubung ke {{containerName}}", + "disconnected": "Terputus", + "consoleError": "Kesalahan konsol", + "errorMessage": "Kesalahan: {{message}}", + "failedToConnect": "Gagal terhubung ke kontainer", + "console": "Menghibur", + "selectShell": "Pilih cangkang", + "bash": "Pesta", "sh": "sh", - "ash": "ash", - "connecting": "Connecting...", - "connect": "Connect", - "disconnect": "Disconnect", - "notConnected": "Not connected", - "clickToConnect": "Click connect to start a shell session", - "connectingTo": "Connecting to {{containerName}}...", - "containerNotFound": "Container not found", - "backToList": "Back to List", - "logs": "Logs", - "stats": "Stats", - "consoleTab": "Console", - "startContainerToAccess": "Start the container to access the console" + "ash": "abu", + "connecting": "Menghubungkan...", + "connect": "Menghubungkan", + "disconnect": "Memutuskan", + "notConnected": "Tidak terhubung", + "clickToConnect": "Klik sambungkan untuk memulai sesi shell.", + "connectingTo": "Menghubungkan ke {{containerName}}...", + "containerNotFound": "Kontainer tidak ditemukan", + "backToList": "Kembali ke Daftar", + "logs": "Log", + "stats": "Statistik", + "consoleTab": "Menghibur", + "startContainerToAccess": "Jalankan kontainer untuk mengakses konsol." }, "theme": { - "switchToLight": "Switch to Light", - "switchToDark": "Switch to Dark" + "switchToLight": "Beralih ke Cahaya", + "switchToDark": "Beralih ke Gelap" } }