UNPKG

@softkit/i18n

Version:

This library is a simple wrapper based on [nestjs-i18n](https://nestjs-i18n.com/)

61 lines 2.31 kB
"use strict"; 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