You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lib/src/i18n/service/Internationalization.ts

44 lines
1.4 KiB

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.`)
}
}
}