2026-03-26 14:54:26 +08:00

671 lines
27 KiB
TypeScript

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