@ornery/web-components 1.1.7 → 1.1.8

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/i18n.js +24 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ornery/web-components",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "WebComponents html loader and optional runtime mixins to enable creation of custom HTML elements using es6 template literal syntax in *.html files.",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/i18n.js CHANGED
@@ -80,8 +80,8 @@ const I18n = new (class {
80
80
  getLang() {
81
81
  return DataManager.get('i18n-language') || '';
82
82
  }
83
- getRootLang() {
84
- return this.getLang().split(this._altLangRegex)[0];
83
+ getRootLang(lang) {
84
+ return (lang || this.getLang()).split(this._altLangRegex)[0];
85
85
  }
86
86
  /**
87
87
  * @memberof I18n
@@ -110,10 +110,9 @@ const I18n = new (class {
110
110
  return allMessages;
111
111
  } else {
112
112
  lang = lang || this.getLang();
113
- const rootLang = lang
114
- ? lang.split(this._altLangRegex)[0]
115
- : this.getRootLang();
113
+ const rootLang = this.getRootLang(lang);
116
114
  return {
115
+ ...this._fallbackMessages,
117
116
  ...allMessages[rootLang],
118
117
  ...allMessages[lang],
119
118
  };
@@ -137,7 +136,9 @@ const I18n = new (class {
137
136
  * })
138
137
  */
139
138
  setMessages(values) {
140
- return DataManager.set('i18n-messages', values);
139
+ const response = DataManager.set('i18n-messages', values);
140
+ this.setFallbackMessages();
141
+ return response;
141
142
  }
142
143
  /**
143
144
  * @memberof I18n
@@ -159,22 +160,28 @@ const I18n = new (class {
159
160
  lang = this.getLang();
160
161
  }
161
162
  lang = lang.toLowerCase();
162
- const rootLang = lang.split(this._altLangRegex)[0];
163
+ const rootLang = this.getRootLang(lang);
163
164
  const existing = this.getMessages('all');
164
- existing[rootLang] = {
165
- ...(existing[rootLang] || {}),
166
- ...newStrings,
167
- };
168
165
  existing[lang] = {
169
166
  ...(existing[lang] || {}),
170
167
  ...newStrings,
171
168
  };
172
- this.setMessages(existing);
173
- if (lang === this._defaultLang) {
174
- this._fallbackMessages = this.getMessages(lang);
175
- } else if (rootLang === this._defaultLang) {
176
- this._fallbackMessages = this.getMessages(rootLang);
169
+ if (rootLang !== lang) {
170
+ existing[rootLang] = {
171
+ ...(existing[rootLang] || {}),
172
+ ...newStrings,
173
+ };
177
174
  }
175
+ this.setMessages(existing);
176
+ this.setFallbackMessages();
177
+ }
178
+
179
+ setFallbackMessages(){
180
+ const rootLang = this.getRootLang(this._defaultLang);
181
+ this._fallbackMessages = {
182
+ ...this.getMessages(this._defaultLang),
183
+ ...this.getMessages(rootLang)
184
+ };
178
185
  }
179
186
 
180
187
  /**
@@ -331,6 +338,7 @@ if (
331
338
  typeof customElements !== 'undefined' &&
332
339
  !customElements.get('i18n-message')
333
340
  ) {
341
+ window.I18n = I18n;
334
342
  customElements.define('i18n-message', withContext(I18nMessage));
335
343
  }
336
344