import React from 'react'; import { cnLabels, enLabels } from './locales'; export { cnLabels, enLabels }; export type LocalKeys = typeof cnLabels; /** * 语言检测工具函数 * * 检测用户的语言偏好,支持多种检测方式: * 1. 浏览器语言设置 * 2. Ant Design ConfigProvider 的 locale * 3. localStorage 中保存的用户选择 * 4. 默认语言 */ export declare function detectUserLanguage(): 'zh-CN' | 'en-US'; /** * 获取对应的语言标签对象 */ export declare function getLocaleByLanguage(language: 'zh-CN' | 'en-US'): typeof cnLabels; /** * 保存用户语言选择到 localStorage */ export declare function saveUserLanguage(language: 'zh-CN' | 'en-US'): void; /** * 国际化上下文 * * 提供国际化功能的React Context,包含当前语言环境和设置语言的方法。 */ export declare const I18nContext: React.Context<{ locale: LocalKeys; language: 'zh-CN' | 'en-US'; setLanguage?: ((language: 'zh-CN' | 'en-US') => void) | undefined; setLocale?: ((locale: LocalKeys) => void) | undefined; }>; /** * I18nProvide 组件 - 国际化提供者组件 * * 该组件提供国际化功能,支持中英文切换,自动检测用户语言偏好。 * 集成Ant Design的ConfigProvider,提供完整的国际化支持。 * * @component * @description 国际化提供者组件,支持多语言切换 * @param {Object} props - 组件属性 * @param {React.ReactNode} props.children - 子组件 * @param {typeof cnLabels} [props.locale] - 自定义语言环境 * @param {'zh-CN' | 'en-US'} [props.defaultLanguage] - 默认语言 * @param {boolean} [props.autoDetect=true] - 是否自动检测语言 * * @example * ```tsx * * * * ``` * * @returns {React.ReactElement} 渲染的国际化提供者组件 * * @remarks * - 支持中英文语言切换 * - 自动检测用户浏览器语言 * - 集成Ant Design国际化 * - 提供语言环境上下文 * - 支持自定义语言配置 * - 响应式语言切换 * - 提供模板字符串编译功能 * - 支持 localStorage 持久化语言选择 * - 支持 Ant Design ConfigProvider 同步 */ export declare const I18nProvide: React.FC<{ children: React.ReactNode; locale?: typeof cnLabels; defaultLanguage?: 'zh-CN' | 'en-US'; autoDetect?: boolean; }>; /** * 编译模板字符串,将其中的变量占位符替换为对应的值 * * @param template - 包含变量占位符的模板字符串,格式为 ${variableName} * @param variables - 变量名和对应值的键值对对象,默认为空对象 * @returns 替换变量后的字符串。如果变量在variables中不存在,则显示为[variableName] * * @example * // 返回 "你好,世界!" * compileTemplate("你好,${name}!", { name: "世界" }); * * // 返回 "你好,[name]!"(当变量未提供时) * compileTemplate("你好,${name}!"); */ export declare function compileTemplate(template: string, variables?: Record): string;