import { ComponentCustomProperties, Reactive, Ref, App } from 'vue'; import { components as I18nComponents } from 'topvisor-openapi/src/ts/I18n'; export type Lang = 'ru' | 'en'; type Options = { /** * Предзагруженные словари * * Для загрузки нужного словаря используйте @r/i18n.esm.js * * ```js * import '@r/i18n.esm.js?Projects'; * ``` */ i18n: I18nComponents['schemas']; /** * Текущий язык */ lang: Lang; }; /** * Загруженные словари * * Для загрузки нужного словаря используйте @r/i18n.esm.js * * ```js * import '@r/i18n.esm.js?Projects'; * ``` */ type I18n = Reactive; type I18nRender = (categoryName: T, key: keyof I18n[T], props: Record) => string; declare module '@vue/runtime-core' { interface ComponentCustomProperties { /** * Загруженные словари * * Можно использовать как функцию для подстановки значений в формате: `Текст {{ propName }}` * * @see I18n * @see I18nRender */ $i18n: I18n & I18nRender; /** * Текущий язык */ $i18nLang: Ref; } } /** * Плагин работает в сваязке с плагином requirejs('i18n') * * При инициализации необходимо указать в $i18n объект с предзагруежнными словарями, остальные словари можно импортировать диномически вместе с * компонентами * * Внутри UI дозагрузка словарей недоступна и требует предзагрузки необходимых словарей * * Добавляет глобальные свойства: * - \$i18n * - \$i18nLang * - \$i18nL * * Для загрузки необходимого словаря указывайте его в зависимостях компонента: * * ```js * import '@r/i18n.esm.js?Projects'; * ``` * * В setup(): * * ```js * useI18n().Projects.Site; // выполнит inject('$i18n').Projects.Site, не используйте inject('$i18n') напрямую, так как он не типизирован * ``` * * В template: * * ```html * {{ $i18n.Projects.Site }} * ``` * * С подстановкой значений: * ```html * {{ $i18n('Projects', 'Site', {name: value}) }} * ``` */ declare const _default: { install: (app: App, options: Options) => void; }; export default _default; /** * Получить доступ к загруженным словарям * * @see I18n */ export declare const useI18n: () => ComponentCustomProperties["$i18n"]; /** * Текущий язык */ export declare const useI18nLang: () => Ref;