ai-i18n-translator
Version:
AI-powered i18n auto-translation tool with pluggable extractors, translators, and organizers
63 lines (55 loc) • 2 kB
TypeScript
// Extract parameter names from translation strings with {{param}} format
type ExtractParams<T extends string> =
T extends `${infer _Start}{{${infer Param}}}${infer Rest}`
? Param | ExtractParams<Rest>
: never;
// Ensure all required parameters are provided
type RequiredParams<T extends string> = ExtractParams<T> extends never
? {}
: { [K in ExtractParams<T>]: string | number };
// Translation options with optional metadata
export interface TranslationOptions {
description?: string;
plural?: boolean | object;
ns?: string;
[key: string]: any;
}
// Combined options type that enforces required parameters
type OptionsWithParams<T extends string> = RequiredParams<T> & TranslationOptions;
export interface TranslationMetadata {
key: string;
description?: string;
plural?: object;
ns?: string;
}
export interface WrapperInstance {
t2: <T extends string>(
key: T,
...args: ExtractParams<T> extends never
? [options?: TranslationOptions]
: [options: OptionsWithParams<T>]
) => string;
exportKeysForTranslation: () => Record<string, TranslationMetadata[]>;
clearExtractedKeys: () => void;
getExtractedKeys: () => TranslationMetadata[];
}
export function initWithI18next(tFunction: Function): any;
export function t2<T extends string>(
key: T,
...args: ExtractParams<T> extends never
? [options?: TranslationOptions]
: [options: OptionsWithParams<T>]
): string;
export function exportKeysForTranslation(): Record<string, TranslationMetadata[]>;
export function clearExtractedKeys(): void;
export function getExtractedKeys(): TranslationMetadata[];
export function createWrapper(tFunction: Function): WrapperInstance;
declare const _default: {
initWithI18next: typeof initWithI18next;
t2: typeof t2;
exportKeysForTranslation: typeof exportKeysForTranslation;
clearExtractedKeys: typeof clearExtractedKeys;
getExtractedKeys: typeof getExtractedKeys;
createWrapper: typeof createWrapper;
};
export default _default;