@gulibs/react-vintl
Version:
Type-safe i18n library for React with Vite plugin and automatic type inference
50 lines • 1.97 kB
TypeScript
import type { I18nResources, TranslationFunction } from './types';
/**
* 从嵌套对象中获取值
*/
export declare function getNestedValue(obj: unknown, path: string): unknown;
/**
* 高级参数插值系统
* 支持多种插值格式:
* - {{key}} - 简单插值
* - {{key, format}} - 带格式的插值
* - {{key, plural, one=1 item, other=# items}} - 复数形式
* - {{key, select, male=He, female=She, other=They}} - 选择形式
* - {{key, number}} - 数字格式化
* - {{key, date}} - 日期格式化
*/
export declare function replaceParams(text: string, params?: Record<string, unknown>): string;
/**
* 验证参数对象
*/
export declare function validateParams(params: Record<string, unknown>): boolean;
/**
* 创建翻译函数
*
* 修复:翻译函数在创建时捕获 resources 参数,但函数在调用时会访问 resources[locale]
* 由于 resources 是对象引用,即使对象内容变化,只要引用没变,函数就能访问到新内容
* 但为了确保使用最新资源,我们依赖 useMemo 在 resourcesState 变化时重新创建翻译函数
*
* 注意:mergeResources 现在确保总是返回新对象引用,触发 useMemo 更新
*/
export declare function createTranslationFunction<T extends I18nResources>(resources: T, locale: string): TranslationFunction;
/**
* 验证资源结构
*/
export declare function validateResources(resources: I18nResources): boolean;
/**
* 深度合并两个对象
* 从插件中提取的逻辑,供前端使用
*/
export declare function deepMerge(target: unknown, source: unknown): unknown;
/**
* 合并翻译资源
* @param base - 基础资源(文件翻译)
* @param overlay - 覆盖资源(远程翻译)
* @param options - 合并选项
*/
export declare function mergeResources(base: I18nResources, overlay: Partial<I18nResources>, options?: {
namespace?: string;
locale?: string;
}): I18nResources;
//# sourceMappingURL=utils.d.ts.map