{ "appTitle": "Attendance System", "logout": "Logout", "login": "Login", "username": "Username", "password": "Password", "loggingIn": "Logging in...", "language": "Language", "failedConnection": "Failed to connect to the server.", "invalidToken": "Invalid token received from server.", "english": "English", "malay": "Malay", "setting": "Setting", "yourStatus": "Your Status", "clockedIn": "Clocked In", "clockedOut": "Clocked Out", "clockIn": "Clock In", "clockOut": "Clock Out", "clock_in": "Clock In", "clock_out": "Clock Out", "scanToClock": "Scan to Clock {action}", "in": "In", "out": "Out", "cancel": "Cancel", "clockHistory": "Clock History", "viewMyClockHistory": "View My Clock History", "changeMyPassword": "Change My Password", "updateYourPassword": "Update Your Password", "myClockHistory": "My Clock History", "backToDashboard": "Back to Dashboard", "noClockHistory": "You have no clocking history.", "clockHistoryFetchFail": "Failed to fetch clock history:", "viewClockHistory": "View My Clock History", "changePassword": "Change Password", "successClockIn": "Successfully clocked in.", "successClockOut": "Successfully clocked out.", "qrFail": "Could not detect a QR code. Please try again.", "successClock": "Successfully clocked at {location}.", "changePasswordTitle": "Change Password", "currentPassword": "Current Password", "newPassword": "New Password", "confirmNewPassword": "Confirm New Password", "updating": "Updating...", "tabPersonnel": "Personnel", "tabAttendance": "Attendance", "tabWarning": "Alerts", "warningSettings": "Warning Settings", "failedClockSummary": "Failed Clock EventsĀ ", "failedCount": "Failed Count", "viewDetails": "View Details", "fetchRecords": "Show List", "failedRecordsFor": "Failed Records for ", "eventType": "Event Type", "tabQrCodes": "QR", "uploadQrImage": "Upload QR Image", "couldNotLoadWorkerInfo": "Could not load worker information", "couldNotVerifyStatus": "Could not verify current status from server", "successfullyClocked": "Successfully clocked {action} at", "site": "site", "errorOccurred": "Error occurred", "unableToStartCamera": "Unable to start camera.", "tryAgain": "Try Again", "qrDetectedGettingLocation": "QR Code detected. Getting location...", "geolocationNotSupported": "Geolocation is not supported by your browser.", "unableToRetrieveLocation": "Unable to retrieve your location. Please check location permissions. (Details: {message})", "qrNotDetectedTryAgain": "Could not detect a QR code. Please try again.", "updatePassword": "Update Password", "passwordsNoMatch": "New passwords do not match.", "passwordTooShort": "New password must be at least 6 characters long.", "passwordUpdated": "Password updated successfully! You can now use your new password to log in.", "passwordUpdateError": "An error occurred while updating the password.", "attendanceLogFor": "Attendance Log for", "addManualClockOut": "Add Manual Clock-Out", "manualClockOutInstruction": "Use this form if the worker forgot to clock out. The last event must be a clock-in.", "clockOutTime": "Clock-Out Time", "reason": "Reason (e.g., \"Forgot to clock out\")", "enterBriefNote": "Enter a brief note", "addRecord": "Add Record", "startDate": "Start Date", "endDate": "End Date", "filterRecords": "Filter Records", "event": "Event", "timestamp": "Timestamp", "locationName": "Location Name", "coordinates": "Coordinates", "notes": "Notes", "noRecordsFound": "No records found for this period.", "showOnMap": "Show on map", "nA": "N/A", "pleaseSelectTimestamp": "Please select a timestamp for the clock-out.", "pleaseProvideReason": "Please provide a reason/note for the manual entry.", "manualClockOutSuccess": "Manual clock-out recorded successfully!", "manualClockOutError": "An error occurred: {message}", "selectWorkers": "1. Select Workers", "searchWorkerPlaceholder": "Search for a worker...", "selectAll": "Select All", "addWorkersByTag": "Add all workers from a tag", "chooseTag": "-- Choose a tag --", "addByTag": "Add by Tag", "selectedForReport": "Selected for Report ({count})", "allWorkersSelected": "All Workers ({count}) Selected", "noWorkersSelected": "No workers selected.", "reportSettings": "2. Report Settings", "monthlySalary": "Monthly Salary (RM)", "salaryAppliedNote": "Applied to all selected workers.", "salaryPlaceholder": "e.g., 3000", "otFactors": "OT Factors", "weekendFactor": "Weekend Factor", "holidayFactor": "Holiday Factor", "selectPublicHolidays": "Select Public Holidays", "generateReport": "Generate Attendance & OT Report", "overtimePaySummary": "Overtime Pay Summary", "exportOtSummary": "Export OT Summary (CSV)", "worker": "Worker", "totalHoursWorked": "Total Hours Worked", "totalOtPay": "Total OT Pay (RM)", "rawAttendanceData": "Raw Attendance Data", "loadingReport": "Loading Report...", "tagLoadError": "Could not load workers for the selected tag.", "generateReportError": "Please select workers, set valid date range, and enter a salary.", "reportGenerationError": "An error occurred while generating the report.", "exportAll": "Export All", "export": "Export", "addNewUser": "Add New User", "fullName": "Full Name", "department": "Department", "position": "Position", "egJohnSmith": "e.g. John Smith", "egJsmith": "e.g. 123456", "eg123456": "eg. 123456", "asManager": "As Manager", "adding": "Adding...", "addUser": "Add User", "addManager": "Add Manager", "manageTags": "Manage Tags", "createNewTag": "Create New Tag", "egTeam": "e.g. Team", "egSales": "e.g. Sales", "egManager": "e.g. Manager", "createTag": "Create Tag", "tags": "Tags", "workerRoster": "Employee List", "searchByNameOrUsername": "Search by name/username", "searchByNameOrDepartment": "Search by name/department", "filterByTag": "Filter by tag", "clearFilter": "Clear filter", "dateJoined": "Date Joined", "actions": "Actions", "editTags": "Edit Tags", "viewRecords": "View Records", "clearDevice": "Clear Device", "delete": "Delete", "loadingWorkers": "Loading workers...", "noWorkersFound": "No workers found.", "previous": "Previous", "next": "Next", "pageOf": "Page {current} of {total}", "noTagsAvailable": "No tags available.", "done": "Done", "bulkEditTags": "Bulk Edit Tags", "clearSelection": "Clear Selection", "forUser": "For user", "savePassword": "Save Password", "saving": "Saving...", "failedToUpdateTags": "Failed to update tags. Please try again.", "tagDeleted": "Tag deleted successfully.", "failedToFetchWorkers": "Failed to fetch workers.", "failedToLoadPageData": "Failed to load page data.", "errorAddingUser": "An error occurred while adding the user.", "failedToDeleteWorker": "Failed to delete worker.", "areYouSureDeleteWorker": "Are you sure you want to delete this worker account?", "areYouSureDeleteTag": "Are you sure you want to delete this tag? This will remove it from all workers.", "failedToDeleteTag": "Failed to delete tag.", "passwordsDoNotMatch": "Passwords do not match.", "createQrCode": "Create New QR Code", "qrCodeName": "QR Code Name", "qrNamePlaceholder": "e.g., 'West Gate Entrance'", "create": "Create", "newCodeCreated": "New Code Created!", "saveQrInstruction": "Save this image or use the ID below. This will disappear on refresh.", "id": "ID", "existingQrCodes": "QR Code List", "name": "Name", "status": "Status", "active": "Active", "inactive": "Inactive", "deactivate": "Deactivate", "activate": "Activate", "download": "Download", "noQrCodesFound": "No QR codes found. Create one above!", "deleteQrConfirm": "Are you sure you want to delete this QR code? This cannot be undone.", "qrDownloadError": "Sorry, the QR code could not be downloaded.", "loading": "Loading...", "tabGeofencing": "Geofencing", "createGeofence": "Add Geofence Area", "drawInstruction": "Use the polygon tool to draw your area on the map. Click your starting point again to finish.", "geofenceName": "Geofence Name", "geofenceNamePlaceholder": "e.g., Main Warehouse Zone", "saveGeofence": "Save Area", "existingGeofences": "Saved Area", "view": "View", "noGeofencesFound": "No Geofences Found", "startOver" : "Start Over", "workScheduleTitle": "Work Schedule", "workScheduleDescription": "Click on a date to toggle its status. Enabled days are green. Changes will not be saved until you click 'Apply Changes'.", "pendingChanges": "Pending Changes", "noPendingChanges": "Click on the calendar to enable or disable dates.", "datesToEnable": "Enable these dates:", "datesToDisable": "Disable these dates:", "applyChanges": "Apply Changes", "discardChanges": "Discard Changes", "statusClockedIn": "You are Clocked In", "statusClockedOut": "You are Clocked Out", "scanToClockIn": "Scan QR Code to Clock In", "scanToClockOut": "Scan QR Code to Clock Out", "error.default": "An unexpected error occurred. Please try again.", "error.clockingDisabled": "Clocking is disabled for today. Your attempt has been logged.", "error.noActiveGeofence": "Clocking failed: No active work area is defined on the server.", "error.outsideGeofence": "Clocking failed: You are outside the designated work area by {distance}m.", "error.invalidQrCode": "Clocking failed: The scanned QR Code is invalid or no longer active.", "error.alreadyClockedIn": "Action failed: You are already clocked in.", "error.alreadyClockedOut": "Action failed: You are already clocked out.", "error.criticalServer": "A critical server error occurred. Please contact support.", "dangerZone": "Danger Zone", "clearDeviceDescription": "Unlink Account with Device.", "settings": "Settings", "employeeSettings": "Employee Settings", "accountSettings": "Account Settings", "workerStatus": "Account Status", "activeAccount": "Allow Login", "deleteDescription": "User will be deleted.", "saveChanges": "Save Changes", "managerPermissions": "Manager", "can_view_workers": "View Workers", "can_edit_workers": "Manage Workers", "can_view_alerts": "View Alerts", "can_view_geofences": "View Geofences", "can_manage_geofences": "Manage Geofences", "can_view_qrcodes": "View QR Codes", "can_manage_qrcodes": "Manage QR Codes", "can_view_reports": "View Reports", "can_manage_killswitch": "Manage Schedule", "can_manage_permissions": "Manage Permissions", "can_edit_managers": "Edit Managers", "can_delete_managers": "Delete Managers", "noManagersFound": "No managers found", "managerRoster": "Manager Roster", "loadingManagers": "Loading managers...", "managerSettings": "Manager Settings", "managerStatus": "Manager Status", "confirmDeleteWorker": "Are you sure you want to delete this worker? This will soft-delete their account.", "confirmClearDevice": "Are you sure you want to clear this device? The worker will need to re-login.", "view_all": "View All", "edit_workers": "Edit Workers", "manage_resources": "Manage Resources", "manager_permissions": "Manager Permissions", "confirmDelete": "Are you sure you want to delete this?", "confirm": "Confirm", "scheduleUpdateFailed": "Failed to update schedule. Please try again.", "confirmApplyChanges": "Are you sure you want to apply these schedule changes?", "scheduleUpdateSuccess": "Schedule updated successfully", "fetchRecordsFailed": "Failed to fetch records", "loadDetailsFailed": "Failed to load details", "fetchQRCodesFailed": "Failed to fetch QR codes", "generateQRCodeFailed": "Failed to generate QR code image", "createQRCodeFailed": "Failed to create QR code", "updateQRStatusFailed": "Failed to update QR code status", "qrCodeDeleted": "QR code deleted successfully", "deleteQRCodeFailed": "Failed to delete QR code", "workerAdded": "Worker added successfully", "addUserError": "Error adding user", "workerSoftDeleted": "Worker soft-deleted successfully", "deviceCleared": "Worker device cleared successfully", "clearDeviceFailed": "Failed to clear device", "savingSettings": "Saving settings...", "exportingRecords": "Exporting records...", "exportRecordsFailed": "Failed to export records", "fetchManagersFailed": "Failed to fetch managers", "managerSettingsSaved": "Manager settings saved successfully", "saveSettingsFailed": "Failed to save settings", "managerAdded": "Manager added successfully", "managerDeleted": "Manager deleted successfully", "deleteManagerFailed": "Failed to delete manager" }