i18ntk
Version:
i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.
223 lines (188 loc) • 6.75 kB
TypeScript
// runtime/enhanced.d.ts
// Enhanced runtime API with TypeScript support and AES-256-GCM encryption
export interface TranslationParams extends Record<string, unknown> {
count?: number;
context?: string;
[key: string]: unknown;
}
export interface TranslationOptions {
language?: string;
fallbackLanguage?: string;
namespace?: string;
encryptionKey?: string;
enableEncryption?: boolean;
}
export interface TranslationResult {
text: string;
language: string;
key: string;
params: TranslationParams;
encrypted: boolean;
}
export interface I18nConfig {
baseDir: string;
defaultLanguage: string;
fallbackLanguage: string;
keySeparator: string;
preload: boolean;
encryption: {
enabled: boolean;
algorithm: string;
keyLength: number;
ivLength: number;
authTagLength: number;
};
cache: {
enabled: boolean;
maxSize: number;
ttl: number;
};
security: {
validateInputs: boolean;
sanitizeOutput: boolean;
maxKeyLength: number;
maxValueLength: number;
};
}
export interface TranslationKey<T = string> {
key: string;
defaultValue?: T;
description?: string;
context?: string;
plural?: boolean;
}
export interface PluralizationRule {
rule: (count: number) => number;
examples: string[];
}
export interface LanguageConfig {
code: string;
name: string;
direction: 'ltr' | 'rtl';
pluralRules: PluralizationRule;
dateFormat: string;
numberFormat: string;
}
// Enhanced TypeScript-compatible translation functions
export function translate<T = string>(key: string, params?: TranslationParams, options?: TranslationOptions): Promise<T>;
export function translate<T = string>(key: TranslationKey<T>, params?: TranslationParams, options?: TranslationOptions): Promise<T>;
export const t: typeof translate;
// Type-safe translation with strict typing
export function tTyped<T = string>(key: string, params?: TranslationParams, options?: TranslationOptions): Promise<T>;
// Translation with encryption support
export function translateEncrypted<T = string>(key: string, params?: TranslationParams, options?: TranslationOptions): Promise<T>;
// Batch translation operations
export function translateBatch<T = string>(keys: string[], params?: TranslationParams[], options?: TranslationOptions): Promise<T[]>;
export function translateBatchEncrypted<T = string>(keys: string[], params?: TranslationParams[], options?: TranslationOptions): Promise<T[]>;
// Configuration and initialization
export function initI18nRuntime(options?: Partial<I18nConfig>): Promise<I18nRuntimeInstance>;
export interface I18nRuntimeInstance {
t: typeof translate;
translate: typeof translate;
translateEncrypted: typeof translateEncrypted;
translateBatch: typeof translateBatch;
translateBatchEncrypted: typeof translateBatchEncrypted;
// Language management
setLanguage: (lang: string) => Promise<void>;
getLanguage: () => string;
getAvailableLanguages: () => string[];
refresh: (lang?: string) => Promise<void>;
// Configuration
getConfig: () => I18nConfig;
updateConfig: (updates: Partial<I18nConfig>) => Promise<void>;
// Security and encryption
setEncryptionKey: (key: string) => void;
getEncryptionStatus: () => boolean;
encryptData: (data: string) => Promise<string>;
decryptData: (encryptedData: string) => Promise<string>;
// Validation and utilities
validateTranslationKey: (key: string) => boolean;
sanitizeTranslation: (text: string) => string;
getTranslationMetadata: (key: string) => TranslationResult;
// Type utilities
createTypedTranslator<T>(): TypedTranslator<T>;
}
export interface TypedTranslator<T> {
t: (key: string, params?: TranslationParams, options?: TranslationOptions) => T;
translate: (key: string, params?: TranslationParams, options?: TranslationOptions) => T;
}
// Utility types for better TypeScript support
export type TranslationNamespace = string;
export type TranslationKeyPath = string;
export type TranslationValue = string | number | boolean | null;
export interface TranslationSchema {
[key: string]: TranslationValue | TranslationSchema;
}
// Error handling types
export interface TranslationError extends Error {
code: string;
key: string;
language: string;
params?: TranslationParams;
}
export interface ValidationError extends TranslationError {
validationErrors: string[];
}
// Plugin system for extensibility
export interface TranslationPlugin {
name: string;
version: string;
transform?: (text: string, params: TranslationParams, options: TranslationOptions) => string;
validate?: (key: string, params: TranslationParams) => boolean;
encrypt?: (data: string, key: string) => Promise<string>;
decrypt?: (encryptedData: string, key: string) => Promise<string>;
}
// Event system for monitoring
export interface TranslationEvent {
type: 'translation' | 'error' | 'validation' | 'encryption';
key: string;
language: string;
params?: TranslationParams;
result?: string;
error?: TranslationError;
timestamp: Date;
duration: number;
}
export type TranslationEventHandler = (event: TranslationEvent) => void;
// Performance monitoring
export interface PerformanceMetrics {
totalTranslations: number;
cacheHitRate: number;
averageTranslationTime: number;
encryptionTime: number;
memoryUsage: number;
}
// Advanced configuration builders
export class I18nConfigBuilder {
static create(): I18nConfigBuilder;
withBaseDir(dir: string): I18nConfigBuilder;
withDefaultLanguage(lang: string): I18nConfigBuilder;
withEncryption(key: string): I18nConfigBuilder;
withCache(enabled: boolean, maxSize?: number, ttl?: number): I18nConfigBuilder;
withSecurity(options: Partial<I18nConfig['security']>): I18nConfigBuilder;
build(): I18nConfig;
}
// Namespace management
export interface NamespaceManager {
addNamespace(name: string, translations: TranslationSchema): Promise<void>;
removeNamespace(name: string): Promise<void>;
getNamespace(name: string): TranslationSchema | null;
listNamespaces(): string[];
}
// Migration utilities
export interface MigrationOptions {
fromVersion: string;
toVersion: string;
backup: boolean;
dryRun: boolean;
}
export function migrateTranslations(options: MigrationOptions): Promise<MigrationResult>;
export interface MigrationResult {
success: boolean;
migratedKeys: number;
errors: string[];
warnings: string[];
backupPath?: string;
}
// Export compatibility with existing runtime
export * from './i18ntk.d.ts';