From ae9c8175177619494406c34cf24bb8dc60ba73ed Mon Sep 17 00:00:00 2001 From: Bagas Dwi Date: Wed, 24 Dec 2025 12:35:43 +0700 Subject: [PATCH 1/2] feat: add Indonesian translation --- backend/lang/id.json | 636 +++++++++++++++++++++++++++++++++ backend/lang/id/auth.php | 20 ++ backend/lang/id/pagination.php | 19 + backend/lang/id/passwords.php | 22 ++ backend/lang/id/validation.php | 184 ++++++++++ 5 files changed, 881 insertions(+) create mode 100644 backend/lang/id.json create mode 100644 backend/lang/id/auth.php create mode 100644 backend/lang/id/pagination.php create mode 100644 backend/lang/id/passwords.php create mode 100644 backend/lang/id/validation.php diff --git a/backend/lang/id.json b/backend/lang/id.json new file mode 100644 index 000000000..bf86eb7e5 --- /dev/null +++ b/backend/lang/id.json @@ -0,0 +1,636 @@ +{ + "Older First": "Terlama", + "Newer First": "Terbaru", + "Recently Updated First": "Baru Diperbarui", + "Recently Updated Last": "Lama Diperbarui", + "First Name A-Z": "Nama Depan A-Z", + "First Name Z-A": "Nama Depan Z-A", + "Last Name A-Z": "Nama Belakang A-Z", + "Last Name Z-A": "Nama Belakang Z-A", + "Status A-Z": "Status A-Z", + "Status Z-A": "Status Z-A", + "Closest start date": "Tanggal mulai terdekat", + "Furthest start date": "Tanggal mulai terjauh", + "Closest end date": "Tanggal selesai terdekat", + "Furthest end date": "Tanggal selesai terjauh", + "Newest first": "Terbaru", + "Oldest first": "Terlama", + "Recently Updated": "Baru Diperbarui", + "Least Recently Updated": "Lama Diperbarui", + "Oldest First": "Terlama", + "Newest First": "Terbaru", + "Buyer Name A-Z": "Nama Pembeli A-Z", + "Buyer Name Z-A": "Nama Pembeli Z-A", + "Amount Ascending": "Jumlah (Naik)", + "Amount Descending": "Jumlah (Turun)", + "Buyer Email A-Z": "Email Pembeli A-Z", + "Buyer Email Z-A": "Email Pembeli Z-A", + "Order # Ascending": "No. Pesanan (Naik)", + "Order # Descending": "No. Pesanan (Turun)", + "Code Name A-Z": "Nama Kode A-Z", + "Code Name Z-A": "Nama Kode Z-A", + "Usage Count Ascending": "Jumlah Penggunaan (Naik)", + "Usage Count Descending": "Jumlah Penggunaan (Turun)", + "Homepage order": "Urutan Beranda", + "Title A-Z": "Judul A-Z", + "Title Z-A": "Judul Z-A", + "Sale start date closest": "Awal penjualan terdekat", + "Sale start date furthest": "Awal penjualan terjauh", + "Sale end date closest": "Akhir penjualan terdekat", + "Sale end date furthest": "Akhir penjualan terjauh", + "Account registration is disabled": "Pendaftaran akun dinonaktifkan", + "The invitation has expired": "Undangan telah kedaluwarsa", + "The invitation is invalid": "Undangan tidak valid", + "Invitation valid, but user not found": "Undangan valid, tetapi pengguna tidak ditemukan", + "No user found for this invitation. The invitation may have been revoked.": "Tidak ada pengguna ditemukan untuk undangan ini. Undangan mungkin telah dicabut.", + "Logout Successful": "Berhasil Keluar", + "Your password has been reset. Please login with your new password.": "Kata sandi Anda telah diatur ulang. Silakan masuk dengan kata sandi baru Anda.", + "No account ID found in token": "ID akun tidak ditemukan dalam token", + "Event with ID :eventId is not live and user is not authenticated": "Acara dengan ID :eventId tidak aktif dan pengguna tidak terautentikasi", + "Sorry, we could not verify your session. Please restart your order.": "Maaf, kami tidak dapat memverifikasi sesi Anda. Silakan ulangi pesanan Anda.", + "The email confirmation link has expired. Please request a new one.": "Tautan konfirmasi email telah kedaluwarsa. Silakan minta yang baru.", + "The email confirmation link is invalid.": "Tautan konfirmasi email tidak valid.", + "No invitation found for this user.": "Tidak ada undangan ditemukan untuk pengguna ini.", + "User status is not Invited": "Status pengguna bukan Diundang", + "Email is required": "Email wajib diisi", + "Email must be a valid email address": "Email harus berupa alamat email yang valid", + "First name is required": "Nama depan wajib diisi", + "Last name is required": "Nama belakang wajib diisi", + "Ticket is required": "Tiket wajib diisi", + "Ticket price is required": "Harga tiket wajib diisi", + "Please enter a valid hex color code. In the format #000000 or #000.": "Silakan masukkan kode warna hex yang valid. Dalam format #000000 atau #000.", + "The maximum timeout is 2 hours.": "Batas waktu maksimum adalah 2 jam.", + "The address line 1 field is required": "Bidang baris alamat 1 wajib diisi", + "The city field is required": "Bidang kota wajib diisi", + "The zip or postal code field is required": "Bidang kode pos wajib diisi", + "The country field is required": "Bidang negara wajib diisi", + "The country field should be a 2 character ISO 3166 code": "Bidang negara harus berupa kode ISO 3166 2 karakter", + "Please select at least one ticket.": "Silakan pilih setidaknya satu tiket.", + "The sale end date must be after the sale start date.": "Tanggal akhir penjualan harus setelah tanggal mulai penjualan.", + "The sale end date must be a valid date.": "Tanggal akhir penjualan harus berupa tanggal yang valid.", + "The sale start date must be after the ticket sale start date.": "Tanggal mulai penjualan harus setelah tanggal mulai penjualan tiket.", + "Welcome to :app_name! Please confirm your email address": "Selamat datang di :app_name! Silakan konfirmasi alamat email Anda", + "đŸŽŸī¸ Your Ticket for :event": "đŸŽŸī¸ Tiket Anda untuk :event", + "Your order has been cancelled": "Pesanan Anda telah dibatalkan", + "Your order wasn\\'t successful": "Pesanan Anda tidak berhasil", + "You\\'ve received a refund": "Anda telah menerima pengembalian dana", + "Your Order is Confirmed!": "Pesanan Anda Dikonfirmasi!", + "We were unable to process your order": "Kami tidak dapat memproses pesanan Anda", + "New order for :amount for :event 🎉": "Pesanan baru sejumlah :amount untuk :event 🎉", + "New order for :event 🎉": "Pesanan baru untuk :event 🎉", + "Confirm email change": "Konfirmasi perubahan email", + "Password reset": "Atur ulang kata sandi", + "Your password has been reset": "Kata sandi Anda telah diatur ulang", + "You\\'ve been invited to join :appName": "Anda diundang untuk bergabung dengan :appName", + "Current account ID is not set": "ID akun saat ini tidak diatur", + "User not found in this account": "Pengguna tidak ditemukan di akun ini", + "User not found": "Pengguna tidak ditemukan", + "Username or Password are incorrect": "Nama pengguna atau Kata Sandi salah", + "Account not found": "Akun tidak ditemukan", + "Attempt to log in to a non-active account": "Percobaan masuk ke akun yang tidak aktif", + "User account is not active": "Akun pengguna tidak aktif", + "Invalid reset token": "Token atur ulang tidak valid", + "Reset token has expired": "Token atur ulang telah kedaluwarsa", + "Event daily statistics updated for event :event_id with total refunded amount of :amount": "Statistik harian acara diperbarui untuk acara :event_id dengan total jumlah pengembalian dana :amount", + "Event statistics updated for event :event_id with total refunded amount of :amount": "Statistik acara diperbarui untuk acara :event_id dengan total jumlah pengembalian dana :amount", + "This promo code is invalid": "Kode promo ini tidak valid", + "You haven\\'t selected any tickets": "Anda belum memilih tiket apa pun", + "The maximum number of tickets available for :tickets is :max": "Jumlah maksimum tiket yang tersedia untuk :tickets adalah :max", + "You must order at least :min tickets for :ticket": "Anda harus memesan setidaknya :min tiket untuk :ticket", + "The minimum amount is :price": "Jumlah minimum adalah :price", + "The ticket :ticket is sold out": "Tiket :ticket sudah habis terjual", + ":field must be specified": ":field harus ditentukan", + "Invalid price ID": "ID harga tidak valid", + "The maximum number of tickets available for :ticket is :max": "Jumlah maksimum tiket yang tersedia untuk :ticket adalah :max", + "Ticket with id :id not found": "Tiket dengan id :id tidak ditemukan", + "Failed to refund stripe charge": "Gagal mengembalikan dana biaya stripe", + "Payment was successful, but order has expired. Order: :id": "Pembayaran berhasil, tetapi pesanan telah kedaluwarsa. Pesanan: :id", + "Order is not awaiting payment. Order: :id": "Pesanan tidak menunggu pembayaran. Pesanan: :id", + "There was an error communicating with the payment provider. Please try again later.": "Terjadi kesalahan saat berkomunikasi dengan penyedia pembayaran. Silakan coba lagi nanti.", + "Stripe Connect account not found for the event organizer": "Akun Stripe Connect tidak ditemukan untuk penyelenggara acara", + "Cannot Refund: Stripe connect account not found and saas_mode_enabled is enabled": "Tidak Dapat Mengembalikan Dana: Akun Stripe connect tidak ditemukan dan saas_mode_enabled diaktifkan", + "Invalid calculation type": "Jenis perhitungan tidak valid", + "One or more tax IDs are invalid": "Satu atau lebih ID pajak tidak valid", + "Invalid ticket ids: :ids": "ID tiket tidak valid: :ids", + "Cannot delete ticket price with id :id because it has sales": "Tidak dapat menghapus harga tiket dengan id :id karena memiliki penjualan", + "Order has no order items": "Pesanan tidak memiliki item pesanan", + "There is already an account associated with this email. Please log in instead.": "Sudah ada akun yang terkait dengan email ini. Silakan masuk.", + "Stripe Connect Account creation is only available in Saas Mode.": "Pembuatan Akun Stripe Connect hanya tersedia di Mode Saas.", + "There are issues with creating or fetching the Stripe Connect Account. Please try again.": "Ada masalah saat membuat atau mengambil Akun Stripe Connect. Silakan coba lagi.", + "There are issues with creating the Stripe Connect Account Link. Please try again.": "Ada masalah saat membuat Tautan Akun Stripe Connect. Silakan coba lagi.", + "Cannot check in attendee as they are not active.": "Tidak dapat check-in peserta karena tidak aktif.", + "in": "masuk", + "out": "keluar", + "There are no tickets available. ' .\n 'If you would like to assign a ticket to this attendee,' .\n ' please adjust the ticket\\'s available quantity.": "Tidak ada tiket yang tersedia. ' .\n 'Jika Anda ingin menetapkan tiket ke peserta ini,' .\n ' harap sesuaikan kuantitas tiket yang tersedia.", + "The ticket price ID is invalid.": "ID harga tiket tidak valid.", + "Ticket ID is not valid": "ID Tiket tidak valid", + "There are no tickets available. If you would like to assign this ticket to this attendee, please adjust the ticket\\'s available quantity.": "Tidak ada tiket yang tersedia. Jika Anda ingin menetapkan tiket ini ke peserta ini, harap sesuaikan kuantitas tiket yang tersedia.", + "Attendee ID is not valid": "ID Peserta tidak valid", + "The invitation does not exist": "Undangan tidak ada", + "The invitation has already been accepted": "Undangan sudah diterima", + "Organizer :id not found": "Penyelenggara :id tidak ditemukan", + "Continue": "Lanjutkan", + "Event :id not found": "Acara :id tidak ditemukan", + "You cannot change the currency of an event that has completed orders": "Anda tidak dapat mengubah mata uang acara yang memiliki pesanan selesai", + "You must verify your account before you can update an event\\'s status.\n You can resend the confirmation by visiting your profile page.": "Anda harus memverifikasi akun Anda sebelum dapat memperbarui status acara.\n Anda dapat mengirim ulang konfirmasi dengan mengunjungi halaman profil Anda.", + "You cannot send messages until your account is verified.": "Anda tidak dapat mengirim pesan sampai akun Anda diverifikasi.", + "Order not found": "Pesanan tidak ditemukan", + "Order already cancelled": "Pesanan sudah dibatalkan", + "Failed to create attendee": "Gagal membuat peserta", + "This order is has already been processed": "Pesanan ini sudah diproses", + "This order has expired": "Pesanan ini telah kedaluwarsa", + "This order has already been processed": "Pesanan ini sudah diproses", + "There is an unexpected ticket price ID in the order": "Terdapat ID harga tiket yang tidak valid dalam pesanan", + "This event is not live.": "Acara ini tidak aktif.", + "Sorry, we could not verify your session. Please create a new order.": "Maaf, kami tidak dapat memverifikasi sesi Anda. Silakan buat pesanan baru.", + "There is no Stripe data associated with this order.": "Tidak ada data Stripe yang terkait dengan pesanan ini.", + "There is already a refund pending for this order.\n Please wait for the refund to be processed before requesting another one.": "Sudah ada pengembalian dana yang tertunda untuk pesanan ini.\n Harap tunggu pengembalian dana diproses sebelum meminta yang lain.", + "Promo code :code already exists": "Kode promo :code sudah ada", + "The code :code is already in use for this event": "Kode :code sudah digunakan untuk acara ini", + "You cannot delete this question as there as answers associated with it. You can hide the question instead.": "Anda tidak dapat menghapus pertanyaan ini karena ada jawaban yang terkait dengannya. Anda dapat menyembunyikan pertanyaan sebagai gantinya.", + "One or more of the ordered question IDs do not exist for the event.": "Satu atau lebih ID pertanyaan yang dipesan tidak ada untuk acara tersebut.", + "You cannot delete this ticket because it has orders associated with it. You can hide it instead.": "Anda tidak dapat menghapus tiket ini karena ada pesanan yang terkait dengannya. Anda dapat menyembunyikannya sebagai gantinya.", + "Ticket type cannot be changed as tickets have been registered for this type": "Jenis tiket tidak dapat diubah karena tiket telah terdaftar untuk jenis ini", + "The ordered ticket IDs must exactly match all tickets for the event without missing or extra IDs.": "ID tiket yang dipesan harus sama persis dengan semua tiket untuk acara tanpa ID yang hilang atau tambahan.", + "No email change pending": "Tidak ada perubahan email yang tertunda", + "The email :email already exists on this account": "Email :email sudah ada di akun ini", + "You are not authorized to perform this action.": "Anda tidak berwenang untuk melakukan tindakan ini.", + "Your account is not active.": "Akun Anda tidak aktif.", + "Payload has expired or is invalid.": "Payload telah kedaluwarsa atau tidak valid.", + "Payload could not be decrypted.": "Payload tidak dapat didekripsi.", + "Could not upload image to :disk. Check :disk is configured correctly": "Tidak dapat mengunggah gambar ke :disk. Periksa :disk dikonfigurasi dengan benar", + "Could not upload image": "Tidak dapat mengunggah gambar", + "Length must be a positive integer.": "Panjang harus berupa bilangan bulat positif.", + "Prefix length exceeds the total desired token length.": "Panjang awalan melebihi total panjang token yang diinginkan.", + "A valid email is required": "Email yang valid wajib diisi", + "The title field is required": "Bidang judul wajib diisi", + "The attribute name is required": "Nama atribut wajib diisi", + "The attribute value is required": "Nilai atribut wajib diisi", + "The attribute is_public fields is required": "Bidang atribut is_public wajib diisi", + "Required questions have not been answered. You may need to reload the page.": "Pertanyaan wajib belum dijawab. Anda mungkin perlu memuat ulang halaman.", + "This question is outdated. Please reload the page.": "Pertanyaan ini sudah usang. Silakan muat ulang halaman.", + "Please select an option": "Silakan pilih opsi", + "This field is required.": "Bidang ini wajib diisi.", + "This field must be less than 255 characters.": "Bidang ini harus kurang dari 255 karakter.", + "This field must be at least 2 characters.": "Bidang ini harus setidaknya 2 karakter.", + "Hello": "Halo", + "You have requested to reset your password for your account on :appName.": "Anda telah meminta untuk mengatur ulang kata sandi untuk akun Anda di :appName.", + "Please click the link below to reset your password.": "Silakan klik tautan di bawah ini untuk mengatur ulang kata sandi Anda.", + "Reset Password": "Atur Ulang Kata Sandi", + "If you did not request a password reset, please ignore this email or reply to let us know.": "Jika Anda tidak meminta pengaturan ulang kata sandi, harap abaikan email ini atau balas untuk memberi tahu kami.", + "Thank you": "Terima kasih", + "Your password has been reset for your account on :appName.": "Kata sandi Anda telah diatur ulang untuk akun Anda di :appName.", + "If you did not request a password reset, please immediately contact reset your password.": "Jika Anda tidak meminta pengaturan ulang kata sandi, harap segera hubungi kami untuk mengatur ulang kata sandi Anda.", + "You are receiving this communication because you are registered as an attendee for the following event:": "Anda menerima komunikasi ini karena Anda terdaftar sebagai peserta untuk acara berikut:", + "If you believe you have received this email in error,": "Jika Anda yakin menerima email ini karena kesalahan,", + "please contact the event organizer at": "silakan hubungi penyelenggara acara di", + "If you believe this is spam, please report it to": "Jika Anda yakin ini spam, silakan laporkan ke", + "You\\'re going to": "Anda akan pergi ke", + "Please find your ticket details below.": "Temukan detail tiket Anda di bawah ini.", + "View Ticket": "Lihat Tiket", + "If you have any questions or need assistance, please reply to this email or contact the event organizer": "Jika Anda memiliki pertanyaan atau butuh bantuan, silakan balas email ini atau hubungi penyelenggara acara", + "at": "di", + "Best regards,": "Salam hangat,", + "Your order for": "Pesanan Anda untuk", + "has been cancelled.": "telah dibatalkan.", + "Order #:": "No. Pesanan:", + "If you have any questions or need assistance, please respond to this email.": "Jika Anda memiliki pertanyaan atau butuh bantuan, silakan balas email ini.", + "Your recent order for": "Pesanan terbaru Anda untuk", + "was not successful.": "tidak berhasil.", + "View Event Homepage": "Lihat Beranda Acara", + "If you have any questions or need assistance, feel free to reach out to our support team": "Jika Anda memiliki pertanyaan atau butuh bantuan, jangan ragu untuk menghubungi tim dukungan kami", + "Best regards": "Salam hangat", + "You have received a refund of :refundAmount for the following event: :eventTitle.": "Anda telah menerima pengembalian dana sebesar :refundAmount untuk acara berikut: :eventTitle.", + "You\\'ve received a new order!": "Anda telah menerima pesanan baru!", + "Congratulations! You\\'ve received a new order for ": "Selamat! Anda telah menerima pesanan baru untuk ", + "Please find the details below.": "Temukan detailnya di bawah ini.", + "Order Amount:": "Jumlah Pesanan:", + "Order ID:": "ID Pesanan:", + "View Order": "Lihat Pesanan", + "Ticket": "Tiket", + "Price": "Harga", + "Total": "Total", + "Your recent order for :eventTitle was not successful. The order expired while you were completing the payment. We have issued a refund for the order.": "Pesanan terbaru Anda untuk :eventTitle tidak berhasil. Pesanan kedaluwarsa saat Anda menyelesaikan pembayaran. Kami telah menerbitkan pengembalian dana untuk pesanan tersebut.", + "We apologize for the inconvenience. If you have any questions or need assistance, feel free to reach us at": "Kami mohon maaf atas ketidaknyamanan ini. Jika Anda memiliki pertanyaan atau butuh bantuan, jangan ragu untuk menghubungi kami di", + "View Event Page": "Lihat Halaman Acara", + "Hi.Events": "Hi.Events", + "Your Order is Confirmed! ": "Pesanan Anda Dikonfirmasi! ", + "Congratulations! Your order for :eventTitle on :eventDate at :eventTime was successful. Please find your order details below.": "Selamat! Pesanan Anda untuk :eventTitle pada :eventDate pukul :eventTime berhasil. Temukan detail pesanan Anda di bawah ini.", + "Event Details": "Detail Acara", + "Event Name:": "Nama Acara:", + "Date & Time:": "Tanggal & Waktu:", + "Order Summary": "Ringkasan Pesanan", + "Order Number:": "Nomor Pesanan:", + "Total Amount:": "Jumlah Total:", + "View Order Summary & Tickets": "Lihat Ringkasan Pesanan & Tiket", + "If you have any questions or need assistance, feel free to reach out to our friendly support team at": "Jika Anda memiliki pertanyaan atau butuh bantuan, jangan ragu untuk menghubungi tim dukungan kami yang ramah di", + "What\\'s Next?": "Apa Selanjutnya?", + "Download Tickets:": "Unduh Tiket:", + "Please download your tickets from the order summary page.": "Silakan unduh tiket Anda dari halaman ringkasan pesanan.", + "Prepare for the Event:": "Bersiap untuk Acara:", + "Make sure to note the event date, time, and location.": "Pastikan untuk mencatat tanggal, waktu, dan lokasi acara.", + "Stay Updated:": "Tetap Terinformasi:", + "Keep an eye on your email for any updates from the event organizer.": "Pantau email Anda untuk pembaruan apa pun dari penyelenggara acara.", + "Hi :name": "Hai :name", + "Welcome to :appName! We\\'re excited to have you aboard!": "Selamat datang di :appName! Kami senang Anda bergabung!", + "To get started and activate your account, please click the link below to confirm your email address:": "Untuk memulai dan mengaktifkan akun Anda, silakan klik tautan di bawah ini untuk mengonfirmasi alamat email Anda:", + "Confirm Your Email": "Konfirmasi Email Anda", + "If you did not create an account with us, no further action is required. Your email address will not be used without confirmation.": "Jika Anda tidak membuat akun dengan kami, tidak ada tindakan lebih lanjut yang diperlukan. Alamat email Anda tidak akan digunakan tanpa konfirmasi.", + "Best Regards,": "Salam Hangat,", + "The :appName Team": "Tim :appName", + "You have requested to change your email address to :pendingEmail. Please click the link below to confirm this change.": "Anda telah meminta untuk mengubah alamat email Anda ke :pendingEmail. Silakan klik tautan di bawah ini untuk mengonfirmasi perubahan ini.", + "If you did not request this change, please immediately change your password.": "Jika Anda tidak meminta perubahan ini, harap segera ubah kata sandi Anda.", + "Thanks,": "Terima kasih,", + "You\\'ve been invited to join :appName.": "Anda telah diundang untuk bergabung dengan :appName.", + "To accept the invitation, please click the link below:": "Untuk menerima undangan, silakan klik tautan di bawah ini:", + "Accept Invitation": "Terima Undangan", + "All rights reserved.": "Hak cipta dilindungi undang-undang.", + "Congratulations 🎉": "Selamat 🎉", + "Sent Date Oldest": "Tanggal Kirim Terlama", + "Sent Date Newest": "Tanggal Kirim Terbaru", + "Subject A-Z": "Subjek A-Z", + "Subject Z-A": "Subjek Z-A", + "Name A-Z": "Nama A-Z", + "Name Z-A": "Nama Z-A", + "Updated oldest first": "Diperbarui terlama dulu", + "Updated newest first": "Diperbarui terbaru dulu", + "Most capacity used": "Kapasitas paling banyak digunakan", + "Least capacity used": "Kapasitas paling sedikit digunakan", + "Least capacity": "Kapasitas terkecil", + "Most capacity": "Kapasitas terbesar", + "Sorry, these tickets are sold out": "Maaf, tiket ini sudah habis terjual", + "The maximum number of tickets available is :max": "Jumlah maksimum tiket yang tersedia adalah :max", + "Ticket is hidden without promo code": "Tiket disembunyikan tanpa kode promo", + "Ticket is sold out": "Tiket habis terjual", + "Ticket is before sale start date": "Tiket sebelum tanggal mulai penjualan", + "Ticket is after sale end date": "Tiket setelah tanggal akhir penjualan", + "Ticket is hidden": "Tiket disembunyikan", + "Price is before sale start date": "Harga sebelum tanggal mulai penjualan", + "Price is after sale end date": "Harga setelah tanggal akhir penjualan", + "Price is sold out": "Harga habis terjual", + "Price is hidden": "Harga disembunyikan", + "Expires soonest": "Kedaluwarsa paling cepat", + "Expires latest": "Kedaluwarsa paling lambat", + "The expiration date must be after the activation date.": "Tanggal kedaluwarsa harus setelah tanggal aktivasi.", + "The activation date must be before the expiration date.": "Tanggal aktivasi harus sebelum tanggal kedaluwarsa.", + "Attendee :attendee_name is not allowed to check in using this check-in list": "Peserta :attendee_name tidak diperbolehkan check-in menggunakan daftar check-in ini", + "Invalid attendee code detected: :attendees ": "Kode peserta tidak valid terdeteksi: :attendees ", + "Check-in list not found": "Daftar check-in tidak ditemukan", + "Attendee :attendee_name is already checked in": "Peserta :attendee_name sudah check-in", + "Check-in list has expired": "Daftar check-in sudah kedaluwarsa", + "Check-in list is not active yes": "Daftar check-in belum aktif", + "This attendee is not checked in": "Peserta ini belum check-in", + "Attendee does not belong to this check-in list": "Peserta tidak termasuk dalam daftar check-in ini", + "Attendee :attendee_name\\'s ticket is cancelled": "Tiket peserta :attendee_name dibatalkan", + "Check-in list is not active yet": "Daftar check-in belum aktif", + "The number of attendees does not match the number of tickets in the order": "Jumlah peserta tidak sesuai dengan jumlah tiket dalam pesanan", + "Product is required": "Produk wajib diisi", + "Product price is required": "Harga produk wajib diisi", + "Please select at least one product.": "Silakan pilih setidaknya satu produk.", + "The sale start date must be after the product sale start date.": "Tanggal mulai penjualan harus setelah tanggal mulai penjualan produk.", + "You must select a product category.": "Anda harus memilih kategori produk.", + "Invalid direction. Must be either asc or desc": "Arah tidak valid. Harus asc atau desc", + "DomainObject must be a valid :interface.": "DomainObject harus berupa :interface yang valid.", + "Nested relationships must be an array of Relationship objects.": "Hubungan bersarang harus berupa array objek Relationship.", + "OrderAndDirections must be an array of OrderAndDirection objects.": "OrderAndDirections harus berupa array objek OrderAndDirection.", + "Attendee :attendee_name\\'s product is cancelled": "Produk peserta :attendee_name dibatalkan", + "Tickets": "Tiket", + "There are no tickets available for this event.": "Tidak ada tiket yang tersedia untuk acara ini.", + "You haven\\'t selected any products": "Anda belum memilih produk apa pun", + "The maximum number of products available for :products is :max": "Jumlah maksimum produk yang tersedia untuk :products adalah :max", + "You must order at least :min products for :product": "Anda harus memesan setidaknya :min produk untuk :product", + "The product :product is sold out": "Produk :product sudah habis terjual", + "The maximum number of products available for :product is :max": "Jumlah maksimum produk yang tersedia untuk :product adalah :max", + "Sorry, these products are sold out": "Maaf, produk ini sudah habis terjual", + "The maximum number of products available is :max": "Jumlah maksimum produk yang tersedia adalah :max", + "Product with id :id not found": "Produk dengan id :id tidak ditemukan", + "You cannot delete this product because it has orders associated with it. You can hide it instead.": "Anda tidak dapat menghapus produk ini karena ada pesanan yang terkait dengannya. Anda dapat menyembunyikannya sebagai gantinya.", + "Invalid product ids: :ids": "ID produk tidak valid: :ids", + "Product is hidden without promo code": "Produk disembunyikan tanpa kode promo", + "Product is sold out": "Produk habis terjual", + "Product is before sale start date": "Produk sebelum tanggal mulai penjualan", + "Product is after sale end date": "Produk setelah tanggal akhir penjualan", + "Product is hidden": "Produk disembunyikan", + "Cannot delete product price with id :id because it has sales": "Tidak dapat menghapus harga produk dengan id :id karena memiliki penjualan", + "You cannot delete this product category because it contains the following products: :products. These products are linked to existing orders. Please move the :product_name to another category before attempting to delete this one.": "Anda tidak dapat menghapus kategori produk ini karena berisi produk berikut: :products. Produk ini tertaut ke pesanan yang ada. Harap pindahkan :product_name ke kategori lain sebelum mencoba menghapus yang ini.", + "products": "produk", + "product": "produk", + "Product category :productCategoryId has been deleted.": "Kategori produk :productCategoryId telah dihapus.", + "You cannot delete the last product category. Please create another category before deleting this one.": "Anda tidak dapat menghapus kategori produk terakhir. Harap buat kategori lain sebelum menghapus yang ini.", + "The product category with ID :id was not found.": "Kategori produk dengan ID :id tidak ditemukan.", + "Expired": "Kedaluwarsa", + "Limit Reached": "Batas Tercapai", + "Deleted": "Dihapus", + "Active": "Aktif", + "This ticket is invalid": "Tiket ini tidak valid", + "There are no tickets available. ' .\n 'If you would like to assign a product to this attendee,' .\n ' please adjust the product\\'s available quantity.": "Tidak ada tiket yang tersedia. ' .\n 'Jika Anda ingin menetapkan produk ke peserta ini,' .\n ' harap sesuaikan kuantitas produk yang tersedia.", + "The product price ID is invalid.": "ID harga produk tidak valid.", + "Product ID is not valid": "ID Produk tidak valid", + "There are no products available. If you would like to assign this product to this attendee, please adjust the product\\'s available quantity.": "Tidak ada produk yang tersedia. Jika Anda ingin menetapkan produk ini ke peserta ini, harap sesuaikan kuantitas produk yang tersedia.", + "There is an unexpected product price ID in the order": "Terdapat ID harga produk yang tidak valid dalam pesanan", + "Product type cannot be changed as products have been registered for this type": "Jenis produk tidak dapat diubah karena produk telah terdaftar untuk jenis ini", + "The ordered category IDs must exactly match all categories for the event without missing or extra IDs.": "ID kategori yang dipesan harus sama persis dengan semua kategori untuk acara tanpa ID yang hilang atau tambahan.", + "The ordered product IDs must exactly match all products for the event without missing or extra IDs.": "ID produk yang dipesan harus sama persis dengan semua produk untuk acara tanpa ID yang hilang atau tambahan.", + "This product is outdated. Please reload the page.": "Produk ini sudah usang. Silakan muat ulang halaman.", + "Reserved": "Dipesan", + "Cancelled": "Dibatalkan", + "Completed": "Selesai", + "Awaiting offline payment": "Menunggu pembayaran offline", + "ID": "ID", + "First Name": "Nama Depan", + "Last Name": "Nama Belakang", + "Email": "Email", + "Status": "Status", + "Is Checked In": "Sudah Check-In", + "Checked In At": "Check-In Pada", + "Product ID": "ID Produk", + "Product Name": "Nama Produk", + "Event ID": "ID Acara", + "Public ID": "ID Publik", + "Short ID": "ID Pendek", + "Created Date": "Tanggal Dibuat", + "Last Updated Date": "Tanggal Terakhir Diperbarui", + "Notes": "Catatan", + "Total Before Additions": "Total Sebelum Tambahan", + "Total Gross": "Total Kotor", + "Total Tax": "Total Pajak", + "Total Fee": "Total Biaya", + "Total Refunded": "Total Dikembalikan", + "Payment Status": "Status Pembayaran", + "Refund Status": "Status Pengembalian Dana", + "Currency": "Mata Uang", + "Created At": "Dibuat Pada", + "Payment Gateway": "Payment Gateway", + "Is Partially Refunded": "Dikembalikan Sebagian", + "Is Fully Refunded": "Dikembalikan Sepenuhnya", + "Is Free Order": "Pesanan Gratis", + "Is Manually Created": "Dibuat Secara Manual", + "Billing Address": "Alamat Penagihan", + "Promo Code": "Kode Promo", + "Failed to handle incoming Stripe webhook": "Gagal menangani webhook Stripe yang masuk", + "Notes must be less than 2000 characters": "Catatan harus kurang dari 2000 karakter", + "Invalid payment provider selected.": "Penyedia pembayaran tidak valid dipilih.", + "Payment instructions are required when offline payments are enabled.": "Instruksi pembayaran diperlukan ketika pembayaran offline diaktifkan.", + "The invoice prefix may only contain letters, numbers, and hyphens.": "Awalan faktur hanya boleh berisi huruf, angka, dan tanda hubung.", + "The organization name is required when invoicing is enabled.": "Nama organisasi diperlukan ketika faktur diaktifkan.", + "The organization address is required when invoicing is enabled.": "Alamat organisasi diperlukan ketika faktur diaktifkan.", + "The invoice start number must be at least 1.": "Nomor mulai faktur harus setidaknya 1.", + "There is no default account configuration available": "Tidak ada konfigurasi akun default yang tersedia", + "Product price ID is not valid": "ID harga produk tidak valid", + "Invoice": "Faktur", + "Editing order with ID: :id": "Mengedit pesanan dengan ID: :id", + "Marking order as paid": "Menandai pesanan sebagai lunas", + "Received a :event Stripe event, which has no handler": "Menerima acara Stripe :event, yang tidak memiliki penangan", + "Order is not in the correct status to transition to offline payment": "Pesanan tidak dalam status yang benar untuk beralih ke pembayaran offline", + "Order reservation has expired": "Reservasi pesanan telah kedaluwarsa", + "Offline payments are not enabled for this event": "Pembayaran offline tidak diaktifkan untuk acara ini", + "There are no products available in this category": "Tidak ada produk yang tersedia dalam kategori ini", + "Webhook not found": "Webhook tidak ditemukan", + "Unable to check in as attendee :attendee_name\\'s order is awaiting payment": "Tidak dapat check-in karena pesanan peserta :attendee_name sedang menunggu pembayaran", + "Attendee :attendee_name\\'s order cannot be marked as paid. Please check your event settings": "Pesanan peserta :attendee_name tidak dapat ditandai sebagai lunas. Harap periksa pengaturan acara Anda", + "Invoice already exists": "Faktur sudah ada", + "Invoice not found": "Faktur tidak ditemukan", + "Order is not awaiting offline payment": "Pesanan tidak menunggu pembayaran offline", + "Refund already processed": "Pengembalian dana sudah diproses", + "Stripe refund successful": "Pengembalian dana Stripe berhasil", + "There are no tickets available for this event": "Tidak ada tiket yang tersedia untuk acara ini", + "Address line 1 is required": "Baris alamat 1 wajib diisi", + "City is required": "Kota wajib diisi", + "Zip or postal code is required": "Kode pos wajib diisi", + "Country is required": "Negara wajib diisi", + "If you did not request a password reset, please immediately reset your password.": "Jika Anda tidak meminta pengaturan ulang kata sandi, harap segera atur ulang kata sandi Anda.", + "â„šī¸ Your order is pending payment. Tickets have been issued but will not be valid until payment is received.": "â„šī¸ Pesanan Anda sedang menunggu pembayaran. Tiket telah diterbitkan tetapi tidak akan valid sampai pembayaran diterima.", + "â„šī¸ This order is pending payment. Please mark the payment as received on the order management page once payment is received.": "â„šī¸ Pesanan ini sedang menunggu pembayaran. Harap tandai pembayaran sebagai diterima di halaman manajemen pesanan setelah pembayaran diterima.", + "Order Status:": "Status Pesanan:", + "Your order is pending payment. Tickets have been issued but will not be valid until payment is received.": "Pesanan Anda sedang menunggu pembayaran. Tiket telah diterbitkan tetapi tidak akan valid sampai pembayaran diterima.", + "Payment Instructions": "Instruksi Pembayaran", + "Please follow the instructions below to complete your payment.": "Silakan ikuti instruksi di bawah ini untuk menyelesaikan pembayaran Anda.", + "Invoice Number": "Nomor Faktur", + "Date Issued": "Date Issued", + "Due Date": "Tanggal Terbit", + "Amount Due": "Jumlah Tagihan", + "Billed To": "Ditagihkan Kepada", + "DESCRIPTION": "DESKRIPSI", + "RATE": "HARGA SATUAN", + "QTY": "JML", + "AMOUNT": "JUMLAH", + "Subtotal": "Subtotal", + "Total Discount": "Total Diskon", + "Total Service Fee": "Total Biaya Layanan", + "Total Amount": "Jumlah Total", + "For any queries, please contact us at": "Untuk pertanyaan apa pun, silakan hubungi kami di", + "Tax Information": "Informasi Pajak", + "Sales Ascending": "Penjualan (Naik)", + "Sales Descending": "Penjualan (Turun)", + "Revenue Ascending": "Pendapatan (Naik)", + "Revenue Descending": "Pendapatan (Turun)", + "Social": "Sosial", + "Food & Drink": "Makanan & Minuman", + "Charity": "Amal", + "Music": "Musik", + "Art": "Seni", + "Comedy": "Komedi", + "Theater": "Teater", + "Business": "Bisnis", + "Tech": "Teknologi", + "Education": "Pendidikan", + "Workshop": "Workshop", + "Sports": "Olahraga", + "Festival": "Festival", + "Nightlife": "Hiburan Malam", + "Other": "Lainnya", + "Name": "Nama", + "Code": "Kode", + "Total Sales": "Total Penjualan", + "Total Sales Gross": "Total Penjualan Kotor", + "Updated At": "Diperbarui Pada", + "Question": "Pertanyaan", + "Answer": "Jawaban", + "Order ID": "ID Pesanan", + "Order Email": "Email Pesanan", + "Attendee Name": "Nama Peserta", + "Attendee Email": "Email Peserta", + "Product": "Produk", + "Order URL": "URL Pesanan", + "Attendee Answers": "Jawaban Peserta", + "Order Name": "Nama Pesanan", + "Order Answers": "Jawaban Pesanan", + "Product Answers": "Jawaban Produk", + "Payment Provider": "Penyedia Pembayaran", + "Invalid invite token": "Token undangan tidak valid", + "Affiliate not found": "Afiliasi tidak ditemukan", + "Organizer with ID :organizerId is not live and user is not authenticated": "Penyelenggara dengan ID :organizerId tidak aktif dan pengguna tidak terautentikasi", + "Message sent successfully": "Pesan berhasil dikirim", + "Your email has been successfully verified!": "Email Anda telah berhasil diverifikasi!", + "The image must be at least 600 pixels wide and 50 pixels tall, and no more than 4000 pixels wide and 4000 pixels tall.": "Gambar harus setidaknya 600 piksel lebar dan 50 piksel tinggi, dan tidak lebih dari 4000 piksel lebar dan 4000 piksel tinggi.", + "The image must be at least :minWidth x :minHeight pixels.": "Gambar harus setidaknya :minWidth x :minHeight piksel.", + "The entity ID is required when type is provided.": "ID entitas diperlukan ketika tipe disediakan.", + "The type is required when entity ID is provided.": "Tipe diperlukan ketika ID entitas disediakan.", + "Your confirmation code for :app_name is :code": "Kode konfirmasi Anda untuk :app_name adalah :code", + "New message from :name": "Pesan baru dari :name", + "An affiliate with this code already exists for this event": "Afiliasi dengan kode ini sudah ada untuk acara ini", + "New password must be different from the old password.": "Kata sandi baru harus berbeda dari kata sandi lama.", + "Due to issues with spam, you must contact us to enable your account for sending messages. ' .\n 'Please contact us at :email": "Karena masalah spam, Anda harus menghubungi kami untuk mengaktifkan pengiriman pesan di akun Anda. Silakan hubungi kami di :email", + "Sorry, is expired or not in a valid state.": "Maaf, sudah kedaluwarsa atau tidak dalam status yang valid.", + "Organizer not found": "Penyelenggara tidak ditemukan", + "You must verify your account before you can update an organizer\\'s status.\n You can resend the confirmation by visiting your profile page.": "Anda harus memverifikasi akun Anda sebelum dapat memperbarui status penyelenggara.\n Anda dapat mengirim ulang konfirmasi dengan mengunjungi halaman profil Anda.", + "Your email address has already been verified.": "Alamat email Anda sudah diverifikasi.", + "The verification code is invalid or has expired.": "Kode verifikasi tidak valid atau telah kedaluwarsa.", + "Job not found": "Pekerjaan tidak ditemukan", + "Export file not found": "File ekspor tidak ditemukan", + "Job completed successfully": "Pekerjaan selesai dengan sukses", + "Job is still in progress": "Pekerjaan masih berlangsung", + "Email Subject": "Subjek Email", + "Š :year :app_name. All rights reserved.": "Š :year :app_name. Hak cipta dilindungi undang-undang.", + "Need help?": "Butuh bantuan?", + "Contact Support": "Hubungi Dukungan", + "Additional Information": "Informasi Tambahan", + "If you have any questions or need assistance, please contact": "Jika Anda memiliki pertanyaan atau butuh bantuan, silakan hubungi", + "Hello :name": "Halo :name", + "You have received a new message from": "Anda telah menerima pesan baru dari", + "Reply to :name": "Balas ke :name", + "This message was sent via your organizer contact form.": "Pesan ini dikirim melalui formulir kontak penyelenggara Anda.", + "Your email confirmation code is:": "Kode konfirmasi email Anda adalah:", + "Ticket Name A-Z": "Nama Tiket A-Z", + "Ticket Name Z-A": "Nama Tiket Z-A", + "Liquid": "Liquid", + "Blade": "Blade", + "Order Confirmation": "Konfirmasi Pesanan", + "Attendee Ticket": "Tiket Peserta", + "Sent to the customer after placing an order": "Dikirim ke pelanggan setelah melakukan pemesanan", + "Sent to each attendee with their ticket": "Dikirim ke setiap peserta bersama tiket mereka", + "Abandoned": "Ditinggalkan", + "Check Ins": "Check-In", + "Unknown": "Tidak Diketahui", + "Opted In To Marketing": "Memilih Ikut Pemasaran", + "Unauthorized": "Tidak Sah", + "Configuration assigned successfully.": "Konfigurasi berhasil ditetapkan.", + "Impersonation started": "Simulasi pengguna dimulai", + "Not currently impersonating": "Saat ini tidak sedang melakukan simulasi", + "Impersonation ended": "Simulasi pengguna berakhir", + "No user role found in token": "Peran pengguna tidak ditemukan dalam token", + "You cannot modify email templates until your account is verified.": "Anda tidak dapat memodifikasi template email sampai akun Anda diverifikasi.", + "Due to issues with spam, you must connect a Stripe account before you can modify email templates.": "Karena masalah spam, Anda harus menghubungkan akun Stripe sebelum dapat memodifikasi template email.", + "Invalid template type": "Jenis template tidak valid", + "Superadmin user is viewing non-live event with ID :eventId": "Pengguna Superadmin sedang melihat acara non-live dengan ID :eventId", + "Invalid report type.": "Jenis laporan tidak valid.", + "Date range must be less than 370 days.": "Rentang tanggal harus kurang dari 370 hari.", + "Attendee updated successfully": "Peserta berhasil diperbarui", + "Order updated successfully": "Pesanan berhasil diperbarui", + "Ticket resent successfully": "Tiket berhasil dikirim ulang", + "Order confirmation resent successfully": "Konfirmasi pesanan berhasil dikirim ulang", + "If you have tickets associated with this email, we will send you an email with the details.": "Jika Anda memiliki tiket yang terkait dengan email ini, kami akan mengirimkan detailnya melalui email.", + "The footer text may not be greater than 500 characters.": "Teks footer tidak boleh lebih dari 500 karakter.", + "The layout type must be default or modern.": "Jenis tata letak harus default atau modern.", + "The mode must be light or dark.": "Mode harus terang atau gelap.", + "The background type must be COLOR or MIRROR_COVER_IMAGE.": "Jenis latar belakang harus COLOR atau MIRROR_COVER_IMAGE.", + "First name must be a string": "Nama depan harus berupa string", + "First name must not exceed 255 characters": "Nama depan tidak boleh lebih dari 255 karakter", + "Last name must be a string": "Nama belakang harus berupa string", + "Last name must not exceed 255 characters": "Nama belakang tidak boleh lebih dari 255 karakter", + "Email must not exceed 255 characters": "Email tidak boleh lebih dari 255 karakter", + "Validation failed after multiple attempts: :error": "Validasi gagal setelah beberapa percobaan: :error", + "Your Ticket Details Have Been Changed": "Detail Tiket Anda Telah Diubah", + "Your Order Details Have Been Changed": "Detail Pesanan Anda Telah Diubah", + "Response from :organizerName": "Tanggapan dari :organizerName", + "Your Tickets": "Tiket Anda", + "Invalid VAT number format": "Format nomor PPN tidak valid", + "The system default configuration cannot be deleted.": "Konfigurasi default sistem tidak dapat dihapus.", + "User does not belong to this account": "Pengguna tidak termasuk dalam akun ini", + "Impersonation not allowed": "Simulasi tidak diizinkan", + "Email template not found": "Template email tidak ditemukan", + "Unable to verify Stripe signature with any platform": "Tidak dapat memverifikasi tanda tangan Stripe dengan platform apa pun", + "Order :id not found for event :eventId": "Pesanan :id tidak ditemukan untuk acara :eventId", + "Order is not in a valid status to be abandoned": "Pesanan tidak dalam status yang valid untuk ditinggalkan", + "Order has already expired": "Pesanan telah kedaluwarsa", + "Attendee not found": "Peserta tidak ditemukan", + "Event not found": "Acara tidak ditemukan", + "Page must be a positive integer": "Halaman harus berupa bilangan bulat positif", + "Page not found": "Halaman tidak ditemukan", + "Invalid or expired link. Please request a new one.": "Tautan tidak valid atau kedaluwarsa. Silakan minta yang baru.", + "This link has expired. Please request a new one.": "Tautan ini telah kedaluwarsa. Silakan minta yang baru.", + "SUPERADMIN users cannot be created through the application": "Pengguna SUPERADMIN tidak dapat dibuat melalui aplikasi", + "Cannot associate a user with SUPERADMIN role to an account": "Tidak dapat mengasosiasikan pengguna dengan peran SUPERADMIN ke akun", + "View Order & Tickets": "Lihat Pesanan & Tiket", + "Summer Music Festival 2024": "Festival Musik Musim Panas 2024", + "3 Arena, North Wall Quay, Dublin 1, Ireland": "3 Arena, North Wall Quay, Dublin 1, Irlandia", + "Join us for an unforgettable evening of live music featuring top artists from around the world.": "Bergabunglah dengan kami untuk malam musik live yang tak terlupakan menampilkan artis top dari seluruh dunia.", + "Please transfer the total amount to the following bank account within 5 business days.": "Silakan transfer jumlah total ke rekening bank berikut dalam 5 hari kerja.", + "Thank you for your purchase! We look forward to seeing you at the event.": "Terima kasih atas pembelian Anda! Kami menantikan kehadiran Anda di acara tersebut.", + "Platform Fee": "Biaya Platform", + "Processing charge event": "Memproses acara biaya", + "Charge not in succeeded status, skipping": "Biaya tidak dalam status berhasil, melewatkan", + "Stripe payment not found for charge": "Pembayaran Stripe tidak ditemukan untuk biaya", + "Order not found for charge": "Pesanan tidak ditemukan untuk biaya", + "Extracting platform fee for order": "Mengekstrak biaya platform untuk pesanan", + "Retrieving balance transaction from Stripe": "Mengambil transaksi saldo dari Stripe", + "No balance transaction found for charge": "Tidak ada transaksi saldo ditemukan untuk biaya", + "Platform fee already stored for this transaction": "Biaya platform sudah disimpan untuk transaksi ini", + "Platform fee stored successfully": "Biaya platform berhasil disimpan", + "Failed to store platform fee": "Gagal menyimpan biaya platform", + "Ticket Reference": "Referensi Tiket", + "Order Reference": "Referensi Pesanan", + "The name of the event": "Nama acara", + "The event start date": "Tanggal mulai acara", + "The event start time": "Waktu mulai acara", + "The event end date": "Tanggal berakhir acara", + "The event end time": "Waktu berakhir acara", + "The full event address": "Alamat lengkap acara", + "The event venue name": "Nama lokasi acara", + "The venue address line 1": "Baris alamat lokasi 1", + "The venue address line 2": "Baris alamat lokasi 2", + "The venue city": "Kota lokasi", + "The venue state or region": "Negara bagian atau wilayah lokasi", + "The venue ZIP or postal code": "Kode pos lokasi", + "The venue country code": "Kode negara lokasi", + "The event description": "Deskripsi acara", + "The organizer\\'s name": "Nama penyelenggara", + "The organizer\\'s email": "Email penyelenggara", + "The support email address": "Alamat email dukungan", + "Instructions for offline payment": "Instruksi untuk pembayaran offline", + "Message shown after checkout": "Pesan yang ditampilkan setelah checkout", + "Link to view the order summary": "Tautan untuk melihat ringkasan pesanan", + "The order reference number": "Nomor referensi pesanan", + "The total order amount": "Jumlah total pesanan", + "The order date": "Tanggal pesanan", + "The first name of the person who placed the order": "Nama depan orang yang melakukan pemesanan", + "The last name of the person who placed the order": "Nama belakang orang yang melakukan pemesanan", + "The email of the person who placed the order": "Email orang yang melakukan pemesanan", + "The attendee\\'s full name": "Nama lengkap peserta", + "The attendee\\'s email": "Email peserta", + "The ticket type name": "Nama jenis tiket", + "The ticket price": "Harga tiket", + "Link to view/download the ticket": "Tautan untuk melihat/mengunduh tiket", + "Stripe secret key not configured for platform: :platform": "Kunci rahasia Stripe tidak dikonfigurasi untuk platform: :platform", + "VIES service returned HTTP :status": "Layanan VIES mengembalikan HTTP :status", + "VAT number is not valid according to VIES": "Nomor PPN tidak valid menurut VIES", + "Connection error: :error": "Kesalahan koneksi: :error", + "Validation error: :error": "Kesalahan validasi: :error", + "VIES service is temporarily busy. Validation will be retried.": "Layanan VIES sedang sibuk. Validasi akan dicoba lagi.", + "Member State service is temporarily unavailable. Validation will be retried.": "Layanan Negara Anggota sementara tidak tersedia. Validasi akan dicoba lagi.", + "VIES service timed out. Validation will be retried.": "Layanan VIES habis waktu. Validasi akan dicoba lagi.", + "VIES server is busy. Validation will be retried.": "Server VIES sibuk. Validasi akan dicoba lagi.", + "VIES service is unavailable. Validation will be retried.": "Layanan VIES tidak tersedia. Validasi akan dicoba lagi.", + "VIES service has reached maximum requests. Validation will be retried.": "Layanan VIES telah mencapai permintaan maksimum. Validasi akan dicoba lagi.", + "Invalid VAT number format.": "Format nomor PPN tidak valid.", + "Invalid requester information.": "Informasi peminta tidak valid.", + "VIES validation error: :code": "Kesalahan validasi VIES: :code", + "Please confirm your email address": "Silakan konfirmasi alamat email Anda", + "Email addresses do not match": "Alamat email tidak cocok", + "Please confirm the email address": "Silakan konfirmasi alamat email", + "Ticket Details Changed": "Detail Tiket Berubah", + "The details on your ticket for **:eventName** have been updated.": "Detail pada tiket Anda untuk **:eventName** telah diperbarui.", + "What Changed": "Apa yang Berubah", + "Security Information": "Informasi Keamanan", + "This change was made from IP address: :ipAddress": "Perubahan ini dibuat dari alamat IP: :ipAddress", + "If you did not make this change, please contact the event organizer immediately.": "Jika Anda tidak membuat perubahan ini, harap hubungi penyelenggara acara segera.", + "Event Organizer: :organizerName": "Penyelenggara Acara: :organizerName", + "Contact: :email": "Kontak: :email", + "Order Details Changed": "Detail Pesanan Berubah", + "The details on your order for **:eventName** have been updated.": "Detail pada pesanan Anda untuk **:eventName** telah diperbarui.", + "We found :count order(s) associated with :email.": "Kami menemukan :count pesanan yang terkait dengan :email.", + "Click the button below to view your tickets and order details.": "Klik tombol di bawah ini untuk melihat tiket dan detail pesanan Anda.", + "View My Tickets": "Lihat Tiket Saya", + "This link will expire in 24 hours.": "Tautan ini akan kedaluwarsa dalam 24 jam.", + "If you did not request this, please ignore this email.": "Jika Anda tidak meminta ini, silakan abaikan email ini." +} \ No newline at end of file diff --git a/backend/lang/id/auth.php b/backend/lang/id/auth.php new file mode 100644 index 000000000..5a32c7a57 --- /dev/null +++ b/backend/lang/id/auth.php @@ -0,0 +1,20 @@ + 'Kredensial ini tidak cocok dengan catatan kami.', + 'password' => 'Password salah.', + 'throttle' => 'Terlalu banyak upaya login. Silakan coba lagi dalam :seconds detik.', + +]; diff --git a/backend/lang/id/pagination.php b/backend/lang/id/pagination.php new file mode 100644 index 000000000..954627596 --- /dev/null +++ b/backend/lang/id/pagination.php @@ -0,0 +1,19 @@ + '« Sebelumnya', + 'next' => 'Selanjutnya »', + +]; diff --git a/backend/lang/id/passwords.php b/backend/lang/id/passwords.php new file mode 100644 index 000000000..eee8cad55 --- /dev/null +++ b/backend/lang/id/passwords.php @@ -0,0 +1,22 @@ + 'Password Anda telah direset.', + 'sent' => 'Kami telah mengirimkan email berisi link reset password Anda.', + 'throttled' => 'Mohon tunggu sebelum mencoba lagi.', + 'token' => 'Token reset password ini tidak valid.', + 'user' => "Kami tidak bisa menemukan user dengan alamat email ini.", + +]; diff --git a/backend/lang/id/validation.php b/backend/lang/id/validation.php new file mode 100644 index 000000000..bd5275403 --- /dev/null +++ b/backend/lang/id/validation.php @@ -0,0 +1,184 @@ + 'Kolom :attribute harus disetujui.', + 'accepted_if' => 'Kolom :attribute harus disetujui ketika :other bernilai :value.', + 'active_url' => 'Kolom :attribute harus berupa URL yang valid.', + 'after' => 'Kolom :attribute harus berupa tanggal setelah :date.', + 'after_or_equal' => 'Kolom :attribute harus berupa tanggal setelah atau sama dengan :date.', + 'alpha' => 'Kolom :attribute hanya boleh berisi huruf.', + 'alpha_dash' => 'Kolom :attribute hanya boleh berisi huruf, angka, tanda hubung, dan garis bawah.', + 'alpha_num' => 'Kolom :attribute hanya boleh berisi huruf dan angka.', + 'array' => 'Kolom :attribute harus berupa array.', + 'ascii' => 'Kolom :attribute hanya boleh berisi karakter alfanumerik single-byte dan simbol.', + 'before' => 'Kolom :attribute harus berupa tanggal sebelum :date.', + 'before_or_equal' => 'Kolom :attribute harus berupa tanggal sebelum atau sama dengan :date.', + 'between' => [ + 'array' => 'Kolom :attribute harus memiliki antara :min sampai :max item.', + 'file' => 'Kolom :attribute harus berukuran antara :min sampai :max kilobyte.', + 'numeric' => 'Kolom :attribute harus bernilai antara :min sampai :max.', + 'string' => 'Kolom :attribute harus memiliki panjang antara :min sampai :max karakter.', + ], + 'boolean' => 'Kolom :attribute harus bernilai true atau false.', + 'confirmed' => 'Konfirmasi :attribute tidak cocok.', + 'current_password' => 'Kata sandi salah.', + 'date' => 'Kolom :attribute harus berupa tanggal yang valid.', + 'date_equals' => 'Kolom :attribute harus berupa tanggal yang sama dengan :date.', + 'date_format' => 'Kolom :attribute harus sesuai dengan format :format.', + 'decimal' => 'Kolom :attribute harus memiliki :decimal angka desimal.', + 'declined' => 'Kolom :attribute harus ditolak.', + 'declined_if' => 'Kolom :attribute harus ditolak ketika :other bernilai :value.', + 'different' => 'Kolom :attribute dan :other harus berbeda.', + 'digits' => 'Kolom :attribute harus terdiri dari :digits digit.', + 'digits_between' => 'Kolom :attribute harus terdiri dari :min sampai :max digit.', + 'dimensions' => 'Kolom :attribute memiliki dimensi gambar yang tidak valid.', + 'distinct' => 'Kolom :attribute memiliki nilai duplikat.', + 'doesnt_end_with' => 'Kolom :attribute tidak boleh diakhiri dengan salah satu dari: :values.', + 'doesnt_start_with' => 'Kolom :attribute tidak boleh diawali dengan salah satu dari: :values.', + 'email' => 'Kolom :attribute harus berupa alamat email yang valid.', + 'ends_with' => 'Kolom :attribute harus diakhiri dengan salah satu dari: :values.', + 'enum' => ':attribute yang dipilih tidak valid.', + 'exists' => ':attribute yang dipilih tidak valid.', + 'file' => 'Kolom :attribute harus berupa file.', + 'filled' => 'Kolom :attribute harus memiliki nilai.', + 'gt' => [ + 'array' => 'Kolom :attribute harus memiliki lebih dari :value item.', + 'file' => 'Kolom :attribute harus lebih besar dari :value kilobyte.', + 'numeric' => 'Kolom :attribute harus lebih besar dari :value.', + 'string' => 'Kolom :attribute harus lebih dari :value karakter.', + ], + 'gte' => [ + 'array' => 'Kolom :attribute harus memiliki :value item atau lebih.', + 'file' => 'Kolom :attribute harus lebih besar dari atau sama dengan :value kilobyte.', + 'numeric' => 'Kolom :attribute harus lebih besar dari atau sama dengan :value.', + 'string' => 'Kolom :attribute harus lebih besar dari atau sama dengan :value karakter.', + ], + 'image' => 'Kolom :attribute harus berupa gambar.', + 'in' => ':attribute yang dipilih tidak valid.', + 'in_array' => 'Kolom :attribute tidak ada di dalam :other.', + 'integer' => 'Kolom :attribute harus berupa bilangan bulat.', + 'ip' => 'Kolom :attribute harus berupa alamat IP yang valid.', + 'ipv4' => 'Kolom :attribute harus berupa alamat IPv4 yang valid.', + 'ipv6' => 'Kolom :attribute harus berupa alamat IPv6 yang valid.', + 'json' => 'Kolom :attribute harus berupa string JSON yang valid.', + 'lowercase' => 'Kolom :attribute harus berupa huruf kecil.', + 'lt' => [ + 'array' => 'Kolom :attribute harus memiliki kurang dari :value item.', + 'file' => 'Kolom :attribute harus kurang dari :value kilobyte.', + 'numeric' => 'Kolom :attribute harus kurang dari :value.', + 'string' => 'Kolom :attribute harus kurang dari :value karakter.', + ], + 'lte' => [ + 'array' => 'Kolom :attribute tidak boleh memiliki lebih dari :value item.', + 'file' => 'Kolom :attribute harus kurang dari atau sama dengan :value kilobyte.', + 'numeric' => 'Kolom :attribute harus kurang dari atau sama dengan :value.', + 'string' => 'Kolom :attribute harus kurang dari atau sama dengan :value karakter.', + ], + 'mac_address' => 'Kolom :attribute harus berupa alamat MAC yang valid.', + 'max' => [ + 'array' => 'Kolom :attribute tidak boleh memiliki lebih dari :max item.', + 'file' => 'Kolom :attribute tidak boleh lebih besar dari :max kilobyte.', + 'numeric' => 'Kolom :attribute tidak boleh lebih besar dari :max.', + 'string' => 'Kolom :attribute tidak boleh lebih dari :max karakter.', + ], + 'max_digits' => 'Kolom :attribute tidak boleh memiliki lebih dari :max digit.', + 'mimes' => 'Kolom :attribute harus berupa file bertipe: :values.', + 'mimetypes' => 'Kolom :attribute harus berupa file bertipe: :values.', + 'min' => [ + 'array' => 'Kolom :attribute harus memiliki minimal :min item.', + 'file' => 'Kolom :attribute harus berukuran minimal :min kilobyte.', + 'numeric' => 'Kolom :attribute harus bernilai minimal :min.', + 'string' => 'Kolom :attribute harus memiliki minimal :min karakter.', + ], + 'min_digits' => 'Kolom :attribute harus memiliki minimal :min digit.', + 'missing' => 'Kolom :attribute harus kosong (missing).', + 'missing_if' => 'Kolom :attribute harus kosong ketika :other bernilai :value.', + 'missing_unless' => 'Kolom :attribute harus kosong kecuali :other bernilai :value.', + 'missing_with' => 'Kolom :attribute harus kosong ketika :values tersedia.', + 'missing_with_all' => 'Kolom :attribute harus kosong ketika :values tersedia.', + 'multiple_of' => 'Kolom :attribute harus berupa kelipatan dari :value.', + 'not_in' => ':attribute yang dipilih tidak valid.', + 'not_regex' => 'Format kolom :attribute tidak valid.', + 'numeric' => 'Kolom :attribute harus berupa angka.', + 'password' => [ + 'letters' => 'Kolom :attribute harus mengandung setidaknya satu huruf.', + 'mixed' => 'Kolom :attribute harus mengandung setidaknya satu huruf besar dan satu huruf kecil.', + 'numbers' => 'Kolom :attribute harus mengandung setidaknya satu angka.', + 'symbols' => 'Kolom :attribute harus mengandung setidaknya satu simbol.', + 'uncompromised' => ':attribute yang diberikan telah muncul dalam kebocoran data. Silakan pilih :attribute yang berbeda.', + ], + 'present' => 'Kolom :attribute wajib ada.', + 'prohibited' => 'Kolom :attribute dilarang ada.', + 'prohibited_if' => 'Kolom :attribute dilarang ada ketika :other bernilai :value.', + 'prohibited_unless' => 'Kolom :attribute dilarang ada kecuali :other ada di dalam :values.', + 'prohibits' => 'Kolom :attribute melarang :other untuk ada.', + 'regex' => 'Format kolom :attribute tidak valid.', + 'required' => 'Kolom :attribute wajib diisi.', + 'required_array_keys' => 'Kolom :attribute harus berisi entri untuk: :values.', + 'required_if' => 'Kolom :attribute wajib diisi ketika :other bernilai :value.', + 'required_if_accepted' => 'Kolom :attribute wajib diisi ketika :other disetujui.', + 'required_unless' => 'Kolom :attribute wajib diisi kecuali :other ada di dalam :values.', + 'required_with' => 'Kolom :attribute wajib diisi ketika :values tersedia.', + 'required_with_all' => 'Kolom :attribute wajib diisi ketika :values tersedia.', + 'required_without' => 'Kolom :attribute wajib diisi ketika :values tidak tersedia.', + 'required_without_all' => 'Kolom :attribute wajib diisi ketika tidak ada satupun dari :values yang tersedia.', + 'same' => 'Kolom :attribute dan :other harus sama.', + 'size' => [ + 'array' => 'Kolom :attribute harus berisi :size item.', + 'file' => 'Kolom :attribute harus berukuran :size kilobyte.', + 'numeric' => 'Kolom :attribute harus bernilai :size.', + 'string' => 'Kolom :attribute harus berukuran :size karakter.', + ], + 'starts_with' => 'Kolom :attribute harus diawali dengan salah satu dari: :values.', + 'string' => 'Kolom :attribute harus berupa string.', + 'timezone' => 'Kolom :attribute harus berupa zona waktu yang valid.', + 'unique' => ':attribute sudah digunakan.', + 'uploaded' => ':attribute gagal diunggah.', + 'uppercase' => 'Kolom :attribute harus berupa huruf kapital.', + 'url' => 'Kolom :attribute harus berupa URL yang valid.', + 'ulid' => 'Kolom :attribute harus berupa ULID yang valid.', + 'uuid' => 'Kolom :attribute harus berupa UUID yang valid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [], + +]; From f5a0f9161fb8340629ad903657f1520805093e12 Mon Sep 17 00:00:00 2001 From: Bagas Dwi Date: Wed, 24 Dec 2025 13:02:20 +0700 Subject: [PATCH 2/2] chore: register Indonesian locale in frontend --- frontend/lingui.config.ts | 8 ++++---- frontend/src/locales.ts | 9 ++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/lingui.config.ts b/frontend/lingui.config.ts index 96387461b..f166bea98 100644 --- a/frontend/lingui.config.ts +++ b/frontend/lingui.config.ts @@ -1,4 +1,4 @@ -import type {LinguiConfig} from "@lingui/conf"; +import type { LinguiConfig } from "@lingui/conf"; const config: LinguiConfig = { locales: [ @@ -7,7 +7,7 @@ const config: LinguiConfig = { "es", // Spanish "fr", // French "nl", // Dutch - "hu", // Hungarian + "hu", // Hungarian "pt-br", // Portuguese (Brazil) "ru", // Russian "de", // German @@ -19,7 +19,7 @@ const config: LinguiConfig = { // "pl", // Polish // "ja", // Japanese // "ko", // Korean - // "id", // Indonesian + "id", // Indonesian "zh-hk", // Cantonese Chinese (Hong Kong) // "cs", // Czech // "ga", // Irish @@ -33,7 +33,7 @@ const config: LinguiConfig = { sourceLocale: "en", format: "po", fallbackLocales: { - default: "en", + default: "en", } }; diff --git a/frontend/src/locales.ts b/frontend/src/locales.ts index df05aa838..9adc90f26 100644 --- a/frontend/src/locales.ts +++ b/frontend/src/locales.ts @@ -1,4 +1,4 @@ -import {i18n} from "@lingui/core"; +import { i18n } from "@lingui/core"; export type SupportedLocales = "en" @@ -13,9 +13,10 @@ export type SupportedLocales = | "vi" | "zh-hk" | "tr" - | "hu"; + | "hu" + | "id"; -export const availableLocales = ["en", "de", "fr", "it", "nl", "pt", "es", "zh-cn", "zh-hk", "pt-br", "vi", "tr", "hu"]; +export const availableLocales = ["en", "de", "fr", "it", "nl", "pt", "es", "zh-cn", "zh-hk", "pt-br", "vi", "tr", "hu", "id"]; export const localeToFlagEmojiMap: Record = { en: 'đŸ‡Ŧ🇧', @@ -31,6 +32,7 @@ export const localeToFlagEmojiMap: Record = { vi: 'đŸ‡ģđŸ‡ŗ', tr: '🇹🇷', hu: '🇭đŸ‡ē', + id: '🇮🇩', }; export const localeToNameMap: Record = { @@ -47,6 +49,7 @@ export const localeToNameMap: Record = { vi: `Vietnamese`, tr: `Turkish`, hu: `Hungarian`, + id: `Indonesian`, }; export const getLocaleName = (locale: SupportedLocales) => {