import i18next from "i18next"; import type { TLocaleFn, TLocalisationCfg, TLocalisationCfgInput, TLocalisationOnReady, TLocalisationResourceAddedEvent } from "./types.d.mts"; import * as localisationUtils from "./utils/index.d.mts"; import type { TLocaleSource } from "./utils/index.d.mts"; /** * Singleton. Плагин локализации. * Использует библиотеку `i18next`. Локаль по умолчанию указывается в атрибуте `lang` корневого элемента документа. * @module Localisation */ export declare class Localisation { #private; cfg: TLocalisationCfg; lib: typeof i18next; /** * Набор утилитарных функций * @type {typeof localisationUtils} */ static utils: typeof localisationUtils; /** * Singleton-экземпляр плагина локализации. * @type {Localisation|null} */ static instance: Localisation | null; /** * Признак выполнения кода в SSR-окружении (без объекта window). * @type {boolean} */ static isSSR: boolean; /** * Признак регистрации плагина в глобальном namespace Core. * @type {boolean} */ static isApp: boolean; /** * Состояния жизненного цикла инициализации локализации. * @type {{isReady: boolean, isError: boolean, isLoading: boolean}} */ static states: { isReady: boolean; isError: boolean; isLoading: boolean; }; /** * Признак готовности плагина локализации. * @type {boolean} */ static get isReady(): boolean; /** * Признак выполнения инициализации. * @type {boolean} */ static get isLoading(): boolean; /** * Признак ошибки инициализации. * @type {boolean} */ static get isError(): boolean; /** * Конфигурация Localisation по умолчанию. * @type {TLocalisationCfg} */ static defaultCfg: TLocalisationCfg; /** * Создаёт или возвращает существующий экземпляр плагина локализации. * @param cfg{Object=} пользовательская конфигурация * @returns {Promise} промис с экземпляром плагина */ static create(cfg?: TLocalisationCfgInput): Promise; /** * Не используйте конструктор напрямую. Воспользуйтесь статическим методом `Localisation.create()`. * @param cfg{Object=} пользовательская конфигурация * @throws {Error} при попытке повторного создания экземпляра */ constructor(cfg?: TLocalisationCfgInput); /** * Регистрирует callback, вызываемый при готовности плагина локализации. * Если плагин уже готов, callback будет вызван немедленно. * @param callback{Function} callback-функция */ static addReadyCallback(callback: TLocalisationOnReady): void; /** * Устанавливает callback, вызываемый при готовности плагина локализации. * @param callback{Function|null|undefined} callback-функция * @deprecated Используйте статический метод `Localisation.addReadyCallback()` */ static set onReady(callback: TLocalisationOnReady | null | undefined); /** * Подписка на добавление ресурсов локализации. * Возвращает функцию для отписки. * @param listener{Function} обработчик события добавления ресурсов * @returns {Function} функция для отписки */ static onResourceAdded(listener: (data: TLocalisationResourceAddedEvent) => void): () => void; /** * Получает текущий языковой код * @returns {string} * @see https://www.i18next.com/overview/api#language */ get lang(): string; /** * Получает все доступные языковые коды * @returns {Array} * @see https://www.i18next.com/overview/api#languages */ get langList(): string[]; /** * Получает язык с кодом региона в формате `ISO-3166` * @param lang{String} код языка (например, "ru", "en") * @returns {String|null} язык с регионом (например, "ru_RU", "en_US") или null */ static getLangWithRegion(lang: unknown): string | null; /** * Загружает новое пространство имён * @param ns{String} название пространства имён * @param onError{Function} обработчик ошибок * @returns {Promise} промис с экземпляром плагина * @see https://www.i18next.com/principles/namespaces */ getNewNS(ns: string | readonly string[], onError?: (error: unknown) => void): Promise; /** * Меняет текущий язык интерфейса * @param lang{String=} код языка, по умолчанию язык пользователя * @param callback{Function=} callback-функция * @returns {Promise} промис с экземпляром плагина * @see https://www.i18next.com/overview/api#changelanguage */ getChangeLanguage(lang?: string, callback?: (error: unknown) => void): Promise; /** * Проверяет существование локали по ключу * @param key{String=} название ключа (например, "forms.invalidInput") * @param options{Object=} опции проверки * @returns {Boolean} результат проверки * @see https://www.i18next.com/overview/api#exists */ isLocaleExist(key?: string, options?: Record): boolean; /** * Получает локализованную строку по ключу * @param key{String|String[]=} название ключа или массив ключей (например, "forms.invalidInput") * @param options{Object=} опции получения (интерполяция, контекст и т.д.) * @returns {String} локализованная строка или пустая строка, если ключ не найден * @see https://www.i18next.com/overview/api#t */ getLocale(key?: string | string[], options?: Record): string; /** * Получает функцию локализации с фиксированными параметрами * @param code{String|String[]} код локали * @param lang{String=} код языка * @param ns{String=} пространство имён * @returns {Function} функция для получения локализованных строк * @see https://www.i18next.com/overview/api#getfixedt */ getLocaleFn(code: string | string[], lang?: string, ns?: string): TLocaleFn; /** * Получает ресурс локализации по пространству имён * @param namespace{String} пространство имён * @param lang{String=} код языка * @param ns{String=} пространство имён * @returns {Object} объект ресурса */ getResource(namespace: string, lang?: string | undefined, ns?: string | undefined): any; /** * Добавляет новые данные локализации для текущих языков * @returns {Promise} * @see https://www.i18next.com/overview/api#addresources */ getResourceAppend(locales?: TLocaleSource, isFlat?: boolean, isSilent?: boolean): Promise; /** * Добавляет новый ресурс локализации для указанного языка и пространства имён * @param params{Object} параметры * @param params.lang{String=} код языка * @param params.ns{String=} пространство имён * @param params.locales{Object=} объект локализации * @param params.isOverride{Boolean=} заменять существующий ресурс * @returns {Promise} промис с экземпляром плагина * @see https://www.i18next.com/overview/api#addresourcebundle */ getNewResource({ lang, ns, locales, isOverride, }: { lang?: string | undefined; ns?: string | undefined; locales?: import("./types.d.mts").TLocalisationSource | undefined; isOverride?: boolean | undefined; }): Promise; }