export const enUS = { common: { cancel: 'Cancel', confirm: 'Confirm', delete: 'Delete', close: 'Close', clear: 'Clear' }, app: { projectConflict: { title: 'Project Already Open', desc: 'Project "{name}" is already active in another tab. Editing is blocked here to avoid IndexedDB conflicts.', countdown: 'This page will try to close automatically in {seconds} seconds. You can open another project in a new tab first.', opened: '(Opened)', lastEdited: 'Last edited: {time}', openDefault: 'Open Default Project', createAndOpen: 'Create and Open' } }, home: { title: 'Calculation Entry', subtitle: 'Project Budget · Quick Calc · Import Data', projectCalcTab: 'Project Calculation', quickCalcTab: 'Quick Calculation', cards: { heroTitle: 'One-Click Smart Budget', heroSubTitle: 'Accelerate standards adoption', heroDesc: 'Cost consulting fee calculator for transport construction projects', projectBudget: 'Project Budget', projectBudgetDesc: 'For full project-level calculation across multiple contracts with import/export support', quickCalc: 'Quick Calc', quickCalcDesc: 'Suitable for single service trial, select industry, consultation type, engineering specialty, input base number and get results in seconds', importData: 'Import Data', importDataDesc: 'Import ".zw" package to restore project state and continue work quickly', enter: 'Enter', pickFile: 'Choose File', pickExisting: 'Choose Existing' }, dialog: { newProject: 'New Project', chooseIndustryDesc: 'Choose an industry and enter project calculation directly.', industry: 'Industry', selectIndustry: 'Select industry', entering: 'Entering...', enterProjectCalc: 'Enter Project Calculation', confirmImport: 'Confirm Import', confirmImportDesc: 'Import "{file}" and enter workspace immediately, overriding current project data.', confirmImportAction: 'Import', chooseExistingProject: 'Choose Existing Project', chooseExistingProjectDesc: 'Select a project from the list and enter workspace directly.', noProjectYet: 'No project available. Create a new project first.' } }, tab: { toolbar: { light: 'Light', dark: 'Dark', language: 'Lang', importExport: 'Import/Export', importData: 'Import', exportData: 'Export', exportReport: 'Export Report', userGuide: 'Guide', reset: 'Reset', resetting: 'Resetting...', projectList: 'Projects', projectCount: 'Projects: {count}', createProject: 'New Project', backHome: 'Back Home', resetAll: 'Reset All', opened: '(Opened)', lastEdited: 'Last edited: {time}' }, menu: { closeAll: 'Close All', closeLeft: 'Close Left', closeRight: 'Close Right', closeOther: 'Close Others' }, dialog: { resetTitle: 'Confirm Reset', resetDesc: 'All project data will be cleared and the default page will be restored. Continue?', confirmReset: 'Confirm Reset', importOverrideTitle: 'Confirm Override Import', importOverrideDesc: 'Use "{file}" to override all local data for current project. Continue?', confirmOverride: 'Confirm Override', newProjectTitle: 'New Project', newProjectDesc: 'Choose an industry, then open the new project calculation page in a new tab.', createAndOpen: 'Create & Open', creating: 'Creating...', projectLimitTitle: 'Project Limit Reached', projectLimitDesc: 'Project count has reached {max}. Delete one project before adding a new one.', iKnow: 'OK', deleteProjectTitle: 'Confirm Delete Project', deleteCurrentProjectDesc: 'Delete current project "{name}"? Data will be cleared and you will return to home.', deleteProjectDesc: 'Delete project "{name}"? This will remove local data for that project.' }, guide: { title: 'User Guide', later: 'Later', prev: 'Prev', next: 'Next', finish: 'Finish and Disable Auto Popup', jumpToStep: 'Jump to step {index}', steps: { step1: { title: 'Welcome', description: 'This guide covers major features and the full workflow. It is recommended to go through it in order.', point1: 'The top area is the tab bar, for quick switching between project, segment, and pricing pages.', point2: 'Tables and forms on the page auto-save locally. No manual save is needed.', point3: 'You can reopen this tutorial anytime from the top-right "Guide" button.' }, step2: { title: 'Project Card and Four Modules', description: 'The default "Project Card" tab is the entry. The left flow line contains four project-level modules.', point1: 'Basic Info: fill project name and project scale details.', point2: 'Contract Segment Management: create, sort, search, import/export segments.', point3: 'Consult Category Factor / Major Factor: maintain budget values and remarks.' }, step3: { title: 'Fill Basic Info', description: 'Complete project-level data in "Basic Info" first, then continue to segment-level calculations.', point1: 'Project name is used in export file names and page display.', point2: 'Project detail table supports direct edit, copy/paste, and undo/redo.', point3: 'Group rows auto-summarize, and the pinned top row shows grand total.' }, step4: { title: 'Contract Segment Management', description: 'Manage the full lifecycle of contract segments in this module.', point1: '"Add Segment" creates a new one; top-right actions on each card support edit/delete.', point2: 'Search and grid/list switch are supported; drag-sort is available when not searching.', point3: 'The more menu supports import/export; click a card to enter segment details.' }, step5: { title: 'Contract Segment Detail', description: 'Inside a segment, the left flow line includes scale info and consulting services.', point1: 'Scale Info: fill segment scale data by engineering major.', point2: 'Consulting Services: choose services from dictionary and generate fee details.', point3: 'Each segment page has isolated cache and does not interfere with others.' }, step6: { title: 'Service and Pricing Pages', description: 'The consulting service page manages service details and opens specific pricing method pages.', point1: 'Click "Browse" to select services, then confirm to generate detail rows.', point2: 'In detail table, "Edit" opens service pricing page, and "Clear" resets that service calculation.', point3: 'Pricing page includes investment scale, land scale, workload, and hourly methods.' }, step7: { title: 'Factor Maintenance', description: 'Project-level factors adjust budget values and can be maintained on two factor pages.', point1: 'Consult Category Factor page: maintain budget values and notes by consult category.', point2: 'Major Factor page: maintain budget values and notes by major tree.', point3: 'Batch paste and undo/redo are supported for efficient multi-row updates.' }, step8: { title: 'Data Management and Recovery', description: 'Top toolbar handles full import/export and reset initialization.', point1: '"Import/Export" operates on full-project data package.', point2: '"Reset" clears all local data and restores default page.', point3: 'It is recommended to export a backup before major changes.' } } }, toast: { export: 'Export Report', success: 'Export Success', failed: 'Export Failed' }, messages: { defaultProjectLabel: 'Default Project', defaultProjectName: 'Cost Project', projectNamePrefix: 'Project-{id}', contractFallbackName: 'Contract-{index}', reportFileSuffix: 'Budget Report', reportGenerating: 'Generating report file...', reportExportDone: 'Report export completed', reportExportFailedRetry: 'Report export failed, please retry', importFailedTitle: 'Import Failed', importProjectIdMissing: 'This package does not contain project ID (legacy export). Import is blocked to avoid cross-project overwrite.', importProjectMismatch: 'This package belongs to another project and cannot override current project.', importInvalidFile: 'File is invalid, corrupted, or modified.', importWriteError: 'An error occurred while writing local data.', openFile: 'Open file' } }, typeLine: { copy: 'Copy', copied: 'Copied', copyFailed: 'Copy failed', brandAlt: 'Zhongwei', supportText: 'This website is supported by Zhongwei Engineering Consulting Co., Ltd.', aboutTitle: 'About Us', companyName: 'Zhongwei Engineering Consulting Co., Ltd.', openOfficialSiteAria: 'Open official website', officialSiteTitle: 'Official Website', aboutParagraph1: 'Zhongwei Engineering Consulting Co., Ltd. was founded in 2009, focusing on whole-process consulting for project cost and cost control. It is a preferred audit vendor for Guangdong government. The company serves multi-domain and diverse clients, with cumulative project investment over one trillion CNY, deep participation in major national projects such as the Hong Kong-Zhuhai-Macao Bridge and Hengqin Campus of the University of Macau, and participation in over 30 national/provincial/municipal standards.', aboutParagraph2: 'Based in the Greater Bay Area and expanding globally, the company has offices in Macau and Sri Lanka, with cross-border and overseas delivery capabilities. With 15 years of expertise and trillion-level project experience, it provides precise and reliable engineering consulting services.' }, agGrid: { resetDefault: 'Reset to default' }, ht: { title: 'Contract Segments', projectTotalBudget: 'Project Total Budget: {amount}', budgetLoading: 'Calculating...', selectedCount: '{count} selected', exportSelected: 'Export Selected', deleteSelected: 'Delete Selected', cancelSelect: 'Cancel', addContract: 'Add Segment', batchDelete: 'Batch Delete', exportContracts: 'Export Segments', importContracts: 'Import Segments', searchPlaceholder: 'Search by segment name or ID', clearFilter: 'Clear Filter', searchingHint: 'Searching ({filtered} / {total}), drag sorting is disabled', selectModeExportHint: 'Export mode: select segments and click "Export Selected"', selectModeDeleteHint: 'Delete mode: select segments and click "Delete Selected"', setupRequiredHint: 'Set project industry in "Basic Info" before adding or importing segments', listLayout: 'List', gridLayout: 'Grid', dragSort: 'Drag to Sort', dragSortSearchOff: 'Drag Sort (Disabled in Search)', edit: 'Edit', remove: 'Delete', idLabel: 'ID: {id}', contractBudget: 'Budget: {amount}', contractBudgetLine: 'Segment Budget: {amount}', createdAt: 'Created: {time}', emptyTitle: 'No Contract Segments', emptyDesc: 'Add one to get started', notFound: 'No matching contract segment', backToTop: 'Back to Top', editContract: 'Edit Segment', createContract: 'New Segment', contractTabTitle: 'Segment {name}', contractName: 'Segment Name', contractNamePlaceholder: 'Enter segment name', save: 'Save', ok: 'OK', toastSuccessTitle: 'Success', createSuccess: 'Created successfully', editSuccess: 'Updated successfully', deleteSuccess: 'Deleted successfully', sortDone: 'Sort completed', exportSuccess: 'Exported successfully ({count} segments)', importSuccess: 'Imported successfully ({count} segments)', deleteBatchSuccess: 'Deleted successfully ({count} segments)', tipTitle: 'Notice', exportFailedTitle: 'Export Failed', importFailedTitle: 'Import Failed', batchDeleteFailedTitle: 'Batch Delete Failed', retry: 'Please try again.', selectAtLeastOne: 'Please select at least one contract segment.', noContractsToDelete: 'No contract segment found to delete.', industryMissingForExport: 'Project industry is missing. Please set it in "Basic Info" first.', importIndustryMismatch: 'Industry mismatch (package: {importIndustry}, current: {currentIndustry}).', importCurrentIndustryMissing: 'Current project industry is not set. Please set it in "Basic Info" first.', importPackageIndustryMissing: 'Import package missing industry info. Re-export with latest version and try again.', importFileInvalid: 'Invalid or corrupted file, or not a contract-segment package.', deleteSingleTitle: 'Confirm Delete Segment', deleteSingleDesc: 'Delete "{name}" and all related service/pricing data. Continue?', deleteBatchTitle: 'Confirm Batch Delete', deleteBatchDesc: 'Delete {count} segments and related service/pricing data. Continue?' }, htCard: { title: 'Segment: {name}', subtitle: 'Segment ID: {id}', metaBudget: 'Segment Budget: {amount}', currencySuffix: 'CNY', categories: { baseInfo: 'Basic Info', scaleInfo: 'Scale Info', services: 'Consulting Services', consultFactor: 'Consult Category Factor', majorFactor: 'Major Factor', additionalFee: 'Additional Fee', reserveFee: 'Reserve Fee', summary: 'Summary' } }, htBaseInfo: { title: 'Basic Info', defaultQuality: 'The comprehensive evaluation of cost consulting services should reach "Good" or a score of 90.', qualityLabel: 'Quality Requirement', qualityPlaceholder: 'Enter quality requirement', durationLabel: 'Duration Requirement', durationPlaceholder: 'Enter duration requirement' }, htFactors: { consultCategoryTitle: 'Consult Category Factor Details', majorTitle: 'Major Factor Details' }, htFee: { additionalTitle: 'Additional Work Fee', reserveTitle: 'Reserve Fee' }, htInfo: { scaleDetailTitle: 'Contract Scale Details' }, htFeeRate: { baseLabel: 'Base (total budget of all service fees)', reserveBaseLabel: 'Base (consulting services total + additional work fee total)', rateLabel: 'Rate (%)', ratePlaceholder: 'Enter rate, suggested 1 ~ 5', budgetFeeLabel: 'Budget Fee (Auto)', remarkLabel: 'Remark', remarkPlaceholder: 'Enter remark' }, htZxFw: { title: 'Consulting Service Details', warning: 'Please review and adjust recommended limits/special values in the specification, then update final fee if needed.', editTabTitle: 'Service Edit-{name}', subtotal: 'Subtotal', edit: 'Edit', resetDefault: 'Reset', delete: 'Remove', processDraft: 'Draft', processReview: 'Review', columns: { code: 'Code', name: 'Name', process: 'Process', investScale: 'Investment Scale', landScale: 'Land Scale', workload: 'Workload', hourly: 'Hourly', subtotal: 'Subtotal', finalFee: 'Final Fee ✎', finalFeeTooltip: 'This column supports manual edits and will auto-sync to the fixed subtotal row.', remark: 'Remark', actions: 'Actions' }, dialog: { resetTitle: 'Confirm Reset to Default', resetDesc: 'This will recalculate default data from latest scale/factor values and overwrite current data for "{name}". Continue?', confirmReset: 'Confirm Reset', deleteTitle: 'Confirm Delete Service', deleteDesc: 'This will logically remove "{name}". Existing entered data is kept and will restore if re-selected. Continue?' } }, htSummary: { title: 'Contract Summary', total: 'Total', remark: 'Remark', placeholder: 'Fill consulting services / additional work fee / reserve fee first', additionalPrefix: 'Additional Work Fee', reservePrefix: 'Reserve Fee', explainByRate: 'By rate {rate}%, calculated {fee} CNY', explainByHourly: 'By hourly method, calculated {fee} CNY', explainByQuantity: 'By quantity-unit-price method, calculated {fee} CNY', columns: { code: 'Code', name: 'Name', investScale: 'Investment Scale', landScale: 'Land Scale', workload: 'Workload', hourly: 'Hourly', subtotal: 'Subtotal', finalFee: 'Final Fee' } }, htFeeGrid: { subtotal: 'Subtotal', currentRow: 'Current Row', unnamed: 'Unnamed', edit: 'Edit', clear: 'Clear', add: 'Add', editTabTitle: 'Fee Edit-{name}', columns: { name: 'Name', rateFee: 'Rate Fee', hourlyFee: 'Hourly', quantityUnitPriceFee: 'Quantity Unit Price', subtotal: 'Subtotal', actions: 'Actions' }, dialog: { clearTitle: 'Confirm Clear', clearDesc: 'This will clear editable and auto-calculated data for "{name}" and its edit page. Continue?', confirmClear: 'Confirm Clear' } }, xmFactorGrid: { clickToInput: 'Click to input', columns: { standardFactor: 'Standard Factor', budgetValue: 'Budget Value', remark: 'Remark', groupName: 'Major Code and Major Name' } }, serviceSelector: { title: 'Select Services', clear: 'Clear', empty: 'No services' }, zxFwView: { contractPrefix: 'Contract: {name}', calcSuffix: ' Calculation', contractId: 'Contract ID: {id}', workContentTitle: 'Work Content', categories: { investmentScale: 'Investment Scale', landScale: 'Land Scale', workload: 'Workload', hourly: 'Hourly', workContent: 'Work Content' }, unavailable: { investmentScaleTitle: 'Investment Scale Not Applicable', investmentScaleMessage: 'Scale method is not enabled for this service, so Investment Scale is not editable.', landScaleTitle: 'Land Scale Not Applicable', landScaleMessage: 'This service only supports Investment Scale, so Land Scale is not editable.', workloadTitle: 'Workload Not Applicable', workloadMessage: 'Workload method is not enabled for this service, so Workload is not editable.', hourlyTitle: 'Hourly Not Applicable', hourlyMessage: 'Hourly method is not enabled for this service, so Hourly is not editable.' } }, htFeeDetail: { subtotal: 'Subtotal', currentRow: 'Current Row', clickToInput: 'Click to input', addRow: 'Add Row', columns: { no: 'No.', feeItem: 'Fee Item', unit: 'Unit', quantity: 'Quantity', unitPrice: 'Unit Price (CNY)', budgetFee: 'Budget Fee (CNY)', remark: 'Remark', actions: 'Actions' }, dialog: { deleteTitle: 'Confirm Delete Row', deleteDesc: 'Delete row "{name}"?' } }, workContent: { title: 'Work Content', addCustom: 'Add Custom Content', clickToInput: 'Click to input', clickToInputContent: 'Click to input work content', currentRow: 'Current Row', unnamed: 'Unnamed', ungrouped: 'Ungrouped', type: { basic: 'Basic Work', optional: 'Optional Work', daily: 'Daily Advisory', special: 'Special Advisory', additional: 'Additional Work', custom: 'Custom' }, columns: { no: 'No.', content: 'Content', type: 'Type', remark: 'Remark', actions: 'Actions' }, dialog: { deleteTitle: 'Confirm Delete Row', deleteDesc: 'Delete row "{name}"?' } }, quickCalc: { projectName: 'Quick Calculation', catalogEyebrow: 'Category List', formEyebrow: 'Parameter Form', industryLabel: 'Industry {name}', selectIndustry: 'Select industry', saving: 'Saving...', synced: 'Industry synced', notSelectedIndustry: 'Industry not selected', notSelected: 'Not selected', consultCategory: 'Consult Category', majorCategory: 'Major', types: { consult: { label: 'Consult Category (Common)', hint: 'Select consult category first, then complete scale and budget parameters.' }, general: { label: 'General Major', hint: 'Cross-industry common compensation and other expense majors.' }, road: { label: 'Highway Major', hint: 'Shown by default when industry is Highway Engineering.' }, railway: { label: 'Railway Major', hint: 'Shown by default when industry is Railway Engineering.' }, waterway: { label: 'Waterway Major', hint: 'Shown by default when industry is Waterway Engineering.' } }, fields: { industry: 'Industry', code: 'Code', investScale: 'Investment Scale (10k CNY)', landScale: 'Land Scale (mu)', formula: 'Formula', amount: 'Amount (CNY)', consultFactor: 'Consult Category Factor', majorFactor: 'Major Factor', workEnvCoefficient: 'Work environment coefficient', workEnvCoefficientPlaceholder: 'Default 1', budgetAmount: 'Budget Amount (CNY)' }, sections: { currentSelection: 'Current Selection', basicInfo: 'Basic Info', scaleBase: 'Scale Base', benchmarkBudget: 'Benchmark Budget', serviceBudget: 'Service Budget', }, empty: { selectIndustry: 'Select an industry first. Then choose consult category and matched majors will appear.', selectConsult: 'Select a consult category first. Matched general and major categories will then appear.', scaleUnavailable: 'The selected consult category does not support scale method, so major categories are hidden.', consultCostOnly: 'The selected consult category is priced by industry summary. Major factor is auto-applied by industry.' }, placeholder: { selectConsultFirst: 'Select consult category first', scaleUnavailable: 'Current category does not support scale method', selectMajorFirst: 'Select major first', preferLandScale: 'Current major is priced by land scale', investUnavailable: 'Current major does not support investment scale', consultCostOnly: 'Current category supports investment scale only', landUnavailable: 'Current major does not support land scale', input: 'Please input', selectScaleFirst: 'Select and input a scale value first' } }, methodUnavailable: { defaultTitle: 'This Service Is Not Applicable to Current Pricing Method' }, xmCard: { categories: { info: 'Basic Info', scaleInfo: 'Scale Info', consultCategoryFactor: 'Consult Category Factor', majorFactor: 'Major Factor', contract: 'Contract Segment Management' } }, htFeeMethodTypeLine: { feeDetail: 'Fee Details', unnamed: 'Unnamed', title: 'Segment: {contractName} · {rowName}', contractId: 'Contract ID: {id}', quantityUnitPrice: 'Quantity Unit Price' }, pricingScale: { totalInvestmentByIndustry: '{industryName} Total Investment', totalInvestment: 'Total Investment', clickToInput: 'Click to input', projectLabel: 'Project {index}', columns: { investAmount: 'Cost Amount (10k CNY)', landArea: 'Land Area (mu)', benchmarkBudget: 'Benchmark Budget (CNY)', basicWork: 'Basic Work', optionalWork: 'Optional Work', subtotal: 'Subtotal', budgetFee: 'Budget Fee', consultCategoryFactor: 'Consult Category Factor', majorFactor: 'Major Factor', workStageFactor: 'Work Stage Factor (Draft/Review)', workRatio: 'Work Ratio (%)', total: 'Total', remark: 'Remark', majorGroup: 'Major Code and Major Name' }, tooltip: { resetInvestAmount: 'Click ↻ to restore default cost amount for this column', resetLandArea: 'Click ↻ to restore default land area for this column', resetConsultCategoryFactor: 'Click ↻ to restore default consult category factor for this column', resetMajorFactor: 'Click ↻ to restore default major factor for this column' } }, pricingPane: { projectCount: 'Project Count', clearTitle: 'Confirm Clear Current Details', confirmClear: 'Confirm Clear', useDefault: 'Use Default Data', overrideTitle: 'Confirm Override Current Details', confirmOverride: 'Confirm Override', investment: { title: 'Investment Scale Details', clearDesc: 'This will clear current investment scale details. Continue?', overrideDesc: 'Use contract default data to override current investment scale details. Continue?' }, land: { title: 'Land Scale Details', clearDesc: 'This will clear current land scale details. Continue?', overrideDesc: 'Use contract default data to override current land scale details. Continue?' } }, workloadPricing: { title: 'Workload Details', unavailableTitle: 'Workload Method Not Applicable', unavailableMessage: 'No workload tasks are associated with this service. No input is needed.', clickToInput: 'Click to input', none: 'N/A', total: 'Grand Total', columns: { code: 'Code', name: 'Name', budgetBase: 'Budget Base', budgetReferenceUnitPrice: 'Budget Reference Unit Price', budgetAdoptedUnitPrice: 'Budget Adopted Unit Price', workload: 'Workload', consultCategoryFactor: 'Consult Category Factor', serviceFee: 'Service Fee (CNY)', remark: 'Remark' } }, hourlyFeeGrid: { title: 'Hourly Method Details', clickToInput: 'Click to input', total: 'Grand Total', columns: { code: 'Code', name: 'Personnel Name', referenceUnitPrice: 'Budget Reference Unit Price', laborBudgetUnitPrice: 'Labor Budget Unit Price (CNY/workday)', compositeBudgetUnitPrice: 'Composite Budget Unit Price (CNY/workday)', adoptedBudgetUnitPrice: 'Adopted Budget Unit Price (CNY/workday)', personnelCount: 'Personnel Count', workdayCount: 'Workday Count', serviceBudget: 'Service Budget (CNY)', remark: 'Remark' } }, xmScaleGrid: { syncToastTitle: 'Consulting Services Synced', syncToastDesc: 'Scale info synced to consulting services ({serviceCount} services, {methodCount} pricing pages, {rowCount} rows)' }, xmInfo: { defaultProjectName: 'xxx Cost Consulting Service', defaultDesc: 'When providing cost consulting services, penalties should be graded by service quality. For scores >=85 and <90, penalty is 10% of budget fee; >=80 and <85: 20%; >=75 and <80: 30%; >=70 and <75: 40%; <70: 50% or above.', industryHint: 'Changing industry requires reset and re-selection', industryHintAria: 'Industry hint', createFromHomeFirst: 'Please create a project from Home before entering this page.', fields: { projectName: 'Project Name', projectIndustry: 'Industry', overview: 'Project Overview', preparedBy: 'Prepared By', reviewedBy: 'Reviewed By', preparedCompany: 'Prepared Company', preparedDate: 'Prepared Date', desc: 'Other Notes' }, placeholders: { overview: 'Enter project overview', preparedBy: 'Enter preparer', reviewedBy: 'Enter reviewer', preparedCompany: 'Enter prepared company' } } } as const