{ "mtmsRouteWarn_title": "Route data alerts", "mtmsRouteWarn_tooltipHas": "{{count}} potential conflict(s)", "mtmsRouteWarn_tooltipNone": "No alerts", "mtmsRouteWarn_refresh": "Reload data", "mtmsRouteWarn_refreshing": "Loading…", "mtmsRouteWarn_copyAll": "Copy all", "mtmsRouteWarn_parseHint": "{{count}} 4F lane(s): weekday could not be determined (excluded from alerts)", "mtmsRouteWarn_empty": "No data conflicts.", "mtmsRouteWarn_conflict4f": "4F: same shop on different lanes · weekday {{weekday}}", "mtmsRouteWarn_conflictDep": "Non-4F: same shop on different lanes · departure {{time}}", "mtmsRouteWarn_shop": "Shop", "mtmsRouteWarn_postAddConflict": "After adding the shop, data conflicts with other lane(s). Open the bell for details.", "No changes": "No changes", "Saved": "Saved", "Failed to save": "Failed to save", "Changed": "Changed", "Logistic": "Logistic", "Driver": "Driver", "Plate": "Plate", "Departure": "Departure", "Shops": "Shops", "Current version": "Current version", "new arrangement": "new arrangement", "Submitting...": "Submitting…", "saveChanges": "Save changes", "warnExpand": "Expand", "warnCollapse": "Collapse", "warnClipboardStore": "Store", "warnClipboardDep": "Dep", "warnClipboardWeekday": "Weekday", "pageTitle": "MTMS route & shop board", "importRoutes": "Import routes", "exportRoutes": "Export routes", "routeReport": "Route report", "departureTooltipNeedShops": "Add shops before setting departure time", "departureTooltipEditSave": "Edit departure time (saved with \"Save changes\")", "departureEditAria": "Edit departure time", "saveDisabledTooltip": "Make changes (drag, departure time, load order, logistics, etc.) before saving", "cancel": "Cancel", "drawerClose": "Close", "tabBoard": "Route board", "tabLogistics": "Logistics", "quickIndex": "Quick index", "versionLogDialogTitle": "Version change log", "emDash": "—", "val_logisticsRequired": "Enter logistics company, plate, and driver name", "val_logisticsDuplicateName": "A logistics master or staged add with this name already exists", "val_phoneInvalid": "Enter a valid phone number (digits)", "err_save": "Save failed", "err_invalidMasterId": "Invalid master record id", "err_exportNeedSelection": "Select at least one lane on the left to export", "err_export": "Export failed", "err_noLanes": "No lane data", "err_import": "Import failed", "err_dragDuplicateShop": "Target lane already has this shop (same shop / same shop code)", "district_err_name": "Enter a district name", "district_err_reserved": "\"Unclassified\" is built-in; do not add it again", "district_err_exists": "This district already exists", "route_err_code": "Enter a lane code", "route_err_departure": "Select or enter departure time", "route_err_duplicate": "This lane (including remark group) already exists", "route_err_create": "Failed to add lane", "confirm_addShopConflict": "Detected {{count}} potential conflict(s) with other lanes (Rules 1/2; see bell). It will be added to the board first; press \"Save changes\" to persist. Continue?", "confirm_discardDraftShop": "Discard unsaved \"new shop\" draft?", "confirm_removeShop": "Remove this shop from the lane? (Press \"Save changes\" to persist)", "confirm_clearLane": "Clear all {{count}} shop(s) from lane \"{{laneLabel}}\"? (Press \"Save changes\" to delete on server)", "confirm_departureConflict": "After changing departure time, {{count}} potential conflict(s) detected (Rules 1/2; see bell). Apply anyway?", "drag_blockDraftShop": "Unsaved \"new shop\" rows must be saved with \"Save changes\" or removed from the card before dragging.", "nav_unsavedLeave": "You have unsaved changes. Leave this page?", "save_clearedEmptyDistricts": "Only empty district blocks (no shops); cleared staging", "api_fail_createLane": "Failed to create lane", "api_fail_addShop": "Failed to add shop", "api_fail_updateLane": "Failed to update lane", "api_fail_deleteShop": "Failed to delete shop", "api_fail_updateLogistics": "Failed to update logistics", "diff_loadFail": "Failed to load version diff", "versionNote_saveFail": "Failed to save note", "diff_restoreFail": "Restore failed", "confirm_restoreDiscardsEdits": "Scheduling a version restore will discard other unsaved board changes (drags, deletes, pending shops/lanes, logistics fields, etc.). Continue?", "diff_restoreScheduled": "Restore to version #{{versionId}} is scheduled; press \"Save changes\" to persist.", "diff_restoreAlreadyPending": "This version is already scheduled; press \"Save changes\" to apply.", "restore_applied": "Snapshot restore applied; board reloaded.", "restore_appliedDroppedStaging": "Snapshot restore applied; other staged edits in this save were skipped (edit again if needed).", "confirm_restoreSaveWillDropStaging": "Save will apply the snapshot restore first; other staged edits in this save will be skipped. Continue?", "diff_noOlderCompare": "No older version to compare (pick a newer version)", "logistic_needMasterTpl": "\"{{name}}\" has no logistics master id—create it with \"Add logistics\" first.", "diffField_logisticsCompany": "Logistics company", "diffLogistic_unassigned": "Unassigned", "diff_onLane": "Lane {{lane}}", "diff_moveTo": "Move to {{lane}}", "diff_addedToLane": "Added to lane {{lane}}", "diff_removedFromLane": "Removed from {{lane}}", "diff_editedCaption": "Field edits (sequence / branch name / time window, etc.)", "diff_restoreToHead": "Schedule restore to latest snapshot (requires Save)", "diff_restoreToSelected": "Schedule restore to this version (requires Save)", "dialog_close": "Close", "btn_addLogistics": "Add logistics", "logistics_sidebarEmpty": "No lanes (refresh or relax filters)", "lane_companyChip": "{{count}} lane(s)", "lane_selectTitle": "Lanes", "lane_selectedNone": "No lanes selected", "lane_selectedCount": "{{count}} selected", "lane_searchPh": "Search…", "lane_selectAll": "Select all", "lane_noMatchFilter": "No lanes match (clear search or floor filter)", "floor_label": "Floor", "floor_all": "All", "filter_clear": "Clear", "filter_apply": "OK", "btn_addLane": "Add lane", "tools_title": "Tools", "shop_searchPh": "Search shop name / code / district…", "btn_openVersionLog": "Version log", "btn_loading": "Loading…", "btn_refresh": "Refresh", "logistics_overviewTitle": "Logistics overview", "version_ui_historyTitle": "Version history", "version_ui_filterAria": "Filter version list", "version_ui_listAria": "Version history list", "version_ui_snapshotBadge": "Current snapshot", "version_ui_id": "Version #{{id}}", "version_ui_none": "No snapshot yet", "version_ui_editedBy": "Editor: {{name}}", "version_note_placeholder": "Note (saved on blur)", "version_note_saving": "Saving…", "version_search_label": "Search", "version_search_placeholder": "Version id / note / editor", "version_date_label": "Date", "version_empty_filtered": "No versions match filters", "version_empty_list": "No versions yet (use \"Save version log\")", "diff_clickLeft": "Select a version on the left to view changes", "diff_oldestSnapshot": "Oldest snapshot—no older version to diff against.", "diff_summary_title": "Summary", "diff_export_reportBtn": "Export version lane report", "diff_summary_added": "Added", "diff_summary_moved": "Moved", "diff_summary_deleted": "Deleted", "diff_summary_fieldChange": "Field changes", "diff_shopList_title": "Shop changes", "diff_staged_serverCountsOnly": "The four counts above compare persisted snapshots only; they exclude unsaved board edits.", "diff_staged_boardPendingLine": "{{count}} unsaved / scheduled board item(s) — see the list below.", "diff_staged_section_title": "Board: unsaved / scheduled (not persisted yet)", "diff_staged_section_subtitle": "These match what will hit the DB after \"Save changes\"; listed separately from the version diff above (Excel is server snapshots only).", "diff_staged_tag_unsaved": "Unsaved", "diff_staged_tag_scheduled": "Scheduled", "diff_staged_restoreScheduled": "Restore to version #{{versionId}} is scheduled (calls restore only after \"Save changes\").", "diff_staged_deleteUnknown": "Delete truck id={{id}} (unsaved; save or cancel to refresh details)", "diff_staged_newLane": "New lane (unsaved): {{lane}}", "diff_staged_laneLogistic": "Lane logistics (unsaved): {{lane}} → {{company}}", "diff_staged_emptyDistricts": "Empty-district blocks (unsaved): {{lane}} — {{names}}", "diff_staged_shopDistrictHint": " · District: {{from}}→{{to}}", "diff_staged_shopPendingOnLane": "{{name}} ({{code}}) — lane {{lane}}: unsaved edits (drag / departure / load order; persisted on \"Save changes\"){{districtPart}}", "diff_staged_shopDistrictOnly": "{{name}} ({{code}}) — lane {{lane}}: district {{from}}→{{to}} (unsaved; persisted on \"Save changes\")", "diff_staged_pendingLogisticMaster": "New logistics company (not saved yet): {{name}} (plate {{plate}}); will be created on \"Save changes\" together with route edits", "diff_staged_editLogisticMaster": "Edit logistics company (unsaved): {{fromName}} ({{fromPlate}}) → {{name}} ({{plate}})", "diff_staged_importPending": "Import Excel (unsaved): {{file}} — {{sheets}} sheet(s), {{rows}} row(s) (persisted on \"Save changes\")", "confirm_importDiscardEdits": "Import will replace unsaved board edits. Continue?", "import_staged_preview": "Import preview loaded: {{file}} ({{sheets}} sheet(s) / {{rows}} rows). Press \"Save changes\" to persist.", "err_importEmpty": "No valid lane rows found in the import file", "diff_logisticMaster_section": "Logistics company changes", "diff_logisticMaster_added": "Added", "diff_logisticMaster_edited": "Edited", "diff_noShopDiffHasBoardStaged": "No shop-row changes vs the previous snapshot. Below are unsaved board edits (including new logistics company records).", "diff_export_blockedTooltip": "Export compares two persisted snapshots only. Save or discard board changes first, then export.", "diff_export_blockedError": "Cannot export while the board has unsaved changes (Excel is persisted snapshots only).", "diff_markedCount": "{{count}} truck row change(s) marked (see board)", "diff_noDiffFromPrev": "No differences vs previous version", "diff_loadingEllipsis": "…", "addShop_dialogTitle": "Add shop to lane", "addRoute_dialogTitle": "Add delivery lane", "addRoute_confirm": "Confirm add lane", "addRoute_submitting": "Adding…", "district_dialog_add": "Add district", "district_dialog_edit": "Edit district", "district_name_label": "District display name", "district_name_ph": "Blank means \"Unclassified\"", "district_help_null": "Unclassified maps to districtReference = null on server", "district_help_mapped": "Display name is written via toDistrictRawValue to each shop's districtReference; API runs on \"Save changes\"", "seq_edit_departureLabel": "Departure time", "seq_edit_seqLabel": "Load sequence (Seq)", "route_new_code_label": "Lane code", "route_new_time_label": "Departure time", "route_new_logistic_label": "Logistics company", "route_new_store_label": "Floor", "route_new_remark_label": "Lane remark (4F)", "logistic_companyName": "Company name", "logistic_plate": "Plate", "logistic_driver": "Driver name", "logistic_phone": "Phone", "logistic_btn_save": "Save", "logistic_btn_saveDb": "Save to database", "shop_autocomplete_label": "Select shop", "shop_autocomplete_ph": "Filter by name or code", "shop_autocomplete_loading": "Shop master not loaded", "shop_autocomplete_noOptions": "All shops already on this lane or no options", "dialog_addLogisticsTitle": "Add logistics", "btn_cancelBack": "Cancel and go back", "quickPick_noLanes": "No lanes (relax floor filter or refresh)", "quickPick_noKeyword": "No lanes match the keyword", "route_logisticUnspecified": "(Unassigned — assign later in Logistics)", "dialog_editLogisticsTitle": "Edit logistics master", "btn_apply": "Apply", "addShop_confirm": "Confirm", "addShop_listHint": "Shop codes already on this lane are hidden from the list. After adding, reorder by drag; like other edits, press \"Save changes\" to persist to truck rows.", "departureDialog_title": "Edit departure time", "departureDialog_hint": "Applies to all shop rows on this lane; press \"Save changes\" above to persist.", "seqDialog_title": "Edit load sequence", "seqDialog_hint": "Press \"Save changes\" to persist to truck rows.", "logistics_colLaneCount": "{{count}} lane(s)", "logistics_masterNoLanes": "Master record exists but no lanes are bound yet; pick this company when adding/editing lanes on the route board.", "tooltip_openLaneBoard": "Open this lane on the route board", "aria_openLaneBoard": "Open lane on route board", "tooltip_removeFromLane": "Remove from this lane", "tooltip_clearLaneShops": "Clear all shops on this lane (press \"Save changes\" to persist)", "tooltip_pickLane": "Pick lane (add to selection and scroll into view)", "aria_pickLane": "Pick lane", "aria_searchLanes": "Search lanes", "logistics_colShopCount": "{{count}} shop(s)", "tooltip_editLogisticsDb": "Edit logistics company (persists after Save changes)", "tooltip_deleteLogistics": "Delete logistics company (persists after Save changes)", "aria_editLogistics": "Edit logistics company", "aria_deleteLogistics": "Delete logistics company", "confirm_deleteLogistic": "Delete logistics company \"{{name}}\"? Press \"Save changes\" to persist.", "err_logisticDeleteHasLanes": "This company still has {{count}} lane(s). Reassign or remove them first.", "diff_staged_deleteLogisticMaster": "Delete logistics company (not saved): {{name}}", "logistic_btn_apply": "Apply", "tooltip_editDistrict": "Edit district name (press \"Save changes\" to persist)", "aria_editDistrict": "Edit district", "tooltip_removeEmptyDistrict": "Remove this staged empty block (deletable before save)", "aria_removeEmptyDistrict": "Remove empty district block", "tooltip_editSeq": "Edit load sequence (press \"Save changes\" to persist)", "aria_editSeq": "Edit load sequence", "diff_moveFrom": "From {{lane}}", "logistics_dirtyColumnBadge": "Unsaved logistics changes", "logistics_dirtyLaneBadge": "Unsaved logistics on lane", "lane_shopCountInline": "{{count}} shop(s)", "btn_addDistrict": "Add district", "empty_lane_noShops": "No assigned shops", "btn_addShopToLane": "Add shop", "err_loadLanes": "Failed to load lanes" }