Spaces:
Running
Running
File size: 1,157 Bytes
ad19202 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import { config } from "@repo/config";
import deepmerge from "deepmerge";
import type { Messages } from "../types";
// Turbopack/Next needs statically analyzable imports; map locales explicitly.
const localeImports = {
en: () => import("../translations/en.json"),
de: () => import("../translations/de.json"),
} as const;
type SupportedLocale = keyof typeof localeImports;
function resolveLocale(locale: string): SupportedLocale {
if (locale in localeImports) {
return locale as SupportedLocale;
}
// Fallback to default if requested locale is unsupported.
return config.i18n.defaultLocale as SupportedLocale;
}
export const importLocale = async (locale: string): Promise<Messages> => {
const resolved = resolveLocale(locale);
return (await localeImports[resolved]()).default as Messages;
};
export const getMessagesForLocale = async (
locale: string,
): Promise<Messages> => {
const localeMessages = await importLocale(locale);
if (locale === config.i18n.defaultLocale) {
return localeMessages;
}
const defaultLocaleMessages = await importLocale(config.i18n.defaultLocale);
return deepmerge(defaultLocaleMessages, localeMessages);
};
|