altcha
Version:
Privacy-first CAPTCHA widget, compliant with global regulations (GDPR/HIPAA/CCPA/LGDP/DPDPA/PIPL) and WCAG accessible. No tracking, self-verifying.
95 lines (94 loc) • 2.26 kB
JavaScript
const o = () => {
};
function g(t, e) {
return t != t ? e == e : t !== e || t !== null && typeof t == "object" || typeof t == "function";
}
let c = !1;
function d(t) {
var e = c;
try {
return c = !0, t();
} finally {
c = e;
}
}
function p(t, e, r) {
if (t == null)
return e(void 0), o;
const i = d(
() => t.subscribe(
e,
// @ts-expect-error
r
)
);
return i.unsubscribe ? () => i.unsubscribe() : i;
}
const s = [];
function T(t, e = o) {
let r = null;
const i = /* @__PURE__ */ new Set();
function a(l) {
if (g(t, l) && (t = l, r)) {
const u = !s.length;
for (const n of i)
n[1](), s.push(n, t);
if (u) {
for (let n = 0; n < s.length; n += 2)
s[n][0](s[n + 1]);
s.length = 0;
}
}
}
function f(l) {
a(l(
/** @type {T} */
t
));
}
function h(l, u = o) {
const n = [l, u];
return i.add(n), i.size === 1 && (r = e(a, f) || o), l(
/** @type {T} */
t
), () => {
i.delete(n), i.size === 0 && r && (r(), r = null);
};
}
return { set: a, update: f, subscribe: h };
}
function b(t) {
let e;
return p(t, (r) => e = r)(), e;
}
globalThis.altchaPlugins = globalThis.altchaPlugins || [];
globalThis.altchaI18n = globalThis.altchaI18n || {
get: (t) => b(globalThis.altchaI18n.store)[t],
set: (t, e) => {
Object.assign(b(globalThis.altchaI18n.store), {
[t]: e
}), globalThis.altchaI18n.store.set(b(globalThis.altchaI18n.store));
},
store: T({})
};
const A = {
ariaLinkLabel: "訪問 Altcha.org",
enterCode: "輸入代碼",
enterCodeAria: "輸入您聽到的代碼。按空格鍵播放音頻。",
error: "驗證失敗。稍後再試。",
expired: "驗證已過期。請重試。",
verificationRequired: "需要驗證!",
footer: '由 <a href="https://altcha.org/" target="_blank" aria-label="訪問 Altcha.org">ALTCHA</a> 保護',
getAudioChallenge: "獲取音頻挑戰",
label: "我不是機器人",
loading: "載入中...",
reload: "重新載入",
verify: "驗證",
verified: "已驗證",
verifying: "正在驗證...",
waitAlert: "正在驗證... 請稍等。"
};
globalThis.altchaI18n.set("zh-tw", A);
export {
A as i18n
};