feat(studio): localize catalog studio UI and polish responsive layout
Route all Catalog Studio strings through the admin.studio namespace (workspace, filters, review, inspector, quality, sync, scale32, organize imports and page titles/subtitles) with English fallback, and add shared StudioPage chrome plus a loading skeleton. Tighten mobile padding on the header and sub-bars.
This commit is contained in:
1 parent
d7d6382b60
commit
56676effc3
28 files changed
+1293
-634
No files matched your search
@@ -1,4 +1,5 @@
|
||||
"use client";
|
||||
import { useTranslations } from "next-intl";
|
||||
import { useState } from "react";
|
||||
import { toast } from "sonner";
|
||||
import { setFurnidataTranslateEnabled } from "@/actions/import-furni";
|
||||
@@ -24,6 +25,7 @@ const TRANSLATE_LANGS = [
|
||||
] as const;
|
||||
|
||||
export function useStudioTranslations(defaultTranslate: boolean) {
|
||||
const t = useTranslations("admin.studio");
|
||||
// Translation controls (per-import toggle + language selection, plus a global
|
||||
// default that persists to the site setting and seeds the per-import toggle).
|
||||
const ALL_LANGS = TRANSLATE_LANGS as readonly string[];
|
||||
@@ -52,13 +54,16 @@ export function useStudioTranslations(defaultTranslate: boolean) {
|
||||
const langs = data.languages ?? [];
|
||||
const okCount = langs.filter((l) => l.ok).length;
|
||||
toast.success(
|
||||
`Languages translated (${okCount}/${langs.length} completed)`,
|
||||
t("toasts.languagesTranslated", {
|
||||
ok: okCount,
|
||||
total: langs.length,
|
||||
}),
|
||||
);
|
||||
} else {
|
||||
toast.error(data.error ?? "Translation failed");
|
||||
toast.error(data.error ?? t("toasts.translationFailed"));
|
||||
}
|
||||
} catch {
|
||||
toast.error("Network error while translating languages");
|
||||
toast.error(t("toasts.networkTranslating"));
|
||||
} finally {
|
||||
setBuildingLanguages(false);
|
||||
}
|
||||
@@ -75,7 +80,7 @@ export function useStudioTranslations(defaultTranslate: boolean) {
|
||||
try {
|
||||
await setFurnidataTranslateEnabled({ enabled: next });
|
||||
} catch {
|
||||
toast.error("Could not save the default translation setting");
|
||||
toast.error(t("toasts.saveDefaultFailed"));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user