fix i18n keys

This commit is contained in:
Josh Hawkins 2026-02-04 12:18:27 -06:00
parent 5841c827f7
commit 4b950723bc
9 changed files with 76 additions and 26 deletions

View File

@ -115,6 +115,7 @@
"internalID": "The Internal ID Frigate uses in the configuration and database" "internalID": "The Internal ID Frigate uses in the configuration and database"
}, },
"button": { "button": {
"add": "Add",
"apply": "Apply", "apply": "Apply",
"reset": "Reset", "reset": "Reset",
"undo": "Undo", "undo": "Undo",

View File

@ -1,28 +1,68 @@
{ {
"audio": { "audio": {
"detection": "Detection", "global": {
"sensitivity": "Sensitivity" "detection": "Detection",
"sensitivity": "Sensitivity"
},
"cameras": {
"detection": "Detection",
"sensitivity": "Sensitivity"
}
}, },
"timestamp_style": { "timestamp_style": {
"appearance": "Appearance" "global": {
"appearance": "Appearance"
},
"cameras": {
"appearance": "Appearance"
}
}, },
"motion": { "motion": {
"sensitivity": "Sensitivity", "global": {
"algorithm": "Algorithm" "sensitivity": "Sensitivity",
"algorithm": "Algorithm"
},
"cameras": {
"sensitivity": "Sensitivity",
"algorithm": "Algorithm"
}
}, },
"snapshots": { "snapshots": {
"display": "Display" "global": {
"display": "Display"
},
"cameras": {
"display": "Display"
}
}, },
"detect": { "detect": {
"resolution": "Resolution", "global": {
"tracking": "Tracking" "resolution": "Resolution",
"tracking": "Tracking!!!"
},
"cameras": {
"resolution": "Resolution",
"tracking": "Tracking!!!"
}
}, },
"objects": { "objects": {
"tracking": "Tracking", "global": {
"filtering": "Filtering" "tracking": "Tracking",
"filtering": "Filtering"
},
"cameras": {
"tracking": "Tracking",
"filtering": "Filtering"
}
}, },
"record": { "record": {
"retention": "Retention", "global": {
"events": "Events" "retention": "Retention",
"events": "Events"
},
"cameras": {
"retention": "Retention",
"events": "Events"
}
} }
} }

View File

@ -1244,8 +1244,12 @@
"objects": { "objects": {
"title": "Object Settings" "title": "Object Settings"
}, },
"audioLabels": {
"summary": "{{count}} audio labels selected",
"empty": "No audio labels available"
},
"objectLabels": { "objectLabels": {
"summary": "{{count}} selected", "summary": "{{count}} object types selected",
"empty": "No object labels available" "empty": "No object labels available"
}, },
"filters": { "filters": {

View File

@ -193,7 +193,7 @@ export default function CameraReviewClassification({
<> <>
<div className="mb-2"> <div className="mb-2">
<Label className="flex flex-row items-center text-base"> <Label className="flex flex-row items-center text-base">
<Trans ns="views/settings">camera.review.alerts</Trans> <Trans ns="views/settings">cameraReview.review.alerts</Trans>
<MdCircle className="ml-3 size-2 text-severity_alert" /> <MdCircle className="ml-3 size-2 text-severity_alert" />
</Label> </Label>
<div className="text-sm text-muted-foreground"> <div className="text-sm text-muted-foreground">
@ -256,7 +256,9 @@ export default function CameraReviewClassification({
<> <>
<div className="mb-2"> <div className="mb-2">
<Label className="flex flex-row items-center text-base"> <Label className="flex flex-row items-center text-base">
<Trans ns="views/settings">camera.review.detections</Trans> <Trans ns="views/settings">
cameraReview.review.detections
</Trans>
<MdCircle className="ml-3 size-2 text-severity_detection" /> <MdCircle className="ml-3 size-2 text-severity_detection" />
</Label> </Label>
{selectDetections && ( {selectDetections && (

View File

@ -883,12 +883,15 @@ export function ConfigSection({
{isSaving ? ( {isSaving ? (
<> <>
<ActivityIndicator className="h-4 w-4" /> <ActivityIndicator className="h-4 w-4" />
{t("saving", { ns: "common", defaultValue: "Saving..." })} {t("button.saving", {
ns: "common",
defaultValue: "Saving...",
})}
</> </>
) : ( ) : (
<> <>
<LuSave className="h-4 w-4" /> <LuSave className="h-4 w-4" />
{t("save", { ns: "common", defaultValue: "Save" })} {t("button.save", { ns: "common", defaultValue: "Save" })}
</> </>
)} )}
</Button> </Button>
@ -909,7 +912,7 @@ export function ConfigSection({
</AlertDialogHeader> </AlertDialogHeader>
<AlertDialogFooter> <AlertDialogFooter>
<AlertDialogCancel> <AlertDialogCancel>
{t("cancel", { ns: "common" })} {t("button.cancel", { ns: "common" })}
</AlertDialogCancel> </AlertDialogCancel>
<AlertDialogAction <AlertDialogAction
className="bg-selected text-white hover:bg-selected/90" className="bg-selected text-white hover:bg-selected/90"
@ -945,7 +948,7 @@ export function ConfigSection({
level === "camera" && level === "camera" &&
isOverridden && ( isOverridden && (
<Badge variant="secondary" className="text-xs"> <Badge variant="secondary" className="text-xs">
{t("overridden", { {t("button.overridden", {
ns: "common", ns: "common",
defaultValue: "Overridden", defaultValue: "Overridden",
})} })}
@ -980,7 +983,7 @@ export function ConfigSection({
<Heading as="h4">{title}</Heading> <Heading as="h4">{title}</Heading>
{showOverrideIndicator && level === "camera" && isOverridden && ( {showOverrideIndicator && level === "camera" && isOverridden && (
<Badge variant="secondary" className="text-xs"> <Badge variant="secondary" className="text-xs">
{t("overridden", { {t("button.overridden", {
ns: "common", ns: "common",
defaultValue: "Overridden", defaultValue: "Overridden",
})} })}

View File

@ -52,7 +52,7 @@ export function ArrayFieldTemplate(props: ArrayFieldTemplateProps) {
className="gap-2" className="gap-2"
> >
<LuPlus className="h-4 w-4" /> <LuPlus className="h-4 w-4" />
{t("add", { ns: "common", defaultValue: "Add" })} {t("button.add", { ns: "common", defaultValue: "Add" })}
</Button> </Button>
)} )}
</div> </div>

View File

@ -195,8 +195,8 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {
ordered.forEach((item) => grouped.add(item.name)); ordered.forEach((item) => grouped.add(item.name));
const label = domain const label = domain
? t(`${domain}.${groupKey}`, { ? t(`${sectionI18nPrefix}.${domain}.${groupKey}`, {
ns: "config/global", ns: "config/groups",
defaultValue: toTitle(groupKey), defaultValue: toTitle(groupKey),
}) })
: t(`groups.${groupKey}`, { : t(`groups.${groupKey}`, {
@ -261,7 +261,7 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {
className="gap-2" className="gap-2"
> >
<LuPlus className="h-4 w-4" /> <LuPlus className="h-4 w-4" />
{t("add", { ns: "common", defaultValue: "Add" })} {t("button.add", { ns: "common", defaultValue: "Add" })}
</Button> </Button>
); );
}; };

View File

@ -179,7 +179,7 @@ export function SwitchesWidget(props: WidgetProps) {
</Button> </Button>
</CollapsibleTrigger> </CollapsibleTrigger>
<CollapsibleContent className="bg-background_alt p-2"> <CollapsibleContent className="bg-background_alt p-2 md:max-w-xl">
{availableEntities.length === 0 ? ( {availableEntities.length === 0 ? (
<div className="text-sm text-muted-foreground">{emptyMessage}</div> <div className="text-sm text-muted-foreground">{emptyMessage}</div>
) : ( ) : (

View File

@ -128,7 +128,7 @@ export function SingleSectionPage({
variant="secondary" variant="secondary"
className="border-2 border-selected text-xs text-primary-variant" className="border-2 border-selected text-xs text-primary-variant"
> >
{t("overridden", { {t("button.overridden", {
ns: "common", ns: "common",
defaultValue: "Overridden", defaultValue: "Overridden",
})} })}