From 0a2398f50737fc4243a21d2df888c5599568b27a Mon Sep 17 00:00:00 2001 From: Anders Olsson Date: Wed, 3 Jun 2026 23:37:26 +0200 Subject: [PATCH] fix(web): localize flexible-field labels to the active locale (sv/en) Co-Authored-By: Claude Opus 4.8 (1M context) --- web/src/objects/object-detail.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/web/src/objects/object-detail.tsx b/web/src/objects/object-detail.tsx index 824828e..bfdef5c 100644 --- a/web/src/objects/object-detail.tsx +++ b/web/src/objects/object-detail.tsx @@ -23,7 +23,7 @@ function Field({ } export function ObjectDetail() { - const { t } = useTranslation(); + const { t, i18n } = useTranslation(); const { id } = useParams(); const { data: object, isLoading, isError } = useObject(id!); const { data: definitions } = useFieldDefinitions(); @@ -40,8 +40,15 @@ export function ObjectDetail() { if (!object) return

{t("objects.notFound")}

; - const labelFor = (key: string) => - definitions?.find((d) => d.key === key)?.labels.find((l) => l.lang === "en")?.label ?? key; + // Prefer the active locale's label, then English, then the raw key. + const lang = i18n.language.startsWith("sv") ? "sv" : "en"; + const labelFor = (key: string) => { + const labels = definitions?.find((d) => d.key === key)?.labels; + const byLang = labels?.find((l) => l.lang === lang)?.label; + const byEnglish = labels?.find((l) => l.lang === "en")?.label; + + return byLang ?? byEnglish ?? key; + }; const flexible = Object.entries(object.fields as Record);