i18n-ai-translate
Version:
AI-powered localization CLI, Node library, and GitHub Action. Translate i18next JSON, Gettext PO, Java .properties, and iOS .strings with ChatGPT, Claude, Gemini, or local Ollama models.
46 lines (45 loc) • 1.49 kB
TypeScript
import type { ChatRequest } from "ollama";
import type { ChatSession, StartChatParams } from "@google/generative-ai";
import type { MessageCreateParams } from "@anthropic-ai/sdk/resources";
import type OpenAI from "openai";
import type PromptMode from "./enums/prompt_mode";
export type Chat = ChatSession | OpenAI.Completion;
export type ChatParams = StartChatParams | OpenAI.ChatCompletionCreateParamsNonStreaming | ChatRequest | MessageCreateParams;
export type Model = "gemini-pro" | OpenAI.ChatCompletionCreateParamsNonStreaming["model"] | string;
export type ModelArgs = {
model: Model;
chatParams: ChatParams;
rateLimitMs: number;
apiKey: string | undefined;
host: string | undefined;
promptMode: PromptMode;
batchSize: number;
batchMaxTokens: number;
concurrency: number;
tokensPerMinute?: number;
};
export type GenerateStateCSV = {
fixedTranslationMappings: {
[input: string]: string;
};
translationToRetryAttempts: {
[translation: string]: number;
};
inputLineToTemplatedString: {
[index: number]: Array<string>;
};
splitInput: Array<string>;
generationRetries: number;
};
export type TranslationStats = {
translate: TranslationStatsItem;
verify: TranslationStatsItem;
};
export type TranslationStatsItem = {
batchStartTime: number;
processedItems: number;
processedTokens: number;
enqueuedItems: number;
totalItems: number;
totalTokens: number;
};