UNPKG

@gulibs/react-vintl

Version:

Type-safe i18n library for React with Vite plugin and automatic type inference

50 lines 1.97 kB
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