@ices/react-locale
Version:
React components for locale
85 lines (84 loc) • 2.85 kB
TypeScript
declare type MessageDataValue = string | number | boolean | null;
export declare type MessageData = {
[key: string]: MessageDataValue;
};
/**
* 语言模块消息内容定义类型。
*/
export declare type MessageDefinitions = {
[locale: string]: MessageData;
};
/**
* 语言消息内容的值类型。
*/
export declare type MessageValue = string | number;
/**
* 插件函数,用来实现语言内容的格式转译。
*/
export declare type PluginFunction = (message: MessageValue, pluginArgs: any[], translate: PluginTranslate, key: string) => MessageValue;
/**
* 提供给用户使用的转译函数。
*/
export interface TranslateFunction {
(key: string, ...pluginArgs: any[]): string;
__boundLocale?: string;
__fallbackLocale?: string;
__toBeInvalidTranslateFunction?: boolean;
}
/**
* 插件使用的转译函数,可供插件获取语言模块消息内容。
*/
export declare type PluginTranslate = ReturnType<typeof getPluginTranslate>;
/**
* 格式化定义语言消息定义。
* @param dataSet 语言消息定义内容集
*/
export declare function normalizeDefinitions(dataSet: any): MessageDefinitions;
/**
* 获取插件转换函数。
* @param locale 当前使用的语言
* @param fallback 备选语言
*/
declare function getPluginTranslate(locale: string, fallback?: string): (key: string, definitions: MessageDefinitions, options?: {
plugins?: PluginFunction | PluginFunction[] | null;
pluginArgs?: any;
fallback?: string;
} | string | null) => string;
/**
* 获取区域化的内容。
* @param key
* @param pluginArgs
* @param context
* @param silent
*/
export declare function getLocaleMessage(key: string, pluginArgs: any[], context: ReturnType<typeof getTranslateContext>, silent?: boolean): string | never;
/**
* 获取转译函数需要的参数上下文对象。
* @param data 传入的数据。
* @param context 传入的参数上下文。
*/
declare function getTranslateContext(data: MessageDefinitions, context: {
locale: string;
fallback?: string;
plugins?: PluginFunction | PluginFunction[] | null;
}): {
locale: string;
fallback: string;
dataList: {
locale: string;
data: MessageData;
}[];
plugins: PluginFunction[];
};
/**
* 绑定语言定义,并根据提供的上下文获取转译函数。
* @param data 需要绑定的语言定义数据。
* @param context 需要绑定的上下文对象。
* @param fallbackTranslate 备用的translate,在加载数据时,避免出现闪白,先用之前的translate处理文本。
*/
export declare function withDefinitions(data: MessageDefinitions | null, context: {
locale: string;
fallback?: string;
plugins?: PluginFunction | PluginFunction[] | null;
}, fallbackTranslate?: TranslateFunction | null): TranslateFunction;
export {};