@prosopo/locale 3.6.0 → 3.6.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/.turbo/turbo-build$colon$cjs.log +9 -7
- package/.turbo/turbo-build$colon$tsc.log +6 -6
- package/.turbo/turbo-build.log +11 -9
- package/CHANGELOG.md +31 -0
- package/dist/cjs/direction.cjs +19 -0
- package/dist/cjs/errorMessage.cjs +15 -0
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/locales/en/translation.cjs +21 -4
- package/dist/cjs/translationKey.cjs +4 -0
- package/dist/direction.d.ts +3 -0
- package/dist/direction.d.ts.map +1 -0
- package/dist/direction.js +19 -0
- package/dist/direction.js.map +1 -0
- package/dist/errorMessage.d.ts +7 -0
- package/dist/errorMessage.d.ts.map +1 -0
- package/dist/errorMessage.js +15 -0
- package/dist/errorMessage.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/locales/ar/translation.json +21 -4
- package/dist/locales/az/translation.json +21 -4
- package/dist/locales/cs/translation.json +21 -4
- package/dist/locales/de/translation.json +21 -4
- package/dist/locales/el/translation.json +21 -4
- package/dist/locales/en/translation.js +21 -4
- package/dist/locales/en/translation.json +21 -4
- package/dist/locales/es/translation.json +21 -4
- package/dist/locales/fi/translation.json +22 -5
- package/dist/locales/fr/translation.json +21 -4
- package/dist/locales/hi/translation.json +424 -407
- package/dist/locales/hu/translation.json +21 -4
- package/dist/locales/id/translation.json +21 -4
- package/dist/locales/it/translation.json +21 -4
- package/dist/locales/ja/translation.json +21 -4
- package/dist/locales/jv/translation.json +21 -4
- package/dist/locales/ko/translation.json +21 -4
- package/dist/locales/ml/translation.json +21 -4
- package/dist/locales/ms/translation.json +21 -4
- package/dist/locales/nl/translation.json +22 -5
- package/dist/locales/no/translation.json +21 -4
- package/dist/locales/pl/translation.json +21 -4
- package/dist/locales/pt/translation.json +21 -4
- package/dist/locales/pt-BR/translation.json +21 -4
- package/dist/locales/ro/translation.json +21 -4
- package/dist/locales/ru/translation.json +21 -4
- package/dist/locales/sr/translation.json +21 -4
- package/dist/locales/sv/translation.json +21 -4
- package/dist/locales/th/translation.json +21 -4
- package/dist/locales/tr/translation.json +21 -4
- package/dist/locales/uk/translation.json +21 -4
- package/dist/locales/vi/translation.json +21 -4
- package/dist/locales/zh-CN/translation.json +21 -4
- package/dist/tests/direction.unit.test.d.ts +2 -0
- package/dist/tests/direction.unit.test.d.ts.map +1 -0
- package/dist/tests/direction.unit.test.js +31 -0
- package/dist/tests/direction.unit.test.js.map +1 -0
- package/dist/tests/errorMessage.unit.test.d.ts +2 -0
- package/dist/tests/errorMessage.unit.test.d.ts.map +1 -0
- package/dist/tests/errorMessage.unit.test.js +49 -0
- package/dist/tests/errorMessage.unit.test.js.map +1 -0
- package/dist/tests/i18nFrontend.unit.test.js +22 -11
- package/dist/tests/i18nFrontend.unit.test.js.map +1 -1
- package/dist/tests/locale.test-d.js +18 -3
- package/dist/tests/locale.test-d.js.map +1 -1
- package/dist/tests/localePlaceholders.unit.test.d.ts +2 -0
- package/dist/tests/localePlaceholders.unit.test.d.ts.map +1 -0
- package/dist/tests/localePlaceholders.unit.test.js +35 -0
- package/dist/tests/localePlaceholders.unit.test.js.map +1 -0
- package/dist/tests/thrownErrorKeys.unit.test.d.ts +2 -0
- package/dist/tests/thrownErrorKeys.unit.test.d.ts.map +1 -0
- package/dist/tests/thrownErrorKeys.unit.test.js +59 -0
- package/dist/tests/thrownErrorKeys.unit.test.js.map +1 -0
- package/dist/tests/translationKey.unit.test.js +13 -1
- package/dist/tests/translationKey.unit.test.js.map +1 -1
- package/dist/translationKey.d.ts +7 -1
- package/dist/translationKey.d.ts.map +1 -1
- package/dist/translationKey.js +4 -1
- package/dist/translationKey.js.map +1 -1
- package/dist/translator.d.ts +2 -1
- package/dist/translator.d.ts.map +1 -1
- package/dist/translator.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/direction.ts +36 -0
- package/src/errorMessage.ts +37 -0
- package/src/index.ts +5 -1
- package/src/locales/ar/translation.json +21 -4
- package/src/locales/az/translation.json +21 -4
- package/src/locales/cs/translation.json +21 -4
- package/src/locales/de/translation.json +21 -4
- package/src/locales/el/translation.json +21 -4
- package/src/locales/en/translation.json +21 -4
- package/src/locales/es/translation.json +21 -4
- package/src/locales/fi/translation.json +22 -5
- package/src/locales/fr/translation.json +21 -4
- package/src/locales/hi/translation.json +424 -407
- package/src/locales/hu/translation.json +21 -4
- package/src/locales/id/translation.json +21 -4
- package/src/locales/it/translation.json +21 -4
- package/src/locales/ja/translation.json +21 -4
- package/src/locales/jv/translation.json +21 -4
- package/src/locales/ko/translation.json +21 -4
- package/src/locales/ml/translation.json +21 -4
- package/src/locales/ms/translation.json +21 -4
- package/src/locales/nl/translation.json +22 -5
- package/src/locales/no/translation.json +21 -4
- package/src/locales/pl/translation.json +21 -4
- package/src/locales/pt/translation.json +21 -4
- package/src/locales/pt-BR/translation.json +21 -4
- package/src/locales/ro/translation.json +21 -4
- package/src/locales/ru/translation.json +21 -4
- package/src/locales/sr/translation.json +21 -4
- package/src/locales/sv/translation.json +21 -4
- package/src/locales/th/translation.json +21 -4
- package/src/locales/tr/translation.json +21 -4
- package/src/locales/uk/translation.json +21 -4
- package/src/locales/vi/translation.json +21 -4
- package/src/locales/zh-CN/translation.json +21 -4
- package/src/tests/direction.unit.test.ts +52 -0
- package/src/tests/errorMessage.unit.test.ts +84 -0
- package/src/tests/i18nFrontend.unit.test.ts +25 -14
- package/src/tests/locale.test-d.ts +26 -2
- package/src/tests/localePlaceholders.unit.test.ts +81 -0
- package/src/tests/thrownErrorKeys.unit.test.ts +91 -0
- package/src/tests/translationKey.unit.test.ts +15 -0
- package/src/translationKey.ts +14 -5
- package/src/translator.ts +3 -2
- package/src/types.ts +6 -1
- package/tsconfig.tsbuildinfo +1 -1
package/dist/translationKey.js
CHANGED
|
@@ -13,5 +13,8 @@ function getLeafFieldPath(obj) {
|
|
|
13
13
|
}, []);
|
|
14
14
|
}
|
|
15
15
|
var translationKeys = getLeafFieldPath(translation_default);
|
|
16
|
+
var translationKeySet = new Set(translationKeys);
|
|
17
|
+
/** For keys that only exist at runtime, e.g. an error message. */
|
|
18
|
+
var isTranslationKey = (value) => translationKeySet.has(value);
|
|
16
19
|
//#endregion
|
|
17
|
-
export { getLeafFieldPath, translationKeys };
|
|
20
|
+
export { getLeafFieldPath, isTranslationKey, translationKeys };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translationKey.js","sourceRoot":"","sources":["../src/translationKey.ts"],"names":[],"mappings":"AAcA,OAAO,aAAa,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAWhF,MAAM,UAAU,gBAAgB,CAAC,GAAoB;IACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;QASD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO,GAAG,CAAC,MAAM,CAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC,CACF,CAAC;IACH,CAAC,EAAE,EAAc,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAa,gBAAgB,CAAC,aAAa,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"translationKey.js","sourceRoot":"","sources":["../src/translationKey.ts"],"names":[],"mappings":"AAcA,OAAO,aAAa,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAWhF,MAAM,UAAU,gBAAgB,CAAC,GAAoB;IACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;QASD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO,GAAG,CAAC,MAAM,CAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC,CACF,CAAC;IACH,CAAC,EAAE,EAAc,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAa,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAWzE,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;AAGxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAA2B,EAAE,CAC1E,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC"}
|
package/dist/translator.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { TranslationKey } from "./translationKey.js";
|
|
1
2
|
import type { Ti18n, TranslateOptions } from "./types.js";
|
|
2
3
|
export interface Translator {
|
|
3
|
-
t(key:
|
|
4
|
+
t(key: TranslationKey, options?: TranslateOptions): string;
|
|
4
5
|
isReady(): boolean;
|
|
5
6
|
subscribe(listener: () => void): () => void;
|
|
6
7
|
readonly i18n: Ti18n;
|
package/dist/translator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,UAAU;IAM1B,CAAC,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,UAAU;IAM1B,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAM3D,OAAO,IAAI,OAAO,CAAC;IAKnB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACrB;AAMD,eAAO,MAAM,gBAAgB,cAAe,KAAK,KAAG,UAuBnD,CAAC"}
|
package/dist/translator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translator.js","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"translator.js","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"AAcA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAI/C,MAAM,SAAS,GAAG,aAAa,CAAC;AA2BhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAc,EAAE;IAChE,MAAM,IAAI,GAAU,QAAQ,IAAI,cAAc,EAAE,CAAC;IAEjD,MAAM,OAAO,GAAG,GAAY,EAAE,CAC7B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE1D,OAAO;QACN,CAAC,EAAE,CAAC,GAAmB,EAAE,OAA0B,EAAU,EAAE,CAC9D,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC;QACrB,OAAO;QACP,IAAI;QACJ,SAAS,EAAE,CAAC,QAAoB,EAAgB,EAAE;YACjD,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAU,CAAC;YACrE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,GAAG,EAAE;gBACX,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { TranslationKey } from "./translationKey.js";
|
|
1
2
|
export interface TranslateOptions {
|
|
2
3
|
defaultValue?: string;
|
|
3
4
|
[value: string]: unknown;
|
|
4
5
|
}
|
|
5
|
-
export type TranslateFn = (key:
|
|
6
|
+
export type TranslateFn = (key: TranslationKey, options?: TranslateOptions) => string;
|
|
6
7
|
export type I18nEvent = "initialized" | "loaded" | "languageChanged";
|
|
7
8
|
export interface Ti18n {
|
|
8
9
|
readonly language: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,WAAW,gBAAgB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,WAAW,GAAG,CACzB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,gBAAgB,KACtB,MAAM,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAOrE,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,CAAC,EAAE,WAAW,CAAC;IACf,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/C,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACjD,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAClD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/locale",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.2",
|
|
4
4
|
"description": "Prosopo locale library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"author": "Prosopo Limited",
|
|
33
33
|
"license": "Apache-2.0",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@prosopo/util": "3.3.
|
|
35
|
+
"@prosopo/util": "3.3.13",
|
|
36
36
|
"i18next": "26.4.2",
|
|
37
37
|
"i18next-fs-backend": "2.6.8",
|
|
38
38
|
"i18next-http-middleware": "3.9.9"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@prosopo/config": "3.4.
|
|
41
|
+
"@prosopo/config": "3.4.2",
|
|
42
42
|
"@types/node": "22.10.2",
|
|
43
43
|
"@vitest/coverage-v8": "4.1.11",
|
|
44
44
|
"concurrently": "9.0.1",
|
package/src/direction.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright 2021-2026 Prosopo (UK) Ltd.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
export type TextDirection = "ltr" | "rtl";
|
|
16
|
+
|
|
17
|
+
// Scripts written right to left, by primary language subtag. Wider than the
|
|
18
|
+
// shipped catalogues so a site asking for e.g. "he" still gets a mirrored
|
|
19
|
+
// layout around whichever fallback text it is served.
|
|
20
|
+
const RTL_LANGUAGES: ReadonlySet<string> = new Set([
|
|
21
|
+
"ar",
|
|
22
|
+
"ckb",
|
|
23
|
+
"dv",
|
|
24
|
+
"fa",
|
|
25
|
+
"he",
|
|
26
|
+
"ps",
|
|
27
|
+
"sd",
|
|
28
|
+
"ug",
|
|
29
|
+
"ur",
|
|
30
|
+
"yi",
|
|
31
|
+
]);
|
|
32
|
+
|
|
33
|
+
export const getLanguageDirection = (language: string): TextDirection => {
|
|
34
|
+
const primary = language.split(/[-_]/)[0]?.toLowerCase() ?? "";
|
|
35
|
+
return RTL_LANGUAGES.has(primary) ? "rtl" : "ltr";
|
|
36
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright 2021-2026 Prosopo (UK) Ltd.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { isTranslationKey } from "./translationKey.js";
|
|
15
|
+
import type { Ti18n } from "./types.js";
|
|
16
|
+
|
|
17
|
+
export interface KeyedErrorMessage {
|
|
18
|
+
message: string;
|
|
19
|
+
key?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The provider translates error messages into the request's Accept-Language,
|
|
24
|
+
* which is the browser's language rather than the widget's. Re-translating the
|
|
25
|
+
* error key on the client shows the error in the language the widget renders
|
|
26
|
+
* in. Free text and keys the catalogue doesn't have keep the server's message.
|
|
27
|
+
*/
|
|
28
|
+
export const localiseErrorMessage = (
|
|
29
|
+
i18n: Ti18n | undefined,
|
|
30
|
+
error: KeyedErrorMessage,
|
|
31
|
+
): string => {
|
|
32
|
+
const { key, message } = error;
|
|
33
|
+
if (!key || !isTranslationKey(key) || !i18n?.isInitialized) {
|
|
34
|
+
return message;
|
|
35
|
+
}
|
|
36
|
+
return i18n.t(key, { defaultValue: message });
|
|
37
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -12,12 +12,14 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
|
+
export { getLanguageDirection } from "./direction.js";
|
|
16
|
+
export type { TextDirection } from "./direction.js";
|
|
15
17
|
export { default as i18nMiddleware } from "./i18nMiddleware.js";
|
|
16
18
|
export { default as loadI18next } from "./loadI18next.js";
|
|
17
19
|
export { isLanguage, LanguageCodes, Languages } from "./translations.js";
|
|
18
20
|
export type { Language } from "./translations.js";
|
|
19
21
|
export { isClientSide } from "./util.js";
|
|
20
|
-
export { translationKeys } from "./translationKey.js";
|
|
22
|
+
export { isTranslationKey, translationKeys } from "./translationKey.js";
|
|
21
23
|
export type { TranslationKey } from "./translationKey.js";
|
|
22
24
|
export { createTranslator } from "./translator.js";
|
|
23
25
|
export type { Translator } from "./translator.js";
|
|
@@ -27,3 +29,5 @@ export type {
|
|
|
27
29
|
TranslateFn,
|
|
28
30
|
TranslateOptions,
|
|
29
31
|
} from "./types.js";
|
|
32
|
+
export { localiseErrorMessage } from "./errorMessage.js";
|
|
33
|
+
export type { KeyedErrorMessage } from "./errorMessage.js";
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "توقيع غير صالح",
|
|
11
11
|
"SITE_KEY_MISSING": "مفتاح الموقع مفقود",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "الحساب غير موجود",
|
|
13
|
-
"INVALID_TIMESTAMP": "الطابع الزمني غير صالح"
|
|
13
|
+
"INVALID_TIMESTAMP": "الطابع الزمني غير صالح",
|
|
14
|
+
"MISSING_AUTH_HEADER": "ترويسة التفويض مفقودة",
|
|
15
|
+
"INVALID_JWT": "رمز JWT غير صالح"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "صلاحيات غير كافية لأداء هذا الإجراء",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "لا يُسمح بالطلبات من شبكات الهاتف المحمول لهذا الموقع",
|
|
55
57
|
"SATELLITE_BLOCKED": "لا يُسمح بالطلبات من الاتصالات الفضائية لهذا الموقع",
|
|
56
58
|
"CRAWLER_BLOCKED": "لا يُسمح بالطلبات من برامج الزحف المعروفة لهذا الموقع",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "الطلبات من المتصفحات داخل التطبيقات (WebView) غير مسموح بها لهذا الموقع"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "الطلبات من المتصفحات داخل التطبيقات (WebView) غير مسموح بها لهذا الموقع",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "خطأ داخلي في الخادم"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "لا يمكن تعديل مالك المستخدم",
|
|
@@ -381,6 +384,11 @@
|
|
|
381
384
|
"INSECURE_CONTEXT": "يتطلب Procaptcha اتصالاً آمنًا (HTTPS)",
|
|
382
385
|
"CHECKING": "جارٍ التحقق من أنك إنسان",
|
|
383
386
|
"IMAGE_DIALOG_LABEL": "اختبار الصور",
|
|
387
|
+
"CANNOT_LOAD": "تعذّر تحميل اختبار CAPTCHA",
|
|
388
|
+
"RELOAD": "إعادة تحميل",
|
|
389
|
+
"VERIFIED_AGENT": "وكيل موثَّق",
|
|
390
|
+
"TRUSTED_REQUEST": "طلب موثوق",
|
|
391
|
+
"LOADING": "جارٍ التحميل",
|
|
384
392
|
"PUZZLE": {
|
|
385
393
|
"DIALOG_LABEL": "اختبار الأحجية",
|
|
386
394
|
"DRAG": "اسحب القطعة إلى الهدف",
|
|
@@ -436,7 +444,13 @@
|
|
|
436
444
|
"TABLES_UNDEFINED": "جداول غير معرفة",
|
|
437
445
|
"CONNECTION_UNDEFINED": "الاتصال غير معرف",
|
|
438
446
|
"COMMITMENT_FLAG_FAILED": "فشل في تحديد التعهد كمعالج",
|
|
439
|
-
"UNKNOWN": "خطأ غير معروف في قاعدة البيانات"
|
|
447
|
+
"UNKNOWN": "خطأ غير معروف في قاعدة البيانات",
|
|
448
|
+
"QUERY_ERROR": "فشل استعلام قاعدة البيانات",
|
|
449
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "اتصال Redis لقواعد الوصول غير معرف",
|
|
450
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "تخزين قواعد وصول المستخدم غير معرف",
|
|
451
|
+
"SESSION_STORE_FAILED": "فشل تخزين الجلسة",
|
|
452
|
+
"SESSION_CHECK_REMOVE_FAILED": "فشل التحقق من الجلسة وإزالتها",
|
|
453
|
+
"SESSION_GET_FAILED": "فشل الحصول على الجلسة"
|
|
440
454
|
},
|
|
441
455
|
"CAPTCHA": {
|
|
442
456
|
"PARSE_ERROR": "خطأ في تحليل كلمة التحقق",
|
|
@@ -455,7 +469,10 @@
|
|
|
455
469
|
"INVALID_SALT": "ملح غير صالح",
|
|
456
470
|
"INVALID_TOKEN": "الرمز غير صالح",
|
|
457
471
|
"INVALID_SOLUTION": "الحل غير صالح",
|
|
458
|
-
"DECRYPTION_ERROR": "خطأ في فك التشفير"
|
|
472
|
+
"DECRYPTION_ERROR": "خطأ في فك التشفير",
|
|
473
|
+
"SOLUTION_NOT_FOUND": "الحل غير موجود",
|
|
474
|
+
"DECISION_MACHINE_DENIED": "رُفض بواسطة آلة القرار",
|
|
475
|
+
"INVALID_TIMESTAMP": "الطابع الزمني غير صالح"
|
|
459
476
|
},
|
|
460
477
|
"CLI": {
|
|
461
478
|
"PARAMETER_ERROR": "معلمة غير صالحة"
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "Yanlış imza",
|
|
11
11
|
"SITE_KEY_MISSING": "SITE KEY çatışmır",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "Hesab tapılmadı",
|
|
13
|
-
"INVALID_TIMESTAMP": "Yanlış vaxt damğı"
|
|
13
|
+
"INVALID_TIMESTAMP": "Yanlış vaxt damğı",
|
|
14
|
+
"MISSING_AUTH_HEADER": "Avtorizasiya başlığı yoxdur",
|
|
15
|
+
"INVALID_JWT": "Etibarsız JWT"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "Bu əməliyyatı yerinə yetirmək üçün kifayət qədər icazə yoxdur",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "Bu sayt üçün mobil şəbəkə bağlantılarından sorğulara icazə verilmir",
|
|
55
57
|
"SATELLITE_BLOCKED": "Bu sayt üçün peyk bağlantılarından sorğulara icazə verilmir",
|
|
56
58
|
"CRAWLER_BLOCKED": "Bu sayt üçün tanınmış tarayıcılardan sorğulara icazə verilmir",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "Bu sayt üçün tətbiqdaxili brauzerlərdən (WebView) sorğulara icazə verilmir"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "Bu sayt üçün tətbiqdaxili brauzerlərdən (WebView) sorğulara icazə verilmir",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "Daxili server xətası"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "Sahib istifadəçini dəyişmək olmaz",
|
|
@@ -381,6 +384,11 @@
|
|
|
381
384
|
"INSECURE_CONTEXT": "Procaptcha təhlükəsiz (HTTPS) bağlantı tələb edir",
|
|
382
385
|
"CHECKING": "İnsan olduğunuz yoxlanılır",
|
|
383
386
|
"IMAGE_DIALOG_LABEL": "Şəkil yoxlaması",
|
|
387
|
+
"CANNOT_LOAD": "CAPTCHA yüklənə bilmir",
|
|
388
|
+
"RELOAD": "Yenidən yüklə",
|
|
389
|
+
"VERIFIED_AGENT": "Təsdiqlənmiş agent",
|
|
390
|
+
"TRUSTED_REQUEST": "Etibarlı sorğu",
|
|
391
|
+
"LOADING": "Yüklənir",
|
|
384
392
|
"PUZZLE": {
|
|
385
393
|
"DIALOG_LABEL": "Tapmaca yoxlaması",
|
|
386
394
|
"DRAG": "Hissəni hədəfə sürüşdürün",
|
|
@@ -436,7 +444,13 @@
|
|
|
436
444
|
"TABLES_UNDEFINED": "Cədvəllər müəyyən edilməyib",
|
|
437
445
|
"CONNECTION_UNDEFINED": "Qoşulma müəyyənləndirilməyib",
|
|
438
446
|
"COMMITMENT_FLAG_FAILED": "Müvafiq olaraq işarələmək alınmadı",
|
|
439
|
-
"UNKNOWN": "Naməlum verilənlər bazası səhvi"
|
|
447
|
+
"UNKNOWN": "Naməlum verilənlər bazası səhvi",
|
|
448
|
+
"QUERY_ERROR": "Verilənlər bazası sorğusu uğursuz oldu",
|
|
449
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Redis giriş qaydaları bağlantısı təyin edilməyib",
|
|
450
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "İstifadəçi giriş qaydaları yaddaşı təyin edilməyib",
|
|
451
|
+
"SESSION_STORE_FAILED": "Sessiyanı saxlamaq alınmadı",
|
|
452
|
+
"SESSION_CHECK_REMOVE_FAILED": "Sessiyanı yoxlamaq və silmək alınmadı",
|
|
453
|
+
"SESSION_GET_FAILED": "Sessiyanı almaq alınmadı"
|
|
440
454
|
},
|
|
441
455
|
"CAPTCHA": {
|
|
442
456
|
"PARSE_ERROR": "Captcha analiz edərkən səhv",
|
|
@@ -455,7 +469,10 @@
|
|
|
455
469
|
"INVALID_SALT": "Yanlış duz",
|
|
456
470
|
"INVALID_TOKEN": "Yanlış token",
|
|
457
471
|
"INVALID_SOLUTION": "Yanlış həll",
|
|
458
|
-
"DECRYPTION_ERROR": "Şifrəni çözərkən səhv"
|
|
472
|
+
"DECRYPTION_ERROR": "Şifrəni çözərkən səhv",
|
|
473
|
+
"SOLUTION_NOT_FOUND": "Həll tapılmadı",
|
|
474
|
+
"DECISION_MACHINE_DENIED": "Qərar maşını tərəfindən rədd edildi",
|
|
475
|
+
"INVALID_TIMESTAMP": "Yanlış vaxt damğı"
|
|
459
476
|
},
|
|
460
477
|
"CLI": {
|
|
461
478
|
"PARAMETER_ERROR": "Yanlış parametr"
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "Neplatný podpis",
|
|
11
11
|
"SITE_KEY_MISSING": "Chybějící SITE KEY",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "Účet nenalezen",
|
|
13
|
-
"INVALID_TIMESTAMP": "Neplatný časový razítko"
|
|
13
|
+
"INVALID_TIMESTAMP": "Neplatný časový razítko",
|
|
14
|
+
"MISSING_AUTH_HEADER": "Chybí autorizační hlavička",
|
|
15
|
+
"INVALID_JWT": "Neplatný JWT"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "Nedostatečná oprávnění k provedení této akce",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "Požadavky z mobilních sítí nejsou pro tento web povoleny",
|
|
55
57
|
"SATELLITE_BLOCKED": "Požadavky ze satelitních připojení nejsou pro tento web povoleny",
|
|
56
58
|
"CRAWLER_BLOCKED": "Požadavky ze známých crawlerů nejsou pro tento web povoleny",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "Požadavky z prohlížečů v aplikacích (WebView) nejsou pro tento web povoleny"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "Požadavky z prohlížečů v aplikacích (WebView) nejsou pro tento web povoleny",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "Interní chyba serveru"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "Nelze upravit vlastníka uživatele",
|
|
@@ -381,6 +384,11 @@
|
|
|
381
384
|
"INSECURE_CONTEXT": "Procaptcha vyžaduje zabezpečené připojení (HTTPS)",
|
|
382
385
|
"CHECKING": "Ověřujeme, že jste člověk",
|
|
383
386
|
"IMAGE_DIALOG_LABEL": "Obrázkový úkol",
|
|
387
|
+
"CANNOT_LOAD": "CAPTCHA nelze načíst",
|
|
388
|
+
"RELOAD": "Načíst znovu",
|
|
389
|
+
"VERIFIED_AGENT": "Ověřený agent",
|
|
390
|
+
"TRUSTED_REQUEST": "Důvěryhodný požadavek",
|
|
391
|
+
"LOADING": "Načítání",
|
|
384
392
|
"PUZZLE": {
|
|
385
393
|
"DIALOG_LABEL": "Skládačkový úkol",
|
|
386
394
|
"DRAG": "Přetáhněte dílek na cíl",
|
|
@@ -436,7 +444,13 @@
|
|
|
436
444
|
"TABLES_UNDEFINED": "Tabulky nedefinovány",
|
|
437
445
|
"CONNECTION_UNDEFINED": "Připojení není definováno",
|
|
438
446
|
"COMMITMENT_FLAG_FAILED": "Nepodařilo se označit závazek jako zpracovaný",
|
|
439
|
-
"UNKNOWN": "Neznámá chyba databáze"
|
|
447
|
+
"UNKNOWN": "Neznámá chyba databáze",
|
|
448
|
+
"QUERY_ERROR": "Dotaz do databáze selhal",
|
|
449
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Připojení Redis pro pravidla přístupu není definováno",
|
|
450
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "Úložiště pravidel přístupu uživatelů není definováno",
|
|
451
|
+
"SESSION_STORE_FAILED": "Uložení relace se nezdařilo",
|
|
452
|
+
"SESSION_CHECK_REMOVE_FAILED": "Kontrola a odebrání relace se nezdařily",
|
|
453
|
+
"SESSION_GET_FAILED": "Načtení relace se nezdařilo"
|
|
440
454
|
},
|
|
441
455
|
"CAPTCHA": {
|
|
442
456
|
"PARSE_ERROR": "Chyba při analýze captcha",
|
|
@@ -455,7 +469,10 @@
|
|
|
455
469
|
"INVALID_SALT": "Neplatný salt",
|
|
456
470
|
"INVALID_TOKEN": "Neplatný token",
|
|
457
471
|
"INVALID_SOLUTION": "Neplatné řešení",
|
|
458
|
-
"DECRYPTION_ERROR": "Chyba dešifrování"
|
|
472
|
+
"DECRYPTION_ERROR": "Chyba dešifrování",
|
|
473
|
+
"SOLUTION_NOT_FOUND": "Řešení nenalezeno",
|
|
474
|
+
"DECISION_MACHINE_DENIED": "Zamítnuto rozhodovacím strojem",
|
|
475
|
+
"INVALID_TIMESTAMP": "Neplatný časový razítko"
|
|
459
476
|
},
|
|
460
477
|
"CLI": {
|
|
461
478
|
"PARAMETER_ERROR": "Neplatný parametr"
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "Ungültige Signatur",
|
|
11
11
|
"SITE_KEY_MISSING": "SITE-KEY fehlt",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "Konto nicht gefunden",
|
|
13
|
-
"INVALID_TIMESTAMP": "Ungültiger Zeitstempel"
|
|
13
|
+
"INVALID_TIMESTAMP": "Ungültiger Zeitstempel",
|
|
14
|
+
"MISSING_AUTH_HEADER": "Autorisierungs-Header fehlt",
|
|
15
|
+
"INVALID_JWT": "Ungültiges JWT"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "Unzureichende Berechtigungen zur Ausführung dieser Aktion",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "Anfragen von Mobilfunkverbindungen sind für diese Website nicht erlaubt",
|
|
55
57
|
"SATELLITE_BLOCKED": "Anfragen von Satellitenverbindungen sind für diese Website nicht erlaubt",
|
|
56
58
|
"CRAWLER_BLOCKED": "Anfragen von bekannten Crawlern sind für diese Website nicht erlaubt",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "Anfragen aus In-App-Browsern (WebView) sind für diese Website nicht erlaubt"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "Anfragen aus In-App-Browsern (WebView) sind für diese Website nicht erlaubt",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "Interner Serverfehler"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "Kann den Besitzerbenutzer nicht ändern",
|
|
@@ -82,6 +85,11 @@
|
|
|
82
85
|
"INSECURE_CONTEXT": "Procaptcha erfordert eine sichere (HTTPS-)Verbindung",
|
|
83
86
|
"CHECKING": "Es wird geprüft, ob du ein Mensch bist",
|
|
84
87
|
"IMAGE_DIALOG_LABEL": "Bild-Aufgabe",
|
|
88
|
+
"CANNOT_LOAD": "CAPTCHA kann nicht geladen werden",
|
|
89
|
+
"RELOAD": "Neu laden",
|
|
90
|
+
"VERIFIED_AGENT": "Verifizierter Agent",
|
|
91
|
+
"TRUSTED_REQUEST": "Vertrauenswürdige Anfrage",
|
|
92
|
+
"LOADING": "Wird geladen",
|
|
85
93
|
"PUZZLE": {
|
|
86
94
|
"DIALOG_LABEL": "Puzzle-Aufgabe",
|
|
87
95
|
"DRAG": "Ziehe das Teil auf die Zielstelle",
|
|
@@ -137,7 +145,13 @@
|
|
|
137
145
|
"TABLES_UNDEFINED": "Tabellen undefiniert",
|
|
138
146
|
"CONNECTION_UNDEFINED": "Verbindung undefiniert",
|
|
139
147
|
"COMMITMENT_FLAG_FAILED": "Verpflichtung konnte nicht als verarbeitet markiert werden",
|
|
140
|
-
"UNKNOWN": "Unbekannter Datenbankfehler"
|
|
148
|
+
"UNKNOWN": "Unbekannter Datenbankfehler",
|
|
149
|
+
"QUERY_ERROR": "Datenbankabfrage fehlgeschlagen",
|
|
150
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Redis-Verbindung für Zugriffsregeln undefiniert",
|
|
151
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "Speicher für Benutzerzugriffsregeln undefiniert",
|
|
152
|
+
"SESSION_STORE_FAILED": "Sitzung konnte nicht gespeichert werden",
|
|
153
|
+
"SESSION_CHECK_REMOVE_FAILED": "Sitzung konnte nicht geprüft und entfernt werden",
|
|
154
|
+
"SESSION_GET_FAILED": "Sitzung konnte nicht abgerufen werden"
|
|
141
155
|
},
|
|
142
156
|
"CAPTCHA": {
|
|
143
157
|
"PARSE_ERROR": "Fehler beim Parsen des Captchas",
|
|
@@ -156,7 +170,10 @@
|
|
|
156
170
|
"INVALID_SALT": "Ungültiges Salt",
|
|
157
171
|
"INVALID_TOKEN": "Ungültiges Token",
|
|
158
172
|
"INVALID_SOLUTION": "Ungültige Lösung",
|
|
159
|
-
"DECRYPTION_ERROR": "Fehler beim Entschlüsseln"
|
|
173
|
+
"DECRYPTION_ERROR": "Fehler beim Entschlüsseln",
|
|
174
|
+
"SOLUTION_NOT_FOUND": "Lösung nicht gefunden",
|
|
175
|
+
"DECISION_MACHINE_DENIED": "Von der Entscheidungsmaschine abgelehnt",
|
|
176
|
+
"INVALID_TIMESTAMP": "Ungültiger Zeitstempel"
|
|
160
177
|
},
|
|
161
178
|
"CLI": {
|
|
162
179
|
"PARAMETER_ERROR": "Ungültiger Parameter"
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"MOBILE_BLOCKED": "Αιτήματα από συνδέσεις κινητών δικτύων δεν επιτρέπονται για αυτόν τον ιστότοπο",
|
|
42
42
|
"SATELLITE_BLOCKED": "Αιτήματα από δορυφορικές συνδέσεις δεν επιτρέπονται για αυτόν τον ιστότοπο",
|
|
43
43
|
"CRAWLER_BLOCKED": "Αιτήματα από γνωστά προγράμματα ανίχνευσης δεν επιτρέπονται για αυτόν τον ιστότοπο",
|
|
44
|
-
"DISALLOWED_WEBVIEW": "Δεν επιτρέπονται αιτήματα από ενσωματωμένους περιηγητές (WebView) για αυτόν τον ιστότοπο"
|
|
44
|
+
"DISALLOWED_WEBVIEW": "Δεν επιτρέπονται αιτήματα από ενσωματωμένους περιηγητές (WebView) για αυτόν τον ιστότοπο",
|
|
45
|
+
"INTERNAL_SERVER_ERROR": "Εσωτερικό σφάλμα διακομιστή"
|
|
45
46
|
},
|
|
46
47
|
"TARGET": {
|
|
47
48
|
"animals": "ζώα",
|
|
@@ -353,7 +354,9 @@
|
|
|
353
354
|
"INVALID_SIGNATURE": "Μη έγκυρη υπογραφή",
|
|
354
355
|
"SITE_KEY_MISSING": "Λείπει το SITE KEY",
|
|
355
356
|
"ACCOUNT_NOT_FOUND": "Δεν βρέθηκε λογαριασμός",
|
|
356
|
-
"INVALID_TIMESTAMP": "Μη έγκυρη σφραγίδα χρόνου"
|
|
357
|
+
"INVALID_TIMESTAMP": "Μη έγκυρη σφραγίδα χρόνου",
|
|
358
|
+
"MISSING_AUTH_HEADER": "Λείπει η κεφαλίδα εξουσιοδότησης",
|
|
359
|
+
"INVALID_JWT": "Μη έγκυρο JWT"
|
|
357
360
|
},
|
|
358
361
|
"PORTAL": {
|
|
359
362
|
"CANNOT_MODIFY_OWNER_USER": "Δεν είναι δυνατή η τροποποίηση του χρήστη-κατόχου",
|
|
@@ -381,6 +384,11 @@
|
|
|
381
384
|
"INSECURE_CONTEXT": "Το Procaptcha απαιτεί ασφαλή σύνδεση (HTTPS)",
|
|
382
385
|
"CHECKING": "Ελέγχουμε ότι είστε άνθρωπος",
|
|
383
386
|
"IMAGE_DIALOG_LABEL": "Δοκιμασία με εικόνες",
|
|
387
|
+
"CANNOT_LOAD": "Δεν είναι δυνατή η φόρτωση του CAPTCHA",
|
|
388
|
+
"RELOAD": "Επαναφόρτωση",
|
|
389
|
+
"VERIFIED_AGENT": "Επαληθευμένος πράκτορας",
|
|
390
|
+
"TRUSTED_REQUEST": "Αξιόπιστο αίτημα",
|
|
391
|
+
"LOADING": "Φόρτωση",
|
|
384
392
|
"PUZZLE": {
|
|
385
393
|
"DIALOG_LABEL": "Δοκιμασία παζλ",
|
|
386
394
|
"DRAG": "Σύρετε το κομμάτι στον στόχο",
|
|
@@ -436,7 +444,13 @@
|
|
|
436
444
|
"TABLES_UNDEFINED": "Οι πίνακες δεν έχουν οριστεί",
|
|
437
445
|
"CONNECTION_UNDEFINED": "Η σύνδεση δεν έχει οριστεί",
|
|
438
446
|
"COMMITMENT_FLAG_FAILED": "Αποτυχία σημαίας δέσμευσης ως επεξεργασμένη",
|
|
439
|
-
"UNKNOWN": "Άγνωστο σφάλμα βάσης δεδομένων"
|
|
447
|
+
"UNKNOWN": "Άγνωστο σφάλμα βάσης δεδομένων",
|
|
448
|
+
"QUERY_ERROR": "Το ερώτημα στη βάση δεδομένων απέτυχε",
|
|
449
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Η σύνδεση Redis για τους κανόνες πρόσβασης δεν έχει οριστεί",
|
|
450
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "Ο χώρος αποθήκευσης κανόνων πρόσβασης χρηστών δεν έχει οριστεί",
|
|
451
|
+
"SESSION_STORE_FAILED": "Η αποθήκευση της συνεδρίας απέτυχε",
|
|
452
|
+
"SESSION_CHECK_REMOVE_FAILED": "Ο έλεγχος και η αφαίρεση της συνεδρίας απέτυχαν",
|
|
453
|
+
"SESSION_GET_FAILED": "Η ανάκτηση της συνεδρίας απέτυχε"
|
|
440
454
|
},
|
|
441
455
|
"CAPTCHA": {
|
|
442
456
|
"PARSE_ERROR": "Σφάλμα ανάλυσης captcha",
|
|
@@ -455,7 +469,10 @@
|
|
|
455
469
|
"INVALID_SALT": "Μη έγκυρο salt",
|
|
456
470
|
"INVALID_TOKEN": "Μη έγκυρο τεκμήριο",
|
|
457
471
|
"INVALID_SOLUTION": "Μη έγκυρη λύση",
|
|
458
|
-
"DECRYPTION_ERROR": "Σφάλμα αποκρυπτογράφησης"
|
|
472
|
+
"DECRYPTION_ERROR": "Σφάλμα αποκρυπτογράφησης",
|
|
473
|
+
"SOLUTION_NOT_FOUND": "Η λύση δεν βρέθηκε",
|
|
474
|
+
"DECISION_MACHINE_DENIED": "Απορρίφθηκε από τη μηχανή αποφάσεων",
|
|
475
|
+
"INVALID_TIMESTAMP": "Μη έγκυρη σφραγίδα χρόνου"
|
|
459
476
|
},
|
|
460
477
|
"CLI": {
|
|
461
478
|
"PARAMETER_ERROR": "Μη έγκυρη παράμετρος"
|
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
"INSECURE_CONTEXT": "Procaptcha requires a secure (HTTPS) connection",
|
|
16
16
|
"CHECKING": "Checking that you are human",
|
|
17
17
|
"IMAGE_DIALOG_LABEL": "Image challenge",
|
|
18
|
+
"CANNOT_LOAD": "Cannot load CAPTCHA",
|
|
19
|
+
"RELOAD": "Reload",
|
|
20
|
+
"VERIFIED_AGENT": "Verified agent",
|
|
21
|
+
"TRUSTED_REQUEST": "Trusted request",
|
|
22
|
+
"LOADING": "Loading",
|
|
18
23
|
"PUZZLE": {
|
|
19
24
|
"DIALOG_LABEL": "Puzzle challenge",
|
|
20
25
|
"DRAG": "Drag the piece to the target",
|
|
@@ -38,7 +43,9 @@
|
|
|
38
43
|
"ACCOUNT_NOT_FOUND": "Account not found",
|
|
39
44
|
"SITE_KEY_NOT_FOUND": "Site key not found",
|
|
40
45
|
"INVALID_TIMESTAMP": "Invalid timestamp",
|
|
41
|
-
"MISSING_SECRET_KEY": "Missing secret key"
|
|
46
|
+
"MISSING_SECRET_KEY": "Missing secret key",
|
|
47
|
+
"MISSING_AUTH_HEADER": "Missing authorization header",
|
|
48
|
+
"INVALID_JWT": "Invalid JWT"
|
|
42
49
|
},
|
|
43
50
|
"CONTRACT": {
|
|
44
51
|
"INVALID_ADDRESS": "Failed to encode invalid address",
|
|
@@ -83,7 +90,13 @@
|
|
|
83
90
|
"TABLES_UNDEFINED": "Tables undefined",
|
|
84
91
|
"CONNECTION_UNDEFINED": "Connection undefined",
|
|
85
92
|
"COMMITMENT_FLAG_FAILED": "Failed to flag commitment as processed",
|
|
86
|
-
"UNKNOWN": "Unknown database error"
|
|
93
|
+
"UNKNOWN": "Unknown database error",
|
|
94
|
+
"QUERY_ERROR": "Database query failed",
|
|
95
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Redis access rules connection undefined",
|
|
96
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "User access rules storage undefined",
|
|
97
|
+
"SESSION_STORE_FAILED": "Failed to store session",
|
|
98
|
+
"SESSION_CHECK_REMOVE_FAILED": "Failed to check and remove session",
|
|
99
|
+
"SESSION_GET_FAILED": "Failed to get session"
|
|
87
100
|
},
|
|
88
101
|
"CAPTCHA": {
|
|
89
102
|
"PARSE_ERROR": "Error parsing captcha",
|
|
@@ -102,7 +115,10 @@
|
|
|
102
115
|
"INVALID_SALT": "Invalid salt",
|
|
103
116
|
"INVALID_TOKEN": "Invalid token",
|
|
104
117
|
"INVALID_SOLUTION": "Invalid solution",
|
|
105
|
-
"DECRYPTION_ERROR": "Error decrypting"
|
|
118
|
+
"DECRYPTION_ERROR": "Error decrypting",
|
|
119
|
+
"SOLUTION_NOT_FOUND": "Solution not found",
|
|
120
|
+
"DECISION_MACHINE_DENIED": "Denied by the decision machine",
|
|
121
|
+
"INVALID_TIMESTAMP": "Invalid timestamp"
|
|
106
122
|
},
|
|
107
123
|
"API": {
|
|
108
124
|
"CAPTCHA_FAILED": "You answered one or more captchas incorrectly. Please try again",
|
|
@@ -146,7 +162,8 @@
|
|
|
146
162
|
"MOBILE_BLOCKED": "Requests from mobile network connections are not allowed for this site",
|
|
147
163
|
"SATELLITE_BLOCKED": "Requests from satellite connections are not allowed for this site",
|
|
148
164
|
"CRAWLER_BLOCKED": "Requests from known crawlers are not allowed for this site",
|
|
149
|
-
"DISALLOWED_WEBVIEW": "Requests from in-app browsers (WebViews) are not allowed for this site"
|
|
165
|
+
"DISALLOWED_WEBVIEW": "Requests from in-app browsers (WebViews) are not allowed for this site",
|
|
166
|
+
"INTERNAL_SERVER_ERROR": "Internal server error"
|
|
150
167
|
},
|
|
151
168
|
"PORTAL": {
|
|
152
169
|
"CANNOT_MODIFY_OWNER_USER": "Cannot modify owner user",
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "Firma inválida",
|
|
11
11
|
"SITE_KEY_MISSING": "Falta la CLAVE DEL SITIO",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "Cuenta no encontrada",
|
|
13
|
-
"INVALID_TIMESTAMP": "Marca de tiempo inválida"
|
|
13
|
+
"INVALID_TIMESTAMP": "Marca de tiempo inválida",
|
|
14
|
+
"MISSING_AUTH_HEADER": "Falta el encabezado de autorización",
|
|
15
|
+
"INVALID_JWT": "JWT no válido"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "Permisos insuficientes para realizar esta acción",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "Las solicitudes desde redes móviles no están permitidas para este sitio",
|
|
55
57
|
"SATELLITE_BLOCKED": "Las solicitudes desde conexiones satelitales no están permitidas para este sitio",
|
|
56
58
|
"CRAWLER_BLOCKED": "Las solicitudes desde rastreadores conocidos no están permitidas para este sitio",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "No se permiten solicitudes desde navegadores integrados en aplicaciones (WebView) para este sitio"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "No se permiten solicitudes desde navegadores integrados en aplicaciones (WebView) para este sitio",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "Error interno del servidor"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "No se puede modificar el usuario propietario",
|
|
@@ -82,6 +85,11 @@
|
|
|
82
85
|
"INSECURE_CONTEXT": "Procaptcha requiere una conexión segura (HTTPS)",
|
|
83
86
|
"CHECKING": "Comprobando que eres humano",
|
|
84
87
|
"IMAGE_DIALOG_LABEL": "Desafío de imágenes",
|
|
88
|
+
"CANNOT_LOAD": "No se puede cargar el CAPTCHA",
|
|
89
|
+
"RELOAD": "Recargar",
|
|
90
|
+
"VERIFIED_AGENT": "Agente verificado",
|
|
91
|
+
"TRUSTED_REQUEST": "Solicitud de confianza",
|
|
92
|
+
"LOADING": "Cargando",
|
|
85
93
|
"PUZZLE": {
|
|
86
94
|
"DIALOG_LABEL": "Desafío de rompecabezas",
|
|
87
95
|
"DRAG": "Arrastra la pieza hasta el objetivo",
|
|
@@ -137,7 +145,13 @@
|
|
|
137
145
|
"TABLES_UNDEFINED": "Tablas indefinidas",
|
|
138
146
|
"CONNECTION_UNDEFINED": "Conexión indefinida",
|
|
139
147
|
"COMMITMENT_FLAG_FAILED": "Error al marcar el compromiso como procesado",
|
|
140
|
-
"UNKNOWN": "Error desconocido de base de datos"
|
|
148
|
+
"UNKNOWN": "Error desconocido de base de datos",
|
|
149
|
+
"QUERY_ERROR": "La consulta a la base de datos falló",
|
|
150
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Conexión de Redis para reglas de acceso no definida",
|
|
151
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "Almacenamiento de reglas de acceso de usuarios no definido",
|
|
152
|
+
"SESSION_STORE_FAILED": "No se pudo guardar la sesión",
|
|
153
|
+
"SESSION_CHECK_REMOVE_FAILED": "No se pudo comprobar y eliminar la sesión",
|
|
154
|
+
"SESSION_GET_FAILED": "No se pudo obtener la sesión"
|
|
141
155
|
},
|
|
142
156
|
"CAPTCHA": {
|
|
143
157
|
"PARSE_ERROR": "Error al analizar el captcha",
|
|
@@ -156,7 +170,10 @@
|
|
|
156
170
|
"INVALID_SALT": "Salt no válido",
|
|
157
171
|
"INVALID_TOKEN": "Token inválido",
|
|
158
172
|
"INVALID_SOLUTION": "Solución inválida",
|
|
159
|
-
"DECRYPTION_ERROR": "Error de descifrado"
|
|
173
|
+
"DECRYPTION_ERROR": "Error de descifrado",
|
|
174
|
+
"SOLUTION_NOT_FOUND": "Solución no encontrada",
|
|
175
|
+
"DECISION_MACHINE_DENIED": "Denegado por la máquina de decisiones",
|
|
176
|
+
"INVALID_TIMESTAMP": "Marca de tiempo inválida"
|
|
160
177
|
},
|
|
161
178
|
"CLI": {
|
|
162
179
|
"PARAMETER_ERROR": "Parámetro inválido"
|