Files
TREK/shared/src/i18n/id/admin.ts
T
Maurice 12745cd03c feat(plugins): honest security info in the admin panel + update consent UI
Reworks how the plugins panel talks about safety, since the old copy
oversold it. Drops the "install at your own risk" banner and the generic
trust note, and replaces them with:

- a collapsible security section that lays out plainly how a plugin is
  contained, what the permissions actually mean (a hard limit on what a
  plugin CAN do, not a promise of what it does), where the limits are,
  and what a hostile plugin could do at worst.
- a short note on what "Reviewed" means: a maintainer scanned it for
  malware each version, not for quality — not a guarantee it's harmless.
- the consent dialog for the update flow: when an update asks for rights
  you never granted, it lists the new permissions and outbound hosts and
  makes you approve before the plugin turns back on.

Full copy in all 22 locales.
2026-07-04 19:11:23 +02:00

450 lines
30 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.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.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.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.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.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.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.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.http:outbound': 'Membuat permintaan keluar ke host yang telah dideklarasikannya',
'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.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.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': 'Anggaran',
'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;