@prosopo/locale 3.4.3 → 3.5.0

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 (112) 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 +6 -6
  4. package/CHANGELOG.md +27 -0
  5. package/dist/cjs/i18nFrontend.cjs +11 -15
  6. package/dist/cjs/index.cjs +2 -2
  7. package/dist/cjs/locales/en/translation.cjs +1 -0
  8. package/dist/cjs/translator.cjs +30 -0
  9. package/dist/i18nFrontend.d.ts.map +1 -1
  10. package/dist/i18nFrontend.js +11 -15
  11. package/dist/i18nFrontend.js.map +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/locales/ar/translation.json +1 -0
  17. package/dist/locales/az/translation.json +1 -0
  18. package/dist/locales/cs/translation.json +1 -0
  19. package/dist/locales/de/translation.json +1 -0
  20. package/dist/locales/el/translation.json +1 -0
  21. package/dist/locales/en/translation.js +1 -0
  22. package/dist/locales/en/translation.json +1 -0
  23. package/dist/locales/es/translation.json +1 -0
  24. package/dist/locales/fi/translation.json +1 -0
  25. package/dist/locales/fr/translation.json +1 -0
  26. package/dist/locales/hi/translation.json +1 -0
  27. package/dist/locales/hu/translation.json +1 -0
  28. package/dist/locales/id/translation.json +1 -0
  29. package/dist/locales/it/translation.json +1 -0
  30. package/dist/locales/ja/translation.json +1 -0
  31. package/dist/locales/jv/translation.json +1 -0
  32. package/dist/locales/ko/translation.json +1 -0
  33. package/dist/locales/ml/translation.json +1 -0
  34. package/dist/locales/ms/translation.json +1 -0
  35. package/dist/locales/nl/translation.json +1 -0
  36. package/dist/locales/no/translation.json +1 -0
  37. package/dist/locales/pl/translation.json +1 -0
  38. package/dist/locales/pt/translation.json +1 -0
  39. package/dist/locales/pt-BR/translation.json +1 -0
  40. package/dist/locales/ro/translation.json +1 -0
  41. package/dist/locales/ru/translation.json +1 -0
  42. package/dist/locales/sr/translation.json +1 -0
  43. package/dist/locales/sv/translation.json +1 -0
  44. package/dist/locales/th/translation.json +1 -0
  45. package/dist/locales/tr/translation.json +1 -0
  46. package/dist/locales/uk/translation.json +1 -0
  47. package/dist/locales/vi/translation.json +1 -0
  48. package/dist/locales/zh-CN/translation.json +1 -0
  49. package/dist/tests/i18nFrontend.unit.test.js +2 -5
  50. package/dist/tests/i18nFrontend.unit.test.js.map +1 -1
  51. package/dist/tests/locale.test-d.js +13 -10
  52. package/dist/tests/locale.test-d.js.map +1 -1
  53. package/dist/tests/translator.unit.test.d.ts +2 -0
  54. package/dist/tests/translator.unit.test.d.ts.map +1 -0
  55. package/dist/tests/translator.unit.test.js +134 -0
  56. package/dist/tests/translator.unit.test.js.map +1 -0
  57. package/dist/translator.d.ts +10 -0
  58. package/dist/translator.d.ts.map +1 -0
  59. package/dist/translator.js +30 -0
  60. package/dist/translator.js.map +1 -0
  61. package/package.json +2 -3
  62. package/src/i18nFrontend.ts +3 -8
  63. package/src/index.ts +2 -1
  64. package/src/loadI18next.ts +1 -1
  65. package/src/locales/ar/translation.json +1 -0
  66. package/src/locales/az/translation.json +1 -0
  67. package/src/locales/cs/translation.json +1 -0
  68. package/src/locales/de/translation.json +1 -0
  69. package/src/locales/el/translation.json +1 -0
  70. package/src/locales/en/translation.json +1 -0
  71. package/src/locales/es/translation.json +1 -0
  72. package/src/locales/fi/translation.json +1 -0
  73. package/src/locales/fr/translation.json +1 -0
  74. package/src/locales/hi/translation.json +1 -0
  75. package/src/locales/hu/translation.json +1 -0
  76. package/src/locales/id/translation.json +1 -0
  77. package/src/locales/it/translation.json +1 -0
  78. package/src/locales/ja/translation.json +1 -0
  79. package/src/locales/jv/translation.json +1 -0
  80. package/src/locales/ko/translation.json +1 -0
  81. package/src/locales/ml/translation.json +1 -0
  82. package/src/locales/ms/translation.json +1 -0
  83. package/src/locales/nl/translation.json +1 -0
  84. package/src/locales/no/translation.json +1 -0
  85. package/src/locales/pl/translation.json +1 -0
  86. package/src/locales/pt/translation.json +1 -0
  87. package/src/locales/pt-BR/translation.json +1 -0
  88. package/src/locales/ro/translation.json +1 -0
  89. package/src/locales/ru/translation.json +1 -0
  90. package/src/locales/sr/translation.json +1 -0
  91. package/src/locales/sv/translation.json +1 -0
  92. package/src/locales/th/translation.json +1 -0
  93. package/src/locales/tr/translation.json +1 -0
  94. package/src/locales/uk/translation.json +1 -0
  95. package/src/locales/vi/translation.json +1 -0
  96. package/src/locales/zh-CN/translation.json +1 -0
  97. package/src/tests/i18nFrontend.unit.test.ts +2 -5
  98. package/src/tests/locale.test-d.ts +12 -9
  99. package/src/tests/translator.unit.test.ts +213 -0
  100. package/src/translator.ts +69 -0
  101. package/tsconfig.tsbuildinfo +1 -1
  102. package/dist/cjs/useTranslation.cjs +0 -12
  103. package/dist/tests/useTranslation.unit.test.d.ts +0 -2
  104. package/dist/tests/useTranslation.unit.test.d.ts.map +0 -1
  105. package/dist/tests/useTranslation.unit.test.js +0 -81
  106. package/dist/tests/useTranslation.unit.test.js.map +0 -1
  107. package/dist/useTranslation.d.ts +0 -7
  108. package/dist/useTranslation.d.ts.map +0 -1
  109. package/dist/useTranslation.js +0 -11
  110. package/dist/useTranslation.js.map +0 -1
  111. package/src/tests/useTranslation.unit.test.ts +0 -134
  112. package/src/useTranslation.ts +0 -31
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/locale@3.4.3 build:cjs
2
+ > @prosopo/locale@3.5.0 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -13,20 +13,20 @@ Bundle build started
13
13
  rendering chunks...
14
14
  computing gzip size...
15
15
  dist/cjs/util.cjs 0.28 kB │ gzip: 0.17 kB
16
- dist/cjs/useTranslation.cjs 0.35 kB │ gzip: 0.20 kB
17
16
  dist/cjs/i18nMiddleware.cjs 0.36 kB │ gzip: 0.21 kB
18
17
  dist/cjs/i18SharedOptions.cjs 0.41 kB │ gzip: 0.25 kB
19
18
  dist/cjs/translationKey.cjs 0.74 kB │ gzip: 0.38 kB
20
19
  dist/cjs/process.cjs 0.78 kB │ gzip: 0.46 kB
21
20
  dist/cjs/index.cjs 0.83 kB │ gzip: 0.27 kB
22
21
  dist/cjs/translations.cjs 0.86 kB │ gzip: 0.46 kB
22
+ dist/cjs/translator.cjs 0.89 kB │ gzip: 0.49 kB
23
23
  dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
24
24
  dist/cjs/i18nBackend.cjs 1.47 kB │ gzip: 0.62 kB
25
25
  dist/cjs/loadI18next.cjs 2.03 kB │ gzip: 0.84 kB
26
- dist/cjs/i18nFrontend.cjs 2.47 kB │ gzip: 0.87 kB
27
- dist/cjs/locales/en/translation.cjs 16.56 kB │ gzip: 5.98 kB
26
+ dist/cjs/i18nFrontend.cjs 2.35 kB │ gzip: 0.83 kB
27
+ dist/cjs/locales/en/translation.cjs 16.64 kB │ gzip: 6.01 kB
28
28
 
29
- ✓ built in 79ms
29
+ ✓ built in 92ms
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
@@ -34,9 +34,9 @@ dist/cjs/locales/en/translation.cjs 16.56 kB │ gzip: 5.98 kB
34
34
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/el/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/el/translation.json
35
35
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/en/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/en/translation.json
36
36
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/es/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/es/translation.json
37
- [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
38
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
39
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/fi/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/fi/translation.json
40
40
  [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
41
41
  [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
42
42
  [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
@@ -1,14 +1,14 @@
1
1
 
2
- > @prosopo/locale@3.4.3 build:tsc
2
+ > @prosopo/locale@3.5.0 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 1:03:47 PM - Projects in this build:
5
+ 11:03:35 AM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * tsconfig.json
8
8
 
9
- 1:03:48 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'
9
+ 11:03:35 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/NodejsPolarsDirnamePlugin.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
10
10
 
11
- 1:03:48 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
11
+ 11:03:35 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
12
12
 
13
- 1:03:48 PM - Building project '/home/runner/work/captcha/captcha/packages/locale/tsconfig.json'...
13
+ 11:03:35 AM - Building project '/home/runner/work/captcha/captcha/packages/locale/tsconfig.json'...
14
14
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/locale@3.4.3 build
2
+ > @prosopo/locale@3.5.0 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/locale@3.4.3 build:cross-env
6
+ > @prosopo/locale@3.5.0 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -19,18 +19,18 @@ computing gzip size...
19
19
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
20
20
  dist/util.js 0.25 kB │ gzip: 0.16 kB
21
21
  dist/i18nMiddleware.js 0.27 kB │ gzip: 0.18 kB
22
- dist/useTranslation.js 0.30 kB │ gzip: 0.19 kB
23
22
  dist/i18SharedOptions.js 0.37 kB │ gzip: 0.25 kB
24
23
  dist/index.js 0.47 kB │ gzip: 0.20 kB
25
24
  dist/translationKey.js 0.68 kB │ gzip: 0.37 kB
26
25
  dist/translations.js 0.70 kB │ gzip: 0.39 kB
27
26
  dist/process.js 0.77 kB │ gzip: 0.46 kB
27
+ dist/translator.js 0.85 kB │ gzip: 0.48 kB
28
28
  dist/i18nBackend.js 1.01 kB │ gzip: 0.53 kB
29
- dist/i18nFrontend.js 1.75 kB │ gzip: 0.78 kB
29
+ dist/i18nFrontend.js 1.64 kB │ gzip: 0.74 kB
30
30
  dist/loadI18next.js 1.93 kB │ gzip: 0.83 kB
31
- dist/locales/en/translation.js 16.32 kB │ gzip: 5.94 kB
31
+ dist/locales/en/translation.js 16.41 kB │ gzip: 5.97 kB
32
32
 
33
- ✓ built in 82ms
33
+ ✓ built in 79ms
34
34
  [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
35
35
  [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
36
36
  [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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @prosopo/locale
2
2
 
3
+ ## 3.5.0
4
+ ### Minor Changes
5
+
6
+ - 59c02da: Replace React with vanilla TS/DOM in the widget.
7
+
8
+ The widget packages no longer depend on react, react-dom, @emotion or
9
+ react-i18next: every component is now a `mount*` function returning a handle
10
+ with `update`/`destroy`. `useTranslation` is replaced by `createTranslator`,
11
+ which exposes i18next's `t` plus the events that used to trigger a re-render.
12
+ The rendered markup, styling and behaviour are unchanged — only the
13
+ implementation is.
14
+
15
+ Everything the widget has gained since this rewrite started is carried over,
16
+ so nothing is lost by dropping React: the shared challenge surface (popup and
17
+ float placement, escape/outside-click dismissal and the dialog focus trap),
18
+ the image-tile and puzzle-piece keyboard paths, the checkbox's focus handover
19
+ across the loading swap, the server-rendered puzzle imagery, `startMode:
20
+ "manual"` with `window.procaptcha.start()`, `data-bind` / targeted
21
+ `execute(widgetId)`, the Web Bot Auth "authenticated" badge, the client
22
+ session id, and the bounded session re-mint and reload handling in the
23
+ frictionless wrapper.
24
+
25
+ ## 3.4.4
26
+ ### Patch Changes
27
+
28
+ - a22069d: Let a Block access rule name the reason it fired, so the 403 says why instead of "Forbidden"
29
+
3
30
  ## 3.4.3
4
31
  ### Patch Changes
5
32
 
@@ -1,6 +1,5 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_i18SharedOptions = require("./i18SharedOptions.cjs");
3
- let react_i18next = require("react-i18next");
4
3
  let i18next = require("i18next");
5
4
  i18next = require_runtime.__toESM(i18next, 1);
6
5
  let i18next_browser_languagedetector = require("i18next-browser-languagedetector");
@@ -12,18 +11,15 @@ i18next_http_backend = require_runtime.__toESM(i18next_http_backend, 1);
12
11
  let i18next_resources_to_backend = require("i18next-resources-to-backend");
13
12
  i18next_resources_to_backend = require_runtime.__toESM(i18next_resources_to_backend, 1);
14
13
  //#region src/i18nFrontend.ts
15
- var reactOptions = {
16
- react: { useSuspense: true },
17
- detection: {
18
- order: [
19
- "navigator",
20
- "htmlTag",
21
- "path",
22
- "subdomain"
23
- ],
24
- caches: ["localStorage", "cookie"]
25
- }
26
- };
14
+ var detectionOptions = { detection: {
15
+ order: [
16
+ "navigator",
17
+ "htmlTag",
18
+ "path",
19
+ "subdomain"
20
+ ],
21
+ caches: ["localStorage", "cookie"]
22
+ } };
27
23
  var getLoadPath = (language, namespace) => {
28
24
  const filename = require("url").pathToFileURL(__filename).href.split("/").pop();
29
25
  return `${require("url").pathToFileURL(__filename).href.replace(`/${filename}`, "")}/locales/${language}/${namespace}.json`;
@@ -40,14 +36,14 @@ function initializeI18n(i18nLoadedCallback, lng) {
40
36
  lookupCookie: "i18next",
41
37
  lookupLocalStorage: "i18nextLng",
42
38
  caches: ["localStorage", "cookie"]
43
- })).use(react_i18next.initReactI18next).init({
39
+ })).init({
44
40
  ...require_i18SharedOptions.i18nSharedOptions,
45
41
  ...lng ? { lng } : {},
46
42
  backend: {
47
43
  backends: [i18next_http_backend.default, (0, i18next_resources_to_backend.default)((language, namespace) => import(getLoadPath(language, namespace)))],
48
44
  backendOptions: [{ loadPath: getLoadPath("{{lng}}", "{{ns}}") }]
49
45
  },
50
- ...reactOptions
46
+ ...detectionOptions
51
47
  });
52
48
  let notified = false;
53
49
  i18next.default.on("loaded", () => {
@@ -4,11 +4,11 @@ const require_i18nMiddleware = require("./i18nMiddleware.cjs");
4
4
  const require_translations = require("./translations.cjs");
5
5
  const require_util = require("./util.cjs");
6
6
  const require_translationKey = require("./translationKey.cjs");
7
- const require_useTranslation = require("./useTranslation.cjs");
7
+ const require_translator = require("./translator.cjs");
8
8
  exports.LanguageSchema = require_translations.LanguageSchema;
9
9
  exports.Languages = require_translations.Languages;
10
10
  exports.TranslationKeysSchema = require_translationKey.TranslationKeysSchema;
11
+ exports.createTranslator = require_translator.createTranslator;
11
12
  exports.i18nMiddleware = require_i18nMiddleware.default;
12
13
  exports.isClientSide = require_util.isClientSide;
13
14
  exports.loadI18next = require_loadI18next.default;
14
- exports.useTranslation = require_useTranslation.default;
@@ -137,6 +137,7 @@ var API = {
137
137
  "SPAM_EMAIL_COUNT_EXCEEDED": "Too many submissions from this email address",
138
138
  "VPN_BLOCKED": "Requests from VPN connections are not allowed for this site",
139
139
  "PROXY_BLOCKED": "Requests from proxy servers are not allowed for this site",
140
+ "TOO_MANY_LOCALHOST": "Too many CAPTCHA requests from localhost for this site key",
140
141
  "TOR_BLOCKED": "Requests from Tor exit nodes are not allowed for this site",
141
142
  "ABUSER_BLOCKED": "Requests from networks flagged for abuse are not allowed for this site",
142
143
  "DATACENTER_BLOCKED": "Requests from datacenter IP addresses are not allowed for this site",
@@ -0,0 +1,30 @@
1
+ const require_i18nFrontend = require("./i18nFrontend.cjs");
2
+ //#region src/translator.ts
3
+ var NAMESPACE = "translation";
4
+ /**
5
+ * Vanilla replacement for the `useTranslation` hook. i18next is already
6
+ * framework-agnostic and event-driven; this just exposes its `t` plus the three
7
+ * events that used to trigger a React re-render.
8
+ */
9
+ var createTranslator = (existing) => {
10
+ const i18n = existing ?? require_i18nFrontend.default();
11
+ const isReady = () => i18n.isInitialized && i18n.hasLoadedNamespace(NAMESPACE);
12
+ return {
13
+ t: (key, options) => i18n.t(key, options),
14
+ isReady,
15
+ i18n,
16
+ subscribe: (listener) => {
17
+ const events = [
18
+ "initialized",
19
+ "loaded",
20
+ "languageChanged"
21
+ ];
22
+ for (const event of events) i18n.on(event, listener);
23
+ return () => {
24
+ for (const event of events) i18n.off(event, listener);
25
+ };
26
+ }
27
+ };
28
+ };
29
+ //#endregion
30
+ exports.createTranslator = createTranslator;
@@ -1 +1 @@
1
- {"version":3,"file":"i18nFrontend.d.ts","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"AAcA,OAAO,IAA0B,MAAM,SAAS,CAAC;AAuBjD,wBAAgB,cAAc,CAC7B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,IAAI,EACjD,GAAG,CAAC,EAAE,MAAM,0BA+DZ;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"i18nFrontend.d.ts","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"AAcA,OAAO,IAA0B,MAAM,SAAS,CAAC;AAmBjD,wBAAgB,cAAc,CAC7B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,IAAI,EACjD,GAAG,CAAC,EAAE,MAAM,0BA8DZ;AAED,eAAe,cAAc,CAAC"}
@@ -1,24 +1,20 @@
1
1
  import "./_virtual/_rolldown/runtime.js";
2
2
  import { i18nSharedOptions } from "./i18SharedOptions.js";
3
- import { initReactI18next } from "react-i18next";
4
3
  import i18n from "i18next";
5
4
  import I18nextBrowserLanguageDetector from "i18next-browser-languagedetector";
6
5
  import ChainedBackend from "i18next-chained-backend";
7
6
  import HttpBackend from "i18next-http-backend";
8
7
  import resourcesToBackend from "i18next-resources-to-backend";
9
8
  //#region src/i18nFrontend.ts
10
- var reactOptions = {
11
- react: { useSuspense: true },
12
- detection: {
13
- order: [
14
- "navigator",
15
- "htmlTag",
16
- "path",
17
- "subdomain"
18
- ],
19
- caches: ["localStorage", "cookie"]
20
- }
21
- };
9
+ var detectionOptions = { detection: {
10
+ order: [
11
+ "navigator",
12
+ "htmlTag",
13
+ "path",
14
+ "subdomain"
15
+ ],
16
+ caches: ["localStorage", "cookie"]
17
+ } };
22
18
  var getLoadPath = (language, namespace) => {
23
19
  const filename = import.meta.url.split("/").pop();
24
20
  return `${import.meta.url.replace(`/${filename}`, "")}/locales/${language}/${namespace}.json`;
@@ -35,14 +31,14 @@ function initializeI18n(i18nLoadedCallback, lng) {
35
31
  lookupCookie: "i18next",
36
32
  lookupLocalStorage: "i18nextLng",
37
33
  caches: ["localStorage", "cookie"]
38
- })).use(initReactI18next).init({
34
+ })).init({
39
35
  ...i18nSharedOptions,
40
36
  ...lng ? { lng } : {},
41
37
  backend: {
42
38
  backends: [HttpBackend, resourcesToBackend((language, namespace) => import(getLoadPath(language, namespace)))],
43
39
  backendOptions: [{ loadPath: getLoadPath("{{lng}}", "{{ns}}") }]
44
40
  },
45
- ...reactOptions
41
+ ...detectionOptions
46
42
  });
47
43
  let notified = false;
48
44
  i18n.on("loaded", () => {
@@ -1 +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,EACjD,GAAY;IAEZ,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;YAOpB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,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;QAKnB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO;YACR,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QAMP,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,eAAe,cAAc,CAAC"}
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,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,gBAAgB,GAAgB;IACrC,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,EACjD,GAAY;IAEZ,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,IAAI,CAAC;YACL,GAAG,iBAAiB;YAOpB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,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,gBAAgB;SACJ,CAAC,CAAC;QAKnB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO;YACR,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QAMP,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,eAAe,cAAc,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { Languages, LanguageSchema } from "./translations.js";
4
4
  export { isClientSide } from "./util.js";
5
5
  export { TranslationKeysSchema } from "./translationKey.js";
6
6
  export type { TranslationKey } from "./translationKey.js";
7
- export { default as useTranslation } from "./useTranslation.js";
7
+ export { createTranslator } from "./translator.js";
8
+ export type { Translator } from "./translator.js";
8
9
  export type { Ti18n } from "./loadI18next.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","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;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","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;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,5 @@ import i18nMiddleware from "./i18nMiddleware.js";
4
4
  import { LanguageSchema, Languages } from "./translations.js";
5
5
  import { isClientSide } from "./util.js";
6
6
  import { TranslationKeysSchema } from "./translationKey.js";
7
- import useTranslation from "./useTranslation.js";
8
- export { LanguageSchema, Languages, TranslationKeysSchema, i18nMiddleware, isClientSide, loadI18next, useTranslation };
7
+ import { createTranslator } from "./translator.js";
8
+ export { LanguageSchema, Languages, TranslationKeysSchema, createTranslator, i18nMiddleware, isClientSide, loadI18next };
package/dist/index.js.map CHANGED
@@ -1 +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"}
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,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "كثرة الطلبات من عنوان البريد الإلكتروني هذا",
48
48
  "VPN_BLOCKED": "لا يُسمح بالطلبات من اتصالات VPN لهذا الموقع",
49
49
  "PROXY_BLOCKED": "لا يُسمح بالطلبات من خوادم البروكسي لهذا الموقع",
50
+ "TOO_MANY_LOCALHOST": "عدد كبير جدًا من طلبات CAPTCHA من localhost لمفتاح الموقع هذا",
50
51
  "TOR_BLOCKED": "لا يُسمح بالطلبات من عقد خروج Tor لهذا الموقع",
51
52
  "ABUSER_BLOCKED": "لا يُسمح بالطلبات من الشبكات المُبلَّغ عنها بسبب إساءة الاستخدام لهذا الموقع",
52
53
  "DATACENTER_BLOCKED": "لا يُسمح بالطلبات من عناوين IP لمراكز البيانات لهذا الموقع",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Bu e-poçt ünvanından çox sayda göndəriş",
48
48
  "VPN_BLOCKED": "Bu sayt üçün VPN bağlantılarından sorğulara icazə verilmir",
49
49
  "PROXY_BLOCKED": "Bu sayt üçün proksi serverlərdən sorğulara icazə verilmir",
50
+ "TOO_MANY_LOCALHOST": "Bu sayt açarı üçün localhost-dan həddindən artıq çox CAPTCHA sorğusu",
50
51
  "TOR_BLOCKED": "Bu sayt üçün Tor çıxış qovşaqlarından sorğulara icazə verilmir",
51
52
  "ABUSER_BLOCKED": "Bu sayt üçün sui-istifadə üçün işarələnmiş şəbəkələrdən sorğulara icazə verilmir",
52
53
  "DATACENTER_BLOCKED": "Bu sayt üçün məlumat mərkəzi IP ünvanlarından sorğulara icazə verilmir",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Příliš mnoho odeslání z této e-mailové adresy",
48
48
  "VPN_BLOCKED": "Požadavky z VPN připojení nejsou pro tento web povoleny",
49
49
  "PROXY_BLOCKED": "Požadavky z proxy serverů nejsou pro tento web povoleny",
50
+ "TOO_MANY_LOCALHOST": "Příliš mnoho požadavků CAPTCHA z localhost pro tento klíč webu",
50
51
  "TOR_BLOCKED": "Požadavky z výstupních uzlů Tor nejsou pro tento web povoleny",
51
52
  "ABUSER_BLOCKED": "Požadavky ze sítí označených za zneužívající nejsou pro tento web povoleny",
52
53
  "DATACENTER_BLOCKED": "Požadavky z IP adres datových center nejsou pro tento web povoleny",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Zu viele Einsendungen von dieser E-Mail-Adresse",
48
48
  "VPN_BLOCKED": "Anfragen über VPN-Verbindungen sind für diese Website nicht erlaubt",
49
49
  "PROXY_BLOCKED": "Anfragen über Proxy-Server sind für diese Website nicht erlaubt",
50
+ "TOO_MANY_LOCALHOST": "Zu viele CAPTCHA-Anfragen von localhost für diesen Site-Key",
50
51
  "TOR_BLOCKED": "Anfragen über Tor-Exit-Knoten sind für diese Website nicht erlaubt",
51
52
  "ABUSER_BLOCKED": "Anfragen von als missbräuchlich markierten Netzwerken sind für diese Website nicht erlaubt",
52
53
  "DATACENTER_BLOCKED": "Anfragen von Rechenzentrum-IP-Adressen sind für diese Website nicht erlaubt",
@@ -34,6 +34,7 @@
34
34
  "SPAM_EMAIL_COUNT_EXCEEDED": "Πάρα πολλές υποβολές από αυτή τη διεύθυνση email",
35
35
  "VPN_BLOCKED": "Αιτήματα από συνδέσεις VPN δεν επιτρέπονται για αυτόν τον ιστότοπο",
36
36
  "PROXY_BLOCKED": "Αιτήματα από διακομιστές proxy δεν επιτρέπονται για αυτόν τον ιστότοπο",
37
+ "TOO_MANY_LOCALHOST": "Πάρα πολλά αιτήματα CAPTCHA από το localhost για αυτό το κλειδί ιστότοπου",
37
38
  "TOR_BLOCKED": "Αιτήματα από κόμβους εξόδου Tor δεν επιτρέπονται για αυτόν τον ιστότοπο",
38
39
  "ABUSER_BLOCKED": "Αιτήματα από δίκτυα που έχουν επισημανθεί για κατάχρηση δεν επιτρέπονται για αυτόν τον ιστότοπο",
39
40
  "DATACENTER_BLOCKED": "Αιτήματα από διευθύνσεις IP κέντρων δεδομένων δεν επιτρέπονται για αυτόν τον ιστότοπο",
@@ -137,6 +137,7 @@ var API = {
137
137
  "SPAM_EMAIL_COUNT_EXCEEDED": "Too many submissions from this email address",
138
138
  "VPN_BLOCKED": "Requests from VPN connections are not allowed for this site",
139
139
  "PROXY_BLOCKED": "Requests from proxy servers are not allowed for this site",
140
+ "TOO_MANY_LOCALHOST": "Too many CAPTCHA requests from localhost for this site key",
140
141
  "TOR_BLOCKED": "Requests from Tor exit nodes are not allowed for this site",
141
142
  "ABUSER_BLOCKED": "Requests from networks flagged for abuse are not allowed for this site",
142
143
  "DATACENTER_BLOCKED": "Requests from datacenter IP addresses are not allowed for this site",
@@ -139,6 +139,7 @@
139
139
  "SPAM_EMAIL_COUNT_EXCEEDED": "Too many submissions from this email address",
140
140
  "VPN_BLOCKED": "Requests from VPN connections are not allowed for this site",
141
141
  "PROXY_BLOCKED": "Requests from proxy servers are not allowed for this site",
142
+ "TOO_MANY_LOCALHOST": "Too many CAPTCHA requests from localhost for this site key",
142
143
  "TOR_BLOCKED": "Requests from Tor exit nodes are not allowed for this site",
143
144
  "ABUSER_BLOCKED": "Requests from networks flagged for abuse are not allowed for this site",
144
145
  "DATACENTER_BLOCKED": "Requests from datacenter IP addresses are not allowed for this site",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Demasiados envíos desde esta dirección de correo electrónico",
48
48
  "VPN_BLOCKED": "Las solicitudes desde conexiones VPN no están permitidas para este sitio",
49
49
  "PROXY_BLOCKED": "Las solicitudes desde servidores proxy no están permitidas para este sitio",
50
+ "TOO_MANY_LOCALHOST": "Demasiadas solicitudes de CAPTCHA desde localhost para esta clave de sitio",
50
51
  "TOR_BLOCKED": "Las solicitudes desde nodos de salida Tor no están permitidas para este sitio",
51
52
  "ABUSER_BLOCKED": "Las solicitudes desde redes marcadas por abuso no están permitidas para este sitio",
52
53
  "DATACENTER_BLOCKED": "Las solicitudes desde direcciones IP de centros de datos no están permitidas para este sitio",
@@ -53,6 +53,7 @@
53
53
  "SPAM_EMAIL_COUNT_EXCEEDED": "Liian monta lähetystä tästä sähköpostiosoitteesta",
54
54
  "VPN_BLOCKED": "VPN-yhteyksien pyynnöt eivät ole sallittuja tälle sivustolle",
55
55
  "PROXY_BLOCKED": "Välityspalvelimien pyynnöt eivät ole sallittuja tälle sivustolle",
56
+ "TOO_MANY_LOCALHOST": "Liian monta CAPTCHA-pyyntöä localhostista tälle sivustoavaimelle",
56
57
  "TOR_BLOCKED": "Tor-poistumissolmujen pyynnöt eivät ole sallittuja tälle sivustolle",
57
58
  "ABUSER_BLOCKED": "Väärinkäytöstä merkittyjen verkkojen pyynnöt eivät ole sallittuja tälle sivustolle",
58
59
  "DATACENTER_BLOCKED": "Datakeskusten IP-osoitteiden pyynnöt eivät ole sallittuja tälle sivustolle",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Trop de soumissions depuis cette adresse e-mail",
48
48
  "VPN_BLOCKED": "Les requêtes provenant de connexions VPN ne sont pas autorisées pour ce site",
49
49
  "PROXY_BLOCKED": "Les requêtes provenant de serveurs proxy ne sont pas autorisées pour ce site",
50
+ "TOO_MANY_LOCALHOST": "Trop de requêtes CAPTCHA provenant de localhost pour cette clé de site",
50
51
  "TOR_BLOCKED": "Les requêtes provenant de nœuds de sortie Tor ne sont pas autorisées pour ce site",
51
52
  "ABUSER_BLOCKED": "Les requêtes provenant de réseaux signalés pour abus ne sont pas autorisées pour ce site",
52
53
  "DATACENTER_BLOCKED": "Les requêtes provenant d'adresses IP de centres de données ne sont pas autorisées pour ce site",
@@ -346,6 +346,7 @@
346
346
  "SPAM_EMAIL_COUNT_EXCEEDED": "इस ईमेल पते से बहुत अधिक सबमिशन",
347
347
  "VPN_BLOCKED": "इस साइट के लिए VPN कनेक्शन से अनुरोध की अनुमति नहीं है",
348
348
  "PROXY_BLOCKED": "इस साइट के लिए प्रॉक्सी सर्वर से अनुरोध की अनुमति नहीं है",
349
+ "TOO_MANY_LOCALHOST": "इस साइट कुंजी के लिए localhost से बहुत अधिक CAPTCHA अनुरोध",
349
350
  "TOR_BLOCKED": "इस साइट के लिए Tor एक्ज़िट नोड्स से अनुरोध की अनुमति नहीं है",
350
351
  "ABUSER_BLOCKED": "दुरुपयोग के लिए चिह्नित नेटवर्क से अनुरोध इस साइट के लिए अनुमत नहीं हैं",
351
352
  "DATACENTER_BLOCKED": "इस साइट के लिए डेटासेंटर IP पतों से अनुरोध की अनुमति नहीं है",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Túl sok beküldés erről az e-mail címről",
48
48
  "VPN_BLOCKED": "VPN-kapcsolatokról érkező kérések nem engedélyezettek ezen az oldalon",
49
49
  "PROXY_BLOCKED": "Proxy szerverekről érkező kérések nem engedélyezettek ezen az oldalon",
50
+ "TOO_MANY_LOCALHOST": "Túl sok CAPTCHA-kérés a localhostról ehhez a webhelykulcshoz",
50
51
  "TOR_BLOCKED": "Tor kilépési csomópontokról érkező kérések nem engedélyezettek ezen az oldalon",
51
52
  "ABUSER_BLOCKED": "Visszaélésért megjelölt hálózatokról érkező kérések nem engedélyezettek ezen az oldalon",
52
53
  "DATACENTER_BLOCKED": "Adatközponti IP-címekről érkező kérések nem engedélyezettek ezen az oldalon",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Terlalu banyak pengiriman dari alamat email ini",
48
48
  "VPN_BLOCKED": "Permintaan dari koneksi VPN tidak diizinkan untuk situs ini",
49
49
  "PROXY_BLOCKED": "Permintaan dari server proxy tidak diizinkan untuk situs ini",
50
+ "TOO_MANY_LOCALHOST": "Terlalu banyak permintaan CAPTCHA dari localhost untuk kunci situs ini",
50
51
  "TOR_BLOCKED": "Permintaan dari node keluar Tor tidak diizinkan untuk situs ini",
51
52
  "ABUSER_BLOCKED": "Permintaan dari jaringan yang ditandai karena penyalahgunaan tidak diizinkan untuk situs ini",
52
53
  "DATACENTER_BLOCKED": "Permintaan dari alamat IP pusat data tidak diizinkan untuk situs ini",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Troppi invii da questo indirizzo email",
48
48
  "VPN_BLOCKED": "Le richieste da connessioni VPN non sono consentite per questo sito",
49
49
  "PROXY_BLOCKED": "Le richieste da server proxy non sono consentite per questo sito",
50
+ "TOO_MANY_LOCALHOST": "Troppe richieste CAPTCHA da localhost per questa chiave del sito",
50
51
  "TOR_BLOCKED": "Le richieste da nodi di uscita Tor non sono consentite per questo sito",
51
52
  "ABUSER_BLOCKED": "Le richieste da reti segnalate per abuso non sono consentite per questo sito",
52
53
  "DATACENTER_BLOCKED": "Le richieste da indirizzi IP di data center non sono consentite per questo sito",
@@ -346,6 +346,7 @@
346
346
  "SPAM_EMAIL_COUNT_EXCEEDED": "このメールアドレスからの送信が多すぎます",
347
347
  "VPN_BLOCKED": "このサイトではVPN接続からのリクエストは許可されていません",
348
348
  "PROXY_BLOCKED": "このサイトではプロキシサーバーからのリクエストは許可されていません",
349
+ "TOO_MANY_LOCALHOST": "このサイトキーに対する localhost からの CAPTCHA リクエストが多すぎます",
349
350
  "TOR_BLOCKED": "このサイトではTor出口ノードからのリクエストは許可されていません",
350
351
  "ABUSER_BLOCKED": "このサイトでは不正行為としてフラグが付けられたネットワークからのリクエストは許可されていません",
351
352
  "DATACENTER_BLOCKED": "このサイトではデータセンターのIPアドレスからのリクエストは許可されていません",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Kakehen kiriman saka alamat email iki",
48
48
  "VPN_BLOCKED": "Panjaluk saka sambungan VPN ora diidini kanggo situs iki",
49
49
  "PROXY_BLOCKED": "Panjaluk saka server proxy ora diidini kanggo situs iki",
50
+ "TOO_MANY_LOCALHOST": "Kakehan panjaluk CAPTCHA saka localhost kanggo kunci situs iki",
50
51
  "TOR_BLOCKED": "Panjaluk saka simpul metu Tor ora diidini kanggo situs iki",
51
52
  "ABUSER_BLOCKED": "Panjaluk saka jaringan sing ditandhani amarga penyalahgunaan ora diidini kanggo situs iki",
52
53
  "DATACENTER_BLOCKED": "Panjaluk saka alamat IP pusat data ora diidini kanggo situs iki",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "이 이메일 주소에서 너무 많은 제출이 있었습니다",
48
48
  "VPN_BLOCKED": "이 사이트에서는 VPN 연결의 요청이 허용되지 않습니다",
49
49
  "PROXY_BLOCKED": "이 사이트에서는 프록시 서버의 요청이 허용되지 않습니다",
50
+ "TOO_MANY_LOCALHOST": "이 사이트 키에 대한 localhost의 CAPTCHA 요청이 너무 많습니다",
50
51
  "TOR_BLOCKED": "이 사이트에서는 Tor 출구 노드의 요청이 허용되지 않습니다",
51
52
  "ABUSER_BLOCKED": "악용으로 표시된 네트워크의 요청은 이 사이트에서 허용되지 않습니다",
52
53
  "DATACENTER_BLOCKED": "이 사이트에서는 데이터센터 IP 주소의 요청이 허용되지 않습니다",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "ഈ ഇമെയിൽ വിലാസത്തിൽ നിന്ന് വളരെയധികം സമർപ്പണങ്ങൾ",
48
48
  "VPN_BLOCKED": "ഈ സൈറ്റിന് VPN കണക്ഷനുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ അനുവദനീയമല്ല",
49
49
  "PROXY_BLOCKED": "ഈ സൈറ്റിന് പ്രോക്സി സെർവറുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ അനുവദനീയമല്ല",
50
+ "TOO_MANY_LOCALHOST": "ഈ സൈറ്റ് കീയ്ക്കായി localhost-ൽ നിന്ന് വളരെയധികം CAPTCHA അഭ്യർത്ഥനകൾ",
50
51
  "TOR_BLOCKED": "ഈ സൈറ്റിന് Tor എക്സിറ്റ് നോഡുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ അനുവദനീയമല്ല",
51
52
  "ABUSER_BLOCKED": "ദുരുപയോഗത്തിന് ഫ്ലാഗ് ചെയ്ത നെറ്റ്വർക്കുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ ഈ സൈറ്റിന് അനുവദനീയമല്ല",
52
53
  "DATACENTER_BLOCKED": "ഈ സൈറ്റിന് ഡാറ്റാസെന്റർ IP വിലാസങ്ങളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ അനുവദനീയമല്ല",
@@ -346,6 +346,7 @@
346
346
  "SPAM_EMAIL_COUNT_EXCEEDED": "Terlalu banyak penghantaran dari alamat e-mel ini",
347
347
  "VPN_BLOCKED": "Permintaan daripada sambungan VPN tidak dibenarkan untuk laman ini",
348
348
  "PROXY_BLOCKED": "Permintaan daripada pelayan proksi tidak dibenarkan untuk laman ini",
349
+ "TOO_MANY_LOCALHOST": "Terlalu banyak permintaan CAPTCHA dari localhost untuk kunci tapak ini",
349
350
  "TOR_BLOCKED": "Permintaan daripada nod keluar Tor tidak dibenarkan untuk laman ini",
350
351
  "ABUSER_BLOCKED": "Permintaan daripada rangkaian yang ditandakan kerana penyalahgunaan tidak dibenarkan untuk laman ini",
351
352
  "DATACENTER_BLOCKED": "Permintaan daripada alamat IP pusat data tidak dibenarkan untuk laman ini",
@@ -346,6 +346,7 @@
346
346
  "SPAM_EMAIL_COUNT_EXCEEDED": "Te veel inzendingen vanaf dit e-mailadres",
347
347
  "VPN_BLOCKED": "Verzoeken via VPN-verbindingen zijn niet toegestaan voor deze site",
348
348
  "PROXY_BLOCKED": "Verzoeken via proxyservers zijn niet toegestaan voor deze site",
349
+ "TOO_MANY_LOCALHOST": "Te veel CAPTCHA-verzoeken vanaf localhost voor deze sitesleutel",
349
350
  "TOR_BLOCKED": "Verzoeken via Tor-exitnodes zijn niet toegestaan voor deze site",
350
351
  "ABUSER_BLOCKED": "Verzoeken van netwerken die zijn gemarkeerd voor misbruik zijn niet toegestaan voor deze site",
351
352
  "DATACENTER_BLOCKED": "Verzoeken van datacenter-IP-adressen zijn niet toegestaan voor deze site",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "For mange innsendinger fra denne e-postadressen",
48
48
  "VPN_BLOCKED": "Forespørsler fra VPN-tilkoblinger er ikke tillatt for dette nettstedet",
49
49
  "PROXY_BLOCKED": "Forespørsler fra proxyservere er ikke tillatt for dette nettstedet",
50
+ "TOO_MANY_LOCALHOST": "For mange CAPTCHA-førespurnader frå localhost for denne nettstadsnøkkelen",
50
51
  "TOR_BLOCKED": "Forespørsler fra Tor-utgangsnoder er ikke tillatt for dette nettstedet",
51
52
  "ABUSER_BLOCKED": "Forespørsler fra nettverk flagget for misbruk er ikke tillatt for dette nettstedet",
52
53
  "DATACENTER_BLOCKED": "Forespørsler fra datasenter-IP-adresser er ikke tillatt for dette nettstedet",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Zbyt wiele zgłoszeń z tego adresu e-mail",
48
48
  "VPN_BLOCKED": "Żądania z połączeń VPN nie są dozwolone dla tej strony",
49
49
  "PROXY_BLOCKED": "Żądania z serwerów proxy nie są dozwolone dla tej strony",
50
+ "TOO_MANY_LOCALHOST": "Zbyt wiele żądań CAPTCHA z localhost dla tego klucza witryny",
50
51
  "TOR_BLOCKED": "Żądania z węzłów wyjściowych Tor nie są dozwolone dla tej strony",
51
52
  "ABUSER_BLOCKED": "Żądania z sieci oznaczonych za nadużycia nie są dozwolone dla tej strony",
52
53
  "DATACENTER_BLOCKED": "Żądania z adresów IP centrów danych nie są dozwolone dla tej strony",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Demasiados envios deste endereço de e-mail",
48
48
  "VPN_BLOCKED": "Pedidos a partir de ligações VPN não são permitidos para este site",
49
49
  "PROXY_BLOCKED": "Pedidos a partir de servidores proxy não são permitidos para este site",
50
+ "TOO_MANY_LOCALHOST": "Demasiados pedidos de CAPTCHA a partir de localhost para esta chave de site",
50
51
  "TOR_BLOCKED": "Pedidos a partir de nós de saída Tor não são permitidos para este site",
51
52
  "ABUSER_BLOCKED": "Pedidos de redes sinalizadas por abuso não são permitidos para este site",
52
53
  "DATACENTER_BLOCKED": "Pedidos de endereços IP de centros de dados não são permitidos para este site",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Muitos envios deste endereço de e-mail",
48
48
  "VPN_BLOCKED": "Solicitações de conexões VPN não são permitidas para este site",
49
49
  "PROXY_BLOCKED": "Solicitações de servidores proxy não são permitidas para este site",
50
+ "TOO_MANY_LOCALHOST": "Muitas solicitações de CAPTCHA do localhost para esta chave de site",
50
51
  "TOR_BLOCKED": "Solicitações de nós de saída Tor não são permitidas para este site",
51
52
  "ABUSER_BLOCKED": "Solicitações de redes sinalizadas por abuso não são permitidas para este site",
52
53
  "DATACENTER_BLOCKED": "Solicitações de endereços IP de datacenters não são permitidas para este site",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Prea multe trimiteri de la această adresă de e-mail",
48
48
  "VPN_BLOCKED": "Solicitările de la conexiuni VPN nu sunt permise pentru acest site",
49
49
  "PROXY_BLOCKED": "Solicitările de la servere proxy nu sunt permise pentru acest site",
50
+ "TOO_MANY_LOCALHOST": "Prea multe solicitări CAPTCHA de la localhost pentru această cheie de site",
50
51
  "TOR_BLOCKED": "Solicitările de la noduri de ieșire Tor nu sunt permise pentru acest site",
51
52
  "ABUSER_BLOCKED": "Solicitările de la rețele semnalate pentru abuz nu sunt permise pentru acest site",
52
53
  "DATACENTER_BLOCKED": "Solicitările de la adrese IP de centre de date nu sunt permise pentru acest site",
@@ -47,6 +47,7 @@
47
47
  "SPAM_EMAIL_COUNT_EXCEEDED": "Слишком много отправок с этого адреса электронной почты",
48
48
  "VPN_BLOCKED": "Запросы через VPN-подключения не разрешены для этого сайта",
49
49
  "PROXY_BLOCKED": "Запросы через прокси-серверы не разрешены для этого сайта",
50
+ "TOO_MANY_LOCALHOST": "Слишком много запросов CAPTCHA с localhost для этого ключа сайта",
50
51
  "TOR_BLOCKED": "Запросы через выходные узлы Tor не разрешены для этого сайта",
51
52
  "ABUSER_BLOCKED": "Запросы из сетей, отмеченных за злоупотребления, не разрешены для этого сайта",
52
53
  "DATACENTER_BLOCKED": "Запросы с IP-адресов центров обработки данных не разрешены для этого сайта",