80 lines
3.1 KiB
TypeScript
80 lines
3.1 KiB
TypeScript
export default {
|
|
projects: {
|
|
title: '📂 Projects',
|
|
// Header actions
|
|
create: '+ New Project',
|
|
trash: '🗑 Trash',
|
|
// New project modal
|
|
createTitle: 'New Project',
|
|
nameLabel: 'Project Name',
|
|
namePlaceholder: 'Enter project name',
|
|
descLabel: 'Project Description',
|
|
descPlaceholder: 'Briefly describe the project goal',
|
|
confirmCreate: 'Create',
|
|
// Trash modal
|
|
trashTitle: '🗑 Trash',
|
|
trashEmpty: 'Trash is empty',
|
|
movedIn: 'moved in',
|
|
restore: '↩ Restore',
|
|
purge: 'Delete Permanently',
|
|
// Project card
|
|
deleteTitle: 'Delete',
|
|
// Empty state
|
|
empty: 'No projects yet, click the top-right button to create your first project',
|
|
// Confirm prompts
|
|
confirmDelete: 'Delete project "{name}"? It will be moved to trash and can be restored.',
|
|
confirmPurge: 'Permanently delete project "{name}"? Tasks/branches/releases will be physically deleted and cannot be recovered!',
|
|
// New fields
|
|
codeDirLabel: 'Code Directory',
|
|
codeDirOptionalHint: '(optional, auto-detects tech stack once bound)',
|
|
codeDirPlaceholder: 'Click the button on the right to select project directory',
|
|
selectDir: 'Select Directory',
|
|
clearDir: 'Clear',
|
|
// AI scan
|
|
aiScanning: 'AI scanning…',
|
|
aiScanFill: '🤖 AI scan & autofill',
|
|
aiScanNoDesc: 'AI could not generate a description, please fill manually',
|
|
aiScanFailed: 'AI scan failed',
|
|
dirConflict: 'This directory is already bound to project "{name}"',
|
|
// Import historical projects (F-260614-06 scan step 2)
|
|
importHistory: '📥 Import Projects',
|
|
importTitle: 'Import Historical Projects',
|
|
importSelectRoot: 'Select root directory to scan',
|
|
importScanning: 'Scanning…',
|
|
importRescan: 'Rescan',
|
|
importEmpty: 'No candidate projects found in this directory (need Cargo.toml/package.json/go.mod etc.)',
|
|
importColName: 'Name',
|
|
importColPath: 'Path',
|
|
importColStack: 'Stack',
|
|
importColBound: 'Bound',
|
|
importMonoHint: 'monorepo',
|
|
importSelectAll: 'Select all',
|
|
importSelected: '{n} selected',
|
|
importRun: 'Import selected',
|
|
importRunning: 'Importing…',
|
|
importDone: 'Import complete: {imported} succeeded, {skipped} skipped',
|
|
importNoSelection: 'Please select projects to import first',
|
|
importScanFailed: 'Failed to scan directory',
|
|
importFailed: 'Batch import failed',
|
|
// Status labels (PROJECT_STATUS_LABELS values in constants/project.ts use these keys)
|
|
status: {
|
|
planning: '📐 Planning',
|
|
active: '🚀 In Progress',
|
|
completed: '✅ Completed',
|
|
},
|
|
// Error fallbacks (user-visible via state.error)
|
|
err: {
|
|
loadFailed: 'Failed to load projects',
|
|
createFailed: 'Failed to create project',
|
|
importFailed: 'Failed to import project',
|
|
deleteFailed: 'Failed to delete project',
|
|
loadTrashFailed: 'Failed to load trash',
|
|
restoreFailed: 'Failed to restore project',
|
|
purgeFailed: 'Failed to delete permanently',
|
|
loadWorkflowFailed: 'Failed to load workflow records',
|
|
approveFailed: 'Approval operation failed',
|
|
cancelFailed: 'Cancel approval failed',
|
|
},
|
|
},
|
|
}
|