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.
41 lines
1.4 KiB
41 lines
1.4 KiB
import {Request} from "../../http/lifecycle/Request";
|
|
import {Injectable} from "../../di"
|
|
import {Locale} from "../service/Locale";
|
|
import {HTTPKernelModule} from "../../http/kernel/HTTPKernelModule";
|
|
import {HTTPKernel} from "../../http/kernel/HTTPKernel";
|
|
import {InjectSessionHTTPModule} from "../../http/kernel/module/InjectSessionHTTPModule";
|
|
import {Session} from "../../http/session/Session";
|
|
|
|
/**
|
|
* An HTTP kernel module that adds the Locale service to the request container.
|
|
*/
|
|
@Injectable()
|
|
export class InjectRequestLocale extends HTTPKernelModule {
|
|
public executeWithBlockingWriteback = true
|
|
|
|
/** Register this kernel module to the given kernel. */
|
|
public static register(kernel: HTTPKernel) {
|
|
kernel.register(this).after(InjectSessionHTTPModule)
|
|
}
|
|
|
|
/**
|
|
* Gets or sets the default locale in the session and instantiates a Locale
|
|
* service into the Request container based on said locale.
|
|
* @param request
|
|
*/
|
|
public async apply(request: Request) {
|
|
const session = <Session> request.make(Session)
|
|
const locale = <Locale> request.make(Locale)
|
|
|
|
// Set the default locale in the session
|
|
if ( !session.get('i18n.locale') ) {
|
|
session.set('i18n.locale', locale.getDefaultLocale())
|
|
}
|
|
|
|
locale.setLocale(session.get('i18n.locale'))
|
|
request.registerSingletonInstance(Locale, locale)
|
|
|
|
return request
|
|
}
|
|
}
|