web_lib

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

commit 7503f7c5002681610a0182c0ae9396ab33e5db41
parent b694d104242b5419d2e87d85c461811249f8977a
Author: triesap <triesap@radroots.dev>
Date:   Fri, 26 Dec 2025 13:30:12 +0000

i18n: tighten typings for payloads and translator interfaces

- Export typed I18n payload aliases for ICU params
- Replace inferred translate/locale exports with generic i18n type refs
- Parameterize i18n_conf and i18n_conf_icu with payload generics
- Drop unused LanguageConfig and default LIB_CONFIG instance

Diffstat:
Mapps-lib/src/lib/utils/i18n.ts | 40+++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/apps-lib/src/lib/utils/i18n.ts b/apps-lib/src/lib/utils/i18n.ts @@ -1,48 +1,46 @@ import { type Loader } from '@sveltekit-i18n/base'; import type { Config as ConfigIcu, Parser as ParserIcu } from "@sveltekit-i18n/parser-icu"; import parser_icu from "@sveltekit-i18n/parser-icu"; -import i18n, { type Config } from 'sveltekit-i18n'; +import i18n, { type Config, type Modifier, type Parser } from 'sveltekit-i18n'; -type LanguageConfig = { - default?: string; - value?: string; -}; +export type I18nPayloadValue = string | number | boolean; +export type I18nPayload = Record<string, I18nPayloadValue>; type TranslationMap<T extends string> = Record<T, Record<string, unknown>>; -const LIB_CONFIG: Config<LanguageConfig> = { - initLocale: `en`, - fallbackLocale: `en`, - translations: {}, - loaders: [], -}; - -const lib_i18n = new i18n(LIB_CONFIG); -export type I18nTranslateFunction = typeof lib_i18n.t; -export type I18nTranslateLocale = typeof lib_i18n.locale; +export type I18nTranslateFunction = i18n< + Parser.Params<I18nPayload, Modifier.DefaultProps>, + I18nPayload, + Modifier.DefaultProps +>["t"]; +export type I18nTranslateLocale = i18n< + Parser.Params<I18nPayload, Modifier.DefaultProps>, + I18nPayload, + Modifier.DefaultProps +>["locale"]; -export const i18n_conf = <T extends string>(opts: { +export const i18n_conf = <T extends string, P extends I18nPayload = I18nPayload>(opts: { default_locale: T; translations: TranslationMap<T>; loaders: Loader.LoaderModule[] -}) => { +}): i18n<Parser.Params<P, Modifier.DefaultProps>, P, Modifier.DefaultProps> => { const { default_locale, translations, loaders } = opts; const config = { initLocale: default_locale, fallbackLocale: default_locale, translations, loaders, - } satisfies Config<Record<string, unknown>>; + } satisfies Config<P, Modifier.DefaultProps>; return new i18n(config); }; -export const i18n_conf_icu = <T extends string>(opts: { +export const i18n_conf_icu = <T extends string, P extends I18nPayload = I18nPayload>(opts: { default_locale: T; translations: TranslationMap<T>; loaders: Loader.LoaderModule[] -}): i18n<ParserIcu.Params<LanguageConfig>> => { +}): i18n<ParserIcu.Params<P>> => { const { default_locale, translations, loaders } = opts; - const config: ConfigIcu<LanguageConfig> = { + const config: ConfigIcu<P> = { initLocale: default_locale, fallbackLocale: default_locale, translations,