@prosopo/locale 3.1.21 → 3.1.25

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 (76) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/i18SharedOptions.js +10 -8
  3. package/dist/i18nBackend.js +26 -24
  4. package/dist/i18nFrontend.js +47 -43
  5. package/dist/i18nMiddleware.js +5 -4
  6. package/dist/index.js +15 -7
  7. package/dist/loadI18next.js +26 -29
  8. package/dist/locales/ar/translation.json +441 -441
  9. package/dist/locales/az/translation.json +441 -441
  10. package/dist/locales/cs/translation.json +441 -441
  11. package/dist/locales/de/translation.json +441 -441
  12. package/dist/locales/el/translation.json +441 -441
  13. package/dist/locales/en/translation.json +441 -441
  14. package/dist/locales/es/translation.json +441 -441
  15. package/dist/locales/fi/translation.json +441 -441
  16. package/dist/locales/fr/translation.json +441 -441
  17. package/dist/locales/hi/translation.json +441 -441
  18. package/dist/locales/hu/translation.json +441 -441
  19. package/dist/locales/id/translation.json +441 -441
  20. package/dist/locales/it/translation.json +441 -441
  21. package/dist/locales/ja/translation.json +441 -441
  22. package/dist/locales/jv/translation.json +441 -441
  23. package/dist/locales/ko/translation.json +441 -441
  24. package/dist/locales/ml/translation.json +441 -441
  25. package/dist/locales/ms/translation.json +441 -441
  26. package/dist/locales/nl/translation.json +441 -441
  27. package/dist/locales/no/translation.json +441 -441
  28. package/dist/locales/pl/translation.json +441 -441
  29. package/dist/locales/pt/translation.json +441 -441
  30. package/dist/locales/pt-BR/translation.json +441 -441
  31. package/dist/locales/ro/translation.json +441 -441
  32. package/dist/locales/ru/translation.json +441 -441
  33. package/dist/locales/sr/translation.json +441 -441
  34. package/dist/locales/sv/translation.json +441 -441
  35. package/dist/locales/th/translation.json +441 -441
  36. package/dist/locales/tr/translation.json +441 -441
  37. package/dist/locales/uk/translation.json +441 -441
  38. package/dist/locales/vi/translation.json +441 -441
  39. package/dist/locales/zh-CN/translation.json +441 -441
  40. package/dist/translationKey.js +21 -15
  41. package/dist/translations.js +40 -35
  42. package/dist/useTranslation.js +7 -6
  43. package/dist/util.js +8 -7
  44. package/package.json +4 -4
  45. package/coverage/base.css +0 -224
  46. package/coverage/block-navigation.js +0 -87
  47. package/coverage/clover.xml +0 -260
  48. package/coverage/coverage-final.json +0 -11
  49. package/coverage/favicon.png +0 -0
  50. package/coverage/i18SharedOptions.ts.html +0 -151
  51. package/coverage/i18nBackend.ts.html +0 -244
  52. package/coverage/i18nFrontend.ts.html +0 -328
  53. package/coverage/i18nMiddleware.ts.html +0 -160
  54. package/coverage/index.html +0 -251
  55. package/coverage/index.ts.html +0 -151
  56. package/coverage/loadI18next.ts.html +0 -232
  57. package/coverage/prettify.css +0 -1
  58. package/coverage/prettify.js +0 -2
  59. package/coverage/sort-arrow-sprite.png +0 -0
  60. package/coverage/sorter.js +0 -210
  61. package/coverage/translationKey.ts.html +0 -229
  62. package/coverage/translations.ts.html +0 -247
  63. package/coverage/useTranslation.ts.html +0 -181
  64. package/coverage/util.ts.html +0 -160
  65. package/dist/i18SharedOptions.js.map +0 -1
  66. package/dist/i18nBackend.js.map +0 -1
  67. package/dist/i18nFrontend.js.map +0 -1
  68. package/dist/i18nMiddleware.js.map +0 -1
  69. package/dist/index.js.map +0 -1
  70. package/dist/loadI18next.js.map +0 -1
  71. package/dist/tests/locales.unit.test.js +0 -49
  72. package/dist/tests/locales.unit.test.js.map +0 -1
  73. package/dist/translationKey.js.map +0 -1
  74. package/dist/translations.js.map +0 -1
  75. package/dist/useTranslation.js.map +0 -1
  76. package/dist/util.js.map +0 -1
@@ -1,244 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for i18nBackend.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="prettify.css" />
9
- <link rel="stylesheet" href="base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="index.html">All files</a> i18nBackend.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/35</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>1/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/35</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-neutral">&nbsp;</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-no">&nbsp;</span>
134
- <span class="cline-any cline-no">&nbsp;</span>
135
- <span class="cline-any cline-no">&nbsp;</span>
136
- <span class="cline-any cline-no">&nbsp;</span>
137
- <span class="cline-any cline-no">&nbsp;</span>
138
- <span class="cline-any cline-no">&nbsp;</span>
139
- <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-no">&nbsp;</span>
141
- <span class="cline-any cline-no">&nbsp;</span>
142
- <span class="cline-any cline-no">&nbsp;</span>
143
- <span class="cline-any cline-no">&nbsp;</span>
144
- <span class="cline-any cline-no">&nbsp;</span>
145
- <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-no">&nbsp;</span>
147
- <span class="cline-any cline-no">&nbsp;</span>
148
- <span class="cline-any cline-no">&nbsp;</span>
149
- <span class="cline-any cline-no">&nbsp;</span>
150
- <span class="cline-any cline-no">&nbsp;</span>
151
- <span class="cline-any cline-no">&nbsp;</span>
152
- <span class="cline-any cline-no">&nbsp;</span>
153
- <span class="cline-any cline-no">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-no">&nbsp;</span>
156
- <span class="cline-any cline-no">&nbsp;</span>
157
- <span class="cline-any cline-no">&nbsp;</span>
158
- <span class="cline-any cline-no">&nbsp;</span>
159
- <span class="cline-any cline-no">&nbsp;</span>
160
- <span class="cline-any cline-no">&nbsp;</span>
161
- <span class="cline-any cline-no">&nbsp;</span>
162
- <span class="cline-any cline-no">&nbsp;</span>
163
- <span class="cline-any cline-no">&nbsp;</span>
164
- <span class="cline-any cline-no">&nbsp;</span>
165
- <span class="cline-any cline-no">&nbsp;</span>
166
- <span class="cline-any cline-no">&nbsp;</span>
167
- <span class="cline-any cline-no">&nbsp;</span>
168
- <span class="cline-any cline-no">&nbsp;</span>
169
- <span class="cline-any cline-no">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-no">&nbsp;</span>
172
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// Copyright 2021-2025 Prosopo (UK) Ltd.
173
- //
174
- // Licensed under the Apache License, Version 2.0 (the "License");
175
- // you may not use this file except in compliance with the License.
176
- // You may obtain a copy of the License at
177
- //
178
- // http://www.apache.org/licenses/LICENSE-2.0
179
- //
180
- // Unless required by applicable law or agreed to in writing, software
181
- // distributed under the License is distributed on an "AS IS" BASIS,
182
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
183
- // See the License for the specific language governing permissions and
184
- // limitations under the License.
185
- &nbsp;
186
- <span class="cstat-no" title="statement not covered" >import path from "node:path";</span>
187
- <span class="cstat-no" title="statement not covered" >import i18n from "i18next";</span>
188
- <span class="cstat-no" title="statement not covered" >import FSBackend from "i18next-fs-backend/cjs"; // https://github.com/i18next/i18next-fs-backend/issues/57</span>
189
- <span class="cstat-no" title="statement not covered" >import { LanguageDetector as MiddlewareLanguageDetector } from "i18next-http-middleware";</span>
190
- <span class="cstat-no" title="statement not covered" >import { i18nSharedOptions } from "./i18SharedOptions.js";</span>
191
- <span class="cstat-no" title="statement not covered" >import { isServerSide } from "./util.js";</span>
192
- &nbsp;
193
- <span class="cstat-no" title="statement not covered" >const loadPath =</span>
194
- <span class="cstat-no" title="statement not covered" > `${path.dirname(import.meta.url)}/locales/{{lng}}/{{ns}}.json`.replace(</span>
195
- <span class="cstat-no" title="statement not covered" > "file://",</span>
196
- <span class="cstat-no" title="statement not covered" > "",</span>
197
- <span class="cstat-no" title="statement not covered" > );</span>
198
- &nbsp;
199
- <span class="cstat-no" title="statement not covered" >export function initializeI18n(</span>
200
- <span class="cstat-no" title="statement not covered" > i18nLoadedCallback?: (value: typeof i18n) =&gt; void,</span>
201
- <span class="cstat-no" title="statement not covered" >) {</span>
202
- <span class="cstat-no" title="statement not covered" > if (!i18n.isInitialized &amp;&amp; isServerSide()) {</span>
203
- <span class="cstat-no" title="statement not covered" > const lngDetector = new MiddlewareLanguageDetector(null, {</span>
204
- <span class="cstat-no" title="statement not covered" > order: ["header", "query", "cookie"],</span>
205
- <span class="cstat-no" title="statement not covered" > });</span>
206
- <span class="cstat-no" title="statement not covered" > i18n</span>
207
- // @ts-ignore https://github.com/i18next/i18next-fs-backend/issues/57
208
- <span class="cstat-no" title="statement not covered" > .use(FSBackend)</span>
209
- <span class="cstat-no" title="statement not covered" > .use(lngDetector) // this line should switch the language to the one the user reports in the Accept-Language header</span>
210
- <span class="cstat-no" title="statement not covered" > .init({</span>
211
- <span class="cstat-no" title="statement not covered" > ...i18nSharedOptions,</span>
212
- <span class="cstat-no" title="statement not covered" > ns: ["translation"],</span>
213
- <span class="cstat-no" title="statement not covered" > backend: {</span>
214
- <span class="cstat-no" title="statement not covered" > loadPath,</span>
215
- <span class="cstat-no" title="statement not covered" > },</span>
216
- <span class="cstat-no" title="statement not covered" > });</span>
217
- <span class="cstat-no" title="statement not covered" > i18n.on("loaded", () =&gt; {</span>
218
- <span class="cstat-no" title="statement not covered" > i18nLoadedCallback?.(i18n);</span>
219
- <span class="cstat-no" title="statement not covered" > });</span>
220
- <span class="cstat-no" title="statement not covered" > }</span>
221
- <span class="cstat-no" title="statement not covered" > return i18n;</span>
222
- <span class="cstat-no" title="statement not covered" >}</span>
223
- &nbsp;
224
- <span class="cstat-no" title="statement not covered" >export default initializeI18n;</span>
225
- &nbsp;</pre></td></tr></table></pre>
226
-
227
- <div class='push'></div><!-- for sticky footer -->
228
- </div><!-- /wrapper -->
229
- <div class='footer quiet pad2 space-top1 center small'>
230
- Code coverage generated by
231
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
232
- at 2025-09-29T09:25:02.939Z
233
- </div>
234
- <script src="prettify.js"></script>
235
- <script>
236
- window.onload = function () {
237
- prettyPrint();
238
- };
239
- </script>
240
- <script src="sorter.js"></script>
241
- <script src="block-navigation.js"></script>
242
- </body>
243
- </html>
244
-
@@ -1,328 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for i18nFrontend.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="prettify.css" />
9
- <link rel="stylesheet" href="base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="index.html">All files</a> i18nFrontend.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">31.14% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>19/61</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/2</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">31.14% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>19/61</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-yes">1x</span>
162
- <span class="cline-any cline-yes">1x</span>
163
- <span class="cline-any cline-yes">1x</span>
164
- <span class="cline-any cline-yes">1x</span>
165
- <span class="cline-any cline-yes">1x</span>
166
- <span class="cline-any cline-yes">1x</span>
167
- <span class="cline-any cline-yes">1x</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">1x</span>
170
- <span class="cline-any cline-yes">1x</span>
171
- <span class="cline-any cline-yes">1x</span>
172
- <span class="cline-any cline-yes">1x</span>
173
- <span class="cline-any cline-yes">1x</span>
174
- <span class="cline-any cline-yes">1x</span>
175
- <span class="cline-any cline-yes">1x</span>
176
- <span class="cline-any cline-yes">1x</span>
177
- <span class="cline-any cline-yes">1x</span>
178
- <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-yes">1x</span>
180
- <span class="cline-any cline-no">&nbsp;</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
182
- <span class="cline-any cline-no">&nbsp;</span>
183
- <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-yes">1x</span>
185
- <span class="cline-any cline-no">&nbsp;</span>
186
- <span class="cline-any cline-no">&nbsp;</span>
187
- <span class="cline-any cline-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
- <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-no">&nbsp;</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
- <span class="cline-any cline-no">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
- <span class="cline-any cline-no">&nbsp;</span>
201
- <span class="cline-any cline-no">&nbsp;</span>
202
- <span class="cline-any cline-no">&nbsp;</span>
203
- <span class="cline-any cline-no">&nbsp;</span>
204
- <span class="cline-any cline-no">&nbsp;</span>
205
- <span class="cline-any cline-no">&nbsp;</span>
206
- <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-no">&nbsp;</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
209
- <span class="cline-any cline-no">&nbsp;</span>
210
- <span class="cline-any cline-no">&nbsp;</span>
211
- <span class="cline-any cline-no">&nbsp;</span>
212
- <span class="cline-any cline-no">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
214
- <span class="cline-any cline-no">&nbsp;</span>
215
- <span class="cline-any cline-no">&nbsp;</span>
216
- <span class="cline-any cline-no">&nbsp;</span>
217
- <span class="cline-any cline-no">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
220
- <span class="cline-any cline-no">&nbsp;</span>
221
- <span class="cline-any cline-no">&nbsp;</span>
222
- <span class="cline-any cline-no">&nbsp;</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-yes">1x</span>
228
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// Copyright 2021-2025 Prosopo (UK) Ltd.
229
- //
230
- // Licensed under the Apache License, Version 2.0 (the "License");
231
- // you may not use this file except in compliance with the License.
232
- // You may obtain a copy of the License at
233
- //
234
- // http://www.apache.org/licenses/LICENSE-2.0
235
- //
236
- // Unless required by applicable law or agreed to in writing, software
237
- // distributed under the License is distributed on an "AS IS" BASIS,
238
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
239
- // See the License for the specific language governing permissions and
240
- // limitations under the License.
241
- &nbsp;
242
- import i18n, { type InitOptions } from "i18next";
243
- import I18nextBrowserLanguageDetector from "i18next-browser-languagedetector";
244
- import ChainedBackend from "i18next-chained-backend";
245
- import HttpBackend from "i18next-http-backend";
246
- import resourcesToBackend from "i18next-resources-to-backend";
247
- import { initReactI18next } from "react-i18next";
248
- import { i18nSharedOptions } from "./i18SharedOptions.js";
249
- &nbsp;
250
- const reactOptions: InitOptions = {
251
- react: {
252
- useSuspense: true,
253
- },
254
- detection: {
255
- order: ["navigator", "htmlTag", "path", "subdomain"],
256
- caches: ["localStorage", "cookie"],
257
- },
258
- };
259
- &nbsp;
260
- const getLoadPath = <span class="fstat-no" title="function not covered" >(language: string, namespace: string) =&gt; {</span>
261
- <span class="cstat-no" title="statement not covered" > const filename = import.meta.url.split("/").pop();</span>
262
- <span class="cstat-no" title="statement not covered" > return `${import.meta.url.replace(`/${filename}`, "")}/locales/${language}/${namespace}.json`;</span>
263
- <span class="cstat-no" title="statement not covered" >};</span>
264
- &nbsp;
265
- export <span class="fstat-no" title="function not covered" >function initializeI18n(</span>
266
- <span class="cstat-no" title="statement not covered" > i18nLoadedCallback?: (value: typeof i18n) =&gt; void,</span>
267
- <span class="cstat-no" title="statement not covered" >) {</span>
268
- <span class="cstat-no" title="statement not covered" > if (!i18n.isInitialized) {</span>
269
- <span class="cstat-no" title="statement not covered" > i18n</span>
270
- // @ts-ignore
271
- <span class="cstat-no" title="statement not covered" > .use(ChainedBackend)</span>
272
- <span class="cstat-no" title="statement not covered" > .use(</span>
273
- <span class="cstat-no" title="statement not covered" > new I18nextBrowserLanguageDetector(null, {</span>
274
- <span class="cstat-no" title="statement not covered" > order: ["cookie", "localStorage", "navigator"],</span>
275
- <span class="cstat-no" title="statement not covered" > lookupQuerystring: "lng",</span>
276
- <span class="cstat-no" title="statement not covered" > lookupCookie: "i18next",</span>
277
- <span class="cstat-no" title="statement not covered" > lookupLocalStorage: "i18nextLng",</span>
278
- <span class="cstat-no" title="statement not covered" > caches: ["localStorage", "cookie"],</span>
279
- <span class="cstat-no" title="statement not covered" > }),</span>
280
- <span class="cstat-no" title="statement not covered" > )</span>
281
- <span class="cstat-no" title="statement not covered" > .use(initReactI18next)</span>
282
- <span class="cstat-no" title="statement not covered" > .init({</span>
283
- <span class="cstat-no" title="statement not covered" > ...i18nSharedOptions,</span>
284
- <span class="cstat-no" title="statement not covered" > backend: {</span>
285
- <span class="cstat-no" title="statement not covered" > backends: [</span>
286
- <span class="cstat-no" title="statement not covered" > HttpBackend, // if a namespace can't be loaded via normal http-backend loadPath, then the inMemoryLocalBackend will try to return the correct resources</span>
287
- // with dynamic import, you have to use the "default" key of the module ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#importing_defaults )
288
- <span class="cstat-no" title="statement not covered" > resourcesToBackend(</span>
289
- <span class="cstat-no" title="statement not covered" > (language: string, namespace: string) =&gt;</span>
290
- <span class="cstat-no" title="statement not covered" > import(getLoadPath(language, namespace)),</span>
291
- <span class="cstat-no" title="statement not covered" > ),</span>
292
- <span class="cstat-no" title="statement not covered" > ],</span>
293
- <span class="cstat-no" title="statement not covered" > backendOptions: [</span>
294
- <span class="cstat-no" title="statement not covered" > {</span>
295
- <span class="cstat-no" title="statement not covered" > loadPath: getLoadPath("{{lng}}", "{{ns}}"),</span>
296
- <span class="cstat-no" title="statement not covered" > },</span>
297
- <span class="cstat-no" title="statement not covered" > ],</span>
298
- <span class="cstat-no" title="statement not covered" > },</span>
299
- <span class="cstat-no" title="statement not covered" > ...reactOptions,</span>
300
- <span class="cstat-no" title="statement not covered" > } as InitOptions);</span>
301
- <span class="cstat-no" title="statement not covered" > i18n.on("loaded", () =&gt; {</span>
302
- <span class="cstat-no" title="statement not covered" > i18nLoadedCallback?.(i18n);</span>
303
- <span class="cstat-no" title="statement not covered" > });</span>
304
- <span class="cstat-no" title="statement not covered" > }</span>
305
- <span class="cstat-no" title="statement not covered" > return i18n;</span>
306
- <span class="cstat-no" title="statement not covered" >}</span>
307
- &nbsp;
308
- export default initializeI18n;
309
- &nbsp;</pre></td></tr></table></pre>
310
-
311
- <div class='push'></div><!-- for sticky footer -->
312
- </div><!-- /wrapper -->
313
- <div class='footer quiet pad2 space-top1 center small'>
314
- Code coverage generated by
315
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
316
- at 2025-09-29T09:25:02.939Z
317
- </div>
318
- <script src="prettify.js"></script>
319
- <script>
320
- window.onload = function () {
321
- prettyPrint();
322
- };
323
- </script>
324
- <script src="sorter.js"></script>
325
- <script src="block-navigation.js"></script>
326
- </body>
327
- </html>
328
-