diff --git a/web/src/components/config-form/theme/fields/DictAsYamlField.tsx b/web/src/components/config-form/theme/fields/DictAsYamlField.tsx index ff1145cfcc..75c8343853 100644 --- a/web/src/components/config-form/theme/fields/DictAsYamlField.tsx +++ b/web/src/components/config-form/theme/fields/DictAsYamlField.tsx @@ -3,6 +3,8 @@ import yaml from "js-yaml"; import { Textarea } from "@/components/ui/textarea"; import { cn } from "@/lib/utils"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { ConfigFormContext } from "@/types/configForm"; +import { useTranslation } from "react-i18next"; function formatYaml(value: unknown): string { if ( @@ -45,8 +47,14 @@ function parseYaml(text: string): { } export function DictAsYamlField(props: FieldProps) { - const { formData, onChange, readonly, disabled, idSchema, schema } = props; - + const { formData, onChange, readonly, disabled, idSchema, schema, registry } = + props; + const formContext = registry.formContext as ConfigFormContext | undefined; + const configNamespace = + formContext?.i18nNamespace ?? + (formContext?.level === "camera" ? "config/cameras" : "config/global"); + const { t: fallbackT } = useTranslation(["common", configNamespace]); + const t = formContext?.t ?? fallbackT; const emptyPath = useMemo(() => [] as FieldPathList, []); const fieldPath = (props as { fieldPathId?: { path?: FieldPathList } }).fieldPathId?.path ?? @@ -94,12 +102,16 @@ export function DictAsYamlField(props: FieldProps) { ); const id = idSchema?.$id ?? props.name; + const sectionPrefix = formContext?.sectionI18nPrefix; + const title = t(`${sectionPrefix}.${id}.label`) ?? schema.title; + const description = + t(`${sectionPrefix}.${id}.description`) ?? schema.description; return (
- {schema.title && ( + {title && ( )}