UNPKG

@ui18n/vue

Version:

💚 Vue 3 internationalization with Composition API, auto-reactive translations, and seamless TypeScript support

152 lines (151 loc) 5.19 kB
import { ComputedRef } from 'vue'; import { UI18n, SupportedLanguage } from '@ui18n/core'; /** * 定义 useUI18n 返回的类型 */ export interface UseUI18n { ui18n: UI18n; state: { readonly currentLanguage: SupportedLanguage; }; setLanguage: (language: SupportedLanguage) => void; t: (text: string, params?: Record<string, any>, options?: { to?: string; }) => string; } /** * useUI18n 组合式函数 * 用于在组件中方便地访问 ui18n 实例和相关功能 * @returns UI18n 上下文 */ export declare const useUI18n: () => UseUI18n; /** * useTranslation 组合式函数 * 用于单个文本的翻译 */ export declare const useTranslation: (text: string, options?: { language?: SupportedLanguage; context?: string; }) => { translatedText: ComputedRef<string>; loading: ComputedRef<boolean>; error: ComputedRef<Error>; translate: () => Promise<void>; }; /** * 增强的批量翻译组合式函数 * 集成智能批量优化功能 */ export interface UseBatchTranslationOptions { language?: SupportedLanguage; context?: string; maxConcurrency?: number; priority?: 'low' | 'normal' | 'high'; useOptimizer?: boolean; enableProgressTracking?: boolean; onProgress?: (progress: number, completed: number, total: number) => void; onError?: (error: Error, failedText: string) => void; } export declare const useBatchTranslation: (texts: string[], options?: UseBatchTranslationOptions) => { translatedTexts: ComputedRef<Record<string, string>>; translationArray: ComputedRef<string[]>; loading: ComputedRef<boolean>; error: ComputedRef<Error>; progress: ComputedRef<number>; completedCount: ComputedRef<number>; totalCount: number; failedTexts: ComputedRef<string[]>; optimizerStats: ComputedRef<any>; refresh: () => Promise<void>; retryFailed: () => Promise<void>; translateBatch: (textsToTranslate?: string[], skipCache?: boolean) => Promise<void>; }; /** * useLanguageDetection 组合式函数 * 用于语言检测 */ export declare const useLanguageDetection: () => { detectedLanguage: ComputedRef<string>; confidence: ComputedRef<number>; loading: ComputedRef<boolean>; detectLanguage: (text: string) => Promise<void>; }; /** * useRealTimeSync 组合式函数 * 实时同步功能 */ export interface UseRealTimeSyncOptions { enableVersionControl?: boolean; websocketUrl?: string; sseUrl?: string; syncMethod?: 'websocket' | 'sse' | 'polling'; onVersionUpdate?: (language: SupportedLanguage, version: string) => void; onSyncError?: (error: Error) => void; onConflictDetected?: (language: SupportedLanguage, conflict: any) => void; } export declare const useRealTimeSync: (options?: UseRealTimeSyncOptions) => { status: ComputedRef<{ enabled: boolean; connected: boolean; method: string; lastEvent: number | undefined; syncErrors: number; }>; isConnected: ComputedRef<boolean>; lastSyncTime: ComputedRef<Date>; syncErrors: ComputedRef<number>; connect: () => Promise<boolean>; disconnect: () => void; reconnect: () => Promise<boolean>; manualSync: (language?: SupportedLanguage) => Promise<boolean>; }; /** * useCacheOptimization 组合式函数 * 缓存优化功能 */ export interface UseCacheOptimizationOptions { enableAutoCleanup?: boolean; cleanupInterval?: number; memoryThreshold?: number; enablePreloading?: boolean; preloadLanguages?: string[]; onCacheEvent?: (event: 'hit' | 'miss' | 'cleanup' | 'preload', details?: any) => void; } export declare const useCacheOptimization: (options?: UseCacheOptimizationOptions) => { stats: ComputedRef<any>; isOptimizing: ComputedRef<boolean>; lastCleanup: ComputedRef<Date>; preloadProgress: ComputedRef<number>; clearCache: (pattern?: string) => Promise<void>; optimizeCache: () => Promise<void>; preloadLanguage: (language: string) => Promise<void>; updateStats: () => void; }; export declare function useAccessibility(): { announceToScreenReader: (message: string) => void; getAccessibilityProps: (role?: string) => { role: string; tabindex: string; 'aria-label': string; 'aria-describedby': string; 'aria-expanded': boolean; 'aria-haspopup': boolean; }; handleKeyboardNavigation: (event: KeyboardEvent, callbacks: { onEnter?: () => void; onEscape?: () => void; onSpace?: () => void; onArrowUp?: () => void; onArrowDown?: () => void; onTab?: () => void; }) => void; }; export declare function useTimeout(): { createTimeout: (callback: () => void, delay: number) => NodeJS.Timeout; clearTimeout: (timeoutId: NodeJS.Timeout) => void; createAbortController: () => AbortController; withTimeout: <T>(promise: Promise<T>, timeoutMs: number, timeoutMessage?: string) => Promise<T>; debounce: <T extends (...args: any[]) => any>(func: T, delay: number) => T; throttle: <T extends (...args: any[]) => any>(func: T, limit: number) => T; cleanup: () => void; };