import { EntityDict } from 'oak-domain/lib/types'; import { Feature } from '../types/Feature'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { Cache } from './cache'; import { LocalStorage } from './localStorage'; import { Environment } from './environment'; import { Scope, TranslateOptions } from '../utils/i18n'; export type I18nLoadReason = 'bootstrap' | 'stale' | 'missing'; export type I18nLoaderRequest = { namespaces: string[]; languages?: string[]; reason: I18nLoadReason; }; export type I18nLoaderRow = { id: string; namespace: string; language: string; module: string; position: string; data: Record; $$createAt$$?: number; $$updateAt$$?: number; }; export type I18nLoaderResult = string | Uint8Array | I18nLoaderRow[] | undefined; export type I18nLoader = (request: I18nLoaderRequest) => Promise | I18nLoaderResult; export declare class Locales extends Feature { static REFRESH_STALE_INTERVAL: number; static MISS_LOAD_RETRY_COOLDOWN: number; private cache; private localStorage; private environment; private language; private defaultLng; private i18n; private loader?; private loadingMissingNamespaces; private missingNamespaceFailureAt; private initializeLng; constructor(cache: Cache, localStorage: LocalStorage, environment: Environment, defaultLng: string, loader?: I18nLoader); registerLoader(loader: I18nLoader): void; private parseLoaderResult; private loadFromLoader; private detectLanguage; getLanguage(): string; setLanguage(language: string): Promise; private reloadDataset; loadServerData(nss: string[], reason?: 'bootstrap' | 'stale' | 'missing'): Promise; private shouldSkipMissingNamespaceLoad; /** * 当发生key缺失时,通过当前 i18n loader 或服务端请求最新数据 * @param ns */ private loadData; /** * 暴露给小程序的Wxs调用 * @param key */ loadMissedLocale(key: string): void; /** * translate函数,这里编译器会在params里注入两个参数 #oakNamespace 和 #oakModule,用以标识文件路径 * @param key * @param params * @returns */ t(key: string, params?: TranslateOptions): string; getState(): { lng: string; defaultLng: string; dataset: { [x: string]: any; }; version: number; }; hasKey(key: Scope, params?: TranslateOptions): string; }