{ "appTitle": "Sistem Kehadiran", "logout": "Keluar", "login": "Masuk", "username": "Nama Pengguna", "password": "Kata Laluan", "rememberMe": "Ingat Saya", "loggingIn": "Sedang log masuk...", "language": "Bahasa", "failedConnection": "Gagal untuk berhubung dengan pelayan.", "useMobileApp": "Sila gunakan aplikasi mudah alih untuk log masuk", "invalidToken": "Token tidak sah diterima dari pelayan.", "english": "English", "malay": "Bahasa Melayu", "setting": "Tetapan", "appInformation": "Maklumat Aplikasi", "version": "Versi", "platform": "Platform", "web": "Web", "yourStatus": "Status Anda", "clockedIn": "Sudah Masuk", "clockedOut": "Sudah Keluar", "clockIn": "Masuk Kerja", "clockOut": "Keluar Kerja", "clock_in": "Masuk Kerja", "clock_out": "Keluar Kerja", "scanToClock": "Imbas untuk {action} Kerja", "in": "Masuk", "out": "Keluar", "cancel": "Batal", "clockHistory": "Sejarah Kehadiran", "viewMyClockHistory": "Lihat Sejarah Kehadiran Saya", "changeMyPassword": "Tukar Kata Laluan Saya", "updateYourPassword": "Tukar Kata Laluan Anda", "myClockHistory": "Sejarah Kehadiran Saya", "backToDashboard": "Kembali ke Papan Pemuka", "noClockHistory": "Tiada rekod kehadiran.", "clockHistoryEmptyState": "Tiada rekod kehadiran.", "clockHistoryFetchFail": "Gagal untuk dapatkan sejarah kehadiran:", "viewClockHistory": "Lihat Sejarah Kehadiran Saya", "changePassword": "Tukar Kata Laluan Saya", "successClockIn": "Berjaya masuk kerja.", "successClockOut": "Berjaya keluar kerja.", "qrFail": "QR tidak dapat dikesan. Sila cuba lagi.", "geoFail": "Tidak dapat mengambil lokasi anda: {message}. Sila benarkan perkhidmatan lokasi.", "successClock": "Berjaya daftar di {location}.", "changePasswordTitle": "Tukar Kata Laluan", "currentPassword": "Kata Laluan Semasa", "newPassword": "Kata Laluan Baharu", "confirmNewPassword": "Sahkan Kata Laluan Baharu", "updating": "Mengemaskini...", "tabPersonnel": "Personel", "tabAttendance": "Kehadiran", "tabWarning": "Amaran", "warningSettings": "Tetapan Amaran", "failedClockSummary": "Ringkasan Kegagalan Clock", "failedCount": "Bilangan Gagal", "viewDetails": "Lihat Butiran", "fetchRecords": "Lihat Senarai", "failedRecordsFor": "Rekod Gagal untuk ", "eventType": "Jenis Peristiwa", "tabQrCodes": "QR", "uploadQrImage": "Muat Naik Imej QR", "couldNotLoadWorkerInfo": "Tidak dapat memuatkan maklumat pekerja", "couldNotVerifyStatus": "Tidak dapat mengesahkan status semasa dari pelayan", "successfullyClocked": "Berjaya {action} di", "site": "tapak", "errorOccurred": "Ralat telah berlaku", "unableToStartCamera": "Tidak dapat menghidupkan kamera.", "tryAgain": "Cuba Lagi", "qrDetectedGettingLocation": "QR dikesan. Mengambil lokasi...", "geolocationNotSupported": "Geolokasi tidak disokong oleh pelayar anda.", "unableToRetrieveLocation": "Tidak dapat mengambil lokasi anda. Sila semak kebenaran lokasi. (Butiran: {message})", "qrNotDetectedTryAgain": "QR tidak dapat dikesan. Sila cuba lagi.", "updatePassword": "Kemaskini Kata Laluan", "passwordsNoMatch": "Kata laluan baharu tidak sepadan.", "passwordTooShort": "Kata laluan baharu mesti sekurang-kurangnya 6 aksara.", "passwordUpdated": "Kata laluan berjaya dikemaskini!", "passwordUpdateError": "Ralat semasa mengemaskini kata laluan.", "invalidCurrentPassword": "Kata laluan semasa yang anda masukkan tidak betul.", "attendanceLogFor": "Log Kehadiran untuk", "addManualClockOut": "Tambah Clock-Out Secara Manual", "manualClockOutInstruction": "Gunakan borang ini jika pekerja lupa untuk clock-out. Acara terakhir mesti clock-in.", "clockOutTime": "Masa Clock-Out", "reason": "Sebab (cth: \"Lupa clock-out\")", "enterBriefNote": "Tulis nota(jika perlu)", "addRecord": "Tambah Rekod", "startDate": "Dari", "endDate": "Hingga", "filterRecords": "Tapis Rekod", "event": "Acara", "timestamp": "Cap Masa", "locationName": "Nama Lokasi", "coordinates": "Koordinat", "notes": "Nota", "noRecordsFound": "Belum ada rekod untuk tempod ini.", "showOnMap": "Papar di peta", "nA": "Tiada", "pleaseSelectTimestamp": "Sila pilih cap masa untuk clock-out.", "pleaseProvideReason": "Sila berikan sebab/nota untuk kemasukan manual.", "manualClockOutSuccess": "Clock-out manual berjaya direkod!", "manualClockOutError": "Ralat berlaku: {message}", "selectWorkers": "1. Pilih Pekerja", "searchWorkerPlaceholder": "Cari pekerja...", "selectAll": "Pilih Semua", "addWorkersByTag": "Tambah semua pekerja berdasarkan tag", "chooseTag": "-- Pilih tag --", "addByTag": "Tambah melalui Tag", "selectedForReport": "Dipilih untuk Laporan ({count})", "allWorkersSelected": "Semua Pekerja ({count}) Dipilih", "noWorkersSelected": "Tiada pekerja dipilih.", "reportSettings": "2. Tetapan Laporan", "monthlySalary": "Gaji Bulanan (RM)", "salaryAppliedNote": "Diguna untuk semua pekerja yang dipilih.", "salaryPlaceholder": "cth: 3000", "otFactors": "Faktor OT", "weekendFactor": "Faktor Hujung Minggu", "holidayFactor": "Faktor Cuti Umum", "selectPublicHolidays": "Pilih Cuti Umum", "generateReport": "Jana Laporan Kehadiran & OT", "overtimePaySummary": "Ringkasan Bayaran OT", "exportOtSummary": "Eksport Ringkasan OT (CSV)", "worker": "Pekerja", "totalHoursWorked": "Jumlah Jam Bekerja", "totalOtPay": "Jumlah Bayaran OT (RM)", "rawAttendanceData": "Data Kehadiran Mentah", "loadingReport": "Memuatkan Laporan...", "tagLoadError": "Tidak dapat memuatkan pekerja untuk tag yang dipilih.", "generateReportError": "Sila pilih pekerja, tetapkan tarikh, dan masukkan gaji.", "reportGenerationError": "Ralat semasa menjana laporan.", "exportAll": "Eksport Semua", "export": "Eksport", "addNewUser": "Tambah Pengguna Baru", "fullName": "Nama Penuh", "department": "Jabatan", "position": "Jawatan", "egJohnSmith": "cth. John Smith", "egJsmith": "cth. 123456", "eg123456": "cth. 123456", "asManager": "Sebagai Pentadbir", "adding": "Sedang menambah...", "addUser": "Tambah Pengguna", "addManager": "Tambah Pentadbir", "manageTags": "Urus Tag", "createNewTag": "Cipta Tag Baharu", "egTeam": "cth. Pasukan", "egSales": "cth. Jualan", "egManager": "cth. Pentadbir", "createTag": "Cipta Tag", "tags": "Tag", "workerRoster": "Deftar Pekerja", "searchByNameOrUsername": "Cari mengikut nama atau nama pengguna", "searchByNameOrDepartment": " Cari nama atau jabatan", "filterByTag": "Tapis mengikut tag", "clearFilter": "Padam tapisan", "dateJoined": "Tarikh Sertai", "actions": "Tindakan", "editTags": "Sunting Tag", "viewRecords": "Lihat Rekod", "clearDevice": "Padam Peranti", "delete": "Padam", "loadingWorkers": "Memuatkan pekerja...", "noWorkersFound": "Tiada pekerja dijumpai.", "previous": "Sebelum", "next": "Seterusnya", "pageOf": "Halaman {current} daripada {total}", "noTagsAvailable": "Tiada tag tersedia.", "done": "Selesai", "bulkEditTags": "Sunting Tag Secara Berkumpulan", "clearSelection": "Padam Pilihan", "forUser": "Untuk pengguna", "savePassword": "Simpan Kata Laluan", "saving": "Menyimpan...", "failedToUpdateTags": "Gagal mengemas kini tag. Sila cuba lagi.", "tagDeleted": "Tag berjaya dipadam.", "failedToFetchWorkers": "Gagal memuatkan pekerja.", "failedToLoadPageData": "Gagal memuatkan data halaman.", "errorAddingUser": "Ralat semasa menambah pengguna.", "failedToDeleteWorker": "Gagal memadam pekerja.", "areYouSureDeleteWorker": "Adakah anda pasti mahu memadam akaun pekerja ini?", "areYouSureDeleteTag": "Adakah anda pasti mahu memadam tag ini? Ia akan dikeluarkan daripada semua pekerja.", "failedToDeleteTag": "Gagal memadam tag.", "passwordsDoNotMatch": "Kata laluan tidak sepadan.", "createQrCode": "Cipta QR Baharu", "qrCodeName": "Nama QR", "qrNamePlaceholder": "cth: 'Pintu Masuk Barat'", "create": "Cipta", "newCodeCreated": "Kod Baharu Telah Dicipta!", "saveQrInstruction": "Simpan imej ini atau gunakan ID di bawah. Ini akan hilang selepas segar semula.", "id": "ID", "existingQrCodes": "Senarai Kod QR", "name": "Nama", "status": "Status", "active": "Aktif", "inactive": "Tidak Aktif", "deactivate": "Tutup", "activate": "Aktifkan", "download": "Muat Turun", "noQrCodesFound": "Tiada QR dijumpai. Sila cipta di atas!", "deleteQrConfirm": "Adakah anda pasti ingin memadam QR ini? Tindakan ini tidak boleh diundur.", "qrDownloadError": "Maaf, QR tidak dapat dimuat turun.", "loading": "Memuatkan...", "tabGeofencing": "Geofencing", "createGeofence": "Lukis Zon Baharu", "drawInstruction": "Guna alat polygon untuk lukis Kawasan di peta. Klik semula titik pertama untuk siap.", "geofenceName": "Nama Geofence", "geofenceNamePlaceholder": "cth., Zon Gudang Utama", "saveGeofence": "Simpan Kawasan", "existingGeofences": "Kawasan Disimpan", "view": "Lihat", "noGeofencesFound": "Tiada Geofences Dijumpai", "startOver": "Mula Semula", "workScheduleTitle": "Jadual Kerja", "workScheduleDescription": "Klik pada tarikh untuk menukar statusnya. Hari yang didayakan berwarna hijau. Perubahan tidak akan disimpan sehingga anda mengklik 'Guna Perubahan'.", "pendingChanges": "Perubahan Belum Selesai", "noPendingChanges": "Klik pada kalendar untuk mendayakan atau menyahdayakan tarikh.", "datesToEnable": "Dayakan tarikh ini:", "datesToDisable": "Nyahdayakan tarikh ini:", "applyChanges": "Guna Perubahan", "discardChanges": "Buang Perubahan", "statusClockedIn": "Anda Sudah Masuk Kerja", "statusClockedOut": "Anda Sudah Keluar Kerja", "scanToClockIn": "Imbas QR untuk Masuk Kerja", "scanToClockOut": "Imbas QR untuk Keluar Kerja", "error.default": "Ralat tidak dijangka telah berlaku. Sila cuba lagi.", "error.clockingDisabled": "Fungsi masuk/keluar kerja dilumpuhkan untuk hari ini. Percubaan anda telah direkodkan.", "error.noActiveGeofence": "Gagal masuk/keluar: Tiada kawasan kerja aktif yang ditetapkan pada pelayan.", "error.outsideGeofence": "Gagal masuk/keluar: Anda berada di luar kawasan kerja yang ditetapkan sejauh {distance}m.", "error.invalidQrCode": "Gagal masuk/keluar: QR yang diimbas tidak sah atau tidak lagi aktif.", "error.alreadyClockedIn": "Tindakan gagal: Anda sudah masuk kerja.", "error.alreadyClockedOut": "Tindakan gagal: Anda sudah keluar kerja.", "error.criticalServer": "Ralat kritikal pada pelayan telah berlaku. Sila hubungi sokongan.", "dangerZone": "Zon Bahaya", "clearDeviceDescription": "Nyahpaut Akaun dengan Peranti.", "settings": "Tetapan", "employeeSettings": "Tetapan Pekerja", "accountSettings": "Tetapan Akaun", "workerStatus": "Status Akaun", "activeAccount": "Benarkan Log Masuk", "deleteDescription": "Pengguna akan dipadam.", "saveChanges": "Simpan Perubahan", "confirmDeleteWorker": "Adakah anda pasti mahu memadam pekerja ini?", "managerPermissions": "Pentadbir", "managerRoster": "Daftar Pentadbir", "noManagersFound": "Tiada Pentadbir dijumpai", "loadingManagers": "Memuatkan Pentadbir...", "managerSettings": "Tetapan Pentadbir", "managerStatus": "Status Pentadbir", "confirmClearDevice": "Adakah anda pasti mahu mengosongkan peranti ini? Pekerja perlu log masuk semula.", "view_all": "Lihat Semua", "edit_workers": "Sunting Pekerja", "manage_resources": "Urus Sumber", "manager_permissions": "Kebenaran Pentadbir", "confirmDelete": "Adakah anda pasti mahu memadam ini?", "confirm": "Sahkan", "can_view_workers": "Lihat Pekerja", "can_edit_workers": "Urus Pekerja", "can_view_alerts": "Lihat Amaran", "can_view_geofences": "Lihat Geofences", "can_manage_geofences": "Urus Geofences", "can_view_qrcodes": "Lihat Kod QR", "can_manage_qrcodes": "Urus Kod QR", "can_view_reports": "Lihat Laporan", "can_manage_killswitch": "Urus Jadual", "can_manage_permissions": "Urus Kebenaran", "can_edit_managers": "Sunting Pentadbir", "can_delete_managers": "Padam Pentadbir", "Worker added successfully": "Pekerja berjaya ditambah", "Worker soft-deleted successfully.": "Pekerja berjaya dipadam", "Worker device cleared successfully.": "Peranti pekerja berjaya dikosongkan", "Manager settings saved successfully!": "Tetapan Pentadbir berjaya disimpan!", "Manager added successfully!": "Pentadbir berjaya ditambah!", "Manager Deleted successfully.": "Pentadbir berjaya dipadam.", "QR code deleted successfully": "Kod QR berjaya dipadam", "Failed to fetch records.": "Gagal mengambil rekod.", "Failed to load details.": "Gagal memuatkan butiran.", "Failed to fetch QR codes": "Gagal mengambil kod QR", "Failed to generate QR code image": "Gagal menjana imej kod QR", "Failed to create QR code": "Gagal mencipta kod QR", "Failed to update QR code status": "Gagal mengemas kini status kod QR", "Failed to delete QR code": "Gagal memadam kod QR", "Failed to export records.": "Gagal mengeksport rekod.", "Failed to fetch managers.": "Gagal mengambil senarai Pentadbir.", "Failed to delete manager.": "Gagal memadam Pentadbir.", "Saving settings...": "Menyimpan tetapan...", "Exporting records...": "Mengeksport rekod...", "scheduleUpdateFailed": "Gagal mengemas kini jadual. Sila cuba lagi.", "confirmApplyChanges": "Adakah anda pasti mahu mengguna pakai perubahan jadual ini?", "scheduleUpdateSuccess": "Jadual berjaya dikemas kini", "fetchRecordsFailed": "Gagal mengambil rekod", "loadDetailsFailed": "Gagal memuatkan butiran", "fetchQRCodesFailed": "Gagal mengambil kod QR", "generateQRCodeFailed": "Gagal menjana imej kod QR", "createQRCodeFailed": "Gagal mencipta kod QR", "updateQRStatusFailed": "Gagal mengemas kini status kod QR", "qrCodeDeleted": "Kod QR berjaya dipadam", "deleteQRCodeFailed": "Gagal memadam kod QR", "workerAdded": "Pekerja berjaya ditambah", "addUserError": "Ralat menambah pengguna", "workerSoftDeleted": "Pekerja berjaya dipadam (soft delete)", "deviceCleared": "Peranti pekerja berjaya dikosongkan", "clearDeviceFailed": "Gagal mengosongkan peranti", "savingSettings": "Menyimpan tetapan...", "exportingRecords": "Mengeksport rekod...", "exportRecordsFailed": "Gagal mengeksport rekod", "fetchManagersFailed": "Gagal mengambil senarai Pentadbir", "managerSettingsSaved": "Tetapan Pentadbir berjaya disimpan", "saveSettingsFailed": "Gagal menyimpan tetapan", "managerAdded": "Pentadbir berjaya ditambah", "managerDeleted": "Pentadbir berjaya dipadam", "deleteManagerFailed": "Gagal memadam Pentadbir", "openCamera": "Buka Kamera", "scanQRCode": "Imbas Kod QR", "signOutOfAccount": "Log Keluar Akaun", "darkMode": "Mod Gelap", "enableDarkMode": "Aktifkan mod gelap", "disableDarkMode": "Nyahaktifkan mod gelap", "tamil": "Tamil", "bengali": "Bengali", "burmese": "Burmese", "nepali": "Nepali", "manualGuide": "Panduan Manual", "viewUserManual": "Baca arahan dan Soalan Lazim", "manual": { "android": { "heading": "Android", "faqs": [ { "id": "android-location", "title": "Cara menghidupkan lokasi (Android)", "steps": [ "Open Settings on your phone.", "Go to Location (on some phones under Security & privacy).", "Turn Use location ON.", "Open App permissions → find Nilai Clock → set to Allow while using the app.", "Enable Precise location if available.", "Return to the app and try clock-in again." ], "note": "Nama menu mungkin berbeza mengikut jenama." }, { "id": "android-camera", "title": "Benarkan kebenaran kamera (Android)", "steps": [ "Open SettingsAppsNilai Clock.", "Tap PermissionsCamera → choose Allow or Allow while using the app.", "Reopen the app and try scanning again." ] }, { "id": "clockin-troubleshoot", "title": "Clock-in tidak berjaya? Semakan pantas", "steps": [ "Turn Location ON and set app permission to Allow while using the app (enable Precise location if available).", "Check network: Wi-Fi or data is on. Toggle Airplane mode off→on, then retry. Disable VPN if it interferes.", "Ensure Automatic date & time and time zone are enabled in Android settings.", "Force close and reopen the app. If needed, clear Attendance System cache (Settings → Apps → Nilai Clock → Storage → Clear cache)." ], "note": "Jika masih gagal, ambil tangkapan skrin dan hubungi pengurus/HR." } ] }, "ios": { "heading": "iOS", "comingSoon": "Akan datang." } } }