389 lines
17 KiB
JSON
389 lines
17 KiB
JSON
{
|
|
"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 <strong>Settings</strong> on your phone.",
|
|
"Go to <strong>Location</strong> <span class=\"text-sm text-gray-500\">(on some phones under <em>Security & privacy</em>)</span>.",
|
|
"Turn <strong>Use location</strong> ON.",
|
|
"Open <strong>App permissions</strong> → find <strong>Nilai Clock</strong> → set to <strong>Allow while using the app</strong>.",
|
|
"Enable <strong>Precise location</strong> 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 <strong>Settings</strong> → <strong>Apps</strong> → <strong>Nilai Clock</strong>.",
|
|
"Tap <strong>Permissions</strong> → <strong>Camera</strong> → choose <strong>Allow</strong> or <strong>Allow while using the app</strong>.",
|
|
"Reopen the app and try scanning again."
|
|
]
|
|
},
|
|
{
|
|
"id": "clockin-troubleshoot",
|
|
"title": "Clock-in tidak berjaya? Semakan pantas",
|
|
"steps": [
|
|
"Turn <strong>Location</strong> ON and set app permission to <strong>Allow while using the app</strong> (enable <strong>Precise location</strong> if available).",
|
|
"Check network: Wi-Fi or data is on. Toggle <strong>Airplane mode</strong> off→on, then retry. Disable VPN if it interferes.",
|
|
"Ensure <strong>Automatic date & time</strong> and <strong>time zone</strong> are enabled in Android settings.",
|
|
"Force close and reopen the app. If needed, clear <strong>Attendance System</strong> 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."
|
|
}
|
|
}
|
|
|
|
}
|