@rxap/ngx-localize 18.0.3-dev.1 → 18.0.3-dev.2
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 +6 -0
- package/README.md +1 -1
- package/compodoc/changelog.html +5 -0
- package/compodoc/dependencies.html +2 -2
- package/compodoc/index.html +1 -1
- package/compodoc/injectables/I18nService.html +20 -75
- package/compodoc/injectables/LanguageSelectorService.html +81 -70
- package/compodoc/js/search/search_index.js +2 -2
- package/compodoc/properties.html +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/I18nService.html +2 -2
- package/docs/classes/LanguageSelectorService.html +3 -2
- package/docs/documentation.json +218 -257
- package/docs/functions/LanguageInterceptor.html +1 -1
- package/docs/index.html +1 -1
- package/esm2022/lib/i18n.service.mjs +12 -13
- package/esm2022/lib/language-selector.service.mjs +17 -17
- package/fesm2022/rxap-ngx-localize.mjs +27 -25
- package/fesm2022/rxap-ngx-localize.mjs.map +1 -1
- package/lib/i18n.service.d.ts +2 -3
- package/lib/language-selector.service.d.ts +7 -6
- package/package.json +19 -19
- package/theme.css +1 -1
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
|
+
## [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)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- move language selector ([8cfbe0d](https://gitlab.com/rxap/packages/commit/8cfbe0ddc8417caa955dbe22dd5e85976149de51))
|
|
11
|
+
|
|
6
12
|
## [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
13
|
|
|
8
14
|
**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.
|
|
21
|
+
yarn add @angular/common@^18.0.1 @angular/core@^18.0.1 @rxap/config@^18.1.1-dev.1 @rxap/ngx-user@^18.0.3-dev.1 rxjs@^7.8.1
|
|
22
22
|
```
|
|
23
23
|
**Execute the init generator:**
|
|
24
24
|
```bash
|
package/compodoc/changelog.html
CHANGED
|
@@ -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
|
+
<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>
|
|
89
|
+
<h3>Bug Fixes</h3>
|
|
90
|
+
<ul>
|
|
91
|
+
<li>move language selector (<a href="https://gitlab.com/rxap/packages/commit/8cfbe0ddc8417caa955dbe22dd5e85976149de51">8cfbe0d</a>)</li>
|
|
92
|
+
</ul>
|
|
88
93
|
<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
94
|
<p><strong>Note:</strong> Version bump only for package @rxap/ngx-localize</p>
|
|
90
95
|
<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.
|
|
120
|
+
<b>@rxap/config</b> : ^18.1.1-dev.1</li>
|
|
121
121
|
<li>
|
|
122
|
-
<b>@rxap/ngx-user</b> : ^18.0.3-dev.
|
|
122
|
+
<b>@rxap/ngx-user</b> : ^18.0.3-dev.1</li>
|
|
123
123
|
<li>
|
|
124
124
|
<b>rxjs</b> : ^7.8.1</li>
|
|
125
125
|
</ul>
|
package/compodoc/index.html
CHANGED
|
@@ -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 @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 @angular/common@^18.0.1 @angular/core@^18.0.1 @rxap/config@^18.1.1-dev.
|
|
99
|
+
<b>Example :</b><div><pre class="line-numbers"><code class="language-bash">yarn add @angular/common@^18.0.1 @angular/core@^18.0.1 @rxap/config@^18.1.1-dev.1 @rxap/ngx-user@^18.0.3-dev.1 rxjs@^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 @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="
|
|
352
|
-
class="link-to-prism">src/lib/i18n.service.ts:
|
|
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>
|
|
359
|
+
<i>Type : </i> <code>Signal<string></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]+$/, ''))</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="
|
|
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
|
-
|
|
384
|
+
inject,
|
|
440
385
|
Injectable,
|
|
441
386
|
isDevMode,
|
|
442
387
|
LOCALE_ID,
|
|
388
|
+
signal,
|
|
389
|
+
Signal,
|
|
443
390
|
} from '@angular/core';
|
|
444
391
|
import { UserSettingsLanguageService } from '@rxap/ngx-user';
|
|
445
392
|
|
|
446
393
|
@Injectable({ providedIn: 'root' })
|
|
447
394
|
export class I18nService {
|
|
448
395
|
|
|
449
|
-
|
|
396
|
+
private readonly localId: string = inject(LOCALE_ID);
|
|
397
|
+
private readonly userSettingsLanguageService = inject(UserSettingsLanguageService);
|
|
450
398
|
|
|
451
|
-
|
|
452
|
-
@Inject(LOCALE_ID)
|
|
453
|
-
private readonly localId: string,
|
|
454
|
-
private readonly userSettingsLanguageService: UserSettingsLanguageService,
|
|
455
|
-
) {
|
|
456
|
-
this.currentLanguage = this.localId.replace(/-[A-Z]+$/, '');
|
|
457
|
-
}
|
|
399
|
+
public readonly currentLanguage: Signal<string> = signal(this.localId.replace(/-[A-Z]+$/, ''));
|
|
458
400
|
|
|
459
401
|
public async setLanguage(language: string) {
|
|
460
402
|
await this.userSettingsLanguageService.setLanguage(language);
|
|
403
|
+
if (typeof (this.currentLanguage as any)['set'] === 'function') {
|
|
404
|
+
(this.currentLanguage as any).set(language);
|
|
405
|
+
}
|
|
461
406
|
if (!isDevMode()) {
|
|
462
407
|
this.redirect(language);
|
|
463
408
|
}
|
|
464
409
|
}
|
|
465
410
|
|
|
466
|
-
public redirect(next: string, current: string = this.currentLanguage) {
|
|
411
|
+
public redirect(next: string, current: string = this.currentLanguage()) {
|
|
467
412
|
if (current === next) {
|
|
468
413
|
console.warn('[I18nService] redirect not required - language unchanged');
|
|
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(
|
|
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="
|
|
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="
|
|
270
|
-
class="link-to-prism">src/lib/language-selector.service.ts:
|
|
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>
|
|
301
|
+
<i>Type : </i> <code>Signal<string></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('i18n.defaultLanguage', Object.keys(this.languages())[0] ?? 'en'))</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="
|
|
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(() => Object.keys(this.languages()).length > 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>
|
|
361
|
+
<i>Type : </i> <code>Signal<LanguagesConfig></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<LanguagesConfig>('i18n.languages', {}))</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="
|
|
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>
|
|
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="
|
|
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 {
|
|
412
|
-
|
|
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 '@angular/core';
|
|
420
|
+
import {
|
|
421
|
+
ConfigService,
|
|
422
|
+
LanguagesConfig,
|
|
423
|
+
} from '@rxap/config';
|
|
413
424
|
import { I18nService } from './i18n.service';
|
|
414
425
|
|
|
415
426
|
@Injectable({ providedIn: 'root' })
|
|
416
427
|
export class LanguageSelectorService {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
)
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
428
|
+
private readonly config = inject(ConfigService);
|
|
429
|
+
private readonly i18nService = inject(I18nService);
|
|
430
|
+
|
|
431
|
+
public readonly languages: Signal<LanguagesConfig> = signal(this.config.get<LanguagesConfig>('i18n.languages', {}));
|
|
432
|
+
public readonly defaultLanguage: Signal<string> = signal(this.config.get('i18n.defaultLanguage', Object.keys(this.languages())[0] ?? 'en'));
|
|
433
|
+
public readonly selectedLanguage = signal(this.i18nService.currentLanguage());
|
|
434
|
+
|
|
435
|
+
public readonly hasLanguages = computed(() => Object.keys(this.languages()).length > 1);
|
|
436
|
+
|
|
437
|
+
constructor() {
|
|
438
|
+
effect(() => {
|
|
439
|
+
const currentLanguage = 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 !== this.i18nService.currentLanguage) {
|
|
445
|
+
if (language !== this.i18nService.currentLanguage()) {
|
|
435
446
|
await this.i18nService.setLanguage(language);
|
|
436
447
|
}
|
|
437
448
|
}
|