@rxap/ngx-localize 18.0.3-dev.1 → 18.0.3-dev.3

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
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
+ ## [18.0.3-dev.3](https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.3-dev.2...@rxap/ngx-localize@18.0.3-dev.3) (2024-06-27)
7
+
8
+ ### Bug Fixes
9
+
10
+ - set the current language after the redirect is executed ([56b9caa](https://gitlab.com/rxap/packages/commit/56b9caa1004b5fc35dc985584399142a57f1f125))
11
+
12
+ ## [18.0.3-dev.2](https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.3-dev.1...@rxap/ngx-localize@18.0.3-dev.2) (2024-06-24)
13
+
14
+ ### Bug Fixes
15
+
16
+ - move language selector ([8cfbe0d](https://gitlab.com/rxap/packages/commit/8cfbe0ddc8417caa955dbe22dd5e85976149de51))
17
+
6
18
  ## [18.0.3-dev.1](https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.3-dev.0...@rxap/ngx-localize@18.0.3-dev.1) (2024-06-21)
7
19
 
8
20
  **Note:** Version bump only for package @rxap/ngx-localize
package/README.md CHANGED
@@ -18,7 +18,7 @@ yarn add @rxap/ngx-localize
18
18
  ```
19
19
  **Install peer dependencies:**
20
20
  ```bash
21
- yarn add @angular/common@^18.0.1 @angular/core@^18.0.1 @rxap/config@^18.1.1-dev.0 @rxap/ngx-user@^18.0.3-dev.0 rxjs@^7.8.1
21
+ yarn add @angular/common@^18.0.1 @angular/core@^18.0.1 @rxap/config@^18.1.1-dev.4 @rxap/ngx-user@^18.0.3-dev.2 rxjs@^7.8.1
22
22
  ```
23
23
  **Execute the init generator:**
24
24
  ```bash
@@ -85,6 +85,16 @@
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
+ <h2><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.3-dev.2...@rxap/ngx-localize@18.0.3-dev.3">18.0.3-dev.3</a> (2024-06-27)</h2>
89
+ <h3>Bug Fixes</h3>
90
+ <ul>
91
+ <li>set the current language after the redirect is executed (<a href="https://gitlab.com/rxap/packages/commit/56b9caa1004b5fc35dc985584399142a57f1f125">56b9caa</a>)</li>
92
+ </ul>
93
+ <h2><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.3-dev.1...@rxap/ngx-localize@18.0.3-dev.2">18.0.3-dev.2</a> (2024-06-24)</h2>
94
+ <h3>Bug Fixes</h3>
95
+ <ul>
96
+ <li>move language selector (<a href="https://gitlab.com/rxap/packages/commit/8cfbe0ddc8417caa955dbe22dd5e85976149de51">8cfbe0d</a>)</li>
97
+ </ul>
88
98
  <h2><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.3-dev.0...@rxap/ngx-localize@18.0.3-dev.1">18.0.3-dev.1</a> (2024-06-21)</h2>
89
99
  <p><strong>Note:</strong> Version bump only for package @rxap/ngx-localize</p>
90
100
  <h2><a href="https://gitlab.com/rxap/packages/compare/@rxap/ngx-localize@18.0.2...@rxap/ngx-localize@18.0.3-dev.0">18.0.3-dev.0</a> (2024-06-20)</h2>
@@ -117,9 +117,9 @@
117
117
  <li>
118
118
  <b>@angular/core</b> : ^18.0.1</li>
119
119
  <li>
120
- <b>@rxap/config</b> : ^18.1.1-dev.0</li>
120
+ <b>@rxap/config</b> : ^18.1.1-dev.4</li>
121
121
  <li>
122
- <b>@rxap/ngx-user</b> : ^18.0.3-dev.0</li>
122
+ <b>@rxap/ngx-user</b> : ^18.0.3-dev.2</li>
123
123
  <li>
124
124
  <b>rxjs</b> : ^7.8.1</li>
125
125
  </ul>
@@ -96,7 +96,7 @@
96
96
  <h1>Installation</h1>
97
97
  <p><strong>Add the package to your workspace:</strong></p>
98
98
  <b>Example :</b><div><pre class="line-numbers"><code class="language-bash">yarn add &#64;rxap/ngx-localize</code></pre></div><p><strong>Install peer dependencies:</strong></p>
99
- <b>Example :</b><div><pre class="line-numbers"><code class="language-bash">yarn add &#64;angular/common&#64;^18.0.1 &#64;angular/core&#64;^18.0.1 &#64;rxap/config&#64;^18.1.1-dev.0 &#64;rxap/ngx-user&#64;^18.0.3-dev.0 rxjs&#64;^7.8.1 </code></pre></div><p><strong>Execute the init generator:</strong></p>
99
+ <b>Example :</b><div><pre class="line-numbers"><code class="language-bash">yarn add &#64;angular/common&#64;^18.0.1 &#64;angular/core&#64;^18.0.1 &#64;rxap/config&#64;^18.1.1-dev.4 &#64;rxap/ngx-user&#64;^18.0.3-dev.2 rxjs&#64;^7.8.1 </code></pre></div><p><strong>Execute the init generator:</strong></p>
100
100
  <b>Example :</b><div><pre class="line-numbers"><code class="language-bash">yarn nx g &#64;rxap/ngx-localize:init</code></pre></div><h1>Generators</h1>
101
101
  <h2>init</h2>
102
102
  <blockquote>
@@ -172,66 +172,6 @@
172
172
  </table>
173
173
  </section>
174
174
 
175
- <section data-compodoc="block-constructor">
176
- <h3 id="constructor">Constructor</h3>
177
- <table class="table table-sm table-bordered">
178
- <tbody>
179
- <tr>
180
- <td class="col-md-4">
181
- <code>constructor(localId: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, userSettingsLanguageService: UserSettingsLanguageService)</code>
182
- </td>
183
- </tr>
184
- <tr>
185
- <td class="col-md-4">
186
- <div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/lib/i18n.service.ts:12</a></div>
187
- </td>
188
- </tr>
189
-
190
- <tr>
191
- <td class="col-md-4">
192
- <div>
193
- <b>Parameters :</b>
194
- <table class="params">
195
- <thead>
196
- <tr>
197
- <td>Name</td>
198
- <td>Type</td>
199
- <td>Optional</td>
200
- </tr>
201
- </thead>
202
- <tbody>
203
- <tr>
204
- <td>localId</td>
205
-
206
- <td>
207
- <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
208
- </td>
209
-
210
- <td>
211
- No
212
- </td>
213
-
214
- </tr>
215
- <tr>
216
- <td>userSettingsLanguageService</td>
217
-
218
- <td>
219
- <code>UserSettingsLanguageService</code>
220
- </td>
221
-
222
- <td>
223
- No
224
- </td>
225
-
226
- </tr>
227
- </tbody>
228
- </table>
229
- </div>
230
- </td>
231
- </tr>
232
- </tbody>
233
- </table>
234
- </section>
235
175
 
236
176
  <section data-compodoc="block-methods">
237
177
 
@@ -307,7 +247,7 @@
307
247
  </td>
308
248
 
309
249
  <td>
310
- <code>this.currentLanguage</code>
250
+ <code>this.currentLanguage()</code>
311
251
  </td>
312
252
 
313
253
  </tr>
@@ -348,8 +288,8 @@
348
288
 
349
289
  <tr>
350
290
  <td class="col-md-4">
351
- <div class="io-line">Defined in <a href="" data-line="22"
352
- class="link-to-prism">src/lib/i18n.service.ts:22</a></div>
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>
353
293
  </td>
354
294
  </tr>
355
295
 
@@ -416,13 +356,18 @@
416
356
  </tr>
417
357
  <tr>
418
358
  <td class="col-md-4">
419
- <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
359
+ <i>Type : </i> <code>Signal&lt;string&gt;</code>
420
360
 
421
361
  </td>
362
+ </tr>
363
+ <tr>
364
+ <td class="col-md-4">
365
+ <i>Default value : </i><code>signal(this.localId.replace(/-[A-Z]+$/, &#x27;&#x27;))</code>
366
+ </td>
422
367
  </tr>
423
368
  <tr>
424
369
  <td class="col-md-4">
425
- <div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/lib/i18n.service.ts:12</a></div>
370
+ <div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/lib/i18n.service.ts:17</a></div>
426
371
  </td>
427
372
  </tr>
428
373
 
@@ -436,34 +381,34 @@
436
381
 
437
382
  <div class="tab-pane fade tab-source-code" id="source">
438
383
  <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
439
- Inject,
384
+ inject,
440
385
  Injectable,
441
386
  isDevMode,
442
387
  LOCALE_ID,
388
+ signal,
389
+ Signal,
443
390
  } from &#x27;@angular/core&#x27;;
444
391
  import { UserSettingsLanguageService } from &#x27;@rxap/ngx-user&#x27;;
445
392
 
446
393
  @Injectable({ providedIn: &#x27;root&#x27; })
447
394
  export class I18nService {
448
395
 
449
- public readonly currentLanguage: string;
396
+ private readonly localId: string &#x3D; inject(LOCALE_ID);
397
+ private readonly userSettingsLanguageService &#x3D; inject(UserSettingsLanguageService);
450
398
 
451
- constructor(
452
- @Inject(LOCALE_ID)
453
- private readonly localId: string,
454
- private readonly userSettingsLanguageService: UserSettingsLanguageService,
455
- ) {
456
- this.currentLanguage &#x3D; this.localId.replace(/-[A-Z]+$/, &#x27;&#x27;);
457
- }
399
+ public readonly currentLanguage: Signal&lt;string&gt; &#x3D; signal(this.localId.replace(/-[A-Z]+$/, &#x27;&#x27;));
458
400
 
459
401
  public async setLanguage(language: string) {
460
402
  await this.userSettingsLanguageService.setLanguage(language);
461
403
  if (!isDevMode()) {
462
404
  this.redirect(language);
463
405
  }
406
+ if (typeof (this.currentLanguage as any)[&#x27;set&#x27;] &#x3D;&#x3D;&#x3D; &#x27;function&#x27;) {
407
+ (this.currentLanguage as any).set(language);
408
+ }
464
409
  }
465
410
 
466
- public redirect(next: string, current: string &#x3D; this.currentLanguage) {
411
+ public redirect(next: string, current: string &#x3D; this.currentLanguage()) {
467
412
  if (current &#x3D;&#x3D;&#x3D; next) {
468
413
  console.warn(&#x27;[I18nService] redirect not required - language unchanged&#x27;);
469
414
  return;
@@ -139,6 +139,11 @@
139
139
  <span class="modifier">Readonly</span>
140
140
  <a href="#defaultLanguage" >defaultLanguage</a>
141
141
  </li>
142
+ <li>
143
+ <span class="modifier">Public</span>
144
+ <span class="modifier">Readonly</span>
145
+ <a href="#hasLanguages" >hasLanguages</a>
146
+ </li>
142
147
  <li>
143
148
  <span class="modifier">Public</span>
144
149
  <span class="modifier">Readonly</span>
@@ -146,6 +151,7 @@
146
151
  </li>
147
152
  <li>
148
153
  <span class="modifier">Public</span>
154
+ <span class="modifier">Readonly</span>
149
155
  <a href="#selectedLanguage" >selectedLanguage</a>
150
156
  </li>
151
157
  </ul>
@@ -183,57 +189,15 @@
183
189
  <tbody>
184
190
  <tr>
185
191
  <td class="col-md-4">
186
- <code>constructor(config: ConfigService, i18nService: <a href="../injectables/I18nService.html" target="_self">I18nService</a>)</code>
192
+ <code>constructor()</code>
187
193
  </td>
188
194
  </tr>
189
195
  <tr>
190
196
  <td class="col-md-4">
191
- <div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">src/lib/language-selector.service.ts:9</a></div>
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>
192
198
  </td>
193
199
  </tr>
194
200
 
195
- <tr>
196
- <td class="col-md-4">
197
- <div>
198
- <b>Parameters :</b>
199
- <table class="params">
200
- <thead>
201
- <tr>
202
- <td>Name</td>
203
- <td>Type</td>
204
- <td>Optional</td>
205
- </tr>
206
- </thead>
207
- <tbody>
208
- <tr>
209
- <td>config</td>
210
-
211
- <td>
212
- <code>ConfigService</code>
213
- </td>
214
-
215
- <td>
216
- No
217
- </td>
218
-
219
- </tr>
220
- <tr>
221
- <td>i18nService</td>
222
-
223
- <td>
224
- <code><a href="../injectables/I18nService.html" target="_self" >I18nService</a></code>
225
- </td>
226
-
227
- <td>
228
- No
229
- </td>
230
-
231
- </tr>
232
- </tbody>
233
- </table>
234
- </div>
235
- </td>
236
- </tr>
237
201
  </tbody>
238
202
  </table>
239
203
  </section>
@@ -266,8 +230,8 @@
266
230
 
267
231
  <tr>
268
232
  <td class="col-md-4">
269
- <div class="io-line">Defined in <a href="" data-line="23"
270
- class="link-to-prism">src/lib/language-selector.service.ts:23</a></div>
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>
271
235
  </td>
272
236
  </tr>
273
237
 
@@ -334,13 +298,45 @@
334
298
  </tr>
335
299
  <tr>
336
300
  <td class="col-md-4">
337
- <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
301
+ <i>Type : </i> <code>Signal&lt;string&gt;</code>
338
302
 
339
303
  </td>
304
+ </tr>
305
+ <tr>
306
+ <td class="col-md-4">
307
+ <i>Default value : </i><code>signal(this.config.get(&#x27;i18n.defaultLanguage&#x27;, Object.keys(this.languages())[0] ?? &#x27;en&#x27;))</code>
308
+ </td>
340
309
  </tr>
341
310
  <tr>
342
311
  <td class="col-md-4">
343
- <div class="io-line">Defined in <a href="" data-line="8" class="link-to-prism">src/lib/language-selector.service.ts:8</a></div>
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>
313
+ </td>
314
+ </tr>
315
+
316
+
317
+ </tbody>
318
+ </table>
319
+ <table class="table table-sm table-bordered">
320
+ <tbody>
321
+ <tr>
322
+ <td class="col-md-4">
323
+ <a name="hasLanguages"></a>
324
+ <span class="name">
325
+ <span class="modifier">Public</span>
326
+ <span class="modifier">Readonly</span>
327
+ <span ><b>hasLanguages</b></span>
328
+ <a href="#hasLanguages"><span class="icon ion-ios-link"></span></a>
329
+ </span>
330
+ </td>
331
+ </tr>
332
+ <tr>
333
+ <td class="col-md-4">
334
+ <i>Default value : </i><code>computed(() &#x3D;&gt; Object.keys(this.languages()).length &gt; 1)</code>
335
+ </td>
336
+ </tr>
337
+ <tr>
338
+ <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>
344
340
  </td>
345
341
  </tr>
346
342
 
@@ -362,13 +358,18 @@
362
358
  </tr>
363
359
  <tr>
364
360
  <td class="col-md-4">
365
- <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
361
+ <i>Type : </i> <code>Signal&lt;LanguagesConfig&gt;</code>
366
362
 
367
363
  </td>
364
+ </tr>
365
+ <tr>
366
+ <td class="col-md-4">
367
+ <i>Default value : </i><code>signal(this.config.get&lt;LanguagesConfig&gt;(&#x27;i18n.languages&#x27;, {}))</code>
368
+ </td>
368
369
  </tr>
369
370
  <tr>
370
371
  <td class="col-md-4">
371
- <div class="io-line">Defined in <a href="" data-line="7" class="link-to-prism">src/lib/language-selector.service.ts:7</a></div>
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>
372
373
  </td>
373
374
  </tr>
374
375
 
@@ -382,6 +383,7 @@
382
383
  <a name="selectedLanguage"></a>
383
384
  <span class="name">
384
385
  <span class="modifier">Public</span>
386
+ <span class="modifier">Readonly</span>
385
387
  <span ><b>selectedLanguage</b></span>
386
388
  <a href="#selectedLanguage"><span class="icon ion-ios-link"></span></a>
387
389
  </span>
@@ -389,13 +391,12 @@
389
391
  </tr>
390
392
  <tr>
391
393
  <td class="col-md-4">
392
- <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
393
-
394
+ <i>Default value : </i><code>signal(this.i18nService.currentLanguage())</code>
394
395
  </td>
395
396
  </tr>
396
397
  <tr>
397
398
  <td class="col-md-4">
398
- <div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">src/lib/language-selector.service.ts:9</a></div>
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>
399
400
  </td>
400
401
  </tr>
401
402
 
@@ -408,30 +409,40 @@
408
409
 
409
410
 
410
411
  <div class="tab-pane fade tab-source-code" id="source">
411
- <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from &#x27;@angular/core&#x27;;
412
- import { ConfigService } from &#x27;@rxap/config&#x27;;
412
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
413
+ computed,
414
+ effect,
415
+ inject,
416
+ Injectable,
417
+ Signal,
418
+ signal,
419
+ } from &#x27;@angular/core&#x27;;
420
+ import {
421
+ ConfigService,
422
+ LanguagesConfig,
423
+ } from &#x27;@rxap/config&#x27;;
413
424
  import { I18nService } from &#x27;./i18n.service&#x27;;
414
425
 
415
426
  @Injectable({ providedIn: &#x27;root&#x27; })
416
427
  export class LanguageSelectorService {
417
- public readonly languages: any;
418
- public readonly defaultLanguage: string;
419
- public selectedLanguage: string;
420
-
421
- constructor(
422
- private readonly config: ConfigService,
423
- private readonly i18nService: I18nService,
424
- ) {
425
- this.languages &#x3D; this.config.get&lt;any&gt;(&#x27;i18n.languages&#x27;) ?? {};
426
- this.defaultLanguage &#x3D;
427
- this.config.get(&#x27;i18n.defaultLanguage&#x27;) ??
428
- Object.keys(this.languages)[0] ??
429
- &#x27;en&#x27;;
430
- this.selectedLanguage &#x3D; this.i18nService.currentLanguage;
428
+ private readonly config &#x3D; inject(ConfigService);
429
+ private readonly i18nService &#x3D; inject(I18nService);
430
+
431
+ public readonly languages: Signal&lt;LanguagesConfig&gt; &#x3D; signal(this.config.get&lt;LanguagesConfig&gt;(&#x27;i18n.languages&#x27;, {}));
432
+ 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());
434
+
435
+ public readonly hasLanguages &#x3D; computed(() &#x3D;&gt; Object.keys(this.languages()).length &gt; 1);
436
+
437
+ constructor() {
438
+ effect(() &#x3D;&gt; {
439
+ const currentLanguage &#x3D; this.i18nService.currentLanguage();
440
+ this.selectedLanguage.set(currentLanguage);
441
+ }, { allowSignalWrites: true });
431
442
  }
432
443
 
433
444
  public async setLanguage(language: string) {
434
- if (language !&#x3D;&#x3D; this.i18nService.currentLanguage) {
445
+ if (language !&#x3D;&#x3D; this.i18nService.currentLanguage()) {
435
446
  await this.i18nService.setLanguage(language);
436
447
  }
437
448
  }