UNPKG

@o3r/localization

Version:

This module provides a runtime dynamic language/translation support and debug tools.

126 lines 4.63 kB
import { logging } from '@angular-devkit/core'; import type { LocalizationExtractorBuilderSchema } from '../localization-extractor/schema'; import type { JSONLocalization, LocalizationMetadata } from '@o3r/localization'; /** Map of Localization Metadata base on localization key */ export interface LocalizationMetadataAsMap { [key: string]: JSONLocalization; } /** Localization structure */ export interface LocalizationJsonValue { /** Localization Description */ description: string; /** Determine if the item can have multiple extensions */ dictionary?: boolean; /** Determine if the value has to be overridden */ referenceData?: boolean; /** Localization default value */ defaultValue?: string; /** Tags used for filtering/categorizing */ tags?: string[]; /** Reference to other localization */ $ref?: string; } /** Localization file structure */ export interface LocalizationJsonFile { [key: string]: LocalizationJsonValue; } /** Localization file mapping */ export interface LocalizationFileMap { [file: string]: { data: LocalizationJsonFile; isDependency: boolean; }; } /** Metadata file mapping */ export interface LibraryMetadataMap { [libraryMetadataFile: string]: LocalizationMetadata; } /** * Localization extractor */ export declare class LocalizationExtractor { private readonly options?; /** TsConfig of the file to base on */ private readonly tsconfigPath; private readonly logger; constructor(tsconfigPath: string, logger: logging.LoggerApi, options?: Partial<LocalizationExtractorBuilderSchema> | undefined); /** Get the list of file from tsconfig.json */ private getFilesFromTsConfig; /** * Return the class node if the class is an angular element * @param source Ts file source */ private getAngularClassNode; /** * Get the list of referenced translation files * @param localizationFileContent JSON content of a location file * @param localizationFilePath Path of the localization file */ private getReferencedFiles; /** * Read a localization file * @param locFile Path to the localization file */ private readLocalizationFile; /** * Read a metadata file * @param metadataFile Path to the metadata file */ private readMetadataFile; /** * Generate a metadata item from a localization item * @param loc Localization item * @param key Key of the localization */ private generateMetadataItemFromLocalization; /** * Compares two JSONLocalization object by their keys and returns the result of the string comparison * @param a JSONLocalization * @param b JSONLocalization */ private compareKeys; /** Get the list of patterns from tsconfig.json */ getPatternsFromTsConfig(): { include: string[]; exclude: string[]; cwd: string; }; /** * Generate the localization mapping for a list of files * @param localizationFiles Localization files to load * @param alreadyLoadedFiles List of localization files already loadded * @param isDependency Determine if the list of files are dependencies of others */ getLocalizationMap(localizationFiles: string[], alreadyLoadedFiles?: string[], isDependency?: boolean): Promise<LocalizationFileMap>; /** * Extract the localization mapping from a tsconfig file * @param extraLocalizationFiles Additional translations to add */ extractLocalizationFromTsConfig(extraLocalizationFiles?: string[]): Promise<LocalizationFileMap>; /** * Retrieve metadata from libraries * @param libraries Libraries on which the project depend */ getMetadataFromLibraries(libraries: string[]): Promise<LibraryMetadataMap>; /** * Retrieve metadata from metadata files * @param metadataFiles Metadata files */ getMetadataFromFiles(metadataFiles: string[]): Promise<LibraryMetadataMap>; /** * Generate metadata from localization and library metadata mappings * @param localizationMap Map of localization files * @param options Option of generation * @param options.ignoreDuplicateKeys * @param options.libraryMetadata * @param options.outputFile * @param options.sortKeys */ generateMetadata(localizationMap: LocalizationFileMap, options: { ignoreDuplicateKeys: boolean; libraryMetadata: LibraryMetadataMap; outputFile: string; sortKeys: boolean; }): LocalizationMetadata; } //# sourceMappingURL=localization.generator.d.ts.map