@ui18n/angular
Version:
🅰️ Modern Angular internationalization with standalone components, signals, and dependency injection support for Angular 15+
233 lines • 4.96 kB
TypeScript
/**
* @fileoverview UI18n 增量翻译系统
* 实现版本控制和增量更新机制
* @author Claude Code
* @created 2025-08-23
*/
/**
* 翻译条目版本信息
*/
export interface TranslationVersion {
/** 版本号 */
version: string;
/** 内容哈希 */
hash: string;
/** 翻译内容 */
content: string;
/** 创建时间 */
timestamp: number;
/** 翻译来源 */
source: 'manual' | 'auto' | 'import' | 'fallback';
/** 质量评分 */
quality?: number;
/** 备注信息 */
notes?: string;
}
/**
* 翻译文件状态
*/
export interface TranslationFileStatus {
/** 文件路径 */
filePath: string;
/** 语言代码 */
language: string;
/** 当前版本 */
currentVersion: string;
/** 最后修改时间 */
lastModified: number;
/** 条目总数 */
totalEntries: number;
/** 已翻译条目数 */
translatedEntries: number;
/** 待翻译条目数 */
pendingEntries: number;
/** 冲突条目数 */
conflictEntries: number;
/** 文件哈希 */
fileHash: string;
}
/**
* 差异变更记录
*/
export interface ChangeRecord {
/** 变更ID */
id: string;
/** 变更类型 */
type: 'add' | 'update' | 'delete';
/** 键名 */
key: string;
/** 旧值 */
oldValue?: string;
/** 新值 */
newValue?: string;
/** 变更时间 */
timestamp: number;
/** 语言代码 */
language: string;
/** 变更来源 */
source: string;
/** 是否为冲突 */
isConflict: boolean;
}
/**
* 冲突解决策略
*/
export type ConflictResolution = 'keep_local' | 'keep_remote' | 'keep_both' | 'manual';
/**
* 同步配置
*/
export interface IncrementalSyncConfig {
/** 启用增量翻译 */
enabled: boolean;
/** 自动同步间隔(秒) */
autoSyncInterval: number;
/** 备份保留数量 */
backupRetention: number;
/** 默认冲突解决策略 */
defaultResolution: ConflictResolution;
/** 启用版本压缩 */
enableCompression: boolean;
/** 工作目录 */
workingDir: string;
/** 远程仓库地址 */
remoteUrl?: string;
}
/**
* 同步状态
*/
export interface SyncStatus {
/** 是否正在同步 */
syncing: boolean;
/** 最后同步时间 */
lastSyncTime: number;
/** 待同步变更数 */
pendingChanges: number;
/** 冲突数 */
conflicts: number;
/** 同步进度 */
progress: number;
/** 状态消息 */
message: string;
}
/**
* 增量翻译管理器
*/
export declare class IncrementalTranslationManager {
private config;
private fileStatuses;
private versionHistory;
private changeLog;
private conflicts;
private syncTimer?;
private syncStatus;
constructor(config?: Partial<IncrementalSyncConfig>);
/**
* 初始化增量翻译系统
*/
initialize(): Promise<void>;
/**
* 确保工作目录存在
*/
private ensureWorkingDir;
/**
* 加载元数据
*/
private loadMetadata;
/**
* 保存元数据
*/
private saveMetadata;
/**
* 扫描翻译文件
*/
private scanTranslationFiles;
/**
* 分析翻译文件
*/
private analyzeFile;
/**
* 检测文件变更
*/
private detectChanges;
/**
* 比较翻译内容
*/
private compareTranslations;
/**
* 保存版本
*/
private saveVersion;
/**
* 清理旧版本
*/
private cleanupOldVersions;
/**
* 手动同步
*/
sync(): Promise<void>;
/**
* 检测冲突
*/
private detectConflicts;
/**
* 解决冲突
*/
private resolveConflicts;
/**
* 自动解决冲突
*/
private autoResolveConflict;
/**
* 应用变更
*/
private applyChanges;
/**
* 应用文件变更
*/
private applyFileChanges;
/**
* 获取同步状态
*/
getSyncStatus(): SyncStatus;
/**
* 获取文件状态
*/
getFileStatuses(): TranslationFileStatus[];
/**
* 获取冲突列表
*/
getConflicts(): Map<string, ChangeRecord[]>;
/**
* 手动解决冲突
*/
resolveConflict(conflictKey: string, resolution: ConflictResolution, selectedChangeId?: string): Promise<void>;
/**
* 启动自动同步
*/
private startAutoSync;
/**
* 停止自动同步
*/
stopAutoSync(): void;
/**
* 计算内容哈希
*/
private calculateHash;
/**
* 生成版本号
*/
private generateVersion;
/**
* 生成变更ID
*/
private generateChangeId;
/**
* 清理资源
*/
cleanup(): Promise<void>;
}
/**
* 默认增量翻译实例
*/
export declare const defaultIncrementalManager: IncrementalTranslationManager;
//# sourceMappingURL=incremental-translation.d.ts.map