import type { StringMap } from '../../types.js'; export type MissingTranslationHandler = (key: string, params?: StringMap) => string; export declare const defaultMissingTranslationHandler: MissingTranslationHandler; export interface TranslationServiceCfg { defaultLocale: string; supportedLocales: string[]; /** * It is allowed to set it later. Will default to `defaultLocale` in that case. */ currentLocale?: string; translationLoader: TranslationLoader; /** * Defaults to `defaultMissingTranslationHandler` that returns `[${key}]` and emits console warning. */ missingTranslationHandler?: MissingTranslationHandler; } export interface TranslationServiceCfgComplete extends TranslationServiceCfg { missingTranslationHandler: MissingTranslationHandler; } export interface TranslationLoader { load: (locale: string) => Promise; } export declare class TranslationService { constructor(cfg: TranslationServiceCfg, preloadedLocales?: StringMap); cfg: TranslationServiceCfgComplete; /** * Cache of loaded locales */ locales: StringMap; currentLocale: string; /** * Manually set locale data, bypassing the TranslationLoader. */ setLocale(localeName: string, locale: StringMap): void; getLocale(locale: string): StringMap | undefined; /** * Loads locale(s) (if not already cached) via configured TranslationLoader. * Resolves promise when done (ready to be used). */ loadLocale(locale: string | string[]): Promise; /** * Will invoke `missingTranslationHandler` on missing tranlation. * * Does NOT do any locale loading. The locale needs to be loaded beforehand: * either pre-loaded and passed to the constructor, * or `await loadLocale(locale)`. */ translate(key: string, params?: StringMap): string; /** * Does NOT invoke `missingTranslationHandler`, returns `undefined` instead. */ translateIfExists(key: string, _params?: StringMap): string | undefined; }