fix: resolve TypeScript compilation errors
Fixes: - VideoPlayer.vue: restore allTags, filteredMarks, marksByTag (removed by mistake) - PeopleView.vue: fix frameTime scope in playFaceDetailVideo catch block - Both errors caused white screen on build failure Root cause: 1. visibleTags duplicate declaration (old + new logic) 2. frameTime undefined in catch block (scope issue) Solution: 1. Keep allTags/filteredMarks/marksByTag (needed in template) 2. Keep visibleTags (new logic for processor toggles) 3. Move frameTime calculation to correct scope in catch block
This commit is contained in:
273
src/locales/en.json
Normal file
273
src/locales/en.json
Normal file
@@ -0,0 +1,273 @@
|
||||
{
|
||||
"common": {
|
||||
"loading": "Loading...",
|
||||
"error": "Error",
|
||||
"success": "Success",
|
||||
"cancel": "Cancel",
|
||||
"confirm": "Confirm",
|
||||
"delete": "Delete",
|
||||
"save": "Save",
|
||||
"edit": "Edit",
|
||||
"search": "Search",
|
||||
"back": "Back",
|
||||
"close": "Close",
|
||||
"play": "Play",
|
||||
"logout": "Logout",
|
||||
"login": "Login"
|
||||
},
|
||||
"library": {
|
||||
"sort": {
|
||||
"title": "Sort By",
|
||||
"time_desc": "Time (Newest First)",
|
||||
"time_asc": "Time (Oldest First)",
|
||||
"size_desc": "Size (Largest First)",
|
||||
"size_asc": "Size (Smallest First)",
|
||||
"name_asc": "Name (A to Z)",
|
||||
"name_desc": "Name (Z to A)"
|
||||
},
|
||||
"filter": {
|
||||
"title": "Filter By",
|
||||
"unregistered": "Unregistered",
|
||||
"registered": "Registered",
|
||||
"pending": "Pending",
|
||||
"completed": "Completed",
|
||||
"videos_only": "Videos Only",
|
||||
"photos_only": "Photos Only"
|
||||
},
|
||||
"size": {
|
||||
"title": "Size",
|
||||
"min_mb": "Min MB",
|
||||
"max_mb": "Max MB"
|
||||
},
|
||||
"duration": {
|
||||
"title": "Video Duration",
|
||||
"min_minutes": "Min Minutes",
|
||||
"max_minutes": "Max Minutes"
|
||||
},
|
||||
"status": {
|
||||
"files": "{count} files",
|
||||
"registered": "Registered",
|
||||
"unregistered": "Unregistered",
|
||||
"pending": "Pending",
|
||||
"processing": "Processing",
|
||||
"completed": "Completed"
|
||||
},
|
||||
"thumbnail": {
|
||||
"register_to_preview": "Register to see preview"
|
||||
},
|
||||
"context": {
|
||||
"register_file": "Register File",
|
||||
"process_file": "Process File",
|
||||
"reprocess": "Reprocess",
|
||||
"run_identity_agent": "Run Identity Agent",
|
||||
"unregister": "Unregister",
|
||||
"play_video": "Play Video",
|
||||
"processor_selection": "Processor Selection",
|
||||
"overall_progress": "Overall Progress",
|
||||
"missing_file_path": "Missing file path",
|
||||
"file_not_registered": "File not registered",
|
||||
"select_processor": "Please select at least one processor",
|
||||
"file_must_be_completed": "File must be completed first"
|
||||
},
|
||||
"pipeline": {
|
||||
"processors": "Processors",
|
||||
"rule1_ingestion": "Rule1 Ingestion",
|
||||
"face_tracing": "Face Tracing",
|
||||
"tkg_nodes": "TKG Nodes",
|
||||
"tkg_edges": "TKG Edges",
|
||||
"rule2_ingestion": "Rule2 Ingestion"
|
||||
},
|
||||
"phase": {
|
||||
"processor_output": "Rule1: Processor Output",
|
||||
"postgresql_ingestion": "Rule1: PostgreSQL Ingestion",
|
||||
"qdrant_ingestion": "Rule1: Qdrant Ingestion"
|
||||
},
|
||||
"action": {
|
||||
"registering": "Registering...",
|
||||
"registered": "Registered: {name}",
|
||||
"registration_failed": "Registration failed: {message}",
|
||||
"registration_error": "Registration error: {error}",
|
||||
"processing": "Processing...",
|
||||
"processing_started": "Processing started: {name}",
|
||||
"processing_failed": "Processing failed: {message}",
|
||||
"processing_error": "Processing error: {error}",
|
||||
"identity_agent_started": "Identity Agent started: {name}",
|
||||
"identity_agent_failed": "Identity Agent failed: {message}",
|
||||
"identity_agent_error": "Identity Agent error: {error}",
|
||||
"removing": "Removing...",
|
||||
"removed": "Removed: {name}",
|
||||
"removal_failed": "Removal failed: {message}",
|
||||
"removal_error": "Removal error: {error}",
|
||||
"clear_filters": "Clear Filters"
|
||||
},
|
||||
"refresh": "Refresh",
|
||||
"refresh_status": "Refresh Status"
|
||||
},
|
||||
"people": {
|
||||
"toolbar": {
|
||||
"all_files": "All Files",
|
||||
"view_all_people": "View All People",
|
||||
"view_starred_people": "View Starred People",
|
||||
"refresh": "Refresh",
|
||||
"pending_people": "People",
|
||||
"skipped_people": "Skipped People",
|
||||
"pending_faces": "Faces",
|
||||
"face_group": "Face Group"
|
||||
},
|
||||
"section": {
|
||||
"known_people": "Known People",
|
||||
"pending_people": "People",
|
||||
"skipped_people": "Skipped People",
|
||||
"pending_faces": "Faces",
|
||||
"face_group": "Face Group"
|
||||
},
|
||||
"sort": {
|
||||
"title": "Sort By",
|
||||
"recent": "Recently Viewed",
|
||||
"file_name": "File Name",
|
||||
"name_az": "Name (A to Z)",
|
||||
"name_za": "Name (Z to A)",
|
||||
"time_desc": "Time (Newest First)",
|
||||
"time_asc": "Time (Oldest First)"
|
||||
},
|
||||
"search": {
|
||||
"known_people": "Search known people",
|
||||
"pending_people": "Search pending people",
|
||||
"person_name": "Search person name..."
|
||||
},
|
||||
"action_history": {
|
||||
"title": "Action History · {name}",
|
||||
"undo_all": "Undo All",
|
||||
"redo_all": "Redo All",
|
||||
"delete_person": "Delete This Person",
|
||||
"no_history": "No action history"
|
||||
},
|
||||
"expand": {
|
||||
"collapse": "Collapse",
|
||||
"expand": "Expand",
|
||||
"view_faces": "View Faces",
|
||||
"appears_in": "Appears in:",
|
||||
"faces": "{count} faces",
|
||||
"set_as_profile": "Set as Profile",
|
||||
"no_face_data": "No face data"
|
||||
},
|
||||
"context": {
|
||||
"star_person": "★ Mark as Important",
|
||||
"unstar_person": "☆ Remove Important",
|
||||
"details": "📋 Details",
|
||||
"confirm_person": "✓ Confirm Person",
|
||||
"pending": "Pending",
|
||||
"edit_name": "✎ Edit Name",
|
||||
"merge_person": "⇄ Already Have This Person",
|
||||
"skip_person": "✕ Skip This Person",
|
||||
"undo": "↩ Undo",
|
||||
"redo": "↪ Redo",
|
||||
"delete_person": "🗑 Delete This Person"
|
||||
},
|
||||
"face_context": {
|
||||
"details": "📋 Details",
|
||||
"assign_existing": "⇄ Assign to Existing Person",
|
||||
"skip_face": "✕ Skip This Face"
|
||||
},
|
||||
"assign": {
|
||||
"title": "Assign to Existing Person",
|
||||
"search_placeholder": "Search person name...",
|
||||
"no_results": "No matching people found",
|
||||
"confirm_assign": "Confirm Assignment"
|
||||
},
|
||||
"face_detail": {
|
||||
"title": "Pending Face Details",
|
||||
"file": "File:",
|
||||
"trace_id": "Trace ID:",
|
||||
"frame_number": "Frame Number:",
|
||||
"confidence": "Confidence:",
|
||||
"face_id": "Face ID:",
|
||||
"play_segment": "Play Video Segment",
|
||||
"new_identity": "Create as New Person",
|
||||
"enter_name": "Enter person name...",
|
||||
"add": "Add",
|
||||
"close": "Close"
|
||||
},
|
||||
"detail": {
|
||||
"back": "Back",
|
||||
"edit": "Edit",
|
||||
"role": "Role",
|
||||
"description": "Description",
|
||||
"enter_name": "Enter name",
|
||||
"enter_alias": "Enter alias and press Enter",
|
||||
"add_alias": "+ Alias",
|
||||
"collapse": "Collapse",
|
||||
"role_name": "Role name",
|
||||
"custom_description": "Custom description",
|
||||
"saving": "Saving...",
|
||||
"save_changes": "✓ Save Changes",
|
||||
"cancel": "Cancel",
|
||||
"add_same_person": "Add same person",
|
||||
"play": "▶ Play",
|
||||
"unbind": "✕ Unbind",
|
||||
"segments": "{count} segments",
|
||||
"traces": "{count} traces",
|
||||
"all_segments": "All segments",
|
||||
"mode_trace": "Trace",
|
||||
"mode_segment": "Segment",
|
||||
"mode_continuous": "Continuous",
|
||||
"status": "Status:",
|
||||
"confirm": "✓ Confirm",
|
||||
"skip": "Skip",
|
||||
"bind_face": "+ Bind Face",
|
||||
"merge_other": "⇄ Merge to Other Person",
|
||||
"delete_person": "Delete This Person",
|
||||
"bind_face_title": "Bind Face",
|
||||
"merge_title": "⇄ Merge to Other Person",
|
||||
"unbind_trace": "Unbind trace T{trace_id} (face_id: {face_id})?",
|
||||
"no_face_id": "This trace has no face_id, cannot unbind",
|
||||
"unbind_failed": "Unbind failed: {error}",
|
||||
"merge_confirm": "Merge \"{source}\" into \"{target}\"?",
|
||||
"not_this_person": "Not This Person",
|
||||
"delete_confirm": "Delete \"{name}\"?",
|
||||
"delete_confirm_message": "Delete \"{name}\"? This action cannot be undone.",
|
||||
"delete_failed": "Delete failed: {error}",
|
||||
"create_identity_failed": "Failed to create person: API did not return identity_uuid",
|
||||
"create_identity_error": "Failed to create person: {error}",
|
||||
"assign_failed": "Assignment failed: {error}"
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"welcome": {
|
||||
"title": "👋 Welcome to Momentry Studio",
|
||||
"intro": "I'll help you make better use of the system. Let me introduce the main features:",
|
||||
"smart_search": {
|
||||
"title": "Smart Search",
|
||||
"desc": "Keyword, semantic, and people search modes"
|
||||
},
|
||||
"people_management": {
|
||||
"title": "People Management",
|
||||
"desc": "Identify people in videos, build people database"
|
||||
},
|
||||
"file_management": {
|
||||
"title": "File Management",
|
||||
"desc": "Manage and process your video and photo files"
|
||||
},
|
||||
"got_it": "Got it, start using"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Momentry Studio",
|
||||
"subtitle": "Login to continue",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"username_placeholder": "Enter username",
|
||||
"password_placeholder": "Enter password",
|
||||
"login_button": "Login",
|
||||
"logging_in": "Logging in...",
|
||||
"login_success": "Login successful!",
|
||||
"default_credentials": "Default credentials: demo / demo123"
|
||||
},
|
||||
"nav": {
|
||||
"search": "Search",
|
||||
"library": "Library",
|
||||
"people": "People",
|
||||
"admin": "Admin",
|
||||
"client": "Client"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user