i18n-llm-translate
Version:
Automatically translates namespace-based JSON translation files across multiple languages from any source language
56 lines (55 loc) • 2 kB
TypeScript
export type TranslateOptionsNamesMappingLanguagesCallback = (languageCode: string, options: TranslateOptions) => string;
/**
* Parameters: {language}
* Default value: {language}
*/
export type TranslateOptionsNamesMappingLanguagesBasicConfig = {
base?: string;
targets?: string;
};
export type TranslateOptionsNamesMappingLanguages = TranslateOptionsNamesMappingLanguagesCallback | TranslateOptionsNamesMappingLanguagesBasicConfig;
export interface TranslateOptionsNamesMapping {
languages?: TranslateOptionsNamesMappingLanguages;
/**
* Default: .translations-cache
*/
jsonCache?: string;
}
export interface TranslateOptions {
languagesDirectoryPath: string;
baseLanguageCode: string;
targetLanguageCodes: string[];
namesMapping?: TranslateOptionsNamesMapping;
applicationContextEntries: string[];
cleanup?: boolean;
debug?: boolean;
}
export interface TranslateEngineTranslateResult {
[key: string]: Record<string, any>;
}
export interface TranslateEngine {
name: string;
translate(translations: Record<string, any>, options: TranslateOptions): Promise<TranslateEngineTranslateResult>;
translateMissed(missingTranslations: TranslateNamespaceMissingTranslations, options: TranslateOptions): Promise<TranslateEngineTranslateResult>;
}
export interface TranslationsByLanguage {
[languageCode: string]: Record<string, any>;
}
export interface TranslateNamespaceMissingTranslations {
/**
* Only these which are missed in target languages
*/
baseLanguageTranslations: Record<string, any>;
targetLanguageTranslationsKeys: TranslationsByLanguage;
}
export interface TranslateNamespace {
jsonFileName: string;
baseLanguageTranslations: Record<string, any>;
targetLanguages: {
dirty: boolean;
languageCode: string;
translations: Record<string, any>;
}[];
write(): Promise<void>;
getMissingTranslations(): TranslateNamespaceMissingTranslations | undefined;
}