@prosopo/locale 3.1.28 → 3.2.5

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 (91) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +6 -6
  2. package/.turbo/turbo-build$colon$tsc.log +5 -5
  3. package/.turbo/turbo-build.log +5 -5
  4. package/.turbo/turbo-typecheck.log +1 -1
  5. package/CHANGELOG.md +73 -0
  6. package/dist/cjs/i18SharedOptions.cjs +2 -1
  7. package/dist/cjs/locales/en/translation.json.cjs +4 -4
  8. package/dist/i18SharedOptions.d.ts.map +1 -1
  9. package/dist/i18SharedOptions.js +2 -1
  10. package/dist/i18SharedOptions.js.map +1 -1
  11. package/dist/locales/ar/translation.json +18 -3
  12. package/dist/locales/az/translation.json +18 -3
  13. package/dist/locales/cs/translation.json +18 -3
  14. package/dist/locales/de/translation.json +18 -3
  15. package/dist/locales/el/translation.json +18 -3
  16. package/dist/locales/en/translation.json +18 -3
  17. package/dist/locales/en/translation.json.js +4 -4
  18. package/dist/locales/es/translation.json +19 -4
  19. package/dist/locales/fi/translation.json +18 -3
  20. package/dist/locales/fr/translation.json +18 -3
  21. package/dist/locales/hi/translation.json +18 -3
  22. package/dist/locales/hu/translation.json +18 -3
  23. package/dist/locales/id/translation.json +18 -3
  24. package/dist/locales/it/translation.json +18 -3
  25. package/dist/locales/ja/translation.json +18 -3
  26. package/dist/locales/jv/translation.json +18 -3
  27. package/dist/locales/ko/translation.json +18 -3
  28. package/dist/locales/ml/translation.json +18 -3
  29. package/dist/locales/ms/translation.json +18 -3
  30. package/dist/locales/nl/translation.json +18 -3
  31. package/dist/locales/no/translation.json +18 -3
  32. package/dist/locales/pl/translation.json +18 -3
  33. package/dist/locales/pt/translation.json +18 -3
  34. package/dist/locales/pt-BR/translation.json +18 -3
  35. package/dist/locales/ro/translation.json +18 -3
  36. package/dist/locales/ru/translation.json +18 -3
  37. package/dist/locales/sr/translation.json +426 -411
  38. package/dist/locales/sv/translation.json +18 -3
  39. package/dist/locales/th/translation.json +18 -3
  40. package/dist/locales/tr/translation.json +18 -3
  41. package/dist/locales/uk/translation.json +18 -3
  42. package/dist/locales/vi/translation.json +18 -3
  43. package/dist/locales/zh-CN/translation.json +18 -3
  44. package/package.json +4 -3
  45. package/src/i18SharedOptions.ts +29 -0
  46. package/src/i18nBackend.ts +53 -0
  47. package/src/i18nFrontend.ts +81 -0
  48. package/src/i18nMiddleware.ts +25 -0
  49. package/src/index.ts +22 -0
  50. package/src/loadI18next.ts +49 -0
  51. package/src/locales/ar/translation.json +460 -0
  52. package/src/locales/az/translation.json +460 -0
  53. package/src/locales/cs/translation.json +460 -0
  54. package/src/locales/de/translation.json +460 -0
  55. package/src/locales/el/translation.json +460 -0
  56. package/src/locales/en/translation.json +460 -0
  57. package/src/locales/es/translation.json +460 -0
  58. package/src/locales/fi/translation.json +460 -0
  59. package/src/locales/fr/translation.json +460 -0
  60. package/src/locales/hi/translation.json +460 -0
  61. package/src/locales/hu/translation.json +460 -0
  62. package/src/locales/id/translation.json +460 -0
  63. package/src/locales/it/translation.json +460 -0
  64. package/src/locales/ja/translation.json +460 -0
  65. package/src/locales/jv/translation.json +460 -0
  66. package/src/locales/ko/translation.json +460 -0
  67. package/src/locales/ml/translation.json +460 -0
  68. package/src/locales/ms/translation.json +460 -0
  69. package/src/locales/nl/translation.json +460 -0
  70. package/src/locales/no/translation.json +460 -0
  71. package/src/locales/pl/translation.json +460 -0
  72. package/src/locales/pt/translation.json +460 -0
  73. package/src/locales/pt-BR/translation.json +460 -0
  74. package/src/locales/ro/translation.json +460 -0
  75. package/src/locales/ru/translation.json +460 -0
  76. package/src/locales/sr/translation.json +460 -0
  77. package/src/locales/sv/translation.json +460 -0
  78. package/src/locales/th/translation.json +460 -0
  79. package/src/locales/tr/translation.json +460 -0
  80. package/src/locales/uk/translation.json +460 -0
  81. package/src/locales/vi/translation.json +460 -0
  82. package/src/locales/zh-CN/translation.json +460 -0
  83. package/src/tests/locales.unit.test.ts +79 -0
  84. package/src/translationKey.ts +48 -0
  85. package/src/translations.ts +54 -0
  86. package/src/useTranslation.ts +32 -0
  87. package/src/util.ts +25 -0
  88. package/tsconfig.cjs.json +18 -0
  89. package/tsconfig.json +19 -0
  90. package/tsconfig.tsbuildinfo +1 -0
  91. package/tsconfig.types.json +9 -0
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/locale@3.1.28 build:cjs
2
+ > @prosopo/locale@3.2.5 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -10,22 +10,22 @@ Bundle build started
10
10
  transforming...
11
11
  Build end
12
12
  ✓ 11 modules transformed.
13
+ Entry module "src/locales/en/translation.json" is using named and default exports together. Consumers of your bundle will have to use `..default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
13
14
  Entry module "src/i18nBackend.ts" is using named and default exports together. Consumers of your bundle will have to use `..default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
14
15
  Entry module "src/i18nFrontend.ts" is using named and default exports together. Consumers of your bundle will have to use `..default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
15
- Entry module "src/locales/en/translation.json" is using named and default exports together. Consumers of your bundle will have to use `..default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
16
16
  rendering chunks...
17
17
  dist/cjs/useTranslation.cjs  0.30 kB
18
18
  dist/cjs/i18nMiddleware.cjs  0.31 kB
19
19
  dist/cjs/util.cjs  0.35 kB
20
- dist/cjs/i18SharedOptions.cjs  0.44 kB
20
+ dist/cjs/i18SharedOptions.cjs  0.51 kB
21
21
  dist/cjs/index.cjs  0.72 kB
22
22
  dist/cjs/translationKey.cjs  0.73 kB
23
23
  dist/cjs/loadI18next.cjs  0.78 kB
24
24
  dist/cjs/translations.cjs  0.83 kB
25
25
  dist/cjs/i18nBackend.cjs  1.41 kB
26
26
  dist/cjs/i18nFrontend.cjs  2.79 kB
27
- dist/cjs/locales/en/translation.json.cjs 14.25 kB
28
- ✓ built in 282ms
27
+ dist/cjs/locales/en/translation.json.cjs 15.40 kB
28
+ ✓ built in 229ms
29
29
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ar/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ar/translation.json
30
30
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/az/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/az/translation.json
31
31
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/cs/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/cs/translation.json
@@ -36,8 +36,8 @@ rendering chunks...
36
36
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/fi/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/fi/translation.json
37
37
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/fr/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/fr/translation.json
38
38
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/hi/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/hi/translation.json
39
- [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/id/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/id/translation.json
40
39
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/hu/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/hu/translation.json
40
+ [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/id/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/id/translation.json
41
41
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/it/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/it/translation.json
42
42
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ja/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ja/translation.json
43
43
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/jv/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/jv/translation.json
@@ -1,14 +1,14 @@
1
1
 
2
- > @prosopo/locale@3.1.28 build:tsc
2
+ > @prosopo/locale@3.2.5 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 4:56:26 PM - Projects in this build:
5
+ 2:09:30 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * tsconfig.json
8
8
 
9
- 4:56:27 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/dependencies.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
9
+ 2:09:30 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
10
10
 
11
- 4:56:27 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
11
+ 2:09:30 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
12
12
 
13
- 4:56:27 PM - Building project '/home/runner/work/captcha/captcha/packages/locale/tsconfig.json'...
13
+ 2:09:30 PM - Building project '/home/runner/work/captcha/captcha/packages/locale/tsconfig.json'...
14
14
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/locale@3.1.28 build
2
+ > @prosopo/locale@3.2.5 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/locale@3.1.28 build:cross-env
6
+ > @prosopo/locale@3.2.5 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -18,15 +18,15 @@ rendering chunks...
18
18
  dist/util.js  0.23 kB
19
19
  dist/i18nMiddleware.js  0.26 kB
20
20
  dist/useTranslation.js  0.29 kB
21
- dist/i18SharedOptions.js  0.32 kB
21
+ dist/i18SharedOptions.js  0.39 kB
22
22
  dist/index.js  0.51 kB
23
23
  dist/translationKey.js  0.61 kB
24
24
  dist/translations.js  0.71 kB
25
25
  dist/loadI18next.js  0.71 kB
26
26
  dist/i18nBackend.js  0.88 kB
27
27
  dist/i18nFrontend.js  2.03 kB
28
- dist/locales/en/translation.json.js 13.92 kB
29
- ✓ built in 280ms
28
+ dist/locales/en/translation.json.js 15.07 kB
29
+ ✓ built in 234ms
30
30
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ar/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ar/translation.json
31
31
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/az/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/az/translation.json
32
32
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/cs/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/cs/translation.json
@@ -1,4 +1,4 @@
1
1
 
2
- > @prosopo/locale@3.1.28 typecheck
2
+ > @prosopo/locale@3.2.5 typecheck
3
3
  > tsc --project tsconfig.types.json
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # @prosopo/locale
2
2
 
3
+ ## 3.2.5
4
+ ### Patch Changes
5
+
6
+ - edcd450: Validate salt-encoded coords in PoW and puzzle verification and add a `CAPTCHA_INVALID_SALT` result reason. Invalid input now produces a disapproval rather than a partial write.
7
+
8
+ ## 3.2.4
9
+ ### Patch Changes
10
+
11
+ - 5786629: fix(provider): persist DISALLOWED_WEBVIEW outcome and broaden detection in image captcha verify
12
+
13
+ The webview check in `verifyImageCaptchaSolution` did an early return that
14
+ left the commitment stuck at `Approved` in the database and never marked
15
+ the session as `serverChecked` / `disapproved`, even though the API
16
+ correctly returned `verified: false`. This made the DB state misleading
17
+ and broke any downstream consumer reading commitment status directly.
18
+
19
+ The check also only fired when `scoreComponents.webView > 0`, which is
20
+ only set when the frictionless flow took the webview branch. Webview
21
+ users who reached the image captcha via another branch (UA mismatch,
22
+ context-aware failure, timestamp, bot score) had `session.webView: true`
23
+ but no `scoreComponents.webView`, so the verify-time block missed them.
24
+
25
+ - Convert the early return to the same `failStatus` /
26
+ `commitmentUpdates.result` pattern used by every other check in the
27
+ function, so the commitment and session are properly persisted as
28
+ disapproved with reason `DISALLOWED_WEBVIEW`.
29
+ - Trigger on `session.webView === true` OR `scoreComponents.webView > 0`.
30
+ - Add `ResultReason.DISALLOWED_WEBVIEW` and the English locale entry.
31
+ - Add unit tests for score-based detection, boolean-only detection, and
32
+ the `disallowWebView=false` passthrough.
33
+
34
+ Closes #3396.
35
+
36
+ ## 3.2.3
37
+ ### Patch Changes
38
+
39
+ - 53bfd45: Detect when the widget is served over plain HTTP (an insecure browser context)
40
+ and show a clear "Procaptcha requires a secure (HTTPS) connection" message
41
+ instead of failing later with a cryptic `Provider Selection Failed` error.
42
+ Procaptcha depends on secure-context-only browser APIs (e.g. SubtleCrypto), so
43
+ the frictionless widget now short-circuits before the provider-selection retry
44
+ loop when `window.isSecureContext` is false. Adds the `WIDGET.INSECURE_CONTEXT`
45
+ translation key across all locales and an `isSecureBrowserContext` helper.
46
+
47
+ ## 3.2.2
48
+ ### Patch Changes
49
+
50
+ - 4aae4e6: Guard the `process.env` reads in `i18nSharedOptions` and `version` so both
51
+ packages are loadable in a plain browser runtime (e.g. Vite dev/preview
52
+ servers) where `process` is undefined. Without the guard, any consumer that
53
+ side-effectfully imports `@prosopo/types` — which transitively reaches
54
+ `@prosopo/locale` via `LanguageSchema` — would crash the page with
55
+ `ReferenceError: process is not defined`.
56
+
57
+ ## 3.2.1
58
+ ### Patch Changes
59
+
60
+ - b94890c: Translations
61
+
62
+ ## 3.2.0
63
+ ### Minor Changes
64
+
65
+ - 42650db: Add better spam rules and move ipinfo service to local instead of external
66
+
67
+ ### Patch Changes
68
+
69
+ - fc514dd: ability to block different types of traffic
70
+
71
+ ## 3.1.29
72
+ ### Patch Changes
73
+
74
+ - adb89a6: Disposable email checking
75
+
3
76
  ## 3.1.28
4
77
  ### Patch Changes
5
78
 
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const translations = require("./translations.cjs");
4
+ const logLevel = typeof process !== "undefined" ? process.env?.PROSOPO_LOG_LEVEL : void 0;
4
5
  const i18nSharedOptions = {
5
- debug: process.env.PROSOPO_LOG_LEVEL === "debug",
6
+ debug: logLevel === "debug",
6
7
  fallbackLng: translations.LanguageSchema.enum.en,
7
8
  namespace: "translation",
8
9
  supportedLngs: Object.values(translations.Languages),
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const ACCOUNT = { "NO_POLKADOT_EXTENSION": "Polkadot extension not found" };
4
- const WIDGET = { "SELECT_ALL": "Select all containing the following", "IF_NONE_CLICK_NEXT": "If there are none, click Next", "NEXT": "Next", "SUBMIT": "Submit", "CANCEL": "Cancel", "I_AM_HUMAN": "I am human", "NO_ACCOUNTS_FOUND": "No accounts found", "ACCOUNT_NOT_FOUND": "Account not found", "NO_EXTENSION_FOUND": "No extension found" };
4
+ const WIDGET = { "SELECT_ALL": "Select all containing the following", "IF_NONE_CLICK_NEXT": "If there are none, click Next", "NEXT": "Next", "SUBMIT": "Submit", "CANCEL": "Cancel", "I_AM_HUMAN": "I am human", "NO_ACCOUNTS_FOUND": "No accounts found", "ACCOUNT_NOT_FOUND": "Account not found", "NO_EXTENSION_FOUND": "No extension found", "INSECURE_CONTEXT": "Procaptcha requires a secure (HTTPS) connection" };
5
5
  const GENERAL = { "JSON_LOAD_FAILED": "Failed to load JSON file", "MNEMONIC_UNDEFINED": "Mnemonic Undefined. Please set the mnemonic in environment variables", "NO_MNEMONIC_OR_SEED": "No secret provided", "CANT_FIND_KEYRINGPAIR": "Can't find the keyringpair for {{address}}", "ENVIRONMENT_NOT_READY": "Environment not ready", "INVALID_SIGNATURE": "Invalid signature", "SITE_KEY_MISSING": "SITE KEY missing", "ACCOUNT_NOT_FOUND": "Account not found", "SITE_KEY_NOT_FOUND": "Site key not found", "INVALID_TIMESTAMP": "Invalid timestamp", "MISSING_SECRET_KEY": "Missing secret key" };
6
6
  const CONTRACT = { "INVALID_ADDRESS": "Failed to encode invalid address", "CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST": "Captcha solution commitment does not exist", "SIGNER_UNDEFINED": "Signer undefined", "CANNOT_FIND_KEYPAIR": "Cannot find keypair", "INVALID_DATA_FORMAT": "Invalid data format" };
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", "IP_ADDRESS_MISMATCH": "IP address mismatch detected", "INVALID_TOKEN": "Invalid token", "INVALID_SOLUTION": "Invalid solution", "DECRYPTION_ERROR": "Error decrypting" };
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", "FAILED_IP_VALIDATION": "IP validation failed", "ACCESS_POLICY_BLOCK": "Access blocked by policy", "FORBIDDEN": "Forbidden", "PROVIDER_VERIFY_FAILED": "Provider verification failed" };
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" };
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_SALT": "Invalid salt", "INVALID_TOKEN": "Invalid token", "INVALID_SOLUTION": "Invalid solution", "DECRYPTION_ERROR": "Error decrypting" };
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", "FAILED_IP_VALIDATION": "IP validation failed", "ACCESS_POLICY_BLOCK": "Access blocked by policy", "FORBIDDEN": "Forbidden", "PROVIDER_VERIFY_FAILED": "Provider verification failed", "SPAM_EMAIL_DOMAIN": "Email domain not allowed", "SPAM_EMAIL_RULE": "Email address blocked by spam filter rules", "VPN_BLOCKED": "Requests from VPN connections are not allowed for this site", "PROXY_BLOCKED": "Requests from proxy servers are not allowed for this site", "TOR_BLOCKED": "Requests from Tor exit nodes are not allowed for this site", "ABUSER_BLOCKED": "Requests from networks flagged for abuse are not allowed for this site", "DATACENTER_BLOCKED": "Requests from datacenter IP addresses are not allowed for this site", "MOBILE_BLOCKED": "Requests from mobile network connections are not allowed for this site", "SATELLITE_BLOCKED": "Requests from satellite connections are not allowed for this site", "CRAWLER_BLOCKED": "Requests from known crawlers are not allowed for this site", "DISALLOWED_WEBVIEW": "Requests from in-app browsers (WebViews) are not allowed for this site" };
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", "DUPLICATE_SITE_NAME": "A site with this name already exists", "INVALID_SITE_NAME": "Site name must contain only letters, numbers, hyphens, and underscores" };
13
13
  const CLI = { "PARAMETER_ERROR": "Invalid parameter" };
14
14
  const DEVELOPER = { "PROSOPO_SITE_KEY_MISSING": "PROSOPO_SITE_KEY is not set in .env file.", "PROVIDER_NO_CAPTCHA": "No captchas returned from provider", "MISSING_PROVIDER_PAIR": "Missing provider pair", "MISSING_ENV_VARIABLE": "Missing environment variable", "GENERAL": "General Dev Error, see context", "METHOD_NOT_IMPLEMENTED": "Method not implemented" };
15
15
  const FS = { "FILE_NOT_FOUND": "File not found", "FILE_ALREADY_EXISTS": "File already exists", "INVALID_DIR_FORMAT": "Invalid directory format" };
@@ -1 +1 @@
1
- {"version":3,"file":"i18SharedOptions.d.ts","sourceRoot":"","sources":["../src/i18SharedOptions.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,iBAAiB;;;;;;CAM7B,CAAC"}
1
+ {"version":3,"file":"i18SharedOptions.d.ts","sourceRoot":"","sources":["../src/i18SharedOptions.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB;;;;;;CAM7B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Languages, LanguageSchema } from "./translations.js";
2
+ const logLevel = typeof process !== "undefined" ? process.env?.PROSOPO_LOG_LEVEL : void 0;
2
3
  const i18nSharedOptions = {
3
- debug: process.env.PROSOPO_LOG_LEVEL === "debug",
4
+ debug: logLevel === "debug",
4
5
  fallbackLng: LanguageSchema.enum.en,
5
6
  namespace: "translation",
6
7
  supportedLngs: Object.values(Languages),
@@ -1 +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"}
1
+ {"version":3,"file":"i18SharedOptions.js","sourceRoot":"","sources":["../src/i18SharedOptions.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM9D,MAAM,QAAQ,GACb,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,KAAK,EAAE,QAAQ,KAAK,OAAO;IAC3B,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"}
@@ -21,6 +21,7 @@
21
21
  "ACCESS_POLICY_BLOCK": "تم حظر الوصول بواسطة السياسة",
22
22
  "FORBIDDEN": "ممنوع",
23
23
  "PROVIDER_VERIFY_FAILED": "فشل التحقق من الجهة الخارجية",
24
+ "SPAM_EMAIL_DOMAIN": "نطاق البريد الإلكتروني غير مسموح به",
24
25
  "UNAUTHORIZED": "غير مصرح",
25
26
  "MISSING_BODY": "جسم مفقود",
26
27
  "NO_CONTENT_TYPE_HEADER": "رأس نوع المحتوى غير موجود. تم افتراض جسم مشفر بتنسيق JSON ولكن فشل في التحليل.",
@@ -40,7 +41,17 @@
40
41
  "INVALID_IP": "IP غير صالح",
41
42
  "INVALID_URL": "عنوان URL غير صالح",
42
43
  "INVALID_BODY": "بيانات غير صالحة",
43
- "PARSE_ERROR": "خطأ في تحليل الطلب"
44
+ "PARSE_ERROR": "خطأ في تحليل الطلب",
45
+ "SPAM_EMAIL_RULE": "عنوان البريد الإلكتروني محظور بواسطة قواعد مكافحة البريد العشوائي",
46
+ "VPN_BLOCKED": "لا يُسمح بالطلبات من اتصالات VPN لهذا الموقع",
47
+ "PROXY_BLOCKED": "لا يُسمح بالطلبات من خوادم البروكسي لهذا الموقع",
48
+ "TOR_BLOCKED": "لا يُسمح بالطلبات من عقد خروج Tor لهذا الموقع",
49
+ "ABUSER_BLOCKED": "لا يُسمح بالطلبات من الشبكات المُبلَّغ عنها بسبب إساءة الاستخدام لهذا الموقع",
50
+ "DATACENTER_BLOCKED": "لا يُسمح بالطلبات من عناوين IP لمراكز البيانات لهذا الموقع",
51
+ "MOBILE_BLOCKED": "لا يُسمح بالطلبات من شبكات الهاتف المحمول لهذا الموقع",
52
+ "SATELLITE_BLOCKED": "لا يُسمح بالطلبات من الاتصالات الفضائية لهذا الموقع",
53
+ "CRAWLER_BLOCKED": "لا يُسمح بالطلبات من برامج الزحف المعروفة لهذا الموقع",
54
+ "DISALLOWED_WEBVIEW": "الطلبات من المتصفحات داخل التطبيقات (WebView) غير مسموح بها لهذا الموقع"
44
55
  },
45
56
  "PORTAL": {
46
57
  "CANNOT_MODIFY_OWNER_USER": "لا يمكن تعديل مالك المستخدم",
@@ -48,7 +59,9 @@
48
59
  "CANNOT_DELETE_LAST_USER": "لا يمكن حذف أخر مستخدم",
49
60
  "USER_ALREADY_EXISTS": "المستخدم موجود بالفعل",
50
61
  "NO_SUGGESTIONS_FOUND": "لم يتم العثور على اقتراحات",
51
- "CANNOT_DEACTIVATE_LAST_SITE": "لا يمكن تعطيل آخر موقع نشط"
62
+ "CANNOT_DEACTIVATE_LAST_SITE": "لا يمكن تعطيل آخر موقع نشط",
63
+ "DUPLICATE_SITE_NAME": "يوجد موقع بهذا الاسم بالفعل",
64
+ "INVALID_SITE_NAME": "يجب أن يحتوي اسم الموقع على أحرف وأرقام وشرطات وشرطات سفلية فقط"
52
65
  },
53
66
  "TARGET": {
54
67
  "airplanes": "طائرات",
@@ -361,7 +374,8 @@
361
374
  "I_AM_HUMAN": "أنا إنسان",
362
375
  "NO_ACCOUNTS_FOUND": "لم يتم العثور على حسابات",
363
376
  "ACCOUNT_NOT_FOUND": "حساب غير موجود",
364
- "NO_EXTENSION_FOUND": "لم يتم العثور على امتداد"
377
+ "NO_EXTENSION_FOUND": "لم يتم العثور على امتداد",
378
+ "INSECURE_CONTEXT": "يتطلب Procaptcha اتصالاً آمنًا (HTTPS)"
365
379
  },
366
380
  "CONTRACT": {
367
381
  "INVALID_ADDRESS": "فشل في ترميز عنوان غير صالح",
@@ -422,6 +436,7 @@
422
436
  "NO_CAPTCHA": "لم يتم العثور على captcha",
423
437
  "NO_SESSION_FOUND": "لم يتم العثور على جلسة",
424
438
  "IP_ADDRESS_MISMATCH": "عناوين IP غير متطابقة",
439
+ "INVALID_SALT": "ملح غير صالح",
425
440
  "INVALID_TOKEN": "الرمز غير صالح",
426
441
  "INVALID_SOLUTION": "الحل غير صالح",
427
442
  "DECRYPTION_ERROR": "خطأ في فك التشفير"
@@ -21,6 +21,7 @@
21
21
  "ACCESS_POLICY_BLOCK": "Siyasət tərəfindən giriş bloklandı",
22
22
  "FORBIDDEN": "Qadağan edilir",
23
23
  "PROVIDER_VERIFY_FAILED": "Təchizatçı doğrulaması alınmadı",
24
+ "SPAM_EMAIL_DOMAIN": "E-poçt domeni icazə verilmir",
24
25
  "UNAUTHORIZED": "İcazəsiz",
25
26
  "MISSING_BODY": "Gövdesi eksik",
26
27
  "NO_CONTENT_TYPE_HEADER": "Məzmun-növü başlığı yoxdur. JSON kodlanmış gövde olduğu, ancaq ayrışdırmaq mümkün olmadığı düşünüldü.",
@@ -40,7 +41,17 @@
40
41
  "INVALID_IP": "Yanlış IP",
41
42
  "INVALID_URL": "Yanlış URL",
42
43
  "INVALID_BODY": "Yanlış bədən",
43
- "PARSE_ERROR": "Tələbi pars edərkən səhv baş verdi"
44
+ "PARSE_ERROR": "Tələbi pars edərkən səhv baş verdi",
45
+ "SPAM_EMAIL_RULE": "E-poçt ünvanı spam filtr qaydaları ilə bloklanıb",
46
+ "VPN_BLOCKED": "Bu sayt üçün VPN bağlantılarından sorğulara icazə verilmir",
47
+ "PROXY_BLOCKED": "Bu sayt üçün proksi serverlərdən sorğulara icazə verilmir",
48
+ "TOR_BLOCKED": "Bu sayt üçün Tor çıxış qovşaqlarından sorğulara icazə verilmir",
49
+ "ABUSER_BLOCKED": "Bu sayt üçün sui-istifadə üçün işarələnmiş şəbəkələrdən sorğulara icazə verilmir",
50
+ "DATACENTER_BLOCKED": "Bu sayt üçün məlumat mərkəzi IP ünvanlarından sorğulara icazə verilmir",
51
+ "MOBILE_BLOCKED": "Bu sayt üçün mobil şəbəkə bağlantılarından sorğulara icazə verilmir",
52
+ "SATELLITE_BLOCKED": "Bu sayt üçün peyk bağlantılarından sorğulara icazə verilmir",
53
+ "CRAWLER_BLOCKED": "Bu sayt üçün tanınmış tarayıcılardan sorğulara icazə verilmir",
54
+ "DISALLOWED_WEBVIEW": "Bu sayt üçün tətbiqdaxili brauzerlərdən (WebView) sorğulara icazə verilmir"
44
55
  },
45
56
  "PORTAL": {
46
57
  "CANNOT_MODIFY_OWNER_USER": "Sahib istifadəçini dəyişmək olmaz",
@@ -48,7 +59,9 @@
48
59
  "CANNOT_DELETE_LAST_USER": "Son istifadəçini silmək olmaz",
49
60
  "USER_ALREADY_EXISTS": "İstifadəçi artıq mövcuddur",
50
61
  "NO_SUGGESTIONS_FOUND": "Təklif tapılmadı",
51
- "CANNOT_DEACTIVATE_LAST_SITE": "Sonaktiv saytı deaktiv etmək olmaz"
62
+ "CANNOT_DEACTIVATE_LAST_SITE": "Sonaktiv saytı deaktiv etmək olmaz",
63
+ "DUPLICATE_SITE_NAME": "Bu adda sayt artıq mövcuddur",
64
+ "INVALID_SITE_NAME": "Sayt adı yalnız hərflərdən, rəqəmlərdən, defislərdən və alt xətlərdən ibarət olmalıdır"
52
65
  },
53
66
  "TARGET": {
54
67
  "airplanes": "təyyarələr",
@@ -361,7 +374,8 @@
361
374
  "I_AM_HUMAN": "Mən insanam",
362
375
  "NO_ACCOUNTS_FOUND": "Hesab tapılmadı",
363
376
  "ACCOUNT_NOT_FOUND": "Hesab tapılmadı",
364
- "NO_EXTENSION_FOUND": "Tətbiq tapılmadı"
377
+ "NO_EXTENSION_FOUND": "Tətbiq tapılmadı",
378
+ "INSECURE_CONTEXT": "Procaptcha təhlükəsiz (HTTPS) bağlantı tələb edir"
365
379
  },
366
380
  "CONTRACT": {
367
381
  "INVALID_ADDRESS": "Geçərsiz ünvan kodlanmadı",
@@ -422,6 +436,7 @@
422
436
  "NO_CAPTCHA": "Captcha tapılmadı",
423
437
  "NO_SESSION_FOUND": "Seans tapılmadı",
424
438
  "IP_ADDRESS_MISMATCH": "IP ünvanları uyğun gəlmir",
439
+ "INVALID_SALT": "Yanlış duz",
425
440
  "INVALID_TOKEN": "Yanlış token",
426
441
  "INVALID_SOLUTION": "Yanlış həll",
427
442
  "DECRYPTION_ERROR": "Şifrəni çözərkən səhv"
@@ -21,6 +21,7 @@
21
21
  "ACCESS_POLICY_BLOCK": "Přístup blokován zásadami",
22
22
  "FORBIDDEN": "Zakázáno",
23
23
  "PROVIDER_VERIFY_FAILED": "Ověření poskytovatele selhalo",
24
+ "SPAM_EMAIL_DOMAIN": "E-mailová doména není povolena",
24
25
  "UNAUTHORIZED": "Neoprávněný",
25
26
  "MISSING_BODY": "Chybějící tělo",
26
27
  "NO_CONTENT_TYPE_HEADER": "Chybí hlavička typu obsahu. Předpokládáno, že tělo je kódované ve formátu JSON, ale nepodařilo se ho analyzovat.",
@@ -40,7 +41,17 @@
40
41
  "INVALID_IP": "Neplatná IP adresa",
41
42
  "INVALID_URL": "Neplatná URL adresa",
42
43
  "INVALID_BODY": "Neplatné tělo",
43
- "PARSE_ERROR": "Chyba při zpracování požadavku"
44
+ "PARSE_ERROR": "Chyba při zpracování požadavku",
45
+ "SPAM_EMAIL_RULE": "E-mailová adresa blokována pravidly spamového filtru",
46
+ "VPN_BLOCKED": "Požadavky z VPN připojení nejsou pro tento web povoleny",
47
+ "PROXY_BLOCKED": "Požadavky z proxy serverů nejsou pro tento web povoleny",
48
+ "TOR_BLOCKED": "Požadavky z výstupních uzlů Tor nejsou pro tento web povoleny",
49
+ "ABUSER_BLOCKED": "Požadavky ze sítí označených za zneužívající nejsou pro tento web povoleny",
50
+ "DATACENTER_BLOCKED": "Požadavky z IP adres datových center nejsou pro tento web povoleny",
51
+ "MOBILE_BLOCKED": "Požadavky z mobilních sítí nejsou pro tento web povoleny",
52
+ "SATELLITE_BLOCKED": "Požadavky ze satelitních připojení nejsou pro tento web povoleny",
53
+ "CRAWLER_BLOCKED": "Požadavky ze známých crawlerů nejsou pro tento web povoleny",
54
+ "DISALLOWED_WEBVIEW": "Požadavky z prohlížečů v aplikacích (WebView) nejsou pro tento web povoleny"
44
55
  },
45
56
  "PORTAL": {
46
57
  "CANNOT_MODIFY_OWNER_USER": "Nelze upravit vlastníka uživatele",
@@ -48,7 +59,9 @@
48
59
  "CANNOT_DELETE_LAST_USER": "Nelze smazat posledního uživatele",
49
60
  "USER_ALREADY_EXISTS": "Uživatel již existuje",
50
61
  "NO_SUGGESTIONS_FOUND": "Nebyly nalezeny žádné návrhy",
51
- "CANNOT_DEACTIVATE_LAST_SITE": "Nelze deaktivovat poslední aktivní web"
62
+ "CANNOT_DEACTIVATE_LAST_SITE": "Nelze deaktivovat poslední aktivní web",
63
+ "DUPLICATE_SITE_NAME": "Web s tímto názvem již existuje",
64
+ "INVALID_SITE_NAME": "Název webu smí obsahovat pouze písmena, čísla, pomlčky a podtržítka"
52
65
  },
53
66
  "TARGET": {
54
67
  "airplanes": "letadla",
@@ -361,7 +374,8 @@
361
374
  "I_AM_HUMAN": "Jsem člověk",
362
375
  "NO_ACCOUNTS_FOUND": "Nebyly nalezeny žádné účty",
363
376
  "ACCOUNT_NOT_FOUND": "Účet nenalezen",
364
- "NO_EXTENSION_FOUND": "Nenalezeno žádné rozšíření"
377
+ "NO_EXTENSION_FOUND": "Nenalezeno žádné rozšíření",
378
+ "INSECURE_CONTEXT": "Procaptcha vyžaduje zabezpečené připojení (HTTPS)"
365
379
  },
366
380
  "CONTRACT": {
367
381
  "INVALID_ADDRESS": "Nepodařilo se zakódovat neplatnou adresu",
@@ -422,6 +436,7 @@
422
436
  "NO_CAPTCHA": "CAPTCHA nenalezena",
423
437
  "NO_SESSION_FOUND": "Žádná relace nenalezena",
424
438
  "IP_ADDRESS_MISMATCH": "IP adresy se neshodují",
439
+ "INVALID_SALT": "Neplatný salt",
425
440
  "INVALID_TOKEN": "Neplatný token",
426
441
  "INVALID_SOLUTION": "Neplatné řešení",
427
442
  "DECRYPTION_ERROR": "Chyba dešifrování"
@@ -21,6 +21,7 @@
21
21
  "ACCESS_POLICY_BLOCK": "Zugriff durch Richtlinie blockiert",
22
22
  "FORBIDDEN": "Verboten",
23
23
  "PROVIDER_VERIFY_FAILED": "Anbieterüberprüfung fehlgeschlagen",
24
+ "SPAM_EMAIL_DOMAIN": "E-Mail-Domain nicht erlaubt",
24
25
  "UNAUTHORIZED": "Unauthorized",
25
26
  "MISSING_BODY": "Fehlender Körper",
26
27
  "NO_CONTENT_TYPE_HEADER": "Kein Inhaltstyp-Header. Angenommenes JSON-kodiertes Körper, aber konnte nicht analysieren.",
@@ -40,7 +41,17 @@
40
41
  "INVALID_IP": "Ungültige IP",
41
42
  "INVALID_URL": "Ungültiger URL",
42
43
  "INVALID_BODY": "Ungültiger Körper",
43
- "PARSE_ERROR": "Fehler beim Parsen der Anfrage"
44
+ "PARSE_ERROR": "Fehler beim Parsen der Anfrage",
45
+ "SPAM_EMAIL_RULE": "E-Mail-Adresse durch Spamfilter-Regeln blockiert",
46
+ "VPN_BLOCKED": "Anfragen über VPN-Verbindungen sind für diese Website nicht erlaubt",
47
+ "PROXY_BLOCKED": "Anfragen über Proxy-Server sind für diese Website nicht erlaubt",
48
+ "TOR_BLOCKED": "Anfragen über Tor-Exit-Knoten sind für diese Website nicht erlaubt",
49
+ "ABUSER_BLOCKED": "Anfragen von als missbräuchlich markierten Netzwerken sind für diese Website nicht erlaubt",
50
+ "DATACENTER_BLOCKED": "Anfragen von Rechenzentrum-IP-Adressen sind für diese Website nicht erlaubt",
51
+ "MOBILE_BLOCKED": "Anfragen von Mobilfunkverbindungen sind für diese Website nicht erlaubt",
52
+ "SATELLITE_BLOCKED": "Anfragen von Satellitenverbindungen sind für diese Website nicht erlaubt",
53
+ "CRAWLER_BLOCKED": "Anfragen von bekannten Crawlern sind für diese Website nicht erlaubt",
54
+ "DISALLOWED_WEBVIEW": "Anfragen aus In-App-Browsern (WebView) sind für diese Website nicht erlaubt"
44
55
  },
45
56
  "PORTAL": {
46
57
  "CANNOT_MODIFY_OWNER_USER": "Kann den Besitzerbenutzer nicht ändern",
@@ -48,7 +59,9 @@
48
59
  "CANNOT_DELETE_LAST_USER": "Kann den letzten Benutzer nicht löschen",
49
60
  "USER_ALREADY_EXISTS": "Benutzer existiert bereits",
50
61
  "NO_SUGGESTIONS_FOUND": "Keine Vorschläge gefunden",
51
- "CANNOT_DEACTIVATE_LAST_SITE": "Kann den letzten aktiven Standort nicht deaktivieren"
62
+ "CANNOT_DEACTIVATE_LAST_SITE": "Kann den letzten aktiven Standort nicht deaktivieren",
63
+ "DUPLICATE_SITE_NAME": "Eine Website mit diesem Namen existiert bereits",
64
+ "INVALID_SITE_NAME": "Der Websitename darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten"
52
65
  },
53
66
  "ACCOUNT": {
54
67
  "NO_POLKADOT_EXTENSION": "Polkadot-Erweiterung nicht gefunden"
@@ -62,7 +75,8 @@
62
75
  "I_AM_HUMAN": "Ich bin ein Mensch",
63
76
  "NO_ACCOUNTS_FOUND": "Keine Konten gefunden",
64
77
  "ACCOUNT_NOT_FOUND": "Konto nicht gefunden",
65
- "NO_EXTENSION_FOUND": "Keine Erweiterung gefunden"
78
+ "NO_EXTENSION_FOUND": "Keine Erweiterung gefunden",
79
+ "INSECURE_CONTEXT": "Procaptcha erfordert eine sichere (HTTPS-)Verbindung"
66
80
  },
67
81
  "CONTRACT": {
68
82
  "INVALID_ADDRESS": "Ungültige Adresse konnte nicht codiert werden",
@@ -123,6 +137,7 @@
123
137
  "NO_CAPTCHA": "Kein Captcha gefunden",
124
138
  "NO_SESSION_FOUND": "Keine Session gefunden",
125
139
  "IP_ADDRESS_MISMATCH": "IP-Adresse stimmt nicht überein",
140
+ "INVALID_SALT": "Ungültiges Salt",
126
141
  "INVALID_TOKEN": "Ungültiges Token",
127
142
  "INVALID_SOLUTION": "Ungültige Lösung",
128
143
  "DECRYPTION_ERROR": "Fehler beim Entschlüsseln"
@@ -11,6 +11,7 @@
11
11
  "ACCESS_POLICY_BLOCK": "Η πρόσβαση αποκλείστηκε από την πολιτική",
12
12
  "FORBIDDEN": "Απαγορεύεται",
13
13
  "PROVIDER_VERIFY_FAILED": "Αποτυχία επαλήθευσης παρόχου",
14
+ "SPAM_EMAIL_DOMAIN": "Ο τομέας email δεν επιτρέπεται",
14
15
  "CAPTCHA_FAILED": "Απάντησες λανθασμένα ένα ή περισσότερα captchas. Παρακαλώ δοκίμασε ξανά",
15
16
  "CAPTCHA_PASSED": "Απάντησες σωστά στα captchas",
16
17
  "BAD_REQUEST": "Μη έγκυρο αίτημα",
@@ -27,7 +28,17 @@
27
28
  "INVALID_IP": "Μη έγκυρη διεύθυνση IP",
28
29
  "INVALID_URL": "Μη έγκυρη διεύθυνση URL",
29
30
  "INVALID_BODY": "Μη έγκυρο σώμα",
30
- "PARSE_ERROR": "Σφάλμα ανάλυσης αιτήματος"
31
+ "PARSE_ERROR": "Σφάλμα ανάλυσης αιτήματος",
32
+ "SPAM_EMAIL_RULE": "Η διεύθυνση email αποκλείστηκε από κανόνες φίλτρου spam",
33
+ "VPN_BLOCKED": "Αιτήματα από συνδέσεις VPN δεν επιτρέπονται για αυτόν τον ιστότοπο",
34
+ "PROXY_BLOCKED": "Αιτήματα από διακομιστές proxy δεν επιτρέπονται για αυτόν τον ιστότοπο",
35
+ "TOR_BLOCKED": "Αιτήματα από κόμβους εξόδου Tor δεν επιτρέπονται για αυτόν τον ιστότοπο",
36
+ "ABUSER_BLOCKED": "Αιτήματα από δίκτυα που έχουν επισημανθεί για κατάχρηση δεν επιτρέπονται για αυτόν τον ιστότοπο",
37
+ "DATACENTER_BLOCKED": "Αιτήματα από διευθύνσεις IP κέντρων δεδομένων δεν επιτρέπονται για αυτόν τον ιστότοπο",
38
+ "MOBILE_BLOCKED": "Αιτήματα από συνδέσεις κινητών δικτύων δεν επιτρέπονται για αυτόν τον ιστότοπο",
39
+ "SATELLITE_BLOCKED": "Αιτήματα από δορυφορικές συνδέσεις δεν επιτρέπονται για αυτόν τον ιστότοπο",
40
+ "CRAWLER_BLOCKED": "Αιτήματα από γνωστά προγράμματα ανίχνευσης δεν επιτρέπονται για αυτόν τον ιστότοπο",
41
+ "DISALLOWED_WEBVIEW": "Δεν επιτρέπονται αιτήματα από ενσωματωμένους περιηγητές (WebView) για αυτόν τον ιστότοπο"
31
42
  },
32
43
  "TARGET": {
33
44
  "animals": "ζώα",
@@ -347,7 +358,9 @@
347
358
  "CANNOT_DELETE_LAST_USER": "Δεν είναι δυνατή η διαγραφή του τελευταίου χρήστη",
348
359
  "USER_ALREADY_EXISTS": "Ο χρήστης υπάρχει ήδη",
349
360
  "NO_SUGGESTIONS_FOUND": "Δεν βρέθηκαν προτάσεις",
350
- "CANNOT_DEACTIVATE_LAST_SITE": "Δεν είναι δυνατή η απενεργοποίηση του τελευταίου ιστότοπου"
361
+ "CANNOT_DEACTIVATE_LAST_SITE": "Δεν είναι δυνατή η απενεργοποίηση του τελευταίου ιστότοπου",
362
+ "DUPLICATE_SITE_NAME": "Υπάρχει ήδη ιστότοπος με αυτό το όνομα",
363
+ "INVALID_SITE_NAME": "Το όνομα ιστότοπου πρέπει να περιέχει μόνο γράμματα, αριθμούς, παύλες και κάτω παύλες"
351
364
  },
352
365
  "ACCOUNT": {
353
366
  "NO_POLKADOT_EXTENSION": "Δεν βρέθηκε επέκταση Polkadot"
@@ -361,7 +374,8 @@
361
374
  "I_AM_HUMAN": "Είμαι άνθρωπος",
362
375
  "NO_ACCOUNTS_FOUND": "Δεν βρέθηκαν λογαριασμοί",
363
376
  "ACCOUNT_NOT_FOUND": "Δεν βρέθηκε λογαριασμός",
364
- "NO_EXTENSION_FOUND": "Δε βρέθηκε επέκταση"
377
+ "NO_EXTENSION_FOUND": "Δε βρέθηκε επέκταση",
378
+ "INSECURE_CONTEXT": "Το Procaptcha απαιτεί ασφαλή σύνδεση (HTTPS)"
365
379
  },
366
380
  "CONTRACT": {
367
381
  "INVALID_ADDRESS": "Αποτυχία κωδικοποίησης μη έγκυρης διεύθυνσης",
@@ -422,6 +436,7 @@
422
436
  "NO_CAPTCHA": "Δε βρέθηκε captcha",
423
437
  "NO_SESSION_FOUND": "Δε βρέθηκε συνεδρία",
424
438
  "IP_ADDRESS_MISMATCH": "Οι διευθύνσεις IP δεν ταιριάζουν",
439
+ "INVALID_SALT": "Μη έγκυρο salt",
425
440
  "INVALID_TOKEN": "Μη έγκυρο τεκμήριο",
426
441
  "INVALID_SOLUTION": "Μη έγκυρη λύση",
427
442
  "DECRYPTION_ERROR": "Σφάλμα αποκρυπτογράφησης"
@@ -11,7 +11,8 @@
11
11
  "I_AM_HUMAN": "I am human",
12
12
  "NO_ACCOUNTS_FOUND": "No accounts found",
13
13
  "ACCOUNT_NOT_FOUND": "Account not found",
14
- "NO_EXTENSION_FOUND": "No extension found"
14
+ "NO_EXTENSION_FOUND": "No extension found",
15
+ "INSECURE_CONTEXT": "Procaptcha requires a secure (HTTPS) connection"
15
16
  },
16
17
  "GENERAL": {
17
18
  "JSON_LOAD_FAILED": "Failed to load JSON file",
@@ -85,6 +86,7 @@
85
86
  "NO_CAPTCHA": "No captcha found",
86
87
  "NO_SESSION_FOUND": "No session found",
87
88
  "IP_ADDRESS_MISMATCH": "IP address mismatch detected",
89
+ "INVALID_SALT": "Invalid salt",
88
90
  "INVALID_TOKEN": "Invalid token",
89
91
  "INVALID_SOLUTION": "Invalid solution",
90
92
  "DECRYPTION_ERROR": "Error decrypting"
@@ -117,7 +119,18 @@
117
119
  "FAILED_IP_VALIDATION": "IP validation failed",
118
120
  "ACCESS_POLICY_BLOCK": "Access blocked by policy",
119
121
  "FORBIDDEN": "Forbidden",
120
- "PROVIDER_VERIFY_FAILED": "Provider verification failed"
122
+ "PROVIDER_VERIFY_FAILED": "Provider verification failed",
123
+ "SPAM_EMAIL_DOMAIN": "Email domain not allowed",
124
+ "SPAM_EMAIL_RULE": "Email address blocked by spam filter rules",
125
+ "VPN_BLOCKED": "Requests from VPN connections are not allowed for this site",
126
+ "PROXY_BLOCKED": "Requests from proxy servers are not allowed for this site",
127
+ "TOR_BLOCKED": "Requests from Tor exit nodes are not allowed for this site",
128
+ "ABUSER_BLOCKED": "Requests from networks flagged for abuse are not allowed for this site",
129
+ "DATACENTER_BLOCKED": "Requests from datacenter IP addresses are not allowed for this site",
130
+ "MOBILE_BLOCKED": "Requests from mobile network connections are not allowed for this site",
131
+ "SATELLITE_BLOCKED": "Requests from satellite connections are not allowed for this site",
132
+ "CRAWLER_BLOCKED": "Requests from known crawlers are not allowed for this site",
133
+ "DISALLOWED_WEBVIEW": "Requests from in-app browsers (WebViews) are not allowed for this site"
121
134
  },
122
135
  "PORTAL": {
123
136
  "CANNOT_MODIFY_OWNER_USER": "Cannot modify owner user",
@@ -125,7 +138,9 @@
125
138
  "CANNOT_DELETE_LAST_USER": "Cannot delete last user",
126
139
  "USER_ALREADY_EXISTS": "User already exists",
127
140
  "NO_SUGGESTIONS_FOUND": "No suggestions found",
128
- "CANNOT_DEACTIVATE_LAST_SITE": "Cannot deactivate the last active site"
141
+ "CANNOT_DEACTIVATE_LAST_SITE": "Cannot deactivate the last active site",
142
+ "DUPLICATE_SITE_NAME": "A site with this name already exists",
143
+ "INVALID_SITE_NAME": "Site name must contain only letters, numbers, hyphens, and underscores"
129
144
  },
130
145
  "CLI": {
131
146
  "PARAMETER_ERROR": "Invalid parameter"