diff --git a/src/components/admin/studio/studio-client.tsx b/src/components/admin/studio/studio-client.tsx index a2884330..6555d5ee 100644 --- a/src/components/admin/studio/studio-client.tsx +++ b/src/components/admin/studio/studio-client.tsx @@ -177,9 +177,38 @@ export function StudioClient({ ...ALL_LANGS, ]); const [langPickerOpen, setLangPickerOpen] = useState(false); + const [buildingLanguages, setBuildingLanguages] = useState(false); const [globalTranslate, setGlobalTranslate] = useState(defaultTranslate); + // Build every language for the whole catalog at once (used to translate + // everything after importing with translation disabled for speed). + const buildAllLanguages = async () => { + setBuildingLanguages(true); + try { + const res = await adminFetch( + "/api/admin/import/furni?action=build-languages", + ); + const data = (await res.json()) as { + languages?: Array<{ lang: string; ok: boolean }>; + error?: string; + }; + if (res.ok) { + const langs = data.languages ?? []; + const okCount = langs.filter((l) => l.ok).length; + toast.success( + `Alle talen vertaald (${okCount}/${langs.length} gelukt)`, + ); + } else { + toast.error(data.error ?? "Vertaling mislukt"); + } + } catch { + toast.error("Netwerkfout bij het vertalen van alle talen"); + } finally { + setBuildingLanguages(false); + } + }; + const toggleLang = (lang: string) => setTranslateLangs((prev) => prev.includes(lang) ? prev.filter((l) => l !== lang) : [...prev, lang], @@ -995,6 +1024,22 @@ export function StudioClient({ + +