301 lines
12 KiB
JSON
301 lines
12 KiB
JSON
{
|
||
"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"
|
||
}
|