import type { TLocalisationSource } from "../../types/localisation.d.mts"; /** * Callback на готовность плагина локализации */ type TLocalisationOnReady = (instance: TInstance) => void; /** * Callback на изменение языка плагина локализации */ type TLocalisationOnChange = (instance: TInstance, lang: string) => void; /** * Callback на пропуск локали в плагине локализации */ type TLocalisationOnMiss = (instance: TInstance, args: unknown) => void; /** * Callback на ошибку плагина локализации */ type TLocalisationOnError = (instance: TInstance, args: unknown) => void; /** * Функция локализации */ type TLocaleFn = (key: string | string[], options?: Record) => string; /** * Событие плагина локализации */ type TLocalisationEvent = CustomEvent<{ instance: TInstance; }>; /** * Событие изменения ресурсов */ type TLocalisationResourceAddedEvent = { /** Код языка */ lang: string; /** Пространство имён */ ns: string; /** Список добавленных ключей */ keys: string[]; /** Источник добавления ресурсов */ source: "getResourceAppend" | "getNewResource" | "getNewNS"; /** Проверяет, был ли добавлен переданный код локали */ isHasCode?: (code: string) => boolean; /** Флаг тихого режима без логирования (по умолчанию true в режимах SSR и SSG) */ isSilent?: boolean; }; /** * Конфигурация плагина локализации */ type TLocalisationCfg = { locale?: string; langKeys: TLocalisationLanguages; locales: TLocalisationSource; isDebug: boolean; fallbackNS: string; load: string; onMiss: TLocalisationOnMiss | null; onChange: TLocalisationOnChange | null; onReady: TLocalisationOnReady | null; onError: TLocalisationOnError | null; }; /** * Гибкая пользовательская конфигурация плагина локализации */ type TLocalisationCfgInput = Partial>; /** * Список поддерживаемых языков локализации. */ type TLocalisationLanguages = string[]; export type { TLocaleFn, TLocalisationCfg, TLocalisationCfgInput, TLocalisationEvent, TLocalisationLanguages, TLocalisationOnChange, TLocalisationOnError, TLocalisationOnMiss, TLocalisationOnReady, TLocalisationResourceAddedEvent, TLocalisationSource, };