fix: fix lpr setting item i18n

This commit is contained in:
ZhaiSoul 2026-05-12 20:36:08 +08:00
parent 19dcad7989
commit 893d9da3f3
No known key found for this signature in database
3 changed files with 41 additions and 15 deletions

View File

@ -28,7 +28,11 @@ export function KnownPlatesField(props: FieldProps) {
| ConfigFormContext | ConfigFormContext
| undefined; | undefined;
const { t } = useTranslation(["views/settings", "common"]); const configNamespace =
formContext?.i18nNamespace ??
(formContext?.level === "camera" ? "config/cameras" : "config/global");
const { t: fallbackT } = useTranslation(["common", configNamespace]);
const t = formContext?.t ?? fallbackT;
const data: KnownPlatesData = useMemo(() => { const data: KnownPlatesData = useMemo(() => {
if (!formData || typeof formData !== "object" || Array.isArray(formData)) { if (!formData || typeof formData !== "object" || Array.isArray(formData)) {
@ -39,8 +43,14 @@ export function KnownPlatesField(props: FieldProps) {
const entries = useMemo(() => Object.entries(data), [data]); const entries = useMemo(() => Object.entries(data), [data]);
const title = (schema as RJSFSchema).title; const id = idSchema?.$id ?? props.name;
const description = (schema as RJSFSchema).description; const sectionPrefix = formContext?.sectionI18nPrefix;
const title =
t(`${sectionPrefix}.${id}.label`) ?? (schema as RJSFSchema).title;
const description =
t(`${sectionPrefix}.${id}.description`) ??
(schema as RJSFSchema).description;
const hasItems = entries.length > 0; const hasItems = entries.length > 0;
const emptyPath = useMemo(() => [] as FieldPathList, []); const emptyPath = useMemo(() => [] as FieldPathList, []);

View File

@ -47,7 +47,11 @@ export function ReplaceRulesField(props: FieldProps) {
| ConfigFormContext | ConfigFormContext
| undefined; | undefined;
const { t } = useTranslation(["common"]); const configNamespace =
formContext?.i18nNamespace ??
(formContext?.level === "camera" ? "config/cameras" : "config/global");
const { t: fallbackT } = useTranslation(["common", configNamespace]);
const t = formContext?.t ?? fallbackT;
const rules: ReplaceRule[] = useMemo(() => { const rules: ReplaceRule[] = useMemo(() => {
if (!Array.isArray(formData)) { if (!Array.isArray(formData)) {
@ -60,10 +64,21 @@ export function ReplaceRulesField(props: FieldProps) {
() => getItemSchema(schema as RJSFSchema), () => getItemSchema(schema as RJSFSchema),
[schema], [schema],
); );
const title = (schema as RJSFSchema).title;
const description = (schema as RJSFSchema).description; const id = idSchema?.$id ?? props.name;
const patternTitle = getPropertyTitle(itemSchema, "pattern"); const sectionPrefix = formContext?.sectionI18nPrefix;
const replacementTitle = getPropertyTitle(itemSchema, "replacement");
const title =
t(`${sectionPrefix}.${id}.label`) ?? (schema as RJSFSchema).title;
const description =
t(`${sectionPrefix}.${id}.description`) ??
(schema as RJSFSchema).description;
const patternTitle =
t(`${sectionPrefix}.${id}.pattern.label`) ??
getPropertyTitle(itemSchema, "pattern", t);
const replacementTitle =
t(`${sectionPrefix}.${id}.replacement.label`) ??
getPropertyTitle(itemSchema, "replacement", t);
const hasItems = rules.length > 0; const hasItems = rules.length > 0;
const emptyPath = useMemo(() => [] as FieldPathList, []); const emptyPath = useMemo(() => [] as FieldPathList, []);

View File

@ -157,8 +157,9 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {
const hasModifiedDescendants = checkSubtreeModified(fieldPath); const hasModifiedDescendants = checkSubtreeModified(fieldPath);
const [isOpen, setIsOpen] = useState(hasModifiedDescendants); const [isOpen, setIsOpen] = useState(hasModifiedDescendants);
const resetKey = `${formContext?.level ?? "global"}::${formContext?.cameraName ?? "global" const resetKey = `${formContext?.level ?? "global"}::${
}`; formContext?.cameraName ?? "global"
}`;
const lastResetKeyRef = useRef<string | null>(null); const lastResetKeyRef = useRef<string | null>(null);
// Auto-expand collapsible when modifications are detected // Auto-expand collapsible when modifications are detected
@ -336,12 +337,12 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {
const label = domain const label = domain
? t(`${sectionI18nPrefix}.${domain}.${groupKey}`, { ? t(`${sectionI18nPrefix}.${domain}.${groupKey}`, {
ns: "config/groups", ns: "config/groups",
defaultValue: humanizeKey(groupKey), defaultValue: humanizeKey(groupKey),
}) })
: t(`groups.${groupKey}`, { : t(`groups.${groupKey}`, {
defaultValue: humanizeKey(groupKey), defaultValue: humanizeKey(groupKey),
}); });
const groupInfo = { groupKey, label, items: ordered }; const groupInfo = { groupKey, label, items: ordered };
for (const item of ordered) { for (const item of ordered) {