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"
},
"button": {
"add": "Add",
"apply": "Apply",
"reset": "Reset",
"undo": "Undo",

View File

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

View File

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

View File

@ -193,7 +193,7 @@ export default function CameraReviewClassification({
<>
<div className="mb-2">
<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" />
</Label>
<div className="text-sm text-muted-foreground">
@ -256,7 +256,9 @@ export default function CameraReviewClassification({
<>
<div className="mb-2">
<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" />
</Label>
{selectDetections && (

View File

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

View File

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

View File

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

View File

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

View File

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