1const LOCALE_STORAGE_KEY = 'portal_language'; 2let lang = window.PORTAL_LANGUAGE || localStorage.getItem(LOCALE_STORAGE_KEY) || 'id'; 3 4if (lang !== 'en') { 5 lang = 'id'; 6} 7 8localStorage.setItem(LOCALE_STORAGE_KEY, lang); 9 10const locale = { 11 id: { 12 bookingShuttle: 'Shuttle', 13 bookingMotorRental: 'Rental Motor', 14 bookingRoundTrip: 'Pulang Pergi?', 15 bookingDeparture: 'Keberangkatan', 16 bookingOrigin: 'Asal', 17 bookingSelectDeparture: 'Pilih Keberangkatan', 18 bookingSelectOrigin: 'Pilih Lokasi Asal', 19 bookingDestination: 'Tujuan', 20 bookingSelectDestination: 'Pilih Tujuan', 21 bookingSelectDestinationLocation: 'Pilih Lokasi Tujuan', 22 bookingSelectDate: 'Pilih Tanggal', 23 bookingOneWay: 'Sekali Jalan', 24 bookingDepartureDate: 'Tanggal Pergi', 25 bookingReturnDate: 'Tanggal Pulang', 26 bookingPassenger: 'Penumpang', 27 bookingPassengerCount: 'Jumlah Penumpang', 28 bookingSelectPassenger: 'Pilih Penumpang', 29 bookingPassengerUnit: 'Orang', 30 bookingPassengerSingular: 'orang', 31 bookingPassengerPlural: 'orang', 32 bookingSearch: 'Cari', 33 bookingSearchTrip: 'Cari Perjalanan', 34 commonSearch: 'Cari', 35 commonNoResults: 'Tidak ada hasil', 36 commonSearching: 'Mencari...', 37 bookingValidationDeparture: 'Silakan pilih keberangkatan', 38 bookingValidationDestination: 'Silakan pilih tujuan', 39 bookingValidationDepartureDate: 'Silakan pilih tanggal pergi', 40 bookingValidationReturnDate: 'Silakan pilih tanggal pulang', 41 bookingNoDeparture: 'Tidak ada keberangkatan', 42 bookingNoDestination: 'Tidak ada tujuan', 43 bookingSearchLocation: 'Ketik kota, lokasi, dan wilayah', 44 homepageNewsReadMore: 'Baca Selengkapnya', 45 homepageNewsViewAll: 'Lihat Semua Berita', 46 homepageNewsTitle: 'Info Terbaru Namaste', 47 homepageNewsDescription: 'Pantau informasi terbaru dari Namaste mulai dari layanan, rute, hingga perjalanan supaya kamu selalu update sebelum memulai perjalanan.', 48 homepageNewsDescriptionMobile: 'Pantau informasi terbaru dari Namaste mulai dari layanan, rute, hingga perjalanan.', 49 homepageViewMore: 'Lihat Selengkapnya', 50 homepageFacilities: 'Fasilitas', 51 homepageServices: 'Layanan', 52 homepageAdvantages: 'Keunggulan', 53 homepageOurLocation: 'Lokasi Kami', 54 homepageRegisterMember: 'Daftar Member', 55 homepageBookNow: 'Pesan Sekarang', 56 homepageViewDetails: 'Lihat Detail', 57 homepageViewAllOutlets: 'Lihat Semua Outlet', 58 homepageBookingTutorial: 'Tutorial Cara Booking', 59 homepageChangeDeparture: 'Ubah Keberangkatan', 60 homepageFaq: 'FAQ', 61 homepageComingSoon: 'Segera Hadir', 62 homepageBannerAlt: 'Banner promosi', 63 scheduleSelect: 'Pilih', 64 scheduleExpired: 'Jadwal sudah lewat', 65 scheduleInsufficientSeats: 'Kursi tidak cukup', 66 scheduleNotFound: 'Jadwal tidak ditemukan', 67 scheduleDepartureArrival: 'berangkat - tiba', 68 scheduleTravelEstimate: 'Estimasi perjalanan', 69 promoSpecialTitle: 'Promo Spesial!', 70 promoExclusiveTitle: 'Promo Eksklusif', 71 promoInterestingTitle: 'Promo Menarik Untukmu!', 72 promoBestLabel: 'ð¥ Promo Terbaik', 73 promoSeatUnit: '/kursi', 74 outletOurTitle: 'Outlet Kami', 75 instagramFollowUs: 'Ikuti Kami di Instagram', 76 homepageViewAll: 'Lihat Semua', 77 homepageAll: 'Semua', 78 homepageAmount: 'Jumlah', 79 homepageDate: 'Tanggal', 80 homepageLocation: 'Lokasi', 81 serviceMore: 'Selengkapnya â', 82 ansAgentTitle: 'Agen ANS', 83 ansAgentDescription: 'Temukan agen ANS terdekat di kota Anda untu
83k informasi dan layanan terbaik.', 84 homepageLatestNewsTitle: 'Kabar Terbaru Buat Perjalananmu!', 85 homepageLatestNewsDescription: 'Lihat promo menarik, rute baru, dan info penting untuk perjalanan Anda.', 86 blogPageTitle: 'Promo dan Berita', 87 blogSearchPlaceholder: 'Cari promo, berita, atau artikel...', 88 blogSearchAria: 'Cari promo, berita, atau artikel', 89 blogSearchButton: 'Cari', 90 blogSearchEmpty: 'Promo atau berita tidak ditemukan', 91 blogReadMore: 'Selengkapnya', 92 blogEmpty: 'Belum ada tulisan', 93 blogPrevious: 'Sebelumnya', 94 blogNext: 'Berikutnya', 95 blogHome: 'Beranda', 96 blogTableOfContents: 'Daftar Isi', 97 blogShare: 'Bagikan', 98 blogAuthor: 'Penulis:', 99 blogPublished: 'Diterbitkan:', 100 blogUpdated: 'Diperbarui:', 101 blogShareFacebook: 'Bagikan ke Facebook', 102 blogShareX: 'Bagikan ke X', 103 blogCopyLink: 'Salin tautan artikel', 104 blogLinkCopied: 'Link berhasil disalin', 105 blogOtherNews: 'Berita Lainnya', 106 blogPromoNews: 'Promo & Berita', 107 blogEmptyDetail: 'Berita Kosong!', 108 blogEmptyImageAlt: 'Belum ada gambar artikel', 109 rentalTitle: 'Rental', 110 rentalMotorTitle: 'Sewa Motor', 111 rentalContactUs: 'Hubungi Kami', 112 rentalStartingFrom: 'Mulai dari', 113 rentalOrder: 'Pesan', 114 rentalBookNow: 'Book Sekarang', 115 rentalTerms: 'Syarat dan Ketentuan', 116 rentalTourTerms: 'Syarat dan Ketentuan Rental & Pariwisata', 117 rentalClose: 'Tutup', 118 rentalFullName: 'Nama Lengkap', 119 rentalFullNamePlaceholder: 'Masukkan nama lengkap', 120 rentalEmailPlaceholder: 'Masukkan email', 121 rentalPhone: 'No. Telepon', 122 rentalVehicle: 'Kendaraan', 123 rentalSelectVehicle: 'Pilih kendaraan', 124 rentalVehicleType: 'Jenis Kendaraan', 125 rentalUnitCount: 'Jumlah Unit', 126 rentalDecreaseUnit: 'Kurangi unit', 127 rentalIncreaseUnit: 'Tambah unit', 128 rentalDate: 'Tanggal Sewa', 129 rentalDatePlaceholder: 'hh/bb/tttt', 130 rentalDuration: 'Durasi', 131 rentalDay: 'hari', 132 rentalAdditionalNote: 'Catatan Tambahan', 133 rentalAdditionalNotePlaceholder: 'Masukkan catatan tambahan', 134 rentalRequired: '*Wajib diisi', 135 rentalPrivacyPrefix: 'Mengizinkan', 136 rentalPrivacySuffix: 'untuk menggunakan informasi di atas dan menghubungi saya melalui email, telepon, atau sarana komunikasi pribadi lainnya untuk kegiatan pelayanan pelanggan sesuai dengan', 137 rentalPrivacyConsent: 'Persetujuan Privasi', 138 rentalVehicleModel: 'Model Kendaraan', 139 rentalWeekly: 'Sewa Mingguan', 140 rentalMonthly: 'Sewa Bulanan', 141 rentalBestValue: 'Best Value', 142 rentalFleetNavigation: 'Navigasi pilihan armada', 143 rentalFleet: 'Armada', 144 rentalMotorCashbackValue: 'Nilai Cashback:', 145 rentalMotorHeroAlt: 'Sewa motor di Bali', 146 rentalMotorCtaAlt: 'Keliling Bali dengan motor', 147 rentalReserveNow: 'Reservasi Sekarang', 148 rentalMinimumVehicle: 'Pilih minimal 1 unit kendaraan.', 149 rentalUnit: 'unit', 150 rentalCustomerData: 'Data Pemesan:', 151 rentalName: 'Nama:', 152 rentalRentalDetails: 'Detail Rental:', 153 rentalNote: 'Catatan:', 154 rentalMotorWhatsappGreeting: 'Halo, saya ingin menyewa motor.', 155 rentalBookTitle: 'Book Rental', 156 rentalVehicleGreeting: 'Halo, saya ingin menyewa kendaraan dari', 157 rentalNumberOfDays: 'Jumlah Hari', 158 rentalDestination: 'Titik Tempuh', 159 rentalDestinationPlaceholder: 'Contoh Alun-alun Cimahi', 160 rentalPickupPoint: 'Titik Jemput', 161 rentalPerDay: '/hari', 162 paymentPageTitle: 'Cara Pembayaran', 163 paymentPageDescription: 'Dapatkan kemudahan dalam bertransaksi.', 164 paymentImageAlt: 'Metode pembayaran', 165 paymentHowToUse: 'CARA PEMBAYARAN MENGGUNAKAN', 166 paymentUnavailableTitle: 'Metode Pembayaran Belum Tersedia', 167 paymentUnavailableDescription: 'Maaf, metode pembayaran belum bisa ditampilkan. Silakan coba sebentar lagi ya.', 168 checkoutPersonalData: 'Data Diri', 169 checkoutSelectSeat: 'Pilih Kursi', 170 checkoutComplete: 'Selesai', 171 checkoutNewUserVoucherBadge: 'Pakai voucher potongan pengguna baru', 172 checkoutUseVoucher: 'Gunakan Voucher', 173 checkoutNewUserVoucher: 'Voucher Pengguna Baru', 174 checkoutTerms: 'Syarat dan Ketentuan', 175 checkoutLoginToClaim: 'Login untuk Klaim', 176 checkoutClaimVoucher: 'Klaim Voucher', 177 checkoutVoucherApplied: 'Voucher Terpasang', 178 checkoutVoucherApplySuccess: 'Berhasil diterapkan!', 179 checkoutLoadingData: 'Memuat data ...', 180 checkoutSelectPaymentMethod: 'Pilih Metode Pembayaran', 181 checkoutBalance: 'Saldo:', 182 checkoutPriceDetails: 'Detail Harga', 183 checkoutTermsAgreement: 'Silakan tandai kotak ini sebagai bukti bahwa Anda mengerti dan menerima ketentuan-ketentuan di atas yang diberlakukan oleh manajemen operator', 184 checkoutPrevious: 'Sebelumnya', 185 checkoutConfirm: 'Konfirmasi',
186 checkoutAvailableVouchers: 'Voucher yang Tersedia', 187 checkoutVoucherPlaceholder: 'Masukkan Kode Voucher', 188 checkoutApply: 'Gunakan', 189 checkoutReadCarefully: 'Harap Baca', 190 checkoutConfirmOrder: 'Konfirmasi Pesanan Anda?', 191 checkoutCancel: 'Batal', 192 checkoutTicketPrice: 'Harga Tiket', 193 checkoutTotalDiscount: 'Total Diskon', 194 checkoutServiceFee: 'Biaya Layanan', 195 checkoutTotalPayment: 'Total Bayar', 196 checkoutNoVouchers: 'Daftar voucher tidak tersedia.', 197 checkoutRemove: 'Lepas', 198 checkoutUse: 'Pakai', 199 checkoutSelectPaymentAlert: 'Anda belum memilih metode pembayaran!', 200 checkoutAcceptTermsAlert: 'Anda belum menyetujui syarat dan ketentuan yang diberlakukan oleh ASMAT dan manajemen operator Shuttle.', 201 checkoutTermsLoadError: 'Terjadi kesalahan saat mengambil data syarat dan ketentuan!', 202 checkoutVoucherNewUserOnly: '*Anda tidak memenuhi syarat dan ketentuan; voucher hanya berlaku untuk pengguna baru.', 203 checkoutEarnPoints: 'Dapatkan {{count}} Poin', 204 checkoutRegisterForPoints: '*Daftar sebagai member untuk mendapatkan cashback poin', 205 checkoutLoginRegisterForPoints: '*Masuk dan daftar sebagai member untuk mendapatkan cashback poin', 206 checkoutNoPoints: 'Anda belum memiliki poin', 207 checkoutLoginForPoints: 'Masuk untuk dapat membayar dengan poin', 208 checkoutLoginNow: 'Masuk Sekarang', 209 checkoutMealPackage: 'Paket Makan', 210 checkoutMealDescription: 'Biar perjalanan makin nyaman, tambahkan paket makan favorit Anda!', 211 checkoutMealAddonTitle: 'Add On Paket Makan', 212 checkoutClose: 'Tutup', 213 checkoutAddPackageFor: 'Tambahkan paket untuk:', 214 checkoutSelectPassenger: 'Pilih minimal satu penumpang.', 215 checkoutNotePlaceholder: 'Tambahkan keterangan...', 216 checkoutAdd: 'Tambahkan', 217 checkoutOrderer: 'Pemesan', 218 checkoutNoteShort: 'Ket.', 219 checkoutAddMealPackage: 'Tambah paket makanan', 220 checkoutRemoveMealPackage: 'Hapus paket makanan', 221 completionOrderCreated: 'Pesanan Dibuat!', 222 completionBookingCode: 'Kode Booking', 223 completionPaymentCode: 'Kode Pembayaran', 224 completionCopy: 'SALIN', 225 completionPaymentCodeCopied: 'Kode pembayaran berhasil disalin.', 226 completionPaymentDeadline: 'Batas Pembayaran', 227 completionPayNow: 'Bayar Sekarang', 228 completionDiscount: 'Potongan', 229 completionAdminFee: 'Biaya Admin', 230 completionPickupFee: 'Biaya Jemput', 231 completionDropoffFee: 'Biaya Antar', 232 completionFoodAddon: 'Add-on Makanan', 233 completionPaymentGuide: 'Cara Pembayaran Tiket via', 234 completionHistoryGuide: 'Untuk melihat riwayat transaksi, Anda dapat memeriksanya melalui aplikasi atau situs web.', 235 completionHistoryApp: 'Melalui Aplikasi: Masuk menggunakan nomor telepon yang digunakan saat memesan tiket, lalu buka menu âRiwayatâ.', 236 completionHistoryWeb: 'Melalui Situs Web: Buka menu Reservasi dan masukkan nomor telepon yang digunakan saat memesan tiket, atau buka menu Cek Booking dan masukkan kode booking.', 237 completionThankYou: 'Terima kasih telah menggunakan', 238 completionTicketDetails: 'Detail Tiket', 239 surveyFillPrompt: 'Silakan isi data di bawah ini', 240 surveyHearOpinion: 'Kami Ingin Mendengar Pendapat Anda!', 241 surveyDescription: 'Bantu kami meningkatkan pengalaman Anda dengan menjawab beberapa pertanyaan singkat. Pendapat Anda sangat berarti bagi kami!', 242 surveyEstimatedTime: 'Estimasi waktu pengisian:', 243 surveyFiveMinutes: '5 Menit', 244 surveyStart: 'Mulai Survei', 245 surveyDoNotShowAgain: 'Jangan tampilkan lagi', 246 surveyClose: 'Tutup', 247 surveyThankYou: 'Terima kasih atas masukan Anda!', 248 surveyThankYouDescription: 'Pendapat Anda membantu kami terus meningkatkan layanan. Kami menghargai waktu Anda dan berharap dapat memberikan pengalaman terbaik pada perjalanan berikutnya.', 249 surveyOf: 'dari', 250 surveyQuestions: 'pertanyaan', 251 surveyNext: 'Selanjutnya', 252 surveySubmit: 'Kirim Jawaban',
253 surveyError: 'Terjadi Kesalahan', 254 ticketBack: 'Kembali', 255 ticketOrderDetails: 'Detail Pesanan', 256 ticketCompletePaymentBefore: 'Selesaikan pembayaran sebelum', 257 ticketPaymentFailed: 'Pembayaran tiket tidak berhasil', 258 ticketPaymentChangeSuccess: 'Berhasil Mengubah Pembayaran!', 259 ticketPaymentChangeFailed: 'Gagal Mengubah Pembayaran!', 260 ticketPayment: 'Pembayaran', 261 ticketHowToPayVia: 'Cara Pembayaran Via', 262 ticketPayWith: 'Bayar dengan', 263 ticketChangePaymentMethod: 'Ubah Metode Pembayaran', 264 ticketPaymentStatus: 'Status Pembayaran', 265 ticketPaid: 'Lunas', 266 ticketCancelled: 'Batal', 267 ticketPassengerData: 'Data Penumpang', 268 ticketDepartureData: 'Data Keberangkatan', 269 ticketReturnData: 'Data Kepulangan', 270 ticketChanged: 'Sudah dimutasi', 271 ticketReschedulePaymentNotice: 'Harap melakukan pembayaran agar proses perubahan jadwal berhasil', 272 ticketBookerData: 'Data Pemesan', 273 ticketPhoneNumber: 'No. Telepon', 274 ticketOrderTime: 'Waktu Pesan', 275 ticketInformation: 'Keterangan', 276 ticketAirline: 'Maskapai', 277 ticketTerminal: 'Terminal', 278 ticketLandingTime: 'Jam Landing', 279 ticketPrice: 'Harga', 280 ticketTotalPrice: 'Total Harga', 281 ticketNotFound: 'Detail Pesanan Tidak Ditemukan', 282 ticketPickupDropoffDetails: 'Detail Area Antar Jemput', 283 ticketRouteDetails: 'Detail Rute', 284 ticketOutbound: 'Pergi', 285 ticketBarcodePaidOnly: 'Barcode hanya dapat ditampilkan setelah pembayaran selesai', 286 ticketPointsEarned: 'Selamat, Anda mendapatkan poin!', 287 ticketPointsDescription: 'Lihat poin yang telah Anda dapatkan di halaman profil.', 288 ticketProfile: 'Profil', 289 ticketLinkCopied: 'Tautan berhasil disalin!', 290 ticketDownload: 'Unduh', 291 ticketPrint: 'Cetak', 292 ticketMemberOnly: '*Khusus member', 293 ticketRateNow: 'Yuk, isi rating Anda sekarang', 294 ticketRateTrip: 'Beri rating perjalanan ini', 295 ticketRatingDeadline: 'Maks. 1x24 jam setelah perjalanan selesai', 296 ticketRatingDescription: 'Ulasan Anda sangat berarti bagi kami untuk terus meningkatkan layanan dan memberikan pengalaman transportasi terbaik.', 297 ticketRatingShortDescription: 'Beri tahu kami melalui rating Anda. Ulasan Anda sangat berarti bagi kami!', 298 ticketEarnPointsAfterRating: 'setelah mengisi rating!', 299 ticketSeatCode: 'Kode Kursi:', 300 ticketVehicleCode: 'Kode Kendaraan', 301 ticketLicensePlate: 'Plat Kendaraan', 302 ticketMutationTerms: 'Syarat & Ketentuan Mutasi', 303 contactPageTitle: 'Kontak', 304 contactUsTitle: 'Hubungi Kami', 305 contactDescription: 'Jangan ragu hubungi call center kami kapan pun kamu membutuhkan.', 306 contactOurLocation: 'Lokasi Kami', 307 contactAddressLabel: 'Alamat:', 308 contactOfficeAddress: 'Alamat Kantor', 309 contactCallCenter: 'Call Center:', 310 contactHotline: 'Hotline:', 311 contactEmailLabel: 'Email:', 312 contactFollowUs: 'Ikuti Kami:', 313 contactDownloadApp: 'Download Aplikasi:', 314 contactNow: 'Hubungi Sekarang', 315 contactViewMap: 'Lihat Peta', 316 contactFastResponse: 'Respon cepat dan customer service yang ramah', 317 contactServiceHours: 'Waktu operasional Pusat Layanan Kami:', 318 contactBranches: 'Cabang', 319 contactImageAlt: 'Kontak', 320 contactOfficesOutlets: 'Kantor & Outlet', 321 contactHelpInformation: 'Pusat Bantuan & Informasi', 322 ticketPageTitle: 'Cek Pesanan', 323 ticketCheckTitle: 'Cek Tiket', 324 ticketCheckOrder: 'Cek Pesanan', 325 ticketCheckBooking: 'Cek Booking Tiket', 326 ticketBookingCode: 'Kode Booking', 327 ticketCodePlaceholder: 'Masukkan Kode di Sini', 328 ticketBookingCodePlaceholder: 'Masukkan kode booking', 329 ticketCodeRequired: 'Silakan masukkan kode booking', 330 ticketCodeNotFound: 'Kode booking tidak ditemukan, mohon pastikan kode yang dimasukkan benar.', 331 ticketCheckImageAlt: 'Cek tiket', 332 ticketReserveNow: 'Reservasi Sekarang', 333 memberPageTitle: 'Profil', 334 memberProfile: 'Profil', 335 memberAccount: 'Akun', 336 memberTransactions: 'Transaksi', 337 memberReservationList: 'Daftar Reservasi', 338 memberRatings: 'Penilaian', 339 memberVoucherList: 'Daftar Voucher', 340 memberVoucherHistory: 'Riwayat Voucher', 341 memberBundlingTransactions: 'Transaksi Bundling', 342 memberLogout: 'Keluar', 343 memberUpdateSuccess: 'Profil berhasil diperbarui.', 344 memberUpdateFailed: 'Gagal memperbarui profil.', 345 memberBirthdayPromo: 'Isi data dirimu untuk mendapatkan diskon spesial di hari ulang tahunmu.', 346 memberBirthdayPromoDesc: 'Jangan lewatkan kesempatan ini untuk merayakan momen spesial dengan lebih hemat!', 347 memberCompleteData: 'Lengkapi Data', 348 memberHello: 'Halo', 349 memberProfileDescription: 'Informasi detail profil kamu',
350 memberEditProfile: 'Edit Profil', 351 memberFullName: 'Nama Lengkap', 352 memberPhone: 'Nomor Telepon', 353 memberEmail: 'Email', 354 memberAddress: 'Alamat', 355 memberBirthDate: 'Tanggal Lahir', 356 memberGender: 'Jenis Kelamin', 357 memberStatus: 'Status', 358 memberCode: 'Kode Member', 359 memberJoinBenefit: 'Gabung member dan dapatkan keuntungannya, gratis!', 360 memberUpgrade: 'Upgrade Member', 361 memberCheckEmailVerification: 'Silakan cek email Anda untuk verifikasi', 362 memberMembership: 'Membership', 363 memberExpiryDate: 'Tanggal Kedaluwarsa', 364 memberYourPoints: 'Poin Kamu', 365 memberPointHistory: 'Riwayat Poin', 366 memberPointHistoryEmpty: 'Riwayat Poin Tidak Tersedia', 367 memberTicketReservation: 'Reservasi Tiket', 368 memberProfileNotFound: 'Detail profil ini tidak ditemukan', 369 memberPending: 'Menunggu', 370 memberJoinTitle: 'Yuk! Gabung Jadi Member', 371 memberJoinDescription: 'Dapatkan keuntungan eksklusif dan nikmati perjalanan yang lebih hemat!', 372 memberEditDescription: 'Yuk, isi data diri dengan benar.', 373 memberNamePlaceholder: 'Masukkan nama Anda', 374 memberEmailPlaceholder: 'Masukkan email', 375 memberSelectStatus: 'Pilih Status', 376 memberCompleteForm: 'Mohon lengkapi form terlebih dahulu', 377 memberBirthPlace: 'Tempat Lahir', 378 memberIdentityNumber: 'No. KTP', 379 memberPostalCode: 'Kode Pos', 380 memberCity: 'Kota', 381 memberOccupation: 'Pekerjaan', 382 memberChooseFile: 'Pilih File', 383 memberNoFileChosen: 'Belum ada file dipilih', 384 jobStudent: 'Pelajar / Mahasiswa', 385 jobEmployee: 'Karyawan', 386 jobProfessional: 'Profesional', 387 jobSelfEmployed: 'Wiraswasta', 388 jobEntrepreneur: 'Wirausaha', 389 jobFreelancer: 'Freelance', 390 jobUnemployed: 'Tidak Bekerja', 391 jobCivilServant: 'ASN', 392 jobHousewife: 'Ibu Rumah Tangga', 393 memberType: 'Jenis Member', 394 memberSelfiePhoto: 'Foto Selfie Wajah', 395 memberIdentityPhoto: 'Foto Identitas', 396 memberSubmitSuccess: 'Berhasil mengirimkan data!', 397 memberSubmitFailed: 'Gagal mengirim data', 398 memberCompleteDataFirst: 'Mohon lengkapi data terlebih dahulu.', 399 memberHeicConversionFailed: 'Format HEIC gagal dikonversi. Silakan unggah JPG.', 400 memberRegistrationSuccess: 'Pendaftaran member berhasil', 401 memberRegistrationCheckEmail: 'Registrasi member telah berhasil, silakan cek email Anda untuk aktivasi.', 402 memberRequiredPhotoMissing: 'Masih ada foto wajib yang belum diunggah', 403 memberRegisterTitle: 'Daftar Member', 404 memberUpdateTitle: 'Perbarui Member', 405 memberPoints: 'Poin', 406 commonSave: 'Simpan', 407 commonSuccess: 'Berhasil!', 408 commonFailed: 'Gagal!', 409 validationRequiredPrefix: 'Kamu belum mengisi ', 410 validationDigitsSuffix: ' harus berupa angka', 411 validationInvalidFormatPrefix: 'Format ', 412 validationInvalidSuffix: ' tidak valid', 413 validationUploadRequired: 'File wajib diunggah', 414 validationImageFormat: 'Format harus JPG / PNG / HEIC', 415 validationFileMax5Mb: 'Tidak boleh lebih dari 5MB', 416 validationNameMin: 'Nama minimal 3 huruf', 417 validationNameMax: 'Nama maksimal 30 huruf', 418 validationEmailMin: 'Email minimal 8 karakter', 419 validationEmailMax: 'Email maksimal 64 karakter', 420 validationPhoneMin: 'No. telepon minimal 9 digit', 421 validationPhoneMax: 'No. telepon maksimal 16 digit', 422 validationAddressMin: 'Alamat minimal 10 karakter', 423 validationAddressMax: 'Alamat maksimal 128 karakter', 424 validationBirthDateRequired: 'Kamu belum mengisi tanggal lahir', 425 validationDigitsOnly: 'Field ini hanya boleh berisi angka', 426 validationFileTooLarge: 'File terlalu besar', 427 validationLettersOnly: 'Nama hanya boleh berisi huruf dan spasi', 428 validationNumbersOnly: 'Mohon diisi dengan angka', 429 validationEmailInvalid: 'Format email tidak valid', 430 validationFieldRequired: 'Field ini wajib diisi', 431 validationNameRequired: 'Kamu belum mengisi nama', 432 validationEmailRequired: 'Kamu belum mengisi email', 433 validationPhoneRequired: 'Kamu belum mengisi nomor telepon', 434 validationGenderRequired: 'Kamu belum memilih jenis kelamin', 435 validationBirthPlaceRequired: 'Kamu belum mengisi tempat lahir', 436 validationIdentityRequired: 'Kamu belum mengisi nomor identitas', 437 validationIdentityLength: 'Nomor identitas harus 16 digit', 438 validationOccupationRequired: 'Kamu belum memilih jenis pekerjaan', 439 validationAddressRequired: 'Kamu belum mengisi alamat', 440 validationCityRequired: 'Kamu belum mengisi kota', 441 validationPostalCodeRequired: 'Kamu belum mengisi kode pos', 442 validationMemberTypeRequired: 'Kamu belum memilih kategori member', 443 validationIdentityPhotoRequired: 'Kamu belum mengisi foto identitas', 444 validationSelfieRequired: 'Kamu belum mengisi foto selfie', 445 reservationHistoryTitle: 'Riwayat Reservasi', 446 reservationAwaitingPayment: 'Menunggu Pembayaran', 447 reservationCancelled: 'Batal', 448 reservationPaid: 'Lunas', 449 reservationNeedsRating: 'Perlu Penilaian', 450 reservationBookAgain: 'Pesan Lagi', 451 reservationBookingDetail: 'Detail Booking', 452 reservationEmptyTitle: 'Tidak Ditemukan Riwayat Reservasi Tiket', 453 reservationEmptyDescription: 'Untuk membuat reservasi tiket silakan klik tombol di bawah ini.', 454 reservationEmptyImageAlt: 'Riwayat reservasi kosong',
455 reservationCreate: 'Reservasi', 456 reservationScanMe: 'Pindai Saya!', 457 reservationBookingCode: 'Kode Booking:', 458 reservationConfirmLogout: 'Yakin ingin keluar?', 459 reservationBarcodePaidOnly: 'Barcode hanya bisa ditampilkan setelah pembayaran selesai', 460 reservationLoadError: 'Terjadi kesalahan saat mengambil data reservasi', 461 reservationTicket: 'Reservasi Tiket', 462 ratingPageTitle: 'Penilaian Perjalanan', 463 ratingPageDescription: 'Transaksi yang sudah selesai dan belum diberi rating', 464 ratingNotRated: 'Belum diberi rating', 465 ratingGiveRating: 'Beri Penilaian', 466 ratingEmptyTitle: 'Belum Ada Penilaian', 467 ratingEmptyDescription: 'Saat ini tidak ada transaksi yang perlu diberi rating.', 468 ratingEmptyImageAlt: 'Belum ada penilaian', 469 voucherPageTitle: 'Daftar Voucher', 470 voucherMyVouchers: 'Voucher Saya', 471 voucherValidUntil: 'Berlaku sampai', 472 voucherEmptyTitle: 'Kamu belum memiliki voucher', 473 voucherEmptyImageAlt: 'Belum memiliki voucher', 474 voucherDetail: 'Detail Voucher', 475 voucherCopy: 'Salin', 476 voucherHowToUse: 'Cara Pakai', 477 voucherTerms: 'Syarat & Ketentuan', 478 voucherNoInstructions: 'Tidak ada cara pakai.', 479 voucherHistoryPageTitle: 'Riwayat Voucher', 480 voucherHistoryTitle: 'Riwayat Penggunaan Voucher', 481 voucherPromoFallback: 'Voucher Promo', 482 voucherTrip: 'Perjalanan:', 483 voucherHistoryEmpty: 'Belum ada riwayat penggunaan voucher', 484 voucherHistoryEmptyImageAlt: 'Riwayat voucher kosong', 485 paymentChannelEmptyTitle: 'Metode pembayaran tidak tersedia', 486 paymentChannelEmptyDescription: 'Silakan coba kembali beberapa saat lagi.', 487 paymentChannelEmptyImageAlt: 'Metode pembayaran tidak tersedia', 488 bundlingHistoryEmpty: 'Belum ada riwayat transaksi bundling', 489 bundlingHistoryEmptyImageAlt: 'Riwayat bundling kosong', 490 loginPageTitle: 'Masuk & Daftar', 491 loginRegisterTitle: 'Masuk & Daftar', 492 loginWithPhone: 'Login dengan Nomor Telepon', 493 loginWithWhatsapp: 'Login dengan WhatsApp', 494 loginWithEmail: 'Login dengan Email', 495 loginWithGoogle: 'Login dengan Google', 496 loginContinueTitle: 'Silakan Masuk untuk Melanjutkan', 497 loginButton: 'Masuk', 498 loginCheckPhone: 'Periksa kembali nomor telepon kamu', 499 loginCheckEmail: 'Periksa kembali email kamu', 500 loginTryAnotherMethod: 'coba masuk dengan cara lain', 501 loginVerificationNotice: 'Sebelum melanjutkan, harap lakukan verifikasi untuk keamanan dan kenyamanan Anda. Terima kasih atas pengertiannya.', 502 loginPhoneVerification: 'Verifikasi Nomor Telepon', 503 loginVerifyBeforeContinue: 'Sebelum melanjutkan, harap lakukan verifikasi.', 504 loginWithPhoneShort: 'Dengan Nomor Telepon', 505 loginWithWhatsappShort: 'Dengan Nomor WhatsApp', 506 loginWithEmailShort: 'Dengan Email', 507 loginWithGoogleShort: 'Dengan Google', 508 loginPopupBlocked: 'Jendela pop-up login Google diblokir oleh browser Anda. Silakan klik tombol Google Login lagi untuk melanjutkan.', 509 loginUnauthorizedDomain: 'Domain ini tidak diizinkan. Silakan tambahkan domain ke konsol Firebase Anda.',
510 loginGenericError: 'Terjadi kesalahan saat login', 511 loginOtpError: 'Terjadi kesalahan saat verifikasi OTP', 512 loginPhoneRequired: 'Silakan mengisi nomor telepon', 513 loginPhoneMin: 'Nomor telepon minimal 9 digit', 514 loginPhoneMax: 'Nomor telepon maksimal 16 digit', 515 loginEmailRequired: 'Silakan mengisi email', 516 loginEmailInvalid: 'Email tidak valid', 517 loginEmailMin: 'Email minimal 8 karakter', 518 loginEmailMax: 'Email maksimal 64 karakter', 519 loginLogoAlt: 'Logo operator', 520 loginVerificationImageAlt: 'Verifikasi akun', 521 otpPageTitle: 'Verifikasi OTP', 522 otpEnterCode: 'Masukkan Kode OTP', 523 otpCodeSentTo: 'Kode akan dikirimkan ke', 524 otpCodePlaceholder: 'Masukkan 6 Digit Kode OTP', 525 otpContinue: 'Lanjutkan', 526 otpResendIn: 'Kirim ulang OTP dalam', 527 otpResend: 'Kirim Ulang', 528 otpAttemptsExhausted: 'Percobaan login sudah habis, silakan coba di lain waktu', 529 otpRequestError: 'Terjadi kesalahan saat meminta OTP', 530 otpSessionExpired: 'Sesi telah habis. Silakan muat ulang halaman', 531 otpVerifyError: 'Terjadi kesalahan saat memverifikasi OTP', 532 registerTitle: 'Daftar Akun', 533 registerDescription: 'Yuk, isi data diri dengan benar untuk mendaftarkan akun.', 534 registerName: 'Nama', 535 registerFirstName: 'Nama Depan', 536 registerLastName: 'Nama Belakang', 537 registerPhone: 'No. Telepon', 538 registerPhonePlaceholder: 'Masukkan Nomor Telepon', 539 registerEmail: 'Email', 540 registerEmailPlaceholder: 'Masukkan Email Kamu', 541 registerBirthDate: 'Tanggal Lahir', 542 registerBirthDatePlaceholder: 'Tanggal lahir', 543 registerGender: 'Jenis Kelamin', 544 registerMale: 'Laki-laki', 545 registerFemale: 'Perempuan', 546 registerAddress: 'Alamat', 547 registerAddressPlaceholder: 'Masukkan alamat', 548 registerReferral: 'Kode Referral', 549 registerReferralOptional: 'Kode Referral (opsional)', 550 registerButton: 'Daftar', 551 scheduleSelectNew: 'Pilih Jadwal Baru', 552 scheduleOutbound: 'Pergi', 553 scheduleReturn: 'Pulang', 554 scheduleShowing: 'Menampilkan', 555 scheduleBestSchedules: 'Jadwal Terbaik', 556 scheduleEstimatedJourney: 'Estimasi Perjalanan', 557 scheduleDepartureArrival: 'Berangkat - Tiba:', 558 scheduleSeatsAvailable: 'Kursi Tersedia', 559 scheduleSeatsSoldOut: 'Kursi Habis', 560 scheduleAvailable: 'Tersedia', 561 scheduleSeatsAvailableLower: 'kursi tersedia', 562 scheduleTransit: 'Transit', 563 scheduleDirect: 'Langsung', 564 scheduleEarnPoints: 'Dapatkan poin', 565 scheduleInsufficientSeats: 'Kursi Tidak Cukup', 566 scheduleSoldOut: 'Tiket Habis', 567 scheduleOnlineBookingClosed: 'Jadwal Pemesanan Online Sudah Lewat', 568 schedulePassed: 'Jadwal Sudah Lewat', 569 scheduleSelect: 'Pilih', 570 scheduleJourneyDetails: 'Detail Perjalanan', 571 scheduleFullyBookedTitle: 'Wah, Jadwalnya Sudah Penuh!', 572 scheduleNotFound: 'Jadwal Tidak Ditemukan', 573 scheduleSelectReturnDate: 'Silakan pilih tanggal pulang', 574 scheduleSelectReturnSchedule: 'Silakan pilih jadwal pulang', 575 scheduleSelectOutboundSchedule: 'Silakan pilih jadwal pergi', 576 scheduleSelectDeparture: 'Silakan pilih keberangkatan', 577 scheduleSelectSchedule: 'Pilih Jadwal', 578 scheduleSelectDestination: 'Silakan pilih tujuan', 579 scheduleSelectDepartureDate: 'Silakan pilih tanggal berangkat', 580 scheduleSelectOutboundDate: 'Silakan pilih tanggal pergi', 581 scheduleSeatUnit: 'kursi', 582 scheduleReserveWhatsapp: 'Reservasi Via WhatsApp', 583 scheduleTransitStopAt: 'Berhenti untuk transit di', 584 scheduleForDuration: 'selama', 585 scheduleMinutes: 'menit', 586 scheduleFullyBookedDescription: 'Sayang sekali, semua jadwal ini sudah penuh. Coba cek keberangkatan atau pilih tanggal berbeda.', 587 scheduleHours: 'jam', 588 scheduleViewJourneyDetails: 'Lihat Detail Perjalanan', 589 scheduleDepartureScheduleDetails: 'Detail Jadwal Keberangkatan', 590 scheduleDepartureDetails: 'Detail Keberangkatan', 591 scheduleReturnScheduleDetails: 'Detail Jadwal Pulang', 592 scheduleViewLocation: 'Lihat Lokasi', 593 scheduleDiscount: 'Diskon', 594 schedulePromo: 'Promo', 595 scheduleFilterAria: 'Filter jadwal dan layanan', 596 scheduleFilterTitle: 'Filter Jadwal & Layanan', 597 scheduleOriginArea: 'Area Asal', 598 scheduleDestinationArea: 'Area Tujuan', 599 scheduleAreaUnavailable: 'Area tidak tersedia', 600 scheduleDepartureTime: 'Waktu Berangkat', 601 scheduleArrivalTime: 'Waktu Tiba', 602 scheduleService: 'Layanan', 603 scheduleSearch: 'Cari', 604 scheduleFilterEmpty: 'Jadwal dengan filter tersebut tidak ditemukan.', 605 scheduleRoutesAvailable: 'Rute Tersedia', 606 schedulePickupPoint: 'Titik Naik', 607 scheduleDropoffPoint: 'Titik Turun', 608 scheduleSelectDepartureTime: 'Pilih Jam Keberangkatan', 609 scheduleSelectReturnTime: 'Pilih Jam Kepulangan', 610 scheduleRouteNotFound: 'Rute tidak ditemukan.', 611 schedulePromoFilterAria: 'Filter promo jadwal', 612 scheduleAllSchedules: 'Semua Jadwal', 613 scheduleSort: 'Urutkan', 614 scheduleSortDefault: 'Default', 615 scheduleLowestPrice: 'Harga Termurah',
616 scheduleHighestPrice: 'Harga Termahal', 617 scheduleEarliestDeparture: 'Keberangkatan Paling Awal', 618 scheduleLatestDeparture: 'Keberangkatan Paling Akhir', 619 scheduleNoPromo: 'Tidak ada jadwal promo untuk saat ini.', 620 scheduleLoadMore: 'Tampilkan Jadwal Lainnya', 621 scheduleLoadFailed: 'Gagal memuat jadwal', 622 scheduleRoutePointsRequired: 'Silakan pilih titik naik dan titik turun', 623 scheduleNewUserPrice: 'Harga Pengguna Baru', 624 scheduleWebsiteNewUserDiscount: 'Diskon Pengguna Baru Website', 625 scheduleSeatLayoutNotFound: 'Maaf, layout kursi tidak ditemukan. Silakan cari jadwal lainnya.', 626 scheduleSeatPrice: 'Harga Kursi', 627 scheduleAdditionalFee: 'Biaya Tambahan', 628 scheduleTotalPriceDifference: 'Total Selisih Harga', 629 scheduleTicketPrice: 'Harga Tiket', 630 scheduleTotal: 'Total', 631 scheduleBookerName: 'Nama Pemesan', 632 schedulePassengerDetails: 'Detail Penumpang', 633 scheduleAddress: 'Alamat', 634 schedulePhone: 'Telepon', 635 scheduleEmail: 'Email', 636 scheduleNewUserDiscount: 'Potongan Bagi Pengguna Baru', 637 scheduleCreateAccount: 'Buat Akun', 638 navHome: 'Beranda', 639 navAbout: 'Tentang', 640 navAboutUs: 'Tentang Kami', 641 navOutlet: 'Outlet', 642 outletPageTitle: 'Lokasi Outlet', 643 outletPageDescription: 'Cari outlet berdasarkan lokasi dan temukan pool fisik atau virtual point di dekatmu.', 644 outletSearchPlaceholder: 'Cari outlet...', 645 outletFilter: 'Filter', 646 outletReset: 'Reset', 647 outletType: 'Tipe', 648 outletPhysicalPool: 'Pool Fisik', 649 outletVirtualPoint: 'Virtual Point', 650 outletCity: 'Kota', 651 outletAvailable: 'Outlet Tersedia', 652 outletAddress: 'Alamat', 653 outletOperatingHours: 'Jam Operasional', 654 outletOpen: 'Buka', 655 outletClose: 'Tutup', 656 outletPostalCode: 'Kode Pos', 657 outletContact: 'Kontak', 658 outletViewMaps: 'Lihat di Maps', 659 outletResultsFound: 'hasil ditemukan', 660 outletShowLess: 'Lebih Sedikit', 661 outletShowAll: 'Lihat Semua', 662 outletNoData: 'Data outlet tidak tersedia', 663 outletIn: 'Outlet di', 664 navBlog: 'Blog', 665 navPaymentGuide: 'Cara Bayar', 666 navMotorRental: 'Sewa Motor', 667 navTravelGuide: 'Panduan Perjalanan', 668 navAdvertisingServices: 'Iklan dan Layanan', 669 navBundling: 'Bundling', 670 navDownloadLink: 'link berikut', 671 navOfficialWebsitePrefix: 'Website Resmi', 672 navPrimaryAria: 'Navigasi Utama', 673 navDownloadAppAt: 'download aplikasinya di', 674 navContact: 'Kontak', 675 navGallery: 'Galeri', 676 navNews: 'Berita', 677 navPromo: 'Promo', 678 navRental: 'Rental', 679 navFaq: 'FAQ', 680 navTerms: 'Syarat & Ketentuan', 681 navPackage: 'Paket', 682 navTourism: 'Pariwisata', 683 navCheckBooking: 'Cek Booking', 684 navCheckTicket: 'Cek Tiket', 685 navCheckPackage: 'Cek Paket', 686 navSendPackage: 'Kirim Paket', 687 navDownloadApp: 'Download App', 688 navAccount: 'Akun', 689 navRegisterLogin: 'Daftar/Masuk', 690 navLogin: 'Masuk', 691 navProfile: 'Profil', 692 navMyVoucher: 'Voucher Saya', 693 navMyTransaction: 'Transaksi Saya', 694 navBundlingTransaction: 'Transaksi Bundling', 695 navLogout: 'Keluar', 696 navNew: 'Baru', 697 logoutConfirmation: 'Yakin ingin keluar?', 698 commonNo: 'Tidak', 699 commonYes: 'Ya', 700 commonLoading: 'Memuat...', 701 commonHello: 'Halo', 702 commonChatNow: 'Chat Sekarang', 703 commonClose: 'Tutup', 704 commonChange: 'Ubah', 705 passengerPageTitle: 'Data Pemesan', 706 passengerPersonalData: 'Data Diri', 707 passengerBookerData: 'Data Pemesan', 708 passengerBookerName: 'Nama Pemesan', 709 passengerBookerNamePlaceholder: 'Masukkan nama pemesan', 710 passengerBookerEmail: 'Email Pemesan', 711 passengerEmailPlaceholder: 'Masukkan Email', 712 passengerEmailPurpose: 'Email diperlukan untuk mengirim e-tiket, kode bayar & OTP', 713 passengerUsingUserEmail: '*Menggunakan email pengguna', 714 passengerPhone: 'Nomor Telepon', 715 passengerPhonePlaceholder: 'Masukkan No. Telepon', 716 passengerUsingUserPhone: '*Menggunakan nomor pengguna', 717 passengerAddress: 'Alamat', 718 passengerAddressPlaceholder: 'Masukkan Alamat', 719 passengerData: 'Data Penumpang', 720 passengerName: 'Nama Penumpang', 721 passengerNamePlaceholder: 'Masukkan nama penumpang',
722 passengerBookerIsPassenger: 'Pemesan adalah penumpang', 723 passengerPickupDropoffData: 'Data Alamat Antar & Jemput', 724 passengerPickupDropoffType: 'Jenis Antar Jemput', 725 passengerPickupAddress: 'Alamat Jemput', 726 passengerPickupAddressPlaceholder: 'Masukkan Alamat Jemput', 727 passengerPickupArea: 'Area Jemput', 728 passengerSelectPickupArea: 'Pilih Area Jemput', 729 passengerDropoffAddress: 'Alamat Antar', 730 passengerDropoffAddressPlaceholder: 'Masukkan Alamat Antar', 731 passengerDropoffArea: 'Area Antar', 732 passengerSelectDropoffArea: 'Pilih Area Antar', 733 passengerPrevious: 'Sebelumnya', 734 passengerPayment: 'Pembayaran', 735 passengerSelectSeat: 'Pilih Kursi', 736 passengerFinished: 'Selesai', 737 passengerUniqueName: 'Nama penumpang tidak boleh sama.', 738 passengerEnterBookerFirst: 'Masukkan nama pemesan terlebih dahulu!', 739 passengerValidationBookerRequired: 'Silakan isi nama pemesan', 740 passengerValidationBookerMin: 'Nama pemesan minimal 3 huruf', 741 passengerValidationBookerMax: 'Nama pemesan maksimal 30 huruf', 742 passengerValidationEmailRequired: 'Silakan isi email', 743 passengerValidationEmailInvalid: 'Email tidak valid', 744 passengerValidationEmailMin: 'Email minimal 8 karakter', 745 passengerValidationEmailMax: 'Email maksimal 64 karakter', 746 passengerValidationAddressRequired: 'Silakan isi alamat', 747 passengerValidationAddressMax: 'Alamat maksimal 128 karakter', 748 passengerValidationPhoneRequired: 'Silakan isi nomor telepon', 749 passengerValidationPhoneMin: 'Nomor telepon minimal 9 digit', 750 passengerValidationPhoneMax: 'Nomor telepon maksimal 16 digit', 751 passengerValidationNameRequired: 'Silakan isi nama penumpang', 752 passengerValidationNameMin: 'Nama penumpang minimal 3 huruf', 753 passengerValidationNameMax: 'Nama penumpang maksimal 30 huruf', 754 passengerValidationPickupAddressRequired: 'Silakan isi alamat jemput', 755 passengerValidationPickupAreaRequired: 'Silakan pilih area jemput', 756 passengerValidationDropoffAddressRequired: 'Silakan isi alamat antar', 757 passengerValidationDropoffAreaRequired: 'Silakan pilih area antar', 758 seatPageTitle: 'Pilih Kursi', 759 seatChooseBest: 'Pilih kursi terbaik kamu!', 760 seatOutbound: 'Pergi', 761 seatReturn: 'Pulang', 762 seatBooked: 'Sudah dipesan', 763 seatYourChoice: 'Pilihan Anda', 764 seatAvailable: 'Kosong', 765 seatView: 'Tampilan:', 766 seatNote: 'Catatan:', 767 seatFlexibleLayoutNote: 'Unit armada dan tata letak kursi saat reservasi bersifat fleksibel dan dapat mengalami penyesuaian demi efisiensi dan optimalisasi perjalanan.', 768 seatChildTicketNote: 'Anak umur 2 tahun atau dengan tinggi lebih dari 100 cm harus membeli tiket.', 769 seatAvailabilityNote: 'Kursi sewaktu-waktu dapat dipesan oleh pengguna lain yang lebih dahulu menyelesaikan pembelian.', 770 seatPassengerList: 'Daftar Penumpang', 771 seatTotal: 'Total', 772 seatNext: 'Selanjutnya', 773 seatReturnSeat: 'Kursi Pulang', 774 seatNextSelection: 'Pilih Kursi Selanjutnya', 775 seatChange: 'Ubah Kursi', 776 seatDriver: 'SUPIR', 777 seatPromo: 'Promo', 778 seatNotSelected: 'Anda belum memilih kursi', 779 seatLayoutUnavailable: 'Data layout tidak tersedia', 780 seatNumberPrefix: 'Kursi', 781 seatPriceBeforeReschedule: 'Harga Sebelum Mutasi', 782 seatPriceBeforeChange: 'Harga Sebelum Mutasi', 783 locationUnavailable: 'Lokasi tidak tersedia', 784 locationLoadFailed: 'Lokasi gagal dimuat', 785 locationAllowAccess: 'Izinkan akses lokasi', 786 locationFallback: 'Lokasi', 787 footerCallCenter: 'Call Center', 788 footerPhone: 'Telepon', 789 footerWhatsapp: 'Pesan WhatsApp', 790 footerScheduleRouteInfo: 'Informasi Jadwal & Rute', 791 footerEmail: 'Email', 792 footerInformation: 'Informasi', 793 footerAboutUs: 'Tentang Kami', 794 footerContact: 'Kontak', 795 footerCareer: 'Karier', 796 careerVacanciesTitle: 'Lowongan Pekerjaan', 797 careerVacanciesDescription: 'Anda tertarik dengan perusahaan kami, silakan kirim CV Anda', 798 careerVacanciesImageAlt: 'Lowongan pekerjaan', 799 careerAvailablePositions: 'Posisi yang dibutuhkan:', 800 careerDetail: 'Detail', 801 careerSubmitApplication: 'Kirim Lamaran', 802 careerEmptyImageAlt: 'Lowongan karir belum tersedia', 803 careerEmptyState: 'Lowongan karir belum tersedia', 804 footerTourism: 'Pariwisata', 805 footerPaymentGuide: 'Cara Bayar', 806 footerPrivacyPolicy: 'Kebijakan Privasi', 807 footerTerms: 'Syarat & Ketentuan', 808 footerSocialMedia: 'Media Sosial', 809 footerFollowUs: 'Ikuti Kami', 810 footerDownloadApp: 'Unduh Aplikasi', 811 footerOthers: 'Lainnya', 812 footerCompany: 'Perusahaan', 813 footerAllRightsReserved: 'Semua Hak Dilindungi Undang-Undang', 814 footerMenu: 'Menu', 815 footerServices: 'Layanan', 816 footerOurServices: 'Layanan Kami', 817 footerContactUs: 'Hubungi Kami', 818 footerDailyRental: 'Sewa Mobil Harian', 819 footerMonthlyRental: 'Sewa Mobil Bulanan', 820 footerYearlyRental: 'Sewa Mobil Tahunan', 821 footerTourRental: 'Sewa Mobil Wisata', 822 footerWeddingRental: 'Sewa Mobil Pernikahan', 823 footerOpen: 'Buka', 824 footerTravelDescription: 'Nikmati perjalanan tanpa ribet dengan layanan transportasi terbaik dari BTM Shuttle.', 825 footerSchedule: 'Jadwal', 826 footerAgentRegistration: 'Pendaftaran Agen', 827 footerLogistics: 'Logistik', 828 footerFeedback: 'Masukan', 829 footerLegalInfo: 'Informasi Legal', 830 footerOffice: 'Kantor', 831 footerPool: 'Pool', 832 footerEveryDay: 'Setiap Hari', 833 footerUntil: 's.d.', 834 footerLogoAlt: 'Logo perusahaan', 835 footerLocationAlt: 'Lokasi', 836 footerMainRoutes: 'Layanan Rute Utama', 837 footerPaymentMethod: 'Metode Pembayaran', 838 footerTicketTerms: 'Syarat & Ketentuan Tiket', 839 footerPackageTerms: 'Syarat & Ketentuan Titip Kirim Paket', 840 packageTrackingIconAlt: 'Ikon cek paket', 841 packageTrackingTitle: 'Cek Resi Paket Kamu', 842 packageCheck: 'Cek Paket', 843 packageReceiptNumber: 'Nomor Resi', 844 packageReceiptPlaceholder: 'Masukkan kode di sini', 845 packageReceiptRequired: 'Silakan masukkan nomor resi',
846 footerPopularRoutes: 'Rute Populer', 847 footerFAQ: 'FAQ', 848 footerAboutOperator: 'Tentang', 849 galleryTitle: 'Galeri', 850 galleryViewMore: 'Lihat Lebih Banyak', 851 galleryViewOthers: 'Lihat galeri lainnya', 852 galleryDefaultItemTitle: 'Galeri Perjalanan Terbaik', 853 galleryDefaultItemDescription: 'Lihat armada terbaik dan momen perjalanan nyaman bersama layanan shuttle profesional kami.', 854 galleryExplorePrefix: 'Telusuri Keindahan Perjalanan Bersama', 855 galleryExploreSuffix: 'Pengalaman Tanpa Batas, Destinasi Terbaik!', 856 galleryImageAlt: 'Galeri', 857 galleryEmptyImageAlt: 'Galeri belum tersedia', 858 galleryEmptyState: 'Galeri belum tersedia', 859 newsTitle: 'Berita', 860 newsFollowPrefix: 'Ikuti kabar dari', 861 newsFollowSuffix: 'termasuk rute, tarif, dan jadwal perjalanan', 862 newsTravelTipsTitle: 'Tips & Info Seputar Perjalanan', 863 newsTravelTipsDescription: 'Baca berbagai artikel menarik seputar tips perjalanan, destinasi wisata, dan info transportasi yang bermanfaat buat kamu.', 864 newsViewMore: 'Lihat Selengkapnya', 865 newsViewAll: 'Lihat Semua', 866 newsViewAllArticles: 'Lihat Semua Artikel', 867 newsImageAlt: 'Berita', 868 newsDefaultExcerpt: 'Dapatkan informasi perjalanan terbaru sebelum memulai perjalanan Anda.', 869 downloadInstallPrefix: 'Instal aplikasi', 870 downloadInstallSuffix: 'di Play Store dan App Store sekarang juga!', 871 downloadAppImageAlt: 'Aplikasi', 872 downloadPhoneImageAlt: 'Tampilan aplikasi di ponsel', 873 operatorDownloadTitle: 'Nikmati perjalanan lebih mudah bersama kami', 874 operatorDownloadDescription: 'Pesan tiket dan kelola perjalanan langsung dari ponsel Anda.', 875 operatorDownloadCallToAction: 'Unduh aplikasi sekarang!', 876 downloadAppPageTitle: 'Unduh Aplikasi', 877 downloadAppVisitWebsite: 'Kunjungi Website', 878 downloadAppShareLink: 'Bagikan Link', 879 downloadAppCopy: 'Salin', 880 downloadAppCopied: 'Tautan telah disalin.', 881 downloadAppOr: 'atau', 882 downloadAppDownloadQr: 'Unduh QR', 883 localeTitle: 'Pilih Bahasa & Mata Uang', 884 localeSearchPlaceholder: 'Cari bahasa atau mata uang...', 885 localeLanguage: 'Bahasa', 886 localeCurrency: 'Mata Uang', 887 localeCancel: 'Batal', 888 localeSaveChanges: 'Simpan Perubahan', 889 collapseGreeting: 'Hai, Teman ð', 890 collapseWelcome: 'Selamat datang di', 891 collapseSelfCheckin: 'Check-in Mandiri' 892 }, 893 en: { 894 bookingShuttle: 'Shuttle', 895 bookingMotorRental: 'Motorcycle Rental', 896 bookingRoundTrip: 'Round Trip?', 897 bookingDeparture: 'Departure', 898 bookingOrigin: 'Origin', 899 bookingSelectDeparture: 'Select Departure', 900 bookingSelectOrigin: 'Select Origin', 901 bookingDestination: 'Destination', 902 bookingSelectDestination: 'Select Destination', 903 bookingSelectDestinationLocation: 'Select Destination', 904 bookingSelectDate: 'Select Date', 905 bookingOneWay: 'One Way', 906 bookingDepartureDate: 'Departure Date', 907 bookingReturnDate: 'Return Date', 908 bookingPassenger: 'Passenger', 909 bookingPassengerCount: 'Number of Passengers', 910 bookingSelectPassenger: 'Select Passengers', 911 bookingPassengerUnit: 'Passenger(s)', 912 bookingPassengerSingular: 'passenger', 913 bookingPassengerPlural: 'passengers', 914 bookingSearch: 'Search', 915 bookingSearchTrip: 'Search Trip', 916 commonSearch: 'Search', 917 commonNoResults: 'No results', 918 commonSearching: 'Searching...', 919 bookingValidationDeparture: 'Please select a departure point', 920 bookingValidationDestination: 'Please select a destination', 921 bookingValidationDepartureDate: 'Please select a departure date', 922 bookingValidationReturnDate: 'Please select a return date', 923 bookingNoDeparture: 'No departures found', 924 bookingNoDestination: 'No destinations found', 925 bookingSearchLocation: 'Type a city, location, or area', 926 homepageNewsReadMore: 'Read More', 927 homepageNewsViewAll: 'View All News', 928 homepageNewsTitle: 'Latest Namaste Updates', 929 homepageNewsDescription: 'Stay informed about Namaste services, routes, and travel updates before starting your journey.', 930 homepageNewsDescriptionMobile: 'Stay informed about the latest Namaste services, routes, and travel updates.', 931 homepageViewMore: 'View More', 932 homepageFacilities: 'Facilities', 933 homepageServices: 'Services', 934 homepageAdvantages: 'Advantages', 935 homepageOurLocation: 'Our Location', 936 homepageRegisterMember: 'Register as Member', 937 homepageBookNow: 'Book Now', 938 homepageViewDetails: 'View Details', 939 homepageViewAllOutlets: 'View All Outlets', 940 homepageBookingTutorial: 'Booking Tutorial', 941 homepageChangeDeparture: 'Change Departure', 942 homepageFaq: 'FAQ', 943 homepageComingSoon: 'Coming Soon', 944 homepageBannerAlt: 'Promotional banner', 945 scheduleSelect: 'Select', 946 scheduleExpired: 'Schedule has passed', 947 scheduleInsufficientSeats: 'Not enough seats',
948 scheduleNotFound: 'Schedule not found', 949 scheduleDepartureArrival: 'departure - arrival', 950 scheduleTravelEstimate: 'Estimated travel time', 951 promoSpecialTitle: 'Special Promo!', 952 promoExclusiveTitle: 'Exclusive Promo', 953 promoInterestingTitle: 'Exciting Promos for You!', 954 promoBestLabel: 'ð¥ Best Promo', 955 promoSeatUnit: '/seat', 956 outletOurTitle: 'Our Outlets', 957 instagramFollowUs: 'Follow Us on Instagram', 958 homepageViewAll: 'View All', 959 homepageAll: 'All', 960 homepageAmount: 'Amount', 961 homepageDate: 'Date', 962 homepageLocation: 'Location', 963 serviceMore: 'Learn More â', 964 ansAgentTitle: 'ANS Agents', 965 ansAgentDescription: 'Find the nearest ANS agent in your city for information and the best service.', 966 homepageLatestNewsTitle: 'Latest Updates for Your Journey!', 967 homepageLatestNewsDescription: 'Discover exciting promos, new routes, and important travel information.', 968 blogPageTitle: 'Promos and News', 969 blogSearchPlaceholder: 'Search promos, news, or articles...', 970 blogSearchAria: 'Search promos, news, or articles', 971 blogSearchButton: 'Search', 972 blogSearchEmpty: 'No promos or news found', 973 blogReadMore: 'Read More', 974 blogEmpty: 'No articles yet', 975 blogPrevious: 'Previous', 976 blogNext: 'Next', 977 blogHome: 'Home', 978 blogTableOfContents: 'Table of Contents', 979 blogShare: 'Share', 980 blogAuthor: 'Author:', 981 blogPublished: 'Published:', 982 blogUpdated: 'Updated:', 983 blogShareFacebook: 'Share on Facebook', 984 blogShareX: 'Share on X', 985 blogCopyLink: 'Copy article link', 986 blogLinkCopied: 'Link copied successfully', 987 blogOtherNews: 'Other News', 988 blogPromoNews: 'Promos & News', 989 blogEmptyDetail: 'No News Available!', 990 blogEmptyImageAlt: 'No article image available', 991 rentalTitle: 'Rental', 992 rentalMotorTitle: 'Motorcycle Rental', 993 rentalContactUs: 'Contact Us', 994 rentalStartingFrom: 'Starting from', 995 rentalOrder: 'Book', 996 rentalBookNow: 'Book Now', 997 rentalTerms: 'Terms and Conditions', 998 rentalTourTerms: 'Rental & Tour Terms and Conditions', 999 rentalClose: 'Close', 1000 rentalFullName: 'Full Name', 1001 rentalFullNamePlaceholder: 'Enter your full name', 1002 rentalEmailPlaceholder: 'Enter your email', 1003 rentalPhone: 'Phone Number', 1004 rentalVehicle: 'Vehicle', 1005 rentalSelectVehicle: 'Select vehicle', 1006 rentalVehicleType: 'Vehicle Type', 1007 rentalUnitCount: 'Number of Units', 1008 rentalDecreaseUnit: 'Decrease unit', 1009 rentalIncreaseUnit: 'Increase unit', 1010 rentalDate: 'Rental Date', 1011 rentalDatePlaceholder: 'dd/mm/yyyy', 1012 rentalDuration: 'Duration', 1013 rentalDay: 'days', 1014 rentalAdditionalNote: 'Additional Notes', 1015 rentalAdditionalNotePlaceholder: 'Enter additional notes', 1016 rentalRequired: '*Required', 1017 rentalPrivacyPrefix: 'I authorize', 1018 rentalPrivacySuffix: 'to use the information above and contact me by email, phone, or other personal communication channels for customer service activities in accordance with the', 1019 rentalPrivacyConsent: 'Privacy Consent', 1020 rentalVehicleModel: 'Vehicle Model', 1021 rentalWeekly: 'Weekly Rental', 1022 rentalMonthly: 'Monthly Rental', 1023 rentalBestValue: 'Best Value', 1024 rentalFleetNavigation: 'Fleet selection navigation', 1025 rentalFleet: 'Fleet', 1026 rentalMotorCashbackValue: 'Cashback Value:', 1027 rentalMotorHeroAlt: 'Motorcycle rental in Bali', 1028 rentalMotorCtaAlt: 'Explore Bali by motorcycle', 1029 rentalReserveNow: 'Reserve Now', 1030 rentalMinimumVehicle: 'Select at least 1 vehicle unit.', 1031 rentalUnit: 'unit', 1032 rentalCustomerData: 'Customer Details:', 1033 rentalName: 'Name:', 1034 rentalRentalDetails: 'Rental Details:', 1035 rentalNote: 'Notes:', 1036 rentalMotorWhatsappGreeting: 'Hello, I would like to rent a motorcycle.', 1037 rentalBookTitle: 'Book Rental', 1038 rentalVehicleGreeting: 'Hello, I would like to rent a vehicle from', 1039 rentalNumberOfDays: 'Number of Days', 1040 rentalDestination: 'Destination', 1041 rentalDestinationPlaceholder: 'Example: Cimahi Town Square',
1042 rentalPickupPoint: 'Pickup Point', 1043 rentalPerDay: '/day', 1044 paymentPageTitle: 'Payment Methods', 1045 paymentPageDescription: 'Enjoy convenient and easy transactions.', 1046 paymentImageAlt: 'Payment methods', 1047 paymentHowToUse: 'HOW TO PAY USING', 1048 paymentUnavailableTitle: 'Payment Methods Are Unavailable', 1049 paymentUnavailableDescription: "Sorry, we can't show the payment methods right now. Please try again in a moment.", 1050 checkoutPersonalData: 'Personal Details', 1051 checkoutSelectSeat: 'Select Seat', 1052 checkoutComplete: 'Complete', 1053 checkoutNewUserVoucherBadge: 'Use the new-user discount voucher', 1054 checkoutUseVoucher: 'Use Voucher', 1055 checkoutNewUserVoucher: 'New User Voucher', 1056 checkoutTerms: 'Terms and Conditions', 1057 checkoutLoginToClaim: 'Log In to Claim', 1058 checkoutClaimVoucher: 'Claim Voucher', 1059 checkoutVoucherApplied: 'Voucher Applied', 1060 checkoutVoucherApplySuccess: 'Successfully applied!', 1061 checkoutLoadingData: 'Loading data ...', 1062 checkoutSelectPaymentMethod: 'Select Payment Method', 1063 checkoutBalance: 'Balance:', 1064 checkoutPriceDetails: 'Price Details', 1065 checkoutTermsAgreement: 'Please check this box to confirm that you understand and accept the terms and conditions imposed by the operator management', 1066 checkoutPrevious: 'Previous', 1067 checkoutConfirm: 'Confirm', 1068 checkoutAvailableVouchers: 'Available Vouchers', 1069 checkoutVoucherPlaceholder: 'Enter Voucher Code', 1070 checkoutApply: 'Apply', 1071 checkoutReadCarefully: 'Please Read', 1072 checkoutConfirmOrder: 'Confirm Your Order?', 1073 checkoutCancel: 'Cancel', 1074 checkoutTicketPrice: 'Ticket Price', 1075 checkoutTotalDiscount: 'Total Discount', 1076 checkoutServiceFee: 'Service Fee', 1077 checkoutTotalPayment: 'Total Payment', 1078 checkoutNoVouchers: 'No vouchers are available.', 1079 checkoutRemove: 'Remove', 1080 checkoutUse: 'Use', 1081 checkoutSelectPaymentAlert: 'Please select a payment method!', 1082 checkoutAcceptTermsAlert: 'Please accept the terms and conditions imposed by ASMAT and the Shuttle operator management.', 1083 checkoutTermsLoadError: 'An error occurred while retrieving the terms and conditions!', 1084 checkoutVoucherNewUserOnly: '*You do not meet the terms and conditions; this voucher is only valid for new users.', 1085 checkoutEarnPoints: 'Earn {{count}} Points', 1086 checkoutRegisterForPoints: '*Register as a member to earn cashback points', 1087 checkoutLoginRegisterForPoints: '*Log in and register as a member to earn cashback points', 1088 checkoutNoPoints: 'You do not have any points yet', 1089 checkoutLoginForPoints: 'Log in to pay with points', 1090 checkoutLoginNow: 'Log In Now', 1091 checkoutMealPackage: 'Meal Package', 1092 checkoutMealDescription: 'Make your journey more comfortable by adding your favorite meal package!', 1093 checkoutMealAddonTitle: 'Meal Package Add-on', 1094 checkoutClose: 'Close', 1095 checkoutAddPackageFor: 'Add package for:', 1096 checkoutSelectPassenger: 'Select at least one passenger.', 1097 checkoutNotePlaceholder: 'Add a note...', 1098 checkoutAdd: 'Add', 1099 checkoutOrderer: 'Orderer', 1100 checkoutNoteShort: 'Note', 1101 checkoutAddMealPackage: 'Add meal package', 1102 checkoutRemoveMealPackage: 'Remove meal package', 1103 completionOrderCreated: 'Order Created!', 1104 completionBookingCode: 'Booking Code', 1105 completionPaymentCode: 'Payment Code', 1106 completionCopy: 'COPY', 1107 completionPaymentCodeCopied: 'Payment code copied successfully.', 1108 completionPaymentDeadline: 'Payment Deadline', 1109 completionPayNow: 'Pay Now', 1110 completionDiscount: 'Discount', 1111 completionAdminFee: 'Admin Fee', 1112 completionPickupFee: 'Pickup Fee', 1113 completionDropoffFee: 'Drop-off Fee', 1114 completionFoodAddon: 'Meal Add-on', 1115 completionPaymentGuide: 'Ticket Payment Guide via', 1116 completionHistoryGuide: 'You can view your transaction history through the app or website.', 1117 completionHistoryApp: 'Using the App: Log in with the phone number used to book the ticket, then open the âHistoryâ menu.', 1118 completionHistoryWeb: 'Using the Website: Open Reservations and enter the phone number used to book the ticket, or open Check Booking and enter your booking code.', 1119 completionThankYou: 'Thank you for choosing', 1120 completionTicketDetails: 'Ticket Details', 1121 surveyFillPrompt: 'Please complete the information below', 1122 surveyHearOpinion: 'We Want to Hear Your Opinion!', 1123 surveyDescription: 'Help us improve your experience by answering a few short questions. Your opinion means a lot to us!', 1124 surveyEstimatedTime: 'Estimated completion time:', 1125 surveyFiveMinutes: '5 Minutes', 1126 surveyStart: 'Start Survey', 1127 surveyDoNotShowAgain: 'Do not show again', 1128 surveyClose: 'Close', 1129 surveyThankYou: 'Thank you for your feedback!', 1130 surveyThankYouDescription: 'Your feedback helps us continue improving our service. We appreciate your time and hope to provide the best experience on your next journey.', 1131 surveyOf: 'of', 1132 surveyQuestions: 'questions', 1133 surveyNext: 'Next', 1134 surveySubmit: 'Submit Answers', 1135 surveyError: 'An Error Occurred', 1136 ticketBack: 'Back', 1137 ticketOrderDetails: 'Order Details', 1138 ticketCompletePaymentBefore: 'Complete payment before', 1139 ticketPaymentFailed: 'Ticket payment was unsuccessful', 1140 ticketPaymentChangeSuccess: 'Payment method changed successfully!', 1141 ticketPaymentChangeFailed: 'Failed to change the payment method!', 1142 ticketPayment: 'Payment', 1143 ticketHowToPayVia: 'How to Pay Via', 1144 ticketPayWith: 'Pay with', 1145 ticketChangePaymentMethod: 'Change Payment Method', 1146 ticketPaymentStatus: 'Payment Status', 1147 ticketPaid: 'Paid', 1148 ticketCancelled: 'Cancelled', 1149 ticketPassengerData: 'Passenger Data', 1150 ticketDepartureData: 'Departure Data', 1151 ticketReturnData: 'Return Data', 1152 ticketChanged: 'Rescheduled', 1153 ticketReschedulePaymentNotice: 'Please complete payment to finalize the schedule change', 1154 ticketBookerData: 'Booker Data', 1155 ticketPhoneNumber: 'Phone Number', 1156 ticketOrderTime: 'Order Time', 1157 ticketInformation: 'Information', 1158 ticketAirline: 'Airline', 1159 ticketTerminal: 'Terminal', 1160 ticketLandingTime: 'Landing Time', 1161 ticketPrice: 'Price', 1162 ticketTotalPrice: 'Total Price', 1163 ticketNotFound: 'Order Details Not Found', 1164 ticketPickupDropoffDetails: 'Pickup and Drop-off Area Details', 1165 ticketRouteDetails: 'Route Details', 1166 ticketOutbound: 'Outbound', 1167 ticketBarcodePaidOnly: 'The barcode is only available after payment is completed', 1168 ticketPointsEarned: 'Congratulations, you earned points!', 1169 ticketPointsDescription: 'View the points you have earned on your profile page.', 1170 ticketProfile: 'Profile', 1171 ticketLinkCopied: 'Link copied successfully!', 1172 ticketDownload: 'Download', 1173 ticketPrint: 'Print', 1174 ticketMemberOnly: '*Members only', 1175 ticketRateNow: 'Rate your trip now', 1176 ticketRateTrip: 'Rate this trip', 1177 ticketRatingDeadline: 'Available for up to 24 hours after the trip is completed', 1178 ticketRatingDescription: 'Your review helps us improve our service and provide you with the best transportation experience.', 1179 ticketRatingShortDescription: 'Tell us through your rating. Your review means a lot to us!', 1180 ticketEarnPointsAfterRating: 'after submitting your rating!', 1181 ticketSeatCode: 'Seat Code:',
1182 ticketVehicleCode: 'Vehicle Code', 1183 ticketLicensePlate: 'License Plate', 1184 ticketMutationTerms: 'Reschedule Terms & Conditions', 1185 contactPageTitle: 'Contact', 1186 contactUsTitle: 'Contact Us', 1187 contactDescription: 'Feel free to contact our call center whenever you need assistance.', 1188 contactOurLocation: 'Our Location', 1189 contactAddressLabel: 'Address:', 1190 contactOfficeAddress: 'Office Address', 1191 contactCallCenter: 'Call Center:', 1192 contactHotline: 'Hotline:', 1193 contactEmailLabel: 'Email:', 1194 contactFollowUs: 'Follow Us:', 1195 contactDownloadApp: 'Download the App:', 1196 contactNow: 'Contact Now', 1197 contactViewMap: 'View Map', 1198 contactFastResponse: 'Fast response and friendly customer service', 1199 contactServiceHours: 'Our Service Center operating hours:', 1200 contactBranches: 'Branches', 1201 contactImageAlt: 'Contact', 1202 contactOfficesOutlets: 'Offices & Outlets', 1203 contactHelpInformation: 'Help & Information Center', 1204 ticketPageTitle: 'Check Booking', 1205 ticketCheckTitle: 'Check Ticket', 1206 ticketCheckOrder: 'Check Booking', 1207 ticketCheckBooking: 'Check Ticket Booking', 1208 ticketBookingCode: 'Booking Code', 1209 ticketCodePlaceholder: 'Enter Code Here', 1210 ticketBookingCodePlaceholder: 'Enter booking code', 1211 ticketCodeRequired: 'Please enter your booking code', 1212 ticketCodeNotFound: 'Booking code not found. Please make sure the code you entered is correct.', 1213 ticketCheckImageAlt: 'Check ticket', 1214 ticketReserveNow: 'Reserve Now', 1215 memberPageTitle: 'Profile', 1216 memberProfile: 'Profile', 1217 memberAccount: 'Account', 1218 memberTransactions: 'Transactions', 1219 memberReservationList: 'Reservation List', 1220 memberRatings: 'Ratings', 1221 memberVoucherList: 'Voucher List', 1222 memberVoucherHistory: 'Voucher History', 1223 memberBundlingTransactions: 'Bundling Transactions', 1224 memberLogout: 'Log Out', 1225 memberUpdateSuccess: 'Profile updated successfully.', 1226 memberUpdateFailed: 'Failed to update profile.', 1227 memberBirthdayPromo: 'Complete your details to receive a special discount on your birthday.', 1228 memberBirthdayPromoDesc: 'Do not miss this opportunity to celebrate your special moment for less!', 1229 memberCompleteData: 'Complete Details', 1230 memberHello: 'Hello', 1231 memberProfileDescription: 'Your detailed profile information', 1232 memberEditProfile: 'Edit Profile', 1233 memberFullName: 'Full Name', 1234 memberPhone: 'Phone Number', 1235 memberEmail: 'Email', 1236 memberAddress: 'Address', 1237 memberBirthDate: 'Date of Birth', 1238 memberGender: 'Gender', 1239 memberStatus: 'Status', 1240 memberCode: 'Member Code', 1241 memberJoinBenefit: 'Join as a member and enjoy the benefits for free!', 1242 memberUpgrade: 'Upgrade Membership', 1243 memberCheckEmailVerification: 'Please check your email for verification', 1244 memberMembership: 'Membership', 1245 memberExpiryDate: 'Expiry Date', 1246 memberYourPoints: 'Your Points', 1247 memberPointHistory: 'Point History', 1248 memberPointHistoryEmpty: 'No Point History Available', 1249 memberTicketReservation: 'Ticket Reservation', 1250 memberProfileNotFound: 'No profile details found', 1251 memberPending: 'Pending', 1252 memberJoinTitle: 'Come Join as a Member!', 1253 memberJoinDescription: 'Get exclusive benefits and enjoy more affordable trips!', 1254 memberEditDescription: 'Please enter your personal information correctly.', 1255 memberNamePlaceholder: 'Enter your name', 1256 memberEmailPlaceholder: 'Enter email', 1257 memberSelectStatus: 'Select Status', 1258 memberCompleteForm: 'Please complete the form first', 1259 memberBirthPlace: 'Place of Birth', 1260 memberIdentityNumber: 'Identity Number', 1261 memberPostalCode: 'Postal Code', 1262 memberCity: 'City', 1263 memberOccupation: 'Occupation', 1264 memberChooseFile: 'Choose File', 1265 memberNoFileChosen: 'No file chosen', 1266 jobStudent: 'Student', 1267 jobEmployee: 'Employee', 1268 jobProfessional: 'Professional', 1269 jobSelfEmployed: 'Self-employed', 1270 jobEntrepreneur: 'Entrepreneur', 1271 jobFreelancer: 'Freelancer', 1272 jobUnemployed: 'Unemployed', 1273 jobCivilServant: 'Civil Servant', 1274 jobHousewife: 'Housewife', 1275 memberType: 'Membership Type', 1276 memberSelfiePhoto: 'Face Selfie', 1277 memberIdentityPhoto: 'Identity Document Photo', 1278 memberSubmitSuccess: 'Data submitted successfully!', 1279 memberSubmitFailed: 'Failed to submit data', 1280 memberCompleteDataFirst: 'Please complete your data first.', 1281 memberHeicConversionFailed: 'Failed to convert the HEIC file. Please upload a JPG file.', 1282 memberRegistrationSuccess: 'Member registration successful', 1283 memberRegistrationCheckEmail: 'Member registration was successful. Please check your email to activate your membership.', 1284 memberRequiredPhotoMissing: 'A required photo has not been uploaded', 1285 memberRegisterTitle: 'Member Registration', 1286 memberUpdateTitle: 'Update Membership', 1287 memberPoints: 'Points', 1288 commonSave: 'Save', 1289 commonSuccess: 'Success!', 1290 commonFailed: 'Failed!', 1291 validationRequiredPrefix: 'Please enter ', 1292 validationDigitsSuffix: ' must contain numbers only', 1293 validationInvalidFormatPrefix: 'The ',
1294 validationInvalidSuffix: ' format is invalid', 1295 validationUploadRequired: 'This file is required', 1296 validationImageFormat: 'The file must be JPG, PNG, or HEIC', 1297 validationFileMax5Mb: 'The file must not exceed 5MB', 1298 validationNameMin: 'Name must contain at least 3 letters', 1299 validationNameMax: 'Name may contain up to 30 letters', 1300 validationEmailMin: 'Email must contain at least 8 characters', 1301 validationEmailMax: 'Email may contain up to 64 characters', 1302 validationPhoneMin: 'Phone number must contain at least 9 digits', 1303 validationPhoneMax: 'Phone number may contain up to 16 digits', 1304 validationAddressMin: 'Address must contain at least 10 characters', 1305 validationAddressMax: 'Address may contain up to 128 characters', 1306 validationBirthDateRequired: 'Please enter your date of birth', 1307 validationDigitsOnly: 'This field may only contain numbers', 1308 validationFileTooLarge: 'The file is too large', 1309 validationLettersOnly: 'Name may only contain letters and spaces', 1310 validationNumbersOnly: 'Please enter numbers only', 1311 validationEmailInvalid: 'Invalid email format', 1312 validationFieldRequired: 'This field is required', 1313 validationNameRequired: 'Please enter your name', 1314 validationEmailRequired: 'Please enter your email', 1315 validationPhoneRequired: 'Please enter your phone number', 1316 validationGenderRequired: 'Please select your gender', 1317 validationBirthPlaceRequired: 'Please enter your place of birth', 1318 validationIdentityRequired: 'Please enter your identity number', 1319 validationIdentityLength: 'Identity number must contain 16 digits', 1320 validationOccupationRequired: 'Please select your occupation', 1321 validationAddressRequired: 'Please enter your address', 1322 validationCityRequired: 'Please enter your city', 1323 validationPostalCodeRequired: 'Please enter your postal code', 1324 validationMemberTypeRequired: 'Please select a membership type', 1325 validationIdentityPhotoRequired: 'Please upload your identity document photo', 1326 validationSelfieRequired: 'Please upload your selfie', 1327 reservationHistoryTitle: 'Reservation History', 1328 reservationAwaitingPayment: 'Awaiting Payment', 1329 reservationCancelled: 'Cancelled', 1330 reservationPaid: 'Paid', 1331 reservationNeedsRating: 'Rating Required', 1332 reservationBookAgain: 'Book Again', 1333 reservationBookingDetail: 'Booking Details', 1334 reservationEmptyTitle: 'No Ticket Reservation History Found', 1335 reservationEmptyDescription: 'Click the button below to make a ticket reservation.', 1336 reservationEmptyImageAlt: 'Empty reservation history', 1337 reservationCreate: 'Make a Reservation', 1338 reservationScanMe: 'Scan Me!', 1339 reservationBookingCode: 'Booking Code:', 1340 reservationConfirmLogout: 'Are you sure you want to log out?', 1341 reservationBarcodePaidOnly: 'The barcode is only available after payment is completed', 1342 reservationLoadError: 'An error occurred while retrieving reservation data', 1343 reservationTicket: 'Book a Ticket', 1344 ratingPageTitle: 'Trip Ratings', 1345 ratingPageDescription: 'Completed transactions that have not been rated', 1346 ratingNotRated: 'Not rated yet', 1347 ratingGiveRating: 'Give a Rating', 1348 ratingEmptyTitle: 'No Ratings Yet', 1349 ratingEmptyDescription: 'There are currently no transactions that need to be rated.', 1350 ratingEmptyImageAlt: 'No ratings yet', 1351 voucherPageTitle: 'Voucher List', 1352 voucherMyVouchers: 'My Vouchers', 1353 voucherValidUntil: 'Valid until', 1354 voucherEmptyTitle: 'You do not have any vouchers yet', 1355 voucherEmptyImageAlt: 'No vouchers yet', 1356 voucherDetail: 'Voucher Details', 1357 voucherCopy: 'Copy', 1358 voucherHowToUse: 'How to Use', 1359 voucherTerms: 'Terms & Conditions', 1360 voucherNoInstructions: 'No usage instructions available.', 1361 voucherHistoryPageTitle: 'Voucher History', 1362 voucherHistoryTitle: 'Voucher Usage History', 1363 voucherPromoFallback: 'Promo Voucher', 1364 voucherTrip: 'Trip:', 1365 voucherHistoryEmpty: 'No voucher usage history yet', 1366 voucherHistoryEmptyImageAlt: 'Empty voucher history', 1367 paymentChannelEmptyTitle: 'Payment methods are unavailable', 1368 paymentChannelEmptyDescription: 'Please try again in a few moments.', 1369 paymentChannelEmptyImageAlt: 'Payment methods are unavailable', 1370 bundlingHistoryEmpty: 'No bundling transaction history yet', 1371 bundlingHistoryEmptyImageAlt: 'Empty bundling history', 1372 loginPageTitle: 'Log In & Register', 1373 loginRegisterTitle: 'Log In & Register', 1374 loginWithPhone: 'Log In with Phone Number', 1375 loginWithWhatsapp: 'Log In with WhatsApp', 1376 loginWithEmail: 'Log In with Email', 1377 loginWithGoogle: 'Log In with Google', 1378 loginContinueTitle: 'Log In to Continue', 1379 loginButton: 'Log In', 1380 loginCheckPhone: 'Please check your phone number', 1381 loginCheckEmail: 'Please check your email', 1382 loginTryAnotherMethod: 'try another login method', 1383 loginVerificationNotice: 'Before continuing, please complete verification for your security and convenience. Thank y
1383ou for your understanding.', 1384 loginPhoneVerification: 'Phone Number Verification', 1385 loginVerifyBeforeContinue: 'Please complete verification before continuing.', 1386 loginWithPhoneShort: 'With Phone Number', 1387 loginWithWhatsappShort: 'With WhatsApp Number', 1388 loginWithEmailShort: 'With Email', 1389 loginWithGoogleShort: 'With Google', 1390 loginPopupBlocked: 'The Google login pop-up was blocked by your browser. Please click Google Login again to continue.', 1391 loginUnauthorizedDomain: 'This domain is not authorized. Please add it to your Firebase console.', 1392 loginGenericError: 'An error occurred during login', 1393 loginOtpError: 'An error occurred while verifying the OTP', 1394 loginPhoneRequired: 'Please enter your phone number', 1395 loginPhoneMin: 'Phone number must contain at least 9 digits', 1396 loginPhoneMax: 'Phone number may contain up to 16 digits', 1397 loginEmailRequired: 'Please enter your email', 1398 loginEmailInvalid: 'Invalid email address', 1399 loginEmailMin: 'Email must contain at least 8 characters', 1400 loginEmailMax: 'Email may contain up to 64 characters', 1401 loginLogoAlt: 'Operator logo', 1402 loginVerificationImageAlt: 'Account verification', 1403 otpPageTitle: 'OTP Verification', 1404 otpEnterCode: 'Enter OTP Code', 1405 otpCodeSentTo: 'The code will be sent to', 1406 otpCodePlaceholder: 'Enter the 6-Digit OTP Code', 1407 otpContinue: 'Continue', 1408 otpResendIn: 'Resend OTP in', 1409 otpResend: 'Resend', 1410 otpAttemptsExhausted: 'You have reached the login attempt limit. Please try again later', 1411 otpRequestError: 'An error occurred while requesting the OTP', 1412 otpSessionExpired: 'Your session has expired. Please refresh the page', 1413 otpVerifyError: 'An error occurred while verifying the OTP', 1414 registerTitle: 'Create an Account', 1415 registerDescription: 'Please enter your personal information correctly to create an account.', 1416 registerName: 'Name', 1417 registerFirstName: 'First Name', 1418 registerLastName: 'Last Name', 1419 registerPhone: 'Phone Number', 1420 registerPhonePlaceholder: 'Enter Phone Number', 1421 registerEmail: 'Email', 1422 registerEmailPlaceholder: 'Enter Your Email', 1423 registerBirthDate: 'Date of Birth', 1424 registerBirthDatePlaceholder: 'Select date of birth', 1425 registerGender: 'Gender', 1426 registerMale: 'Male', 1427 registerFemale: 'Female', 1428 registerAddress: 'Address', 1429 registerAddressPlaceholder: 'Enter address', 1430 registerReferral: 'Referral Code', 1431 registerReferralOptional: 'Referral Code (optional)', 1432 registerButton: 'Register', 1433 scheduleSelectNew: 'Select a New Schedule', 1434 scheduleOutbound: 'Outbound', 1435 scheduleReturn: 'Return', 1436 scheduleShowing: 'Showing', 1437 scheduleBestSchedules: 'Best Schedules', 1438 scheduleEstimatedJourney: 'Estimated Journey', 1439 scheduleDepartureArrival: 'Departure - Arrival:', 1440 scheduleSeatsAvailable: 'Seats Available', 1441 scheduleSeatsSoldOut: 'Seats Sold Out', 1442 scheduleAvailable: 'Available', 1443 scheduleSeatsAvailableLower: 'seats available', 1444 scheduleTransit: 'Transit', 1445 scheduleDirect: 'Direct', 1446 scheduleEarnPoints: 'Earn points', 1447 scheduleInsufficientSeats: 'Not Enough Seats', 1448 scheduleSoldOut: 'Sold Out', 1449 scheduleOnlineBookingClosed: 'Online Booking Is Closed', 1450 schedulePassed: 'Schedule Has Passed', 1451 scheduleSelect: 'Select', 1452 scheduleJourneyDetails: 'Journey Details', 1453 scheduleFullyBookedTitle: 'Sorry, This Schedule Is Fully Booked!', 1454 scheduleNotFound: 'No Schedule Found', 1455 scheduleSelectReturnDate: 'Please select a return date', 1456 scheduleSelectReturnSchedule: 'Please select a return schedule', 1457 scheduleSelectOutboundSchedule: 'Please select an outbound schedule', 1458 scheduleSelectDeparture: 'Please select a departure point', 1459 scheduleSelectSchedule: 'Select a Schedule', 1460 scheduleSelectDestination: 'Please select a destination', 1461 scheduleSelectDepartureDate: 'Please select a departure date', 1462 scheduleSelectOutboundDate: 'Please select an outbound date', 1463 scheduleSeatUnit: 'seats', 1464 scheduleReserveWhatsapp: 'Reserve via WhatsApp', 1465 scheduleTransitStopAt: 'Transit stop at', 1466 scheduleForDuration: 'for', 1467 scheduleMinutes: 'minutes', 1468 scheduleFullyBookedDescription: 'Unfortunately, all these schedules are fully booked. Try another departure point or date.', 1469 scheduleHours: 'hours', 1470 scheduleViewJourneyDetails: 'View Journey Details', 1471 scheduleDepartureScheduleDetails: 'Departure Schedule Details', 1472 scheduleDepartureDetails: 'Departure Details', 1473 scheduleReturnScheduleDetails: 'Return Schedule Details', 1474 scheduleViewLocation: 'View Location', 1475 scheduleDiscount: 'Discount', 1476 schedulePromo: 'Promo', 1477 scheduleFilterAria: 'Filter schedules and services', 1478 scheduleFilterTitle: 'Schedule & Service Filters', 1479 scheduleOriginArea: 'Origin Area', 1480 scheduleDestinationArea: 'Destination Area', 1481 scheduleAreaUnavailable: 'Area unavailable', 1482 scheduleDepartureTime: 'Departure Time', 1483 scheduleArrivalTime: 'Arrival Time', 1484 scheduleService: 'Service', 1485 scheduleSearch: 'Search', 1486 scheduleFilterEmpty: 'No schedules match the selected filters.', 1487 scheduleRoutesAvailable: 'Routes Available',
1488 schedulePickupPoint: 'Pickup Point', 1489 scheduleDropoffPoint: 'Drop-off Point', 1490 scheduleSelectDepartureTime: 'Select Departure Time', 1491 scheduleSelectReturnTime: 'Select Return Time', 1492 scheduleRouteNotFound: 'No routes found.', 1493 schedulePromoFilterAria: 'Filter promotional schedules', 1494 scheduleAllSchedules: 'All Schedules', 1495 scheduleSort: 'Sort By', 1496 scheduleSortDefault: 'Default', 1497 scheduleLowestPrice: 'Lowest Price', 1498 scheduleHighestPrice: 'Highest Price', 1499 scheduleEarliestDeparture: 'Earliest Departure', 1500 scheduleLatestDeparture: 'Latest Departure', 1501 scheduleNoPromo: 'No promotional schedules are currently available.', 1502 scheduleLoadMore: 'Show More Schedules', 1503 scheduleLoadFailed: 'Failed to load schedules', 1504 scheduleRoutePointsRequired: 'Please select a pickup and drop-off point', 1505 scheduleNewUserPrice: 'New User Price', 1506 scheduleWebsiteNewUserDiscount: 'Website New User Discount', 1507 scheduleSeatLayoutNotFound: 'Sorry, the seat layout was not found. Please select another schedule.', 1508 scheduleSeatPrice: 'Seat Price', 1509 scheduleAdditionalFee: 'Additional Fee', 1510 scheduleTotalPriceDifference: 'Total Price Difference', 1511 scheduleTicketPrice: 'Ticket Price', 1512 scheduleTotal: 'Total', 1513 scheduleBookerName: 'Booker Name', 1514 schedulePassengerDetails: 'Passenger Details', 1515 scheduleAddress: 'Address', 1516 schedulePhone: 'Phone', 1517 scheduleEmail: 'Email', 1518 scheduleNewUserDiscount: 'New User Discount', 1519 scheduleCreateAccount: 'Create Account', 1520 navHome: 'Home', 1521 navAbout: 'About', 1522 navAboutUs: 'About Us', 1523 navOutlet: 'Outlet', 1524 outletPageTitle: 'Outlet Locations', 1525 outletPageDescription: 'Search outlets by location and find a physical pool or virtual point near you.', 1526 outletSearchPlaceholder: 'Search outlets...', 1527 outletFilter: 'Filter', 1528 outletReset: 'Reset', 1529 outletType: 'Type', 1530 outletPhysicalPool: 'Physical Pool', 1531 outletVirtualPoint: 'Virtual Point', 1532 outletCity: 'City', 1533 outletAvailable: 'Outlets Available', 1534 outletAddress: 'Address', 1535 outletOperatingHours: 'Operating Hours', 1536 outletOpen: 'Open', 1537 outletClose: 'Close', 1538 outletPostalCode: 'Postal Code', 1539 outletContact: 'Contact', 1540 outletViewMaps: 'View on Maps', 1541 outletResultsFound: 'results found', 1542 outletShowLess: 'Show Less', 1543 outletShowAll: 'View All', 1544 outletNoData: 'Outlet data is unavailable', 1545 outletIn: 'Outlets in', 1546 navBlog: 'Blog', 1547 navPaymentGuide: 'Payment Guide', 1548 navMotorRental: 'Motorcycle Rental', 1549 navTravelGuide: 'Travel Guide', 1550 navAdvertisingServices: 'Advertising and Services', 1551 navBundling: 'Bundling', 1552 navDownloadLink: 'this link', 1553 navOfficialWebsitePrefix: 'Official Website of', 1554 navPrimaryAria: 'Primary Navigation', 1555 navDownloadAppAt: 'download the app at', 1556 navContact: 'Contact', 1557 navGallery: 'Gallery', 1558 navNews: 'News', 1559 navPromo: 'Promotions', 1560 navRental: 'Rental', 1561 navFaq: 'FAQ', 1562 navTerms: 'Terms & Conditions', 1563 navPackage: 'Package', 1564 navTourism: 'Tourism', 1565 navCheckBooking: 'Check Booking', 1566 navCheckTicket: 'Check Ticket', 1567 navCheckPackage: 'Track Package', 1568 navSendPackage: 'Send Package', 1569 navDownloadApp: 'Download App', 1570 navAccount: 'Account', 1571 navRegisterLogin: 'Register/Login', 1572 navLogin: 'Login', 1573 navProfile: 'Profile', 1574 navMyVoucher: 'My Vouchers', 1575 navMyTransaction: 'My Transactions', 1576 navBundlingTransaction: 'Bundling Transactions', 1577 navLogout: 'Logout', 1578 navNew: 'New', 1579 logoutConfirmation: 'Are you sure you want to logout?', 1580 commonNo: 'No', 1581 commonYes: 'Yes', 1582 commonLoading: 'Loading...', 1583 commonHello: 'Hello', 1584 commonChatNow: 'Chat Now', 1585 commonClose: 'Close', 1586 commonChange: 'Change', 1587 passengerPageTitle: 'Passenger Details', 1588 passengerPersonalData: 'Personal Details', 1589 passengerBookerData: 'Booker Details', 1590 passengerBookerName: 'Booker Name', 1591 passengerBookerNamePlaceholder: 'Enter the booker name', 1592 passengerBookerEmail: 'Booker Email', 1593 passengerEmailPlaceholder: 'Enter Email', 1594 passengerEmailPurpose: 'Email is required to send the e-ticket, payment code, and OTP', 1595 passengerUsingUserEmail: '*Using the account email', 1596 passengerPhone: 'Phone Number', 1597 passengerPhonePlaceholder: 'Enter Phone Number', 1598 passengerUsingUserPhone: '*Using the account phone number', 1599 passengerAddress: 'Address', 1600 passengerAddressPlaceholder: 'Enter Address', 1601 passengerData: 'Passenger Details', 1602 passengerName: 'Passenger Name', 1603 passengerNamePlaceholder: 'Enter passenger name',
1604 passengerBookerIsPassenger: 'The booker is also a passenger', 1605 passengerPickupDropoffData: 'Pickup & Drop-off Address Details', 1606 passengerPickupDropoffType: 'Pickup & Drop-off Type', 1607 passengerPickupAddress: 'Pickup Address', 1608 passengerPickupAddressPlaceholder: 'Enter Pickup Address', 1609 passengerPickupArea: 'Pickup Area', 1610 passengerSelectPickupArea: 'Select Pickup Area', 1611 passengerDropoffAddress: 'Drop-off Address', 1612 passengerDropoffAddressPlaceholder: 'Enter Drop-off Address', 1613 passengerDropoffArea: 'Drop-off Area', 1614 passengerSelectDropoffArea: 'Select Drop-off Area', 1615 passengerPrevious: 'Previous', 1616 passengerPayment: 'Payment', 1617 passengerSelectSeat: 'Select Seat', 1618 passengerFinished: 'Finished', 1619 passengerUniqueName: 'Passenger names must be different.', 1620 passengerEnterBookerFirst: 'Please enter the booker name first!', 1621 passengerValidationBookerRequired: 'Please enter the booker name', 1622 passengerValidationBookerMin: 'The booker name must contain at least 3 letters', 1623 passengerValidationBookerMax: 'The booker name must not exceed 30 letters', 1624 passengerValidationEmailRequired: 'Please enter an email address', 1625 passengerValidationEmailInvalid: 'Please enter a valid email address', 1626 passengerValidationEmailMin: 'The email must contain at least 8 characters', 1627 passengerValidationEmailMax: 'The email must not exceed 64 characters', 1628 passengerValidationAddressRequired: 'Please enter an address', 1629 passengerValidationAddressMax: 'The address must not exceed 128 characters', 1630 passengerValidationPhoneRequired: 'Please enter a phone number', 1631 passengerValidationPhoneMin: 'The phone number must contain at least 9 digits', 1632 passengerValidationPhoneMax: 'The phone number must not exceed 16 digits', 1633 passengerValidationNameRequired: 'Please enter the passenger name', 1634 passengerValidationNameMin: 'The passenger name must contain at least 3 letters', 1635 passengerValidationNameMax: 'The passenger name must not exceed 30 letters', 1636 passengerValidationPickupAddressRequired: 'Please enter the pickup address', 1637 passengerValidationPickupAreaRequired: 'Please select a pickup area', 1638 passengerValidationDropoffAddressRequired: 'Please enter the drop-off address', 1639 passengerValidationDropoffAreaRequired: 'Please select a drop-off area', 1640 seatPageTitle: 'Select Seat', 1641 seatChooseBest: 'Choose your preferred seat!', 1642 seatOutbound: 'Outbound', 1643 seatReturn: 'Return', 1644 seatBooked: 'Booked', 1645 seatYourChoice: 'Your Selection', 1646 seatAvailable: 'Available', 1647 seatView: 'View:', 1648 seatNote: 'Note:', 1649 seatFlexibleLayoutNote: 'The vehicle and seat layout shown during reservation are flexible and may be adjusted to improve travel efficiency.', 1650 seatChildTicketNote: 'Children aged 2 years or taller than 100 cm must purchase a ticket.', 1651 seatAvailabilityNote: 'Seats may be booked by another user who completes their purchase first.', 1652 seatPassengerList: 'Passenger List', 1653 seatTotal: 'Total', 1654 seatNext: 'Next', 1655 seatReturnSeat: 'Select Return Seat', 1656 seatNextSelection: 'Select Next Seat', 1657 seatChange: 'Change Seat', 1658 seatDriver: 'DRIVER', 1659 seatPromo: 'Sale', 1660 seatNotSelected: 'You have not selected a seat', 1661 seatLayoutUnavailable: 'Seat layout data is unavailable', 1662 seatNumberPrefix: 'Seat', 1663 seatPriceBeforeReschedule: 'Price Before Rescheduling', 1664 seatPriceBeforeChange: 'Price Before Change', 1665 locationUnavailable: 'Location unavailable', 1666 locationLoadFailed: 'Failed to load location', 1667 locationAllowAccess: 'Allow location access', 1668 locationFallback: 'Location', 1669 footerCallCenter: 'Call Center', 1670 footerPhone: 'Phone', 1671 footerWhatsapp: 'WhatsApp Message', 1672 footerScheduleRouteInfo: 'Schedule & Route Information', 1673 footerEmail: 'Email', 1674 footerInformation: 'Information', 1675 footerAboutUs: 'About Us', 1676 footerContact: 'Contact', 1677 footerCareer: 'Career', 1678 careerVacanciesTitle: 'Job Vacancies', 1679 careerVacanciesDescription: 'Interested in joining our company? Send us your CV.', 1680 careerVacanciesImageAlt: 'Job vacancies', 1681 careerAvailablePositions: 'Available positions:', 1682 careerDetail: 'Details', 1683 careerSubmitApplication: 'Submit Application', 1684 careerEmptyImageAlt: 'No career vacancies available', 1685 careerEmptyState: 'No career vacancies are currently available', 1686 footerTourism: 'Tourism', 1687 footerPaymentGuide: 'Payment Guide', 1688 footerPrivacyPolicy: 'Privacy Policy', 1689 footerTerms: 'Terms & Conditions', 1690 footerSocialMedia: 'Social Media', 1691 footerFollowUs: 'Follow Us', 1692 footerDownloadApp: 'Download App', 1693 footerOthers: 'Others', 1694 footerCompany: 'Company', 1695 footerAllRightsReserved: 'All Rights Reserved', 1696 footerMenu: 'Menu', 1697 footerServices: 'Services', 1698 footerOurServices: 'Our Services', 1699 footerContactUs: 'Contact Us', 1700 footerDailyRental: 'Daily Car Rental', 1701 footerMonthlyRental: 'Monthly Car Rental', 1702 footerYearlyRental: 'Yearly Car Rental', 1703 footerTourRental: 'Tour Car Rental', 1704 footerWeddingRental: 'Wedding Car Rental', 1705 footerOpen: 'Open', 1706 footerTravelDescription: 'Enjoy a hassle-free journey with the best transportation service from BTM Shuttle.', 1707 footerSchedule: 'Schedule', 1708 footerAgentRegistration: 'Agent Registration', 1709 footerLogistics: 'Logistics', 1710 footerFeedback: 'Feedback', 1711 footerLegalInfo: 'Legal Information', 1712 footerOffice: 'Office', 1713 footerPool: 'Pool', 1714 footerEveryDay: 'Every Day', 1715 footerUntil: 'to', 1716 footerLogoAlt: 'Company logo', 1717 footerLocationAlt: 'Location', 1718 footerMainRoutes: 'Main Route Services', 1719 footerPaymentMethod: 'Payment Methods', 1720 footerTicketTerms: 'Ticket Terms & Conditions', 1721 footerPackageTerms: 'Package Delivery Terms & Conditions', 1722 packageTrackingIconAlt: 'Package tracking icon', 1723 packageTrackingTitle: 'Track Your Package', 1724 packageCheck: 'Track Package', 1725 packageReceiptNumber: 'Tracking Number', 1726 packageReceiptPlaceholder: 'Enter your tracking number', 1727 packageReceiptRequired: 'Please enter a tracking number',
1728 footerPopularRoutes: 'Popular Routes', 1729 footerFAQ: 'FAQ', 1730 footerAboutOperator: 'About', 1731 galleryTitle: 'Gallery', 1732 galleryViewMore: 'View More', 1733 galleryViewOthers: 'View Other Galleries', 1734 galleryDefaultItemTitle: 'Best Travel Gallery', 1735 galleryDefaultItemDescription: 'Discover our best fleet and comfortable travel moments with our professional shuttle service.', 1736 galleryExplorePrefix: 'Explore the Beauty of Traveling with', 1737 galleryExploreSuffix: 'Limitless Experiences, the Best Destinations!', 1738 galleryImageAlt: 'Gallery', 1739 galleryEmptyImageAlt: 'Gallery is not available', 1740 galleryEmptyState: 'The gallery is currently unavailable', 1741 newsTitle: 'News', 1742 newsFollowPrefix: 'Follow the latest news from', 1743 newsFollowSuffix: 'including routes, fares, and travel schedules', 1744 newsTravelTipsTitle: 'Travel Tips & Information', 1745 newsTravelTipsDescription: 'Read interesting articles about travel tips, destinations, and useful transportation information.', 1746 newsViewMore: 'View More', 1747 newsViewAll: 'View All', 1748 newsViewAllArticles: 'View All Articles', 1749 newsImageAlt: 'News', 1750 newsDefaultExcerpt: 'Get the latest travel information before starting your journey.', 1751 downloadInstallPrefix: 'Install the', 1752 downloadInstallSuffix: 'app from the Play Store and App Store now!', 1753 downloadAppImageAlt: 'Application', 1754 downloadPhoneImageAlt: 'Application displayed on a phone', 1755 operatorDownloadTitle: 'Enjoy an easier journey with us', 1756 operatorDownloadDescription: 'Book tickets and manage your journey directly from your phone.', 1757 operatorDownloadCallToAction: 'Download the app now!', 1758 downloadAppPageTitle: 'Download App', 1759 downloadAppVisitWebsite: 'Visit Website', 1760 downloadAppShareLink: 'Share Link', 1761 downloadAppCopy: 'Copy', 1762 downloadAppCopied: 'Link copied.', 1763 downloadAppOr: 'or', 1764 downloadAppDownloadQr: 'Download QR', 1765 localeTitle: 'Select Language & Currency', 1766 localeSearchPlaceholder: 'Search language or currency...', 1767 localeLanguage: 'Language', 1768 localeCurrency: 'Currency', 1769 localeCancel: 'Cancel', 1770 localeSaveChanges: 'Save Changes', 1771 collapseGreeting: 'Hi, Friend ð', 1772 collapseWelcome: 'Welcome to', 1773 collapseSelfCheckin: 'Self Check-in' 1774 } 1775}; 1776 1777function mergeLocale(target, source) { 1778 Object.keys(source || {}).forEach(function (language) { 1779 target[language] = target[language] || {}; 1780 Object.keys(source[language] || {}).forEach(function (key) { 1781 target[language][key] = source[language][key]; 1782 }); 1783 }); 1784} 1785 1786mergeLocale(locale, window.PORTAL_LOCALE_OVERRIDES || {}); 1787 1788const navigationI18nByPath = { 1789 '/': 'navHome', 1790 '/home': 'navHome', 1791 '/tentang': 'navAboutUs', 1792 '/outlet': 'navOutlet', 1793 '/blog': 'navBlog', 1794 '/berita': 'navNews', 1795 '/pembayaran': 'navPaymentGuide', 1796 '/panduan-perjalanan': 'navTravelGuide', 1797 '/kontak': 'navContact', 1798 '/galeri': 'navGallery', 1799 '/promo': 'navPromo', 1800 '/promo-rute': 'navPromo', 1801 '/rental': 'navRental', 1802 '/rental-motor': 'navMotorRental', 1803 '/paket': 'navPackage', 1804 '/pariwisata': 'navTourism', 1805 '/bundling': 'navBundling', 1806 '/tiket': 'navCheckTicket', 1807 '/book/cektiket': 'navCheckBooking', 1808 '/cek-paket': 'navCheckPackage', 1809 '/masuk': 'navLogin', 1810 '/member/detail': 'navProfile', 1811 '/list-reservasi': 'memberReservationList', 1812 '/member/rating': 'memberRatings', 1813 '/list-voucher': 'memberVoucherList', 1814 '/list-riwayat-voucher': 'memberVoucherHistory', 1815 '/faq': 'navFaq', 1816 '/snk': 'navTerms', 1817 '/snk/tiket': 'footerTicketTerms', 1818 '/snk/paket': 'footerPackageTerms', 1819 '/karir': 'footerCareer' 1820}; 1821 1822const navigationI18nByLabel = { 1823 'beranda': 'navHome', 1824 'home': 'navHome', 1825 'tentang': 'navAbout', 1826 'tentang kami': 'navAboutUs', 1827 'about': 'navAbout', 1828 'about us': 'navAboutUs', 1829 'outlet': 'navOutlet', 1830 'blog': 'navBlog', 1831 'berita': 'navNews', 1832 'news': 'navNews', 1833 'cara bayar': 'navPaymentGuide', 1834 'panduan cara bayar': 'navPaymentGuide', 1835 'payment guide': 'navPaymentGuide', 1836 'panduan perjalanan': 'navTravelGuide', 1837 'travel guide': 'navTravelGuide', 1838 'kontak': 'navContact', 1839 'contact': 'navContact', 1840 'galeri': 'navGallery', 1841 'gallery': 'navGallery', 1842 'promo': 'navPromo', 1843 'promotions': 'navPromo', 1844 'rental': 'navRental', 1845 'sewa motor': 'navMotorRental', 1846 'motorcycle rental': 'navMotorRental', 1847 'paket': 'navPackage', 1848 'package': 'navPackage', 1849 'pariwisata': 'navTourism', 1850 'tourism': 'navTourism', 1851 'bundling': 'navBundling', 1852 'cek booking': 'navCheckBooking', 1853 'check booking': 'navCheckBooking', 1854 'cek tiket': 'navCheckTicket',
1855 'check ticket': 'navCheckTicket', 1856 'faq': 'navFaq', 1857 'syarat & ketentuan': 'navTerms', 1858 'terms & conditions': 'navTerms', 1859 'karier': 'footerCareer', 1860 'karir': 'footerCareer', 1861 'career': 'footerCareer' 1862}; 1863 1864function normalizeNavigationPath(href) { 1865 try { 1866 const url = new URL(href, window.location.origin); 1867 let path = url.pathname.replace(/\/+$/, '') || '/'; 1868 1869 if (path.indexOf('/index.php/') === 0) { 1870 path = path.substring('/index.php'.length) || '/'; 1871 } 1872 1873 return path.toLowerCase(); 1874 } catch (error) { 1875 return ''; 1876 } 1877} 1878 1879function getNavigationKeyByHref(href) { 1880 const path = normalizeNavigationPath(href); 1881 1882 if (navigationI18nByPath[path]) { 1883 return navigationI18nByPath[path]; 1884 } 1885 1886 const matchedPath = Object.keys(navigationI18nByPath) 1887 .filter(function (candidate) { 1888 return candidate !== '/' && path.slice(-candidate.length) === candidate; 1889 }) 1890 .sort(function (first, second) { 1891 return second.length - first.length; 1892 })[0]; 1893 1894 return matchedPath ? navigationI18nByPath[matchedPath] : ''; 1895} 1896 1897function shouldSkipConfiguredNavigation(element) { 1898 if (element.closest( 1899 '.footer-social-link, .footer-social, .social-media, .sosmed, [data-social-media], .footer-download-link' 1900 )) { 1901 return true; 1902 } 1903 1904 const href = element.getAttribute('href') || ''; 1905 if (!href || href.charAt(0) === '#' || href.indexOf('mailto:') === 0 || href.indexOf('tel:') === 0) { 1906 return true; 1907 } 1908 1909 try { 1910 return new URL(href, window.location.origin).origin !== window.location.origin; 1911 } catch (error) { 1912 return false; 1913 } 1914} 1915 1916function replaceNavigationText(element, text) { 1917 const textNodes = Array.prototype.filter.call(element.childNodes, function (node) { 1918 return node.nodeType === 3 && node.nodeValue.trim() !== ''; 1919 }); 1920 1921 if (textNodes.length) { 1922 const original = textNodes[0].nodeValue; 1923 const leading = (original.match(/^\s*/) || [''])[0]; 1924 const trailing = (original.match(/\s*$/) || [''])[0]; 1925 textNodes[0].nodeValue = leading + text + trailing; 1926 return; 1927 } 1928 1929 const explicitLabel = element.querySelector('[data-nav-label], .nav-label, .footer-link-label'); 1930 const label = explicitLabel || Array.prototype.find.call( 1931 element.querySelectorAll('span'), 1932 function (candidate) { 1933 return !candidate.classList.contains('badge') 1934 && !candidate.classList.contains('caret') 1935 && !candidate.classList.contains('icon') 1936 && !candidate.querySelector('svg, img, i'); 1937 } 1938 ); 1939 1940 if (label && !label.hasAttribute('data-i18n')) { 1941 label.textContent = text; 1942 } 1943} 1944 1945function updateConfiguredNavigation(scope) { 1946 scope.querySelectorAll( 1947 'nav a[href], header a[href], footer a[href], .navbar a[href], [data-config-navigation]' 1948 ).forEach(function (element) { 1949 if (shouldSkipConfiguredNavigation(element)) { 1950 return; 1951 } 1952 1953 const configuredKey = element.getAttribute('data-i18n-key'); 1954 const pathKey = getNavigationKeyByHref(element.getAttribute('href') || ''); 1955 const label = (element.textContent || '').replace(/\s+/g, ' ').trim().toLowerCase(); 1956 const labelKey = navigationI18nByLabel[label]; 1957 const key = configuredKey || pathKey || labelKey; 1958 1959 if (!key || !i18next.exists(key)) { 1960 return; 1961 } 1962 1963 // Jika label anak sudah punya key sendiri, jangan terjemahkan parent. 1964 // Ini mencegah ikon SVG pada menu vertikal dianggap sebagai label kedua. 1965 if (!configuredKey && element.querySelector('[data-i18n], [data-i18n-id][data-i18n-en]')) { 1966 return; 1967 } 1968 1969 // Elemen dengan data-i18n eksplisit tetap menjadi sumber kebenaran. 1970 if (!configuredKey && element.hasAttribute('data-i18n')) { 1971 return; 1972 } 1973 1974 // title_en lama tetap didukung; fallback URL dipakai jika EN belum tersedia. 1975 if (!configuredKey && element.hasAttribute('data-i18n-id') && element.hasAttribute('data-i18n-en')) { 1976 const idText = element.getAttribute('data-i18n-id') || ''; 1977 const enText = element.getAttribute('data-i18n-en') || ''; 1978 if (i18next.language === 'id' || (enText && enText !== idText)) { 1979 return; 1980 } 1981 } 1982 1983 replaceNavigationText(element, i18next.t(key)); 1984 }); 1985} 1986 1987i18next.init({ 1988 lng: lang, 1989 fallbackLng: 'id', 1990 debug: false, 1991 interpolation: { 1992 escapeValue: false 1993 }, 1994 resources: { 1995 id: { translation: locale.id }, 1996 en: { translation: locale.en } 1997 } 1998}, function () { 1999 updateDataI18n(); 2000}); 2001 2002function updateDataI18n(root) { 2003 const scope = root || document; 2004 2005 scope.querySelectorAll('.portal-locale-block[data-lang]').forEach(function (element) { 2006 element.style.display = element.getAttribute('data-lang') === i18next.language ? '' : 'none'; 2007 }); 2008 2009 if (window.flatpickr && window.flatpickr.l10ns) { 2010 const flatpickrLocale = i18next.language === 'en' 2011 ? window.flatpickr.l10ns.default 2012 : (window.flatpickr.l10ns.id || window.flatpickr.l10ns.default); 2013 2014 scope.querySelectorAll('input.flatpickr-input').forEach(function (input) { 2015 const instance = input._flatpickr; 2016 2017 if (!instance) { 2018 return; 2019 } 2020 2021 instance.set('locale', flatpickrLocale); 2022 2023 if (instance.selectedDates && instance.selectedDates.length) { 2024 instance.setDate(instance.selectedDates, false); 2025 } 2026 2027 instance.redraw(); 2028 }); 2029 } 2030 2031 scope.querySelectorAll('.schedule-localized-date[data-date]').forEach(function (element) { 2032 const rawDate = element.getAttribute('data-date') || ''; 2033 const parts = rawDate.split('-'); 2034 let date = null; 2035 2036 if (parts.length === 3) { 2037 if (parts[0].length === 4) { 2038 date = new Date(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2])); 2039 } else if (parts[2].length === 4) { 2040 date = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0])); 2041 } 2042 } 2043 2044 if (date && !isNaN(date.getTime())) { 2045 const dateParts = new Intl.DateTimeFormat( 2046 i18next.language === 'en' ? 'en-US' : 'id-ID', 2047 { day: '2-digit', month: 'short' } 2048 ).formatToParts(date); 2049 const day = dateParts.find(function (part) { return part.type === 'day'; });
2050 const month = dateParts.find(function (part) { return part.type === 'month'; }); 2051 element.textContent = ( 2052 (day ? day.value : '') + ' ' + (month ? month.value : '') 2053 ).replace('.', '').trim().toUpperCase(); 2054 } 2055 }); 2056 2057 scope.querySelectorAll('.schedule-localized-full-date[data-date]').forEach(function (element) { 2058 const rawDate = element.getAttribute('data-date') || ''; 2059 const rawTime = element.getAttribute('data-time') || ''; 2060 const parts = rawDate.split('-'); 2061 let date = null; 2062 2063 if (parts.length === 3) { 2064 if (parts[0].length === 4) { 2065 date = new Date(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2])); 2066 } else if (parts[2].length === 4) { 2067 date = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0])); 2068 } 2069 } 2070 2071 if (date && !isNaN(date.getTime())) { 2072 const language = i18next.language === 'en' ? 'en-US' : 'id-ID'; 2073 const timeSeparator = element.getAttribute('data-time-separator') || ''; 2074 const dateParts = new Intl.DateTimeFormat(language, { 2075 weekday: 'long', 2076 day: '2-digit', 2077 month: 'long', 2078 year: 'numeric' 2079 }).formatToParts(date); 2080 const values = {}; 2081 2082 dateParts.forEach(function (part) { 2083 values[part.type] = part.value; 2084 }); 2085 2086 element.textContent = [ 2087 values.weekday + ',', 2088 values.day, 2089 values.month, 2090 values.year, 2091 rawTime && timeSeparator ? timeSeparator : '', 2092 rawTime 2093 ].filter(Boolean).join(' '); 2094 } 2095 }); 2096 2097 scope.querySelectorAll('.checkout-localized-balance[data-balance]').forEach(function (element) { 2098 element.textContent = i18next.t('checkoutBalance') + ' ' + element.getAttribute('data-balance'); 2099 }); 2100 2101 scope.querySelectorAll('[data-i18n]').forEach(function (element) { 2102 const key = element.getAttribute('data-i18n'); 2103 const prefix = element.getAttribute('data-i18n-prefix') || ''; 2104 const suffix = element.getAttribute('data-i18n-suffix') || ''; 2105 element.textContent = prefix + i18next.t(key) + suffix; 2106 }); 2107 2108 scope.querySelectorAll('[data-i18n-browse]').forEach(function (element) { 2109 element.setAttribute('data-browse', i18next.t(element.getAttribute('data-i18n-browse'))); 2110 }); 2111 2112 scope.querySelectorAll('[data-i18n-id][data-i18n-en]').forEach(function (element) { 2113 const language = i18next.language === 'en' ? 'en' : 'id'; 2114 element.textContent = element.getAttribute('data-i18n-' + language) || ''; 2115 }); 2116 2117 updateConfiguredNavigation(scope); 2118 2119 scope.querySelectorAll('[data-i18n-select-placeholder]').forEach(function (select) { 2120 const placeholder = select.querySelector('option[value=""]'); 2121 if (placeholder) { 2122 placeholder.textContent = i18next.t(select.getAttribute('data-i18n-select-placeholder')); 2123 } 2124 }); 2125 2126 scope.querySelectorAll('select').forEach(function (select) { 2127 const slim = select.slim; 2128 if (!slim) { 2129 return; 2130 } 2131 2132 const selectIdentity = (select.id || select.name || '').toLowerCase(); 2133 let placeholderKey = select.getAttribute('data-i18n-select-placeholder'); 2134 let searchTextKey = select.getAttribute('data-i18n-slim-search-text'); 2135 2136 if (!placeholderKey && selectIdentity === 'asal') { 2137 placeholderKey = 'bookingSelectDeparture'; 2138 } else if (!placeholderKey && selectIdentity === 'tujuan') { 2139 placeholderKey = 'bookingSelectDestination'; 2140 } 2141 2142 if (!searchTextKey && selectIdentity === 'asal') { 2143 searchTextKey = 'bookingNoDeparture'; 2144 } else if (!searchTextKey && selectIdentity === 'tujuan') { 2145 searchTextKey = 'bookingNoDestination'; 2146 } 2147 2148 const searchPlaceholderKey = select.getAttribute('data-i18n-slim-search-placeholder') || 'commonSearch'; 2149 const searchingTextKey = select.getAttribute('data-i18n-slim-searching-text') || 'commonSearching'; 2150 2151 if (placeholderKey) { 2152 slim.config.placeholderText = i18next.t(placeholderKey); 2153 } 2154 if (searchPlaceholderKey) { 2155 slim.config.searchPlaceholder = i18next.t(searchPlaceholderKey); 2156 if (slim.slim && slim.slim.search && slim.slim.search.input) { 2157 slim.slim.search.input.placeholder = slim.config.searchPlaceholder; 2158 } 2159 } 2160 if (searchTextKey) { 2161 slim.config.searchText = i18next.t(searchTextKey); 2162 } 2163 if (searchingTextKey) { 2164 slim.config.searchingText = i18next.t(searchingTextKey); 2165 } 2166 2167 slim.data.parseSelectData(); 2168 slim.data.setSelectedFromSelect(); 2169 slim.render(); 2170 }); 2171 2172 [ 2173 ['data-i18n-placeholder', 'placeholder'], 2174 ['data-i18n-title', 'title'], 2175 ['data-i18n-alt', 'alt'], 2176 ['data-i18n-aria-label', 'aria-label'] 2177 ].forEach(function (mapping) { 2178 scope.querySelectorAll('[' + mapping[0] + ']').forEach(function (element) { 2179 const prefix = element.getAttribute('data-i18n-prefix') || ''; 2180 const suffix = element.getAttribute('data-i18n-suffix') || ''; 2181 element.setAttribute(mapping[1], prefix + i18next.t(element.getAttribute(mapping[0])) + suffix); 2182 }); 2183 }); 2184 2185 document.documentElement.setAttribute('lang', i18next.language); 2186} 2187 2188function changeLanguage(language) { 2189 const selectedLanguage = language === 'en' ? 'en' : 'id'; 2190 localStorage.setItem(LOCALE_STORAGE_KEY, selectedLanguage); 2191 2192 i18next.changeLanguage(selectedLanguage, function () { 2193 updateDataI18n(); 2194 document.dispatchEvent(new CustomEvent('languageChanged', { 2195 detail: { lang: selectedLanguage } 2196 })); 2197 }); 2198} 2199 2200window.PortalI18n = { 2201 t: function (key, options) { 2202 return i18next.t(key, options); 2203 }, 2204 apply: updateDataI18n, 2205 changeLanguage: changeLanguage 2206}; 2207 2208document.addEventListener('change', function (event) { 2209 const input = event.target; 2210 2211 if (!input.matches('.localized-file-input .custom-file-input')) { 2212 return; 2213 } 2214 2215 const label = input.parentNode.querySelector('.custom-file-label'); 2216 if (!label) { 2217 return; 2218 } 2219 2220 if (input.files && input.files.length) { 2221 label.removeAttribute('data-i18n'); 2222 label.textContent = input.files[0].name; 2223 } else { 2224 label.setAttribute('data-i18n', 'memberNoFileChosen'); 2225 label.textContent = i18next.t('memberNoFileChosen'); 2226 } 2227}); 2228 2229document.addEventListener('DOMContentLoaded', function () { 2230 updateDataI18n(); 2231});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.