web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

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 };