| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944 |
- {
- "common": {
- "appName": "TBOSS Workbench",
- "tabMessages": "Messages",
- "tabWorkbench": "Workbench",
- "tabProfile": "Profile",
- "loading": "Loading…",
- "loadFailed": "Load failed",
- "noData": "No data",
- "noMessages": "No messages",
- "noDrafts": "No drafts",
- "noCompletedRecords": "No completed records",
- "initiate": "Initiate",
- "records": "Records",
- "more": "More",
- "settings": "Settings",
- "about": "About",
- "language": "Language",
- "darkMode": "Dark Mode",
- "themeDark": "Dark",
- "themeLight": "Light",
- "languageZhCN": "简体中文",
- "languageEn": "English",
- "languageZhTW": "繁體中文",
- "userName": "Zhang San",
- "salesDepartment": "Sales Dept · Account Manager",
- "version": "TBOSS OA v2.13.0",
- "save": "Save",
- "submit": "Submit",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "selectedLabel": "Selected: ",
- "reset": "Reset",
- "publish": "Publish",
- "saveDraft": "Save Draft",
- "submitting": "Submitting…",
- "dataLoading": "Loading data…",
- "pageFooter": "You've reached the bottom ~ nothing more!",
- "submitApproval": "Submit for Approval",
- "saveDraftShort": "Save Draft",
- "delete": "Delete",
- "edit": "Edit",
- "add": "Add",
- "close": "Close",
- "copy": "Copy",
- "datePickerTitle": "Select Date Range",
- "today": "Today",
- "thisWeek": "This Week",
- "last7Days": "Last 7 Days",
- "thisMonth": "This Month",
- "lastMonth": "Last Month",
- "last30Days": "Last 30 Days",
- "thisQuarter": "This Quarter",
- "thisYear": "This Year",
- "startDateLabel": "Start Date",
- "endDateLabel": "End Date",
- "selectedDateRange": "Selected: ",
- "retry": "Retry",
- "confirmAdd": "Confirm Add",
- "confirmEdit": "Confirm Edit",
- "confirmSubmit": "Confirm Submit",
- "confirmPublish": "Confirm Publish",
- "confirmAction": "Are you sure you want to {action} this application?",
- "confirmExit": "Confirm Exit",
- "confirmReset": "Confirm Reset",
- "continueEditing": "Continue Editing",
- "discardAndExit": "Discard and Exit",
- "confirmPrompt": "Confirm to {action} this application?",
- "withdraw": "Withdraw Application",
- "withdrawAction": "Withdraw",
- "withdrawApplication": "Withdraw Application",
- "withdrawConfirm": "Confirm Withdraw",
- "withdrawConfirmTip": "Are you sure you want to withdraw this application? The approval process will be terminated.",
- "approve": "Approve",
- "reject": "Reject",
- "confirmApprove": "Confirm Approve",
- "confirmReject": "Confirm Reject",
- "preview": "Preview",
- "previewTitle": "Preview",
- "draft": "Draft",
- "pending": "In Approval",
- "approved": "Approved",
- "rejected": "Rejected",
- "expired": "Expired",
- "paid": "Paid",
- "unpaid": "Unpaid",
- "returned": "Returned",
- "completed": "Completed",
- "statusPending": "In Approval",
- "statusApproved": "Approved",
- "statusRejected": "Rejected",
- "statusDraft": "Draft",
- "statusWithdrawn": "Withdrawn",
- "statusReturned": "Returned",
- "statusDisabled": "Disabled",
- "statusWaitApprove": "Pending",
- "statusWaitPay": "Pending Payment",
- "editApply": "Edit Pre-Application",
- "editExpense": "Edit Expense Report",
- "statusTransferred": "Transferred",
- "statusClosed": "Closed",
- "statusPendingReview": "Pending Review",
- "statusReviewing": "Under Review",
- "statusReviewRejected": "Review Rejected",
- "statusFinalRejected": "Review Rejected(Final)",
- "filterAll": "All",
- "all": "All",
- "myDrafts": "My Drafts",
- "public": "All Staff",
- "normal": "Normal",
- "urgent": "Urgent",
- "unknown": "Unknown",
- "other": "Other",
- "no": "None",
- "select": "Select",
- "selectOrFill": "Select or fill in",
- "pleaseSelect": "Please select",
- "selectDateTime": "Select date & time",
- "selectDate": "Select date",
- "optional": "Optional",
- "pleaseEnter": "Please enter",
- "enterNumber": "Please enter a number",
- "requiredField": "This field is required",
- "unknownError": "Unknown error",
- "networkTimeout": "Network connection timeout",
- "draftSaved": "Draft saved",
- "draftSavedToast": "Draft saved",
- "saveFailed": "Save failed",
- "submitSuccess": "Submitted successfully",
- "submitFailed": "Submit Failed",
- "submitFailedRetry": "Submission failed, please try again later",
- "noCostTypeData": "No cost type data. Please add cost types in ERP first.",
- "submittedAwaitingApproval": "Submitted, awaiting approval",
- "published": "Announcement published",
- "withdrawn": "Withdrawn",
- "featureDev": "{feature} is under development",
- "completeFormInfo": "Please complete the form",
- "unsavedContentWarning": "Current content is not saved. Exit anyway?",
- "resetWarning": "This will clear all entered content and cannot be undone",
- "maxChars": "Up to {max} characters",
- "enterField": "Please enter {field}",
- "applicant": "Applicant",
- "department": "Department",
- "applyDept": "Apply Dept",
- "expensePersonnel": "Expense Personnel",
- "expenseDept": "Expense Dept",
- "dept": "Dept",
- "date": "Date",
- "startTime": "Start Time",
- "endTime": "End Time",
- "creator": "Creator",
- "hours": "Hours",
- "total": "Total",
- "totalOvertimeHours": "Total Overtime Hours",
- "send": "Send",
- "search": "Search",
- "searchByNameOrId": "Search by name or employee ID...",
- "searchEmployee": "Search Employee",
- "searchEmployeeHint": "Search by name or employee ID",
- "approver": "Approver",
- "rejecter": "Rejected By",
- "currentApprover": "Current Approver",
- "approvalFlow": "Approval Flow",
- "approvalProgress": "Approval Progress",
- "opinion": "Opinion: ",
- "currentNode": "Current Node",
- "waitHandle": "Pending",
- "approvalComment": "Approval comment (optional)",
- "submitTimeText": "Submit Time",
- "submitTime": "Submit Time",
- "downloadAttachment": "Download Attachment",
- "noMoreData": "No more data",
- "expandRemaining": "Expand ${count} more",
- "collapseRemaining": "Collapse ${count} items",
- "searchImportHint": "Search No./Reason/Applicant",
- "businessShort": "Business",
- "custom": "Custom",
- "markedAsRead": "Marked as read",
- "pinTopTag": "Pinned",
- "pinToTop": "Pin to Top",
- "filterTitle": "Filters",
- "filterStartDate": "Start Date",
- "filterEndDate": "End Date",
- "filterSelectStartDate": "Select start date",
- "filterSelectEndDate": "Select end date",
- "filterDateStartAfterEnd": "Start date cannot be later than end date",
- "filterDateEndBeforeStart": "End date cannot be earlier than start date",
- "filterStatus": "Approval Status",
- "transferStatus": "Transfer Status",
- "filterPayment": "Payment Status",
- "filterThisMonth": "This Month",
- "filterThisQuarter": "This Quarter",
- "filterThisYear": "This Year",
- "filterThisWeek": "This Week",
- "filter7Days": "Last 7 Days",
- "filter30Days": "Last 30 Days",
- "filterLastMonth": "Last Month",
- "filterLast3Months": "Last 3 Months",
- "filterDateRange": "Date Range",
- "filterGroupOther": "Other",
- "applyFilter": "Apply Filter",
- "clickChartToFilter": "Tap the bar chart to filter",
- "tdOpen": "On",
- "tdClose": "Off",
- "tdCancel": "Cancel",
- "tdConfirm": "Confirm",
- "tdOther": "Other",
- "tdReset": "Reset",
- "tdLoading": "Loading",
- "tdLoadingWithPoint": "Loading...",
- "tdKnew": "Got it",
- "tdRefreshing": "Refreshing",
- "tdReleaseRefresh": "Release to refresh",
- "tdPullToRefresh": "Pull to refresh",
- "tdCompleteRefresh": "Refresh complete",
- "tdDays": "Days",
- "tdHours": "Hours",
- "tdMinutes": "Minutes",
- "tdSeconds": "Seconds",
- "tdMilliseconds": "Milliseconds",
- "tdYearLabel": "Year",
- "tdMonthLabel": "Month",
- "tdDateLabel": "Day",
- "tdWeeksLabel": "Week",
- "tdSunday": "Sun",
- "tdMonday": "Mon",
- "tdTuesday": "Tue",
- "tdWednesday": "Wed",
- "tdThursday": "Thu",
- "tdFriday": "Fri",
- "tdSaturday": "Sat",
- "tdYear": "Year",
- "tdJanuary": "January",
- "tdFebruary": "February",
- "tdMarch": "March",
- "tdApril": "April",
- "tdMay": "May",
- "tdJune": "June",
- "tdJuly": "July",
- "tdAugust": "August",
- "tdSeptember": "September",
- "tdOctober": "October",
- "tdNovember": "November",
- "tdDecember": "December",
- "tdTime": "Time",
- "tdStart": "Start",
- "tdEnd": "End",
- "tdNotRated": "Not Rated",
- "tdCascadeLabel": "Select Option",
- "tdBack": "Back",
- "tdTop": "Top",
- "tdEmptyData": "No Data",
- "basicInfo": "Basic Info",
- "noDetailData": "No detail data",
- "unitItem": "items",
- "personUnit": "persons"
- },
- "home": {
- "myDashboard": "My Dashboard",
- "monthlyTotalExpense": "Monthly Total Reimbursement",
- "monthlySubmitted": "Submitted This Month",
- "pendingDocuments": "Pending Documents",
- "preApplication": "Pre-Application",
- "expenseReimbursement": "Reimbursement",
- "vehicleApplication": "Vehicle Application",
- "overtimeApplication": "Overtime Application",
- "applicationRecords": "Application Records",
- "expenseRecords": "Reimbursement Records",
- "outingLogs": "Outing Logs",
- "companyAnnouncements": "Company Announcements",
- "myApprovals": "My Approvals",
- "myApplications": "My Applications",
- "subordinateRecords": "Subordinate Records",
- "myExpenses": "My Reimbursements",
- "outingLog": "Outing Log",
- "announcements": "Announcements",
- "deptDashboard": "Dept Dashboard",
- "financeDashboard": "Finance Dashboard",
- "deptMonthlyReimbursement": "Dept Monthly Reimbursement",
- "deptMonthlySubmitted": "Dept Submitted This Month",
- "deptPendingDocuments": "Dept Pending Documents",
- "scopeMyApplications": "My Initiated",
- "scopeSubordinates": "Subordinate Approvals"
- },
- "expenseApply": {
- "expenseApplyList": "Expense Application List",
- "expenseApplyDetail": "Expense Application Details",
- "statusConvertedToExpense": "Converted to Expense",
- "expenseApplyRequest": "Expense Application",
- "expenseApplyImport": "Import Approved Applications",
- "importApprovedPreApp": "Import Approved Applications",
- "importExpenseApply": "Import Expense Application",
- "confirmImport": "Confirm Import",
- "importSuccess": "Import successful",
- "searchExpenseApply": "Search application no. or applicant",
- "noExpenseApplications": "No applications",
- "reportExpenseApply": "Expense Application Report",
- "reportExpenseApplyDetail": "Expense Application Detail Report",
- "emergencyLevel": "Urgency",
- "feeType": "Fee Type",
- "feeReason": "Fee Reason",
- "enterFeeReason": "Enter fee reason",
- "applyReason": "Application Reason",
- "expenseApplyReason": "Purpose",
- "enterApplyReason": "Enter application reason",
- "validUntil": "Valid Until",
- "selectExpiryDate": "Select expiry date",
- "relatedContractNo": "Related Contract No.",
- "referenceNo": "Reference No.",
- "relatedControl": "Related Control",
- "availableBudget": "Available Budget",
- "overBudget": "Over budget {amount}",
- "overBudgetTriggerApproval": "Your amount exceeds the budget. Submission will trigger the executive approval process.",
- "expenseDetails": "Expense Details",
- "addDetail": "Add Expense Detail",
- "addAtLeastOneDetail": "Please add at least one expense detail",
- "noDetailHint": "No details, tap above to add",
- "detailRemark": "Detail Remark",
- "expenseProject": "Expense Item",
- "expenseCategory": "Expense Item",
- "selectExpenseCategory": "Select expense item",
- "acctSubject": "GL Account",
- "selectAcctSubject": "Auto-filled from expense category",
- "costDept": "Cost Department",
- "selectCostDept": "Select cost department",
- "estimatedAmount": "Estimated Amount",
- "enterEstimatedAmount": "Enter estimated amount",
- "estimatedAmountPositive": "Estimated amount must be greater than 0",
- "quantity": "Quantity",
- "quantityPricePositive": "Quantity and price must be greater than 0",
- "unit": "Unit",
- "unitPrice": "Unit Price",
- "selectUnit": "Select unit",
- "estimatedStartDate": "Estimated Start Date",
- "estimatedEndDate": "Estimated End Date",
- "estimatedDate": "Estimated Date",
- "detailList": "Detail List",
- "auditTrail": "Audit Trail",
- "bodyDetailList": "Body Details",
- "items": "items",
- "selectEstimatedStartDate": "Please select estimated start date",
- "selectEstimatedEndDate": "Please select estimated end date",
- "startDateNotAfterEndDate": "Start date cannot be later than end date",
- "transportType": "Transport Type",
- "selectTransport": "Select transport",
- "isOvernight": "Overnight",
- "travelExpense": "Travel Expense",
- "entertainmentExpense": "Entertainment Expense",
- "entertainmentTargetUnit": "Target Organization",
- "entertainmentLevel": "Entertainment Level",
- "selectEntertainmentLevel": "Select entertainment level",
- "externalCount": "External Attendees",
- "internalCount": "Internal Attendees",
- "companionNotExceedGuest": "Internal attendees cannot exceed external guests",
- "venue": "Venue",
- "pleaseEnterLocation": "Please enter location",
- "meetingExpense": "Meeting Expense",
- "meetingLocation": "Meeting Location",
- "pleaseEnterMeetingLocation": "Please enter meeting location",
- "hintTravelFields": "Please fill in travel details (dates, transport, etc.)",
- "hintEntertainmentFields": "Please fill in entertainment details (target, level, guests, etc.)",
- "hintMeetingFields": "Please fill in meeting details (dates, venue, etc.)",
- "filterExpenseTravel": "Travel Expense",
- "filterExpenseEntertainment": "Entertainment",
- "filterExpenseOffice": "Office Expense",
- "filterExpenseMeeting": "Meeting Expense",
- "filterCritical": "Critical",
- "costCategoryTransport": "Transport",
- "costCategoryHotel": "Hotel",
- "costCategoryOfficeSupplies": "Office Supplies",
- "costCategoryMeals": "Meals",
- "costCategoryMaterials": "Materials",
- "costCategoryService": "Service Fee",
- "costCategoryOther": "Other",
- "unitPiece": "Piece",
- "unitRoom": "Room",
- "unitPerson": "Person",
- "unitDay": "Day",
- "unitSet": "Set",
- "transportPlane": "Plane",
- "transportHighSpeedRail": "High-Speed Rail",
- "transportTrain": "Train",
- "transportSelfDrive": "Self-Drive",
- "entertainmentVip": "VIP",
- "important": "Important",
- "isTaxIncluded": "Tax Included",
- "expenseType": "Expense Type",
- "selectAtLeastOneExpenseType": "Please select at least one expense type",
- "expenseTypeProcurement": "Daily Procurement",
- "expenseTypeActivity": "Activity Funds",
- "expenseTypeTraining": "Training Fee",
- "mockAttachmentAdded": "Attachment added (mock)",
- "attachmentUpload": "Attachment Upload",
- "maxAttachment": "Up to 9 attachments, support image/PDF/Word/Excel (image ≤10MB, doc ≤20MB)",
- "attachments": "Attachments",
- "pickImage": "Select Image",
- "pickFile": "Select File",
- "fileTooLarge": "File size exceeds limit",
- "imageSizeLimit": "Image must be ≤${max}MB",
- "fileSizeLimit": "File must be ≤${max}MB",
- "fileLimitHint": "At most ${limit} file(s) can be selected",
- "dateRangeLimit": "Date range cannot exceed 12 months",
- "selectDateRange": "Please select start and end dates",
- "endDateBeforeStart": "End date cannot be earlier than start date",
- "addExpenseDetailFirst": "Please add expense items in the details"
- },
- "expense": {
- "expenseList": "Expense List",
- "expenseDetail": "Expense Details",
- "editExpense": "Edit Expense",
- "expenseApply": "Reimbursement",
- "searchExpense": "Search expense No. or applicant",
- "noExpenses": "No expense reports",
- "reportExpense": "Expense Report",
- "reportExpenseDetail": "Expense Detail Report",
- "expenseDate": "Expense Date",
- "expenseNo": "Expense No.",
- "autoGenerated": "Auto-generated",
- "currency": "Currency",
- "selectCurrency": "Select currency",
- "paymentMethod": "Payment Method",
- "bankTransfer": "Bank Transfer",
- "cash": "Cash",
- "alipay": "Alipay",
- "wechat": "WeChat Pay",
- "bankAccountName": "Account Name",
- "selectPaymentMethod": "Select payment method",
- "voucherNo": "Voucher No.",
- "enterVoucherNo": "Enter voucher no.",
- "remark": "Remark",
- "enterRemark": "Enter remark",
- "generateVoucher": "Generate Voucher",
- "receiptAccount": "Receipt Account",
- "bankName": "Bank Name",
- "accountName": "Account Name",
- "bankAccount": "Bank Account",
- "selectBank": "Please select bank",
- "enterBankAccount": "Enter bank account",
- "bankSelection": "Bank selection is under development",
- "bankAccountInput": "Bank account input is under development",
- "expenseAmount": "Expense Amount",
- "totalExpense": "Total Expense",
- "approvedTotal": "Approved Total",
- "amount": "Amount",
- "enterAmount": "Enter amount",
- "enterValidAmount": "Enter a valid amount",
- "amountMustPositive": "Amount must be greater than 0",
- "amountExcludingTax": "Excl. Tax Amount",
- "amountInclTax": "Incl. Tax Amount",
- "amountPositive": "Amount must be greater than 0",
- "taxAmount": "Tax Amount",
- "taxRate": "Tax Rate",
- "exchangeRate": "Exchange Rate",
- "approvedAmount": "Approved Amount",
- "expenseName": "Expense Name",
- "enterExpenseName": "Enter expense item name",
- "description": "Description",
- "addExpenseDetail": "Add Expense Detail",
- "invoiceUpload": "Invoice Upload",
- "maxInvoices": "Up to 9 invoices",
- "invoiceAttachment": "Invoice Attachment",
- "noInvoice": "No invoice attachments",
- "invoiceCheck": "Invoice Compliance Check",
- "invoiceCheck1": "Invoice info matches the expense",
- "invoiceCheck2": "Invoice amount matches the expense amount",
- "invoiceCheck3": "Invoice date is within validity",
- "invoiceCheck4": "Invoice title is the full company name",
- "project": "Project",
- "relatedProject": "Related Project",
- "budgetSubject": "Budget Account",
- "costCenter": "Cost Center",
- "selectProject": "Select related project",
- "selectProjectAndSubject": "Select project and budget account",
- "selectSubject": "Please select account",
- "selectCostCenter": "Please select cost center",
- "projectSelection": "Project selection is under development",
- "budgetSubjectSelection": "Budget account is under development",
- "costCenterSelection": "Cost center is under development",
- "projectCode": "Project Code",
- "subjectCode": "Account Code",
- "projectCategory": "Project Category",
- "expenseReason": "Expense Reason",
- "enterExpenseReason": "Enter expense reason",
- "customerVendor": "Customer/Vendor",
- "offsetAmount": "Offset Amount",
- "financialArchive": "Financial Archive",
- "archiveDate": "Archive Date",
- "archiver": "Archiver",
- "financeDept": "Finance Dept",
- "isInvoiceVerified": "Invoice Verified",
- "isTaxIdMatched": "Tax ID Matched",
- "isCategoryCompliant": "Category Compliant",
- "paymentStatus": "Payment Status",
- "confirmPaymentAndArchive": "Confirm Payment & Archive",
- "confirmPaymentAndArchiveTip": "Confirm to pay and archive this expense? This cannot be undone.",
- "nextPendingPayment": "Next Pending Payment",
- "allPaymentsProcessed": "All pending payments have been processed",
- "paymentArchiveSuccess": "Payment and archive completed"
- },
- "overtime": {
- "overtimeList": "Overtime Records",
- "overtimeDetail": "Overtime Details",
- "overtimeApply": "Overtime Application",
- "overtimeRecords": "Overtime Records",
- "searchOvertime": "Search overtime no. or applicant",
- "searchOvertimeApply": "Search overtime no. or applicant",
- "noOvertimeApplications": "No overtime records",
- "noOvertimes": "No overtime records",
- "reportOvertime": "Overtime Report",
- "reportOvertimeDetail": "Overtime Detail Report",
- "overtimeInfo": "Overtime Info",
- "overtimeType": "Overtime Type",
- "overtimeReason": "Overtime Reason",
- "reason": "Reason",
- "endTimeMustLater": "End time must be later than start time",
- "recordDd": "Record Date",
- "usr": "Entered By",
- "chkMan": "Reviewer",
- "clsDate": "Close Date",
- "dayOfWeek": "Day of Week",
- "compensationMethod": "Compensation Method",
- "netOvertimeHours": "Net Overtime Hours",
- "enterOvertimeReason": "Please describe the overtime reason in detail",
- "workdayOvertime": "Workday Overtime",
- "weekendOvertime": "Weekend Overtime",
- "holidayOvertime": "Holiday Overtime",
- "overtimePay": "Overtime Pay",
- "compLeave": "Comp Leave",
- "selectOvertimeType": "Select overtime type",
- "selectCompensationMethod": "Select compensation method",
- "compensationOvertimePay": "Overtime Pay",
- "compensationCompLeave": "Comp Leave",
- "compensationMixed": "Mixed",
- "workday": "Workday",
- "weekend": "Weekend",
- "holiday": "Holiday",
- "overtimeRequest": "Overtime Request",
- "editOvertime": "Edit Overtime",
- "overtimeApplyNo": "Overtime Application No.",
- "employee": "Employee",
- "dep": "Department",
- "jbType": "Overtime Type",
- "applyDate": "Application Date",
- "jbDate": "Overtime Date",
- "startTimeHHMM": "Start Time",
- "endTimeHHMM": "End Time",
- "overtimeHours": "Overtime Hours",
- "overtimeDays": "Overtime Days",
- "attPeriod": "Attendance Period",
- "compensationType": "Compensation Type",
- "compensationCount": "Compensation Count",
- "adr": "Address",
- "workingDay": "Working Day",
- "restDay": "Rest Day",
- "publicHoliday": "Public Holiday",
- "specialHoliday": "Special Holiday",
- "compensatoryLeave": "Compensatory Leave",
- "noCompensation": "No Compensation",
- "selectJbType": "Select Overtime Type",
- "selectCompensationType": "Select Compensation Type",
- "enterReason": "Please enter reason",
- "enterAdr": "Please enter address",
- "enterRemark": "Please enter remark",
- "confirmEdit": "Confirm Edit",
- "overtimeHoursPositive": "Overtime hours must be greater than 0",
- "addDetail": "Add Detail",
- "overtimeDetails": "Overtime Details",
- "noDetailHint": "Please add overtime detail",
- "selectDept": "Please select department first",
- "addAtLeastOneDetail": "Please add at least one overtime detail",
- "autoFromDate": "Auto from overtime date",
- "detailConfirmHint": "Confirm submit this overtime detail?",
- "sunday": "Sunday",
- "monday": "Monday",
- "tuesday": "Tuesday",
- "wednesday": "Wednesday",
- "thursday": "Thursday",
- "friday": "Friday",
- "saturday": "Saturday"
- },
- "vehicle": {
- "vehicleList": "Vehicle Records",
- "vehicleApply": "Vehicle Application",
- "vehicleDetail": "Vehicle Details",
- "vehicleRecords": "Vehicle Records",
- "searchVehicle": "Search vehicle no. or applicant",
- "noVehicles": "No vehicle records",
- "reportVehicle": "Vehicle Report",
- "reportVehicleDetail": "Vehicle Detail Report",
- "vehicleInfo": "Vehicle Info",
- "vehicleReason": "Vehicle Reason",
- "selectVehicle": "Select vehicle",
- "selectPlate": "Please select license plate",
- "noVehicle": "No vehicle specified",
- "enterVehicleReason": "Enter vehicle reason",
- "selectVehicleReason": "Select vehicle reason",
- "departureLocation": "Departure Location",
- "destination": "Destination",
- "enterDestination": "Enter destination",
- "passengerCount": "Passenger Count",
- "passengerName": "Passenger Name",
- "companion": "Companion",
- "selectCompanion": "Select companion",
- "estimatedTime": "Estimated Time",
- "estimatedMileage": "Estimated Mileage",
- "tripPreview": "Trip Preview",
- "tripRoute": "Trip Route",
- "mapPreview": "Map Route Preview",
- "snMapPickerComingSoon": "Map picker coming soon",
- "mapPickerComingSoon": "Map picker coming soon",
- "gpsLocating": "Locating via GPS…",
- "gpsLocatingWait": "Locating via GPS, please wait",
- "gpsFailed": "Unable to get current location",
- "gpsFailedHint": "Please check location permission settings",
- "gpsSuccess": "GPS located successfully",
- "gpsPermission": "Unable to get GPS location, please check location permission",
- "origin": "Origin",
- "sedan": "Sedan",
- "suv": "SUV",
- "businessVan": "Business Van",
- "customerReception": "Customer Reception",
- "businessTrip": "Business Trip",
- "internalAffairs": "Internal Affairs",
- "official": "Official",
- "returnCarRegister": "Return Registration",
- "confirmReturnCar": "Confirm Return",
- "confirmReturn": "Confirm return and register",
- "reEdit": "Re-edit",
- "returnCarArchived": "Return archived",
- "returnCarArchivedAt": "Return archived at {time}",
- "mileageBefore": "Mileage before (km)",
- "mileageAfter": "Mileage after (km)",
- "actualCost": "Actual cost (CNY)",
- "costRemarkLabel": "Cost remark (tolls/parking, etc.)",
- "returnCarSubmitted": "Return registration submitted",
- "returnTimeMustLater": "Return time must be later than departure time",
- "departTime": "Est. Departure Time",
- "returnTime": "Est. Return Time",
- "arriveTime": "Return Time",
- "earlyReturn": "Note: early return",
- "overReturnTime": "Warning: exceeded planned return time",
- "actualReturnTime": "Actual Return Time",
- "selectReturnTime": "Select actual return time",
- "navigation": "Navigation",
- "navigationComingSoon": "Navigation coming soon",
- "tapToViewNavigation": "Tap to view navigation",
- "mockOpenNavigation": "Mock: open native navigation",
- "submitConfirmContent": "Mileage and cost cannot be changed after submission. Continue?",
- "licensePlate": "License Plate",
- "selectLicensePlate": "Select license plate",
- "filterVehicle": "Vehicle Filter",
- "filterUsage": "Usage Filter",
- "filterReception": "Reception",
- "vehicleOccupied": "This vehicle is occupied during this period",
- "vehicleOccupiedPeriod": "The vehicle is booked for this period. Please choose another vehicle or adjust the time.",
- "mileageInvalid": "Return mileage cannot be less than departure mileage",
- "business": "Official",
- "vehicleRequest": "Vehicle Request",
- "editVehicle": "Edit Vehicle",
- "vehicleApplyNo": "Vehicle Application No.",
- "applicant": "Applicant",
- "companionInfo": "Companion Info",
- "vehicleType": "Vehicle Type",
- "selectVehicleType": "Select Vehicle Type",
- "brand": "Brand",
- "seats": "Seats",
- "odometerBegin": "Odometer",
- "odometerEnd": "Return Odometer",
- "driverName": "Driver Name",
- "returnCarInfo": "Return Info",
- "costRemark": "Cost Remark",
- "inspector": "Inspector",
- "inspectionDate": "Inspection Date",
- "enterNumber": "Please enter a number",
- "enterOdometerEnd": "Please enter return odometer reading",
- "enterActualCost": "Please enter actual cost",
- "enterCostRemark": "Please enter cost remark",
- "minValue": "Min",
- "maxValue": "Max",
- "enterValidNumber": "Please enter a valid number",
- "amountLabel": "Amount: ",
- "confirmSubmitReturn": "Confirm return registration?",
- "returnCarSuccess": "Return registration successful",
- "returnCarFailed": "Return registration failed",
- "vehicleReturned": "Vehicle Returned",
- "selectLicensePlateHint": "Please select license plate",
- "withdraw": "Withdraw",
- "withdrawn": "Withdrawn",
- "van": "Van",
- "truck": "Truck",
- "pickup": "Pickup",
- "minibus": "Minibus",
- "bus": "Bus",
- "tripInfo": "Trip Info",
- "noPassengerHint": "No companions, tap Add above"
- },
- "outingLog": {
- "outingLogList": "Outing Logs",
- "outingLogCreate": "New Outing Log",
- "outingLogDetail": "Outing Log Details",
- "searchOutingLog": "Search customer name or salesperson",
- "noOutingLogs": "No outing logs",
- "reportOutingLog": "Outing Log Report",
- "reportOutingLogDetail": "Outing Log Detail Report",
- "outingDetail": "Outing Details",
- "outingType": "Outing Type",
- "outingReason": "Outing Reason",
- "outingLocation": "Outing Location",
- "enterLocation": "Enter outing location",
- "enterOutingReason": "Enter outing reason and work details...",
- "workSummary": "Work Summary",
- "followUp": "Follow-up Plan",
- "workSummaryRequiredHint": "Please fill in the work summary (required)",
- "followUpOptional": "Follow-up plan (optional)",
- "sitePhotos": "Site Photos",
- "takePhoto": "Take Photo",
- "maxPhotoCount": "Up to 9 photos",
- "limitReached": "Limit reached",
- "tapToTakePhoto": "Tap to take photo (min 1)",
- "noPhotos": "No photos",
- "noComments": "No comments",
- "noPlan": " · No plan",
- "noWorkSummary": "No work summary",
- "customerVisit": "Customer Visit",
- "outingAffairs": "Outing Affairs",
- "selectOutingType": "Select outing type",
- "salesperson": "Salesperson",
- "salespersonLabel": "Sales: {name} · {dept}",
- "customerName": "Customer Name",
- "customerInfo": "Customer Info",
- "selectContact": "Select Contact",
- "selectContactHint": "Tap to select contact (optional)",
- "noContact": "No contacts for this customer",
- "searchCustomer": "Search customer name",
- "selectCustomerFirst": "Please select a customer first",
- "checkInAddress": "Check-in Address",
- "checkInTime": "Check-in Time",
- "watermarkHint": "Photos auto-add watermark: server time + GPS",
- "watermarkHintDynamic": "Auto watermark: server time + GPS ({lat}°N, {lng}°E)",
- "mockPhotoTaken": "Mock photo: Photo #{idx} taken (watermark: {time} | {lat}, {lng})",
- "outingLogSubmitted": "Outing log submitted",
- "newComment": "New Comment",
- "comments": "Comments",
- "managerComment": "Manager Comment",
- "selectRating": "Please select rating",
- "enterComment": "Please enter comment",
- "commentSent": "Comment sent",
- "requiredSummary": "Please fill in work summary",
- "requiredPhotos": "Take at least 1 photo",
- "inputComment": "Enter comment…"
- },
- "announcement": {
- "announcementList": "Announcement List",
- "announcementDetail": "Announcement Details",
- "announcementCreate": "Publish Announcement",
- "searchAnnouncement": "Search announcement title",
- "noAnnouncements": "No announcements",
- "announcementContent": "Announcement Content",
- "enterContent": "Enter announcement content...",
- "announcementType": "Announcement Type",
- "selectAnnouncementType": "Select announcement type",
- "publishSettings": "Publish Settings",
- "pinAnnouncement": "Pin Announcement",
- "recipientScope": "Recipient Scope",
- "selectRecipientScope": "Select recipient scope",
- "addAttachment": "Add Attachment",
- "attachmentPicker": "Mock: select attachment (PDF/image/Word/Excel, ≤20MB)",
- "attachmentLimit": "Up to 5 attachments, support PDF/image/Word/Excel, ≤20MB each",
- "announcementPublished": "Announcement published",
- "confirmPublishTitle": "Confirm Publish",
- "confirmPublishContent": "Confirm to publish {title}?",
- "expiryNever": "Never expires (optional)",
- "allStaff": "All Staff",
- "byDept": "By Department",
- "byDeptHint": "Multi-select by department tree",
- "byUser": "By Specific Users",
- "byUserHint": "Multi-select by employee search",
- "selectDept": "Select Department",
- "coverageCount": "Coverage Count",
- "scopeAllStaff": "Visible to all staff",
- "dingReminder": "One-tap DING reminder",
- "dingPromptSent": "Reminder sent to {count} unread staff",
- "readCount": "{count} read",
- "unreadCount": "{count} unread",
- "typeAndPublishDate": "{type} · shown after publishing",
- "titleNotFilled": "(No title)",
- "contentNotFilled": "(No content)",
- "announcementExpired": "This announcement expired on {date}",
- "selectedCount": "{count} selected",
- "auditTracking": "Reach rate audit tracking",
- "mockExpandReadList": "Mock: expand read staff list",
- "mockExpandUnreadList": "Mock: expand unread staff list",
- "announcementTypes": "Select announcement type",
- "previewTitle": "Preview",
- "enterTitle": "Enter announcement title (required)",
- "hrPolicy": "HR & Policy",
- "holidayActivity": "Holiday & Activity",
- "filterNotice": "Notice",
- "filterHr": "HR & Policy",
- "filterHoliday": "Holiday & Activity",
- "noticeAnnouncement": "Notice",
- "pinnedToast": "Pinned: ",
- "deletedToast": "Deleted: ",
- "markReadToast": "Marked as read: ",
- "markUnreadToast": "Marked as unread: ",
- "pinTopTag": "Pinned",
- "markRead": "Read",
- "markUnread": "Unread",
- "markAllRead": "Mark All Read",
- "published": "Announcement published",
- "publishAnnouncement": "Publish Announcement"
- },
- "report": {
- "reports": "Reports",
- "chartTitle1": "Expense & Approved Amount Trend",
- "chartTitle2": "Overtime Hours Trend (Last 12 Months)",
- "chartTitle3": "Vehicle Trips vs Total Cost (Last 12 Months)",
- "chartTitle4": "Monthly Trend",
- "chartTitle5": "Visits vs Avg Rating (Last 12 Months)",
- "chartTitle6": "Apply Amount Trend",
- "chartTitle8": "Personnel Expense Comparison",
- "chartDesc1": "Dual line comparison chart",
- "chartDesc2": "Bar trend chart",
- "chartDesc3": "Dual-axis line chart",
- "chartDesc4": "Dual line comparison chart",
- "chartDesc5": "Dual-axis line chart",
- "chartDeptExpenseCompare": "Dept Reimbursement vs Approved Amount",
- "chartDeptApplyCompare": "Dept Applied vs Approved Amount",
- "chartDeptOvertimeCompare": "Dept Total Overtime Hours",
- "chartDeptVehicleCompare": "Dept Vehicle Trips vs Cost",
- "chartDeptOutingCompare": "Dept Visits vs Avg Rating",
- "statTotalApproved": "Total Reimbursed",
- "statMonthCount": "This Month Count",
- "statTotalCount": "Total Bills",
- "statPendingApprove": "Pending Approval",
- "statPendingPayment": "Pending Payment",
- "statTotalApply": "Total Applied",
- "statApprovedCount": "Approved Count",
- "statApprovedAmount": "Approved Amount",
- "statTransferredCount": "Transferred",
- "statTransferredAmount": "Transferred Amount",
- "statMonthHours": "This Month Net Hours",
- "statMonthTrips": "This Month Trips",
- "statTotalMileage": "Total Mileage",
- "statTotalCost": "Tolls & Parking",
- "statNotReturned": "Not Returned",
- "statMonthVisits": "This Month Visits",
- "statVisitedCustomers": "Customers Visited",
- "statAvgRating": "Avg Rating",
- "statNotReviewed": "Unreviewed Logs",
- "yearApproved": "Reimbursed This Year",
- "monthCount": "This Month Count",
- "waitApprove": "Pending Approval",
- "waitPayment": "Pending Payment",
- "monthNetHours": "This Month Net Hours",
- "overtimeCount": "Overtime Count",
- "compHours": "Comp Leave Hours",
- "settleCount": "Settlement Count",
- "monthVehicle": "This Month Vehicle",
- "totalMileage": "Total Mileage",
- "totalCost": "Total Cost",
- "notReturned": "Not Returned",
- "yearTotalApp": "Total Amount",
- "approvedCount": "Approved Count",
- "approvedAmount": "Approved Amount",
- "transferredAmount": "Transferred Amount",
- "monthVisits": "This Month Visits",
- "visitCustomers": "Customers Visited",
- "avgRating": "Avg Rating",
- "notReviewed": "Unreviewed",
- "paidTotal": "Total Paid",
- "pendingPaymentTotal": "Total Pending Payment",
- "abnormalReturns": "Abnormal Returns",
- "statExpenseTotal": "Total Expense",
- "statExpenseTotalCount": "Total Bills",
- "statTransferredToPmt": "Transferred to Pmt",
- "statTransferredToPmtAmount": "Transferred Amount",
- "approvedAmountLabel": "Approved Amount",
- "exportPlaceholder": "Export (placeholder)"
- },
- "messages": {
- "tabMessages": "Messages",
- "messageNotifications": "Message Notifications",
- "systemNotice": "System Notice",
- "approvalNotice": "Approval Notice",
- "systemMessage": "System Message",
- "minutesAgo": " min ago",
- "hoursAgo": " hr ago",
- "daysAgo": " days ago",
- "withdrawNotice": "Withdrawal Notice",
- "expiryReminder": "Expiry Reminder",
- "pendingApproval": "Pending Approval"
- },
- "admin": {
- "permissionManagement": "Permission Management",
- "permissionEdit": "Permission Edit",
- "quickPresets": "Quick Presets",
- "permissionItems": "Permission Items",
- "changeLog": "Change Log",
- "recentItems": "Recent {count} items",
- "confirmSave": "Confirm Save",
- "financeStaff": "Finance Staff",
- "systemAdmin": "System Admin",
- "regularEmployee": "Regular Employee",
- "employeeId": "Employee ID: ",
- "itDept": "IT Department",
- "adminDept": "Admin Department",
- "marketDept": "Marketing Department",
- "techDept": "Tech Department",
- "expenseApplyNo": "Application No.",
- "applyDate": "Apply Date",
- "critical": "Critical",
- "unused": "Unused",
- "partiallyUsed": "Partially Used",
- "fullyUsed": "Fully Used",
- "usageStatus": "Usage Status",
- "bankTransferNo": "Bank Transfer No.",
- "approvalStepSubmitted": "Submitted",
- "approvalStepApproved": "Approved",
- "approvalStepFinanceReview": "Finance Review",
- "approvalStepInvoice": "Invoice Verification",
- "approvalStepPayment": "Payment & Archive",
- "approvalStepArchive": "Archive",
- "approvalStepArchiveDesc": "Auto-archived after approval completes",
- "approvalStepPaymentDesc": "Pending all 3 verifications",
- "approvalDescSubmitted": "Zhang San",
- "approvalDescApproved": "Li Si — Approved",
- "approvalDescFinanceReview": "Wang — Finance Dept.",
- "approvalDescInvoice": "Wang — Finance Dept.",
- "draftFound": "Draft Found",
- "draftRestorePrompt": "An unfinished form was found. Restore it?",
- "discard": "Discard",
- "restore": "Restore",
- "noAttachment": "No attachments",
- "attachServiceUnavailable": "Attachment service unavailable",
- "noAttachmentPermission": "No attachment permission. Please contact admin to configure in ERP Special Password Settings",
- "downloadFailed": "Download failed",
- "downloadSuccess": "Saved to device",
- "openFailed": "Open failed",
- "downloading": "Downloading…",
- "headerAttachments": "Header Attachments",
- "detailLine": "Detail Line"
- }
- }
|