angular-translation-checker
Version:
A comprehensive tool for analyzing translation keys in Angular projects using ngx-translate
93 lines (76 loc) • 3.05 kB
text/typescript
// Main entry point for the TypeScript version
export * from './types';
export * from './core/translation-checker';
export * from './core/config-manager';
export * from './core/plugin-manager';
export * from './core/logger';
export * from './core/event-bus';
export * from './core/filesystem';
// Built-in plugins
export * from './plugins/extractors/typescript-extractor';
export * from './plugins/extractors/html-extractor';
export * from './plugins/analyzers/core-analyzer';
export * from './plugins/formatters/console-formatter';
import { TranslationChecker } from './core/translation-checker';
import { TypeScriptExtractor } from './plugins/extractors/typescript-extractor';
import { HtmlExtractor } from './plugins/extractors/html-extractor';
import { CoreAnalyzer } from './plugins/analyzers/core-analyzer';
import { ConsoleFormatter } from './plugins/formatters/console-formatter';
import { JsonFormatter } from './plugins/formatters/json-formatter';
import { HtmlFormatter } from './plugins/formatters/html-formatter';
import { AnalysisConfig } from './types';
/**
* Create a new translation checker instance with built-in plugins
*/
export async function createTranslationChecker(): Promise<TranslationChecker> {
const checker = new TranslationChecker();
// We'll register built-in plugins during initialization
return checker;
}
/**
* Register built-in plugins with a translation checker instance
*/
export async function registerBuiltInPlugins(
checker: TranslationChecker,
config: any
): Promise<void> {
const pluginManager = (checker as any).pluginManager;
// Register extractors
await pluginManager.registerPlugin(new TypeScriptExtractor(), config);
await pluginManager.registerPlugin(new HtmlExtractor(), config);
// Register analyzer
await pluginManager.registerPlugin(new CoreAnalyzer(), config);
// Register formatters
await pluginManager.registerPlugin(new ConsoleFormatter(), config);
await pluginManager.registerPlugin(new JsonFormatter(), config);
await pluginManager.registerPlugin(new HtmlFormatter(), config);
}
/**
* Convenience function for quick analysis
*/
export async function analyzeTranslations(configPath?: string, configOverrides?: Partial<AnalysisConfig>) {
const checker = await createTranslationChecker();
try {
// Initialize with configuration and overrides
const config = await checker.initialize(configPath, configOverrides);
// Register built-in plugins
await registerBuiltInPlugins(checker, config);
// Run analysis
const result = await checker.analyze(config);
// Format output
const output = await checker.format(
result,
config.outputFormat || 'console',
config.outputSections || ['summary', 'unused', 'missing']
);
// Generate reports
await checker.report(result, output);
return {
result,
output,
hasIssues: result.unusedKeys.length > 0 || result.missingKeys.length > 0
};
} finally {
await checker.cleanup();
}
}