/** * ui18n 核心类型定义 */ export type SupportedLanguage = 'en' | 'en-US' | 'en-GB' | 'zh-cn' | 'zh-CN' | 'zh-TW' | 'zh-tw' | 'zh-HK' | 'ja' | 'ja-JP' | 'ko' | 'ko-KR' | 'es' | 'es-ES' | 'es-MX' | 'pt' | 'pt-BR' | 'pt-PT' | 'fr' | 'fr-FR' | 'de' | 'de-DE' | 'it' | 'it-IT' | 'nl' | 'nl-NL' | 'ru' | 'ru-RU' | 'ar' | 'ar-SA' | 'hi' | 'hi-IN' | 'th' | 'th-TH' | 'vi' | 'vi-VN' | 'id' | 'id-ID' | 'ms' | 'ms-MY' | 'tl' | 'tl-PH' | 'pl' | 'pl-PL' | 'auto' | string; export type AIProvider = 'openai' | 'anthropic' | 'google' | 'deepl' | 'azure' | 'aws' | 'baidu' | 'tencent' | 'youdao' | 'alibaba' | 'custom'; export interface UI18nConfig { /** 默认语言 */ defaultLanguage?: SupportedLanguage; /** 回退语言 */ fallbackLanguage?: SupportedLanguage; /** 预装翻译字典 */ messages?: Record>; /** 预装翻译字典(别名,与messages等价) */ translations?: Record>; /** 缓存配置 */ cache?: CacheConfig; /** AI提供商配置 */ aiProvider?: AIProviderConfig; /** 调试模式 */ debug?: boolean; /** 服务模式 */ serviceMode?: 'self-hosted' | 'cloud' | 'hybrid'; /** 云端服务配置 */ cloudConfig?: { apiEndpoint?: string; apiKey?: string; timeout?: number; }; /** 自托管配置 */ selfHostedConfig?: { enableLocalCache?: boolean; enableOfflineMode?: boolean; }; /** 启用智能路由 */ enableSmartRouting?: boolean; /** 启用质量检查 */ enableQualityCheck?: boolean; /** 版本控制配置 */ versionControl?: { enabled?: boolean; autoSyncInterval?: number; maxVersions?: number; remoteEndpoint?: string; apiKey?: string; enableIncrementalSync?: boolean; conflictResolution?: 'local' | 'remote' | 'merge' | 'manual'; }; /** 批量优化配置 */ batchOptimization?: { enabled?: boolean; debounceDelay?: number; batchSize?: number; maxWaitTime?: number; concurrencyLimit?: number; maxRetries?: number; retryDelay?: number; enableSmartScheduling?: boolean; enablePriorityQueue?: boolean; costControl?: { dailyBudget?: number; monthlyBudget?: number; maxCharsPerRequest?: number; maxRequestsPerBatch?: number; costThresholdWarning?: number; enableCostEstimation?: boolean; }; }; /** 安全配置相关 */ encryptionKey?: string; /** 配置文件路径 */ configPath?: string; /** 启用安全日志 */ enableSecureLogging?: boolean; /** 🎉 SEO配置 - 多语言SEO支持 */ seo?: { /** URL模式:'auto' | 'path' | 'subdomain' | 'query' */ urlPattern?: 'auto' | 'path' | 'subdomain' | 'query'; /** 自定义语言代码映射 */ customLanguageMap?: Record; /** 是否生成alternate链接 */ generateAlternates?: boolean; /** 默认域名(用于子域名模式) */ defaultDomain?: string; }; } export interface AIProviderConfig { /** 提供商类型 */ type: AIProvider; /** API密钥 */ apiKey: string; /** 自定义端点(用于自建服务) */ endpoint?: string; /** 请求超时时间(毫秒) */ timeout?: number; /** 区域设置(用于AWS、Azure等) */ region?: string; /** 模型/引擎选择 */ model?: string; /** 额外的认证参数 */ auth?: { secretKey?: string; appId?: string; appSecret?: string; tenantId?: string; subscriptionKey?: string; }; /** 服务质量设置 */ quality?: { priority: 'speed' | 'quality' | 'balanced'; maxRetries: number; fallbackEnabled: boolean; }; } export interface CacheConfig { /** 是否启用缓存 */ enabled: boolean; /** 缓存类型 */ type: 'memory' | 'localStorage' | 'filesystem' | 'indexeddb' | 'hybrid' | 'custom'; /** 缓存过期时间(毫秒) */ ttl?: number; /** 最大缓存条目数 */ maxSize?: number; /** 最大内存使用量(MB),仅适用于内存缓存 */ maxMemoryMB?: number; /** 缓存目录路径,仅适用于文件系统缓存 */ cacheDir?: string; } export interface TranslationResult { text: string; sourceLanguage: SupportedLanguage; targetLanguage: SupportedLanguage; confidence: number; source?: 'ai' | 'builtin' | 'cache'; processingTime?: number; usage?: { tokensUsed: number; cost: number; }; timestamp?: Date; } export interface TranslationRequest { /** 要翻译的文本 */ text: string; /** 源语言 */ from: SupportedLanguage; /** 目标语言 */ to: SupportedLanguage; /** 上下文信息 */ context?: string; /** 强制使用AI翻译 */ forceAI?: boolean; /** 跳过缓存 */ skipCache?: boolean; } export interface DictionaryEntry { /** 原文 */ original: string; /** 翻译 */ translation: string; /** 语言 */ language: SupportedLanguage; /** 分类(UI、业务等) */ category?: string; /** 使用频率 */ frequency?: number; } export interface LanguageDetectionResult { /** 检测到的语言 */ language: SupportedLanguage; /** 置信度(0-1) */ confidence: number; } export interface TranslationSearchResult { /** 匹配的词典条目 */ entry: DictionaryEntry; /** 匹配得分(0-1) */ score: number; /** 匹配类型 */ matchType: 'exact' | 'partial' | 'fuzzy'; } export interface EnterpriseUI18nConfig extends UI18nConfig { defaultLanguage: SupportedLanguage; serviceMode: 'hybrid' | 'cloud'; enableSmartRouting: true; enableQualityCheck: true; versionControl: { enabled: true; autoSyncInterval: number; maxVersions: number; enableIncrementalSync: boolean; conflictResolution: 'local' | 'remote' | 'merge' | 'manual'; }; batchOptimization: { enabled: true; debounceDelay: number; batchSize: number; maxWaitTime: number; concurrencyLimit: number; maxRetries: number; retryDelay: number; enableSmartScheduling: boolean; enablePriorityQueue: boolean; costControl: { dailyBudget: number; monthlyBudget: number; maxCharsPerRequest: number; maxRequestsPerBatch: number; costThresholdWarning: number; enableCostEstimation: boolean; }; }; } export interface TranslationStats { totalTranslations: number; successfulTranslations: number; failedTranslations: number; cachedTranslations: number; successRate: number; averageResponseTime: number; cacheHitRate: number; throughput: number; totalCost: number; dailyCost: number; monthlyCost: number; budgetUsage: number; costPerTranslation: number; cacheUsage: number; dictionaryUsage: number; aiUsage: number; } export interface DeveloperStats { /** 时间范围统计 */ timeRange: { start: Date; end: Date; duration: number; }; /** 翻译活动统计 */ translation: { totalRequests: number; totalCharacters: number; uniqueTexts: number; averageTextLength: number; successfulTranslations: number; failedTranslations: number; successRate: number; requestsPerHour: number; charactersPerHour: number; }; /** 性能指标 */ performance: { averageResponseTime: number; medianResponseTime: number; p95ResponseTime: number; p99ResponseTime: number; fastestResponse: number; slowestResponse: number; throughput: number; errorRate: number; }; /** 缓存统计 */ cache: { hitCount: number; missCount: number; hitRate: number; totalSize: number; entryCount: number; oldestEntry: Date; newestEntry: Date; memoryUsage: number; }; /** 成本分析 */ cost: { totalTokens: number; promptTokens: number; completionTokens: number; estimatedCost: number; costPerTranslation: number; costPerCharacter: number; dailyBudgetUsed: number; monthlyBudgetUsed: number; budgetRemaining: number; topCostlyOperations: Array<{ text: string; cost: number; tokens: number; timestamp: Date; }>; }; /** 语言使用分布 */ languages: { sourceLanguages: Map; targetLanguages: Map; languagePairs: Map; mostUsedPairs: Array<{ from: SupportedLanguage; to: SupportedLanguage; count: number; percentage: number; }>; }; /** 服务提供商统计 */ providers: { aiProvider: { requestCount: number; successCount: number; failureCount: number; averageResponseTime: number; totalCost: number; }; cloudService: { requestCount: number; successCount: number; failureCount: number; averageResponseTime: number; totalCost: number; }; cache: { hitCount: number; missCount: number; hitRate: number; }; builtin: { hitCount: number; coverage: number; }; }; /** 错误分析 */ errors: { totalErrors: number; errorsByType: Map; errorsByProvider: Map; recentErrors: Array<{ type: string; message: string; provider: string; timestamp: Date; context?: any; }>; mostFrequentErrors: Array<{ type: string; count: number; percentage: number; lastOccurrence: Date; }>; }; /** 使用模式分析 */ patterns: { peakHours: Array<{ hour: number; requestCount: number; }>; dailyActivity: Array<{ date: string; requestCount: number; characterCount: number; }>; averageSessionDuration: number; batchSize: { average: number; median: number; max: number; }; }; } export interface LanguagePackStatus { language: SupportedLanguage; totalEntries: number; translatedEntries: number; missingEntries: number; coverage: number; lastUpdated: Date; version: string; size: number; quality: { averageConfidence: number; lowConfidenceEntries: number; needsReview: number; }; source: 'builtin' | 'cache' | 'ai' | 'mixed'; metadata: { createdAt: Date; updatedAt: Date; author?: string; description?: string; }; } export interface StatsQuery { /** 时间范围 */ timeRange?: { start?: Date; end?: Date; period?: 'hour' | 'day' | 'week' | 'month' | 'year'; }; /** 过滤条件 */ filters?: { languages?: SupportedLanguage[]; providers?: ('aiProvider' | 'cloudService' | 'cache' | 'builtin')[]; successful?: boolean; minResponseTime?: number; maxResponseTime?: number; minCost?: number; maxCost?: number; }; /** 聚合选项 */ aggregation?: { groupBy?: 'hour' | 'day' | 'week' | 'language' | 'provider'; metrics?: ('count' | 'cost' | 'responseTime' | 'characters')[]; }; /** 排序选项 */ sort?: { field: string; order: 'asc' | 'desc'; }; /** 分页选项 */ pagination?: { offset?: number; limit?: number; }; } export interface SystemStatus { isHealthy: boolean; services: { cache: 'healthy' | 'warning' | 'error'; dictionary: 'healthy' | 'warning' | 'error'; ai: 'healthy' | 'warning' | 'error'; }; lastUpdate?: Date; version?: string; } export type ServiceMode = 'self-hosted' | 'cloud' | 'hybrid'; export interface IntelligentGroup { id: string; requests: TranslationRequest[]; priority: number; characteristics?: { complexity?: string; domain?: string; averageLength?: number; }; } export interface BatchRequest { id: string; requests: TranslationRequest[]; targetLanguage: SupportedLanguage; priority: number; timestamp: Date | number; } export interface ProcessedBatch { id: string; results: TranslationResult[]; } /** * UI18n实例类型别名 * 兼容开发者期望的类型名称 */ export type UI18nInstance = import('./ui18n').UI18n; /** * 翻译选项类型别名 * 兼容开发者期望的类型名称,与TranslationRequest等价 */ export type TranslationOptions = TranslationRequest; //# sourceMappingURL=types.d.ts.map