UNPKG

edges-svelte-translations

Version:

Elegant, type-safe and SSR-friendly internationalization for edges-svelte

28 lines (27 loc) 1.27 kB
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>; };