Merge branch 'dev' into feature/share-review-timestamp

This commit is contained in:
0x464e
2026-03-24 18:33:06 +02:00
382 changed files with 29408 additions and 4486 deletions
@@ -23,15 +23,18 @@
},
"toast": {
"success": {
"deletedCategory": "Deleted Class",
"deletedImage": "Deleted Images",
"deletedModel_one": "Successfully deleted {{count}} model",
"deletedModel_other": "Successfully deleted {{count}} models",
"categorizedImage": "Successfully Classified Image",
"reclassifiedImage": "Successfully Reclassified Image",
"trainedModel": "Successfully trained model.",
"trainingModel": "Successfully started model training.",
"updatedModel": "Successfully updated model configuration",
"renamedCategory": "Successfully renamed class to {{name}}"
"renamedCategory": "Successfully renamed class to {{name}}",
"deletedCategory_one": "Deleted {{count}} class",
"deletedCategory_other": "Deleted {{count}} classes",
"deletedImage_one": "Deleted {{count}} image",
"deletedImage_other": "Deleted {{count}} images"
},
"error": {
"deleteImageFailed": "Failed to delete: {{errorMessage}}",
@@ -41,7 +44,8 @@
"trainingFailed": "Model training failed. Check Frigate logs for details.",
"trainingFailedToStart": "Failed to start model training: {{errorMessage}}",
"updateModelFailed": "Failed to update model: {{errorMessage}}",
"renameCategoryFailed": "Failed to rename class: {{errorMessage}}"
"renameCategoryFailed": "Failed to rename class: {{errorMessage}}",
"reclassifyFailed": "Failed to reclassify image: {{errorMessage}}"
}
},
"deleteCategory": {
@@ -90,6 +94,8 @@
},
"categorizeImageAs": "Classify Image As:",
"categorizeImage": "Classify Image",
"reclassifyImageAs": "Reclassify Image As:",
"reclassifyImage": "Reclassify Image",
"menu": {
"objects": "Objects",
"states": "States"
@@ -178,9 +184,14 @@
"classifyFailed": "Failed to classify images: {{error}}"
},
"generateSuccess": "Successfully generated sample images",
"refreshExamples": "Generate new examples",
"refreshConfirm": {
"title": "Generate New Examples?",
"description": "This will generate a new set of images and clear all selections, including any previous classes. You will need to re-select examples for all classes."
},
"missingStatesWarning": {
"title": "Missing State Examples",
"description": "It's recommended to select examples for all states for best results. You can continue without selecting all states, but the model will not be trained until all states have images. After continuing, use the Recent Classifications view to classify images for the missing states, then train the model."
"title": "Missing Class Examples",
"description": "Not all classes have examples. Try generating new examples to find the missing class, or continue and use the Recent Classifications view to add images later."
}
}
}
+4 -2
View File
@@ -15,8 +15,10 @@
"description": "Review items can only be created for a camera when recordings are enabled for that camera."
}
},
"timeline": "Timeline",
"timeline.aria": "Select timeline",
"timeline": {
"label": "Timeline",
"aria": "Select timeline"
},
"zoomIn": "Zoom In",
"zoomOut": "Zoom Out",
"events": {
+11 -1
View File
@@ -169,7 +169,8 @@
},
"title": {
"label": "Title"
}
},
"scoreInfo": "Score Information"
},
"itemMenu": {
"downloadVideo": {
@@ -220,12 +221,18 @@
"debugReplay": {
"label": "Debug replay",
"aria": "View this tracked object in the debug replay view"
},
"more": {
"aria": "More"
}
},
"dialog": {
"confirmDelete": {
"title": "Confirm Delete",
"desc": "Deleting this tracked object removes the snapshot, any saved embeddings, and any associated tracking details entries. Recorded footage of this tracked object in History view will <em>NOT</em> be deleted.<br /><br />Are you sure you want to proceed?"
},
"toast": {
"error": "Error deleting this tracked object: {{errorMessage}}"
}
},
"noTrackedObjects": "No Tracked Objects Found",
@@ -248,5 +255,8 @@
},
"concerns": {
"label": "Concerns"
},
"objectLifecycle": {
"noImageFound": "No image found for this tracked object."
}
}
+4 -2
View File
@@ -6,8 +6,10 @@
"cases": "Cases",
"uncategorizedExports": "Uncategorized Exports"
},
"deleteExport": "Delete Export",
"deleteExport.desc": "Are you sure you want to delete {{exportName}}?",
"deleteExport": {
"label": "Delete Export",
"desc": "Are you sure you want to delete {{exportName}}?"
},
"editExport": {
"title": "Rename Export",
"desc": "Enter a new name for this export.",
@@ -66,6 +66,8 @@
"nofaces": "No faces available",
"trainFaceAs": "Train Face as:",
"trainFace": "Train Face",
"reclassifyFaceAs": "Reclassify Face as:",
"reclassifyFace": "Reclassify Face",
"toast": {
"success": {
"uploadedImage": "Successfully uploaded image.",
@@ -77,6 +79,7 @@
"deletedName_other": "{{count}} faces have been successfully deleted.",
"renamedFace": "Successfully renamed face to {{name}}",
"trainedFace": "Successfully trained face.",
"reclassifiedFace": "Successfully reclassified face.",
"updatedFaceScore": "Successfully updated face score to {{name}} ({{score}})."
},
"error": {
@@ -86,6 +89,7 @@
"deleteNameFailed": "Failed to delete name: {{errorMessage}}",
"renameFaceFailed": "Failed to rename face: {{errorMessage}}",
"trainFailed": "Failed to train: {{errorMessage}}",
"reclassifyFailed": "Failed to reclassify face: {{errorMessage}}",
"updateFaceScoreFailed": "Failed to update face score: {{errorMessage}}"
}
}
+4 -2
View File
@@ -1,6 +1,8 @@
{
"documentTitle": "Live - Frigate",
"documentTitle.withCamera": "{{camera}} - Live - Frigate",
"documentTitle": {
"default": "Live - Frigate",
"withCamera": "{{camera}} - Live - Frigate"
},
"lowBandwidthMode": "Low-bandwidth Mode",
"twoWayTalk": {
"enable": "Enable Two Way Talk",
+156 -13
View File
@@ -8,12 +8,19 @@
"masksAndZones": "Mask and Zone Editor - Frigate",
"motionTuner": "Motion Tuner - Frigate",
"object": "Debug - Frigate",
"general": "Profile Settings - Frigate",
"general": "UI Settings - Frigate",
"globalConfig": "Global Configuration - Frigate",
"cameraConfig": "Camera Configuration - Frigate",
"frigatePlus": "Frigate+ Settings - Frigate",
"notifications": "Notification Settings - Frigate",
"maintenance": "Maintenance - Frigate"
"maintenance": "Maintenance - Frigate",
"profiles": "Profiles - Frigate"
},
"button": {
"overriddenGlobal": "Overridden (Global)",
"overriddenGlobalTooltip": "This camera overrides global configuration settings in this section",
"overriddenBaseConfig": "Overridden (Base Config)",
"overriddenBaseConfigTooltip": "The {{profile}} profile overrides configuration settings in this section"
},
"menu": {
"general": "General",
@@ -22,7 +29,8 @@
"integrations": "Integrations",
"cameras": "Camera configuration",
"ui": "UI",
"profileSettings": "Profile settings",
"uiSettings": "UI settings",
"profiles": "Profiles",
"globalDetect": "Object detection",
"globalRecording": "Recording",
"globalSnapshots": "Snapshots",
@@ -47,6 +55,7 @@
"systemDetectorHardware": "Detector hardware",
"systemDetectionModel": "Detection model",
"systemMqtt": "MQTT",
"systemGo2rtcStreams": "go2rtc streams",
"integrationSemanticSearch": "Semantic search",
"integrationGenerativeAi": "Generative AI",
"integrationFaceRecognition": "Face recognition",
@@ -83,6 +92,7 @@
"triggers": "Triggers",
"debug": "Debug",
"frigateplus": "Frigate+",
"maintenance": "Maintenance",
"mediaSync": "Media sync",
"regionGrid": "Region grid"
},
@@ -101,6 +111,9 @@
"global": "Global",
"camera": "Camera: {{cameraName}}"
},
"profile": {
"label": "Profile"
},
"field": {
"label": "Field"
},
@@ -114,7 +127,7 @@
"noCamera": "No Camera"
},
"general": {
"title": "Profile Settings",
"title": "UI Settings",
"liveDashboard": {
"title": "Live Dashboard",
"automaticLiveView": {
@@ -473,6 +486,14 @@
"toast": {
"success": "Camera {{cameraName}} saved successfully"
}
},
"profiles": {
"title": "Profile Camera Overrides",
"selectLabel": "Select profile",
"description": "Configure which cameras are enabled or disabled when a profile is activated. Cameras set to \"Inherit\" keep their base enabled state.",
"inherit": "Inherit",
"enabled": "Enabled",
"disabled": "Disabled"
}
},
"cameraReview": {
@@ -494,7 +515,6 @@
"reviewClassification": {
"title": "Review Classification",
"desc": "Frigate categorizes review items as Alerts and Detections. By default, all <em>person</em> and <em>car</em> objects are considered Alerts. You can refine categorization of your review items by configuring required zones for them.",
"noDefinedZones": "No zones are defined for this camera.",
"objectAlertsTips": "All {{alertsLabels}} objects on {{cameraName}} will be shown as Alerts.",
"zoneObjectAlertsTips": "All {{alertsLabels}} objects detected in {{zone}} on {{cameraName}} will be shown as Alerts.",
@@ -519,6 +539,8 @@
},
"restart_required": "Restart required (masks/zones changed)",
"disabledInConfig": "Item is disabled in the config file",
"profileBase": "(base)",
"profileOverride": "(override)",
"toast": {
"success": {
"copyCoordinates": "Copied coordinates for {{polyName}} to clipboard."
@@ -530,6 +552,17 @@
"motionMaskLabel": "Motion Mask {{number}}",
"objectMaskLabel": "Object Mask {{number}}",
"form": {
"id": {
"error": {
"mustNotBeEmpty": "ID must not be empty.",
"alreadyExists": "A mask with this ID already exists for this camera."
}
},
"name": {
"error": {
"mustNotBeEmpty": "Name must not be empty."
}
},
"zoneName": {
"error": {
"mustBeAtLeastTwoCharacters": "Zone name must be at least 2 characters.",
@@ -1037,12 +1070,11 @@
},
"snapshotConfig": {
"title": "Snapshot Configuration",
"desc": "Submitting to Frigate+ requires both snapshots and <code>clean_copy</code> snapshots to be enabled in your config.",
"cleanCopyWarning": "Some cameras have snapshots enabled but have the clean copy disabled. You need to enable <code>clean_copy</code> in your snapshot config to be able to submit images from these cameras to Frigate+.",
"desc": "Submitting to Frigate+ requires snapshots to be enabled in your config.",
"cleanCopyWarning": "Some cameras have snapshots disabled",
"table": {
"camera": "Camera",
"snapshots": "Snapshots",
"cleanCopySnapshots": "<code>clean_copy</code> Snapshots"
"snapshots": "Snapshots"
}
},
"modelInfo": {
@@ -1221,6 +1253,8 @@
"dryRunDisabled": "Files will be deleted",
"force": "Force",
"forceDesc": "Bypass safety threshold and complete sync even if more than 50% of the files would be deleted.",
"verbose": "Verbose",
"verboseDesc": "Write a full list of orphaned files to disk for review.",
"running": "Sync Running...",
"start": "Start Sync",
"inProgress": "Sync is in progress. This page is disabled.",
@@ -1264,7 +1298,8 @@
},
"camera": {
"title": "Camera Settings",
"description": "These settings apply only to this camera and override the global settings."
"description": "These settings apply only to this camera and override the global settings.",
"noCameras": "No cameras available"
},
"advancedSettingsCount": "Advanced Settings ({{count}})",
"advancedCount": "Advanced ({{count}})",
@@ -1294,8 +1329,21 @@
"preset": "Preset",
"manual": "Manual arguments",
"inherit": "Inherit from camera setting",
"none": "None",
"useGlobalSetting": "Inherit from global setting",
"selectPreset": "Select preset",
"manualPlaceholder": "Enter FFmpeg arguments"
"manualPlaceholder": "Enter FFmpeg arguments",
"presetLabels": {
"preset-rpi-64-h264": "Raspberry Pi (H.264)",
"preset-rpi-64-h265": "Raspberry Pi (H.265)",
"preset-vaapi": "VAAPI (Intel/AMD GPU)",
"preset-intel-qsv-h264": "Intel QuickSync (H.264)",
"preset-intel-qsv-h265": "Intel QuickSync (H.265)",
"preset-nvidia": "NVIDIA GPU",
"preset-jetson-h264": "NVIDIA Jetson (H.264)",
"preset-jetson-h265": "NVIDIA Jetson (H.265)",
"preset-rkmpp": "Rockchip RKMPP"
}
},
"cameraInputs": {
"itemTitle": "Stream {{index}}"
@@ -1327,7 +1375,8 @@
"genai": "GenAI",
"face_recognition": "Face Recognition",
"lpr": "License Plate Recognition",
"birdseye": "Birdseye"
"birdseye": "Birdseye",
"masksAndZones": "Masks / Zones"
},
"detect": {
"title": "Detection Settings"
@@ -1377,6 +1426,18 @@
"audio": "Audio"
}
},
"genaiRoles": {
"options": {
"embeddings": "Embedding",
"vision": "Vision",
"tools": "Tools"
}
},
"semanticSearchModel": {
"placeholder": "Select model…",
"builtIn": "Built-in Models",
"genaiProviders": "GenAI Providers"
},
"review": {
"title": "Review Settings"
},
@@ -1427,8 +1488,90 @@
"saveAllPartial_other": "{{successCount}} of {{totalCount}} sections saved. {{failCount}} failed.",
"saveAllFailure": "Failed to save all sections."
},
"profiles": {
"title": "Profiles",
"activeProfile": "Active Profile",
"noActiveProfile": "No active profile",
"active": "Active",
"activated": "Profile '{{profile}}' activated",
"activateFailed": "Failed to set profile",
"deactivated": "Profile deactivated",
"noProfiles": "No profiles defined.",
"noOverrides": "No overrides",
"cameraCount_one": "{{count}} camera",
"cameraCount_other": "{{count}} cameras",
"baseConfig": "Base Config",
"addProfile": "Add Profile",
"newProfile": "New Profile",
"profileNamePlaceholder": "e.g., Armed, Away, Night Mode",
"friendlyNameLabel": "Profile Name",
"profileIdLabel": "Profile ID",
"profileIdDescription": "Internal identifier used in config and automations",
"nameInvalid": "Only lowercase letters, numbers, and underscores allowed",
"nameDuplicate": "A profile with this name already exists",
"error": {
"mustBeAtLeastTwoCharacters": "Must be at least 2 characters",
"mustNotContainPeriod": "Must not contain periods",
"alreadyExists": "A profile with this ID already exists"
},
"renameProfile": "Rename Profile",
"renameSuccess": "Profile renamed to '{{profile}}'",
"deleteProfile": "Delete Profile",
"deleteProfileConfirm": "Delete profile \"{{profile}}\" from all cameras? This cannot be undone.",
"deleteSuccess": "Profile '{{profile}}' deleted",
"createSuccess": "Profile '{{profile}}' created",
"removeOverride": "Remove Profile Override",
"deleteSection": "Delete Section Overrides",
"deleteSectionConfirm": "Remove the {{section}} overrides for profile {{profile}} on {{camera}}?",
"deleteSectionSuccess": "Removed {{section}} overrides for {{profile}}",
"enableSwitch": "Enable Profiles",
"enabledDescription": "Profiles are enabled. Create a new profile below, navigate to a camera config section to make your changes, and save for changes to take effect.",
"disabledDescription": "Profiles allow you to define named sets of camera config overrides (e.g., armed, away, night) that can be activated on demand."
},
"unsavedChanges": "You have unsaved changes",
"confirmReset": "Confirm Reset",
"resetToDefaultDescription": "This will reset all settings in this section to their default values. This action cannot be undone.",
"resetToGlobalDescription": "This will reset the settings in this section to the global defaults. This action cannot be undone."
"resetToGlobalDescription": "This will reset the settings in this section to the global defaults. This action cannot be undone.",
"go2rtcStreams": {
"title": "go2rtc Streams",
"description": "Manage go2rtc stream configurations for camera restreaming. Each stream has a name and one or more source URLs.",
"addStream": "Add stream",
"addStreamDesc": "Enter a name for the new stream. This name will be used to reference the stream in your camera configuration.",
"addUrl": "Add URL",
"streamName": "Stream name",
"streamNamePlaceholder": "e.g., front_door",
"streamUrlPlaceholder": "e.g., rtsp://user:pass@192.168.1.100/stream",
"deleteStream": "Delete stream",
"deleteStreamConfirm": "Are you sure you want to delete the stream \"{{streamName}}\"? Cameras that reference this stream may stop working.",
"noStreams": "No go2rtc streams configured. Add a stream to get started.",
"validation": {
"nameRequired": "Stream name is required",
"nameDuplicate": "A stream with this name already exists",
"nameInvalid": "Stream name can only contain letters, numbers, underscores, and hyphens",
"urlRequired": "At least one URL is required"
},
"renameStream": "Rename stream",
"renameStreamDesc": "Enter a new name for this stream. Renaming a stream may break cameras or other streams that reference it by name.",
"newStreamName": "New stream name",
"ffmpeg": {
"useFfmpegModule": "Use compatibility mode (ffmpeg)",
"video": "Video",
"audio": "Audio",
"hardware": "Hardware acceleration",
"videoCopy": "Copy",
"videoH264": "Transcode to H.264",
"videoH265": "Transcode to H.265",
"videoExclude": "Exclude",
"audioCopy": "Copy",
"audioAac": "Transcode to AAC",
"audioOpus": "Transcode to Opus",
"audioPcmu": "Transcode to PCM μ-law",
"audioPcma": "Transcode to PCM A-law",
"audioPcm": "Transcode to PCM",
"audioMp3": "Transcode to MP3",
"audioExclude": "Exclude",
"hardwareNone": "No hardware acceleration",
"hardwareAuto": "Automatic hardware acceleration"
}
}
}
+2 -1
View File
@@ -35,7 +35,8 @@
"cameras_count_other": "{{count}} Cameras"
},
"empty": "No messages captured yet",
"count": "{{count}} messages",
"count_one": "{{count}} message",
"count_other": "{{count}} messages",
"expanded": {
"payload": "Payload"
}