feat(i18n): 添加多语言支持并实现国际化功能
This commit is contained in:
@@ -0,0 +1,184 @@
|
||||
{
|
||||
"appTitle": "Clock-In/Out 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",
|
||||
|
||||
"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",
|
||||
|
||||
"viewMyClockHistory": "View My Clock History",
|
||||
"changeMyPassword": "Change My 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 My Password →",
|
||||
|
||||
"successClockIn": "Successfully clocked in.",
|
||||
"successClockOut": "Successfully clocked out.",
|
||||
"qrFail": "Could not detect a QR code. Please try again.",
|
||||
"geoFail": "Unable to retrieve your location: {message}. Please enable location services.",
|
||||
"successClock": "Successfully clocked at {location}.",
|
||||
"changePasswordTitle": "Change Password",
|
||||
"currentPassword": "Current Password",
|
||||
"newPassword": "New Password",
|
||||
"confirmNewPassword": "Confirm New Password",
|
||||
"updating": "Updating...",
|
||||
|
||||
"tabPersonnel": "Personnel",
|
||||
"tabAttendance": "Attendance",
|
||||
"tabQrCodes": "QR Codes",
|
||||
"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: {message}. Please enable location services.",
|
||||
"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.",
|
||||
|
||||
"addNewUser": "Add New User",
|
||||
"fullName": "Full Name",
|
||||
"egJohnSmith": "e.g. John Smith",
|
||||
"egJsmith": "e.g. jsmith",
|
||||
"eg123456": "e.g. 123456",
|
||||
"asManager": "As Manager",
|
||||
"adding": "Adding...",
|
||||
"addUser": "Add User",
|
||||
"manageTags": "Manage Tags",
|
||||
"createNewTag": "Create New Tag",
|
||||
"egTeam": "e.g. Team",
|
||||
"createTag": "Create Tag",
|
||||
"tags": "Tags",
|
||||
"workerRoster": "Worker Roster",
|
||||
"searchByNameOrUsername": "Search by name or username",
|
||||
"filterByTag": "Filter by tag",
|
||||
"clearFilter": "Clear filter",
|
||||
"dateJoined": "Date Joined",
|
||||
"actions": "Actions",
|
||||
"editTags": "Edit Tags",
|
||||
"viewRecords": "View Records",
|
||||
"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": "Existing QR Codes",
|
||||
"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."
|
||||
}
|
||||
Reference in New Issue
Block a user