@softkit/i18n
Version:
This library is a simple wrapper based on [nestjs-i18n](https://nestjs-i18n.com/)
61 lines • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AcceptLanguageResolver = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const accept_language_parser_1 = require("accept-language-parser");
const decorators_1 = require("../decorators");
let AcceptLanguageResolver = class AcceptLanguageResolver {
constructor(options = {
matchType: 'strict-loose',
}) {
this.options = options;
}
async resolve(context) {
let req;
let service;
switch (context.getType()) {
case 'http': {
req = context.switchToHttp().getRequest();
service = req.i18nService;
break;
}
case 'graphql': {
[, , { req, i18nService: service }] = context.getArgs();
if (!req)
return undefined;
break;
}
default: {
return undefined;
}
}
const lang = req.raw
? req.raw.headers?.['accept-language']
: req?.headers?.['accept-language'];
if (lang) {
const supportedLangs = service.getSupportedLanguages();
let pickedLang;
if (this.options.matchType === 'strict') {
pickedLang = (0, accept_language_parser_1.pick)(supportedLangs, lang);
}
else if (this.options.matchType === 'loose') {
pickedLang = (0, accept_language_parser_1.pick)(supportedLangs, lang, { loose: true });
}
else {
pickedLang =
(0, accept_language_parser_1.pick)(supportedLangs, lang) ??
(0, accept_language_parser_1.pick)(supportedLangs, lang, { loose: true });
}
return pickedLang ?? undefined;
}
return undefined;
}
};
exports.AcceptLanguageResolver = AcceptLanguageResolver;
exports.AcceptLanguageResolver = AcceptLanguageResolver = tslib_1.__decorate([
(0, common_1.Injectable)(),
tslib_1.__param(0, (0, decorators_1.I18nResolverOptions)()),
tslib_1.__metadata("design:paramtypes", [Object])
], AcceptLanguageResolver);
//# sourceMappingURL=accept-language.resolver.js.map