Files
TREK/shared/src/i18n/id/admin.ts
T
Renzo Beux c89d2bf3a1 Add a dayTintProvider plugin hook
Lets a plugin colour-code days in the Plan sidebar. trip-segments can
already announce "Kanazawa begins" in the day plan, but it can't make
day 12 look like it belongs to Kanazawa.

dayScheduleProvider can't cover this: it renders a fixed row, and it's
capped at 60 items per provider, so one item per day would tint the
first 60 days of a six-month trip and silently stop. This hook is
bounded by day count instead.

GET /api/day-tints/:tripId returns per-day tones for three regions of a
day card - the number badge (also the mobile day chip), the header row,
and the expanded activity list. `tone` is a shorthand filling every
region a contribution doesn't name; unnamed regions render as they do
today. Tones only, never hex, so the host can pick the alpha per theme
and per region.

One contribution per day, resolved whole: first entry wins within a
provider, first granted provider wins across plugins.
2026-08-05 15:28:15 +02:00

691 lines
47 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)',
'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)',
'admin.notifications.webhookPanel.title': 'Webhook',
'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': 'Admin Webhook',
'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': 'Admin Ntfy',
'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',
'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.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': 'Backup',
'admin.tabs.notifications': 'Notifikasi',
'admin.tabs.audit': 'Audit',
'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',
'admin.table.role': 'Peran',
'admin.table.created': 'Dibuat',
'admin.table.lastLogin': 'Login Terakhir',
'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}"? Semua perjalanan akan dihapus secara permanen.',
'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': 'Opsional. Mengaktifkan data tempat yang lebih lengkap seperti foto dan cuaca.',
'admin.mapsKey': 'Kunci API Google Maps',
'admin.mapsKeyHint': 'Diperlukan untuk pencarian tempat. Dapatkan di console.cloud.google.com',
'admin.mapsKeyHintLong':
'Tanpa kunci API, OpenStreetMap digunakan untuk pencarian tempat. Dengan kunci API Google, foto, rating, dan jam buka juga bisa dimuat. Dapatkan 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.validateKey': 'Uji',
'admin.keyValid': 'Terhubung',
'admin.keyInvalid': 'Tidak valid',
'admin.keySaved': 'Kunci API disimpan',
'admin.oidcTitle': 'Single Sign-On (OIDC)',
'admin.oidcSubtitle': 'Izinkan login melalui penyedia eksternal seperti Google, Apple, Authentik, atau Keycloak.',
'admin.oidcDisplayName': 'Nama Tampilan',
'admin.oidcIssuer': 'Issuer URL',
'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.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.bagTracking.title': 'Pelacak Tas',
'admin.bagTracking.subtitle': 'Aktifkan berat dan penugasan tas untuk item packing',
'admin.collab.chat.title': 'Chat',
'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': 'Plugins',
'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',
'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': 'Update → v{version}',
'admin.plugins.enabledToggle': 'Aktifkan plugin',
'plugins.notFound': 'Plugin tidak ditemukan',
'admin.plugins.title': 'Plugins',
'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': 'Error',
'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: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.perm.geolocation:read':
'Meminta lokasi terkinimu selama salah satu tampilannya terbuka (browser-mu tetap akan meminta izin terlebih dahulu)',
'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',
'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.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.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.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.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': 'Lacak pengeluaran dan rencanakan anggaran perjalananmu',
'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': 'Collab',
'admin.addons.catalog.collab.description': 'Catatan real-time, polling, dan chat untuk perencanaan perjalanan',
'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.enabled': 'Aktif',
'admin.addons.disabled': 'Nonaktif',
'admin.addons.type.trip': 'Perjalanan',
'admin.addons.type.global': 'Global',
'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.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': 'Journey',
'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':
'Pustaka tempat pribadi — simpan tempat lintas perjalanan ke dalam daftar bernama, salin ke perjalanan mana pun, bagikan dengan orang lain',
'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': 'Menghapus {count} passkey',
'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.group.users': 'Users',
'admin.group.config': 'Configuration',
'admin.group.integration': 'Integrations',
'admin.group.maintenance': 'Maintenance',
'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}',
};
export default admin;