mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-11 10:57:38 +03:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
// Description Field Template
|
|
import type { DescriptionFieldProps } from "@rjsf/utils";
|
|
import { useTranslation } from "react-i18next";
|
|
import { ConfigFormContext } from "@/types/configForm";
|
|
|
|
export function DescriptionFieldTemplate(props: DescriptionFieldProps) {
|
|
const { description, id } = props;
|
|
const formContext = (
|
|
props as { registry?: { formContext?: ConfigFormContext } }
|
|
).registry?.formContext;
|
|
|
|
const isCameraLevel = formContext?.level === "camera";
|
|
const sectionI18nPrefix = formContext?.sectionI18nPrefix;
|
|
const effectiveNamespace = isCameraLevel ? "config/cameras" : "config/global";
|
|
|
|
const { t, i18n } = useTranslation([effectiveNamespace, "common"]);
|
|
|
|
let resolvedDescription = description;
|
|
|
|
// Support nested keys for both camera-level and consolidated global namespace
|
|
if (sectionI18nPrefix && effectiveNamespace) {
|
|
const descriptionKey = `${sectionI18nPrefix}.description`;
|
|
if (i18n.exists(descriptionKey, { ns: effectiveNamespace })) {
|
|
resolvedDescription = t(descriptionKey, { ns: effectiveNamespace });
|
|
}
|
|
}
|
|
|
|
if (!resolvedDescription) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<span id={id} className="text-sm text-muted-foreground">
|
|
{resolvedDescription}
|
|
</span>
|
|
);
|
|
}
|