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.
54 lines (46 loc) • 1.49 kB
text/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;
};