i18n.ts (1820B)
1 import { type Loader } from '@sveltekit-i18n/base'; 2 import type { Config as ConfigIcu, Parser as ParserIcu } from "@sveltekit-i18n/parser-icu"; 3 import parser_icu from "@sveltekit-i18n/parser-icu"; 4 import i18n, { type Config, type Modifier, type Parser } from 'sveltekit-i18n'; 5 6 export type I18nPayloadValue = string | number | boolean; 7 export type I18nPayload = Record<string, I18nPayloadValue>; 8 9 type TranslationMap<T extends string> = Record<T, Record<string, unknown>>; 10 11 export type I18nTranslateFunction = i18n< 12 Parser.Params<I18nPayload, Modifier.DefaultProps>, 13 I18nPayload, 14 Modifier.DefaultProps 15 >["t"]; 16 export type I18nTranslateLocale = i18n< 17 Parser.Params<I18nPayload, Modifier.DefaultProps>, 18 I18nPayload, 19 Modifier.DefaultProps 20 >["locale"]; 21 22 export const i18n_conf = <T extends string, P extends I18nPayload = I18nPayload>(opts: { 23 default_locale: T; 24 translations: TranslationMap<T>; 25 loaders: Loader.LoaderModule[] 26 }): i18n<Parser.Params<P, Modifier.DefaultProps>, P, Modifier.DefaultProps> => { 27 const { default_locale, translations, loaders } = opts; 28 const config = { 29 initLocale: default_locale, 30 fallbackLocale: default_locale, 31 translations, 32 loaders, 33 } satisfies Config<P, Modifier.DefaultProps>; 34 return new i18n(config); 35 }; 36 37 export const i18n_conf_icu = <T extends string, P extends I18nPayload = I18nPayload>(opts: { 38 default_locale: T; 39 translations: TranslationMap<T>; 40 loaders: Loader.LoaderModule[] 41 }): i18n<ParserIcu.Params<P>> => { 42 const { default_locale, translations, loaders } = opts; 43 const config: ConfigIcu<P> = { 44 initLocale: default_locale, 45 fallbackLocale: default_locale, 46 translations, 47 parser: parser_icu(), 48 loaders, 49 }; 50 return new i18n(config); 51 };