import { AnyObject, DataLoader, I18nResource, LiteralObject, Text } from '@p-lc/shared'; import { Get } from 'type-fest'; import { AnyEditorPlugin, Editor, EditorDefaultPropertiesExtHkt, EditorDefaultPropertiesExtHktPlugin, EditorRawPlugin } from '../../types'; import { editorPluginName } from '../editor-plugin-name'; /** * 编辑器国际化仓库插件属性扩展高等类型 */ export interface EditorPluginI18nStorePropertiesExtHkt { editor: { /** * 国际化仓库 */ i18nStore: { /** * 所有支持的语言 */ languages: string[]; /** * 语言名称 */ languageNames: Record; /** * 设置语言名称 * @param languageNames 语言名称 */ setLanguageNames(languageNames: Record): void; /** * (当前)语言 */ language: string; /** * 设置语言 * @param language 语言 * @param save 保存当前语言,默认为: true */ setLanguage(language: string, save?: boolean): void; /** * 添加资源,以 merge 的形式 * @param resource 资源 * @param isImportant 重要,默认:false,为 true 时会覆盖 初始化选项里的资源 */ addResource(resource: I18nResource, isImportant?: boolean): void; /** * 翻译键值选项,由其他插件扩展,只用于类型推导 */ tKeyOptions?: LiteralObject; /** * 翻译 * @param key 键值 * @param options 选项 */ t>(key: T, options?: I18nStoreTKeyOptions[T]): string; t(key: string, options?: AnyObject): string; /** * 翻译(国际化)文本 * @param text 文本 * @param options 选项 */ tText>(text: Text, options?: I18nStoreTKeyOptions[T]): string; tText(text: Text, options?: AnyObject): string; /** * 国际化状态加载器 */ i18nStateLoader: DataLoader | null; }; }; } /** * 国际化仓库翻译键值选项 */ export type I18nStoreTKeyOptions = Get, [ 'i18nStore', 'tKeyOptions' ]>; /** * 国际化状态 */ export interface I18nState { /** * 语言 */ language: string; } /** * EditorPluginI18nStorePropertiesExtHkt 辅助类型 */ export interface $EditorPluginI18nStorePropertiesExtHkt extends EditorDefaultPropertiesExtHkt { type: EditorPluginI18nStorePropertiesExtHkt>; } /** * 编辑器国际化仓库插件 */ export declare const editorPluginI18nStore: EditorRawPlugin<$EditorPluginI18nStorePropertiesExtHkt, typeof editorPluginName>; //# sourceMappingURL=editor-plugin-i18n-store.d.ts.map