1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
8 |
|
9 | var _utils = require('./utils');
|
10 |
|
11 | var utils = _interopRequireWildcard(_utils);
|
12 |
|
13 | var _cookie = require('./languageLookups/cookie');
|
14 |
|
15 | var _cookie2 = _interopRequireDefault(_cookie);
|
16 |
|
17 | var _querystring = require('./languageLookups/querystring');
|
18 |
|
19 | var _querystring2 = _interopRequireDefault(_querystring);
|
20 |
|
21 | var _path = require('./languageLookups/path');
|
22 |
|
23 | var _path2 = _interopRequireDefault(_path);
|
24 |
|
25 | var _header = require('./languageLookups/header');
|
26 |
|
27 | var _header2 = _interopRequireDefault(_header);
|
28 |
|
29 | var _session = require('./languageLookups/session');
|
30 |
|
31 | var _session2 = _interopRequireDefault(_session);
|
32 |
|
33 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
34 |
|
35 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
36 |
|
37 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
38 |
|
39 | function getDefaults() {
|
40 | return {
|
41 | order: ['querystring', 'cookie', 'header'],
|
42 | lookupQuerystring: 'lng',
|
43 | lookupCookie: 'i18next',
|
44 | lookupSession: 'lng',
|
45 | lookupFromPathIndex: 0,
|
46 |
|
47 |
|
48 | caches: false
|
49 |
|
50 |
|
51 | };
|
52 | }
|
53 |
|
54 | var LanguageDetector = function () {
|
55 | function LanguageDetector(services) {
|
56 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
57 | var allOptions = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
|
58 |
|
59 | _classCallCheck(this, LanguageDetector);
|
60 |
|
61 | this.type = 'languageDetector';
|
62 | this.detectors = {};
|
63 |
|
64 | this.init(services, options, allOptions);
|
65 | }
|
66 |
|
67 | _createClass(LanguageDetector, [{
|
68 | key: 'init',
|
69 | value: function init(services) {
|
70 | var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
71 | var allOptions = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
|
72 |
|
73 | this.services = services;
|
74 | this.options = utils.defaults(options, this.options || {}, getDefaults());
|
75 | this.allOptions = allOptions;
|
76 |
|
77 | this.addDetector(_cookie2.default);
|
78 | this.addDetector(_querystring2.default);
|
79 | this.addDetector(_path2.default);
|
80 | this.addDetector(_header2.default);
|
81 | this.addDetector(_session2.default);
|
82 | }
|
83 | }, {
|
84 | key: 'addDetector',
|
85 | value: function addDetector(detector) {
|
86 | this.detectors[detector.name] = detector;
|
87 | }
|
88 | }, {
|
89 | key: 'detect',
|
90 | value: function detect(req, res, detectionOrder) {
|
91 | var _this = this;
|
92 |
|
93 | if (arguments.length < 2) return;
|
94 | if (!detectionOrder) detectionOrder = this.options.order;
|
95 |
|
96 | var found = void 0;
|
97 | detectionOrder.forEach(function (detectorName) {
|
98 | if (found || !_this.detectors[detectorName]) return;
|
99 |
|
100 | var detections = _this.detectors[detectorName].lookup(req, res, _this.options);
|
101 | if (!detections) return;
|
102 | if (typeof detections === 'string') detections = [detections];
|
103 |
|
104 | detections.forEach(function (lng) {
|
105 | if (found) return;
|
106 |
|
107 | var cleanedLng = _this.services.languageUtils.formatLanguageCode(lng);
|
108 |
|
109 | if (_this.services.languageUtils.isWhitelisted(cleanedLng)) {
|
110 | found = cleanedLng;
|
111 | req.i18nextLookupName = detectorName;
|
112 | };
|
113 | });
|
114 | });
|
115 |
|
116 | return found || this.allOptions.fallbackLng && this.allOptions.fallbackLng[0];
|
117 | }
|
118 | }, {
|
119 | key: 'cacheUserLanguage',
|
120 | value: function cacheUserLanguage(req, res, lng, caches) {
|
121 | var _this2 = this;
|
122 |
|
123 | if (arguments.length < 3) return;
|
124 | if (!caches) caches = this.options.caches;
|
125 | if (!caches) return;
|
126 | caches.forEach(function (cacheName) {
|
127 | if (_this2.detectors[cacheName] && _this2.detectors[cacheName].cacheUserLanguage) _this2.detectors[cacheName].cacheUserLanguage(req, res, lng, _this2.options);
|
128 | });
|
129 | }
|
130 | }]);
|
131 |
|
132 | return LanguageDetector;
|
133 | }();
|
134 |
|
135 | LanguageDetector.type = 'languageDetector';
|
136 |
|
137 | exports.default = LanguageDetector; |
\ | No newline at end of file |