svelte-lang
Version:
svelte-lang is an i18n library for Svelte that simplifies multilingual support. It offers a straightforward API for managing translations, supports parameterized strings, and integrates with Svelte stores for reactive language handling. Features include a
28 lines (27 loc) • 1.38 kB
TypeScript
import { type Writable, type Readable } from 'svelte/store';
export declare function p<T extends string>(name: T): {
readonly type: "param";
readonly name: T;
};
type ParamPlaceholder = ReturnType<typeof p>;
export declare function t<T extends ParamPlaceholder[]>(strings: TemplateStringsArray, ...values: T): {
readonly strings: TemplateStringsArray;
readonly values: T;
};
type ExtractParams<T extends readonly any[]> = T extends {
type: 'param';
name: infer Name;
}[] ? Name : never;
type TranslationEntry = ReturnType<typeof t>;
type TranslationsPerLanguage = Record<string, TranslationEntry>;
export type Translations = Record<string, TranslationsPerLanguage>;
export declare function setupI18n<TTranslations extends Translations, TDefaultLanguage extends keyof TTranslations>(translations: TTranslations, defaultLanguage: TDefaultLanguage, options?: {
languagePersisted?: boolean;
}): {
t: Readable<(<TKey extends keyof TTranslations[TDefaultLanguage], TParams extends Record<ExtractParams<TTranslations[TDefaultLanguage][TKey]["values"]>, any>>(key: TKey, params?: TParams) => string)>;
language: Writable<keyof TTranslations>;
supportedLanguages: (keyof TTranslations)[];
tUnsafe: Readable<(key: string, params?: Record<string, unknown> | undefined | null) => string>;
initLanguage: (lang: string) => void;
};
export {};