edges-svelte-translations
Version:
Elegant, type-safe and SSR-friendly internationalization for edges-svelte
28 lines (27 loc) • 1.27 kB
TypeScript
export type Path<T, Prefix extends string = ''> = T extends object ? {
[K in keyof T & string]: T[K] extends object ? Path<T[K], `${Prefix}${K}.`> : `${Prefix}${K}`;
}[keyof T & string] : never;
export type Translation = string | {
[key: string]: Translation;
};
export declare const createTranslations: <T extends Record<string, () => Promise<Translation>>, TParam extends Path<Awaited<ReturnType<T[keyof T]>>>>(params: {
messages: T;
initLang: keyof T;
cookieName?: string;
initLangFromAcceptLanguage?: boolean;
}) => () => {
preloadTranslation: (callback?: () => keyof T) => Promise<void>;
syncTranslation: <T_1 extends {
translations?: Translation;
lang: string;
}>(data: T_1, fromEvent?: boolean) => Promise<void>;
switchLocale: (newLocale: keyof T) => Promise<void>;
applyHtmlLocaleAttr: (html: string) => string;
subscribeLocaleChangeEvent: (listener: (data: keyof T) => void) => (() => void);
t: import("svelte/store").Readable<(translation?: TParam | {
key: TParam | string;
vars?: Record<string, unknown>;
} | string, vars?: Record<string, unknown>) => string>;
locale: import("svelte/store").Writable<keyof T | undefined>;
locales: Record<keyof T, keyof T>;
};