i18n-translate-agent
Version:
An intelligent i18n translation agent powered by OpenAI, supporting automatic translation of JSON files with caching and progress tracking
146 lines (126 loc) • 2.81 kB
text/typescript
import { MultiBar } from "cli-progress";
import OpenAI, { ClientOptions } from "openai";
import { ChatCompletionCreateParams } from "openai/resources";
export interface ILanguage {
/** 语言code */
code: SupportLanguageType;
/**语言名称 */
name: string;
}
export type SupportLanguageType =
| "en"
| "zh-CN"
| "zh-TW"
| "ja"
| "ar"
| "bn"
| "de"
| "es-ES"
| "fr"
| "hi"
| "id"
| "it"
| "ko"
| "ms"
| "my"
| "ne-NP"
| "nl"
| "pl"
| "pt-PT"
| "ru"
| "tl"
| "tr"
| "vi"
| "uk"
| "ur-PK";
export type SupportLanguageMap = Partial<
Record<SupportLanguageType, ILanguage>
>;
export interface ILogError {
error: Error;
}
export interface ITranslateLogError extends ILogError {
key: string;
language: SupportLanguageType;
fileName: string;
}
export interface ICreateJsonFileParams {
language: SupportLanguageType;
fileName: string;
folderName: string;
jsonData: IJson;
}
export interface IOutputLanguageFile {
folderName: SupportLanguageType;
fileName: string;
jsonMap: IJson;
newTranslations?: IJson; // 只有新翻译的内容,用于写入缓存
}
export interface IRegisterLanguageCacheFile {
folderName: string;
fileName: string;
language: SupportLanguageType;
jsonMap: IJson;
/** await translate file path */
sourceFilePath: string;
}
export interface IJson {
[key: string]: string;
}
export interface ISingleTranslate {
language: SupportLanguageType;
fileName: string;
translateJson: IJson;
multiBar: MultiBar;
callback?: () => void;
}
export interface ITranslateChat {
key: string;
value: string;
language: SupportLanguageType;
index: number;
fileName: string;
}
export interface ITranslateChatResponse {
key: string;
value: string;
index: number;
error?: Error;
}
export interface ICwalletTranslateParams {
cacheFileRootPath: string;
/** await translate file root path */
fileRootPath: string;
fineTune: string[];
languages: SupportLanguageType[];
outputRootPath?: string;
sourceLanguage?: SupportLanguageType;
openaiClientConfig?: ClientOptions;
chatCompletionCreateParams?: Partial<ChatCompletionCreateParams>;
}
export interface ITranslate {}
export interface IOpenaiConfig {
model: OpenAI.Chat.ChatModel;
}
export interface ITestParams {
key: string;
question: string;
}
export interface IGenerateCacheParams {
sourceFolderPath: string;
sourceLanguage: SupportLanguageType;
languages: SupportLanguageType[];
exportFolderPath: string;
}
export interface IDeleteSingleCacheParams {
keys: string[];
cacheFolderPath: string;
cacheFileName: string;
/** 不传默认删除所有 */
languages?: SupportLanguageType[];
}
export interface ICacheFile {
fileName: string;
filePath: string;
data: Record<string, string>;
}