@tolgee/core 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -130,40 +130,36 @@
130
130
  }
131
131
  Object.defineProperty(Properties.prototype, "currentLanguage", {
132
132
  get: function () {
133
- var result;
134
- if (this.config.forceLanguage) {
133
+ var _a;
134
+ if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.forceLanguage) {
135
135
  return this.config.forceLanguage;
136
136
  }
137
- if (typeof localStorage !== 'undefined') {
138
- var storedLanguage = localStorage.getItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY);
137
+ if (this._currentLanguage) {
138
+ return this._currentLanguage;
139
+ }
140
+ if (this.config.languageStore) {
141
+ var storedLanguage = this.getStoredLanguage();
139
142
  if (storedLanguage) {
140
- result = storedLanguage;
141
- }
142
- if (this.config.availableLanguages) {
143
- var isSavedLanguageAvailable = this.config.availableLanguages.indexOf(result) > -1;
144
- if (!isSavedLanguageAvailable) {
145
- result = undefined;
146
- }
143
+ return storedLanguage;
147
144
  }
148
145
  }
149
- else {
150
- result = this._currentLanguage;
151
- }
152
- if (!result) {
153
- result = this.getLanguageByNavigator();
154
- this.currentLanguage = result;
146
+ if (this.config.languageDetect) {
147
+ var detectedLanguage = this.getLanguageByNavigator();
148
+ if (detectedLanguage) {
149
+ return detectedLanguage;
150
+ }
155
151
  }
156
- return result;
152
+ return this.config.defaultLanguage;
157
153
  },
158
154
  set: function (language) {
155
+ var _a;
159
156
  if (!language) {
160
157
  throw new Error("Setting invalid language value ".concat(language));
161
158
  }
162
- if (typeof localStorage === 'undefined') {
163
- this._currentLanguage = language;
164
- return;
159
+ this._currentLanguage = language;
160
+ if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.languageStore) && typeof localStorage !== 'undefined') {
161
+ localStorage.setItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY, language);
165
162
  }
166
- localStorage.setItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY, language);
167
163
  },
168
164
  enumerable: false,
169
165
  configurable: true
@@ -178,6 +174,18 @@
178
174
  enumerable: false,
179
175
  configurable: true
180
176
  });
177
+ Properties.prototype.getStoredLanguage = function () {
178
+ if (typeof localStorage !== 'undefined') {
179
+ var storedLanguage = localStorage.getItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY);
180
+ if (!this.config.availableLanguages) {
181
+ return storedLanguage;
182
+ }
183
+ var isSavedLanguageAvailable = this.config.availableLanguages.indexOf(storedLanguage) > -1;
184
+ if (isSavedLanguageAvailable) {
185
+ return storedLanguage;
186
+ }
187
+ }
188
+ };
181
189
  Properties.prototype.getLanguageByNavigator = function () {
182
190
  if (typeof window !== 'undefined' && this.config.availableLanguages) {
183
191
  var preferred_1 = window.navigator.language;
@@ -192,7 +200,6 @@
192
200
  return twoLetterMatch;
193
201
  }
194
202
  }
195
- return this.config.defaultLanguage;
196
203
  };
197
204
  return Properties;
198
205
  }());
@@ -1636,7 +1643,18 @@
1636
1643
  function TolgeeConfig(config) {
1637
1644
  this.inputPrefix = '%-%tolgee:';
1638
1645
  this.inputSuffix = '%-%';
1646
+ /**
1647
+ * Used when auto detection is not available or is turned off
1648
+ */
1639
1649
  this.defaultLanguage = 'en';
1650
+ /**
1651
+ * Store user language in localStorage (default: true)
1652
+ */
1653
+ this.languageStore = true;
1654
+ /**
1655
+ * Use auto language detection by browser locale (default: true)
1656
+ */
1657
+ this.languageDetect = true;
1640
1658
  this.filesUrlPrefix = 'i18n/';
1641
1659
  this.tagAttributes = {
1642
1660
  textarea: ['placeholder'],
@@ -1749,7 +1767,7 @@
1749
1767
  this.handshake = function () {
1750
1768
  var sharedConfiguration = __assign(__assign({}, _this.properties), { config: __assign(__assign({}, _this.properties.config), {
1751
1769
  //remove properties, which cannot be sent by window.postMessage
1752
- staticData: undefined, targetElement: undefined, _targetElement: undefined, ui: undefined }), uiPresent: Boolean(_this.properties.config.ui), uiVersion: "4.0.0" });
1770
+ staticData: undefined, targetElement: undefined, _targetElement: undefined, ui: undefined }), uiPresent: Boolean(_this.properties.config.ui), uiVersion: "4.1.0" });
1753
1771
  var timer = null;
1754
1772
  var ping = function () {
1755
1773
  _this.messages.send('TOLGEE_READY', sharedConfiguration);