{
  "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",
    "noChartData": "No comparison data",
    "unitItem": "items",
    "unitCount": "times",
    "unitYuan": "yuan",
    "unitKm": "km",
    "unitHours": "h",
    "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",
    "overtimeDetailReason": "Overtime Reason",
    "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": "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",
    "addOvertimeDetail": "Add Overtime Detail",
    "editOvertimeDetail": "Edit Overtime Detail",
    "addDetail": "Add Detail",
    "overtimeDetails": "Overtime Details",
    "noDetailHint": "Please add overtime detail",
    "selectDept": "Please select department first",
    "selectApplicant": "Please select applicant 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(km)",
    "odometerEnd": "Return Odometer(km)",
    "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",
    "selectDepartTime": "Please select estimated departure time",
    "selectReturnTime": "Please select estimated return time",
    "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",
    "chartTitle3": "Vehicle Trips Trend",
    "chartTitle4": "Monthly Trend",
    "chartTitle5": "Visits vs Avg Rating (Last 12 Months)",
    "chartTitle6": "Apply Amount Trend",
    "chartTitle8": "Personnel Expense Comparison",
    "chartTitleOT": "Person Overtime Hours 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(km)",
    "statTotalCost": "Actual Cost",
    "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",
    "statTotalTrips": "Total Trips",
    "chartTitle7": "Person Vehicle Trips Comparison",
    "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",
    "statTotalHours": "Total Overtime Hours",
    "statTotalOvertimeCount": "Total Person-Times",
    "statSettleHours": "Settlement Hours",
    "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"
  }
}