@prosopo/locale 3.1.2 → 3.1.21
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 +137 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +260 -0
- package/coverage/coverage-final.json +11 -0
- package/coverage/favicon.png +0 -0
- package/coverage/i18SharedOptions.ts.html +151 -0
- package/coverage/i18nBackend.ts.html +244 -0
- package/coverage/i18nFrontend.ts.html +328 -0
- package/coverage/i18nMiddleware.ts.html +160 -0
- package/coverage/index.html +251 -0
- package/coverage/index.ts.html +151 -0
- package/coverage/loadI18next.ts.html +232 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/translationKey.ts.html +229 -0
- package/coverage/translations.ts.html +247 -0
- package/coverage/useTranslation.ts.html +181 -0
- package/coverage/util.ts.html +160 -0
- package/dist/cjs/i18nBackend.cjs +2 -1
- package/dist/cjs/locales/en/translation.json.cjs +1 -1
- package/dist/i18SharedOptions.js +8 -10
- package/dist/i18SharedOptions.js.map +1 -0
- package/dist/i18nBackend.js +24 -26
- package/dist/i18nBackend.js.map +1 -0
- package/dist/i18nFrontend.js +43 -47
- package/dist/i18nFrontend.js.map +1 -0
- package/dist/i18nMiddleware.js +4 -5
- package/dist/i18nMiddleware.js.map +1 -0
- package/dist/index.js +7 -15
- package/dist/index.js.map +1 -0
- package/dist/loadI18next.js +29 -26
- package/dist/loadI18next.js.map +1 -0
- package/dist/locales/ar/translation.json +441 -440
- package/dist/locales/az/translation.json +441 -440
- package/dist/locales/cs/translation.json +441 -440
- package/dist/locales/de/translation.json +441 -440
- package/dist/locales/el/translation.json +441 -440
- package/dist/locales/en/translation.json +441 -440
- package/dist/locales/en/translation.json.js +1 -1
- package/dist/locales/es/translation.json +441 -440
- package/dist/locales/fi/translation.json +441 -440
- package/dist/locales/fr/translation.json +441 -440
- package/dist/locales/hi/translation.json +441 -440
- package/dist/locales/hu/translation.json +441 -440
- package/dist/locales/id/translation.json +441 -440
- package/dist/locales/it/translation.json +441 -440
- package/dist/locales/ja/translation.json +441 -440
- package/dist/locales/jv/translation.json +441 -440
- package/dist/locales/ko/translation.json +441 -440
- package/dist/locales/ml/translation.json +441 -440
- package/dist/locales/ms/translation.json +441 -440
- package/dist/locales/nl/translation.json +441 -440
- package/dist/locales/no/translation.json +441 -440
- package/dist/locales/pl/translation.json +441 -440
- package/dist/locales/pt/translation.json +441 -440
- package/dist/locales/pt-BR/translation.json +441 -440
- package/dist/locales/ro/translation.json +441 -440
- package/dist/locales/ru/translation.json +441 -440
- package/dist/locales/sr/translation.json +441 -440
- package/dist/locales/sv/translation.json +441 -440
- package/dist/locales/th/translation.json +441 -440
- package/dist/locales/tr/translation.json +441 -440
- package/dist/locales/uk/translation.json +441 -440
- package/dist/locales/vi/translation.json +441 -440
- package/dist/locales/zh-CN/translation.json +441 -440
- package/dist/tests/locales.unit.test.js +49 -0
- package/dist/tests/locales.unit.test.js.map +1 -0
- package/dist/translationKey.d.ts.map +1 -1
- package/dist/translationKey.js +15 -21
- package/dist/translationKey.js.map +1 -0
- package/dist/translations.js +35 -40
- package/dist/translations.js.map +1 -0
- package/dist/useTranslation.js +6 -7
- package/dist/useTranslation.js.map +1 -0
- package/dist/util.js +7 -8
- package/dist/util.js.map +1 -0
- package/package.json +11 -14
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for util.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> util.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">22.22% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>2/9</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">22.22% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>2/9</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
92
|
+
<span class="cline-any cline-neutral"> </span>
|
|
93
|
+
<span class="cline-any cline-neutral"> </span>
|
|
94
|
+
<span class="cline-any cline-neutral"> </span>
|
|
95
|
+
<span class="cline-any cline-neutral"> </span>
|
|
96
|
+
<span class="cline-any cline-neutral"> </span>
|
|
97
|
+
<span class="cline-any cline-neutral"> </span>
|
|
98
|
+
<span class="cline-any cline-neutral"> </span>
|
|
99
|
+
<span class="cline-any cline-neutral"> </span>
|
|
100
|
+
<span class="cline-any cline-neutral"> </span>
|
|
101
|
+
<span class="cline-any cline-neutral"> </span>
|
|
102
|
+
<span class="cline-any cline-neutral"> </span>
|
|
103
|
+
<span class="cline-any cline-neutral"> </span>
|
|
104
|
+
<span class="cline-any cline-neutral"> </span>
|
|
105
|
+
<span class="cline-any cline-yes">1x</span>
|
|
106
|
+
<span class="cline-any cline-no"> </span>
|
|
107
|
+
<span class="cline-any cline-no"> </span>
|
|
108
|
+
<span class="cline-any cline-no"> </span>
|
|
109
|
+
<span class="cline-any cline-no"> </span>
|
|
110
|
+
<span class="cline-any cline-neutral"> </span>
|
|
111
|
+
<span class="cline-any cline-no"> </span>
|
|
112
|
+
<span class="cline-any cline-neutral"> </span>
|
|
113
|
+
<span class="cline-any cline-yes">1x</span>
|
|
114
|
+
<span class="cline-any cline-no"> </span>
|
|
115
|
+
<span class="cline-any cline-no"> </span>
|
|
116
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// Copyright 2021-2025 Prosopo (UK) Ltd.
|
|
117
|
+
//
|
|
118
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
119
|
+
// you may not use this file except in compliance with the License.
|
|
120
|
+
// You may obtain a copy of the License at
|
|
121
|
+
//
|
|
122
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
123
|
+
//
|
|
124
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
125
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
126
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
127
|
+
// See the License for the specific language governing permissions and
|
|
128
|
+
// limitations under the License.
|
|
129
|
+
|
|
130
|
+
export const isClientSide = <span class="fstat-no" title="function not covered" >(): boolean => {</span>
|
|
131
|
+
<span class="cstat-no" title="statement not covered" > return !!(</span>
|
|
132
|
+
<span class="cstat-no" title="statement not covered" > typeof window !== "undefined" &&</span>
|
|
133
|
+
<span class="cstat-no" title="statement not covered" > window.document &&</span>
|
|
134
|
+
<span class="cstat-no" title="statement not covered" > window.document.createElement</span>
|
|
135
|
+
);
|
|
136
|
+
<span class="cstat-no" title="statement not covered" >};</span>
|
|
137
|
+
|
|
138
|
+
export const isServerSide = <span class="fstat-no" title="function not covered" >(): boolean => {</span>
|
|
139
|
+
<span class="cstat-no" title="statement not covered" > return !isClientSide();</span>
|
|
140
|
+
<span class="cstat-no" title="statement not covered" >};</span>
|
|
141
|
+
</pre></td></tr></table></pre>
|
|
142
|
+
|
|
143
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
144
|
+
</div><!-- /wrapper -->
|
|
145
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
146
|
+
Code coverage generated by
|
|
147
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
148
|
+
at 2025-09-29T09:25:02.939Z
|
|
149
|
+
</div>
|
|
150
|
+
<script src="prettify.js"></script>
|
|
151
|
+
<script>
|
|
152
|
+
window.onload = function () {
|
|
153
|
+
prettyPrint();
|
|
154
|
+
};
|
|
155
|
+
</script>
|
|
156
|
+
<script src="sorter.js"></script>
|
|
157
|
+
<script src="block-navigation.js"></script>
|
|
158
|
+
</body>
|
|
159
|
+
</html>
|
|
160
|
+
|
package/dist/cjs/i18nBackend.cjs
CHANGED
|
@@ -6,7 +6,8 @@ const FSBackend = require("i18next-fs-backend/cjs");
|
|
|
6
6
|
const i18nextHttpMiddleware = require("i18next-http-middleware");
|
|
7
7
|
const i18SharedOptions = require("./i18SharedOptions.cjs");
|
|
8
8
|
const util = require("./util.cjs");
|
|
9
|
-
|
|
9
|
+
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
10
|
+
const loadPath = `${path.dirname(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("i18nBackend.cjs", document.baseURI).href)}/locales/{{lng}}/{{ns}}.json`.replace(
|
|
10
11
|
"file://",
|
|
11
12
|
""
|
|
12
13
|
);
|
|
@@ -7,7 +7,7 @@ const CONTRACT = { "INVALID_ADDRESS": "Failed to encode invalid address", "CAPTC
|
|
|
7
7
|
const CONFIG = { "UNKNOWN_ENVIRONMENT": "Unknown environment requested", "INVALID_CAPTCHA_NUMBER": "Please configure captchas configurations correctly", "INVALID_LOG_LEVEL": "Invalid log level", "INVALID_PACKAGE_DIR": "Invalid package directory" };
|
|
8
8
|
const DATASET = { "DATASET_PARSE_ERROR": "Error parsing dataset", "SOLUTION_PARSE_ERROR": "Error parsing dataset", "HASH_ERROR": "Error hashing dataset", "DATASET_ID_UNDEFINED": "Dataset id undefined", "NOT_ENOUGH_LABELS": "Not enough labels", "NOT_ENOUGH_IMAGES": "Not enough images", "CAPTCHAS_COUNT_LESS_THAN_CONFIGURED": "Number of captchas in dataset is less than configured number of captchas", "SOLUTIONS_COUNT_LESS_THAN_CONFIGURED": "Number of solutions in dataset is less than configured number of solutions", "DUPLICATE_IMAGE": "duplicate image detected", "MERKLE_ERROR": "Error creating merkle tree" };
|
|
9
9
|
const DATABASE = { "DATABASE_IMPORT_FAILED": "Failed to import database engine", "DATABASE_UNDEFINED": "Database client is not connected", "DATABASE_HOST_UNDEFINED": "Database host address is not defined", "DATASET_LOAD_FAILED": "Data set load failed", "DATASET_GET_FAILED": "Failed to get dataset", "CAPTCHA_GET_FAILED": "Failed to get captcha", "CAPTCHA_UPDATE_FAILED": "Failed to update captcha", "IMAGE_GET_FAILED": "Failed to get image", "PENDING_RECORD_NOT_FOUND": "No pending record found", "INVALID_HASH": "Invalid hash", "SOLUTION_GET_FAILED": "Failed to get solution", "DATASET_WITH_SOLUTIONS_GET_FAILED": "No datasets found with required number of solutions", "SOLUTION_APPROVE_FAILED": "Failed to approve solution", "SOLUTION_FLAG_FAILED": "Failed to flag solution as processed", "TABLES_UNDEFINED": "Tables undefined", "CONNECTION_UNDEFINED": "Connection undefined", "COMMITMENT_FLAG_FAILED": "Failed to flag commitment as processed", "UNKNOWN": "Unknown database error" };
|
|
10
|
-
const CAPTCHA = { "PARSE_ERROR": "Error parsing captcha", "INVALID_CAPTCHA_ID": "Invalid captcha id", "INVALID_ITEM_FORMAT": "Only image and text item types allowed", "INVALID_SOLUTION_TYPE": "Invalid solution type", "INVALID_ITEM_HASH": "Invalid item hash", "DIFFERENT_DATASET_IDS": "Dataset ids do not match", "ID_MISMATCH": "captcha id mismatch", "MISSING_ITEM_HASH": "missing item hash", "INVALID_CAPTCHA_CHALLENGE": "Invalid captcha challenge", "DAPP_USER_SOLUTION_NOT_FOUND": "Dapp user solution not found", "NO_CAPTCHA": "No captcha found", "NO_SESSION_FOUND": "No session found", "INVALID_TOKEN": "Invalid token", "INVALID_SOLUTION": "Invalid solution", "DECRYPTION_ERROR": "Error decrypting" };
|
|
10
|
+
const CAPTCHA = { "PARSE_ERROR": "Error parsing captcha", "INVALID_CAPTCHA_ID": "Invalid captcha id", "INVALID_ITEM_FORMAT": "Only image and text item types allowed", "INVALID_SOLUTION_TYPE": "Invalid solution type", "INVALID_ITEM_HASH": "Invalid item hash", "DIFFERENT_DATASET_IDS": "Dataset ids do not match", "ID_MISMATCH": "captcha id mismatch", "MISSING_ITEM_HASH": "missing item hash", "INVALID_CAPTCHA_CHALLENGE": "Invalid captcha challenge", "DAPP_USER_SOLUTION_NOT_FOUND": "Dapp user solution not found", "NO_CAPTCHA": "No captcha found", "NO_SESSION_FOUND": "No session found", "IP_ADDRESS_MISMATCH": "IP address mismatch detected", "INVALID_TOKEN": "Invalid token", "INVALID_SOLUTION": "Invalid solution", "DECRYPTION_ERROR": "Error decrypting" };
|
|
11
11
|
const API = { "CAPTCHA_FAILED": "You answered one or more captchas incorrectly. Please try again", "CAPTCHA_PASSED": "You correctly answered the captchas", "BAD_REQUEST": "BadRequest", "USER_VERIFIED": "User verified", "USER_NOT_VERIFIED": "User not verified", "USER_NOT_VERIFIED_TIME_EXPIRED": "User not verified. Captcha solution has expired.", "USER_NOT_VERIFIED_NO_SOLUTION": "User not verified. No captcha solution found.", "USER_ALREADY_VERIFIED": "This solution has already been verified. User should complete a new captcha.", "UNKNOWN": "Unknown API error", "SITE_KEY_NOT_REGISTERED": "Site key not registered", "INCORRECT_CAPTCHA_TYPE": "Incorrect CAPTCHA type", "INSUFFICIENT_PERMISSIONS": "Insufficient permissions to perform this action", "INVALID_SITE_KEY": "Invalid site key", "UNAUTHORIZED_ORIGIN_URL": "Unauthorized origin URL", "UNAUTHORIZED": "Unauthorized", "INVALID_IP": "Invalid IP", "INVALID_URL": "Invalid URL", "INVALID_BODY": "Invalid body", "MISSING_BODY": "Missing body", "MISSING_QUERY_PARAMETERS": "Missing query parameters", "MISSING_AUTHORIZATION_HEADER": "Missing authorization header", "PARSE_ERROR": "Error parsing request", "NO_CONTENT_TYPE_HEADER": "No content-type header. Assumed JSON encoded body but failed to parse.", "TIMESTAMP_TOO_OLD": "Timestamp too old", "FORBIDDEN": "Forbidden", "PROVIDER_VERIFY_FAILED": "Provider verification failed" };
|
|
12
12
|
const PORTAL = { "CANNOT_MODIFY_OWNER_USER": "Cannot modify owner user", "CANNOT_DELETE_OWN_USER": "Cannot delete your own account", "CANNOT_DELETE_LAST_USER": "Cannot delete last user", "USER_ALREADY_EXISTS": "User already exists", "NO_SUGGESTIONS_FOUND": "No suggestions found", "CANNOT_DEACTIVATE_LAST_SITE": "Cannot deactivate the last active site" };
|
|
13
13
|
const CLI = { "PARAMETER_ERROR": "Invalid parameter" };
|
package/dist/i18SharedOptions.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const i18nSharedOptions = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
export {
|
|
10
|
-
i18nSharedOptions
|
|
1
|
+
import { LanguageSchema, Languages } from "./translations.js";
|
|
2
|
+
export const i18nSharedOptions = {
|
|
3
|
+
debug: process.env.PROSOPO_LOG_LEVEL === "debug",
|
|
4
|
+
fallbackLng: LanguageSchema.enum.en,
|
|
5
|
+
namespace: "translation",
|
|
6
|
+
supportedLngs: Object.values(Languages),
|
|
7
|
+
nonExplicitSupportedLngs: false,
|
|
11
8
|
};
|
|
9
|
+
//# sourceMappingURL=i18SharedOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18SharedOptions.js","sourceRoot":"","sources":["../src/i18SharedOptions.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,OAAO;IAChD,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE;IACnC,SAAS,EAAE,aAAa;IACxB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IACvC,wBAAwB,EAAE,KAAK;CAC/B,CAAC"}
|
package/dist/i18nBackend.js
CHANGED
|
@@ -1,32 +1,30 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import i18n from "i18next";
|
|
3
3
|
import FSBackend from "i18next-fs-backend/cjs";
|
|
4
|
-
import { LanguageDetector } from "i18next-http-middleware";
|
|
4
|
+
import { LanguageDetector as MiddlewareLanguageDetector } from "i18next-http-middleware";
|
|
5
5
|
import { i18nSharedOptions } from "./i18SharedOptions.js";
|
|
6
6
|
import { isServerSide } from "./util.js";
|
|
7
|
-
const loadPath = `${path.dirname(import.meta.url)}/locales/{{lng}}/{{ns}}.json`.replace(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
7
|
+
const loadPath = `${path.dirname(import.meta.url)}/locales/{{lng}}/{{ns}}.json`.replace("file://", "");
|
|
8
|
+
export function initializeI18n(i18nLoadedCallback) {
|
|
9
|
+
if (!i18n.isInitialized && isServerSide()) {
|
|
10
|
+
const lngDetector = new MiddlewareLanguageDetector(null, {
|
|
11
|
+
order: ["header", "query", "cookie"],
|
|
12
|
+
});
|
|
13
|
+
i18n
|
|
14
|
+
.use(FSBackend)
|
|
15
|
+
.use(lngDetector)
|
|
16
|
+
.init({
|
|
17
|
+
...i18nSharedOptions,
|
|
18
|
+
ns: ["translation"],
|
|
19
|
+
backend: {
|
|
20
|
+
loadPath,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
i18n.on("loaded", () => {
|
|
24
|
+
i18nLoadedCallback?.(i18n);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return i18n;
|
|
28
28
|
}
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
initializeI18n
|
|
32
|
-
};
|
|
29
|
+
export default initializeI18n;
|
|
30
|
+
//# sourceMappingURL=i18nBackend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18nBackend.js","sourceRoot":"","sources":["../src/i18nBackend.ts"],"names":[],"mappings":"AAcA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,IAAI,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,QAAQ,GACb,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,OAAO,CACrE,SAAS,EACT,EAAE,CACF,CAAC;AAEH,MAAM,UAAU,cAAc,CAC7B,kBAAiD;IAEjD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,EAAE,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,0BAA0B,CAAC,IAAI,EAAE;YACxD,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,IAAI;aAEF,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,WAAW,CAAC;aAChB,IAAI,CAAC;YACL,GAAG,iBAAiB;YACpB,EAAE,EAAE,CAAC,aAAa,CAAC;YACnB,OAAO,EAAE;gBACR,QAAQ;aACR;SACD,CAAC,CAAC;QACJ,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,eAAe,cAAc,CAAC"}
|
package/dist/i18nFrontend.js
CHANGED
|
@@ -6,54 +6,50 @@ import resourcesToBackend from "i18next-resources-to-backend";
|
|
|
6
6
|
import { initReactI18next } from "react-i18next";
|
|
7
7
|
import { i18nSharedOptions } from "./i18SharedOptions.js";
|
|
8
8
|
const reactOptions = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
react: {
|
|
10
|
+
useSuspense: true,
|
|
11
|
+
},
|
|
12
|
+
detection: {
|
|
13
|
+
order: ["navigator", "htmlTag", "path", "subdomain"],
|
|
14
|
+
caches: ["localStorage", "cookie"],
|
|
15
|
+
},
|
|
16
16
|
};
|
|
17
17
|
const getLoadPath = (language, namespace) => {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const filename = import.meta.url.split("/").pop();
|
|
19
|
+
return `${import.meta.url.replace(`/${filename}`, "")}/locales/${language}/${namespace}.json`;
|
|
20
20
|
};
|
|
21
|
-
function initializeI18n(i18nLoadedCallback) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
return i18n;
|
|
21
|
+
export function initializeI18n(i18nLoadedCallback) {
|
|
22
|
+
if (!i18n.isInitialized) {
|
|
23
|
+
i18n
|
|
24
|
+
.use(ChainedBackend)
|
|
25
|
+
.use(new I18nextBrowserLanguageDetector(null, {
|
|
26
|
+
order: ["cookie", "localStorage", "navigator"],
|
|
27
|
+
lookupQuerystring: "lng",
|
|
28
|
+
lookupCookie: "i18next",
|
|
29
|
+
lookupLocalStorage: "i18nextLng",
|
|
30
|
+
caches: ["localStorage", "cookie"],
|
|
31
|
+
}))
|
|
32
|
+
.use(initReactI18next)
|
|
33
|
+
.init({
|
|
34
|
+
...i18nSharedOptions,
|
|
35
|
+
backend: {
|
|
36
|
+
backends: [
|
|
37
|
+
HttpBackend,
|
|
38
|
+
resourcesToBackend((language, namespace) => import(getLoadPath(language, namespace))),
|
|
39
|
+
],
|
|
40
|
+
backendOptions: [
|
|
41
|
+
{
|
|
42
|
+
loadPath: getLoadPath("{{lng}}", "{{ns}}"),
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
...reactOptions,
|
|
47
|
+
});
|
|
48
|
+
i18n.on("loaded", () => {
|
|
49
|
+
i18nLoadedCallback?.(i18n);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return i18n;
|
|
55
53
|
}
|
|
56
|
-
export
|
|
57
|
-
|
|
58
|
-
initializeI18n
|
|
59
|
-
};
|
|
54
|
+
export default initializeI18n;
|
|
55
|
+
//# sourceMappingURL=i18nFrontend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18nFrontend.js","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"AAcA,OAAO,IAA0B,MAAM,SAAS,CAAC;AACjD,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,cAAc,MAAM,yBAAyB,CAAC;AACrD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,YAAY,GAAgB;IACjC,KAAK,EAAE;QACN,WAAW,EAAE,IAAI;KACjB;IACD,SAAS,EAAE;QACV,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;QACpD,MAAM,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC;KAClC;CACD,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAClD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,EAAE,EAAE,CAAC,YAAY,QAAQ,IAAI,SAAS,OAAO,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAC7B,kBAAiD;IAEjD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI;aAEF,GAAG,CAAC,cAAc,CAAC;aACnB,GAAG,CACH,IAAI,8BAA8B,CAAC,IAAI,EAAE;YACxC,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;YAC9C,iBAAiB,EAAE,KAAK;YACxB,YAAY,EAAE,SAAS;YACvB,kBAAkB,EAAE,YAAY;YAChC,MAAM,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC;SAClC,CAAC,CACF;aACA,GAAG,CAAC,gBAAgB,CAAC;aACrB,IAAI,CAAC;YACL,GAAG,iBAAiB;YACpB,OAAO,EAAE;gBACR,QAAQ,EAAE;oBACT,WAAW;oBAEX,kBAAkB,CACjB,CAAC,QAAgB,EAAE,SAAiB,EAAE,EAAE,CACvC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CACzC;iBACD;gBACD,cAAc,EAAE;oBACf;wBACC,QAAQ,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC;qBAC1C;iBACD;aACD;YACD,GAAG,YAAY;SACA,CAAC,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,eAAe,cAAc,CAAC"}
|
package/dist/i18nMiddleware.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { handle } from "i18next-http-middleware";
|
|
2
2
|
import loadI18next from "./loadI18next.js";
|
|
3
3
|
async function i18nMiddleware(options) {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const i18n = await loadI18next(true);
|
|
5
|
+
return handle(i18n, { ...options });
|
|
6
6
|
}
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
};
|
|
7
|
+
export default i18nMiddleware;
|
|
8
|
+
//# sourceMappingURL=i18nMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18nMiddleware.js","sourceRoot":"","sources":["../src/i18nMiddleware.ts"],"names":[],"mappings":"AAcA,OAAO,EAAsB,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,KAAK,UAAU,cAAc,CAC5B,OAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,eAAe,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
LanguageSchema,
|
|
9
|
-
Languages,
|
|
10
|
-
TranslationKeysSchema,
|
|
11
|
-
default2 as i18nMiddleware,
|
|
12
|
-
isClientSide,
|
|
13
|
-
default3 as loadI18next,
|
|
14
|
-
default4 as useTranslation
|
|
15
|
-
};
|
|
1
|
+
export { default as i18nMiddleware } from "./i18nMiddleware.js";
|
|
2
|
+
export { default as loadI18next } from "./loadI18next.js";
|
|
3
|
+
export { Languages, LanguageSchema } from "./translations.js";
|
|
4
|
+
export { isClientSide } from "./util.js";
|
|
5
|
+
export { TranslationKeysSchema } from "./translationKey.js";
|
|
6
|
+
export { default as useTranslation } from "./useTranslation.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/loadI18next.js
CHANGED
|
@@ -1,29 +1,32 @@
|
|
|
1
1
|
let i18nInstance;
|
|
2
2
|
async function loadI18next(backend) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
try {
|
|
5
|
+
if (backend) {
|
|
6
|
+
import("./i18nBackend.js").then(({ default: initializeI18n }) => {
|
|
7
|
+
if (!i18nInstance) {
|
|
8
|
+
i18nInstance = initializeI18n(resolve);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
resolve(i18nInstance);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
import("./i18nFrontend.js").then(({ default: initializeI18n }) => {
|
|
17
|
+
if (!i18nInstance) {
|
|
18
|
+
i18nInstance = initializeI18n(resolve);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
resolve(i18nInstance);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
reject(e);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
26
30
|
}
|
|
27
|
-
export
|
|
28
|
-
|
|
29
|
-
};
|
|
31
|
+
export default loadI18next;
|
|
32
|
+
//# sourceMappingURL=loadI18next.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadI18next.js","sourceRoot":"","sources":["../src/loadI18next.ts"],"names":[],"mappings":"AAeA,IAAI,YAAkB,CAAC;AACvB,KAAK,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,IAAI,CAAC;YACJ,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;oBAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;wBAEnB,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBAEP,OAAO,CAAC,YAAY,CAAC,CAAC;oBACvB,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;oBAChE,IAAI,CAAC,YAAY,EAAE,CAAC;wBAEnB,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBAEP,OAAO,CAAC,YAAY,CAAC,CAAC;oBACvB,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,CAAC,CAAC,CAAC,CAAC;QACX,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAID,eAAe,WAAW,CAAC"}
|