diff --git a/web/public/locales/en/components/dialog.json b/web/public/locales/en/components/dialog.json
index 5d185d289..a18d20baf 100644
--- a/web/public/locales/en/components/dialog.json
+++ b/web/public/locales/en/components/dialog.json
@@ -15,15 +15,11 @@
"desc": "Objects in locations you want to avoid are not false positives. Submitting them as false positives will confuse the model."
},
"review": {
- "true": {
+ "question": {
"label": "Confirm this label for Frigate Plus",
- "true_one": "This is a {{label}}",
- "true_other": "This is an {{label}}"
- },
- "false": {
- "label": "Do not confirm this label for Frigate Plus",
- "false_one": "This is not a {{label}}",
- "false_other": "This is not an {{label}}"
+ "ask_a": "Is this object a {{label}}?",
+ "ask_an": "Is this object an {{label}}?",
+ "ask_full": "Is this object a {{untranslatedLabel}} ({{translatedLabel}})?"
},
"state": {
"submitted": "Submitted"
diff --git a/web/public/locales/en/views/search.json b/web/public/locales/en/views/search.json
index 8d8e878a8..a085a2a14 100644
--- a/web/public/locales/en/views/search.json
+++ b/web/public/locales/en/views/search.json
@@ -46,8 +46,13 @@
"title": "How to use text filters",
"desc": {
"text": "Filters help you narrow down your search results. Here's how to use them in the input field:",
- "step": "
Type a filter name followed by a colon (e.g., \"cameras:\").
Select a value from the suggestions or type your own.
Use multiple filters by adding them one after another with a space in between.
Date filters (before: and after:) use {{DateFormat}} format.
Time range filter uses {{exampleTime}} format.
Remove filters by clicking the 'x' next to them.
",
- "example": "Example: cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM "
+ "step1": "Type a filter key name followed by a colon (e.g., \"cameras:\").",
+ "step2": "Select a value from the suggestions or type your own.",
+ "step3": "Use multiple filters by adding them one after another with a space in between.",
+ "step4": "Date filters (before: and after:) use {{DateFormat}} format.",
+ "step5": "Time range filter uses {{exampleTime}} format.",
+ "step6": "Remove filters by clicking the 'x' next to them.",
+ "exampleLabel": "Example:"
}
},
"header": {
diff --git a/web/public/locales/en/views/settings.json b/web/public/locales/en/views/settings.json
index 9f9ced4d8..a76c09254 100644
--- a/web/public/locales/en/views/settings.json
+++ b/web/public/locales/en/views/settings.json
@@ -385,12 +385,12 @@
"motion": {
"title": "Motion boxes",
"desc": "Show boxes around areas where motion is detected",
- "tips": "
Motion Boxes
Red boxes will be overlaid on areas of the frame where motion is currently being detected
"
+ "tips": "
Motion Boxes
Red boxes will be overlaid on areas of the frame where motion is currently being detected
"
},
"regions": {
"title": "Regions",
"desc": "Show a box of the region of interest sent to the object detector",
- "tips": "
Region Boxes
Bright green boxes will be overlaid on areas of interest in the frame that are being sent to the object detector.
"
+ "tips": "
Region Boxes
Bright green boxes will be overlaid on areas of interest in the frame that are being sent to the object detector.
"
},
"objectShapeFilterDrawing": {
"title": "Object Shape Filter Drawing",
@@ -474,7 +474,7 @@
"deleteUser": {
"title": "Delete User",
"desc": "This action cannot be undone. This will permanently delete the user account and remove all associated data.",
- "warn": "Are you sure you want to delete {{username}}?"
+ "warn": "Are you sure you want to delete"
},
"passwordSetting": {
"updatePassword": "Update Password for {{username}}",
@@ -483,8 +483,14 @@
},
"changeRole": {
"title": "Change User Role",
- "desc": "Update permissions for {{username}}",
- "roleInfo": "
Select the appropriate role for this user:
• Admin: Full access to all features.
• Viewer: Limited to Live dashboards, Review, Explore, and Exports only.
"
+ "desc": "Update permissions for",
+ "roleInfo": {
+ "intro": "Select the appropriate role for this user:",
+ "admin": "Admin",
+ "adminDesc": "Full access to all features.",
+ "viewer": "Viewer",
+ "viewerDesc": "Limited to Live dashboards, Review, Explore, and Exports only."
+ }
}
}
},
diff --git a/web/public/locales/nb_NO/audio.json b/web/public/locales/nb-NO/audio.json
similarity index 100%
rename from web/public/locales/nb_NO/audio.json
rename to web/public/locales/nb-NO/audio.json
diff --git a/web/public/locales/nb_NO/components/auth.json b/web/public/locales/nb-NO/components/auth.json
similarity index 100%
rename from web/public/locales/nb_NO/components/auth.json
rename to web/public/locales/nb-NO/components/auth.json
diff --git a/web/public/locales/nb_NO/components/icons.json b/web/public/locales/nb-NO/components/icons.json
similarity index 100%
rename from web/public/locales/nb_NO/components/icons.json
rename to web/public/locales/nb-NO/components/icons.json
diff --git a/web/public/locales/nb_NO/components/input.json b/web/public/locales/nb-NO/components/input.json
similarity index 100%
rename from web/public/locales/nb_NO/components/input.json
rename to web/public/locales/nb-NO/components/input.json
diff --git a/web/public/locales/nb_NO/objects.json b/web/public/locales/nb-NO/objects.json
similarity index 100%
rename from web/public/locales/nb_NO/objects.json
rename to web/public/locales/nb-NO/objects.json
diff --git a/web/public/locales/nb_NO/views/configEditor.json b/web/public/locales/nb-NO/views/configEditor.json
similarity index 100%
rename from web/public/locales/nb_NO/views/configEditor.json
rename to web/public/locales/nb-NO/views/configEditor.json
diff --git a/web/public/locales/nb_NO/views/events.json b/web/public/locales/nb-NO/views/events.json
similarity index 100%
rename from web/public/locales/nb_NO/views/events.json
rename to web/public/locales/nb-NO/views/events.json
diff --git a/web/public/locales/nb_NO/views/recording.json b/web/public/locales/nb-NO/views/recording.json
similarity index 100%
rename from web/public/locales/nb_NO/views/recording.json
rename to web/public/locales/nb-NO/views/recording.json
diff --git a/web/src/components/input/InputWithTags.tsx b/web/src/components/input/InputWithTags.tsx
index 13977b8a7..4c5e9ab8b 100644
--- a/web/src/components/input/InputWithTags.tsx
+++ b/web/src/components/input/InputWithTags.tsx
@@ -51,7 +51,7 @@ import { toast } from "sonner";
import useSWR from "swr";
import { FrigateConfig } from "@/types/frigateConfig";
import { MdImageSearch } from "react-icons/md";
-import { Trans, useTranslation } from "react-i18next";
+import { useTranslation } from "react-i18next";
type InputWithTagsProps = {
inputFocused: boolean;
@@ -729,20 +729,31 @@ export default function InputWithTags({