mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-13 07:40:59 +00:00
486a2eeca3
The addons sit in a card per type now, the way every other admin tab sets its cards, instead of three columns nested in one card. A head card shows how many of each type are on and finds an addon by its name or description, with a switch between all, the ones on and the ones off.
994 lines
69 KiB
TypeScript
994 lines
69 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const admin: TranslationStrings = {
|
|
'admin.notifications.title': 'Notifikasi',
|
|
'admin.notifications.hint': 'Pilih satu saluran notifikasi. Hanya satu yang bisa aktif sekaligus.',
|
|
'admin.notifications.none': 'Dinonaktifkan',
|
|
'admin.notifications.email': 'Email (SMTP)', // same-as-en
|
|
'admin.notifications.webhook': 'Webhook',
|
|
'admin.notifications.save': 'Simpan pengaturan notifikasi',
|
|
'admin.notifications.saved': 'Pengaturan notifikasi tersimpan',
|
|
'admin.notifications.testWebhook': 'Kirim test webhook',
|
|
'admin.notifications.testWebhookSuccess': 'Test webhook berhasil dikirim',
|
|
'admin.notifications.testWebhookFailed': 'Test webhook gagal',
|
|
'admin.notifications.emailPanel.title': 'Email (SMTP)', // same-as-en
|
|
'admin.notifications.webhookPanel.title': 'Webhook',
|
|
'admin.notifications.webPushPanel.title': 'Web Push',
|
|
'admin.notifications.webPushPanel.hint':
|
|
'Memungkinkan pengguna menerima notifikasi di ponsel dan komputer mereka melalui browser, bahkan saat TREK ditutup. Memerlukan HTTPS; di iPhone dan iPad, TREK harus ditambahkan ke Layar Utama.',
|
|
'admin.notifications.inappPanel.title': 'In-App',
|
|
'admin.notifications.inappPanel.hint': 'Notifikasi in-app selalu aktif dan tidak bisa dinonaktifkan secara global.',
|
|
'admin.notifications.adminWebhookPanel.title': 'Webhook admin',
|
|
'admin.notifications.adminWebhookPanel.hint':
|
|
'Webhook ini digunakan khusus untuk notifikasi admin (mis. peringatan versi). Terpisah dari webhook per pengguna dan selalu berjalan jika diatur.',
|
|
'admin.notifications.adminWebhookPanel.saved': 'Admin webhook URL tersimpan',
|
|
'admin.notifications.adminWebhookPanel.testSuccess': 'Test webhook berhasil dikirim',
|
|
'admin.notifications.adminWebhookPanel.testFailed': 'Test webhook gagal',
|
|
'admin.notifications.adminWebhookPanel.alwaysOnHint': 'Admin webhook selalu berjalan jika URL dikonfigurasi',
|
|
'admin.notifications.ntfy': 'Ntfy',
|
|
'admin.ntfy.hint':
|
|
'Memungkinkan pengguna mengonfigurasi topik ntfy mereka sendiri untuk notifikasi push. Tetapkan server default di bawah untuk mengisi setelan pengguna secara otomatis.',
|
|
'admin.notifications.testNtfy': 'Kirim uji Ntfy',
|
|
'admin.notifications.testNtfySuccess': 'Uji Ntfy berhasil dikirim',
|
|
'admin.notifications.testNtfyFailed': 'Uji Ntfy gagal',
|
|
'admin.notifications.adminNtfyPanel.title': 'Ntfy admin',
|
|
'admin.notifications.adminNtfyPanel.hint':
|
|
'Topik Ntfy ini digunakan khusus untuk notifikasi admin (mis. peringatan versi). Terpisah dari topik per pengguna dan selalu berjalan jika dikonfigurasi.',
|
|
'admin.notifications.adminNtfyPanel.serverLabel': 'URL Server Ntfy',
|
|
'admin.notifications.adminNtfyPanel.serverHint':
|
|
'Juga digunakan sebagai server default untuk notifikasi ntfy pengguna. Kosongkan untuk menggunakan ntfy.sh. Pengguna dapat menggantinya di pengaturan mereka sendiri.',
|
|
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
|
|
'admin.notifications.adminNtfyPanel.topicLabel': 'Topik Admin',
|
|
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts', // same-as-en
|
|
'admin.notifications.adminNtfyPanel.tokenLabel': 'Token Akses (opsional)',
|
|
'admin.notifications.adminNtfyPanel.tokenCleared': 'Token akses admin dihapus',
|
|
'admin.notifications.adminNtfyPanel.saved': 'Pengaturan Ntfy admin tersimpan',
|
|
'admin.notifications.adminNtfyPanel.test': 'Kirim uji Ntfy',
|
|
'admin.notifications.adminNtfyPanel.testSuccess': 'Uji Ntfy berhasil dikirim',
|
|
'admin.notifications.adminNtfyPanel.testFailed': 'Uji Ntfy gagal',
|
|
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'Admin Ntfy selalu berjalan jika topik dikonfigurasi',
|
|
'admin.notifications.adminNotificationsHint':
|
|
'Atur saluran mana yang mengirimkan notifikasi khusus admin (mis. peringatan versi).',
|
|
'admin.notificationDefaults.title': 'Bawaan untuk pengguna',
|
|
'admin.notificationDefaults.hint':
|
|
'Keadaan awal notifikasi setiap pengguna. "Mati" masih bisa dinyalakan pengguna; "Diblokir" mematikan untuk semua orang dan tampil terkunci di pengaturan mereka. Berlaku bagi yang belum mengubah sel itu.',
|
|
'admin.notificationDefaults.on': 'Nyala',
|
|
'admin.notificationDefaults.off': 'Mati',
|
|
'admin.notificationDefaults.blocked': 'Diblokir',
|
|
'admin.notificationDefaults.cycle': 'Klik untuk: {next}',
|
|
'admin.notifications.tripReminders.title': 'Pengingat Perjalanan',
|
|
'admin.notifications.tripReminders.hint':
|
|
'Mengirim notifikasi pengingat sebelum perjalanan dimulai (memerlukan hari pengingat yang diatur pada perjalanan).',
|
|
'admin.notifications.tripReminders.enabled': 'Pengingat perjalanan diaktifkan',
|
|
'admin.notifications.tripReminders.disabled': 'Pengingat perjalanan dinonaktifkan',
|
|
'admin.smtp.title': 'Email & Notifikasi',
|
|
'admin.smtp.hint': 'Konfigurasi SMTP untuk pengiriman notifikasi email.',
|
|
'admin.smtp.testButton': 'Kirim email uji',
|
|
'admin.webhook.hint': 'Izinkan pengguna mengatur URL webhook sendiri untuk notifikasi (Discord, Slack, dll.).',
|
|
'admin.smtp.testSuccess': 'Email uji berhasil dikirim',
|
|
'admin.smtp.testFailed': 'Email uji gagal',
|
|
'admin.title': 'Administrasi',
|
|
'admin.subtitle': 'Manajemen pengguna dan pengaturan sistem',
|
|
'admin.tabs.users': 'Pengguna',
|
|
'admin.tabs.categories': 'Kategori',
|
|
'admin.tabs.backup': 'Cadangan',
|
|
'admin.tabs.notifications': 'Notifikasi',
|
|
'admin.tabs.audit': 'Audit', // same-as-en
|
|
'admin.stats.users': 'Pengguna',
|
|
'admin.stats.trips': 'Perjalanan',
|
|
'admin.stats.places': 'Tempat',
|
|
'admin.stats.photos': 'Foto',
|
|
'admin.stats.files': 'File',
|
|
'admin.table.user': 'Pengguna',
|
|
'admin.table.email': 'Email', // same-as-en
|
|
'admin.table.role': 'Peran',
|
|
'admin.table.created': 'Dibuat',
|
|
'admin.table.lastActive': 'Terakhir Aktif',
|
|
'admin.table.actions': 'Tindakan',
|
|
'admin.you': '(Kamu)',
|
|
'admin.editUser': 'Edit Pengguna',
|
|
'admin.newPassword': 'Kata Sandi Baru',
|
|
'admin.newPasswordHint': 'Kosongkan untuk mempertahankan kata sandi saat ini',
|
|
'admin.deleteUser':
|
|
'Hapus pengguna "{name}"? Akunnya serta semua perjalanan dan jurnal miliknya akan dihapus permanen, termasuk perjalanan yang dibagikan dengan anggota lain, yang akan kehilangan akses. Perjalanan milik orang lain tetap ada.',
|
|
'admin.deleteUserTitle': 'Hapus pengguna',
|
|
'admin.newPasswordPlaceholder': 'Masukkan kata sandi baru…',
|
|
'admin.toast.loadError': 'Gagal memuat data admin',
|
|
'admin.toast.userUpdated': 'Pengguna diperbarui',
|
|
'admin.toast.updateError': 'Gagal memperbarui',
|
|
'admin.toast.userDeleted': 'Pengguna dihapus',
|
|
'admin.toast.deleteError': 'Gagal menghapus',
|
|
'admin.toast.cannotDeleteSelf': 'Tidak bisa menghapus akun sendiri',
|
|
'admin.toast.userCreated': 'Pengguna dibuat',
|
|
'admin.toast.createError': 'Gagal membuat pengguna',
|
|
'admin.toast.fieldsRequired': 'Nama pengguna, email, dan kata sandi wajib diisi',
|
|
'admin.createUser': 'Buat Pengguna',
|
|
'admin.invite.title': 'Tautan Undangan',
|
|
'admin.invite.subtitle': 'Buat tautan pendaftaran sekali pakai',
|
|
'admin.invite.create': 'Buat Tautan',
|
|
'admin.invite.createAndCopy': 'Buat & Salin',
|
|
'admin.invite.empty': 'Belum ada tautan undangan yang dibuat',
|
|
'admin.invite.maxUses': 'Maks. Penggunaan',
|
|
'admin.invite.expiry': 'Kedaluwarsa setelah',
|
|
'admin.invite.uses': 'digunakan',
|
|
'admin.invite.expiresAt': 'kedaluwarsa',
|
|
'admin.invite.createdBy': 'oleh',
|
|
'admin.invite.active': 'Aktif',
|
|
'admin.invite.expired': 'Kedaluwarsa',
|
|
'admin.invite.usedUp': 'Habis dipakai',
|
|
'admin.invite.copied': 'Tautan undangan disalin ke clipboard',
|
|
'admin.invite.copyLink': 'Salin tautan',
|
|
'admin.invite.deleted': 'Tautan undangan dihapus',
|
|
'admin.invite.createError': 'Gagal membuat tautan undangan',
|
|
'admin.invite.deleteError': 'Gagal menghapus tautan undangan',
|
|
'admin.tabs.settings': 'Pengaturan',
|
|
'admin.allowRegistration': 'Izinkan Pendaftaran',
|
|
'admin.allowRegistrationHint': 'Pengguna baru dapat mendaftar sendiri',
|
|
'admin.authMethods': 'Metode Autentikasi',
|
|
'admin.passwordLogin': 'Login dengan Kata Sandi',
|
|
'admin.passwordLoginHint': 'Izinkan pengguna masuk dengan email dan kata sandi',
|
|
'admin.passwordRegistration': 'Pendaftaran dengan Kata Sandi',
|
|
'admin.passwordRegistrationHint': 'Izinkan pengguna baru mendaftar dengan email dan kata sandi',
|
|
'admin.oidcLogin': 'Login SSO',
|
|
'admin.oidcLoginHint': 'Izinkan pengguna masuk dengan SSO',
|
|
'admin.oidcRegistration': 'Penyediaan Otomatis SSO',
|
|
'admin.oidcRegistrationHint': 'Buat akun otomatis untuk pengguna SSO baru',
|
|
'admin.envOverrideHint':
|
|
'Pengaturan login kata sandi dikendalikan oleh variabel lingkungan OIDC_ONLY dan tidak dapat diubah di sini.',
|
|
'admin.lockoutWarning': 'Minimal satu metode login harus tetap aktif',
|
|
'admin.requireMfa': 'Wajibkan autentikasi dua faktor (2FA)',
|
|
'admin.requireMfaHint':
|
|
'Pengguna tanpa 2FA harus menyelesaikan pengaturan di Pengaturan sebelum menggunakan aplikasi.',
|
|
'admin.apiKeys': 'Kunci API',
|
|
'admin.apiKeysHint':
|
|
'Dari mana data tempat berasal. Indeks TREK tidak butuh kunci; dua penyedia di bawah bersifat opsional.',
|
|
'admin.trekApi.badgeDefault': 'Sumber baku yang disarankan',
|
|
'admin.googleCaveat.badge': 'Tidak disarankan',
|
|
'admin.googleCaveat.body':
|
|
'TREK adalah perangkat lunak sumber terbuka dan di sini kami tidak netral. Pada skala ini ulasan dan foto usaha biasa hanya ada di Google, dan itulah monopoli. Kolom ini ada karena tidak ada penggantinya, bukan karena kami menyarankan. Lalu setiap pencarian pergi ke Google.',
|
|
'admin.trekApi.tagline':
|
|
'Indeks tempat milik TREK sendiri. Mencari tanpa kunci Google, tanpa kuota, dan tanpa ada yang menghitung pencarian Anda.',
|
|
'admin.trekApi.factPlaces': '73,6 juta tempat di seluruh dunia',
|
|
'admin.trekApi.factNoKey': 'Tanpa kunci, tanpa kuota',
|
|
'admin.trekApi.factOffline': 'Paket per negara jalan offline',
|
|
'admin.trekApi.factPrivacy': 'Pencarian tidak pernah dicatat',
|
|
'admin.trekApi.more': 'Apa isinya',
|
|
'admin.trekApi.fieldPhone': 'Telepon',
|
|
'admin.trekApi.fieldStableId': 'Id tetap',
|
|
'admin.trekApi.includedNote':
|
|
'Deskripsi berasal dari situs tempat itu sendiri, jam buka dari OpenStreetMap di mana sudah diisi.',
|
|
'admin.trekApi.notRatings': 'Ulasan',
|
|
'admin.trekApi.notPhotos': 'Foto usaha biasa',
|
|
'admin.trekApi.notIncludedNote':
|
|
'Tidak ada sumber terbuka yang punya keduanya, dengan harga berapa pun. Untuk keduanya kunci Google tetap satu-satunya jalan.',
|
|
'admin.trekApi.sourcesLabel': 'Sumber',
|
|
'admin.trekApi.sourcesNote': 'Setiap ruas dalam respons menyebutkan berasal dari yang mana.',
|
|
'admin.trekApi.included': 'Termasuk',
|
|
'admin.trekApi.notIncluded': 'Tidak termasuk',
|
|
'admin.mapsKey': 'Kunci API Google Maps',
|
|
'admin.mapsKeyHint': 'Diperlukan untuk pencarian tempat. Dapatkan di console.cloud.google.com',
|
|
'admin.mapsKeyHintLong':
|
|
'Tanpa kunci API Google, TREK API yang disarankan akan dipakai. Dengan kunci, foto, ulasan, dan jam buka bisa dimuat sebagai tambahan. Buat kunci di console.cloud.google.com.',
|
|
'admin.recommended': 'Direkomendasikan',
|
|
'admin.weatherKey': 'Kunci API OpenWeatherMap',
|
|
'admin.weatherKeyHint': 'Untuk data cuaca. Gratis di openweathermap.org',
|
|
'admin.unsplashKey': 'Kunci API Unsplash',
|
|
'admin.unsplashKeyHint': 'Untuk pencarian gambar. Gratis di unsplash.com/developers',
|
|
'admin.amapKey': 'Kunci API Amap (高德地图)',
|
|
'admin.amapKeyHint':
|
|
'Untuk pencarian tempat di Tiongkok daratan, tempat Google tidak dapat diakses dan data OpenStreetMap sangat sedikit. Perlu kunci jenis "Web 服务" (layanan web), bukan kunci JS API. Dapatkan di console.amap.com.',
|
|
'admin.keyFromEnv': 'Diatur lewat {name}',
|
|
'admin.placesProvider.title': 'Penyedia pencarian tempat',
|
|
'admin.placesProvider.subtitle':
|
|
'Indeks milik TREK dan OpenStreetMap menjawab setiap pencarian. Di sini dipilih siapa lagi yang ditanya bila keduanya tidak menemukan apa pun: Otomatis memilih Google bila ada kunci, lalu Amap.',
|
|
'admin.placesProvider.auto': 'Otomatis',
|
|
'admin.placesProvider.google': 'Google Places',
|
|
'admin.placesProvider.amap': 'Amap (高德地图)', // same-as-en
|
|
'admin.placesProvider.openstreetmap': 'OpenStreetMap',
|
|
'admin.placesProvider.missingKey':
|
|
'Penyedia yang dipilih belum punya kunci API, jadi pencarian tempat hanya dijawab oleh indeks TREK dan OpenStreetMap.',
|
|
'admin.placesProvider.saved': 'Penyedia pencarian tempat disimpan',
|
|
'admin.validateKey': 'Uji',
|
|
'admin.keyValid': 'Terhubung',
|
|
'admin.keyInvalid': 'Tidak valid',
|
|
'admin.keySaved': 'Kunci API disimpan',
|
|
'admin.oidcTitle': 'Single Sign-On (OIDC)', // same-as-en
|
|
'admin.oidcSubtitle': 'Izinkan login melalui penyedia eksternal seperti Google, Apple, Authentik, atau Keycloak.',
|
|
'admin.oidcDisplayName': 'Nama Tampilan',
|
|
'admin.oidcIssuer': 'Issuer URL', // same-as-en
|
|
'admin.oidcIssuerHint': 'Issuer URL OpenID Connect dari penyedia. Contoh: https://accounts.google.com',
|
|
'admin.oidcSaved': 'Konfigurasi OIDC disimpan',
|
|
'admin.oidcOnlyMode': 'Nonaktifkan autentikasi kata sandi',
|
|
'admin.oidcOnlyModeHint':
|
|
'Jika diaktifkan, hanya login SSO yang diizinkan. Login dan pendaftaran berbasis kata sandi diblokir.',
|
|
'admin.fileTypes': 'Jenis File yang Diizinkan',
|
|
'admin.fileTypesHint': 'Atur jenis file apa saja yang boleh diunggah pengguna.',
|
|
'admin.fileTypesFormat':
|
|
'Ekstensi dipisahkan koma (contoh: jpg,png,pdf,doc). Gunakan * untuk mengizinkan semua jenis.',
|
|
'admin.fileTypesSaved': 'Pengaturan jenis file disimpan',
|
|
'admin.googleOptions': 'Kunci ini dipakai untuk apa',
|
|
'admin.googleOptionsSummary': '{on} dari {total} aktif',
|
|
'admin.placesPhotos.title': 'Foto Tempat',
|
|
'admin.placesPhotos.subtitle':
|
|
'Mengambil foto dari Google Places API. Nonaktifkan untuk menghemat kuota API. Foto Wikimedia tidak terpengaruh.',
|
|
'admin.placesAutocomplete.title': 'Pelengkapan Otomatis Tempat',
|
|
'admin.placesAutocomplete.subtitle':
|
|
'Menggunakan Google Places API untuk saran pencarian. Nonaktifkan untuk menghemat kuota API.',
|
|
'admin.placesDetails.title': 'Detail Tempat',
|
|
'admin.placesDetails.subtitle':
|
|
'Mengambil informasi detail tempat (jam, penilaian, situs web) dari Google Places API. Nonaktifkan untuk menghemat kuota API.',
|
|
'admin.placesEnrich.title': 'Pengayaan tempat',
|
|
'admin.placesEnrich.subtitle':
|
|
'Menampilkan gambar dan deskripsi saat menambahkan tempat. Wikipedia dan OpenStreetMap selalu digunakan; Google ditambahkan bila Foto Tempat atau Detail Tempat aktif.',
|
|
'admin.placesGoogleOnly.title': 'Cari hanya dengan Google',
|
|
'admin.placesGoogleOnly.subtitle':
|
|
'Setiap pencarian dan setiap saran dikirim ke Google Places. Nonaktif, indeks TREK dan OpenStreetMap menjawab lebih dulu, dan Google hanya ditanya jika keduanya tidak menemukan apa pun.',
|
|
'admin.placesGoogleOnly.missingKey':
|
|
'Memerlukan kunci API Google Maps. Tanpa kunci, pencarian memakai indeks TREK dan OpenStreetMap, apa pun posisi sakelar ini.',
|
|
'admin.placesGoogleOnly.otherProvider':
|
|
'Membutuhkan Google sebagai penyedia tempat. Dengan Amap atau OpenStreetMap yang dipilih, tidak ada pencarian yang dikirim ke Google, apa pun posisi sakelar ini.',
|
|
'admin.googleQuota.title': 'Batas harian panggilan Google',
|
|
'admin.googleQuota.subtitle':
|
|
'Setelah tercapai, TREK berhenti memanggil Google sampai hari berikutnya (UTC) dan mencari dengan OpenStreetMap. Kosongkan untuk tanpa batas.',
|
|
'admin.googleQuota.placeholder': 'Tanpa batas',
|
|
'admin.googleQuota.usedToday': 'Hari ini: {used}',
|
|
'admin.googleQuota.usedOfLimit': 'Hari ini: {used} dari {limit}',
|
|
'admin.googleQuota.reached': 'Batas tercapai ({used}), Google dijeda sampai besok',
|
|
'admin.googleQuota.saved': 'Batas harian disimpan',
|
|
'admin.transitProvider.title': 'Penyedia transportasi umum',
|
|
'admin.transitProvider.subtitle': 'Layanan mana yang menjawab pencarian transportasi umum.',
|
|
'admin.transitProvider.transitous': 'Transitous (gratis)',
|
|
'admin.transitProvider.google': 'Google',
|
|
'admin.transitProvider.transitousHint':
|
|
'Umpan GTFS komunitas. Gratis dan tanpa kunci, dengan cakupan terbaik di Eropa.',
|
|
'admin.transitProvider.googleHint':
|
|
'Menggunakan kunci Google di atas, untuk wilayah yang tidak memiliki data Transitous. Ditagih per pencarian; selama belum ada kunci, Transitous yang dipakai.',
|
|
'admin.transitProvider.noKeyWarning':
|
|
'Google dipilih, tetapi belum ada kunci Google yang dikonfigurasi; pencarian transportasi masih memakai Transitous. Tambahkan kunci di Kunci API di atas.',
|
|
'admin.transitProvider.personalKeyWarning':
|
|
'Hanya kunci Google milikmu yang disetel, sehingga pencarian anggota lain tetap kembali ke Transitous. Simpan kunci di atas sebagai admin agar berlaku untuk seluruh instance.',
|
|
'admin.placeShadow.title': 'Log pencarian tempat',
|
|
'admin.placeShadow.subtitle':
|
|
'Mencatat hasil pencarian mana yang dipilih, agar indeks tempat lain nanti bisa diukur dengan pencarian sungguhan. Tidak ada yang meninggalkan instans ini, dan admin bisa mengekspor atau menghapus log kapan saja.',
|
|
'admin.bagTracking.title': 'Pelacak Tas',
|
|
'admin.bagTracking.subtitle': 'Aktifkan berat dan penugasan tas untuk item packing',
|
|
'admin.collab.chat.title': 'Chat', // same-as-en
|
|
'admin.collab.chat.subtitle': 'Pesan real-time untuk kolaborasi',
|
|
'admin.collab.notes.title': 'Catatan',
|
|
'admin.collab.notes.subtitle': 'Catatan dan dokumen bersama',
|
|
'admin.collab.polls.title': 'Jajak Pendapat',
|
|
'admin.collab.polls.subtitle': 'Jajak pendapat dan voting grup',
|
|
'admin.collab.whatsnext.title': 'Selanjutnya',
|
|
'admin.collab.whatsnext.subtitle': 'Saran aktivitas dan langkah selanjutnya',
|
|
'admin.tabs.config': 'Personalisasi',
|
|
'admin.tabs.defaults': 'Pengaturan Default Pengguna',
|
|
'admin.defaultSettings.title': 'Pengaturan Default Pengguna',
|
|
'admin.defaultSettings.description':
|
|
'Tetapkan nilai default untuk seluruh instance. Pengguna yang belum mengubah pengaturan akan melihat nilai-nilai ini. Perubahan mereka sendiri selalu diprioritaskan.',
|
|
'admin.defaultSettings.saved': 'Default disimpan',
|
|
'admin.defaultSettings.reset': 'Atur ulang ke default bawaan',
|
|
'admin.defaultSettings.resetToBuiltIn': 'atur ulang',
|
|
'admin.tabs.templates': 'Template Packing',
|
|
'admin.packingTemplates.title': 'Template Packing',
|
|
'admin.packingTemplates.subtitle': 'Buat daftar packing yang bisa digunakan ulang untuk perjalananmu',
|
|
'admin.packingTemplates.create': 'Template Baru',
|
|
'admin.packingTemplates.namePlaceholder': 'Nama template (contoh: Liburan Pantai)',
|
|
'admin.packingTemplates.empty': 'Belum ada template yang dibuat',
|
|
'admin.packingTemplates.items': 'item',
|
|
'admin.packingTemplates.categories': 'kategori',
|
|
'admin.packingTemplates.itemName': 'Nama item',
|
|
'admin.packingTemplates.itemCategory': 'Kategori',
|
|
'admin.packingTemplates.categoryName': 'Nama kategori (contoh: Pakaian)',
|
|
'admin.packingTemplates.addCategory': 'Tambah kategori',
|
|
'admin.packingTemplates.created': 'Template dibuat',
|
|
'admin.packingTemplates.deleted': 'Template dihapus',
|
|
'admin.packingTemplates.loadError': 'Gagal memuat template',
|
|
'admin.packingTemplates.createError': 'Gagal membuat template',
|
|
'admin.packingTemplates.deleteError': 'Gagal menghapus template',
|
|
'admin.packingTemplates.deleteCategoryError': 'Gagal menghapus kategori',
|
|
'admin.packingTemplates.deleteItemError': 'Gagal menghapus item',
|
|
'admin.packingTemplates.saveError': 'Gagal menyimpan',
|
|
'admin.tabs.addons': 'Addon',
|
|
'admin.tabs.plugins': 'Plugin',
|
|
'admin.tabs.storage': 'Penyimpanan',
|
|
'admin.plugins.rescan': 'Pindai ulang',
|
|
'admin.plugins.rescanned': 'Folder plugin dipindai ulang',
|
|
'admin.plugins.upload': 'Unggah plugin',
|
|
'admin.plugins.dropToUpload': 'Lepaskan .zip plugin untuk memasang',
|
|
'admin.plugins.uploaded': 'Plugin “{name}” diunggah — aktifkan untuk menjalankan',
|
|
'admin.plugins.sideloaded': 'Dimuat manual',
|
|
'admin.plugins.devLinkBadge': 'Dev-Link',
|
|
'admin.plugins.devLinkHint':
|
|
'Dimuat dari direktori build lokal dan dimuat ulang langsung dengan data nyata — hanya untuk pengembangan',
|
|
'admin.plugins.devLinkTitle': 'Tautkan plugin lokal',
|
|
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
|
|
'admin.plugins.devLinkButton': 'Tautkan',
|
|
'admin.plugins.devLinkLinked': '{id} ditautkan — aktifkan untuk menjalankan',
|
|
'admin.plugins.sideloadedHint': 'Diunggah manual — bukan dari registri, tanpa tanda tangan dan tinjauan',
|
|
'admin.plugins.browse': 'Jelajahi plugin',
|
|
'admin.plugins.installed': 'Terpasang',
|
|
'admin.plugins.install': 'Pasang',
|
|
'admin.plugins.registryEmpty': 'Belum ada plugin yang tersedia di registri.',
|
|
'admin.plugins.actionError': 'Tindakan gagal',
|
|
'admin.plugins.activate': 'Aktifkan',
|
|
'admin.plugins.activated': 'Plugin diaktifkan',
|
|
'admin.plugins.deactivate': 'Nonaktifkan',
|
|
'admin.plugins.deactivated': 'Plugin dinonaktifkan',
|
|
'admin.plugins.viewErrors': 'Lihat log error',
|
|
'admin.plugins.errorLog': 'Log error',
|
|
'admin.plugins.allowedHosts': 'Host yang diizinkan',
|
|
'admin.plugins.allowedHosts.hint':
|
|
'Plugin ini berbicara dengan layanan yang hanya Anda yang tahu namanya (server swakelola). Tambahkan host yang boleh dijangkau — selain itu tidak bisa.',
|
|
'admin.plugins.allowedHosts.none': 'Belum ada host yang ditambahkan.',
|
|
'admin.plugins.allowedHosts.unsupported':
|
|
'Plugin ini tidak memakai host dari operator. Host yang diizinkan sudah tetap di manifesnya.',
|
|
'admin.plugins.allowedHosts.restartNote': 'Menyimpan akan memulai ulang plugin agar memakai daftar baru.',
|
|
'admin.plugins.allowedHosts.add': 'Tambah host yang diizinkan',
|
|
'admin.plugins.allowedHosts.count': '{n} host diizinkan',
|
|
'admin.plugins.operatorEgressPill': '+ host yang Anda tambahkan',
|
|
'admin.plugins.operatorEgressHint':
|
|
'Plugin ini berbicara dengan layanan yang hanya Anda yang tahu namanya (server swakelola). Setelah dipasang, tambahkan host di ⋯ → Host yang diizinkan. Selain itu tidak bisa.',
|
|
'admin.plugins.noErrors': 'Tidak ada error yang tercatat.',
|
|
'admin.plugins.uninstalled': 'Plugin dihapus',
|
|
'admin.plugins.uninstallTitle': 'Hapus plugin?',
|
|
'admin.plugins.uninstallBody':
|
|
'Ini akan menghentikan plugin, menghapus kodenya, dan menghapus semua datanya. Tindakan ini tidak bisa dibatalkan.',
|
|
'admin.plugins.status.starting': 'Memulai…',
|
|
'admin.plugins.type.widget': 'Widget', // same-as-en
|
|
'admin.plugins.type.page': 'Halaman',
|
|
'admin.plugins.type.integration': 'Integrasi',
|
|
'admin.plugins.type.trip-page': 'Halaman perjalanan',
|
|
'admin.plugins.reviewed': 'Ditinjau',
|
|
'admin.plugins.unreviewed': 'Belum ditinjau',
|
|
'admin.plugins.updated': 'Plugin diperbarui',
|
|
'admin.plugins.updateTo': 'Perbarui → v{version}',
|
|
'admin.plugins.enabledToggle': 'Aktifkan plugin',
|
|
'plugins.notFound': 'Plugin tidak ditemukan',
|
|
'plugins.frameLoadFailed': 'Plugin ini tidak dapat dimuat.',
|
|
'admin.plugins.title': 'Plugin',
|
|
'admin.plugins.subtitle': 'Pasang dan kelola plugin pihak ketiga di instans kamu.',
|
|
'admin.plugins.disabledTitle': 'Plugin dinonaktifkan',
|
|
'admin.plugins.disabledBody':
|
|
'Runtime plugin sedang dimatikan (TREK_PLUGINS_ENABLED). Tidak ada plugin yang bisa berjalan sampai admin mengaktifkannya di konfigurasi server.',
|
|
'admin.plugins.empty': 'Belum ada plugin yang terpasang.',
|
|
'admin.plugins.loadError': 'Tidak dapat memuat plugin.',
|
|
'admin.plugins.scaffoldNote':
|
|
'Pemasangan dan aktivasi plugin akan hadir di pembaruan mendatang. Saat ini panel ini hanya menampilkan plugin yang terpasang.',
|
|
'admin.plugins.status.active': 'Aktif',
|
|
'admin.plugins.status.inactive': 'Tidak aktif',
|
|
'admin.plugins.status.disabled': 'Nonaktif',
|
|
'admin.plugins.status.error': 'Galat',
|
|
'admin.plugins.status.incompatible': 'Tidak kompatibel',
|
|
'admin.plugins.details': 'Detail',
|
|
'admin.plugins.detailError': 'Tidak dapat memuat detail plugin.',
|
|
'admin.plugins.permissionsTitle': 'Izin',
|
|
'admin.plugins.noPermissions': 'Plugin ini tidak meminta izin khusus.',
|
|
'admin.plugins.egressNote': 'Dapat terhubung ke: {hosts}',
|
|
'admin.plugins.setupTitle': 'Penyiapan',
|
|
'admin.plugins.noSetup': 'Langsung berfungsi — tidak ada yang perlu dikonfigurasi.',
|
|
'admin.plugins.scope.instance': 'Seluruh instans',
|
|
'admin.plugins.scope.user': 'Per pengguna',
|
|
'admin.plugins.fieldRequired': 'Wajib diisi',
|
|
'admin.plugins.sourceRepo': 'Repositori sumber',
|
|
'admin.plugins.reportIssue': 'Laporkan masalah',
|
|
'admin.plugins.homepage': 'Beranda',
|
|
'admin.plugins.requiresTrek': 'Memerlukan TREK {version}+',
|
|
'admin.plugins.reviewedOn': 'Ditinjau {date}',
|
|
'admin.plugins.perm.db:own': 'Menyimpan datanya sendiri di database terisolasi',
|
|
'admin.plugins.perm.db:read:trips': 'Membaca perjalanan yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:read:users': 'Membaca info profil dasar (nama, avatar — tidak pernah kredensial)',
|
|
'admin.plugins.perm.db:read:costs':
|
|
'Membaca pengeluaran (item anggaran) yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:read:packing':
|
|
'Membaca daftar barang bawaan dari perjalanan yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:packing':
|
|
'Membuat, mengedit, dan menghapus item daftar bawaan pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.weather:read': 'Membaca prakiraan cuaca host yang di-cache (berdasarkan koordinat)',
|
|
'admin.plugins.perm.db:read:categories': 'Membaca daftar kategori tempat global',
|
|
'admin.plugins.perm.db:read:tags': 'Membaca tag pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:tags': 'Membuat, mengedit, dan menghapus tag pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:read:todos':
|
|
'Membaca tugas dari perjalanan yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:todos':
|
|
'Membuat, mengedit, dan menghapus tugas pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:atlas':
|
|
'Menandai negara dan wilayah sebagai sudah dikunjungi dan mengelola bucket list pengguna yang bersangkutan (memerlukan add-on Atlas)',
|
|
'admin.plugins.perm.db:write:vacay':
|
|
'Mengalihkan hari cuti dan libur perusahaan pada rencana aktif pengguna yang bersangkutan (memerlukan add-on Vacay)',
|
|
'admin.plugins.perm.db:write:journal':
|
|
'Membuat, mengedit, dan menghapus entri jurnal di jurnal yang dapat diedit oleh pengguna yang bersangkutan (memerlukan add-on Journey)',
|
|
'admin.plugins.perm.db:write:collections':
|
|
'Membuat dan mengedit koleksi serta menyimpan tempat ke dalamnya, dengan peran koleksi pengguna yang bersangkutan (memerlukan add-on Collections)',
|
|
'admin.plugins.perm.db:write:files':
|
|
'Melampirkan berkas ke perjalanan yang dapat diedit oleh pengguna yang bersangkutan (batas 10 MB, ekstensi terblokir ditolak) dan mengelola tautannya',
|
|
'admin.plugins.perm.db:write:collab':
|
|
'Memublikasikan catatan, jajak pendapat, dan pesan obrolan pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan (memerlukan add-on Collab)',
|
|
'admin.plugins.perm.db:write:members':
|
|
'Menambahkan pengguna ke perjalanan — memberikan akses perjalanan; dilindungi oleh hak kelola anggota pengguna yang bersangkutan',
|
|
'admin.plugins.perm.notify:send':
|
|
'Mengirim notifikasi (kotak lonceng + email/ntfy) kepada pengguna yang bersangkutan atau perjalanan yang diikutinya — tidak pernah ke penerima sembarangan',
|
|
'admin.plugins.perm.ai:invoke':
|
|
'Menjalankan penyedia AI yang dikonfigurasi admin (penyelesaian teks + ekstraksi dokumen) atas nama pengguna yang bersangkutan — plugin tidak pernah menyimpan kunci',
|
|
'admin.plugins.perm.oauth:client':
|
|
'Terhubung ke layanan pihak ketiga atas namamu melalui OAuth yang diperantarai host (host menyimpan token, plugin tidak pernah melihatnya)',
|
|
'admin.plugins.perm.db:read:files':
|
|
'Membaca berkas dari perjalanan yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:reservations':
|
|
'Membuat, mengedit, dan menghapus pemesanan pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:accommodations':
|
|
'Membuat, mengedit, dan menghapus akomodasi pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:read:journal':
|
|
'Membaca jurnal perjalanan pengguna yang bersangkutan (memerlukan add-on Journey)',
|
|
'admin.plugins.perm.db:read:atlas':
|
|
'Membaca negara dan wilayah yang dikunjungi oleh pengguna yang bersangkutan (memerlukan add-on Atlas)',
|
|
'admin.plugins.perm.db:read:vacay': 'Membaca rencana liburan pengguna yang bersangkutan (memerlukan add-on Vacay)',
|
|
'admin.plugins.perm.db:read:daynotes':
|
|
'Membaca catatan harian dari perjalanan yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:read:collections':
|
|
'Membaca koleksi tempat tersimpan milik pengguna yang bersangkutan (memerlukan add-on Collections)',
|
|
'admin.plugins.perm.db:write:daynotes':
|
|
'Membuat, mengedit, dan menghapus catatan harian pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.jobs:run':
|
|
'Menjalankan tugas latar belakang yang dideklarasikan sesuai jadwal (tanpa konteks pengguna — tidak dapat membaca data pengguna)',
|
|
'admin.plugins.perm.db:write:costs':
|
|
'Membuat pengeluaran (item anggaran) pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:places':
|
|
'Menambah, mengedit, dan menghapus tempat pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:days':
|
|
'Menambah, mengedit, dan menghapus hari pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:itinerary':
|
|
'Menetapkan dan menghapus tempat pada hari-hari perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:write:trips':
|
|
'Mengedit detail perjalanan (judul, tanggal, mata uang…) pada perjalanan yang dapat diedit oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:meta':
|
|
'Melampirkan data pribadinya sendiri ke perjalanan, tempat, dan hari yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.ws:broadcast:trip': 'Mengirim pembaruan real-time ke anggota perjalanan',
|
|
'admin.plugins.perm.ws:broadcast:user': 'Mengirim pembaruan real-time ke pengguna tertentu',
|
|
'admin.plugins.perm.hook:photo-provider': 'Menyediakan foto untuk Memories',
|
|
'admin.plugins.perm.hook:calendar-source': 'Menyediakan acara untuk kalender',
|
|
'admin.plugins.perm.hook:place-detail-provider':
|
|
'Menyumbangkan detail tambahan (ulasan, peringkat, tautan) untuk suatu tempat',
|
|
'admin.plugins.perm.hook:search-provider': 'Menjawab pencarian tempat dari indeks sendiri, di samping hasil TREK',
|
|
'admin.plugins.perm.hook:poi-category-provider':
|
|
'Menambahkan kategori tempat sendiri ke “Jelajahi tempat di peta”; saat Anda memilih salah satunya, plugin menerima area peta yang sedang Anda lihat',
|
|
'admin.plugins.perm.hook:trip-warning-provider':
|
|
'Munculkan peringatan validasi pada perjalanan (ditampilkan di perencana)',
|
|
'admin.plugins.perm.hook:table-contributor':
|
|
'Menambahkan kolom dan tindakan ke tampilan perjalanan (pemesanan, tempat, hari)',
|
|
'admin.plugins.perm.hook:map-marker-provider':
|
|
'Menambahkan penanda ke peta perjalanan (mis. menampilkan pemesanan atau POI)',
|
|
'admin.plugins.perm.hook:map-layer-provider': 'Menggambar rute, koridor, dan zona di peta perjalanan',
|
|
'admin.plugins.perm.hook:route-provider':
|
|
'Menawarkan profil routing yang dapat digunakan perencana untuk menghitung rute hari (mis. routing mobil listrik dengan pemberhentian pengisian daya)',
|
|
'admin.plugins.perm.hook:day-schedule-provider':
|
|
'Melampirkan entri waktu ke rencana hari (pemberhentian pengisian daya, jeda keamanan)',
|
|
'admin.plugins.perm.hook:day-tint-provider':
|
|
'Memberi warna pada hari di rencana hari (misalnya bagian perjalanan mana yang memuat suatu hari)',
|
|
'admin.plugins.cap.mcpTools': 'Menerbitkan alat AI',
|
|
'admin.plugins.mcpToolsTitle': 'Alat AI yang diterbitkan',
|
|
'admin.plugins.mcpToolsHint':
|
|
'Asisten dapat menjalankannya atas nama pengguna. Masing-masing bertindak dengan akses yang diberikan di atas.',
|
|
'admin.plugins.poiCategoriesTitle': 'Kategori peta yang ditambahkannya',
|
|
'admin.plugins.perm.mcp:tools':
|
|
'Menerbitkan alat yang dapat dijalankan asisten AI atas nama Anda (bertindak dengan akses yang Anda berikan ke plugin di sini, bukan milik asisten)',
|
|
'admin.plugins.perm.geolocation:read':
|
|
'Meminta lokasi terkinimu selama salah satu tampilannya terbuka (TREK membacanya dengan izin lokasi situs ini, bukan izin milik plugin sendiri)',
|
|
'admin.plugins.perm.hook:pdf-section-provider': 'Menambahkan bagian teks ke ekspor PDF perjalanan',
|
|
'admin.plugins.perm.hook:atlas-layer-provider':
|
|
'Menyorot negara di peta dunia Atlas (mis. daftar keinginan atau peringatan perjalanan)',
|
|
'admin.plugins.perm.hook:journal-entry-provider': 'Menambahkan baris tambahan (tautan, statistik) ke entri jurnal',
|
|
'admin.plugins.perm.hook:user-data':
|
|
'Menghapus atau mengekspor data yang disimpannya tentang pengguna (GDPR: penghapusan akun & permintaan data)',
|
|
'admin.plugins.perm.hook:trip-card-provider': 'Menambahkan lencana kecil (status, jumlah) ke kartu perjalanan dasbor',
|
|
'admin.plugins.perm.hook:notification-channel': 'Mengirim notifikasi Anda melalui saluran tambahan',
|
|
'admin.plugins.perm.events:subscribe':
|
|
'Bereaksi terhadap peristiwa aktivitas inti (hanya nama peristiwa + perjalanan, tidak pernah kontennya)',
|
|
'admin.plugins.perm.http:outbound': 'Membuat permintaan keluar ke host yang telah dideklarasikannya',
|
|
'admin.plugins.perm.db:read:collab':
|
|
'Membaca catatan, jajak pendapat, dan pesan obrolan dari perjalanan yang dapat diakses oleh pengguna yang bersangkutan (memerlukan add-on Collab)',
|
|
'admin.plugins.perm.db:read:files:content':
|
|
'Membaca isi (byte) berkas dari perjalanan yang dapat diakses oleh pengguna yang bersangkutan',
|
|
'admin.plugins.perm.db:create:trips': 'Membuat perjalanan baru milik pengguna yang bersangkutan',
|
|
'admin.plugins.perm.rates:read': 'Membaca kurs mata uang host yang di-cache',
|
|
'admin.plugins.updateConsentTitle': 'Pembaruan ini memerlukan izin baru',
|
|
'admin.plugins.updateConsentBody':
|
|
'{name} v{version} meminta hak akses yang belum kamu berikan. Versi baru sudah terpasang tetapi tetap nonaktif sampai kamu menyetujuinya.',
|
|
'admin.plugins.updateNewPermissions': 'Izin yang baru diminta',
|
|
'admin.plugins.updateNewEgress': 'Koneksi keluar baru',
|
|
'admin.plugins.updateApprove': 'Setujui & aktifkan',
|
|
'admin.plugins.updateLater': 'Biarkan nonaktif dulu',
|
|
'admin.plugins.updateKeptOff': 'Pembaruan terpasang — dibiarkan nonaktif sampai kamu menyetujui izin baru',
|
|
'admin.plugins.reviewedMeaning':
|
|
'"Ditinjau" berarti seorang maintainer TREK memindai plugin ini dari malware pada setiap versi — bukan untuk kualitas atau apakah plugin ini berfungsi. Ini bukan jaminan bahwa sebuah plugin tidak berbahaya.',
|
|
'admin.plugins.security.title': 'Bagaimana plugin dikungkung — dan batasannya',
|
|
'admin.plugins.security.isolationTitle': 'Setiap plugin berjalan dalam kotak terisolasi',
|
|
'admin.plugins.security.isolationBody':
|
|
'Sebuah plugin berjalan sebagai prosesnya sendiri yang terkunci dan hanya bisa membaca file-nya sendiri. Ia tidak bisa membaca database kamu, rahasia login kamu, atau kunci enkripsi kamu, tidak bisa menjalankan program lain, dan tidak bisa menulis file di mana pun. Antarmukanya berjalan dalam frame browser tersegel yang tidak bisa membaca cookie sesi kamu atau menyentuh halaman TREK di sekitarnya.',
|
|
'admin.plugins.security.permsTitle': 'Apa arti izin-izin ini',
|
|
'admin.plugins.security.permsBody':
|
|
'Izin yang ditampilkan sebelum kamu memasang adalah batas keras yang diberlakukan TREK selama plugin berjalan — secara harfiah plugin tidak bisa melakukan apa pun yang tidak ada dalam daftar. Namun izin itu memberitahumu apa yang bisa dilakukan sebuah plugin, bukan apa yang sebenarnya dilakukannya. Plugin yang diizinkan membaca perjalananmu dan menjangkau sebuah server bisa mengirimkan perjalananmu ke server itu, jadi baca izin dan host keluarnya, bukan hanya deskripsinya.',
|
|
'admin.plugins.security.limitsTitle': 'Apa yang tidak bisa kami janjikan',
|
|
'admin.plugins.security.limitsBody':
|
|
'Isolasi ini adalah batas perangkat lunak yang kuat, bukan batas yang mutlak. Sebuah plugin bertindak persis dengan hak yang kamu setujui, jadi dalam batas hak itu ia bisa berperilaku berbeda dari yang disiratkan deskripsinya, dan ia bisa mengirim data yang memang dimilikinya secara sah ke host yang telah dideklarasikannya. TREK tidak membaca atau menilai apa yang sebenarnya dilakukan oleh kode sebuah plugin.',
|
|
'admin.plugins.security.worstTitle': 'Skenario terburuk',
|
|
'admin.plugins.security.worstBody':
|
|
'Plugin berbahaya yang kamu aktifkan bisa menyalahgunakan data dan koneksi yang kamu berikan padanya — misalnya, membocorkan perjalanan yang boleh dibacanya. Ia tidak bisa mencuri kata sandi, memalsukan login admin, menjalankan perintah di servermu, atau menjangkau data yang tidak kamu berikan. Kerusakannya tetap dalam batas yang kamu setujui, dan menonaktifkan plugin akan menghentikannya.',
|
|
'admin.plugins.security.reviewedTitle': 'Apa arti "Ditinjau"',
|
|
'admin.plugins.security.reviewedBody':
|
|
'Plugin yang ditinjau telah dipindai secara manual dari malware oleh seorang maintainer TREK pada setiap versi — diperiksa untuk kode berbahaya, bukan untuk apakah plugin berfungsi dengan baik. Ini bukan janji bahwa plugin tidak berbahaya.',
|
|
'admin.plugins.security.signedTitle': 'Apa arti "Ditandatangani"',
|
|
'admin.plugins.security.signedBody':
|
|
'Checksum yang diverifikasi TREK pada setiap pemasangan membuktikan bahwa file-nya persis seperti yang dijamin registri. Tanda tangan membuktikan hal yang berbeda: bahwa file itu datang dari pembuatnya, ditandatangani dengan kunci yang hanya dia miliki. Plugin yang ditandatangani punya keduanya. Plugin tanpa tanda tangan bukan berarti tidak aman — ia hanya membawa satu jaminan lebih sedikit, dan sebagian besar plugin di registri saat ini memang belum ditandatangani.',
|
|
'admin.plugins.signed': 'Ditandatangani',
|
|
'admin.plugins.signedHint': 'Diverifikasi dengan kunci tanda tangan pembuatnya saat dipasang',
|
|
'admin.plugins.unsigned': 'Tanpa tanda tangan',
|
|
'admin.plugins.unsignedHint':
|
|
'File-nya cocok dengan yang dijamin registri, tetapi tidak ada yang mengaitkannya dengan pembuatnya. Satu jaminan lebih sedikit — bukan berarti tidak aman.',
|
|
'admin.plugins.updateBlocked': 'Pembaruan diblokir — {reason}',
|
|
'admin.plugins.reviewBlock': 'Tinjau',
|
|
'admin.plugins.retrusted': 'Kunci tanda tangan baru dipercaya — plugin diperbarui',
|
|
'admin.plugins.sig.title': 'Tanda tangan {name} tidak dapat diverifikasi',
|
|
'admin.plugins.sig.keyChangedBody':
|
|
'Kunci tanda tangan pembuatnya bukan kunci yang dipakai saat plugin ini dipasang. Pembuat memang kadang mengganti kunci — tetapi penyerang yang mengambil alih plugin ini akan terlihat persis seperti ini.',
|
|
'admin.plugins.sig.invalidBody':
|
|
'File-nya tidak cocok dengan tanda tangan pembuatnya. File itu bukan yang ditandatangani pembuatnya — entah rusak, entah diutak-atik. Ini tidak bisa dilewati.',
|
|
'admin.plugins.sig.missingBody':
|
|
'Plugin ini ditandatangani saat kamu memasangnya, tetapi versi barunya tidak menyertakan tanda tangan. TREK tidak akan diam-diam menerima kemunduran itu. Ini tidak bisa dilewati.',
|
|
'admin.plugins.sig.incompleteBody':
|
|
'Entri registrinya setengah ditandatangani: ia mendeklarasikan kunci pembuat tetapi versinya tidak membawa tanda tangan (atau sebaliknya). Itu kesalahan di sisi plugin. Ini tidak bisa dilewati.',
|
|
'admin.plugins.sig.pinnedKey': 'Kunci saat dipasang',
|
|
'admin.plugins.sig.newKey': 'Kunci yang ditawarkan sekarang',
|
|
'admin.plugins.sig.confirmOutOfBand':
|
|
'TREK tidak bisa membedakan pergantian kunci yang sah dari pengambilalihan — dari sini keduanya terlihat sama persis. Pastikan dulu kunci baru itu ke pembuatnya lewat saluran yang sudah kamu percaya sebelum kamu menerimanya. Setelah kamu menerimanya, plugin diperbarui dan kunci barunya diingat.',
|
|
'admin.plugins.sig.retrustConfirm': 'Percayai kunci baru & perbarui',
|
|
'admin.plugins.sig.cancel': 'Jangan percayai',
|
|
'admin.plugins.sig.consentUnsigned':
|
|
'Tidak ada yang mengaitkan versi ini dengan pembuatnya — file-nya cocok dengan registri, tetapi tidak membawa tanda tangan pembuat.',
|
|
'admin.plugins.security.trustTitle': 'Intinya',
|
|
'admin.plugins.security.trustBody':
|
|
'Memasang plugin sama seperti memasang aplikasi pihak ketiga mana pun: hanya tambahkan kode dari pembuat yang kamu percaya, dan jika ragu, periksa sendiri terlebih dahulu. TREK tidak bertanggung jawab atas plugin pihak ketiga.',
|
|
'admin.plugins.runtimeOn': 'Runtime aktif',
|
|
'admin.plugins.tabDiscover': 'Jelajahi',
|
|
'admin.plugins.searchPlaceholder': 'Cari plugin…',
|
|
'admin.plugins.filterType': 'Jenis',
|
|
'admin.plugins.filterStatus': 'Status', // same-as-en
|
|
'admin.plugins.sortBy': 'Urutkan',
|
|
'admin.plugins.allTypes': 'Semua jenis',
|
|
'admin.plugins.allStatuses': 'Semua',
|
|
'admin.plugins.stateOff': 'Nonaktif',
|
|
'admin.plugins.filterUpdate': 'Pembaruan tersedia',
|
|
'admin.plugins.sortName': 'Nama',
|
|
'admin.plugins.sortRecent': 'Baru diperbarui',
|
|
'admin.plugins.sortUpdates': 'Pembaruan dulu',
|
|
'admin.plugins.sortDownloads': 'Paling banyak diunduh',
|
|
'admin.plugins.updatesAvailable': '{count} pembaruan tersedia untuk plugin kamu.',
|
|
'admin.plugins.newerNeedsTrek': 'v{version} tersedia — membutuhkan TREK {range}',
|
|
'admin.plugins.versionsTitle': 'Versi',
|
|
'admin.plugins.versionPickerTitle': 'Ubah versi — {name}',
|
|
'admin.plugins.versionSwitch': 'Beralih ke {version}',
|
|
'admin.plugins.versionNeedsTrek': 'membutuhkan TREK {range}',
|
|
'admin.plugins.changeVersion': 'Ubah versi…',
|
|
'admin.plugins.noVersions': 'Tidak ada versi terpublikasi yang ditemukan di registri.',
|
|
'admin.plugins.downgradeTitle': 'Kembalikan plugin ini?',
|
|
'admin.plugins.downgradeBody':
|
|
'Beralih dari v{from} ke v{to}: data yang ditulis oleh versi yang lebih baru tetap ada, dan versi yang lebih lama mungkin tidak memahaminya.',
|
|
'admin.plugins.downgradeConfirm': 'Kembalikan',
|
|
'admin.plugins.updatesHeld': 'Pembaruan dijeda di v{version}',
|
|
'admin.plugins.resumeUpdates': 'Lanjutkan pembaruan',
|
|
'admin.plugins.updatesResumed': 'Pembaruan dilanjutkan',
|
|
'admin.plugins.updateAll': 'Perbarui semua',
|
|
'admin.plugins.noMatchInstalled': 'Tidak ada plugin terpasang yang cocok dengan pencarianmu.',
|
|
'admin.plugins.noMatchRegistry': 'Tidak ada plugin di registri yang cocok dengan pencarianmu.',
|
|
'admin.plugins.restart': 'Mulai ulang',
|
|
'admin.plugins.restarted': 'Plugin dimulai ulang',
|
|
'admin.plugins.instanceSettings': 'Pengaturan instans',
|
|
'admin.plugins.settingsSaved': 'Pengaturan disimpan',
|
|
'admin.plugins.settingsSavedRestarted': 'Pengaturan disimpan — plugin dimulai ulang',
|
|
'admin.plugins.actions': 'Tindakan',
|
|
'admin.plugins.actions.confirm': 'Jalankan tindakan ini?',
|
|
'admin.plugins.actions.inactive': 'Aktifkan plugin untuk menjalankan tindakannya',
|
|
'admin.plugins.requiredMissing': '"{field}" wajib diisi',
|
|
'admin.plugins.cap.readsTrips': 'Membaca perjalananmu',
|
|
'admin.plugins.cap.readsUsers': 'Membaca profil dasar',
|
|
'admin.plugins.cap.readsCosts': 'Membaca pengeluaranmu',
|
|
'admin.plugins.cap.readsPacking': 'Membaca daftar barang bawaan',
|
|
'admin.plugins.cap.readsFiles': 'Membaca berkas perjalanan',
|
|
'admin.plugins.cap.writesCosts': 'Menambahkan pengeluaran',
|
|
'admin.plugins.cap.writesPlaces': 'Mengedit tempat',
|
|
'admin.plugins.cap.writesDays': 'Mengedit hari',
|
|
'admin.plugins.cap.writesItinerary': 'Mengedit itinerari',
|
|
'admin.plugins.cap.writesTrips': 'Mengedit perjalanan',
|
|
'admin.plugins.cap.metadata': 'Menambahkan metadata',
|
|
'admin.plugins.cap.widget': 'Widget dasbor',
|
|
'admin.plugins.cap.heroWidget': 'Widget boarding pass',
|
|
'admin.plugins.cap.placeSlot': 'Detail tempat',
|
|
'admin.plugins.cap.daySlot': 'Detail hari',
|
|
'admin.plugins.cap.reservationSlot': 'Detail reservasi',
|
|
'admin.plugins.cap.replacesTabs': 'Menggantikan tab perencana',
|
|
'admin.plugins.cap.realtime': 'Pembaruan real-time',
|
|
'admin.plugins.cap.notificationChannel': 'Saluran notifikasi',
|
|
'admin.plugins.cap.photos': 'Menyediakan foto',
|
|
'admin.plugins.cap.calendar': 'Menyediakan acara kalender',
|
|
'admin.plugins.cap.placeDetails': 'Memperkaya tempat',
|
|
'admin.plugins.cap.search': 'Menjawab pencarian',
|
|
'admin.plugins.cap.poiCategories': 'Menambahkan kategori peta',
|
|
'admin.plugins.cap.warnings': 'Tandai masalah',
|
|
'admin.plugins.cap.mapLayers': 'Menggambar di peta',
|
|
'admin.plugins.cap.routing': 'Menyediakan routing',
|
|
'admin.plugins.cap.daySchedule': 'Menambahkan waktu rencana',
|
|
'admin.plugins.cap.dayTint': 'Mewarnai hari',
|
|
'admin.plugins.cap.geolocation': 'Membaca lokasimu',
|
|
'admin.plugins.cap.events': 'Bereaksi terhadap aktivitas',
|
|
'admin.plugins.cap.requiresAddon': 'Membutuhkan {addon}',
|
|
'admin.plugins.cap.dependsOn': 'Membutuhkan {id} {version}',
|
|
'admin.plugins.dep.addonDisabledToast': 'Aktifkan dulu addon yang diperlukan: {addons}',
|
|
'admin.plugins.dep.autoEnabled': 'Mengaktifkan dulu plugin yang diperlukan: {plugins}',
|
|
'admin.plugins.dep.downloaded': '{id} berhasil diunduh',
|
|
'admin.plugins.dep.resolveTitle': 'Dependensi tidak ada',
|
|
'admin.plugins.dep.resolveBody': '“{name}” membutuhkan plugin berikut terpasang sebelum dapat diaktifkan.',
|
|
'admin.plugins.dep.requires': 'Membutuhkan {version}',
|
|
'admin.plugins.dep.mismatch': 'Membutuhkan {wanted} — {installed} yang terpasang',
|
|
'admin.plugins.dep.download': 'Unduh',
|
|
'admin.plugins.dep.update': 'Perbarui',
|
|
'admin.plugins.dep.resolveHint': 'Mengunduh versi kompatibel terbaru, termasuk dependensinya sendiri.',
|
|
'admin.plugins.dep.trekIncompatible': 'Membutuhkan TREK {range} — server ini menjalankan {host}',
|
|
'admin.plugins.dep.trekUnknown': 'Tidak menyatakan versi TREK mana yang didukung',
|
|
'admin.plugins.installCompatible': 'Instal {version}',
|
|
'admin.plugins.installAnyway': 'Tetap pasang',
|
|
'admin.plugins.rangeBypass.pill': 'Pemeriksaan versi nonaktif',
|
|
'admin.plugins.rangeBypass.pillHint':
|
|
'TREK_PLUGINS_IGNORE_TREK_RANGE disetel — plugin dapat dipasang dan dijalankan di luar versi TREK yang dinyatakan penulisnya',
|
|
'admin.plugins.rangeBypass.title': 'Di luar versi TREK yang didukung',
|
|
'admin.plugins.rangeBypass.noticeTitle': 'Dipasang di luar versi TREK yang didukung',
|
|
'admin.plugins.rangeBypass.body':
|
|
'“{name}” menyatakan dukungan untuk TREK {range}, sedangkan server ini menjalankan {host}. TREK meloloskannya hanya karena TREK_PLUGINS_IGNORE_TREK_RANGE disetel. Penulisnya belum memperbarui rentang versi plugin untuk TREK ini, jadi tidak ada jaminan plugin ini berfungsi — dan dalam kasus yang jarang, plugin yang tidak cocok dapat merusak data TREK. Lanjutkan hanya jika Anda menerima risiko itu.',
|
|
'admin.plugins.rangeBypass.bodyUnknown':
|
|
'“{name}” tidak menyatakan versi TREK mana yang didukungnya; server ini menjalankan {host}. TREK meloloskannya hanya karena TREK_PLUGINS_IGNORE_TREK_RANGE disetel. Tidak ada tanda bahwa penulisnya mengujinya di TREK ini, jadi tidak ada jaminan plugin ini berfungsi — dan dalam kasus yang jarang, plugin yang tidak cocok dapat merusak data TREK. Lanjutkan hanya jika Anda menerima risiko itu.',
|
|
'admin.plugins.dep.trekBypassed': 'Di luar rentang TREK-nya ({range}) — pemeriksaan versi nonaktif',
|
|
'admin.plugins.dep.trekBypassedUnknown': 'Tidak menyatakan rentang TREK — pemeriksaan versi nonaktif',
|
|
'admin.plugins.incompatible': 'Tidak kompatibel',
|
|
'admin.plugins.accessTitle': 'Yang bisa diaksesnya',
|
|
'admin.plugins.connectsTitle': 'Terhubung ke',
|
|
'admin.plugins.detailsTitle': 'Detail',
|
|
'admin.plugins.noAccess': 'Tidak perlu akses khusus.',
|
|
'admin.plugins.metaVersion': 'Versi',
|
|
'admin.plugins.metaSize': 'Ukuran',
|
|
'admin.plugins.metaRequires': 'Memerlukan',
|
|
'admin.plugins.metaReviewed': 'Ditinjau pada',
|
|
'admin.plugins.downloads': 'Unduhan',
|
|
'admin.addons.title': 'Addon',
|
|
'admin.addons.subtitle': 'Aktifkan atau nonaktifkan fitur untuk menyesuaikan pengalaman TREK kamu.',
|
|
'admin.addons.catalog.packing.name': 'Daftar',
|
|
'admin.addons.catalog.packing.description': 'Daftar packing dan tugas to-do untuk perjalananmu',
|
|
'admin.addons.catalog.budget.name': 'Biaya',
|
|
'admin.addons.catalog.budget.description': 'Catat pengeluaran perjalanan dan bagi di antara para pelancong',
|
|
'admin.addons.catalog.documents.name': 'Dokumen',
|
|
'admin.addons.catalog.documents.description': 'Simpan dan kelola dokumen perjalanan',
|
|
'admin.addons.catalog.vacay.name': 'Vacay',
|
|
'admin.addons.catalog.vacay.description': 'Perencana liburan pribadi dengan tampilan kalender',
|
|
'admin.addons.catalog.atlas.name': 'Atlas',
|
|
'admin.addons.catalog.atlas.description': 'Peta dunia dengan negara yang pernah dikunjungi dan statistik perjalanan',
|
|
'admin.addons.catalog.collab.name': 'Kolaborasi',
|
|
'admin.addons.catalog.collab.description': 'Catatan, jajak pendapat, obrolan, dan saran untuk merencanakan bersama',
|
|
'admin.addons.catalog.roadtrip.name': 'Perjalanan darat',
|
|
'admin.addons.catalog.roadtrip.description':
|
|
'Rencanakan perjalanan dengan perhentian; waktu berkendara dan tiba dihitung ulang otomatis',
|
|
'admin.addons.catalog.tours.name': 'Tur',
|
|
'admin.addons.catalog.tours.description': 'Pendakian, bersepeda, dan tur lain yang mengikuti rute',
|
|
'admin.addons.catalog.memories.name': 'Foto (Immich)',
|
|
'admin.addons.catalog.memories.description': 'Bagikan foto perjalanan melalui instans Immich kamu',
|
|
'admin.addons.catalog.mcp.name': 'MCP',
|
|
'admin.addons.catalog.mcp.description': 'Model Context Protocol untuk integrasi asisten AI',
|
|
'admin.addons.subtitleBefore': 'Aktifkan atau nonaktifkan fitur untuk menyesuaikan ',
|
|
'admin.addons.subtitleAfter': ' kamu.',
|
|
'admin.addons.catalog.naver_list_import.name': 'Impor daftar Naver',
|
|
'admin.addons.catalog.naver_list_import.description': 'Impor tempat dari daftar Naver Maps yang dibagikan',
|
|
'admin.addons.catalog.airtrail.name': 'AirTrail',
|
|
'admin.addons.catalog.airtrail.description': 'Sinkronkan penerbangan dari instans AirTrail milikmu',
|
|
'admin.addons.catalog.dawarich.name': 'Dawarich',
|
|
'admin.addons.catalog.dawarich.description':
|
|
'Baca kunjungan dan rute terekam dari instans Dawarich yang dihubungkan sendiri oleh tiap pembaca',
|
|
'admin.addons.catalog.llm_parsing.name': 'Analisis AI',
|
|
'admin.addons.catalog.llm_parsing.description':
|
|
'Membaca pemesanan yang tidak dipahami pengurai bawaan, dengan model AI pilihanmu',
|
|
'admin.addons.catalog.ai_assistant.name': 'Asisten AI',
|
|
'admin.addons.catalog.ai_assistant.description':
|
|
'Obrolan di setiap perjalanan yang menjawab pertanyaan dan menyarankan perubahan yang kamu konfirmasi',
|
|
'admin.addons.llm.vision.auto': 'Otomatis',
|
|
'admin.addons.llm.vision.on': 'Ya',
|
|
'admin.addons.llm.vision.off': 'Tidak',
|
|
'admin.addons.llm.vision.hintLocal': 'Otomatis menanyakan ke server Ollama apakah model ini membaca gambar.',
|
|
'admin.addons.llm.vision.hintCloud':
|
|
'Otomatis berarti tidak untuk model cloud. Pilih Ya jika model ini membaca gambar.',
|
|
'admin.addons.enabled': 'Aktif',
|
|
'admin.addons.disabled': 'Nonaktif',
|
|
'admin.addons.type.trip': 'Perjalanan',
|
|
'admin.addons.type.global': 'Global', // same-as-en
|
|
'admin.addons.type.integration': 'Integrasi',
|
|
'admin.addons.tripHint': 'Tersedia sebagai tab di setiap perjalanan',
|
|
'admin.addons.globalHint': 'Tersedia sebagai bagian mandiri di navigasi utama',
|
|
'admin.addons.integrationHint': 'Layanan backend dan integrasi API tanpa halaman tersendiri',
|
|
'admin.addons.toast.updated': 'Addon diperbarui',
|
|
'admin.addons.toast.error': 'Gagal memperbarui addon',
|
|
'admin.addons.group.count': '{enabled} dari {total} aktif',
|
|
'admin.addons.search': 'Cari add-on',
|
|
'admin.addons.filter': 'Tampilkan',
|
|
'admin.addons.filter.all': 'Semua',
|
|
'admin.addons.filter.on': 'Aktif',
|
|
'admin.addons.filter.off': 'Nonaktif',
|
|
'admin.addons.noMatch': 'Tidak ada add-on yang cocok dengan pencarian atau filter.',
|
|
'admin.addons.subOptions': '{count} opsi',
|
|
'admin.addons.subOptionsOn': '{count} aktif',
|
|
'admin.toursWanderer.title': 'wanderer',
|
|
'admin.toursWanderer.subtitle':
|
|
'Pengguna dapat menghubungkan instans wanderer milik sendiri dan mengimpor jalurnya sebagai tur',
|
|
'admin.toursHikingMap.title': 'Peta pendakian (OpenHikingMap)',
|
|
'admin.toursHikingMap.subtitle':
|
|
'Menawarkan OpenHikingMap sebagai peta dasar di perencana tur. Gratis untuk instalasi nonkomersial hingga 500.000 ubin per bulan; instalasi komersial atau yang lebih besar perlu perjanjian dengan openmaps.fr terlebih dahulu',
|
|
'admin.toursCycleMap.title': 'Peta sepeda (CyclOSM)',
|
|
'admin.toursCycleMap.subtitle':
|
|
'Menawarkan CyclOSM sebagai peta dasar untuk tur sepeda di perencana tur. OpenStreetMap France menyediakannya untuk penggunaan wajar; instalasi dengan penggunaan berat atau komersial mematikannya atau terlebih dahulu membuat kesepakatan dengan operator',
|
|
'admin.toursSkiRouting.title': 'Router lintasan',
|
|
'admin.toursSkiRouting.subtitle':
|
|
'Merencanakan tur ski di sepanjang lintasan, lift, dan jalur dengan data lintasan dari server Places. Saat dimatikan, ruas tur ski digambar lurus',
|
|
'admin.addons.noAddons': 'Tidak ada addon yang tersedia',
|
|
'admin.weather.title': 'Data Cuaca',
|
|
'admin.weather.badge': 'Sejak 24 Maret 2026',
|
|
'admin.weather.description':
|
|
'TREK menggunakan Open-Meteo sebagai sumber data cuaca. Open-Meteo adalah layanan cuaca gratis dan open-source — tidak perlu kunci API.',
|
|
'admin.weather.forecast': 'Prakiraan 16 hari',
|
|
'admin.weather.forecastDesc': 'Sebelumnya 5 hari (OpenWeatherMap)',
|
|
'admin.weather.climate': 'Data iklim historis',
|
|
'admin.weather.climateDesc': 'Rata-rata dari 85 tahun terakhir untuk hari di luar prakiraan 16 hari',
|
|
'admin.weather.requests': '10.000 permintaan / hari',
|
|
'admin.weather.requestsDesc': 'Gratis, tidak perlu kunci API',
|
|
'admin.weather.locationHint':
|
|
'Cuaca didasarkan pada tempat pertama dengan koordinat di setiap hari. Jika tidak ada tempat yang ditetapkan untuk suatu hari, tempat mana pun dari daftar tempat digunakan sebagai referensi.',
|
|
'admin.tabs.mcpTokens': 'Akses MCP',
|
|
'admin.mcpTokens.title': 'Akses MCP',
|
|
'admin.mcpTokens.subtitle': 'Kelola sesi OAuth dan token API di semua pengguna',
|
|
'admin.mcpTokens.sectionTitle': 'Token API',
|
|
'admin.mcpTokens.owner': 'Pemilik',
|
|
'admin.mcpTokens.tokenName': 'Nama Token',
|
|
'admin.mcpTokens.created': 'Dibuat',
|
|
'admin.mcpTokens.lastUsed': 'Terakhir Digunakan',
|
|
'admin.mcpTokens.never': 'Tidak pernah',
|
|
'admin.mcpTokens.empty': 'Belum ada token MCP yang dibuat',
|
|
'admin.mcpTokens.deleteTitle': 'Hapus Token',
|
|
'admin.mcpTokens.deleteMessage':
|
|
'Ini akan mencabut token segera. Pengguna akan kehilangan akses MCP melalui token ini.',
|
|
'admin.mcpTokens.deleteSuccess': 'Token dihapus',
|
|
'admin.mcpTokens.deleteError': 'Gagal menghapus token',
|
|
'admin.mcpTokens.loadError': 'Gagal memuat token',
|
|
'admin.oauthSessions.sectionTitle': 'Sesi OAuth',
|
|
'admin.oauthSessions.clientName': 'Klien',
|
|
'admin.oauthSessions.owner': 'Pemilik',
|
|
'admin.oauthSessions.scopes': 'Cakupan',
|
|
'admin.oauthSessions.created': 'Dibuat',
|
|
'admin.oauthSessions.empty': 'Tidak ada sesi OAuth aktif',
|
|
'admin.oauthSessions.revokeTitle': 'Cabut Sesi',
|
|
'admin.oauthSessions.revokeMessage': 'Ini akan segera mencabut sesi OAuth. Client akan kehilangan akses MCP.',
|
|
'admin.oauthSessions.revokeSuccess': 'Sesi dicabut',
|
|
'admin.oauthSessions.revokeError': 'Gagal mencabut sesi',
|
|
'admin.oauthSessions.loadError': 'Gagal memuat sesi OAuth',
|
|
'admin.tabs.github': 'GitHub',
|
|
'admin.audit.subtitle': 'Peristiwa sensitif keamanan dan administrasi (backup, pengguna, MFA, pengaturan).',
|
|
'admin.audit.empty': 'Belum ada entri audit.',
|
|
'admin.audit.refresh': 'Segarkan',
|
|
'admin.audit.loadMore': 'Muat lebih banyak',
|
|
'admin.audit.showing': '{count} dimuat, {total} total',
|
|
'admin.audit.col.time': 'Waktu',
|
|
'admin.audit.col.user': 'Pengguna',
|
|
'admin.audit.col.action': 'Tindakan',
|
|
'admin.audit.col.resource': 'Sumber Daya',
|
|
'admin.audit.col.ip': 'IP',
|
|
'admin.audit.col.details': 'Detail',
|
|
'admin.github.title': 'Riwayat Rilis',
|
|
'admin.github.subtitle': 'Pembaruan terbaru dari {repo}',
|
|
'admin.github.latest': 'Terbaru',
|
|
'admin.github.prerelease': 'Pra-rilis',
|
|
'admin.github.showDetails': 'Tampilkan detail',
|
|
'admin.github.hideDetails': 'Sembunyikan detail',
|
|
'admin.github.loadMore': 'Muat lebih banyak',
|
|
'admin.github.loading': 'Memuat...',
|
|
'admin.github.error': 'Gagal memuat rilis',
|
|
'admin.github.by': 'oleh',
|
|
'admin.github.support': 'Bantu saya terus mengembangkan TREK',
|
|
'admin.update.available': 'Pembaruan tersedia',
|
|
'admin.update.text': 'TREK {version} tersedia. Kamu menggunakan {current}.',
|
|
'admin.update.button': 'Lihat di GitHub',
|
|
'admin.update.install': 'Pasang Pembaruan',
|
|
'admin.update.confirmTitle': 'Pasang Pembaruan?',
|
|
'admin.update.confirmText':
|
|
'TREK akan diperbarui dari {current} ke {version}. Server akan restart otomatis setelahnya.',
|
|
'admin.update.dataInfo':
|
|
'Semua datamu (perjalanan, pengguna, kunci API, unggahan, Vacay, Atlas, anggaran) akan dipertahankan.',
|
|
'admin.update.warning': 'Aplikasi akan tidak tersedia sebentar selama restart.',
|
|
'admin.update.confirm': 'Perbarui Sekarang',
|
|
'admin.update.installing': 'Memperbarui…',
|
|
'admin.update.success': 'Pembaruan terpasang! Server sedang restart…',
|
|
'admin.update.failed': 'Pembaruan gagal',
|
|
'admin.update.backupHint': 'Kami merekomendasikan membuat backup sebelum memperbarui.',
|
|
'admin.update.backupLink': 'Pergi ke Backup',
|
|
'admin.update.howTo': 'Cara Memperbarui',
|
|
'admin.update.dockerText':
|
|
'Instans TREK kamu berjalan di Docker. Untuk memperbarui ke {version}, jalankan perintah berikut di servermu:',
|
|
'admin.update.nonDockerText':
|
|
'Instans TREK ini tidak berjalan di Docker. Untuk memperbarui ke {version}, jalankan ulang metode instalasi atau pembaruan yang kamu gunakan — misalnya, pada Proxmox Community Scripts jalankan pembaruan dari konsol LXC:',
|
|
'admin.update.wikiLink': 'Buka panduan pembaruan',
|
|
'admin.update.reloadHint': 'Muat ulang halaman dalam beberapa detik.',
|
|
'admin.tabs.permissions': 'Izin',
|
|
'admin.addons.catalog.journey.name': 'Jurnal perjalanan',
|
|
'admin.addons.catalog.journey.description': 'Pelacakan perjalanan & jurnal dengan check-in, foto, dan cerita harian',
|
|
'admin.addons.catalog.collections.name': 'Koleksi',
|
|
'admin.addons.catalog.collections.description':
|
|
'Kumpulkan tempat dari perjalanan mana pun ke dalam daftar bernama dan gunakan lagi',
|
|
'admin.passkey.title': 'Login dengan passkey',
|
|
'admin.passkey.cardHint': 'Izinkan pengguna masuk dengan passkey (WebAuthn). Nonaktif secara default.',
|
|
'admin.passkey.login': 'Aktifkan login dengan passkey',
|
|
'admin.passkey.loginHint':
|
|
'Tampilkan opsi "Masuk dengan passkey" dan izinkan pengguna mendaftarkan passkey di pengaturan mereka.',
|
|
'admin.passkey.notConfigured':
|
|
'Belum ada domain WebAuthn yang terdeteksi untuk deployment ini. Atur APP_URL atau Relying Party ID di bawah — passkey tetap tersembunyi sampai itu dilakukan.',
|
|
'admin.passkey.rpId': 'Relying Party ID (domain)',
|
|
'admin.passkey.rpIdHint':
|
|
'Domain murni tempat passkey diikat, mis. trek.example.org. Kosongkan untuk mengambilnya dari APP_URL. Mengubahnya nanti akan membatalkan passkey yang sudah ada.',
|
|
'admin.passkey.origins': 'Origin yang diizinkan',
|
|
'admin.passkey.originsHint':
|
|
'Origin lengkap dipisahkan koma, mis. https://trek.example.org. Kosongkan untuk menggunakan APP_URL.',
|
|
'admin.passkey.reset': 'Reset passkey',
|
|
'admin.passkey.resetHint':
|
|
'Hapus semua passkey pengguna ini (mis. saat perangkat hilang). Mereka tetap bisa masuk dengan kata sandi mereka.',
|
|
'admin.passkey.resetConfirm': 'Hapus semua passkey untuk {name}?',
|
|
'admin.passkey.resetDone': '{count} passkey dihapus',
|
|
'admin.defaultSettings.mapProvider': 'Mesin peta',
|
|
'admin.defaultSettings.mapProviderHint':
|
|
'Peta default untuk semua orang di instance ini. Setiap pengguna tetap dapat menggantinya di pengaturan masing-masing.',
|
|
'admin.defaultSettings.providerLeaflet': 'Standar (gratis)',
|
|
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
|
|
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
|
|
'admin.defaultSettings.mapboxToken': 'Token Mapbox bersama',
|
|
'admin.defaultSettings.mapboxTokenHint':
|
|
'Digunakan untuk setiap pengguna yang belum memasukkan token mereka sendiri — sehingga seluruh instance mendapatkan Mapbox tanpa perlu membagikan kunci satu per satu. Disimpan dalam bentuk terenkripsi.',
|
|
'admin.defaultSettings.mapboxStyle': 'Gaya peta',
|
|
'admin.defaultSettings.mapboxStylePlaceholder': 'Pilih gaya…',
|
|
'admin.defaultSettings.mapbox3d': 'Bangunan & medan 3D',
|
|
'admin.defaultSettings.mapboxQuality': 'Mode kualitas tinggi',
|
|
'admin.defaultSettings.cartoKey': 'Kunci CARTO bersama',
|
|
'admin.defaultSettings.cartoKeyHint':
|
|
'Digunakan untuk setiap pengguna yang belum memasukkan kunci mereka sendiri, sehingga seluruh instance mendapatkan ubin CARTO tanpa tanda air. Disimpan dalam bentuk terenkripsi.',
|
|
'admin.group.users': 'Pengguna',
|
|
'admin.group.config': 'Konfigurasi',
|
|
'admin.group.integration': 'Integrasi',
|
|
'admin.group.maintenance': 'Pemeliharaan',
|
|
'admin.invite.tripLabel': 'Tambahkan ke perjalanan (opsional)',
|
|
'admin.invite.tripNone': 'Tanpa perjalanan',
|
|
'admin.invite.tripHint': 'Pengguna baru otomatis ditambahkan ke perjalanan ini saat mereka mendaftar melalui tautan.',
|
|
'admin.invite.boundTo': 'menambahkan ke {trip}',
|
|
'admin.placesUsageTitle': 'Untuk apa kunci ini dipakai',
|
|
'admin.mapsKeyHintShort': 'Menambahkan foto, penilaian, dan jam buka. Setiap pencarian lalu ke Google.',
|
|
'admin.amapKeyHintShort': 'Untuk pencarian tempat di Tiongkok daratan. Perlu kunci layanan web, bukan kunci JS API.',
|
|
'admin.collab.links.subtitle': 'Tautan bersama dan penanda',
|
|
'admin.paddleRegions.title': 'Data perairan dayung',
|
|
'admin.paddleRegions.hint':
|
|
'Bendung, pintu air, dan aturan mendayung dari OpenStreetMap, dibaca per wilayah dan dibaca ulang setiap bulan.',
|
|
'admin.paddleRegions.search': 'Tambah wilayah',
|
|
'admin.paddleRegions.searchPlaceholder': 'Cari di Geofabrik, misalnya Oberpfalz',
|
|
'admin.paddleRegions.noHits': 'Tidak ada wilayah dengan nama itu',
|
|
'admin.paddleRegions.added': 'Ditambahkan',
|
|
'admin.paddleRegions.empty':
|
|
'Belum ada wilayah. Tur dayung akan menampilkan bahwa tidak ada data rintangan yang diketahui.',
|
|
'admin.paddleRegions.status.queued': 'Menunggu',
|
|
'admin.paddleRegions.status.importing': 'Membaca',
|
|
'admin.paddleRegions.status.ready': 'Siap',
|
|
'admin.paddleRegions.status.failed': 'Gagal',
|
|
'admin.paddleRegions.phase.download': 'Mengunduh',
|
|
'admin.paddleRegions.phase.read': 'Membaca',
|
|
'admin.paddleRegions.objects': '{count} objek',
|
|
'admin.paddleRegions.asOf': 'Per {date}',
|
|
'admin.paddleRegions.keptData': 'Data yang dibaca sebelumnya tetap digunakan.',
|
|
'admin.paddleRegions.refresh': 'Baca ulang',
|
|
'admin.paddleRegions.remove': 'Hapus wilayah',
|
|
'admin.paddleRegions.removeMessage':
|
|
'{name} beserta data rintangannya akan dihapus. Tur dayung di sana tidak akan menampilkan data lagi.',
|
|
'admin.paddleRegions.retry': 'Coba lagi',
|
|
'admin.paddleRegions.offline': 'Wilayah hanya bisa dikelola saat ada koneksi.',
|
|
'admin.paddleRegions.catalogUnavailable': 'Geofabrik tidak dapat dijangkau saat ini. Coba lagi nanti.',
|
|
'admin.paddleRegions.attribution':
|
|
'Data © kontributor OpenStreetMap (ODbL), ekstrak regional dari Geofabrik. Dibaca ulang setiap tanggal 3 tiap bulan.',
|
|
'admin.paddleRegions.toast.added': 'Wilayah ditambahkan. TREK membacanya di latar belakang.',
|
|
'admin.paddleRegions.toast.removed': 'Wilayah dihapus',
|
|
'admin.paddleRegions.phase.build': 'Membangun jaringan perairan',
|
|
'admin.paddleRegions.network.km': '{km} km perairan',
|
|
'admin.paddleRegions.network.lakes': '{count} danau',
|
|
'admin.paddleRegions.network.portages': '{count} tempat angkut terpetakan',
|
|
'admin.paddleRegions.network.inferred': '{count} angkutan perkiraan',
|
|
'admin.paddleRegions.network.locks': '{count} pintu air',
|
|
'admin.paddleRegions.network.gaps': '{count} celah dijembatani',
|
|
'admin.paddleRegions.network.missing': 'Tanpa jaringan perairan',
|
|
'admin.paddleRegions.network.missingHint': 'Baca ulang wilayah untuk membangun jaringan yang diikuti rute dayung.',
|
|
'admin.paddleRegions.auto.title': 'Muat wilayah otomatis',
|
|
'admin.paddleRegions.auto.mode.auto': 'Otomatis',
|
|
'admin.paddleRegions.auto.mode.ask': 'Atas permintaan',
|
|
'admin.paddleRegions.auto.mode.off': 'Mati',
|
|
'admin.paddleRegions.auto.modeHint.auto':
|
|
'Saat seseorang merencanakan tur dayung di tempat yang belum punya data air, TREK langsung memuat wilayah terkecil yang cocok, sampai batas ukuran dan hanya beberapa per hari. Yang lebih besar menunggu di sini sebagai permintaan. Hanya nama wilayah yang dikirim ke Geofabrik, tidak pernah lokasinya.',
|
|
'admin.paddleRegions.auto.modeHint.ask':
|
|
'Setiap wilayah baru menunggu di sini sampai admin mengizinkannya. Saat admin sendiri merencanakan, wilayah langsung dimuat.',
|
|
'admin.paddleRegions.auto.modeHint.off':
|
|
'TREK tidak memuat apa pun sendiri dan tidak meminta apa pun. Tambahkan wilayah di sini secara manual.',
|
|
'admin.paddleRegions.auto.maxSize': 'Wilayah terbesar yang dimuat otomatis',
|
|
'admin.paddleRegions.auto.maxSizeHint':
|
|
'Wilayah yang lebih besar menunggu di sini sebagai permintaan. Membaca wilayah butuh beberapa menit dan memakai memori selama berjalan.',
|
|
'admin.paddleRegions.requests.title': 'Diminta',
|
|
'admin.paddleRegions.requests.reason.ask': 'Atas permintaan',
|
|
'admin.paddleRegions.requests.reason.too_large': 'Terlalu besar',
|
|
'admin.paddleRegions.requests.reason.limit': 'Batas harian',
|
|
'admin.paddleRegions.requests.declined': 'Ditolak',
|
|
'admin.paddleRegions.requests.by': 'oleh {user}',
|
|
'admin.paddleRegions.requests.approve': 'Muat',
|
|
'admin.paddleRegions.requests.decline': 'Tolak',
|
|
'admin.paddleRegions.origin.auto': 'Otomatis',
|
|
'admin.paddleRegions.origin.autoHint': 'TREK memuat wilayah ini sendiri untuk tur dayung yang direncanakan di sana.',
|
|
'admin.mfa.reset': 'Setel ulang 2FA',
|
|
'admin.mfa.resetHint':
|
|
'Menonaktifkan autentikasi dua faktor untuk pengguna ini, misalnya setelah ponsel hilang. Pengguna dikeluarkan dari semua sesi dan dapat mengaturnya lagi setelah masuk dengan kata sandinya.',
|
|
'admin.mfa.resetConfirm': 'Nonaktifkan autentikasi dua faktor untuk {name}?',
|
|
'admin.mfa.resetDone': 'Autentikasi dua faktor telah diatur ulang',
|
|
'admin.danger.title': 'Zona Berbahaya',
|
|
'admin.rotateJwt.title': 'Putar Secret JWT',
|
|
'admin.rotateJwt.hint': 'Buat secret penandatanganan JWT baru. Semua sesi aktif akan langsung tidak berlaku.',
|
|
'admin.rotateJwt.confirm': 'Putar & Keluar',
|
|
'admin.rotateJwt.warning': 'Peringatan: tindakan ini akan membatalkan semua sesi dan mengeluarkan Anda.',
|
|
'admin.rotateJwt.body':
|
|
'Secret JWT baru akan dibuat segera. Setiap pengguna yang sedang masuk, termasuk Anda, akan dikeluarkan dan harus masuk lagi.',
|
|
'admin.oidcDisplayNamePlaceholder': 'mis. Google, Authentik, Keycloak',
|
|
'admin.oidcDiscoveryUrl': 'URL discovery (opsional)',
|
|
'admin.oidcDiscoveryUrlHint':
|
|
'Menggantikan URL discovery yang dibuat otomatis. Diperlukan untuk penyedia seperti Authentik yang endpoint-nya tidak berada di {path}.',
|
|
'admin.smtp.skipTls': 'Lewati pemeriksaan sertifikat TLS',
|
|
'admin.smtp.skipTlsHint': 'Aktifkan untuk sertifikat self-signed pada server email lokal',
|
|
'admin.demoBaseline.title': 'Baseline Demo',
|
|
'admin.demoBaseline.hint':
|
|
'Simpan kondisi saat ini sebagai titik reset setiap jam. Semua perjalanan dan pengaturan admin akan dipertahankan.',
|
|
'admin.demoBaseline.button': 'Simpan Baseline',
|
|
'admin.demoBaseline.saved': 'Baseline disimpan! Reset akan mengembalikan ke kondisi ini.',
|
|
'admin.demoBaseline.failed': 'Gagal menyimpan baseline',
|
|
'admin.invite.deleteTitle': 'Hapus tautan undangan',
|
|
'admin.invite.deleteConfirm':
|
|
'Hapus tautan undangan ini? Siapa pun yang belum menggunakannya tidak bisa lagi mendaftar dengannya.',
|
|
'admin.packingTemplates.deleteTemplateTitle': 'Hapus templat',
|
|
'admin.packingTemplates.deleteTemplateConfirm': 'Hapus templat "{name}" beserta semua kategori dan itemnya?',
|
|
'admin.packingTemplates.deleteCategoryTitle': 'Hapus kategori',
|
|
'admin.packingTemplates.deleteCategoryConfirm': 'Hapus kategori "{name}" beserta semua itemnya?',
|
|
'admin.rotateJwt.button': 'Putar Ulang',
|
|
'admin.addons.ai.name': 'AI', // same-as-en
|
|
'admin.addons.ai.description':
|
|
'Satu koneksi untuk asisten dan impor pemesanan. MCP memungkinkan aplikasi AI lain memakai TREK.',
|
|
'admin.addons.ai.setup': 'Atur AI',
|
|
'admin.addons.ai.dialogSub':
|
|
'Koneksi yang dipakai bersama oleh asisten dan penguraian AI, serta apa yang boleh dilakukan masing-masing.',
|
|
'admin.addons.ai.tab.connection': 'Koneksi',
|
|
'admin.addons.ai.parsing.readsWith': 'Membaca pemesanan dengan',
|
|
'admin.addons.ai.parsing.own': 'Koneksi sendiri',
|
|
'admin.addons.ai.parsing.ownHint': 'Dipakai sebagai pengganti koneksi bersama.',
|
|
'admin.addons.ai.parsing.useShared': 'Gunakan koneksi bersama',
|
|
'admin.addons.ai.parsing.sharedTag': 'Bersama',
|
|
'admin.addons.ai.parsing.perUser': 'Setiap orang membaca dengan koneksinya sendiri dari pengaturannya.',
|
|
'admin.addons.ai.parsing.none': 'Belum ada koneksi. Atur satu untuk semua, atau beri penguraian AI koneksi sendiri.',
|
|
'admin.addons.ai.parsing.setupOwn': 'Gunakan yang lain',
|
|
'admin.addons.ai.parsing.installed': 'Terpasang di server',
|
|
'admin.addons.ai.parsing.refresh': 'Muat ulang',
|
|
'admin.addons.ai.parsing.noModels': 'Belum ada model terpasang. Unduh satu di bawah.',
|
|
'admin.addons.ai.parsing.pullTitle': 'Unduh model yang disarankan',
|
|
'admin.addons.ai.parsing.pull': 'Unduh',
|
|
'admin.addons.ai.parsing.pulling': 'Mengunduh…',
|
|
'admin.addons.ai.parsing.use': 'Gunakan',
|
|
'admin.addons.ai.parsing.selected': 'Dipilih',
|
|
'admin.addons.ai.parsing.pulled': 'Model diunduh',
|
|
'admin.addons.ai.parsing.pullFailed': 'Model tidak dapat diunduh',
|
|
'admin.addons.ai.parsing.unreachable': 'Server lokal tidak dapat dijangkau',
|
|
'admin.addons.ai.parsing.apiKeyOptional': 'Biasanya tidak perlu',
|
|
};
|
|
export default admin;
|