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;