import {Singleton, Inject} from "../../di" import {CommandLine} from "../../cli" import {InjectRequestLocale} from "../modules/InjectRequestLocale" import {locale_template} from "../template/locale" import {Unit} from "../../lifecycle/Unit"; import {HTTPKernel} from "../../http/kernel/HTTPKernel"; import {Config} from "../../service/Config"; import {Logging} from "../../service/Logging"; /** * Application unit to register @extollo/i18n resources. */ @Singleton() export class Internationalization extends Unit { @Inject() protected readonly kernel!: HTTPKernel @Inject() protected readonly config!: Config @Inject() protected readonly logging!: Logging @Inject() protected readonly cli!: CommandLine /** * Registers the locale template and middleware, if enabled by config. * * You can set the "locale.enable" config property to `false` to disable * the InjectRequestLocale HTTP kernel module. */ up() { this.logging.debug(`Registering locale template with CLI...`) this.cli.registerTemplate(locale_template) if ( this.config.get('locale.enable', true) ) { this.kernel.register(InjectRequestLocale).before() } else { this.logging.warn(`@extollo/i18n is registered, but disabled by config. Localization will not be done per-request.`) } } }