import IntlMessageFormatDefault from "intl-messageformat"; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const IntlMessageFormat: typeof IntlMessageFormatDefault = // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access (IntlMessageFormatDefault as any).default || IntlMessageFormatDefault; export type Translations = Readonly>; export default function load( translations: Readonly>, language: string, ): Translations { const result: Record = {}; (function loadMap(record: Record, prefix: string) { Object.entries(record).forEach(([key, value]) => { if (typeof value === "object" && value !== null) { loadMap(value as Record, `${prefix}${key}.`); return; } result[`${prefix}${key}`] = new IntlMessageFormat( value as string, language, ); }); })(translations, ""); return result; }