@prosopo/locale 3.4.3 → 3.6.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.
- package/.turbo/turbo-build$colon$cjs.log +15 -13
- package/.turbo/turbo-build$colon$tsc.log +8 -5
- package/.turbo/turbo-build.log +17 -15
- package/CHANGELOG.md +74 -0
- package/dist/cjs/i18SharedOptions.cjs +2 -2
- package/dist/cjs/i18nBackend.cjs +1 -1
- package/dist/cjs/i18nFrontend.cjs +167 -53
- package/dist/cjs/i18nMiddleware.cjs +5 -2
- package/dist/cjs/index.cjs +5 -4
- package/dist/cjs/locales/en/translation.cjs +1 -0
- package/dist/cjs/translationKey.cjs +2 -3
- package/dist/cjs/translations.cjs +4 -5
- package/dist/cjs/translator.cjs +29 -0
- package/dist/i18SharedOptions.d.ts +2 -2
- package/dist/i18SharedOptions.js +3 -3
- package/dist/i18SharedOptions.js.map +1 -1
- package/dist/i18nBackend.js +1 -1
- package/dist/i18nFrontend.d.ts +2 -2
- package/dist/i18nFrontend.d.ts.map +1 -1
- package/dist/i18nFrontend.js +167 -47
- package/dist/i18nFrontend.js.map +1 -1
- package/dist/i18nMiddleware.d.ts.map +1 -1
- package/dist/i18nMiddleware.js +3 -1
- package/dist/i18nMiddleware.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/loadI18next.d.ts +2 -3
- package/dist/loadI18next.d.ts.map +1 -1
- package/dist/loadI18next.js.map +1 -1
- package/dist/locales/ar/translation.json +1 -0
- package/dist/locales/az/translation.json +1 -0
- package/dist/locales/cs/translation.json +1 -0
- package/dist/locales/de/translation.json +1 -0
- package/dist/locales/el/translation.json +1 -0
- package/dist/locales/en/translation.js +1 -0
- package/dist/locales/en/translation.json +1 -0
- package/dist/locales/es/translation.json +1 -0
- package/dist/locales/fi/translation.json +1 -0
- package/dist/locales/fr/translation.json +1 -0
- package/dist/locales/hi/translation.json +1 -0
- package/dist/locales/hu/translation.json +1 -0
- package/dist/locales/id/translation.json +1 -0
- package/dist/locales/it/translation.json +1 -0
- package/dist/locales/ja/translation.json +1 -0
- package/dist/locales/jv/translation.json +1 -0
- package/dist/locales/ko/translation.json +1 -0
- package/dist/locales/ml/translation.json +1 -0
- package/dist/locales/ms/translation.json +1 -0
- package/dist/locales/nl/translation.json +1 -0
- package/dist/locales/no/translation.json +1 -0
- package/dist/locales/pl/translation.json +1 -0
- package/dist/locales/pt/translation.json +1 -0
- package/dist/locales/pt-BR/translation.json +1 -0
- package/dist/locales/ro/translation.json +1 -0
- package/dist/locales/ru/translation.json +1 -0
- package/dist/locales/sr/translation.json +1 -0
- package/dist/locales/sv/translation.json +1 -0
- package/dist/locales/th/translation.json +1 -0
- package/dist/locales/tr/translation.json +1 -0
- package/dist/locales/uk/translation.json +1 -0
- package/dist/locales/vi/translation.json +1 -0
- package/dist/locales/zh-CN/translation.json +1 -0
- package/dist/tests/i18nFrontend.unit.test.js +218 -173
- package/dist/tests/i18nFrontend.unit.test.js.map +1 -1
- package/dist/tests/i18nMiddleware.unit.test.js +11 -2
- package/dist/tests/i18nMiddleware.unit.test.js.map +1 -1
- package/dist/tests/loadI18next.unit.test.js.map +1 -1
- package/dist/tests/locale.test-d.js +27 -20
- package/dist/tests/locale.test-d.js.map +1 -1
- package/dist/tests/translationKey.unit.test.js +11 -33
- package/dist/tests/translationKey.unit.test.js.map +1 -1
- package/dist/tests/translations.unit.test.js +12 -22
- package/dist/tests/translations.unit.test.js.map +1 -1
- package/dist/tests/translator.unit.test.d.ts +2 -0
- package/dist/tests/translator.unit.test.d.ts.map +1 -0
- package/dist/tests/translator.unit.test.js +134 -0
- package/dist/tests/translator.unit.test.js.map +1 -0
- package/dist/translationKey.d.ts +2 -3
- package/dist/translationKey.d.ts.map +1 -1
- package/dist/translationKey.js +2 -3
- package/dist/translationKey.js.map +1 -1
- package/dist/translations.d.ts +3 -2
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +3 -3
- package/dist/translations.js.map +1 -1
- package/dist/translator.d.ts +9 -0
- package/dist/translator.d.ts.map +1 -0
- package/dist/translator.js +29 -0
- package/dist/translator.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +4 -9
- package/src/i18SharedOptions.ts +3 -3
- package/src/i18nFrontend.ts +240 -78
- package/src/i18nMiddleware.ts +6 -1
- package/src/index.ts +11 -4
- package/src/loadI18next.ts +8 -9
- package/src/locales/ar/translation.json +1 -0
- package/src/locales/az/translation.json +1 -0
- package/src/locales/cs/translation.json +1 -0
- package/src/locales/de/translation.json +1 -0
- package/src/locales/el/translation.json +1 -0
- package/src/locales/en/translation.json +1 -0
- package/src/locales/es/translation.json +1 -0
- package/src/locales/fi/translation.json +1 -0
- package/src/locales/fr/translation.json +1 -0
- package/src/locales/hi/translation.json +1 -0
- package/src/locales/hu/translation.json +1 -0
- package/src/locales/id/translation.json +1 -0
- package/src/locales/it/translation.json +1 -0
- package/src/locales/ja/translation.json +1 -0
- package/src/locales/jv/translation.json +1 -0
- package/src/locales/ko/translation.json +1 -0
- package/src/locales/ml/translation.json +1 -0
- package/src/locales/ms/translation.json +1 -0
- package/src/locales/nl/translation.json +1 -0
- package/src/locales/no/translation.json +1 -0
- package/src/locales/pl/translation.json +1 -0
- package/src/locales/pt/translation.json +1 -0
- package/src/locales/pt-BR/translation.json +1 -0
- package/src/locales/ro/translation.json +1 -0
- package/src/locales/ru/translation.json +1 -0
- package/src/locales/sr/translation.json +1 -0
- package/src/locales/sv/translation.json +1 -0
- package/src/locales/th/translation.json +1 -0
- package/src/locales/tr/translation.json +1 -0
- package/src/locales/uk/translation.json +1 -0
- package/src/locales/vi/translation.json +1 -0
- package/src/locales/zh-CN/translation.json +1 -0
- package/src/tests/i18nFrontend.unit.test.ts +310 -219
- package/src/tests/i18nMiddleware.unit.test.ts +21 -2
- package/src/tests/loadI18next.unit.test.ts +11 -11
- package/src/tests/locale.test-d.ts +36 -32
- package/src/tests/translationKey.unit.test.ts +12 -38
- package/src/tests/translations.unit.test.ts +18 -31
- package/src/tests/translator.unit.test.ts +213 -0
- package/src/translationKey.ts +10 -9
- package/src/translations.ts +6 -5
- package/src/translator.ts +68 -0
- package/src/types.ts +42 -0
- package/tsconfig.cjs.json +3 -0
- package/tsconfig.json +3 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/useTranslation.cjs +0 -12
- package/dist/tests/useTranslation.unit.test.d.ts +0 -2
- package/dist/tests/useTranslation.unit.test.d.ts.map +0 -1
- package/dist/tests/useTranslation.unit.test.js +0 -81
- package/dist/tests/useTranslation.unit.test.js.map +0 -1
- package/dist/useTranslation.d.ts +0 -7
- package/dist/useTranslation.d.ts.map +0 -1
- package/dist/useTranslation.js +0 -11
- package/dist/useTranslation.js.map +0 -1
- package/src/tests/useTranslation.unit.test.ts +0 -134
- package/src/useTranslation.ts +0 -31
package/dist/i18nFrontend.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare function initializeI18n(i18nLoadedCallback?: (value:
|
|
1
|
+
import type { Ti18n } from "./types.js";
|
|
2
|
+
export declare function initializeI18n(i18nLoadedCallback?: (value: Ti18n) => void, lng?: string): Ti18n;
|
|
3
3
|
export default initializeI18n;
|
|
4
4
|
//# sourceMappingURL=i18nFrontend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18nFrontend.d.ts","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18nFrontend.d.ts","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAa,KAAK,EAAoB,MAAM,YAAY,CAAC;AAsOrE,wBAAgB,cAAc,CAC7B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC3C,GAAG,CAAC,EAAE,MAAM,GACV,KAAK,CAeP;AAED,eAAe,cAAc,CAAC"}
|
package/dist/i18nFrontend.js
CHANGED
|
@@ -1,57 +1,177 @@
|
|
|
1
1
|
import "./_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { i18nSharedOptions } from "./i18SharedOptions.js";
|
|
3
|
-
import {
|
|
4
|
-
import i18n from "i18next";
|
|
5
|
-
import I18nextBrowserLanguageDetector from "i18next-browser-languagedetector";
|
|
6
|
-
import ChainedBackend from "i18next-chained-backend";
|
|
7
|
-
import HttpBackend from "i18next-http-backend";
|
|
8
|
-
import resourcesToBackend from "i18next-resources-to-backend";
|
|
3
|
+
import { flatten } from "@prosopo/util";
|
|
9
4
|
//#region src/i18nFrontend.ts
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
var NAMESPACE = "translation";
|
|
6
|
+
var FALLBACK_LANGUAGE = i18nSharedOptions.fallbackLng;
|
|
7
|
+
var STORAGE_KEY = "i18nextLng";
|
|
8
|
+
var COOKIE_KEY = "i18next";
|
|
9
|
+
var COOKIE_MAX_AGE_SECONDS = 10080 * 60;
|
|
10
|
+
/**
|
|
11
|
+
* How long to wait for a catalogue before rendering untranslated.
|
|
12
|
+
*
|
|
13
|
+
* A widget with no text is worse than a widget in English: every caller
|
|
14
|
+
* supplies a `defaultValue`, and `t()` falls back to the key otherwise, so a
|
|
15
|
+
* catalogue that never arrives degrades rather than blocks.
|
|
16
|
+
*/
|
|
17
|
+
var CATALOGUE_FETCH_TIMEOUT_MS = 1e4;
|
|
18
|
+
var SUPPORTED_LANGUAGES = i18nSharedOptions.supportedLngs;
|
|
19
|
+
/**
|
|
20
|
+
* Locale JSON sits next to the bundle that asked for it. The widget is embedded
|
|
21
|
+
* by third parties and cannot know a base URL, but it does know where its own
|
|
22
|
+
* module was served from.
|
|
23
|
+
*/
|
|
24
|
+
var catalogueUrl = (language) => {
|
|
25
|
+
const moduleUrl = import.meta.url;
|
|
26
|
+
return `${moduleUrl.slice(0, moduleUrl.lastIndexOf("/"))}/locales/${language}/${NAMESPACE}.json`;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* `en-GB` is not in the catalogue list but `en` is, so a regional tag resolves
|
|
30
|
+
* to its base language rather than falling all the way back to English.
|
|
31
|
+
*/
|
|
32
|
+
var resolveLanguage = (candidate) => {
|
|
33
|
+
if (!candidate) return;
|
|
34
|
+
if (SUPPORTED_LANGUAGES.includes(candidate)) return candidate;
|
|
35
|
+
const base = candidate.split("-")[0];
|
|
36
|
+
return base && SUPPORTED_LANGUAGES.includes(base) ? base : void 0;
|
|
37
|
+
};
|
|
38
|
+
var readCookie = () => {
|
|
39
|
+
try {
|
|
40
|
+
const match = document.cookie.match(new RegExp(`(?:^|; )${COOKIE_KEY}=([^;]*)`));
|
|
41
|
+
return match?.[1] ? decodeURIComponent(match[1]) : void 0;
|
|
42
|
+
} catch {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var readStorage = () => {
|
|
47
|
+
try {
|
|
48
|
+
return localStorage.getItem(STORAGE_KEY) ?? void 0;
|
|
49
|
+
} catch {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var navigatorLanguages = () => {
|
|
54
|
+
try {
|
|
55
|
+
return navigator.languages?.length ? navigator.languages : [navigator.language];
|
|
56
|
+
} catch {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Cookie and localStorage are both written, matching what the widget did when
|
|
62
|
+
* i18next-browser-languagedetector handled this, so a visitor's choice survives
|
|
63
|
+
* across pages that embed the widget. Either store can throw in a sandboxed
|
|
64
|
+
* iframe or with third-party storage blocked; neither is load-bearing.
|
|
65
|
+
*/
|
|
66
|
+
var cacheLanguage = (language) => {
|
|
67
|
+
try {
|
|
68
|
+
localStorage.setItem(STORAGE_KEY, language);
|
|
69
|
+
} catch {}
|
|
70
|
+
try {
|
|
71
|
+
document.cookie = `${COOKIE_KEY}=${encodeURIComponent(language)};max-age=${COOKIE_MAX_AGE_SECONDS};path=/`;
|
|
72
|
+
} catch {}
|
|
73
|
+
};
|
|
74
|
+
var detectLanguage = () => {
|
|
75
|
+
const candidates = [
|
|
76
|
+
readCookie(),
|
|
77
|
+
readStorage(),
|
|
78
|
+
...navigatorLanguages()
|
|
79
|
+
];
|
|
80
|
+
for (const candidate of candidates) {
|
|
81
|
+
const resolved = resolveLanguage(candidate);
|
|
82
|
+
if (resolved) return resolved;
|
|
83
|
+
}
|
|
84
|
+
return FALLBACK_LANGUAGE;
|
|
85
|
+
};
|
|
86
|
+
var fetchCatalogue = async (language) => {
|
|
87
|
+
const controller = new AbortController();
|
|
88
|
+
const timer = setTimeout(() => controller.abort(), CATALOGUE_FETCH_TIMEOUT_MS);
|
|
89
|
+
try {
|
|
90
|
+
const response = await fetch(catalogueUrl(language), { signal: controller.signal });
|
|
91
|
+
if (!response.ok) return {};
|
|
92
|
+
const body = await response.json();
|
|
93
|
+
return typeof body === "object" && body !== null ? flatten(body) : {};
|
|
94
|
+
} catch {
|
|
95
|
+
return {};
|
|
96
|
+
} finally {
|
|
97
|
+
clearTimeout(timer);
|
|
20
98
|
}
|
|
21
99
|
};
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
100
|
+
var interpolate = (template, options) => options ? template.replace(/\{\{(\w+)\}\}/g, (placeholder, name) => name in options ? String(options[name]) : placeholder) : template;
|
|
101
|
+
var createBrowserI18n = (requested) => {
|
|
102
|
+
const catalogues = /* @__PURE__ */ new Map();
|
|
103
|
+
const listeners = /* @__PURE__ */ new Map();
|
|
104
|
+
let language = resolveLanguage(requested) ?? detectLanguage();
|
|
105
|
+
let initialised = false;
|
|
106
|
+
const emit = (event) => {
|
|
107
|
+
for (const listener of listeners.get(event) ?? []) listener();
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* The fallback catalogue is fetched alongside the active one so a key
|
|
111
|
+
* missing from a translation still renders English rather than its key —
|
|
112
|
+
* the same key-level fallback i18next gave us via `fallbackLng`.
|
|
113
|
+
*/
|
|
114
|
+
const loadCatalogues = async (target) => {
|
|
115
|
+
const wanted = [.../* @__PURE__ */ new Set([target, FALLBACK_LANGUAGE])].filter((candidate) => !catalogues.has(candidate));
|
|
116
|
+
await Promise.all(wanted.map(async (candidate) => {
|
|
117
|
+
catalogues.set(candidate, await fetchCatalogue(candidate));
|
|
118
|
+
}));
|
|
119
|
+
};
|
|
120
|
+
const lookup = (candidate, key) => catalogues.get(candidate)?.[key];
|
|
121
|
+
cacheLanguage(language);
|
|
122
|
+
const loading = loadCatalogues(language).then(() => {
|
|
123
|
+
initialised = true;
|
|
124
|
+
emit("initialized");
|
|
125
|
+
emit("loaded");
|
|
126
|
+
});
|
|
127
|
+
const instance = {
|
|
128
|
+
get language() {
|
|
129
|
+
return language;
|
|
130
|
+
},
|
|
131
|
+
get isInitialized() {
|
|
132
|
+
return initialised;
|
|
133
|
+
},
|
|
134
|
+
t: (key, options) => interpolate(lookup(language, key) ?? lookup(FALLBACK_LANGUAGE, key) ?? options?.defaultValue ?? key, options),
|
|
135
|
+
hasLoadedNamespace: (namespace) => namespace === NAMESPACE && catalogues.has(language),
|
|
136
|
+
changeLanguage: async (next) => {
|
|
137
|
+
const resolved = resolveLanguage(next) ?? FALLBACK_LANGUAGE;
|
|
138
|
+
if (resolved !== language) {
|
|
139
|
+
language = resolved;
|
|
140
|
+
cacheLanguage(resolved);
|
|
141
|
+
await loadCatalogues(resolved);
|
|
142
|
+
emit("loaded");
|
|
143
|
+
emit("languageChanged");
|
|
144
|
+
}
|
|
145
|
+
return instance;
|
|
146
|
+
},
|
|
147
|
+
on: (event, listener) => {
|
|
148
|
+
const existing = listeners.get(event) ?? /* @__PURE__ */ new Set();
|
|
149
|
+
existing.add(listener);
|
|
150
|
+
listeners.set(event, existing);
|
|
151
|
+
},
|
|
152
|
+
off: (event, listener) => {
|
|
153
|
+
listeners.get(event)?.delete(listener);
|
|
154
|
+
},
|
|
155
|
+
ready: async () => {
|
|
156
|
+
await loading;
|
|
157
|
+
return instance;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
return instance;
|
|
25
161
|
};
|
|
162
|
+
/**
|
|
163
|
+
* The widget owns this instance. A host page running its own i18n must not be
|
|
164
|
+
* able to capture the widget's translations, and every widget on the page
|
|
165
|
+
* shares one catalogue fetch.
|
|
166
|
+
*/
|
|
167
|
+
var instance;
|
|
26
168
|
function initializeI18n(i18nLoadedCallback, lng) {
|
|
27
|
-
if (!
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
],
|
|
34
|
-
lookupQuerystring: "lng",
|
|
35
|
-
lookupCookie: "i18next",
|
|
36
|
-
lookupLocalStorage: "i18nextLng",
|
|
37
|
-
caches: ["localStorage", "cookie"]
|
|
38
|
-
})).use(initReactI18next).init({
|
|
39
|
-
...i18nSharedOptions,
|
|
40
|
-
...lng ? { lng } : {},
|
|
41
|
-
backend: {
|
|
42
|
-
backends: [HttpBackend, resourcesToBackend((language, namespace) => import(getLoadPath(language, namespace)))],
|
|
43
|
-
backendOptions: [{ loadPath: getLoadPath("{{lng}}", "{{ns}}") }]
|
|
44
|
-
},
|
|
45
|
-
...reactOptions
|
|
46
|
-
});
|
|
47
|
-
let notified = false;
|
|
48
|
-
i18n.on("loaded", () => {
|
|
49
|
-
if (notified) return;
|
|
50
|
-
notified = true;
|
|
51
|
-
i18nLoadedCallback?.(i18n);
|
|
52
|
-
});
|
|
53
|
-
} else i18nLoadedCallback?.(i18n);
|
|
54
|
-
return i18n;
|
|
169
|
+
if (!instance) {
|
|
170
|
+
const created = createBrowserI18n(lng);
|
|
171
|
+
instance = created;
|
|
172
|
+
created.ready().then(() => i18nLoadedCallback?.(created));
|
|
173
|
+
} else i18nLoadedCallback?.(instance);
|
|
174
|
+
return instance;
|
|
55
175
|
}
|
|
56
176
|
//#endregion
|
|
57
177
|
export { initializeI18n as default, initializeI18n };
|
package/dist/i18nFrontend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18nFrontend.js","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"AAcA,OAAO,
|
|
1
|
+
{"version":3,"file":"i18nFrontend.js","sourceRoot":"","sources":["../src/i18nFrontend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18nMiddleware.d.ts","sourceRoot":"","sources":["../src/i18nMiddleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18nMiddleware.d.ts","sourceRoot":"","sources":["../src/i18nMiddleware.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAMjD,KAAK,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/D,iBAAe,cAAc,CAC5B,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAOpC;AAED,eAAe,cAAc,CAAC"}
|
package/dist/i18nMiddleware.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import loadI18next from "./loadI18next.js";
|
|
2
|
+
import i18n from "i18next";
|
|
2
3
|
import { handle } from "i18next-http-middleware";
|
|
3
4
|
//#region src/i18nMiddleware.ts
|
|
4
5
|
async function i18nMiddleware(options) {
|
|
5
|
-
|
|
6
|
+
await loadI18next(true);
|
|
7
|
+
return handle(i18n, { ...options });
|
|
6
8
|
}
|
|
7
9
|
//#endregion
|
|
8
10
|
export { i18nMiddleware as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18nMiddleware.js","sourceRoot":"","sources":["../src/i18nMiddleware.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAO3C,KAAK,UAAU,cAAc,CAC5B,OAAsB;
|
|
1
|
+
{"version":3,"file":"i18nMiddleware.js","sourceRoot":"","sources":["../src/i18nMiddleware.ts"],"names":[],"mappings":"AAcA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAO3C,KAAK,UAAU,cAAc,CAC5B,OAAsB;IAMtB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,eAAe,cAAc,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { default as i18nMiddleware } from "./i18nMiddleware.js";
|
|
2
2
|
export { default as loadI18next } from "./loadI18next.js";
|
|
3
|
-
export {
|
|
3
|
+
export { isLanguage, LanguageCodes, Languages } from "./translations.js";
|
|
4
|
+
export type { Language } from "./translations.js";
|
|
4
5
|
export { isClientSide } from "./util.js";
|
|
5
|
-
export {
|
|
6
|
+
export { translationKeys } from "./translationKey.js";
|
|
6
7
|
export type { TranslationKey } from "./translationKey.js";
|
|
7
|
-
export {
|
|
8
|
-
export type {
|
|
8
|
+
export { createTranslator } from "./translator.js";
|
|
9
|
+
export type { Translator } from "./translator.js";
|
|
10
|
+
export type { I18nEvent, Ti18n, TranslateFn, TranslateOptions, } from "./types.js";
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,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,EACX,SAAS,EACT,KAAK,EACL,WAAW,EACX,gBAAgB,GAChB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./_virtual/_rolldown/runtime.js";
|
|
2
2
|
import loadI18next from "./loadI18next.js";
|
|
3
3
|
import i18nMiddleware from "./i18nMiddleware.js";
|
|
4
|
-
import {
|
|
4
|
+
import { LanguageCodes, Languages, isLanguage } from "./translations.js";
|
|
5
5
|
import { isClientSide } from "./util.js";
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
export {
|
|
6
|
+
import { translationKeys } from "./translationKey.js";
|
|
7
|
+
import { createTranslator } from "./translator.js";
|
|
8
|
+
export { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, loadI18next, translationKeys };
|
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,
|
|
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,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/loadI18next.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Ti18n } from "./types.js";
|
|
2
2
|
export declare const I18N_LOAD_TIMEOUT_MS = 10000;
|
|
3
|
-
declare function loadI18next(backend: boolean, lng?: string): Promise<
|
|
4
|
-
export type { i18n as Ti18n };
|
|
3
|
+
declare function loadI18next(backend: boolean, lng?: string): Promise<Ti18n>;
|
|
5
4
|
export default loadI18next;
|
|
6
5
|
//# sourceMappingURL=loadI18next.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadI18next.d.ts","sourceRoot":"","sources":["../src/loadI18next.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"loadI18next.d.ts","sourceRoot":"","sources":["../src/loadI18next.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAcxC,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAY3C,iBAAe,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CA6FzE;AAED,eAAe,WAAW,CAAC"}
|
package/dist/loadI18next.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadI18next.js","sourceRoot":"","sources":["../src/loadI18next.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadI18next.js","sourceRoot":"","sources":["../src/loadI18next.ts"],"names":[],"mappings":"AAgBA,IAAI,YAAmB,CAAC;AAYxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE3C,MAAM,iBAAiB,GAAG,KAAK,EAC9B,QAAe,EACf,GAAuB,EACN,EAAE;IACnB,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACtC,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CAAC,OAAgB,EAAE,GAAY;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAQtC,IAAI,OAAO,GAAG,KAAK,CAAC;QAGpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,YAAY,EAAE,CAAC;gBAClB,OAAO,CAAC,YAAY,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACP,MAAM,CACL,IAAI,KAAK,CACR,+BAA+B,oBAAoB,gCAAgC,CACnF,CACD,CAAC;YACH,CAAC;QACF,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAIzB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAKhB,MAAM,IAAI,GAAG,CAAC,QAAe,EAAQ,EAAE;YACtC,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAQ,EAAE;YACzC,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,CAAC;QACf,CAAC,CAAC;QAQF,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,kBAAkB,CAAC;iBACxB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;gBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAGnB,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBAEP,IAAI,CAAC,YAAY,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,mBAAmB,CAAC;iBACzB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;gBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAKnB,YAAY,GAAG,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;wBAC1C,KAAK,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAClE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACT,CAAC;qBAAM,CAAC;oBAMP,KAAK,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC;yBACvC,IAAI,CAAC,IAAI,CAAC;yBACV,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC;YACF,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,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",
|