const driftStrings = { nav: { searchLanguages: 'Cari bahasa...', noLanguages: 'Tidak ada bahasa ditemukan', }, mapPage: { searchSuggestPlaces: 'Tempat', }, mapUi: { firstRunTitle: 'Mulai', firstRunTip: 'Ketuk pin mana saja untuk menjelajah. Tanpa pengaturan — spot di sekitar tinggal sekali ketuk.', firstRunAddSpot: 'Tambahkan spot pertamamu', firstRunJoinCrew: 'Gabung crew', firstRunStartCrew: 'Mulai crew-mu', firstRunWallet: 'Siapkan dompetmu', forecastDays: 'Prakiraan {{count}} Hari', }, spotUi: { forecastDays: 'Prakiraan {{count}} Hari', }, marketUi: { trades: { stateRevoked: 'dicabut', stateVerifying: 'memverifikasi', }, loadFailed: 'Tidak dapat menjangkau relay. Periksa koneksimu dan coba lagi.', statusPending: 'tertunda', offers: { closeDeal: 'Tutup kesepakatan', loadFailed: 'Tidak dapat memuat tawaran. Periksa koneksimu dan coba lagi.', }, pay: { nonSats: 'Tawaran ini dihargai dalam {{currency}}. Pembayaran dalam aplikasi hanya sats. Selesaikan langsung dengan penjual.', unsupported: 'Kode pembayaran ini (permintaan Cashu) belum didukung. Minta penjual faktur Lightning atau alamat.', }, escrowRequest: { lockedNotSent: 'Dana terkunci di escrow dan tersimpan di perangkat ini, tetapi permintaannya tidak terkirim. Buka lagi listing untuk mencoba lagi. Jangan bayar lagi.', mintLabel: 'Mint (tempat dana terkunci)', sellerMintHint: 'Penjual lebih memilih mint ini; dana yang terkunci di sini paling mudah mereka tukarkan.', mintHint: 'Escrow berada di mint ini. Penjual menukarkan di sini, jadi pilih yang kalian berdua percayai.', noMints: 'Tidak ada mint tersedia', p2pkUnsupported: 'Mint ini tidak mengiklankan dukungan P2PK (NUT-11), jadi escrow tidak bisa dikunci di sini. Pilih mint lain.', }, }, labUi: { offerClothing: 'Tawarkan Pakaian', tabClothing: 'Pakaian', empty: { clothingTitle: 'Belum ada desainer pakaian', clothingBody: 'Jadilah yang pertama menawarkan pakaian kustom, seragam tim, dan apparel untuk scene.', transportTitle: 'Belum ada penyedia transportasi', transportBody: 'Memindahkan skater, perlengkapan, atau kargo? Tawarkan mobil, van, taksi, sepeda, helikopter, pesawat, atau perahu Anda.', }, craftFields: { sizing: 'Rentang Ukuran', samples: 'Sampel / Prototipe', customization: 'Kustomisasi', capacity: 'Kapasitas', cargo: 'Ruang kargo', coverage: 'Jangkauan / rute', availability: 'Ketersediaan', base: 'Area pangkalan', accessibility: 'Aksesibilitas', }, tabTransport: 'Transportasi', filterVehicles: 'Kendaraan', filterTransportServices: 'Layanan', filterCapabilities: 'Kemampuan', filterCapacity: 'Kapasitas', filterCoverage: 'Jangkauan', offerTransport: 'Tawarkan transportasi', labLink: { transport: 'Transportasi', designer: 'Pakaian', }, detail: { noun: { transport: 'penyedia transportasi', }, skillsTitle: { transport: 'Kendaraan & layanan', }, }, }, socialUi: { coordinator: { ourDefaultTitle: 'Koordinator SkateSpots', ourDefaultDesc: 'SkateSpots menjalankan koordinator di relay.skate-spots.org. Gunakan secara default, atau jalankan milikmu sendiri — koordinator hanya pernah melihat ciphertext dan metadata, tidak pernah pesanmu.', useOurs: 'Gunakan koordinator SkateSpots', }, crewCoordinator: { encryptedChat: 'Chat terenkripsi', privateChatName: 'Chat privat', privateChatDesc: 'Chat grup forward-secret (MLS) melalui koordinator.', privateChatDescFull: 'Chat privat dibuat sekali oleh admin, lalu anggota bergabung.', chatRowDesc: 'Semua orang di crew — disegel ke kunci setiap anggota (NIP-17).', openChat: 'Buka', setUpChat: 'Siapkan', joinChat: 'Gabung', checking: 'Memeriksa…', openInAnotherApp: 'Buka di aplikasi lain', openInCordnWeb: 'Cordn (web)', openCordnGroup: 'Buka chat crew', copyForStaircase: 'Salin untuk Staircase', }, dms: { refresh: 'Muat ulang', privateRooms: 'Ruang privat', crews: 'Crew', crewFounder: 'Pendiri', crewMember: 'Anggota', crewOpen: 'Buka', crewSetUp: 'Siapkan', }, form: { cordnGroup: 'Grup Cordn', cordnGroupHint: 'Opsional: tempel tautan grup dari Staircase atau Cordn web. Crew-mu lalu mendapat chat MLS ujung-ke-ujung sungguhan, dihosting di koordinator kami.', }, bell: { dmsUnread: '{{count}} pesan terenkripsi baru', messagesAndCrews: 'Pesan & obrolan kru', }, }, settingsUi: { loginDialog: { welcomeSubtitleBrowse: "Daftar atau masuk — atau tetap jelajahi.", extensionCard: "Ekstensi peramban", signerCard: "Aplikasi penandatangan", secretKeyLink: "Gunakan kunci rahasia saja", whereBunker: "Di mana saya mendapatkan bunker?", }, settingsPage: { trust: 'Kepercayaan', trustSub: 'Sumber dan tampilan', }, }, walletUi: { trust: { mute: 'Bisukan', muted: 'Dibisukan', mutedDesc: 'Kamu tidak akan melihat konten mereka.', unmute: 'Batalkan bisukan', unmuted: 'Bisukan dibatalkan', unmutedDesc: 'Konten mereka akan muncul lagi.', unmuteFailed: 'Gagal membatalkan bisukan. Coba lagi.', muteFailed: 'Gagal membisukan. Coba lagi.', loginToMute: 'Masuk untuk membisukan.', attributedNetwork: 'Dari orang-orang di jaringanmu', attributedProviderHouse: 'Dari penyedia kepercayaan komunitas', attributedProviderCustom: 'Dari penyedia yang kamu pilih', howItWorks: 'Cara kerja kepercayaan', flaggedNoticeTitle: 'Dilaporkan oleh skater tepercaya', flaggedNoticeDesc: 'Hati-hati. Orang tepercaya di jaringan telah melaporkan akun ini.', flaggedReporterFollow: '{{count}} yang kamu ikuti', flaggedReporterNetwork: '{{count}} di jaringanmu', flaggedReporterOther: '{{count}} akun lain', flaggedReport: 'Laporkan', flaggedDismiss: 'Abaikan', bucketVerified: 'Terverifikasi', bucketUnknown: 'Tidak diketahui', bucketFlagged: 'Ditandai', bucketVerifiedDesc: 'Seseorang di jaringanmu menjamin akun ini.', bucketUnknownDesc: 'Belum ada orang di jaringanmu yang menjamin akun ini.', bucketFlaggedDesc: 'Orang tepercaya melaporkan akun ini.', reportedByTrusted: 'Dilaporkan oleh {{count}} orang tepercaya', }, stats: { transport: 'Transportasi', }, }, trustUi: { alertsTitle: 'Peringatan jaringan', alertsDesc: 'Akun yang kamu ikuti yang telah dilaporkan atau dibisukan oleh orang tepercaya.', alertsEmpty: 'Tidak ada peringatan. Kami memeriksa akun yang kamu ikuti untuk laporan tepercaya.', alertsReported: 'Dilaporkan oleh {{count}} orang tepercaya', alertsMuted: 'Dibisukan oleh {{count}} orang tepercaya', alertsIgnore: 'Abaikan', alertsUnfollow: 'Berhenti mengikuti', alertsLogin: 'Masuk untuk melihat peringatan untuk akun yang kamu ikuti.', providerTitle: 'Penyedia', providerDesc: 'Skor berasal dari penyedia yang kamu pilih. Penyedia komunitas adalah default.', useCommunity: 'Gunakan penyedia komunitas', setProvider: 'Atur penyedia', customPubkeyPlaceholder: 'npub atau pubkey hex penyedia', customRelayPlaceholder: 'wss://relay.example.com', invalidProvider: 'Masukkan npub yang valid atau pubkey hex 64 karakter, dan relay wss://.', publishFailed: 'Gagal menerbitkan penyedia. Coba lagi.', providerSaved: 'Penyedia diperbarui.', loggedOutProvider: 'Masuk untuk memilih penyedia.', showMarks: 'Tampilkan tanda kepercayaan', showMarksDesc: 'Tanda terverifikasi dan tidak diketahui. Laporan selalu tampil.', sourceLabel: 'Sumber', sourceHouse: 'Penyedia kepercayaan komunitas', sourceCustom: 'Penyedia kamu', loggedOut: 'Masuk untuk memilih penyedia kepercayaanmu sendiri.', seoTitle: 'Cara kerja kepercayaan', seoDescription: 'Cara SkateSpots menampilkan kepercayaan: tiga status, dari mana skor berasal, dan mengapa ketiadaan bukan ketidakpercayaan.', title: 'Cara kerja kepercayaan', intro: 'Kepercayaan di sini adalah sinyal, bukan putusan. Ia datang dari siapa yang kamu kenal, atau dari penyedia yang kamu pilih. Kami tidak memeringkat orang secara global.', statesTitle: 'Tiga status', verifiedTitle: 'Terverifikasi', verifiedDesc: 'Seseorang di jaringanmu menjamin akun ini: teman dari teman, atau penyedia pilihanmu.', unknownTitle: 'Tidak diketahui', unknownDesc: 'Belum ada yang menjamin. Di sinilah setiap akun baru dimulai.', flaggedTitle: 'Ditandai', flaggedDesc: 'Orang tepercaya melaporkan akun ini. Ini peringatan untuk melihat lebih dekat, bukan bukti apa pun.', absenceTitle: 'Tanpa lencana bukan berarti tidak dipercaya', absenceDesc: 'Sebagian besar akun tidak menampilkan apa pun. Itu berarti belum ada orang di jaringanmu yang menjamin mereka, bukan berarti ada yang salah. Jangan pernah membaca tanda yang hilang sebagai hal negatif.', sourceTitle: 'Siapa yang menghitungnya', sourceDesc: 'Secara default kami menggunakan jaringanmu sendiri. Kamu juga bisa memilih penyedia kepercayaan yang menerbitkan skor bertanda tangan lewat Nostr (NIP-85), atau mematikan tampilannya. Ditandai selalu tampil, karena itu sinyal keselamatan.', endorsementTitle: 'Kehadiran bukan dukungan', endorsementDesc: 'Tanda terverifikasi berarti seseorang menjamin, bukan bahwa orangnya baik. Tanda berarti orang tepercaya melaporkannya, bukan bahwa ia bersalah. Periksa detailnya sebelum kamu memutuskan.', povTitle: 'Tergantung sudut pandang', povDesc: 'Skor bersifat relatif terhadap siapa yang melihat. Peringkat dari satu penyedia atau satu orang tidak bisa dibandingkan dengan yang lain, dan kami tidak pernah menyajikannya sebagai fakta objektif.', settingsCta: 'Kelola di Pengaturan', }, marketTerms: { link: 'Panduan marketplace', seoTitle: 'Panduan marketplace', seoDescription: 'Cara listing gear SkateSpots bekerja: peer-to-peer, pembeli waspada, dan aturannya.', title: 'Panduan marketplace', intro: 'SkateSpots adalah papan gear peer-to-peer. Kamu berurusan langsung dengan orang lain: kami tidak menahan dana, mengirim barang, atau menyelesaikan sengketa.', howTitle: 'Cara kerjanya', howBody: 'Pasang gear, hubungi penjual lewat pesan privat, dan selesaikan langsung (tunai, Lightning, atau tukar). Tidak ada keranjang atau checkout.', rulesTitle: 'Yang tidak diizinkan', rulesBody: 'Tidak ada konten ilegal, berbahaya, atau dewasa; tidak ada narkoba, senjata, barang palsu atau curian. Jaga listing tetap soal gear skate dan barang terkait.', respectTitle: 'Bersikap hormat', respectBody: 'Tidak ada pelecehan, gangguan, ancaman, atau kebencian. Moderator dapat menyembunyikan listing atau akun.', trustTitle: 'Kepercayaan adalah panduan, bukan jaminan', trustBody: 'Tanda verifikasi dan reputasi dagang adalah sinyal dari jaringan, bukan janji. Lakukan pemeriksaanmu sendiri sebelum bertransaksi.', trustLink: 'Cara kerja kepercayaan', privacyLink: 'Apa yang keluar dari perangkatmu', safetyTitle: 'Berdagang dengan aman', safetyBody: 'Bertemu di tempat umum untuk serah terima, gunakan escrow atau uang muka itikad baik untuk transaksi kiriman, dan jangan pernah mengirim uang di luar aplikasi.', moderationTitle: 'Moderasi lembut dan dapat dibalik', moderationBody: 'Konten yang disembunyikan tetap ada di relay dan bisa dipulihkan; sengketa antar orang adalah urusanmu untuk diselesaikan.', }, labOptions: { clothing: { service: { tees: 'Kaos', hoodies: 'Hoodie & Sweater', pants: 'Celana & Celana Pendek', jackets: 'Jaket & Pakaian Luar', kits: 'Seragam Tim & Jersey', caps: 'Topi & Beanie', socks: 'Kaus Kaki', accessories: 'Tas & Aksesori', footwear: 'Alas Kaki & Sepatu', patches: 'Tambalan & Aplikasi', griptape: 'Seni Griptape & Apparel Deck', onepiece: 'Satu-satunya / Upcycled', }, serviceDesc: { tees: 'Kaos dan atasan kustom', hoodies: 'Hoodie, crew, dan celana training', pants: 'Celana kerja, cargo, dan celana pendek', jackets: 'Jaket coach, shell, dan jaket kerja', kits: 'Seragam tim, jersey, dan uniform', caps: 'Topi, beanie, dan penutup kepala', socks: 'Kaus kaki crew dan rajutan', accessories: 'Tas, ikat pinggang, dan barang kecil', footwear: 'Sepatu kustom dan alas kaki', patches: 'Tambalan bordir dan aplikasi', griptape: 'Seni griptape dan apparel deck', onepiece: 'Potongan tunggal dan pakaian upcycled', }, method: { screenprint: 'Sablon', dtg: 'DTG / Direct-to-Garment', embroidery: 'Bordir', cutsew: 'Cut & Sew', sublimation: 'Sublimasi', heattransfer: 'Transfer Panas / Vinyl', garmentdye: 'Pewarnaan Pakaian', knit: 'Rajutan', patchwork: 'Patchwork', allover: 'Cetak All-over', }, material: { cotton: 'Katun', heavyweight: 'Heavyweight', organic: 'Organik / Berkelanjutan', fleece: 'Fleece', denim: 'Denim', canvas: 'Kanvas', nylon: 'Nylon / Teknis', wool: 'Merino / Wol', leather: 'Kulit', recycled: 'Daur Ulang / Deadstock', }, }, transport: { capacity: { solo: '1–3 orang', small_group: '4–7 orang', large_group: '8+ orang', van_load: 'Muatan van', freight: 'Kargo / barang', }, coverage: { local: 'Lokal', regional: 'Regional', national: 'Nasional', international: 'Internasional', cross_border: 'Rute lintas batas', }, }, }, becomeRolesUi: { clothing: { seoTitle: 'Jadi Desainer Pakaian - SkateSpots', seoDescription: 'Pakaian kustom, seragam tim & apparel untuk scene.', heading: 'Desainer Pakaian', tagline: 'Pakaian kustom, seragam tim & apparel untuk scene', noun: 'desainer pakaian', rateLabel: 'Tarif', portfolioLabel: 'Tautan toko / portofolio', sectionWhatYouMake: 'Apa yang Kamu Buat', sectionHowYouMake: 'Bagaimana Kamu Membuatnya', sectionMaterials: 'Bahan', minimumPlaceholder: 'mis. 10 potong', turnaroundPlaceholder: 'mis. 2-3 minggu', sizingPlaceholder: 'mis. XS-3XL / made to measure', samplesHelper: 'Apakah kamu menawarkan sampel atau prototipe sebelum produksi penuh?', customizationPlaceholder: 'mis. nama, nomor, grafis', }, transport: { seoTitle: 'Tawarkan Transportasi / Mengemudi - SkateSpots', seoDescription: 'Pindahkan skater, perlengkapan, dan kargo — mobil, taksi, van, motor, helikopter, pesawat, dan perahu. Diklaim sendiri, ditinjau komunitas.', heading: 'Transportasi / Pengemudi', tagline: 'Pindahkan orang dan perlengkapan di sekitar scene — darat, udara, atau laut', noun: 'penyedia transportasi', rateLabel: 'Tarif / Perjalanan', portfolioLabel: 'Foto kendaraan / armada', sectionVehicles: 'Kendaraan', sectionServices: 'Layanan', sectionFeatures: 'Yang bisa dilakukan', sectionCapacity: 'Kapasitas', sectionCoverage: 'Jangkauan', capacityLabel: 'Kapasitas', capacityPlaceholder: 'mis. 4 penumpang / 2 papan', cargoLabel: 'Ruang kargo', cargoPlaceholder: 'mis. muatan van, 8 kotak deck', coverageLabel: 'Jangkauan / rute', coveragePlaceholder: 'mis. Jakarta ↔ Bandung, regional', availabilityLabel: 'Ketersediaan', availabilityPlaceholder: 'mis. akhir pekan, hari acara, siap dipanggil', baseLabel: 'Area pangkalan', basePlaceholder: 'mis. Jakarta / Bandung', accessibilityLabel: 'Aksesibilitas', accessibilityPlaceholder: 'mis. ramp, ruang kursi roda, pendampingan', }, }, weatherUi: { updated: 'Diperbarui', refresh: 'Muat ulang', unavailable: 'Cuaca tidak tersedia.', retry: 'Coba lagi', sunrise: 'Matahari terbit', sunset: 'Matahari terbenam', legendTitle: 'Skor cuaca', legendWeatherOnly: 'Cuaca saja', }, cordnUi: { shareInvite: 'Undang', shareInviteText: 'Gabung ke {{crew}} — obrolan pribadi kru', inviteCopied: 'Tautan undangan disalin', title: 'Chat privat', subtitle: 'Terenkripsi ujung-ke-ujung (MLS) antar anggota crew. Koordinator hanya merutekan ciphertext dan metadata — tidak pernah melihat isi pesan.', notLoggedIn: 'Masuk untuk menggunakan chat privat crew.', membersOnly: 'Hanya anggota crew yang bisa membuka chat privat.', connecting: 'Menghubungkan…', noCoordinator: 'Belum ada koordinator yang dikonfigurasi untuk crew ini.', noGroupAdmin: 'Chat privat crew ini belum dibuat.', noGroupMember: 'Kamu belum ada di chat privat crew ini.', create: 'Buat chat privat', requestJoin: 'Minta gabung', requestAgain: "Minta lagi", requestHandled: "Permintaan ditangani", copyCordnLink: "Salin tautan Cordn", cordnWebCaveat: "Cordn web bisa macet setelah masuk; bergabung lewat aplikasi lebih andal.", checkInvite: 'Periksa undangan', requested: 'Permintaan terkirim — admin crew akan menyetujuinya.', noInvite: 'Belum ada undangan menunggu. Minta admin menyetujui permintaanmu.', placeholder: 'Kirim pesan ke crew…', send: 'Kirim', refresh: 'Muat ulang', requests: 'Permintaan gabung', checkRequests: 'Periksa permintaan', approve: 'Tambah', approveTitle: "Setujui perangkat ini?", approveDesc: "Tambahkan {{name}} ke ruang terenkripsi ini? Perangkat itu akan dapat membaca pesan baru.", noRequests: 'Tidak ada permintaan gabung yang tertunda.', inviteHint: 'Baru kamu yang ada di chat ini — anggota crew bisa menekan “Minta gabung”, lalu kamu setujui di sini.', memberCount: '{{count}} di grup', you: 'Kamu', groupRef: 'Tautan grup', copyRef: 'Salin', copied: 'Disalin', attachImage: 'Lampirkan gambar', uploading: 'Mengunggah…', uploadFailed: 'Gagal mengunggah gambar.', bannerTitle: 'Crew ini belum punya chat privat', bannerBody: 'Siapkan chat terenkripsi ujung-ke-ujung (MLS) untuk crew-mu — anggota bergabung dari tab.', bannerCta: 'Siapkan', ready: 'Terhubung · MLS', errorPrefix: 'Tidak dapat menjangkau koordinator', interactiveHint: 'Penandatanganmu meminta persetujuan untuk setiap tindakan — gunakan Muat ulang dan Kirim sesuai kebutuhan.', setupDevice: "Siapkan perangkat ini", setupDeviceBody: "Ini memberi perangkat ini kunci sendiri untuk chat privat. Seorang pendiri menyetujuinya sekali.", waitingApproval: "Menunggu persetujuan pendiri…", waitingApprovalManual: "Menunggu pendiri. Ketuk “Periksa undangan” setelah mereka menyetujui.", onboardingFounder1: "Mulai chat privat.", onboardingFounder2: "Setujui anggota yang minta gabung.", onboardingFounder3: "Ngobrol secara privat dengan crew-mu.", onboardingMember1: 'Minta gabung', onboardingMember2: "Pendiri menyetujui perangkatmu.", onboardingMember3: "Kamu sudah masuk — pesan terenkripsi.", encryptedNote: "Hanya anggota crew yang bisa membacanya; koordinator hanya meneruskan pesan terenkripsi.", advanced: "Lanjutan", compareTitle: "Chat vs chat privat", compareChat: "Chat adalah DM grup NIP-17 standar. Bekerja dengan klien Nostr lain dan tidak memiliki koordinator.", comparePrivate: "Chat privat menggunakan MLS: kontrol keanggotaan lebih kuat dan kerahasiaan ke depan. Koordinator melihat metadata grup dan ciphertext, bukan teks pesan.", coordinator: "Koordinator", lastChecked: "Terakhir diperiksa", keyPackage: "Paket kunci", keyPackageReady: "Siap di perangkat ini", keyPackageMissing: "Belum disiapkan di perangkat ini", members: "Anggota", roleFounder: "Pendiri", roleAdmin: "Admin", makeAdmin: "Jadikan admin", removeAdmin: "Hapus admin", adminAdded: "Anggota dipromosikan menjadi admin.", adminRemoved: "Peran admin dihapus.", roleUpdateFailed: "Tidak dapat memperbarui peran. Coba lagi.", addReaction: "Tambah reaksi", deleteMessage: "Hapus pesan", deleteMessageConfirm: "Hapus pesan ini untuk semua orang?", readBy: "Dibaca oleh {{count}}", joinRequestTitle: "Permintaan chat pribadi", joinRequestFor: "Permintaan baru untuk bergabung dengan {{crew}}", joinRequestReview: "Tinjau permintaan", joinRequestDismiss: "Abaikan permintaan", roleMember: "Anggota", qrTitle: "Pindai untuk bergabung ke chat privat", qrHint: "Anggota crew memindai ini dengan kamera ponsel. Tautan membuka tab Chat privat.", sendFailed: "Gagal mengirim — ketuk Coba lagi.", queued: "Dalam antrean di perangkat ini", sending: "Mengirim…", sent: "Terkirim", retry: "Coba lagi", errorUnreachable: "Tidak dapat menjangkau chat privat. Periksa koneksimu.", errorDetails: "Detail", unreachable: "Tidak terjangkau", dismiss: "Tutup", linkDevice: "Tautkan perangkat ini", linkDeviceTitle: "Tautkan perangkat lain", linkDeviceHint: "Pindai kode ini di perangkat yang sudah ada di ruangan.", linkDeviceNote: "Kode ini berisi paket kunci publik. Kunci pribadi kamu tetap di perangkat baru.", waitingDevice: "Menunggu perangkat lain…", addDevice: "Tambah perangkat", deviceLinked: "Perangkat ditambahkan.", deviceLinkFailed: "Tidak dapat menambahkan perangkat itu.", removeMemberConfirm: "Hapus {{name}} dari chat privat? Perangkat itu akan kehilangan akses.", removeMemberFailed: "Tidak dapat menghapus anggota itu.", reply: "Balas", }, communityUi: { link: "Komunitas", title: "Chat komunitas", subtitle: "Ajukan pertanyaan, bagikan masukan, dan mengobrol dengan komunitas SkateSpots — terenkripsi end-to-end.", heading: "Komunitas SkateSpots", eyebrow: "Pertanyaan & masukan", seoTitle: "Chat komunitas SkateSpots", seoDescription: "Pertanyaan, masukan, dan obrolan komunitas — terenkripsi end-to-end.", notLoggedIn: "Masuk untuk bergabung ke chat komunitas.", noGroupAdmin: "Ruang komunitas belum dibuat.", noGroupMember: "Kamu belum berada di ruang komunitas.", waitingApproval: "Menunggu persetujuan dari bot komunitas atau admin…", waitingApprovalManual: "Mode manual. Ketuk “Periksa undangan” setelah disetujui.", noInvite: "Belum ada undangan. Bot biasanya menyetujui dalam satu menit — ketuk “Periksa undangan” setelahnya.", pendingRequests: "{{count}} permintaan bergabung menunggu", pendingRequestsDesc: "Bot biasanya menyetujui secara otomatis. Jika macet, buka ruang di bawah dan ketuk Periksa permintaan.", botMissing: "Bot komunitas sedang tidak ada di ruangan ini, jadi admin akan meninjau permintaan bergabung.", secondDeviceHint: "Sudah menjadi anggota di perangkat lain? Gunakan “Tautkan perangkat ini” untuk serah terima langsung, atau minta bergabung lagi dengan perangkat ini.", create: "Buat ruang komunitas", setupDeviceBody: "Ini memberi perangkat ini kunci untuk ruang komunitas. Admin atau bot menyetujuinya satu kali.", onboardingFounder1: "Buat ruang komunitas.", onboardingFounder2: "Setujui bot komunitas dan anggota baru.", onboardingFounder3: "Jawab pertanyaan dan kumpulkan masukan.", onboardingMember1: "Minta bergabung ke ruang komunitas.", onboardingMember2: "Admin atau bot komunitas menyetujui perangkatmu.", onboardingMember3: "Ajukan pertanyaan, bagikan masukan, atau sekadar menyapa.", encryptedNote: "Hanya anggota ruang yang dapat membaca ini; koordinator hanya meneruskan pesan terenkripsi.", shareInviteText: "Gabung ke chat komunitas SkateSpots", qrTitle: "Pindai untuk bergabung ke chat komunitas", qrHint: "Pindai dengan kamera ponsel untuk membuka chat komunitas dan meminta bergabung.", owner: "Pemilik", botName: "Bot komunitas", howItWorks: "Perangkat baru disetujui satu kali oleh admin atau bot komunitas. Pesan yang dikirim sebelum kamu bergabung tidak terlihat olehmu.", feedbackNote: "Pertanyaan dan masukan sangat diterima. Bersikap baiklah — ini ruang bersama.", }, translateUi: { title: 'Terjemahan pesan', translate: 'Terjemahkan', translating: 'Menerjemahkan…', showOriginal: 'Tampilkan asli', showTranslation: 'Tampilkan terjemahan', translatedFrom: 'Diterjemahkan dari {{language}}', failed: 'Terjemahan gagal. Coba lagi.', unsupported: 'Pasangan bahasa ini belum tersedia.', pilotNote: 'Percontohan: hanya Inggris ↔ Spanyol.', autoTranslate: 'Terjemahkan pesan otomatis', autoTranslateDesc: 'Terjemahkan pesan masuk ke bahasa Anda. Berjalan di perangkat ini; tidak ada yang dikirim.', privacy: 'Terjemahan berjalan di perangkat Anda. Pesan Anda tidak pernah meninggalkannya. Penggunaan pertama mengunduh model bahasa.', }, newsletterDraftUi: { weeklyDraftReady: 'Draf mingguan siap', loadDraft: 'Muat draf', hidePreview: 'Sembunyikan pratinjau', untitled: 'Tanpa judul', }, signerPromptUi: { title: "Anggaran permintaan Amber", body: "Amber meminta persetujuan untuk setiap tindakan yang ditandatangani. Pembacaan dan dekripsi latar belakang tetap lokal dan tidak memunculkan permintaan. Mengirim DM grup meminta sekali per penerima (enkripsi + tanda tangan), dan Cordn dapat meminta per permintaan koordinator. Untuk chat pribadi atau kru yang sering, bunker atau kunci lokal lebih tenang.", bunker: "Pertahankan Amber untuk penandatanganan bernilai tinggi, atau beralih ke bunker saat kamu memperkirakan obrolan panjang.", }, globalSearchUi: { open: "Cari", placeholder: "Cari spot, kru, acara, gear…", hint: "⌘K / Ctrl+K", recent: "Terbaru", pages: "Halaman", spots: "Spot", shops: "Toko", crews: "Kru", events: "Acara", gear: "Gear", skaters: "Skater", signers: "Penandatangan", trust: "Kepercayaan", noResults: "Tidak ada hasil untuk “{{query}}”.", }, marketplaceExtrasUi: { savedSearches: "Pencarian tersimpan", saveSearch: "Simpan pencarian", searchName: "Beri nama pencarian ini…", deleteSearch: "Hapus pencarian tersimpan", safetyTitle: "Beli & jual dengan aman", safetyMeet: "Bertemulah di tempat umum dan periksa perlengkapannya sebelum membayar.", safetyKeys: "Jangan pernah membagikan frasa seed atau kunci privat. Lakukan transaksi di chat dalam aplikasi.", safetyEscrow: "Untuk pengiriman, baca dulu ketentuan escrow: escrow Cashu hanya untuk aplikasi native dan belum terverifikasi.", safetyMore: "Baca panduan marketplace", offerTemplates: "Catatan cepat", offerDiscount: "Bisa diskon 10%?", offerSwap: "Mau mempertimbangkan tukar tambah?", offerPickup: "Saya bisa ambil sendiri minggu ini.", offerShipping: "Bisa gabung ongkos kirimnya?", }, placesUi: { eventDetail: { eventPass: "Tiket acara" }, }, }; export default driftStrings;