-
-
{locale.label}
-
Vier Marquee Zeilen fuer diese Sprache.
-
-
-
- {rowMeta.map((row) => (
-
- {row.label}
-
-
- ))}
-
+
+
+
+
Deutsch
+
Vier Marquee Zeilen. Diese Werte gelten fuer alle Sprachen.
- ))}
+
+
+ {rowMeta.map((row) => (
+
+ {row.label}
+
+
+ ))}
+
+
diff --git a/lib/app-config.ts b/lib/app-config.ts
index 3d1d2bf..691e8e7 100644
--- a/lib/app-config.ts
+++ b/lib/app-config.ts
@@ -39,6 +39,7 @@ export {
buildDefaultMarqueeSettings,
parseMarqueeSettingsValue,
splitMarqueeRowItems,
+ syncMarqueeSettingsToGermanSource,
type MarqueeLocaleSettings,
type MarqueeSettings,
} from "./marquee-settings";
@@ -80,6 +81,7 @@ import {
MARQUEE_SETTINGS_KEY,
buildDefaultMarqueeSettings,
parseMarqueeSettingsValue,
+ syncMarqueeSettingsToGermanSource,
type MarqueeSettings,
} from "./marquee-settings";
@@ -231,14 +233,16 @@ export async function getMarqueeSettings(): Promise
{
}
export async function updateMarqueeSettings(settings: MarqueeSettings): Promise {
+ const normalizedSettings = syncMarqueeSettingsToGermanSource(settings);
+
await prisma.appConfig.upsert({
where: { key: MARQUEE_SETTINGS_KEY },
update: {
- value: JSON.stringify(settings),
+ value: JSON.stringify(normalizedSettings),
},
create: {
key: MARQUEE_SETTINGS_KEY,
- value: JSON.stringify(settings),
+ value: JSON.stringify(normalizedSettings),
},
});
}
diff --git a/lib/marquee-settings.ts b/lib/marquee-settings.ts
index 35aea8b..b02faf0 100644
--- a/lib/marquee-settings.ts
+++ b/lib/marquee-settings.ts
@@ -97,26 +97,38 @@ function normalizeLocaleSettings(value: unknown, defaults: MarqueeLocaleSettings
};
}
+export function syncMarqueeSettingsToGermanSource(settings: MarqueeSettings): MarqueeSettings {
+ const source = settings.locales.de;
+
+ return {
+ locales: {
+ de: { ...source },
+ en: { ...source },
+ ar: { ...source },
+ },
+ };
+}
+
export function parseMarqueeSettingsValue(rawValue?: string | null): MarqueeSettings {
const defaults = buildDefaultMarqueeSettings();
if (!rawValue) {
- return defaults;
+ return syncMarqueeSettingsToGermanSource(defaults);
}
try {
const parsed = JSON.parse(rawValue) as { locales?: Record };
const locales = parsed && typeof parsed === "object" ? parsed.locales : undefined;
- return {
+ return syncMarqueeSettingsToGermanSource({
locales: {
ar: normalizeLocaleSettings(locales?.ar, defaults.locales.ar),
en: normalizeLocaleSettings(locales?.en, defaults.locales.en),
de: normalizeLocaleSettings(locales?.de, defaults.locales.de),
},
- };
+ });
} catch {
- return defaults;
+ return syncMarqueeSettingsToGermanSource(defaults);
}
}