@ui18n/vue
Version:
💚 Vue 3 internationalization with Composition API, auto-reactive translations, and seamless TypeScript support
152 lines (151 loc) • 5.19 kB
TypeScript
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;
};