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:
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,