From 425e68c51c5a31f8cee1d1d2ec23071d3d7c93e2 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Fri, 23 Jan 2026 09:55:56 -0600 Subject: [PATCH] don't use properties wrapper when generating config i18n json --- generate_config_translations.py | 16 +- web/public/locales/en/common.json | 5 +- web/public/locales/en/config/audio.json | 42 +- .../en/config/audio_transcription.json | 33 +- web/public/locales/en/config/auth.json | 64 +- web/public/locales/en/config/birdseye.json | 61 +- .../locales/en/config/camera_groups.json | 18 +- web/public/locales/en/config/cameras.json | 1361 ++++++++--------- .../locales/en/config/classification.json | 89 +- web/public/locales/en/config/database.json | 6 +- web/public/locales/en/config/detect.json | 78 +- web/public/locales/en/config/detectors.json | 18 +- .../locales/en/config/face_recognition.json | 62 +- web/public/locales/en/config/ffmpeg.json | 55 +- web/public/locales/en/config/live.json | 18 +- web/public/locales/en/config/logger.json | 12 +- web/public/locales/en/config/lpr.json | 80 +- web/public/locales/en/config/model.json | 60 +- web/public/locales/en/config/mqtt.json | 78 +- web/public/locales/en/config/networking.json | 12 +- .../locales/en/config/notifications.json | 24 +- web/public/locales/en/config/objects.json | 126 +- web/public/locales/en/config/proxy.json | 44 +- web/public/locales/en/config/record.json | 154 +- web/public/locales/en/config/review.json | 127 +- .../locales/en/config/semantic_search.json | 32 +- web/public/locales/en/config/snapshots.json | 68 +- web/public/locales/en/config/telemetry.json | 38 +- .../locales/en/config/timestamp_style.json | 44 +- web/public/locales/en/config/tls.json | 6 +- web/public/locales/en/config/ui.json | 32 +- web/public/locales/en/views/settings.json | 14 +- 32 files changed, 1351 insertions(+), 1526 deletions(-) diff --git a/generate_config_translations.py b/generate_config_translations.py index c19578f1a..66a5098ad 100644 --- a/generate_config_translations.py +++ b/generate_config_translations.py @@ -38,8 +38,8 @@ def process_model_fields(model: type[BaseModel]) -> Dict[str, Any]: """ Recursively process a Pydantic model to extract translations. - Returns a nested dictionary structure matching the config schema, - with title and description for each field. + Returns a dictionary structure with nested fields directly under their + parent keys. """ translations = {} @@ -73,11 +73,11 @@ def process_model_fields(model: type[BaseModel]) -> Dict[str, Any]: nested_translations = process_model_fields(value_type) if nested_translations: - field_translations["properties"] = nested_translations + field_translations.update(nested_translations) elif isinstance(field_type, type) and issubclass(field_type, BaseModel): nested_translations = process_model_fields(field_type) if nested_translations: - field_translations["properties"] = nested_translations + field_translations.update(nested_translations) if field_translations: translations[field_name] = field_translations @@ -90,6 +90,8 @@ def generate_section_translation( ) -> Dict[str, Any]: """ Generate translation structure for a top-level config section. + Returns a structure with label and description at root level, + and nested fields directly under their parent keys. """ section_translations = get_field_translations(field_info) field_type = field_info.annotation @@ -109,13 +111,13 @@ def generate_section_translation( if isinstance(value_type, type) and issubclass(value_type, BaseModel): nested = process_model_fields(value_type) if nested: - section_translations["properties"] = nested + section_translations.update(nested) - # If the field itself is a BaseModel, process it + # If the field itself is a BaseModel, process it and add nested translations elif isinstance(field_type, type) and issubclass(field_type, BaseModel): nested = process_model_fields(field_type) if nested: - section_translations["properties"] = nested + section_translations.update(nested) return section_translations diff --git a/web/public/locales/en/common.json b/web/public/locales/en/common.json index 300f74ddb..4771d4945 100644 --- a/web/public/locales/en/common.json +++ b/web/public/locales/en/common.json @@ -150,7 +150,10 @@ "export": "Export", "deleteNow": "Delete Now", "next": "Next", - "continue": "Continue" + "continue": "Continue", + "modified": "Modified", + "overridden": "Overridden", + "resetToGlobal": "Reset to Global" }, "menu": { "system": "System", diff --git a/web/public/locales/en/config/audio.json b/web/public/locales/en/config/audio.json index f9aaffa6b..5fe223c10 100644 --- a/web/public/locales/en/config/audio.json +++ b/web/public/locales/en/config/audio.json @@ -1,26 +1,24 @@ { "label": "Global Audio events configuration.", - "properties": { - "enabled": { - "label": "Enable audio events." - }, - "max_not_heard": { - "label": "Seconds of not hearing the type of audio to end the event." - }, - "min_volume": { - "label": "Min volume required to run audio detection." - }, - "listen": { - "label": "Audio to listen for." - }, - "filters": { - "label": "Audio filters." - }, - "enabled_in_config": { - "label": "Keep track of original state of audio detection." - }, - "num_threads": { - "label": "Number of detection threads" - } + "enabled": { + "label": "Enable audio events." + }, + "max_not_heard": { + "label": "Seconds of not hearing the type of audio to end the event." + }, + "min_volume": { + "label": "Min volume required to run audio detection." + }, + "listen": { + "label": "Audio to listen for." + }, + "filters": { + "label": "Audio filters." + }, + "enabled_in_config": { + "label": "Keep track of original state of audio detection." + }, + "num_threads": { + "label": "Number of detection threads" } } \ No newline at end of file diff --git a/web/public/locales/en/config/audio_transcription.json b/web/public/locales/en/config/audio_transcription.json index 6922b9d80..970ad4e53 100644 --- a/web/public/locales/en/config/audio_transcription.json +++ b/web/public/locales/en/config/audio_transcription.json @@ -1,23 +1,18 @@ { "label": "Audio transcription config.", - "properties": { - "enabled": { - "label": "Enable audio transcription." - }, - "language": { - "label": "Language abbreviation to use for audio event transcription/translation." - }, - "device": { - "label": "The device used for license plate recognition." - }, - "model_size": { - "label": "The size of the embeddings model used." - }, - "enabled_in_config": { - "label": "Keep track of original state of camera." - }, - "live_enabled": { - "label": "Enable live transcriptions." - } + "enabled": { + "label": "Enable audio transcription." + }, + "language": { + "label": "Language abbreviation to use for audio event transcription/translation." + }, + "device": { + "label": "The device used for audio transcription." + }, + "model_size": { + "label": "The size of the embeddings model used." + }, + "live_enabled": { + "label": "Enable live transcriptions." } } \ No newline at end of file diff --git a/web/public/locales/en/config/auth.json b/web/public/locales/en/config/auth.json index a524d8d1b..5f33c740d 100644 --- a/web/public/locales/en/config/auth.json +++ b/web/public/locales/en/config/auth.json @@ -1,35 +1,37 @@ { "label": "Auth configuration.", - "properties": { - "enabled": { - "label": "Enable authentication" - }, - "reset_admin_password": { - "label": "Reset the admin password on startup" - }, - "cookie_name": { - "label": "Name for jwt token cookie" - }, - "cookie_secure": { - "label": "Set secure flag on cookie" - }, - "session_length": { - "label": "Session length for jwt session tokens" - }, - "refresh_time": { - "label": "Refresh the session if it is going to expire in this many seconds" - }, - "failed_login_rate_limit": { - "label": "Rate limits for failed login attempts." - }, - "trusted_proxies": { - "label": "Trusted proxies for determining IP address to rate limit" - }, - "hash_iterations": { - "label": "Password hash iterations" - }, - "roles": { - "label": "Role to camera mappings. Empty list grants access to all cameras." - } + "enabled": { + "label": "Enable authentication" + }, + "reset_admin_password": { + "label": "Reset the admin password on startup" + }, + "cookie_name": { + "label": "Name for jwt token cookie" + }, + "cookie_secure": { + "label": "Set secure flag on cookie" + }, + "session_length": { + "label": "Session length for jwt session tokens" + }, + "refresh_time": { + "label": "Refresh the session if it is going to expire in this many seconds" + }, + "failed_login_rate_limit": { + "label": "Rate limits for failed login attempts." + }, + "trusted_proxies": { + "label": "Trusted proxies for determining IP address to rate limit" + }, + "hash_iterations": { + "label": "Password hash iterations" + }, + "roles": { + "label": "Role to camera mappings. Empty list grants access to all cameras." + }, + "admin_first_time_login": { + "label": "Internal field to expose first-time admin login flag to the UI", + "description": "When true the UI may show a help link on the login page informing users how to sign in after an admin password reset. " } } \ No newline at end of file diff --git a/web/public/locales/en/config/birdseye.json b/web/public/locales/en/config/birdseye.json index f122f314c..93f8d752e 100644 --- a/web/public/locales/en/config/birdseye.json +++ b/web/public/locales/en/config/birdseye.json @@ -1,37 +1,36 @@ { "label": "Birdseye configuration.", - "properties": { - "enabled": { - "label": "Enable birdseye view." + "enabled": { + "label": "Enable birdseye view." + }, + "mode": { + "label": "Tracking mode." + }, + "restream": { + "label": "Restream birdseye via RTSP." + }, + "width": { + "label": "Birdseye width." + }, + "height": { + "label": "Birdseye height." + }, + "quality": { + "label": "Encoding quality." + }, + "inactivity_threshold": { + "label": "Birdseye Inactivity Threshold" + }, + "layout": { + "label": "Birdseye Layout Config", + "scaling_factor": { + "label": "Birdseye Scaling Factor" }, - "mode": { - "label": "Tracking mode." - }, - "restream": { - "label": "Restream birdseye via RTSP." - }, - "width": { - "label": "Birdseye width." - }, - "height": { - "label": "Birdseye height." - }, - "quality": { - "label": "Encoding quality." - }, - "inactivity_threshold": { - "label": "Birdseye Inactivity Threshold" - }, - "layout": { - "label": "Birdseye Layout Config", - "properties": { - "scaling_factor": { - "label": "Birdseye Scaling Factor" - }, - "max_cameras": { - "label": "Max cameras" - } - } + "max_cameras": { + "label": "Max cameras" } + }, + "idle_heartbeat_fps": { + "label": "Idle heartbeat FPS (0 disables, max 10)" } } \ No newline at end of file diff --git a/web/public/locales/en/config/camera_groups.json b/web/public/locales/en/config/camera_groups.json index 2900e9c67..a3d519f47 100644 --- a/web/public/locales/en/config/camera_groups.json +++ b/web/public/locales/en/config/camera_groups.json @@ -1,14 +1,12 @@ { "label": "Camera group configuration", - "properties": { - "cameras": { - "label": "List of cameras in this group." - }, - "icon": { - "label": "Icon that represents camera group." - }, - "order": { - "label": "Sort order for group." - } + "cameras": { + "label": "List of cameras in this group." + }, + "icon": { + "label": "Icon that represents camera group." + }, + "order": { + "label": "Sort order for group." } } \ No newline at end of file diff --git a/web/public/locales/en/config/cameras.json b/web/public/locales/en/config/cameras.json index d2c74dc54..23b85731b 100644 --- a/web/public/locales/en/config/cameras.json +++ b/web/public/locales/en/config/cameras.json @@ -1,758 +1,675 @@ { "label": "Camera configuration.", - "properties": { - "name": { - "label": "Camera name." - }, - "friendly_name": { - "label": "Camera friendly name used in the Frigate UI." - }, + "name": { + "label": "Camera name." + }, + "friendly_name": { + "label": "Camera friendly name used in the Frigate UI." + }, + "enabled": { + "label": "Enable camera." + }, + "audio": { + "label": "Audio events configuration.", "enabled": { - "label": "Enable camera." + "label": "Enable audio events." }, - "audio": { - "label": "Audio events configuration.", - "properties": { - "enabled": { - "label": "Enable audio events." + "max_not_heard": { + "label": "Seconds of not hearing the type of audio to end the event." + }, + "min_volume": { + "label": "Min volume required to run audio detection." + }, + "listen": { + "label": "Audio to listen for." + }, + "filters": { + "label": "Audio filters." + }, + "enabled_in_config": { + "label": "Keep track of original state of audio detection." + }, + "num_threads": { + "label": "Number of detection threads" + } + }, + "audio_transcription": { + "label": "Audio transcription config.", + "enabled": { + "label": "Enable audio transcription." + }, + "enabled_in_config": { + "label": "Keep track of original state of audio transcription." + }, + "live_enabled": { + "label": "Enable live transcriptions." + } + }, + "birdseye": { + "label": "Birdseye camera configuration.", + "enabled": { + "label": "Enable birdseye view for camera." + }, + "mode": { + "label": "Tracking mode for camera." + }, + "order": { + "label": "Position of the camera in the birdseye view." + } + }, + "detect": { + "label": "Object detection configuration.", + "enabled": { + "label": "Detection Enabled." + }, + "height": { + "label": "Height of the stream for the detect role." + }, + "width": { + "label": "Width of the stream for the detect role." + }, + "fps": { + "label": "Number of frames per second to process through detection." + }, + "min_initialized": { + "label": "Minimum number of consecutive hits for an object to be initialized by the tracker." + }, + "max_disappeared": { + "label": "Maximum number of frames the object can disappear before detection ends." + }, + "stationary": { + "label": "Stationary objects config.", + "interval": { + "label": "Frame interval for checking stationary objects." + }, + "threshold": { + "label": "Number of frames without a position change for an object to be considered stationary" + }, + "max_frames": { + "label": "Max frames for stationary objects.", + "default": { + "label": "Default max frames." }, - "max_not_heard": { - "label": "Seconds of not hearing the type of audio to end the event." - }, - "min_volume": { - "label": "Min volume required to run audio detection." - }, - "listen": { - "label": "Audio to listen for." - }, - "filters": { - "label": "Audio filters." - }, - "enabled_in_config": { - "label": "Keep track of original state of audio detection." - }, - "num_threads": { - "label": "Number of detection threads" + "objects": { + "label": "Object specific max frames." } + }, + "classifier": { + "label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary." } }, - "audio_transcription": { - "label": "Audio transcription config.", - "properties": { - "enabled": { - "label": "Enable audio transcription." - }, - "language": { - "label": "Language abbreviation to use for audio event transcription/translation." - }, - "device": { - "label": "The device used for license plate recognition." - }, - "model_size": { - "label": "The size of the embeddings model used." - }, - "enabled_in_config": { - "label": "Keep track of original state of camera." - }, - "live_enabled": { - "label": "Enable live transcriptions." - } + "annotation_offset": { + "label": "Milliseconds to offset detect annotations by." + } + }, + "face_recognition": { + "label": "Face recognition config.", + "enabled": { + "label": "Enable face recognition." + }, + "min_area": { + "label": "Min area of face box to consider running face recognition." + } + }, + "ffmpeg": { + "label": "FFmpeg configuration for the camera.", + "path": { + "label": "FFmpeg path" + }, + "global_args": { + "label": "Global FFmpeg arguments." + }, + "hwaccel_args": { + "label": "FFmpeg hardware acceleration arguments." + }, + "input_args": { + "label": "FFmpeg input arguments." + }, + "output_args": { + "label": "FFmpeg output arguments per role.", + "detect": { + "label": "Detect role FFmpeg output arguments." + }, + "record": { + "label": "Record role FFmpeg output arguments." } }, - "birdseye": { - "label": "Birdseye camera configuration.", - "properties": { - "enabled": { - "label": "Enable birdseye view for camera." - }, - "mode": { - "label": "Tracking mode for camera." - }, - "order": { - "label": "Position of the camera in the birdseye view." - } + "retry_interval": { + "label": "Time in seconds to wait before FFmpeg retries connecting to the camera." + }, + "apple_compatibility": { + "label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players." + }, + "gpu": { + "label": "GPU index to use for hardware acceleration." + }, + "inputs": { + "label": "Camera inputs." + } + }, + "live": { + "label": "Live playback settings.", + "streams": { + "label": "Friendly names and restream names to use for live view." + }, + "height": { + "label": "Live camera view height" + }, + "quality": { + "label": "Live camera view quality" + } + }, + "lpr": { + "label": "LPR config.", + "enabled": { + "label": "Enable license plate recognition." + }, + "expire_time": { + "label": "Expire plates not seen after number of seconds (for dedicated LPR cameras only)." + }, + "min_area": { + "label": "Minimum area of license plate to begin running recognition." + }, + "enhancement": { + "label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition." + } + }, + "motion": { + "label": "Motion detection configuration.", + "enabled": { + "label": "Enable motion on all cameras." + }, + "threshold": { + "label": "Motion detection threshold (1-255)." + }, + "lightning_threshold": { + "label": "Lightning detection threshold (0.3-1.0)." + }, + "improve_contrast": { + "label": "Improve Contrast" + }, + "contour_area": { + "label": "Contour Area" + }, + "delta_alpha": { + "label": "Delta Alpha" + }, + "frame_alpha": { + "label": "Frame Alpha" + }, + "frame_height": { + "label": "Frame Height" + }, + "mask": { + "label": "Coordinates polygon for the motion mask." + }, + "mqtt_off_delay": { + "label": "Delay for updating MQTT with no motion detected." + }, + "enabled_in_config": { + "label": "Keep track of original state of motion detection." + } + }, + "objects": { + "label": "Object configuration.", + "track": { + "label": "Objects to track." + }, + "filters": { + "label": "Object filters.", + "min_area": { + "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." + }, + "max_area": { + "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." + }, + "min_ratio": { + "label": "Minimum ratio of bounding box's width/height for object to be counted." + }, + "max_ratio": { + "label": "Maximum ratio of bounding box's width/height for object to be counted." + }, + "threshold": { + "label": "Average detection confidence threshold for object to be counted." + }, + "min_score": { + "label": "Minimum detection confidence for object to be counted." + }, + "mask": { + "label": "Detection area polygon mask for this filter configuration." } }, - "detect": { - "label": "Object detection configuration.", - "properties": { - "enabled": { - "label": "Detection Enabled." - }, - "height": { - "label": "Height of the stream for the detect role." - }, - "width": { - "label": "Width of the stream for the detect role." - }, - "fps": { - "label": "Number of frames per second to process through detection." - }, - "min_initialized": { - "label": "Minimum number of consecutive hits for an object to be initialized by the tracker." - }, - "max_disappeared": { - "label": "Maximum number of frames the object can disappear before detection ends." - }, - "stationary": { - "label": "Stationary objects config.", - "properties": { - "interval": { - "label": "Frame interval for checking stationary objects." - }, - "threshold": { - "label": "Number of frames without a position change for an object to be considered stationary" - }, - "max_frames": { - "label": "Max frames for stationary objects.", - "properties": { - "default": { - "label": "Default max frames." - }, - "objects": { - "label": "Object specific max frames." - } - } - }, - "classifier": { - "label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary." - } - } - }, - "annotation_offset": { - "label": "Milliseconds to offset detect annotations by." - } - } + "mask": { + "label": "Object mask." }, - "face_recognition": { - "label": "Face recognition config.", - "properties": { - "enabled": { - "label": "Enable face recognition." + "genai": { + "label": "Config for using genai to analyze objects.", + "enabled": { + "label": "Enable GenAI for camera." + }, + "use_snapshot": { + "label": "Use snapshots for generating descriptions." + }, + "prompt": { + "label": "Default caption prompt." + }, + "object_prompts": { + "label": "Object specific prompts." + }, + "objects": { + "label": "List of objects to run generative AI for." + }, + "required_zones": { + "label": "List of required zones to be entered in order to run generative AI." + }, + "debug_save_thumbnails": { + "label": "Save thumbnails sent to generative AI for debugging purposes." + }, + "send_triggers": { + "label": "What triggers to use to send frames to generative AI for a tracked object.", + "tracked_object_end": { + "label": "Send once the object is no longer tracked." }, - "min_area": { - "label": "Min area of face box to consider running face recognition." + "after_significant_updates": { + "label": "Send an early request to generative AI when X frames accumulated." } + }, + "enabled_in_config": { + "label": "Keep track of original state of generative AI." } + } + }, + "record": { + "label": "Record configuration.", + "enabled": { + "label": "Enable record on all cameras." }, - "ffmpeg": { - "label": "FFmpeg configuration for the camera.", - "properties": { - "path": { - "label": "FFmpeg path" - }, - "global_args": { - "label": "Global FFmpeg arguments." - }, - "hwaccel_args": { - "label": "FFmpeg hardware acceleration arguments." - }, - "input_args": { - "label": "FFmpeg input arguments." - }, - "output_args": { - "label": "FFmpeg output arguments per role.", - "properties": { - "detect": { - "label": "Detect role FFmpeg output arguments." - }, - "record": { - "label": "Record role FFmpeg output arguments." - } - } - }, - "retry_interval": { - "label": "Time in seconds to wait before FFmpeg retries connecting to the camera." - }, - "apple_compatibility": { - "label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players." - }, - "inputs": { - "label": "Camera inputs." - } - } + "expire_interval": { + "label": "Number of minutes to wait between cleanup runs." }, - "live": { - "label": "Live playback settings.", - "properties": { - "streams": { - "label": "Friendly names and restream names to use for live view." - }, - "height": { - "label": "Live camera view height" - }, - "quality": { - "label": "Live camera view quality" - } - } - }, - "lpr": { - "label": "LPR config.", - "properties": { - "enabled": { - "label": "Enable license plate recognition." - }, - "expire_time": { - "label": "Expire plates not seen after number of seconds (for dedicated LPR cameras only)." - }, - "min_area": { - "label": "Minimum area of license plate to begin running recognition." - }, - "enhancement": { - "label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition." - } + "continuous": { + "label": "Continuous recording retention settings.", + "days": { + "label": "Default retention period." } }, "motion": { - "label": "Motion detection configuration.", - "properties": { - "enabled": { - "label": "Enable motion on all cameras." + "label": "Motion recording retention settings.", + "days": { + "label": "Default retention period." + } + }, + "detections": { + "label": "Detection specific retention settings.", + "pre_capture": { + "label": "Seconds to retain before event starts." + }, + "post_capture": { + "label": "Seconds to retain after event ends." + }, + "retain": { + "label": "Event retention settings.", + "days": { + "label": "Default retention period." }, - "threshold": { - "label": "Motion detection threshold (1-255)." - }, - "lightning_threshold": { - "label": "Lightning detection threshold (0.3-1.0)." - }, - "improve_contrast": { - "label": "Improve Contrast" - }, - "contour_area": { - "label": "Contour Area" - }, - "delta_alpha": { - "label": "Delta Alpha" - }, - "frame_alpha": { - "label": "Frame Alpha" - }, - "frame_height": { - "label": "Frame Height" - }, - "mask": { - "label": "Coordinates polygon for the motion mask." - }, - "mqtt_off_delay": { - "label": "Delay for updating MQTT with no motion detected." - }, - "enabled_in_config": { - "label": "Keep track of original state of motion detection." + "mode": { + "label": "Retain mode." } } }, - "objects": { - "label": "Object configuration.", - "properties": { - "track": { - "label": "Objects to track." + "alerts": { + "label": "Alert specific retention settings.", + "pre_capture": { + "label": "Seconds to retain before event starts." + }, + "post_capture": { + "label": "Seconds to retain after event ends." + }, + "retain": { + "label": "Event retention settings.", + "days": { + "label": "Default retention period." }, - "filters": { - "label": "Object filters.", - "properties": { - "min_area": { - "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." - }, - "max_area": { - "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." - }, - "min_ratio": { - "label": "Minimum ratio of bounding box's width/height for object to be counted." - }, - "max_ratio": { - "label": "Maximum ratio of bounding box's width/height for object to be counted." - }, - "threshold": { - "label": "Average detection confidence threshold for object to be counted." - }, - "min_score": { - "label": "Minimum detection confidence for object to be counted." - }, - "mask": { - "label": "Detection area polygon mask for this filter configuration." - } - } - }, - "mask": { - "label": "Object mask." - }, - "genai": { - "label": "Config for using genai to analyze objects.", - "properties": { - "enabled": { - "label": "Enable GenAI for camera." - }, - "use_snapshot": { - "label": "Use snapshots for generating descriptions." - }, - "prompt": { - "label": "Default caption prompt." - }, - "object_prompts": { - "label": "Object specific prompts." - }, - "objects": { - "label": "List of objects to run generative AI for." - }, - "required_zones": { - "label": "List of required zones to be entered in order to run generative AI." - }, - "debug_save_thumbnails": { - "label": "Save thumbnails sent to generative AI for debugging purposes." - }, - "send_triggers": { - "label": "What triggers to use to send frames to generative AI for a tracked object.", - "properties": { - "tracked_object_end": { - "label": "Send once the object is no longer tracked." - }, - "after_significant_updates": { - "label": "Send an early request to generative AI when X frames accumulated." - } - } - }, - "enabled_in_config": { - "label": "Keep track of original state of generative AI." - } - } + "mode": { + "label": "Retain mode." } } }, - "record": { - "label": "Record configuration.", - "properties": { - "enabled": { - "label": "Enable record on all cameras." - }, - "expire_interval": { - "label": "Number of minutes to wait between cleanup runs." - }, - "continuous": { - "label": "Continuous recording retention settings.", - "properties": { - "days": { - "label": "Default retention period." - } - } - }, - "motion": { - "label": "Motion recording retention settings.", - "properties": { - "days": { - "label": "Default retention period." - } - } - }, - "detections": { - "label": "Detection specific retention settings.", - "properties": { - "pre_capture": { - "label": "Seconds to retain before event starts." - }, - "post_capture": { - "label": "Seconds to retain after event ends." - }, - "retain": { - "label": "Event retention settings.", - "properties": { - "days": { - "label": "Default retention period." - }, - "mode": { - "label": "Retain mode." - } - } - } - } - }, - "alerts": { - "label": "Alert specific retention settings.", - "properties": { - "pre_capture": { - "label": "Seconds to retain before event starts." - }, - "post_capture": { - "label": "Seconds to retain after event ends." - }, - "retain": { - "label": "Event retention settings.", - "properties": { - "days": { - "label": "Default retention period." - }, - "mode": { - "label": "Retain mode." - } - } - } - } - }, - "export": { - "label": "Recording Export Config", - "properties": { - "timelapse_args": { - "label": "Timelapse Args" - } - } - }, - "preview": { - "label": "Recording Preview Config", - "properties": { - "quality": { - "label": "Quality of recording preview." - } - } - }, - "enabled_in_config": { - "label": "Keep track of original state of recording." - } + "export": { + "label": "Recording Export Config", + "hwaccel_args": { + "label": "Export-specific FFmpeg hardware acceleration arguments." } }, - "review": { - "label": "Review configuration.", - "properties": { - "alerts": { - "label": "Review alerts config.", - "properties": { - "enabled": { - "label": "Enable alerts." - }, - "labels": { - "label": "Labels to create alerts for." - }, - "required_zones": { - "label": "List of required zones to be entered in order to save the event as an alert." - }, - "enabled_in_config": { - "label": "Keep track of original state of alerts." - }, - "cutoff_time": { - "label": "Time to cutoff alerts after no alert-causing activity has occurred." - } - } - }, - "detections": { - "label": "Review detections config.", - "properties": { - "enabled": { - "label": "Enable detections." - }, - "labels": { - "label": "Labels to create detections for." - }, - "required_zones": { - "label": "List of required zones to be entered in order to save the event as a detection." - }, - "cutoff_time": { - "label": "Time to cutoff detection after no detection-causing activity has occurred." - }, - "enabled_in_config": { - "label": "Keep track of original state of detections." - } - } - }, - "genai": { - "label": "Review description genai config.", - "properties": { - "enabled": { - "label": "Enable GenAI descriptions for review items." - }, - "alerts": { - "label": "Enable GenAI for alerts." - }, - "detections": { - "label": "Enable GenAI for detections." - }, - "additional_concerns": { - "label": "Additional concerns that GenAI should make note of on this camera." - }, - "debug_save_thumbnails": { - "label": "Save thumbnails sent to generative AI for debugging purposes." - }, - "enabled_in_config": { - "label": "Keep track of original state of generative AI." - }, - "preferred_language": { - "label": "Preferred language for GenAI Response" - }, - "activity_context_prompt": { - "label": "Custom activity context prompt defining normal activity patterns for this property." - } - } - } - } - }, - "semantic_search": { - "label": "Semantic search configuration.", - "properties": { - "triggers": { - "label": "Trigger actions on tracked objects that match existing thumbnails or descriptions", - "properties": { - "enabled": { - "label": "Enable this trigger" - }, - "type": { - "label": "Type of trigger" - }, - "data": { - "label": "Trigger content (text phrase or image ID)" - }, - "threshold": { - "label": "Confidence score required to run the trigger" - }, - "actions": { - "label": "Actions to perform when trigger is matched" - } - } - } - } - }, - "snapshots": { - "label": "Snapshot configuration.", - "properties": { - "enabled": { - "label": "Snapshots enabled." - }, - "clean_copy": { - "label": "Create a clean copy of the snapshot image." - }, - "timestamp": { - "label": "Add a timestamp overlay on the snapshot." - }, - "bounding_box": { - "label": "Add a bounding box overlay on the snapshot." - }, - "crop": { - "label": "Crop the snapshot to the detected object." - }, - "required_zones": { - "label": "List of required zones to be entered in order to save a snapshot." - }, - "height": { - "label": "Snapshot image height." - }, - "retain": { - "label": "Snapshot retention.", - "properties": { - "default": { - "label": "Default retention period." - }, - "mode": { - "label": "Retain mode." - }, - "objects": { - "label": "Object retention period." - } - } - }, - "quality": { - "label": "Quality of the encoded jpeg (0-100)." - } - } - }, - "timestamp_style": { - "label": "Timestamp style configuration.", - "properties": { - "position": { - "label": "Timestamp position." - }, - "format": { - "label": "Timestamp format." - }, - "color": { - "label": "Timestamp color.", - "properties": { - "red": { - "label": "Red" - }, - "green": { - "label": "Green" - }, - "blue": { - "label": "Blue" - } - } - }, - "thickness": { - "label": "Timestamp thickness." - }, - "effect": { - "label": "Timestamp effect." - } - } - }, - "best_image_timeout": { - "label": "How long to wait for the image with the highest confidence score." - }, - "mqtt": { - "label": "MQTT configuration.", - "properties": { - "enabled": { - "label": "Send image over MQTT." - }, - "timestamp": { - "label": "Add timestamp to MQTT image." - }, - "bounding_box": { - "label": "Add bounding box to MQTT image." - }, - "crop": { - "label": "Crop MQTT image to detected object." - }, - "height": { - "label": "MQTT image height." - }, - "required_zones": { - "label": "List of required zones to be entered in order to send the image." - }, - "quality": { - "label": "Quality of the encoded jpeg (0-100)." - } - } - }, - "notifications": { - "label": "Notifications configuration.", - "properties": { - "enabled": { - "label": "Enable notifications" - }, - "email": { - "label": "Email required for push." - }, - "cooldown": { - "label": "Cooldown period for notifications (time in seconds)." - }, - "enabled_in_config": { - "label": "Keep track of original state of notifications." - } - } - }, - "onvif": { - "label": "Camera Onvif Configuration.", - "properties": { - "host": { - "label": "Onvif Host" - }, - "port": { - "label": "Onvif Port" - }, - "user": { - "label": "Onvif Username" - }, - "password": { - "label": "Onvif Password" - }, - "tls_insecure": { - "label": "Onvif Disable TLS verification" - }, - "autotracking": { - "label": "PTZ auto tracking config.", - "properties": { - "enabled": { - "label": "Enable PTZ object autotracking." - }, - "calibrate_on_startup": { - "label": "Perform a camera calibration when Frigate starts." - }, - "zooming": { - "label": "Autotracker zooming mode." - }, - "zoom_factor": { - "label": "Zooming factor (0.1-0.75)." - }, - "track": { - "label": "Objects to track." - }, - "required_zones": { - "label": "List of required zones to be entered in order to begin autotracking." - }, - "return_preset": { - "label": "Name of camera preset to return to when object tracking is over." - }, - "timeout": { - "label": "Seconds to delay before returning to preset." - }, - "movement_weights": { - "label": "Internal value used for PTZ movements based on the speed of your camera's motor." - }, - "enabled_in_config": { - "label": "Keep track of original state of autotracking." - } - } - }, - "ignore_time_mismatch": { - "label": "Onvif Ignore Time Synchronization Mismatch Between Camera and Server" - } - } - }, - "type": { - "label": "Camera Type" - }, - "ui": { - "label": "Camera UI Modifications.", - "properties": { - "order": { - "label": "Order of camera in UI." - }, - "dashboard": { - "label": "Show this camera in Frigate dashboard UI." - } - } - }, - "webui_url": { - "label": "URL to visit the camera directly from system page" - }, - "zones": { - "label": "Zone configuration.", - "properties": { - "filters": { - "label": "Zone filters.", - "properties": { - "min_area": { - "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." - }, - "max_area": { - "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." - }, - "min_ratio": { - "label": "Minimum ratio of bounding box's width/height for object to be counted." - }, - "max_ratio": { - "label": "Maximum ratio of bounding box's width/height for object to be counted." - }, - "threshold": { - "label": "Average detection confidence threshold for object to be counted." - }, - "min_score": { - "label": "Minimum detection confidence for object to be counted." - }, - "mask": { - "label": "Detection area polygon mask for this filter configuration." - } - } - }, - "coordinates": { - "label": "Coordinates polygon for the defined zone." - }, - "distances": { - "label": "Real-world distances for the sides of quadrilateral for the defined zone." - }, - "inertia": { - "label": "Number of consecutive frames required for object to be considered present in the zone." - }, - "loitering_time": { - "label": "Number of seconds that an object must loiter to be considered in the zone." - }, - "speed_threshold": { - "label": "Minimum speed value for an object to be considered in the zone." - }, - "objects": { - "label": "List of objects that can trigger the zone." - } + "preview": { + "label": "Recording Preview Config", + "quality": { + "label": "Quality of recording preview." } }, "enabled_in_config": { - "label": "Keep track of original state of camera." + "label": "Keep track of original state of recording." } + }, + "review": { + "label": "Review configuration.", + "alerts": { + "label": "Review alerts config.", + "enabled": { + "label": "Enable alerts." + }, + "labels": { + "label": "Labels to create alerts for." + }, + "required_zones": { + "label": "List of required zones to be entered in order to save the event as an alert." + }, + "enabled_in_config": { + "label": "Keep track of original state of alerts." + }, + "cutoff_time": { + "label": "Time to cutoff alerts after no alert-causing activity has occurred." + } + }, + "detections": { + "label": "Review detections config.", + "enabled": { + "label": "Enable detections." + }, + "labels": { + "label": "Labels to create detections for." + }, + "required_zones": { + "label": "List of required zones to be entered in order to save the event as a detection." + }, + "cutoff_time": { + "label": "Time to cutoff detection after no detection-causing activity has occurred." + }, + "enabled_in_config": { + "label": "Keep track of original state of detections." + } + }, + "genai": { + "label": "Review description genai config.", + "enabled": { + "label": "Enable GenAI descriptions for review items." + }, + "alerts": { + "label": "Enable GenAI for alerts." + }, + "detections": { + "label": "Enable GenAI for detections." + }, + "image_source": { + "label": "Image source for review descriptions." + }, + "additional_concerns": { + "label": "Additional concerns that GenAI should make note of on this camera." + }, + "debug_save_thumbnails": { + "label": "Save thumbnails sent to generative AI for debugging purposes." + }, + "enabled_in_config": { + "label": "Keep track of original state of generative AI." + }, + "preferred_language": { + "label": "Preferred language for GenAI Response" + }, + "activity_context_prompt": { + "label": "Custom activity context prompt defining normal and suspicious activity patterns for this property." + } + } + }, + "semantic_search": { + "label": "Semantic search configuration.", + "triggers": { + "label": "Trigger actions on tracked objects that match existing thumbnails or descriptions", + "friendly_name": { + "label": "Trigger friendly name used in the Frigate UI." + }, + "enabled": { + "label": "Enable this trigger" + }, + "type": { + "label": "Type of trigger" + }, + "data": { + "label": "Trigger content (text phrase or image ID)" + }, + "threshold": { + "label": "Confidence score required to run the trigger" + }, + "actions": { + "label": "Actions to perform when trigger is matched" + } + } + }, + "snapshots": { + "label": "Snapshot configuration.", + "enabled": { + "label": "Snapshots enabled." + }, + "clean_copy": { + "label": "Create a clean copy of the snapshot image." + }, + "timestamp": { + "label": "Add a timestamp overlay on the snapshot." + }, + "bounding_box": { + "label": "Add a bounding box overlay on the snapshot." + }, + "crop": { + "label": "Crop the snapshot to the detected object." + }, + "required_zones": { + "label": "List of required zones to be entered in order to save a snapshot." + }, + "height": { + "label": "Snapshot image height." + }, + "retain": { + "label": "Snapshot retention.", + "default": { + "label": "Default retention period." + }, + "mode": { + "label": "Retain mode." + }, + "objects": { + "label": "Object retention period." + } + }, + "quality": { + "label": "Quality of the encoded jpeg (0-100)." + } + }, + "timestamp_style": { + "label": "Timestamp style configuration.", + "position": { + "label": "Timestamp position." + }, + "format": { + "label": "Timestamp format." + }, + "color": { + "label": "Timestamp color.", + "red": { + "label": "Red" + }, + "green": { + "label": "Green" + }, + "blue": { + "label": "Blue" + } + }, + "thickness": { + "label": "Timestamp thickness." + }, + "effect": { + "label": "Timestamp effect." + } + }, + "best_image_timeout": { + "label": "How long to wait for the image with the highest confidence score." + }, + "mqtt": { + "label": "MQTT configuration.", + "enabled": { + "label": "Send image over MQTT." + }, + "timestamp": { + "label": "Add timestamp to MQTT image." + }, + "bounding_box": { + "label": "Add bounding box to MQTT image." + }, + "crop": { + "label": "Crop MQTT image to detected object." + }, + "height": { + "label": "MQTT image height." + }, + "required_zones": { + "label": "List of required zones to be entered in order to send the image." + }, + "quality": { + "label": "Quality of the encoded jpeg (0-100)." + } + }, + "notifications": { + "label": "Notifications configuration.", + "enabled": { + "label": "Enable notifications" + }, + "email": { + "label": "Email required for push." + }, + "cooldown": { + "label": "Cooldown period for notifications (time in seconds)." + }, + "enabled_in_config": { + "label": "Keep track of original state of notifications." + } + }, + "onvif": { + "label": "Camera Onvif Configuration.", + "host": { + "label": "Onvif Host" + }, + "port": { + "label": "Onvif Port" + }, + "user": { + "label": "Onvif Username" + }, + "password": { + "label": "Onvif Password" + }, + "tls_insecure": { + "label": "Onvif Disable TLS verification" + }, + "autotracking": { + "label": "PTZ auto tracking config.", + "enabled": { + "label": "Enable PTZ object autotracking." + }, + "calibrate_on_startup": { + "label": "Perform a camera calibration when Frigate starts." + }, + "zooming": { + "label": "Autotracker zooming mode." + }, + "zoom_factor": { + "label": "Zooming factor (0.1-0.75)." + }, + "track": { + "label": "Objects to track." + }, + "required_zones": { + "label": "List of required zones to be entered in order to begin autotracking." + }, + "return_preset": { + "label": "Name of camera preset to return to when object tracking is over." + }, + "timeout": { + "label": "Seconds to delay before returning to preset." + }, + "movement_weights": { + "label": "Internal value used for PTZ movements based on the speed of your camera's motor." + }, + "enabled_in_config": { + "label": "Keep track of original state of autotracking." + } + }, + "ignore_time_mismatch": { + "label": "Onvif Ignore Time Synchronization Mismatch Between Camera and Server" + } + }, + "type": { + "label": "Camera Type" + }, + "ui": { + "label": "Camera UI Modifications.", + "order": { + "label": "Order of camera in UI." + }, + "dashboard": { + "label": "Show this camera in Frigate dashboard UI." + } + }, + "webui_url": { + "label": "URL to visit the camera directly from system page" + }, + "zones": { + "label": "Zone configuration.", + "friendly_name": { + "label": "Zone friendly name used in the Frigate UI." + }, + "filters": { + "label": "Zone filters.", + "min_area": { + "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." + }, + "max_area": { + "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." + }, + "min_ratio": { + "label": "Minimum ratio of bounding box's width/height for object to be counted." + }, + "max_ratio": { + "label": "Maximum ratio of bounding box's width/height for object to be counted." + }, + "threshold": { + "label": "Average detection confidence threshold for object to be counted." + }, + "min_score": { + "label": "Minimum detection confidence for object to be counted." + }, + "mask": { + "label": "Detection area polygon mask for this filter configuration." + } + }, + "coordinates": { + "label": "Coordinates polygon for the defined zone." + }, + "distances": { + "label": "Real-world distances for the sides of quadrilateral for the defined zone." + }, + "inertia": { + "label": "Number of consecutive frames required for object to be considered present in the zone." + }, + "loitering_time": { + "label": "Number of seconds that an object must loiter to be considered in the zone." + }, + "speed_threshold": { + "label": "Minimum speed value for an object to be considered in the zone." + }, + "objects": { + "label": "List of objects that can trigger the zone." + } + }, + "enabled_in_config": { + "label": "Keep track of original state of camera." } -} +} \ No newline at end of file diff --git a/web/public/locales/en/config/classification.json b/web/public/locales/en/config/classification.json index e8014b2fa..a93b620f4 100644 --- a/web/public/locales/en/config/classification.json +++ b/web/public/locales/en/config/classification.json @@ -1,57 +1,48 @@ { "label": "Object classification config.", - "properties": { - "bird": { - "label": "Bird classification config.", - "properties": { - "enabled": { - "label": "Enable bird classification." - }, - "threshold": { - "label": "Minimum classification score required to be considered a match." - } + "bird": { + "label": "Bird classification config.", + "enabled": { + "label": "Enable bird classification." + }, + "threshold": { + "label": "Minimum classification score required to be considered a match." + } + }, + "custom": { + "label": "Custom Classification Model Configs.", + "enabled": { + "label": "Enable running the model." + }, + "name": { + "label": "Name of classification model." + }, + "threshold": { + "label": "Classification score threshold to change the state." + }, + "save_attempts": { + "label": "Number of classification attempts to save in the recent classifications tab. If not specified, defaults to 200 for object classification and 100 for state classification." + }, + "object_config": { + "objects": { + "label": "Object types to classify." + }, + "classification_type": { + "label": "Type of classification that is applied." } }, - "custom": { - "label": "Custom Classification Model Configs.", - "properties": { - "enabled": { - "label": "Enable running the model." - }, - "name": { - "label": "Name of classification model." - }, - "threshold": { - "label": "Classification score threshold to change the state." - }, - "object_config": { - "properties": { - "objects": { - "label": "Object types to classify." - }, - "classification_type": { - "label": "Type of classification that is applied." - } - } - }, - "state_config": { - "properties": { - "cameras": { - "label": "Cameras to run classification on.", - "properties": { - "crop": { - "label": "Crop of image frame on this camera to run classification on." - } - } - }, - "motion": { - "label": "If classification should be run when motion is detected in the crop." - }, - "interval": { - "label": "Interval to run classification on in seconds." - } - } + "state_config": { + "cameras": { + "label": "Cameras to run classification on.", + "crop": { + "label": "Crop of image frame on this camera to run classification on." } + }, + "motion": { + "label": "If classification should be run when motion is detected in the crop." + }, + "interval": { + "label": "Interval to run classification on in seconds." } } } diff --git a/web/public/locales/en/config/database.json b/web/public/locales/en/config/database.json index ece7ccbaa..3c58102ae 100644 --- a/web/public/locales/en/config/database.json +++ b/web/public/locales/en/config/database.json @@ -1,8 +1,6 @@ { "label": "Database configuration.", - "properties": { - "path": { - "label": "Database path." - } + "path": { + "label": "Database path." } } \ No newline at end of file diff --git a/web/public/locales/en/config/detect.json b/web/public/locales/en/config/detect.json index 9e1b59313..d04a67149 100644 --- a/web/public/locales/en/config/detect.json +++ b/web/public/locales/en/config/detect.json @@ -1,51 +1,45 @@ { "label": "Global object tracking configuration.", - "properties": { - "enabled": { - "label": "Detection Enabled." + "enabled": { + "label": "Detection Enabled." + }, + "height": { + "label": "Height of the stream for the detect role." + }, + "width": { + "label": "Width of the stream for the detect role." + }, + "fps": { + "label": "Number of frames per second to process through detection." + }, + "min_initialized": { + "label": "Minimum number of consecutive hits for an object to be initialized by the tracker." + }, + "max_disappeared": { + "label": "Maximum number of frames the object can disappear before detection ends." + }, + "stationary": { + "label": "Stationary objects config.", + "interval": { + "label": "Frame interval for checking stationary objects." }, - "height": { - "label": "Height of the stream for the detect role." + "threshold": { + "label": "Number of frames without a position change for an object to be considered stationary" }, - "width": { - "label": "Width of the stream for the detect role." - }, - "fps": { - "label": "Number of frames per second to process through detection." - }, - "min_initialized": { - "label": "Minimum number of consecutive hits for an object to be initialized by the tracker." - }, - "max_disappeared": { - "label": "Maximum number of frames the object can disappear before detection ends." - }, - "stationary": { - "label": "Stationary objects config.", - "properties": { - "interval": { - "label": "Frame interval for checking stationary objects." - }, - "threshold": { - "label": "Number of frames without a position change for an object to be considered stationary" - }, - "max_frames": { - "label": "Max frames for stationary objects.", - "properties": { - "default": { - "label": "Default max frames." - }, - "objects": { - "label": "Object specific max frames." - } - } - }, - "classifier": { - "label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary." - } + "max_frames": { + "label": "Max frames for stationary objects.", + "default": { + "label": "Default max frames." + }, + "objects": { + "label": "Object specific max frames." } }, - "annotation_offset": { - "label": "Milliseconds to offset detect annotations by." + "classifier": { + "label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary." } + }, + "annotation_offset": { + "label": "Milliseconds to offset detect annotations by." } } \ No newline at end of file diff --git a/web/public/locales/en/config/detectors.json b/web/public/locales/en/config/detectors.json index 1bd6fec70..7b4d318cb 100644 --- a/web/public/locales/en/config/detectors.json +++ b/web/public/locales/en/config/detectors.json @@ -1,14 +1,12 @@ { "label": "Detector hardware configuration.", - "properties": { - "type": { - "label": "Detector Type" - }, - "model": { - "label": "Detector specific model configuration." - }, - "model_path": { - "label": "Detector specific model path." - } + "type": { + "label": "Detector Type" + }, + "model": { + "label": "Detector specific model configuration." + }, + "model_path": { + "label": "Detector specific model path." } } \ No newline at end of file diff --git a/web/public/locales/en/config/face_recognition.json b/web/public/locales/en/config/face_recognition.json index 705d75468..02f706f20 100644 --- a/web/public/locales/en/config/face_recognition.json +++ b/web/public/locales/en/config/face_recognition.json @@ -1,36 +1,34 @@ { "label": "Face recognition config.", - "properties": { - "enabled": { - "label": "Enable face recognition." - }, - "model_size": { - "label": "The size of the embeddings model used." - }, - "unknown_score": { - "label": "Minimum face distance score required to be marked as a potential match." - }, - "detection_threshold": { - "label": "Minimum face detection score required to be considered a face." - }, - "recognition_threshold": { - "label": "Minimum face distance score required to be considered a match." - }, - "min_area": { - "label": "Min area of face box to consider running face recognition." - }, - "min_faces": { - "label": "Min face recognitions for the sub label to be applied to the person object." - }, - "save_attempts": { - "label": "Number of face attempts to save in the recent recognitions tab." - }, - "blur_confidence_filter": { - "label": "Apply blur quality filter to face confidence." - }, - "device": { - "label": "The device key to use for face recognition.", - "description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information" - } + "enabled": { + "label": "Enable face recognition." + }, + "model_size": { + "label": "The size of the embeddings model used." + }, + "unknown_score": { + "label": "Minimum face distance score required to be marked as a potential match." + }, + "detection_threshold": { + "label": "Minimum face detection score required to be considered a face." + }, + "recognition_threshold": { + "label": "Minimum face distance score required to be considered a match." + }, + "min_area": { + "label": "Min area of face box to consider running face recognition." + }, + "min_faces": { + "label": "Min face recognitions for the sub label to be applied to the person object." + }, + "save_attempts": { + "label": "Number of face attempts to save in the recent recognitions tab." + }, + "blur_confidence_filter": { + "label": "Apply blur quality filter to face confidence." + }, + "device": { + "label": "The device key to use for face recognition.", + "description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information" } } \ No newline at end of file diff --git a/web/public/locales/en/config/ffmpeg.json b/web/public/locales/en/config/ffmpeg.json index 570da5a35..f73e16d59 100644 --- a/web/public/locales/en/config/ffmpeg.json +++ b/web/public/locales/en/config/ffmpeg.json @@ -1,34 +1,33 @@ { "label": "Global FFmpeg configuration.", - "properties": { - "path": { - "label": "FFmpeg path" + "path": { + "label": "FFmpeg path" + }, + "global_args": { + "label": "Global FFmpeg arguments." + }, + "hwaccel_args": { + "label": "FFmpeg hardware acceleration arguments." + }, + "input_args": { + "label": "FFmpeg input arguments." + }, + "output_args": { + "label": "FFmpeg output arguments per role.", + "detect": { + "label": "Detect role FFmpeg output arguments." }, - "global_args": { - "label": "Global FFmpeg arguments." - }, - "hwaccel_args": { - "label": "FFmpeg hardware acceleration arguments." - }, - "input_args": { - "label": "FFmpeg input arguments." - }, - "output_args": { - "label": "FFmpeg output arguments per role.", - "properties": { - "detect": { - "label": "Detect role FFmpeg output arguments." - }, - "record": { - "label": "Record role FFmpeg output arguments." - } - } - }, - "retry_interval": { - "label": "Time in seconds to wait before FFmpeg retries connecting to the camera." - }, - "apple_compatibility": { - "label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players." + "record": { + "label": "Record role FFmpeg output arguments." } + }, + "retry_interval": { + "label": "Time in seconds to wait before FFmpeg retries connecting to the camera." + }, + "apple_compatibility": { + "label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players." + }, + "gpu": { + "label": "GPU index to use for hardware acceleration." } } \ No newline at end of file diff --git a/web/public/locales/en/config/live.json b/web/public/locales/en/config/live.json index 362170137..41d2b59c2 100644 --- a/web/public/locales/en/config/live.json +++ b/web/public/locales/en/config/live.json @@ -1,14 +1,12 @@ { "label": "Live playback settings.", - "properties": { - "streams": { - "label": "Friendly names and restream names to use for live view." - }, - "height": { - "label": "Live camera view height" - }, - "quality": { - "label": "Live camera view quality" - } + "streams": { + "label": "Friendly names and restream names to use for live view." + }, + "height": { + "label": "Live camera view height" + }, + "quality": { + "label": "Live camera view quality" } } \ No newline at end of file diff --git a/web/public/locales/en/config/logger.json b/web/public/locales/en/config/logger.json index 3d51786a7..db8bcec23 100644 --- a/web/public/locales/en/config/logger.json +++ b/web/public/locales/en/config/logger.json @@ -1,11 +1,9 @@ { "label": "Logging configuration.", - "properties": { - "default": { - "label": "Default logging level." - }, - "logs": { - "label": "Log level for specified processes." - } + "default": { + "label": "Default logging level." + }, + "logs": { + "label": "Log level for specified processes." } } \ No newline at end of file diff --git a/web/public/locales/en/config/lpr.json b/web/public/locales/en/config/lpr.json index 951d1f8f6..900fe6e51 100644 --- a/web/public/locales/en/config/lpr.json +++ b/web/public/locales/en/config/lpr.json @@ -1,45 +1,43 @@ { "label": "License Plate recognition config.", - "properties": { - "enabled": { - "label": "Enable license plate recognition." - }, - "model_size": { - "label": "The size of the embeddings model used." - }, - "detection_threshold": { - "label": "License plate object confidence score required to begin running recognition." - }, - "min_area": { - "label": "Minimum area of license plate to begin running recognition." - }, - "recognition_threshold": { - "label": "Recognition confidence score required to add the plate to the object as a sub label." - }, - "min_plate_length": { - "label": "Minimum number of characters a license plate must have to be added to the object as a sub label." - }, - "format": { - "label": "Regular expression for the expected format of license plate." - }, - "match_distance": { - "label": "Allow this number of missing/incorrect characters to still cause a detected plate to match a known plate." - }, - "known_plates": { - "label": "Known plates to track (strings or regular expressions)." - }, - "enhancement": { - "label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition." - }, - "debug_save_plates": { - "label": "Save plates captured for LPR for debugging purposes." - }, - "device": { - "label": "The device key to use for LPR.", - "description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information" - }, - "replace_rules": { - "label": "List of regex replacement rules for normalizing detected plates. Each rule has 'pattern' and 'replacement'." - } + "enabled": { + "label": "Enable license plate recognition." + }, + "model_size": { + "label": "The size of the embeddings model used." + }, + "detection_threshold": { + "label": "License plate object confidence score required to begin running recognition." + }, + "min_area": { + "label": "Minimum area of license plate to begin running recognition." + }, + "recognition_threshold": { + "label": "Recognition confidence score required to add the plate to the object as a sub label." + }, + "min_plate_length": { + "label": "Minimum number of characters a license plate must have to be added to the object as a sub label." + }, + "format": { + "label": "Regular expression for the expected format of license plate." + }, + "match_distance": { + "label": "Allow this number of missing/incorrect characters to still cause a detected plate to match a known plate." + }, + "known_plates": { + "label": "Known plates to track (strings or regular expressions)." + }, + "enhancement": { + "label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition." + }, + "debug_save_plates": { + "label": "Save plates captured for LPR for debugging purposes." + }, + "device": { + "label": "The device key to use for LPR.", + "description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information" + }, + "replace_rules": { + "label": "List of regex replacement rules for normalizing detected plates. Each rule has 'pattern' and 'replacement'." } } \ No newline at end of file diff --git a/web/public/locales/en/config/model.json b/web/public/locales/en/config/model.json index 0bc2c1ddf..510b3d79c 100644 --- a/web/public/locales/en/config/model.json +++ b/web/public/locales/en/config/model.json @@ -1,35 +1,33 @@ { "label": "Detection model configuration.", - "properties": { - "path": { - "label": "Custom Object detection model path." - }, - "labelmap_path": { - "label": "Label map for custom object detector." - }, - "width": { - "label": "Object detection model input width." - }, - "height": { - "label": "Object detection model input height." - }, - "labelmap": { - "label": "Labelmap customization." - }, - "attributes_map": { - "label": "Map of object labels to their attribute labels." - }, - "input_tensor": { - "label": "Model Input Tensor Shape" - }, - "input_pixel_format": { - "label": "Model Input Pixel Color Format" - }, - "input_dtype": { - "label": "Model Input D Type" - }, - "model_type": { - "label": "Object Detection Model Type" - } + "path": { + "label": "Custom Object detection model path." + }, + "labelmap_path": { + "label": "Label map for custom object detector." + }, + "width": { + "label": "Object detection model input width." + }, + "height": { + "label": "Object detection model input height." + }, + "labelmap": { + "label": "Labelmap customization." + }, + "attributes_map": { + "label": "Map of object labels to their attribute labels." + }, + "input_tensor": { + "label": "Model Input Tensor Shape" + }, + "input_pixel_format": { + "label": "Model Input Pixel Color Format" + }, + "input_dtype": { + "label": "Model Input D Type" + }, + "model_type": { + "label": "Object Detection Model Type" } } \ No newline at end of file diff --git a/web/public/locales/en/config/mqtt.json b/web/public/locales/en/config/mqtt.json index d2625ac83..91502b75f 100644 --- a/web/public/locales/en/config/mqtt.json +++ b/web/public/locales/en/config/mqtt.json @@ -1,44 +1,42 @@ { "label": "MQTT configuration.", - "properties": { - "enabled": { - "label": "Enable MQTT Communication." - }, - "host": { - "label": "MQTT Host" - }, - "port": { - "label": "MQTT Port" - }, - "topic_prefix": { - "label": "MQTT Topic Prefix" - }, - "client_id": { - "label": "MQTT Client ID" - }, - "stats_interval": { - "label": "MQTT Camera Stats Interval" - }, - "user": { - "label": "MQTT Username" - }, - "password": { - "label": "MQTT Password" - }, - "tls_ca_certs": { - "label": "MQTT TLS CA Certificates" - }, - "tls_client_cert": { - "label": "MQTT TLS Client Certificate" - }, - "tls_client_key": { - "label": "MQTT TLS Client Key" - }, - "tls_insecure": { - "label": "MQTT TLS Insecure" - }, - "qos": { - "label": "MQTT QoS" - } + "enabled": { + "label": "Enable MQTT Communication." + }, + "host": { + "label": "MQTT Host" + }, + "port": { + "label": "MQTT Port" + }, + "topic_prefix": { + "label": "MQTT Topic Prefix" + }, + "client_id": { + "label": "MQTT Client ID" + }, + "stats_interval": { + "label": "MQTT Camera Stats Interval" + }, + "user": { + "label": "MQTT Username" + }, + "password": { + "label": "MQTT Password" + }, + "tls_ca_certs": { + "label": "MQTT TLS CA Certificates" + }, + "tls_client_cert": { + "label": "MQTT TLS Client Certificate" + }, + "tls_client_key": { + "label": "MQTT TLS Client Key" + }, + "tls_insecure": { + "label": "MQTT TLS Insecure" + }, + "qos": { + "label": "MQTT QoS" } } \ No newline at end of file diff --git a/web/public/locales/en/config/networking.json b/web/public/locales/en/config/networking.json index 592ea9477..e671075b7 100644 --- a/web/public/locales/en/config/networking.json +++ b/web/public/locales/en/config/networking.json @@ -1,13 +1,9 @@ { "label": "Networking configuration", - "properties": { - "ipv6": { - "label": "IPv6 configuration", - "properties": { - "enabled": { - "label": "Enable IPv6 for port 5000 and/or 8971" - } - } + "ipv6": { + "label": "IPv6 configuration", + "enabled": { + "label": "Enable IPv6 for port 5000 and/or 8971" }, "listen": { "label": "Listening ports configuration", diff --git a/web/public/locales/en/config/notifications.json b/web/public/locales/en/config/notifications.json index b529f10e0..0cab67ac7 100644 --- a/web/public/locales/en/config/notifications.json +++ b/web/public/locales/en/config/notifications.json @@ -1,17 +1,15 @@ { "label": "Global notification configuration.", - "properties": { - "enabled": { - "label": "Enable notifications" - }, - "email": { - "label": "Email required for push." - }, - "cooldown": { - "label": "Cooldown period for notifications (time in seconds)." - }, - "enabled_in_config": { - "label": "Keep track of original state of notifications." - } + "enabled": { + "label": "Enable notifications" + }, + "email": { + "label": "Email required for push." + }, + "cooldown": { + "label": "Cooldown period for notifications (time in seconds)." + }, + "enabled_in_config": { + "label": "Keep track of original state of notifications." } } \ No newline at end of file diff --git a/web/public/locales/en/config/objects.json b/web/public/locales/en/config/objects.json index f041672a0..5b7719d6f 100644 --- a/web/public/locales/en/config/objects.json +++ b/web/public/locales/en/config/objects.json @@ -1,77 +1,69 @@ { "label": "Global object configuration.", - "properties": { - "track": { - "label": "Objects to track." + "track": { + "label": "Objects to track." + }, + "filters": { + "label": "Object filters.", + "min_area": { + "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." }, - "filters": { - "label": "Object filters.", - "properties": { - "min_area": { - "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." - }, - "max_area": { - "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." - }, - "min_ratio": { - "label": "Minimum ratio of bounding box's width/height for object to be counted." - }, - "max_ratio": { - "label": "Maximum ratio of bounding box's width/height for object to be counted." - }, - "threshold": { - "label": "Average detection confidence threshold for object to be counted." - }, - "min_score": { - "label": "Minimum detection confidence for object to be counted." - }, - "mask": { - "label": "Detection area polygon mask for this filter configuration." - } - } + "max_area": { + "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)." + }, + "min_ratio": { + "label": "Minimum ratio of bounding box's width/height for object to be counted." + }, + "max_ratio": { + "label": "Maximum ratio of bounding box's width/height for object to be counted." + }, + "threshold": { + "label": "Average detection confidence threshold for object to be counted." + }, + "min_score": { + "label": "Minimum detection confidence for object to be counted." }, "mask": { - "label": "Object mask." + "label": "Detection area polygon mask for this filter configuration." + } + }, + "mask": { + "label": "Object mask." + }, + "genai": { + "label": "Config for using genai to analyze objects.", + "enabled": { + "label": "Enable GenAI for camera." }, - "genai": { - "label": "Config for using genai to analyze objects.", - "properties": { - "enabled": { - "label": "Enable GenAI for camera." - }, - "use_snapshot": { - "label": "Use snapshots for generating descriptions." - }, - "prompt": { - "label": "Default caption prompt." - }, - "object_prompts": { - "label": "Object specific prompts." - }, - "objects": { - "label": "List of objects to run generative AI for." - }, - "required_zones": { - "label": "List of required zones to be entered in order to run generative AI." - }, - "debug_save_thumbnails": { - "label": "Save thumbnails sent to generative AI for debugging purposes." - }, - "send_triggers": { - "label": "What triggers to use to send frames to generative AI for a tracked object.", - "properties": { - "tracked_object_end": { - "label": "Send once the object is no longer tracked." - }, - "after_significant_updates": { - "label": "Send an early request to generative AI when X frames accumulated." - } - } - }, - "enabled_in_config": { - "label": "Keep track of original state of generative AI." - } + "use_snapshot": { + "label": "Use snapshots for generating descriptions." + }, + "prompt": { + "label": "Default caption prompt." + }, + "object_prompts": { + "label": "Object specific prompts." + }, + "objects": { + "label": "List of objects to run generative AI for." + }, + "required_zones": { + "label": "List of required zones to be entered in order to run generative AI." + }, + "debug_save_thumbnails": { + "label": "Save thumbnails sent to generative AI for debugging purposes." + }, + "send_triggers": { + "label": "What triggers to use to send frames to generative AI for a tracked object.", + "tracked_object_end": { + "label": "Send once the object is no longer tracked." + }, + "after_significant_updates": { + "label": "Send an early request to generative AI when X frames accumulated." } + }, + "enabled_in_config": { + "label": "Keep track of original state of generative AI." } } } \ No newline at end of file diff --git a/web/public/locales/en/config/proxy.json b/web/public/locales/en/config/proxy.json index 732d6fafd..325b99a04 100644 --- a/web/public/locales/en/config/proxy.json +++ b/web/public/locales/en/config/proxy.json @@ -1,31 +1,27 @@ { "label": "Proxy configuration.", - "properties": { - "header_map": { - "label": "Header mapping definitions for proxy user passing.", - "properties": { - "user": { - "label": "Header name from upstream proxy to identify user." - }, - "role": { - "label": "Header name from upstream proxy to identify user role." - }, - "role_map": { - "label": "Mapping of Frigate roles to upstream group values. " - } - } + "header_map": { + "label": "Header mapping definitions for proxy user passing.", + "user": { + "label": "Header name from upstream proxy to identify user." }, - "logout_url": { - "label": "Redirect url for logging out with proxy." + "role": { + "label": "Header name from upstream proxy to identify user role." }, - "auth_secret": { - "label": "Secret value for proxy authentication." - }, - "default_role": { - "label": "Default role for proxy users." - }, - "separator": { - "label": "The character used to separate values in a mapped header." + "role_map": { + "label": "Mapping of Frigate roles to upstream group values. " } + }, + "logout_url": { + "label": "Redirect url for logging out with proxy." + }, + "auth_secret": { + "label": "Secret value for proxy authentication." + }, + "default_role": { + "label": "Default role for proxy users." + }, + "separator": { + "label": "The character used to separate values in a mapped header." } } \ No newline at end of file diff --git a/web/public/locales/en/config/record.json b/web/public/locales/en/config/record.json index 0c4a5fc42..9b443a886 100644 --- a/web/public/locales/en/config/record.json +++ b/web/public/locales/en/config/record.json @@ -1,90 +1,72 @@ { "label": "Global record configuration.", - "properties": { - "enabled": { - "label": "Enable record on all cameras." - }, - "expire_interval": { - "label": "Number of minutes to wait between cleanup runs." - }, - "continuous": { - "label": "Continuous recording retention settings.", - "properties": { - "days": { - "label": "Default retention period." - } - } - }, - "motion": { - "label": "Motion recording retention settings.", - "properties": { - "days": { - "label": "Default retention period." - } - } - }, - "detections": { - "label": "Detection specific retention settings.", - "properties": { - "pre_capture": { - "label": "Seconds to retain before event starts." - }, - "post_capture": { - "label": "Seconds to retain after event ends." - }, - "retain": { - "label": "Event retention settings.", - "properties": { - "days": { - "label": "Default retention period." - }, - "mode": { - "label": "Retain mode." - } - } - } - } - }, - "alerts": { - "label": "Alert specific retention settings.", - "properties": { - "pre_capture": { - "label": "Seconds to retain before event starts." - }, - "post_capture": { - "label": "Seconds to retain after event ends." - }, - "retain": { - "label": "Event retention settings.", - "properties": { - "days": { - "label": "Default retention period." - }, - "mode": { - "label": "Retain mode." - } - } - } - } - }, - "export": { - "label": "Recording Export Config", - "properties": { - "timelapse_args": { - "label": "Timelapse Args" - } - } - }, - "preview": { - "label": "Recording Preview Config", - "properties": { - "quality": { - "label": "Quality of recording preview." - } - } - }, - "enabled_in_config": { - "label": "Keep track of original state of recording." + "enabled": { + "label": "Enable record on all cameras." + }, + "expire_interval": { + "label": "Number of minutes to wait between cleanup runs." + }, + "continuous": { + "label": "Continuous recording retention settings.", + "days": { + "label": "Default retention period." } + }, + "motion": { + "label": "Motion recording retention settings.", + "days": { + "label": "Default retention period." + } + }, + "detections": { + "label": "Detection specific retention settings.", + "pre_capture": { + "label": "Seconds to retain before event starts." + }, + "post_capture": { + "label": "Seconds to retain after event ends." + }, + "retain": { + "label": "Event retention settings.", + "days": { + "label": "Default retention period." + }, + "mode": { + "label": "Retain mode." + } + } + }, + "alerts": { + "label": "Alert specific retention settings.", + "pre_capture": { + "label": "Seconds to retain before event starts." + }, + "post_capture": { + "label": "Seconds to retain after event ends." + }, + "retain": { + "label": "Event retention settings.", + "days": { + "label": "Default retention period." + }, + "mode": { + "label": "Retain mode." + } + } + }, + "export": { + "label": "Recording Export Config", + "hwaccel_args": { + "label": "Export-specific FFmpeg hardware acceleration arguments." + } + }, + "preview": { + "label": "Recording Preview Config", + "quality": { + "label": "Quality of recording preview." + } + }, + "enabled_in_config": { + "label": "Keep track of original state of recording." } -} +} \ No newline at end of file diff --git a/web/public/locales/en/config/review.json b/web/public/locales/en/config/review.json index dba83ee1c..e8902a404 100644 --- a/web/public/locales/en/config/review.json +++ b/web/public/locales/en/config/review.json @@ -1,74 +1,69 @@ { "label": "Review configuration.", - "properties": { + "alerts": { + "label": "Review alerts config.", + "enabled": { + "label": "Enable alerts." + }, + "labels": { + "label": "Labels to create alerts for." + }, + "required_zones": { + "label": "List of required zones to be entered in order to save the event as an alert." + }, + "enabled_in_config": { + "label": "Keep track of original state of alerts." + }, + "cutoff_time": { + "label": "Time to cutoff alerts after no alert-causing activity has occurred." + } + }, + "detections": { + "label": "Review detections config.", + "enabled": { + "label": "Enable detections." + }, + "labels": { + "label": "Labels to create detections for." + }, + "required_zones": { + "label": "List of required zones to be entered in order to save the event as a detection." + }, + "cutoff_time": { + "label": "Time to cutoff detection after no detection-causing activity has occurred." + }, + "enabled_in_config": { + "label": "Keep track of original state of detections." + } + }, + "genai": { + "label": "Review description genai config.", + "enabled": { + "label": "Enable GenAI descriptions for review items." + }, "alerts": { - "label": "Review alerts config.", - "properties": { - "enabled": { - "label": "Enable alerts." - }, - "labels": { - "label": "Labels to create alerts for." - }, - "required_zones": { - "label": "List of required zones to be entered in order to save the event as an alert." - }, - "enabled_in_config": { - "label": "Keep track of original state of alerts." - }, - "cutoff_time": { - "label": "Time to cutoff alerts after no alert-causing activity has occurred." - } - } + "label": "Enable GenAI for alerts." }, "detections": { - "label": "Review detections config.", - "properties": { - "enabled": { - "label": "Enable detections." - }, - "labels": { - "label": "Labels to create detections for." - }, - "required_zones": { - "label": "List of required zones to be entered in order to save the event as a detection." - }, - "cutoff_time": { - "label": "Time to cutoff detection after no detection-causing activity has occurred." - }, - "enabled_in_config": { - "label": "Keep track of original state of detections." - } - } + "label": "Enable GenAI for detections." }, - "genai": { - "label": "Review description genai config.", - "properties": { - "enabled": { - "label": "Enable GenAI descriptions for review items." - }, - "alerts": { - "label": "Enable GenAI for alerts." - }, - "detections": { - "label": "Enable GenAI for detections." - }, - "additional_concerns": { - "label": "Additional concerns that GenAI should make note of on this camera." - }, - "debug_save_thumbnails": { - "label": "Save thumbnails sent to generative AI for debugging purposes." - }, - "enabled_in_config": { - "label": "Keep track of original state of generative AI." - }, - "preferred_language": { - "label": "Preferred language for GenAI Response" - }, - "activity_context_prompt": { - "label": "Custom activity context prompt defining normal activity patterns for this property." - } - } + "image_source": { + "label": "Image source for review descriptions." + }, + "additional_concerns": { + "label": "Additional concerns that GenAI should make note of on this camera." + }, + "debug_save_thumbnails": { + "label": "Save thumbnails sent to generative AI for debugging purposes." + }, + "enabled_in_config": { + "label": "Keep track of original state of generative AI." + }, + "preferred_language": { + "label": "Preferred language for GenAI Response" + }, + "activity_context_prompt": { + "label": "Custom activity context prompt defining normal and suspicious activity patterns for this property." } } -} +} \ No newline at end of file diff --git a/web/public/locales/en/config/semantic_search.json b/web/public/locales/en/config/semantic_search.json index 2c46640bb..d04a1534a 100644 --- a/web/public/locales/en/config/semantic_search.json +++ b/web/public/locales/en/config/semantic_search.json @@ -1,21 +1,19 @@ { "label": "Semantic search configuration.", - "properties": { - "enabled": { - "label": "Enable semantic search." - }, - "reindex": { - "label": "Reindex all tracked objects on startup." - }, - "model": { - "label": "The CLIP model to use for semantic search." - }, - "model_size": { - "label": "The size of the embeddings model used." - }, - "device": { - "label": "The device key to use for semantic search.", - "description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information" - } + "enabled": { + "label": "Enable semantic search." + }, + "reindex": { + "label": "Reindex all tracked objects on startup." + }, + "model": { + "label": "The CLIP model to use for semantic search." + }, + "model_size": { + "label": "The size of the embeddings model used." + }, + "device": { + "label": "The device key to use for semantic search.", + "description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information" } } \ No newline at end of file diff --git a/web/public/locales/en/config/snapshots.json b/web/public/locales/en/config/snapshots.json index a6336140e..109e34b06 100644 --- a/web/public/locales/en/config/snapshots.json +++ b/web/public/locales/en/config/snapshots.json @@ -1,43 +1,39 @@ { "label": "Global snapshots configuration.", - "properties": { - "enabled": { - "label": "Snapshots enabled." + "enabled": { + "label": "Snapshots enabled." + }, + "clean_copy": { + "label": "Create a clean copy of the snapshot image." + }, + "timestamp": { + "label": "Add a timestamp overlay on the snapshot." + }, + "bounding_box": { + "label": "Add a bounding box overlay on the snapshot." + }, + "crop": { + "label": "Crop the snapshot to the detected object." + }, + "required_zones": { + "label": "List of required zones to be entered in order to save a snapshot." + }, + "height": { + "label": "Snapshot image height." + }, + "retain": { + "label": "Snapshot retention.", + "default": { + "label": "Default retention period." }, - "clean_copy": { - "label": "Create a clean copy of the snapshot image." + "mode": { + "label": "Retain mode." }, - "timestamp": { - "label": "Add a timestamp overlay on the snapshot." - }, - "bounding_box": { - "label": "Add a bounding box overlay on the snapshot." - }, - "crop": { - "label": "Crop the snapshot to the detected object." - }, - "required_zones": { - "label": "List of required zones to be entered in order to save a snapshot." - }, - "height": { - "label": "Snapshot image height." - }, - "retain": { - "label": "Snapshot retention.", - "properties": { - "default": { - "label": "Default retention period." - }, - "mode": { - "label": "Retain mode." - }, - "objects": { - "label": "Object retention period." - } - } - }, - "quality": { - "label": "Quality of the encoded jpeg (0-100)." + "objects": { + "label": "Object retention period." } + }, + "quality": { + "label": "Quality of the encoded jpeg (0-100)." } } \ No newline at end of file diff --git a/web/public/locales/en/config/telemetry.json b/web/public/locales/en/config/telemetry.json index 802ced2a0..826451518 100644 --- a/web/public/locales/en/config/telemetry.json +++ b/web/public/locales/en/config/telemetry.json @@ -1,28 +1,24 @@ { "label": "Telemetry configuration.", - "properties": { - "network_interfaces": { - "label": "Enabled network interfaces for bandwidth calculation." + "network_interfaces": { + "label": "Enabled network interfaces for bandwidth calculation." + }, + "stats": { + "label": "System Stats Configuration", + "amd_gpu_stats": { + "label": "Enable AMD GPU stats." }, - "stats": { - "label": "System Stats Configuration", - "properties": { - "amd_gpu_stats": { - "label": "Enable AMD GPU stats." - }, - "intel_gpu_stats": { - "label": "Enable Intel GPU stats." - }, - "network_bandwidth": { - "label": "Enable network bandwidth for ffmpeg processes." - }, - "intel_gpu_device": { - "label": "Define the device to use when gathering SR-IOV stats." - } - } + "intel_gpu_stats": { + "label": "Enable Intel GPU stats." }, - "version_check": { - "label": "Enable latest version check." + "network_bandwidth": { + "label": "Enable network bandwidth for ffmpeg processes." + }, + "intel_gpu_device": { + "label": "Define the device to use when gathering SR-IOV stats." } + }, + "version_check": { + "label": "Enable latest version check." } } \ No newline at end of file diff --git a/web/public/locales/en/config/timestamp_style.json b/web/public/locales/en/config/timestamp_style.json index 6a3119423..882fc1896 100644 --- a/web/public/locales/en/config/timestamp_style.json +++ b/web/public/locales/en/config/timestamp_style.json @@ -1,31 +1,27 @@ { "label": "Global timestamp style configuration.", - "properties": { - "position": { - "label": "Timestamp position." + "position": { + "label": "Timestamp position." + }, + "format": { + "label": "Timestamp format." + }, + "color": { + "label": "Timestamp color.", + "red": { + "label": "Red" }, - "format": { - "label": "Timestamp format." + "green": { + "label": "Green" }, - "color": { - "label": "Timestamp color.", - "properties": { - "red": { - "label": "Red" - }, - "green": { - "label": "Green" - }, - "blue": { - "label": "Blue" - } - } - }, - "thickness": { - "label": "Timestamp thickness." - }, - "effect": { - "label": "Timestamp effect." + "blue": { + "label": "Blue" } + }, + "thickness": { + "label": "Timestamp thickness." + }, + "effect": { + "label": "Timestamp effect." } } \ No newline at end of file diff --git a/web/public/locales/en/config/tls.json b/web/public/locales/en/config/tls.json index 58493ff40..78130267c 100644 --- a/web/public/locales/en/config/tls.json +++ b/web/public/locales/en/config/tls.json @@ -1,8 +1,6 @@ { "label": "TLS configuration.", - "properties": { - "enabled": { - "label": "Enable TLS for port 8971" - } + "enabled": { + "label": "Enable TLS for port 8971" } } \ No newline at end of file diff --git a/web/public/locales/en/config/ui.json b/web/public/locales/en/config/ui.json index cdd91cb53..16ffbb49e 100644 --- a/web/public/locales/en/config/ui.json +++ b/web/public/locales/en/config/ui.json @@ -1,20 +1,18 @@ { "label": "UI configuration.", - "properties": { - "timezone": { - "label": "Override UI timezone." - }, - "time_format": { - "label": "Override UI time format." - }, - "date_style": { - "label": "Override UI dateStyle." - }, - "time_style": { - "label": "Override UI timeStyle." - }, - "unit_system": { - "label": "The unit system to use for measurements." - } + "timezone": { + "label": "Override UI timezone." + }, + "time_format": { + "label": "Override UI time format." + }, + "date_style": { + "label": "Override UI dateStyle." + }, + "time_style": { + "label": "Override UI timeStyle." + }, + "unit_system": { + "label": "The unit system to use for measurements." } -} +} \ No newline at end of file diff --git a/web/public/locales/en/views/settings.json b/web/public/locales/en/views/settings.json index e39db7940..d7e6a7caa 100644 --- a/web/public/locales/en/views/settings.json +++ b/web/public/locales/en/views/settings.json @@ -1266,10 +1266,12 @@ "error": "Failed to save camera settings" } }, - "common": { - "overridden": "Overridden", - "resetToGlobal": "Reset to Global", - "save": "Save", - "cancel": "Cancel" - } + "toast": { + "success": "Settings saved successfully", + "error": "Failed to save settings", + "validationError": "Validation failed: {{message}}", + "resetSuccess": "Reset to global defaults", + "resetError": "Failed to reset settings" + }, + "unsavedChanges": "You have unsaved changes" }