@rxap/ngx-localize 19.1.0-dev.3 → 19.1.0-dev.4

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 (41) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/compodoc/changelog.html +5 -0
  3. package/compodoc/dependencies.html +2 -2
  4. package/compodoc/injectables/I18nService.html +17 -6
  5. package/compodoc/injectables/LanguageSelectorService.html +34 -40
  6. package/compodoc/js/menu-wc.js +1 -1
  7. package/compodoc/js/menu-wc_es5.js +1 -1
  8. package/compodoc/js/search/search_index.js +2 -2
  9. package/compodoc/miscellaneous/functions.html +99 -3
  10. package/compodoc/properties.html +1 -1
  11. package/docs/documentation.json +112 -87
  12. package/docs/html/assets/navigation.js +1 -1
  13. package/docs/html/classes/I18nService.html +6 -5
  14. package/docs/html/classes/LanguageSelectorService.html +2 -2
  15. package/docs/html/functions/LanguageInterceptor.html +1 -1
  16. package/docs/html/functions/loadI18nBootstrapHook.html +1 -1
  17. package/docs/html/functions/loadLanguages.html +1 -1
  18. package/docs/html/functions/xliffToJson.html +1 -1
  19. package/docs/html/index.html +2 -2
  20. package/docs/html/modules.html +1 -1
  21. package/docs/markdown/README.md +1 -1
  22. package/docs/markdown/classes/I18nService.md +13 -9
  23. package/docs/markdown/classes/LanguageSelectorService.md +12 -10
  24. package/docs/markdown/functions/LanguageInterceptor.md +2 -2
  25. package/docs/markdown/functions/loadI18nBootstrapHook.md +2 -2
  26. package/docs/markdown/functions/loadLanguages.md +7 -3
  27. package/docs/markdown/functions/xliffToJson.md +2 -2
  28. package/docs/markdown/globals.md +3 -3
  29. package/docs/wiki/Class.I18nService.md +12 -8
  30. package/docs/wiki/Class.LanguageSelectorService.md +11 -9
  31. package/docs/wiki/Function.LanguageInterceptor.md +1 -1
  32. package/docs/wiki/Function.loadI18nBootstrapHook.md +1 -1
  33. package/docs/wiki/Function.loadLanguages.md +6 -2
  34. package/docs/wiki/Function.xliffToJson.md +1 -1
  35. package/docs/wiki/globals.md +2 -2
  36. package/fesm2022/rxap-ngx-localize.mjs +75 -46
  37. package/fesm2022/rxap-ngx-localize.mjs.map +1 -1
  38. package/lib/i18n.service.d.ts +3 -0
  39. package/lib/language-selector.service.d.ts +1 -3
  40. package/lib/load-languages.d.ts +1 -1
  41. package/package.json +20 -24
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [19.1.0-dev.4](https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@19.1.0-dev.3...@rxap/ngx-localize@19.1.0-dev.4) (2025-05-15)
7
+
8
+ ### Features
9
+
10
+ - **localize:** improve i18n handling and language selection logic ([3d36b58](https://gitlab.com/rxap/packages/commit/3d36b585518bd52beffb08fce2219c550f2090b0))
11
+
6
12
  # [19.1.0-dev.3](https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@19.1.0-dev.2...@rxap/ngx-localize@19.1.0-dev.3) (2025-03-12)
7
13
 
8
14
  **Note:** Version bump only for package @rxap/ngx-localize
@@ -85,6 +85,11 @@
85
85
  <h1>Change Log</h1>
86
86
  <p>All notable changes to this project will be documented in this file.
87
87
  See <a href="https://conventionalcommits.org">Conventional Commits</a> for commit guidelines.</p>
88
+ <h1><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@19.1.0-dev.3...@rxap/ngx-localize@19.1.0-dev.4">19.1.0-dev.4</a> (2025-05-15)</h1>
89
+ <h3>Features</h3>
90
+ <ul>
91
+ <li><strong>localize:</strong> improve i18n handling and language selection logic (<a href="https://gitlab.com/rxap/packages/commit/3d36b585518bd52beffb08fce2219c550f2090b0">3d36b58</a>)</li>
92
+ </ul>
88
93
  <h1><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@19.1.0-dev.2...@rxap/ngx-localize@19.1.0-dev.3">19.1.0-dev.3</a> (2025-03-12)</h1>
89
94
  <p><strong>Note:</strong> Version bump only for package @rxap/ngx-localize</p>
90
95
  <h1><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@19.1.0-dev.1...@rxap/ngx-localize@19.1.0-dev.2">19.1.0-dev.2</a> (2025-03-10)</h1>
@@ -119,9 +119,9 @@
119
119
  <li>
120
120
  <b>@angular/core</b> : ^19.2.1</li>
121
121
  <li>
122
- <b>@rxap/config</b> : ^19.0.3</li>
122
+ <b>@rxap/config</b> : ^19.1.0-dev.2</li>
123
123
  <li>
124
- <b>@rxap/ngx-user</b> : ^19.0.3</li>
124
+ <b>@rxap/ngx-user</b> : ^19.0.4-dev.0</li>
125
125
  <li>
126
126
  <b>rxjs</b> : ^7.8.1</li>
127
127
  </ul>
@@ -91,7 +91,9 @@
91
91
 
92
92
  <ol class="breadcrumb">
93
93
  <li class="breadcrumb-item">Injectables</li>
94
- <li class="breadcrumb-item" >I18nService</li>
94
+ <li class="breadcrumb-item"
95
+ class="breadcrumb-item deprecated-name"
96
+ >I18nService</li>
95
97
  </ol>
96
98
 
97
99
  <ul class="nav nav-tabs" role="tablist">
@@ -118,6 +120,12 @@
118
120
  <code>src/lib/i18n.service.ts</code>
119
121
  </p>
120
122
 
123
+ <p class="comment">
124
+ <h3 class="deprecated">Deprecated</h3>
125
+ </p>
126
+ <p class="comment">
127
+ removed
128
+ </p>
121
129
 
122
130
 
123
131
 
@@ -200,8 +208,8 @@
200
208
 
201
209
  <tr>
202
210
  <td class="col-md-4">
203
- <div class="io-line">Defined in <a href="" data-line="29"
204
- class="link-to-prism">src/lib/i18n.service.ts:29</a></div>
211
+ <div class="io-line">Defined in <a href="" data-line="32"
212
+ class="link-to-prism">src/lib/i18n.service.ts:32</a></div>
205
213
  </td>
206
214
  </tr>
207
215
 
@@ -288,8 +296,8 @@
288
296
 
289
297
  <tr>
290
298
  <td class="col-md-4">
291
- <div class="io-line">Defined in <a href="" data-line="19"
292
- class="link-to-prism">src/lib/i18n.service.ts:19</a></div>
299
+ <div class="io-line">Defined in <a href="" data-line="22"
300
+ class="link-to-prism">src/lib/i18n.service.ts:22</a></div>
293
301
  </td>
294
302
  </tr>
295
303
 
@@ -367,7 +375,7 @@
367
375
  </tr>
368
376
  <tr>
369
377
  <td class="col-md-4">
370
- <div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/lib/i18n.service.ts:17</a></div>
378
+ <div class="io-line">Defined in <a href="" data-line="20" class="link-to-prism">src/lib/i18n.service.ts:20</a></div>
371
379
  </td>
372
380
  </tr>
373
381
 
@@ -390,6 +398,9 @@
390
398
  } from &#x27;@angular/core&#x27;;
391
399
  import { UserSettingsLanguageService } from &#x27;@rxap/ngx-user&#x27;;
392
400
 
401
+ /**
402
+ * @deprecated removed
403
+ */
393
404
  @Injectable({ providedIn: &#x27;root&#x27; })
394
405
  export class I18nService {
395
406
 
@@ -183,24 +183,6 @@
183
183
  </table>
184
184
  </section>
185
185
 
186
- <section data-compodoc="block-constructor">
187
- <h3 id="constructor">Constructor</h3>
188
- <table class="table table-sm table-bordered">
189
- <tbody>
190
- <tr>
191
- <td class="col-md-4">
192
- <code>constructor()</code>
193
- </td>
194
- </tr>
195
- <tr>
196
- <td class="col-md-4">
197
- <div class="io-line">Defined in <a href="" data-line="24" class="link-to-prism">src/lib/language-selector.service.ts:24</a></div>
198
- </td>
199
- </tr>
200
-
201
- </tbody>
202
- </table>
203
- </section>
204
186
 
205
187
  <section data-compodoc="block-methods">
206
188
 
@@ -223,15 +205,15 @@
223
205
  <tr>
224
206
  <td class="col-md-4">
225
207
  <span class="modifier-icon icon ion-ios-reset"></span>
226
- <code>setLanguage(language: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
208
+ <code>setLanguage(language: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, reload)</code>
227
209
  </td>
228
210
  </tr>
229
211
 
230
212
 
231
213
  <tr>
232
214
  <td class="col-md-4">
233
- <div class="io-line">Defined in <a href="" data-line="33"
234
- class="link-to-prism">src/lib/language-selector.service.ts:33</a></div>
215
+ <div class="io-line">Defined in <a href="" data-line="23"
216
+ class="link-to-prism">src/lib/language-selector.service.ts:23</a></div>
235
217
  </td>
236
218
  </tr>
237
219
 
@@ -248,6 +230,7 @@
248
230
  <td>Name</td>
249
231
  <td>Type</td>
250
232
  <td>Optional</td>
233
+ <td>Default value</td>
251
234
  </tr>
252
235
  </thead>
253
236
  <tbody>
@@ -261,6 +244,22 @@
261
244
  No
262
245
  </td>
263
246
 
247
+ <td>
248
+ </td>
249
+
250
+ </tr>
251
+ <tr>
252
+ <td>reload</td>
253
+ <td>
254
+ </td>
255
+
256
+ <td>
257
+ No
258
+ </td>
259
+
260
+ <td>
261
+ <code>false</code>
262
+ </td>
264
263
 
265
264
  </tr>
266
265
  </tbody>
@@ -309,7 +308,7 @@
309
308
  </tr>
310
309
  <tr>
311
310
  <td class="col-md-4">
312
- <div class="io-line">Defined in <a href="" data-line="21" class="link-to-prism">src/lib/language-selector.service.ts:21</a></div>
311
+ <div class="io-line">Defined in <a href="" data-line="18" class="link-to-prism">src/lib/language-selector.service.ts:18</a></div>
313
312
  </td>
314
313
  </tr>
315
314
 
@@ -336,7 +335,7 @@
336
335
  </tr>
337
336
  <tr>
338
337
  <td class="col-md-4">
339
- <div class="io-line">Defined in <a href="" data-line="24" class="link-to-prism">src/lib/language-selector.service.ts:24</a></div>
338
+ <div class="io-line">Defined in <a href="" data-line="21" class="link-to-prism">src/lib/language-selector.service.ts:21</a></div>
340
339
  </td>
341
340
  </tr>
342
341
 
@@ -369,7 +368,7 @@
369
368
  </tr>
370
369
  <tr>
371
370
  <td class="col-md-4">
372
- <div class="io-line">Defined in <a href="" data-line="20" class="link-to-prism">src/lib/language-selector.service.ts:20</a></div>
371
+ <div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/lib/language-selector.service.ts:17</a></div>
373
372
  </td>
374
373
  </tr>
375
374
 
@@ -391,12 +390,12 @@
391
390
  </tr>
392
391
  <tr>
393
392
  <td class="col-md-4">
394
- <i>Default value : </i><code>signal(this.i18nService.currentLanguage())</code>
393
+ <i>Default value : </i><code>signal(localStorage.getItem(&quot;locale&quot;) ?? this.defaultLanguage())</code>
395
394
  </td>
396
395
  </tr>
397
396
  <tr>
398
397
  <td class="col-md-4">
399
- <div class="io-line">Defined in <a href="" data-line="22" class="link-to-prism">src/lib/language-selector.service.ts:22</a></div>
398
+ <div class="io-line">Defined in <a href="" data-line="19" class="link-to-prism">src/lib/language-selector.service.ts:19</a></div>
400
399
  </td>
401
400
  </tr>
402
401
 
@@ -411,7 +410,6 @@
411
410
  <div class="tab-pane fade tab-source-code" id="source">
412
411
  <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
413
412
  computed,
414
- effect,
415
413
  inject,
416
414
  Injectable,
417
415
  Signal,
@@ -421,29 +419,25 @@ import {
421
419
  ConfigService,
422
420
  LanguagesConfig,
423
421
  } from &#x27;@rxap/config&#x27;;
424
- import { I18nService } from &#x27;./i18n.service&#x27;;
425
422
 
426
423
  @Injectable({ providedIn: &#x27;root&#x27; })
427
424
  export class LanguageSelectorService {
428
425
  private readonly config &#x3D; inject(ConfigService);
429
- private readonly i18nService &#x3D; inject(I18nService);
430
426
 
431
427
  public readonly languages: Signal&lt;LanguagesConfig&gt; &#x3D; signal(this.config.get&lt;LanguagesConfig&gt;(&#x27;i18n.languages&#x27;, {}));
432
428
  public readonly defaultLanguage: Signal&lt;string&gt; &#x3D; signal(this.config.get(&#x27;i18n.defaultLanguage&#x27;, Object.keys(this.languages())[0] ?? &#x27;en&#x27;));
433
- public readonly selectedLanguage &#x3D; signal(this.i18nService.currentLanguage());
429
+ public readonly selectedLanguage &#x3D; signal(localStorage.getItem(&quot;locale&quot;) ?? this.defaultLanguage());
434
430
 
435
431
  public readonly hasLanguages &#x3D; computed(() &#x3D;&gt; Object.keys(this.languages()).length &gt; 1);
436
432
 
437
- constructor() {
438
- effect(() &#x3D;&gt; {
439
- const currentLanguage &#x3D; this.i18nService.currentLanguage();
440
- this.selectedLanguage.set(currentLanguage);
441
- }, { allowSignalWrites: true });
442
- }
443
-
444
- public async setLanguage(language: string) {
445
- if (language !&#x3D;&#x3D; this.i18nService.currentLanguage()) {
446
- await this.i18nService.setLanguage(language);
433
+ public async setLanguage(language: string, reload &#x3D; false) {
434
+ if (language !&#x3D;&#x3D; this.selectedLanguage()) {
435
+ if (Object.keys(this.languages()).includes(language)) {
436
+ localStorage.setItem(&quot;locale&quot;, language);
437
+ if (reload) {
438
+ location.reload();
439
+ }
440
+ }
447
441
  }
448
442
  }
449
443
 
@@ -64,7 +64,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
64
64
  </div>
65
65
  <ul class="links collapse " ${ isNormalMode ? 'id="injectables-links"' : 'id="xs-injectables-links"' }>
66
66
  <li class="link">
67
- <a href="injectables/I18nService.html" data-type="entity-link" >I18nService</a>
67
+ <a href="injectables/I18nService.html" data-type="entity-link" class="deprecated-name">I18nService</a>
68
68
  </li>
69
69
  <li class="link">
70
70
  <a href="injectables/LanguageSelectorService.html" data-type="entity-link" >LanguageSelectorService</a>
@@ -33,7 +33,7 @@ customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) {
33
33
  }, {
34
34
  key: "render",
35
35
  value: function render(isNormalMode) {
36
- var tp = lithtml.html("\n <nav>\n <ul class=\"list\">\n <li class=\"title\">\n <a href=\"index.html\" data-type=\"index-link\">angular-localize</a>\n </li>\n\n <li class=\"divider\"></li>\n ".concat(isNormalMode ? "<div id=\"book-search-input\" role=\"search\"><input type=\"text\" placeholder=\"Type to search\"></div>" : '', "\n <li class=\"chapter\">\n <a data-type=\"chapter-link\" href=\"index.html\"><span class=\"icon ion-ios-home\"></span>Getting started</a>\n <ul class=\"links\">\n <li class=\"link\">\n <a href=\"overview.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-keypad\"></span>Overview\n </a>\n </li>\n <li class=\"link\">\n <a href=\"index.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-paper\"></span>README\n </a>\n </li>\n <li class=\"link\">\n <a href=\"changelog.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-paper\"></span>CHANGELOG\n </a>\n </li>\n <li class=\"link\">\n <a href=\"license.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-paper\"></span>LICENSE\n </a>\n </li>\n <li class=\"link\">\n <a href=\"dependencies.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-list\"></span>Dependencies\n </a>\n </li>\n <li class=\"link\">\n <a href=\"properties.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-apps\"></span>Properties\n </a>\n </li>\n </ul>\n </li>\n <li class=\"chapter\">\n <div class=\"simple menu-toggler\" data-bs-toggle=\"collapse\" ").concat(isNormalMode ? 'data-bs-target="#injectables-links"' : 'data-bs-target="#xs-injectables-links"', ">\n <span class=\"icon ion-md-arrow-round-down\"></span>\n <span>Injectables</span>\n <span class=\"icon ion-ios-arrow-down\"></span>\n </div>\n <ul class=\"links collapse \" ").concat(isNormalMode ? 'id="injectables-links"' : 'id="xs-injectables-links"', ">\n <li class=\"link\">\n <a href=\"injectables/I18nService.html\" data-type=\"entity-link\" >I18nService</a>\n </li>\n <li class=\"link\">\n <a href=\"injectables/LanguageSelectorService.html\" data-type=\"entity-link\" >LanguageSelectorService</a>\n </li>\n </ul>\n </li>\n <li class=\"chapter\">\n <div class=\"simple menu-toggler\" data-bs-toggle=\"collapse\" ").concat(isNormalMode ? 'data-bs-target="#miscellaneous-links"' : 'data-bs-target="#xs-miscellaneous-links"', ">\n <span class=\"icon ion-ios-cube\"></span>\n <span>Miscellaneous</span>\n <span class=\"icon ion-ios-arrow-down\"></span>\n </div>\n <ul class=\"links collapse \" ").concat(isNormalMode ? 'id="miscellaneous-links"' : 'id="xs-miscellaneous-links"', ">\n <li class=\"link\">\n <a href=\"miscellaneous/functions.html\" data-type=\"entity-link\">Functions</a>\n </li>\n <li class=\"link\">\n <a href=\"miscellaneous/variables.html\" data-type=\"entity-link\">Variables</a>\n </li>\n </ul>\n </li>\n <li class=\"divider\"></li>\n <li class=\"copyright\">\n Documentation generated using <a href=\"https://compodoc.app/\" target=\"_blank\" rel=\"noopener noreferrer\">\n <img data-src=\"images/compodoc-vectorise.png\" class=\"img-responsive\" data-type=\"compodoc-logo\">\n </a>\n </li>\n </ul>\n </nav>\n "));
36
+ var tp = lithtml.html("\n <nav>\n <ul class=\"list\">\n <li class=\"title\">\n <a href=\"index.html\" data-type=\"index-link\">angular-localize</a>\n </li>\n\n <li class=\"divider\"></li>\n ".concat(isNormalMode ? "<div id=\"book-search-input\" role=\"search\"><input type=\"text\" placeholder=\"Type to search\"></div>" : '', "\n <li class=\"chapter\">\n <a data-type=\"chapter-link\" href=\"index.html\"><span class=\"icon ion-ios-home\"></span>Getting started</a>\n <ul class=\"links\">\n <li class=\"link\">\n <a href=\"overview.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-keypad\"></span>Overview\n </a>\n </li>\n <li class=\"link\">\n <a href=\"index.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-paper\"></span>README\n </a>\n </li>\n <li class=\"link\">\n <a href=\"changelog.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-paper\"></span>CHANGELOG\n </a>\n </li>\n <li class=\"link\">\n <a href=\"license.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-paper\"></span>LICENSE\n </a>\n </li>\n <li class=\"link\">\n <a href=\"dependencies.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-list\"></span>Dependencies\n </a>\n </li>\n <li class=\"link\">\n <a href=\"properties.html\" data-type=\"chapter-link\">\n <span class=\"icon ion-ios-apps\"></span>Properties\n </a>\n </li>\n </ul>\n </li>\n <li class=\"chapter\">\n <div class=\"simple menu-toggler\" data-bs-toggle=\"collapse\" ").concat(isNormalMode ? 'data-bs-target="#injectables-links"' : 'data-bs-target="#xs-injectables-links"', ">\n <span class=\"icon ion-md-arrow-round-down\"></span>\n <span>Injectables</span>\n <span class=\"icon ion-ios-arrow-down\"></span>\n </div>\n <ul class=\"links collapse \" ").concat(isNormalMode ? 'id="injectables-links"' : 'id="xs-injectables-links"', ">\n <li class=\"link\">\n <a href=\"injectables/I18nService.html\" data-type=\"entity-link\" class=\"deprecated-name\">I18nService</a>\n </li>\n <li class=\"link\">\n <a href=\"injectables/LanguageSelectorService.html\" data-type=\"entity-link\" >LanguageSelectorService</a>\n </li>\n </ul>\n </li>\n <li class=\"chapter\">\n <div class=\"simple menu-toggler\" data-bs-toggle=\"collapse\" ").concat(isNormalMode ? 'data-bs-target="#miscellaneous-links"' : 'data-bs-target="#xs-miscellaneous-links"', ">\n <span class=\"icon ion-ios-cube\"></span>\n <span>Miscellaneous</span>\n <span class=\"icon ion-ios-arrow-down\"></span>\n </div>\n <ul class=\"links collapse \" ").concat(isNormalMode ? 'id="miscellaneous-links"' : 'id="xs-miscellaneous-links"', ">\n <li class=\"link\">\n <a href=\"miscellaneous/functions.html\" data-type=\"entity-link\">Functions</a>\n </li>\n <li class=\"link\">\n <a href=\"miscellaneous/variables.html\" data-type=\"entity-link\">Variables</a>\n </li>\n </ul>\n </li>\n <li class=\"divider\"></li>\n <li class=\"copyright\">\n Documentation generated using <a href=\"https://compodoc.app/\" target=\"_blank\" rel=\"noopener noreferrer\">\n <img data-src=\"images/compodoc-vectorise.png\" class=\"img-responsive\" data-type=\"compodoc-logo\">\n </a>\n </li>\n </ul>\n </nav>\n "));
37
37
  this.innerHTML = tp.strings;
38
38
  }
39
39
  }]);