feat: Replace aCAPTCHA with official ALTCHA (altcha.org) Proof-of-Work web component widget

This commit is contained in:
Richard
2026-07-31 11:39:29 +02:00
parent 6ef74c7cf4
commit 83c782c469
417 changed files with 100543 additions and 317 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -3
View File
@@ -10,10 +10,9 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/arooshbd2024/aCAPTCHA@main/api/captcha-v1.1.js" defer></script>
<title>Schichtplaner — Veranstaltungsschichtpläne</title>
<script type="module" crossorigin src="/assets/index-BocP3KKS.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CR8RYpZS.css">
<script type="module" crossorigin src="/assets/index-CeGSMgG7.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DXNVMwNg.css">
</head>
<body class="bg-paper text-main font-sans antialiased min-h-screen">
<div id="root"></div>
-1
View File
@@ -10,7 +10,6 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/arooshbd2024/aCAPTCHA@main/api/captcha-v1.1.js" defer></script>
<title>Schichtplaner — Veranstaltungsschichtpläne</title>
</head>
<body class="bg-paper text-main font-sans antialiased min-h-screen">
+30
View File
@@ -526,6 +526,15 @@
"vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
"node_modules/altcha": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/altcha/-/altcha-3.2.1.tgz",
"integrity": "sha512-MXsnNmgg3BGJja0DXbflv9Bp29uyGv6wUImaaT1yLxCKOj+x9QBMpi/Vdh6XbP4Uf0PykaeQwl8ivJAvIhoo0A==",
"license": "MIT",
"dependencies": {
"hash-wasm": "^4.12.0"
}
},
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -935,6 +944,21 @@
"url": "https://github.com/sponsors/rawify"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -968,6 +992,12 @@
"node": ">=10.13.0"
}
},
"node_modules/hash-wasm": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.12.0.tgz",
"integrity": "sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==",
"license": "MIT"
},
"node_modules/hasown": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023-2026 Daniel Regeci, BAU Software s.r.o.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+487
View File
@@ -0,0 +1,487 @@
# ALTCHA
ALTCHA is a self-hosted, privacy-first security solution that protects your websites, APIs, and online services from spam and abuse through an innovative proof-of-work mechanism. Unlike traditional CAPTCHAs that depend on intrusive methods like cookies or fingerprinting, ALTCHA delivers robust protection while respecting user privacy.
ALTCHA is fully compliant with:
- **Global privacy regulations**: GDPR, HIPAA, CCPA, PIPEDA/CPPA, LGPD, DPDPA, and PIPL
- **Accessibility standards**: [WCAG 2.2 AA-level](https://altcha.org/docs/v2/compliance/wcag/) and the [European Accessibility Act](https://altcha.org/docs/v2/compliance/european-accessibility-act-2025/)
For more details, visit [altcha.org](https://altcha.org).
## Playground
Want to see it in action? Visit the official ALTCHA Playground to experiment with widget configurations, fine-tune the Proof-of-Work (PoW) settings, and see how the security mechanisms hold up in real-time.
[Open ALTCHA Playground](https://playground.altcha.org)
## Features
- **Frictionless Experience**: Eliminates frustrating visual puzzles by using background **Proof-of-Work (PoW)** for a seamless user journey.
- **Hardware-Resistant Security**: Leverages **Argon2 and Scrypt** memory-bound algorithms to neutralize hardware acceleration (ASICs/GPUs) and sophisticated bot farms.
- **Accessible Code Challenges**: Provides "Enter code from image" fallbacks with built-in **audio support** for visually impaired users.
- **Privacy by Design**: Fully **GDPR compliant** and cookie-free—no tracking, no fingerprinting, and no data collection.
- **Universal Accessibility**: Engineered to exceed **WCAG 2.2 AA** standards, ensuring compliance with the **European Accessibility Act (EAA)**.
- **Lightweight**: Minimal footprint, optimized for rapid page loads and high-performance environments.
- **100% Self-Hosted**: Maintain full sovereignty over your infrastructure with no reliance on third-party API availability.
## Whats New in v3
- **Next-Gen PoW**: Significant performance gains and reduced CPU overhead through an optimized verification mechanism.
- **Advanced Bot Defense**: Native support for **Argon2 and Scrypt**, raising the cost of attack for automated scripts and specialized hardware.
- **Modern UI**: Refined styling options, including a suite of new built-in themes and improved CSS custom property support.
- **Developer Experience**: Improved TypeScript support and streamlined integration.
### Migrating from v2
See [MIGRATION-v2.md](https://github.com/altcha-org/altcha/blob/v3/MIGRATION-v2.md).
## Examples
Explore starter templates for popular frameworks:
- [React](https://github.com/altcha-org/altcha-starter-react-ts)
- [Vue](https://github.com/altcha-org/altcha-starter-vue-ts)
- [Svelte](https://github.com/altcha-org/altcha-starter-svelte-ts)
- [Solid](https://github.com/altcha-org/altcha-starter-solid-ts)
- [Lit](https://github.com/altcha-org/altcha-starter-lit-ts)
- [Angular](https://github.com/altcha-org/altcha-starter-angular)
## Server Integrations
- [TypeScript](https://github.com/altcha-org/altcha-lib)
- [Dart](https://github.com/altcha-org/altcha-lib-dart)
- [PHP](https://github.com/altcha-org/altcha-lib-php)
- [Go](https://github.com/altcha-org/altcha-lib-go)
- [Python](https://github.com/altcha-org/altcha-lib-py)
- [Java](https://github.com/altcha-org/altcha-lib-java)
- [Ruby](https://github.com/altcha-org/altcha-lib-rb)
- [Elixir](https://github.com/altcha-org/altcha-lib-ex)
- [Rust](https://github.com/altcha-org/altcha-lib-rs)
- [C++](https://github.com/altcha-org/altcha-lib-cpp)
## Plugins & CMS
- [Libraries and plugins](https://altcha.org/docs/v2/libraries/)
## Usage
The ALTCHA widget is distributed as a **Web Component**.
### 1. Install ALTCHA
```sh
npm install altcha
```
Import in your main file:
```js
import 'altcha';
```
Or load via `<script>` tag:
```html
<script async defer src="/altcha.js" type="module"></script>
```
### 2. Add `<altcha-widget>` to Your Forms
```html
<form>
<altcha-widget challenge="https://..."></altcha-widget>
</form>
```
See [configuration options](#configuration) or the [website integration docs](https://altcha.org/docs/v2/widget-integration).
### 3. Integrate with Your Server
Refer to the [server documentation](https://altcha.org/docs/v2/server-integration) for implementation details.
## Supported Browsers
ALTCHA works on modern browsers with **Web Crypto API** support (specifically `crypto.subtle` - [caniuse.com](https://caniuse.com/?search=subtle)).
**Supported**:
- Chrome 67+ (desktop & Android)
- Edge 79+
- Firefox 63+ (desktop & Android)
- Safari 11+ (macOS & iOS)
- Any browser supporting Web Components + Web Crypto
**Not Supported**:
- Internet Explorer 11 (or older)
## Bundle Size
ALTCHA is optimized for performance:
| Distribution | Size (GZIPped) |
| ---------------------------- | -------------- |
| ALTCHA | 34 kB |
| ALTCHA with all translations | 52 kB |
| Cloudflare Turnstile | 85+ kB |
| hCaptcha | 250+ kB |
| reCAPTCHA | 300+ kB |
When GZIPped, it totals about 34 kB, making ALTCHAs widget about ~90% smaller than reCAPTCHA.
## Content Security Policy (CSP)
The default bundle includes styles and workers in a single file. For strict CSP compliance, use scripts from `/dist/external`. Learn more in the [documentation](https://altcha.org/docs/v2/widget-integration).
## Configuration
### Programmatic Configuration
The widget provides a global `$altcha` object to manage defaults, register new algorithms, or add custom translations.
To update an existing widget instance, use the `.configure()` [method](). This is the preferred way to handle complex objects or functions that cannot be passed via HTML attributes.
```ts
// Set defaults for all future widget instances:
$altcha.defaults.set({
challenge: 'https://api.example.com/challenge',
debug: true
});
// Update a specific instance dynamically:
const widget = document.querySelector('altcha-widget');
widget.configure({
workers: 2,
language: 'fr'
});
```
### Attribute Configuration
For simple implementations, the widget supports a subset of configuration options directly as HTML attributes. For more advanced properties, use the programmatic approach above.
**Supported Attributes:**
```html
<altcha-widget
auto="off"
challenge="https://api.example.com/challenge"
configuration='{"minDuration": 1000}'
display="standard"
language="en"
name="altcha"
theme="default"
type="checkbox"
workers="4"
></altcha-widget>
```
> [!TIP]
> The `configuration` attribute accepts a JSON-encoded string, allowing you to pass complex settings directly in your HTML markup.
### Core Settings
- **`name`**: The `name` attribute of the hidden input field containing the payload. (Default: `"altcha"`)
- **`challenge`**: The challenge data or the URL to fetch a new challenge from.
- **`type`**: Visual style of the interaction element (`'native'`, `'checkbox'`, or `'switch'`).
- **`language`**: The ISO alpha-2 language code for localization (requires corresponding i18n file).
- **`workers`**: The number of Web Workers to spawn for proof-of-work calculations.
### Automation & Timing
- **`auto`**: Determines when verification triggers automatically (`'off'`, `'onfocus'`, `'onload'`, or `'onsubmit'`).
- **`minDuration`**: The minimum verification time in milliseconds; adds an artificial delay if the PoW is faster. (Default: `500`)
- **`retryOnOutOfMemoryError`**: Automatically attempts to restart verification with fewer workers if the browser runs out of memory (Argon2 and Scrypt only).
### UI & Display
- **`display`**: The visual layout mode (`'standard'`, `'bar'`, `'floating'`, `'overlay'`, or `'invisible'`).
- **`barPlacement`**: Vertical position of the widget when `display` is set to `bar` (`'bottom'` or `'top'`).
- **`hideLogo`**: Hides the ALTCHA logo icon.
- **`hideFooter`**: Hides the "ALTCHA" attribution link.
- **`validationMessage`**: Custom validation message for the HTML5 `setCustomValidity` API.
### Floating Widget Settings
- **`floatingAnchor`**: The element or CSS selector the floating UI attaches to. Defaults to the first submit button.
- **`floatingPlacement`**: Preferred position relative to the anchor (`'auto'`, `'bottom'`, or `'top'`).
- **`floatingOffset`**: Vertical offset in pixels between the UI and its anchor. (Default: `12`)
- **`floatingPersist`**: Whether the floating widget remains visible after successful verification.
- **`popoverPlacement`**: Preferred position of popovers relative to the widget (`'auto'`, `'bottom'`, or `'top'`).
### Modal & Challenge Settings
- **`codeChallengeDisplay`**: UI layout for the code-challenge modal (`'standard'`, `'overlay'`, or `'bottomsheet'`).
- **`overlayContent`**: CSS selector for an element to be mirrored inside the overlay modal.
- **`audioChallengeLanguage`**: Forces a specific language for audio-based challenges.
- **`disableAutoFocus`**: Prevents the code-challenge modal from stealing focus when opened.
### Advanced & Debugging
- **`debug`**: Enables verbose logging in the browser console.
- **`test`**: Mocks a successful verification for testing environments.
- **`mockError`**: Forces the widget into a failed state for UI testing.
- **`fetch`**: A custom `fetch` implementation for network requests.
- **`humanInteractionSignature`**: Whether the collector for HIS is enabled (Default: `true`).
- **`setCookie`**: When configured, sends the payload as a cookie.
- **`timeout`**: Verification timeout in milliseconds (Default: `90_000`).
- **`verifyFunction`**: A custom verification handler that overrides default network verification.
## Algorithms
ALTCHA supports multiple proof-of-work algorithms. `PBKDF2/*` and `SHA-*` are bundled with the main widget by default. `Argon2` and `Scrypt` are memory-bound algorithms that resist hardware acceleration (ASICs/GPUs) but require importing their workers separately.
**Supported algorithms:**
- `PBKDF2/SHA-256` (default, bundled)
- `PBKDF2/SHA-384` (bundled)
- `PBKDF2/SHA-512` (bundled)
- `SHA-256` (bundled)
- `SHA-384` (bundled)
- `SHA-512` (bundled)
- `ARGON2ID` (requires separate worker import)
- `SCRYPT` (requires separate worker import)
If you use `Argon2` or `Scrypt`, import their workers and register them via the `$altcha.algorithms` global before the widget initializes.
### Adding Argon2 / Scrypt Workers (Vite)
Works with both `altcha` and `altcha/external`:
```ts
import 'altcha'; // or 'altcha/external'
import Argon2idWorker from 'altcha/workers/argon2id?worker';
import ScryptWorker from 'altcha/workers/scrypt?worker';
$altcha.algorithms.set('ARGON2ID', () => new Argon2idWorker());
$altcha.algorithms.set('SCRYPT', () => new ScryptWorker());
```
### Without Bundler Worker Import Support
If your environment does not support `?worker` imports, load the prebuilt worker files directly:
```ts
import 'altcha';
$altcha.algorithms.set(
'ARGON2ID',
() => new Worker('/path/to/node_modules/altcha/dist/workers/argon2id.js')
);
$altcha.algorithms.set(
'SCRYPT',
() => new Worker('/path/to/node_modules/altcha/dist/workers/scrypt.js')
);
```
### Using `altcha/external`
`altcha/external` excludes all bundled workers, requiring you to register every algorithm explicitly. Use this for full control over which workers are loaded:
```ts
import 'altcha/external';
import Argon2idWorker from 'altcha/workers/argon2id?worker';
import Pbkdf2Worker from 'altcha/workers/pbkdf2?worker';
import ScryptWorker from 'altcha/workers/scrypt?worker';
import ShaWorker from 'altcha/workers/sha?worker';
$altcha.algorithms.set('PBKDF2/SHA-256', () => new Pbkdf2Worker());
$altcha.algorithms.set('PBKDF2/SHA-384', () => new Pbkdf2Worker());
$altcha.algorithms.set('PBKDF2/SHA-512', () => new Pbkdf2Worker());
$altcha.algorithms.set('SHA-256', () => new ShaWorker());
$altcha.algorithms.set('SHA-384', () => new ShaWorker());
$altcha.algorithms.set('SHA-512', () => new ShaWorker());
$altcha.algorithms.set('ARGON2ID', () => new Argon2idWorker());
$altcha.algorithms.set('SCRYPT', () => new ScryptWorker());
```
## Cookies
By default, the widget sends the ALTCHA payload as a form field by creating a hidden input. It can also be configured to send the payload via a cookie.
To enable this behavior, use the `setCookie` configuration option:
```ts
widget.configure({
setCookie: {
name: 'altcha',
path: '/'
}
});
```
`setCookie` accepts the following cookie options:
```ts
interface SetCookieOptions {
domain?: string;
name?: string;
maxAge?: number;
path?: string;
sameSite?: string;
secure?: boolean;
}
```
## Server Configuration
When the widget fetches a challenge from the server, the server can override widget configuration using either the `X-Altcha-Config` response header or the `configuration` property in the challenge response.
Example using the `configuration` property in the challenge JSON response to force cookie usage:
```json
{
"configuration": {
"setCookie": {
"name": "altcha",
"path": "/submit"
}
},
"parameters": {},
"signature": "..."
}
```
The `X-Altcha-Config` header must contain a JSON-encoded object with configuration options.
## Internationalization (i18n)
ALTCHA supports **50+ languages**. You can import individual language translations or a bundle that includes all of them.
### Importing Translations
To import all translations:
```js
import 'altcha/i18n/all';
```
To import specific languages only:
```js
import 'altcha/i18n/de';
import 'altcha/i18n/fr-fr';
```
Alternatively, you can import the combined bundle, which includes both the widget and all translations:
```js
import 'altcha/i18n';
```
### Language Detection
The widget automatically detects the language from:
- The `<html lang="...">` attribute
- The user's browser settings (`navigator.languages`)
To override the language manually, use the `language` attribute:
```html
<altcha-widget language="de"></altcha-widget>
```
### Customizing Translations
You can override default translations by updating the global `$altcha` registry (`globalThis.$altcha.i18n`):
```js
import 'altcha/i18n/de';
$altcha.i18n.set('de', {
...$altcha.i18n.get('de'),
label: 'Ich bin ein Mensch' // Custom label
});
```
## Code Challenges
For additional verification, ALTCHA supports **image/audio code challenges** (e.g., "Enter the code from the image"). This feature requires [ALTCHA Sentinel](https://altcha.org/docs/v2/sentinel) or a custom server implementation.
## Data Obfuscation
[Data obfuscation]() is supported via an official plugin, which must be imported alongside the widget. This is ideal for protecting sensitive information, such as email addresses, from scrapers until the challenge is solved.
To obfuscate data, run:
```sh
npx altcha-lib obfuscate [data]
```
### Programmatic Usage
The plugin exports `ObfuscationPlugin` with static methods `obfuscate` and `deobfuscate` for manual data handling:
```ts
import { ObfuscationPlugin } from 'altcha/plugins/obfuscation';
const obfuscatedData = await ObfuscationPlugin.obfuscate('mailto:hello@example.com');
```
### Widget Integration
To use the plugin with the widget, ensure `altcha/plugins/obfuscation` is imported before the main library. Use the `data-obfuscated` attribute to provide the Base64-encoded payload:
```html
<script>
import 'altcha/plugins/obfuscation';
import 'altcha';
</script>
<altcha-widget data-obfuscated="${obfuscatedData}" display="floating"></altcha-widget>
```
## Methods
- `configure(options)` - Configures the widget with the given options. See Configuration options above.
- `getConfiguration()` - Returns the current configuration.
- `getState()` - Returns the current `state` of the widget.
- `show()` - Displays the widget (used in some display modes).
- `hide()` - Hides the widget (used in some display modes).
- `reset(state?, err?)` - Resets the internal `state`, optionally with an error.
- `setState(state, err?)` - Manually sets the specified `state`, optionally with an error.
- `updateUI()` - Force UI update or reposition, for example for the floating display mode.
- `verify()` - Initiates the verification process.
## Events
- **codechallenge** - Triggers when code-challenge verification is requested.
- **expired** - Triggers when the challenge expires.
- **load** - Triggers when the widget loads. The exported methods become available after this event.
- **outofmemory** - Triggers when an Out-Of-Memory error is received (Argon2 and Scrypt only).
- **serververification** -Triggers upon a server verification.
- **statechange** - Triggers whenever an internal `state` changes.
- **verified** - Triggers when the challenge is verified.
```ts
enum State {
CODE = 'code',
ERROR = 'error',
VERIFIED = 'verified',
VERIFYING = 'verifying',
UNVERIFIED = 'unverified',
EXPIRED = 'expired'
}
```
Using events:
```js
document.querySelector('altcha-widget').addEventListener('statechange', (ev) => {
// See enum State above
console.log('state:', ev.detail.state);
});
```
> [!IMPORTANT]
> Both programmatic configuration and event listeners have to called/attached after the ALTCHA script loads, such as within `window.addEventListener('load', ...)`.
## Contributing
See [Contributing Guide](https://github.com/altcha-org/altcha/blob/main/CONTRIBUTING.md) and please follow our [Code of Conduct](https://github.com/altcha-org/altcha/blob/main/CODE_OF_CONDUCT.md).
## License
MIT
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/419'; export {};
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/af'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (amptelike webwerf)",
enterCode: "Voer kode in",
enterCodeAria: "Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",
error: "Verifikasie het misluk. Probeer later weer.",
expired: "Verifikasie het verval. Probeer weer.",
footer: 'Beskerm deur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (amptelike webwerf)">ALTCHA</a>',
getAudioChallenge: "Kry 'n klankuitdaging",
label: "Ek is nie 'n robot nie",
loading: "Laai...",
reload: "Laai weer",
verify: "Verifieer",
verificationRequired: "Verifikasie is vereis!",
verified: "Geverifieer",
verifying: "Verifieer...",
waitAlert: "Verifieer... wag asseblief.",
cancel: "Kanselleer",
enterCodeFromImage: "Om voort te gaan, voer asseblief die kode vanaf die onderstaande prentjie in."
};
globalThis.$altcha.i18n.set("af", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (amptelike webwerf)",
enterCode: "Voer kode in",
enterCodeAria: "Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",
error: "Verifikasie het misluk. Probeer later weer.",
expired: "Verifikasie het verval. Probeer weer.",
footer: 'Beskerm deur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (amptelike webwerf)">ALTCHA</a>',
getAudioChallenge: "Kry 'n klankuitdaging",
label: "Ek is nie 'n robot nie",
loading: "Laai...",
reload: "Laai weer",
verify: "Verifieer",
verificationRequired: "Verifikasie is vereis!",
verified: "Geverifieer",
verifying: "Verifieer...",
waitAlert: "Verifieer... wag asseblief.",
cancel: "Kanselleer",
enterCodeFromImage: "Om voort te gaan, voer asseblief die kode vanaf die onderstaande prentjie in."
};
globalThis.$altcha.i18n.set("af", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/africa'; export {};
+248
View File
@@ -0,0 +1,248 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$6 = {
ariaLinkLabel: "Altcha (amptelike webwerf)",
enterCode: "Voer kode in",
enterCodeAria: "Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",
error: "Verifikasie het misluk. Probeer later weer.",
expired: "Verifikasie het verval. Probeer weer.",
footer: 'Beskerm deur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (amptelike webwerf)">ALTCHA</a>',
getAudioChallenge: "Kry 'n klankuitdaging",
label: "Ek is nie 'n robot nie",
loading: "Laai...",
reload: "Laai weer",
verify: "Verifieer",
verificationRequired: "Verifikasie is vereis!",
verified: "Geverifieer",
verifying: "Verifieer...",
waitAlert: "Verifieer... wag asseblief.",
cancel: "Kanselleer",
enterCodeFromImage: "Om voort te gaan, voer asseblief die kode vanaf die onderstaande prentjie in."
};
globalThis.$altcha.i18n.set("af", i18n$6);
const i18n$5 = {
ariaLinkLabel: "Altcha (ዋናው ድህረ ገጽ)",
enterCode: "ኮድ አስገባ",
enterCodeAria: "የሚሰማዎትን ኮድ ያስገቡ። ድምጽ ለመጫወት Space ን ይጫኑ።",
error: "ማረጋገጫ አልተሳካም። በኋላ ላይ እንደገና ይሞክሩ።",
expired: "ማረጋገጫው ጊዜው አልፏል። እንደገና ይሞክሩ።",
footer: 'በ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ዋናው ድህረ ገጽ)">ALTCHA</a> የተጠበቀ',
getAudioChallenge: "የድምጽ ፈተና ያግኙ",
label: "እኔ ሮቦት አይደለሁም",
loading: "በመጫን ላይ...",
reload: "እንደገና ጫን",
verify: "አረጋግጥ",
verificationRequired: "ማረጋገጫ ያስፈልጋል!",
verified: "ተረጋግጧል",
verifying: "በማረጋገጥ ላይ...",
waitAlert: "በማረጋገጥ ላይ... እባክዎ ይጠብቁ።",
cancel: "ይቅር",
enterCodeFromImage: "ለመቀጠል፣ እባክዎን ከታች ካለው ምስል ኮዱን ያስገቡ።"
};
globalThis.$altcha.i18n.set("am", i18n$5);
const i18n$4 = {
ariaLinkLabel: "Altcha (الموقع الرسمي)",
enterCode: "أدخل الرمز",
enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",
error: "فشل التحقق. حاول مرة أخرى لاحقاً.",
expired: "انتهت صلاحية التحقق. حاول مرة أخرى.",
footer: 'محمي بواسطة <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (الموقع الرسمي)">ALTCHA</a>',
getAudioChallenge: "احصل على تحدي صوتي",
label: "أنا لست روبوتاً",
loading: "جارٍ التحميل...",
reload: "إعادة تحميل",
verify: "تحقق",
verificationRequired: "مطلوب التحقق!",
verified: "تم التحقق",
verifying: "جارٍ التحقق...",
waitAlert: "جارٍ التحقق... يرجى الانتظار.",
cancel: "إلغاء",
enterCodeFromImage: "للمتابعة، يرجى إدخال الرمز من الصورة أدناه."
};
globalThis.$altcha.i18n.set("ar", i18n$4);
const i18n$3 = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",
error: "Échec de la vérification. Essayez à nouveau plus tard.",
expired: "La vérification a expiré. Essayez à nouveau.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-fr", i18n$3);
const i18n$2 = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Introduza o código",
enterCodeAria: "Introduza o código que ouve. Prima Espaço para reproduzir o áudio.",
error: "A verificação falhou. Por favor, tente novamente mais tarde.",
expired: "Verificação expirada. Por favor, tente novamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obter desafio de áudio",
label: "Não sou um robô",
loading: "A carregar...",
reload: "Recarregar",
verify: "Verificar",
verificationRequired: "Verificação necessária!",
verified: "Verificado",
verifying: "A verificar...",
waitAlert: "A verificar... por favor aguarde.",
cancel: "Cancelar",
enterCodeFromImage: "Para prosseguir, introduza o código da imagem abaixo."
};
globalThis.$altcha.i18n.set("pt-pt", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (tovuti rasmi)",
enterCode: "Weka nambari",
enterCodeAria: "Weka nambari unayosikia. Bonyeza Space kucheza sauti.",
error: "Uthibitishaji umeshindwa. Jaribu tena baadaye.",
expired: "Uthibitishaji umeisha. Jaribu tena.",
footer: 'Imealindwa na <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (tovuti rasmi)">ALTCHA</a>',
getAudioChallenge: "Pata changamoto ya sauti",
label: "Mimi sio roboti",
loading: "Inapakia...",
reload: "Pakia tena",
verify: "Thibitisha",
verificationRequired: "Uthibitishaji unahitajika!",
verified: "Imethibitishwa",
verifying: "Inathibitisha...",
waitAlert: "Inathibitisha... tafadhali subiri.",
cancel: "Ghairi",
enterCodeFromImage: "Ili kuendelea, tafadhali weka nambari kutoka kwa picha hapa chini."
};
globalThis.$altcha.i18n.set("sw", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (oju opo wẹẹbu osise)",
enterCode: "Tẹ koodu sii",
enterCodeAria: "Tẹ koodu ti o ngbọ sii. Tẹ Space lati ṣe ohun orin.",
error: "Ìdájọ́kòwò kò ṣẹ́ṣe. Gbiyanju lẹẹkansi ni ọjọ́ iwájú.",
expired: "Ìdájọ́kòwò ti pari. Gbiyanju lẹẹkansi.",
footer: 'Ti wa ni ààbò nipasẹ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oju opo wẹẹbu osise)">ALTCHA</a>',
getAudioChallenge: "Gba ìjàdú ohùn",
label: "Emi kii ṣe ẹrọ",
loading: "Ó ń gbé sílẹ̀...",
reload: "Tún gbé wọlé",
verify: "Ṣàdájọ́",
verificationRequired: "Ìdájọ́kòwò ni a nílò!",
verified: "A ti dájọ́",
verifying: "Ó ń ṣàdájọ́...",
waitAlert: "Ó ń ṣàdájọ́... ẹ jọ̀ọ́ ẹ duro.",
cancel: "Fagbọsẹ",
enterCodeFromImage: "Lati tẹsiwaju, jọwọ tẹ koodu ti o wa lati aworan isalẹ sii."
};
globalThis.$altcha.i18n.set("yo", i18n);
+253
View File
@@ -0,0 +1,253 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$6 = {
ariaLinkLabel: "Altcha (amptelike webwerf)",
enterCode: "Voer kode in",
enterCodeAria: "Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",
error: "Verifikasie het misluk. Probeer later weer.",
expired: "Verifikasie het verval. Probeer weer.",
footer: 'Beskerm deur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (amptelike webwerf)">ALTCHA</a>',
getAudioChallenge: "Kry 'n klankuitdaging",
label: "Ek is nie 'n robot nie",
loading: "Laai...",
reload: "Laai weer",
verify: "Verifieer",
verificationRequired: "Verifikasie is vereis!",
verified: "Geverifieer",
verifying: "Verifieer...",
waitAlert: "Verifieer... wag asseblief.",
cancel: "Kanselleer",
enterCodeFromImage: "Om voort te gaan, voer asseblief die kode vanaf die onderstaande prentjie in."
};
globalThis.$altcha.i18n.set("af", i18n$6);
const i18n$5 = {
ariaLinkLabel: "Altcha (ዋናው ድህረ ገጽ)",
enterCode: "ኮድ አስገባ",
enterCodeAria: "የሚሰማዎትን ኮድ ያስገቡ። ድምጽ ለመጫወት Space ን ይጫኑ።",
error: "ማረጋገጫ አልተሳካም። በኋላ ላይ እንደገና ይሞክሩ።",
expired: "ማረጋገጫው ጊዜው አልፏል። እንደገና ይሞክሩ።",
footer: 'በ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ዋናው ድህረ ገጽ)">ALTCHA</a> የተጠበቀ',
getAudioChallenge: "የድምጽ ፈተና ያግኙ",
label: "እኔ ሮቦት አይደለሁም",
loading: "በመጫን ላይ...",
reload: "እንደገና ጫን",
verify: "አረጋግጥ",
verificationRequired: "ማረጋገጫ ያስፈልጋል!",
verified: "ተረጋግጧል",
verifying: "በማረጋገጥ ላይ...",
waitAlert: "በማረጋገጥ ላይ... እባክዎ ይጠብቁ።",
cancel: "ይቅር",
enterCodeFromImage: "ለመቀጠል፣ እባክዎን ከታች ካለው ምስል ኮዱን ያስገቡ።"
};
globalThis.$altcha.i18n.set("am", i18n$5);
const i18n$4 = {
ariaLinkLabel: "Altcha (الموقع الرسمي)",
enterCode: "أدخل الرمز",
enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",
error: "فشل التحقق. حاول مرة أخرى لاحقاً.",
expired: "انتهت صلاحية التحقق. حاول مرة أخرى.",
footer: 'محمي بواسطة <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (الموقع الرسمي)">ALTCHA</a>',
getAudioChallenge: "احصل على تحدي صوتي",
label: "أنا لست روبوتاً",
loading: "جارٍ التحميل...",
reload: "إعادة تحميل",
verify: "تحقق",
verificationRequired: "مطلوب التحقق!",
verified: "تم التحقق",
verifying: "جارٍ التحقق...",
waitAlert: "جارٍ التحقق... يرجى الانتظار.",
cancel: "إلغاء",
enterCodeFromImage: "للمتابعة، يرجى إدخال الرمز من الصورة أدناه."
};
globalThis.$altcha.i18n.set("ar", i18n$4);
const i18n$3 = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",
error: "Échec de la vérification. Essayez à nouveau plus tard.",
expired: "La vérification a expiré. Essayez à nouveau.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-fr", i18n$3);
const i18n$2 = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Introduza o código",
enterCodeAria: "Introduza o código que ouve. Prima Espaço para reproduzir o áudio.",
error: "A verificação falhou. Por favor, tente novamente mais tarde.",
expired: "Verificação expirada. Por favor, tente novamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obter desafio de áudio",
label: "Não sou um robô",
loading: "A carregar...",
reload: "Recarregar",
verify: "Verificar",
verificationRequired: "Verificação necessária!",
verified: "Verificado",
verifying: "A verificar...",
waitAlert: "A verificar... por favor aguarde.",
cancel: "Cancelar",
enterCodeFromImage: "Para prosseguir, introduza o código da imagem abaixo."
};
globalThis.$altcha.i18n.set("pt-pt", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (tovuti rasmi)",
enterCode: "Weka nambari",
enterCodeAria: "Weka nambari unayosikia. Bonyeza Space kucheza sauti.",
error: "Uthibitishaji umeshindwa. Jaribu tena baadaye.",
expired: "Uthibitishaji umeisha. Jaribu tena.",
footer: 'Imealindwa na <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (tovuti rasmi)">ALTCHA</a>',
getAudioChallenge: "Pata changamoto ya sauti",
label: "Mimi sio roboti",
loading: "Inapakia...",
reload: "Pakia tena",
verify: "Thibitisha",
verificationRequired: "Uthibitishaji unahitajika!",
verified: "Imethibitishwa",
verifying: "Inathibitisha...",
waitAlert: "Inathibitisha... tafadhali subiri.",
cancel: "Ghairi",
enterCodeFromImage: "Ili kuendelea, tafadhali weka nambari kutoka kwa picha hapa chini."
};
globalThis.$altcha.i18n.set("sw", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (oju opo wẹẹbu osise)",
enterCode: "Tẹ koodu sii",
enterCodeAria: "Tẹ koodu ti o ngbọ sii. Tẹ Space lati ṣe ohun orin.",
error: "Ìdájọ́kòwò kò ṣẹ́ṣe. Gbiyanju lẹẹkansi ni ọjọ́ iwájú.",
expired: "Ìdájọ́kòwò ti pari. Gbiyanju lẹẹkansi.",
footer: 'Ti wa ni ààbò nipasẹ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oju opo wẹẹbu osise)">ALTCHA</a>',
getAudioChallenge: "Gba ìjàdú ohùn",
label: "Emi kii ṣe ẹrọ",
loading: "Ó ń gbé sílẹ̀...",
reload: "Tún gbé wọlé",
verify: "Ṣàdájọ́",
verificationRequired: "Ìdájọ́kòwò ni a nílò!",
verified: "A ti dájọ́",
verifying: "Ó ń ṣàdájọ́...",
waitAlert: "Ó ń ṣàdájọ́... ẹ jọ̀ọ́ ẹ duro.",
cancel: "Fagbọsẹ",
enterCodeFromImage: "Lati tẹsiwaju, jọwọ tẹ koodu ti o wa lati aworan isalẹ sii."
};
globalThis.$altcha.i18n.set("yo", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/all'; export {};
+1328
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/am'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (ዋናው ድህረ ገጽ)",
enterCode: "ኮድ አስገባ",
enterCodeAria: "የሚሰማዎትን ኮድ ያስገቡ። ድምጽ ለመጫወት Space ን ይጫኑ።",
error: "ማረጋገጫ አልተሳካም። በኋላ ላይ እንደገና ይሞክሩ።",
expired: "ማረጋገጫው ጊዜው አልፏል። እንደገና ይሞክሩ።",
footer: 'በ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ዋናው ድህረ ገጽ)">ALTCHA</a> የተጠበቀ',
getAudioChallenge: "የድምጽ ፈተና ያግኙ",
label: "እኔ ሮቦት አይደለሁም",
loading: "በመጫን ላይ...",
reload: "እንደገና ጫን",
verify: "አረጋግጥ",
verificationRequired: "ማረጋገጫ ያስፈልጋል!",
verified: "ተረጋግጧል",
verifying: "በማረጋገጥ ላይ...",
waitAlert: "በማረጋገጥ ላይ... እባክዎ ይጠብቁ።",
cancel: "ይቅር",
enterCodeFromImage: "ለመቀጠል፣ እባክዎን ከታች ካለው ምስል ኮዱን ያስገቡ።"
};
globalThis.$altcha.i18n.set("am", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (ዋናው ድህረ ገጽ)",
enterCode: "ኮድ አስገባ",
enterCodeAria: "የሚሰማዎትን ኮድ ያስገቡ። ድምጽ ለመጫወት Space ን ይጫኑ።",
error: "ማረጋገጫ አልተሳካም። በኋላ ላይ እንደገና ይሞክሩ።",
expired: "ማረጋገጫው ጊዜው አልፏል። እንደገና ይሞክሩ።",
footer: 'በ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ዋናው ድህረ ገጽ)">ALTCHA</a> የተጠበቀ',
getAudioChallenge: "የድምጽ ፈተና ያግኙ",
label: "እኔ ሮቦት አይደለሁም",
loading: "በመጫን ላይ...",
reload: "እንደገና ጫን",
verify: "አረጋግጥ",
verificationRequired: "ማረጋገጫ ያስፈልጋል!",
verified: "ተረጋግጧል",
verifying: "በማረጋገጥ ላይ...",
waitAlert: "በማረጋገጥ ላይ... እባክዎ ይጠብቁ።",
cancel: "ይቅር",
enterCodeFromImage: "ለመቀጠል፣ እባክዎን ከታች ካለው ምስል ኮዱን ያስገቡ።"
};
globalThis.$altcha.i18n.set("am", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/americas'; export {};
+168
View File
@@ -0,0 +1,168 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$2 = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.",
error: "Échec de la vérification. Réessayez plus tard.",
expired: "La vérification a expiré. Réessayez.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-ca", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Ingresa el código",
enterCodeAria: "Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor vuelve a intentarlo más tarde.",
expired: "La verificación expiró. Por favor inténtalo de nuevo.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un reto de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Volver a cargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espera.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, ingresa el código de la imagen a continuación."
};
globalThis.$altcha.i18n.set("es-419", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Digite o código",
enterCodeAria: "Digite o código que você ouve. Pressione Espaço para reproduzir o áudio.",
error: "Falha na verificação. Por favor, tente novamente mais tarde.",
expired: "Verificação expirada. Por favor, tente novamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obter desafio de áudio",
label: "Eu não sou um robô",
loading: "Carregando...",
reload: "Recarregar",
verify: "Verificar",
verificationRequired: "Verificação necessária!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor aguarde.",
cancel: "Cancelar",
enterCodeFromImage: "Para prosseguir, digite o código da imagem abaixo."
};
globalThis.$altcha.i18n.set("pt-br", i18n);
+173
View File
@@ -0,0 +1,173 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$2 = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.",
error: "Échec de la vérification. Réessayez plus tard.",
expired: "La vérification a expiré. Réessayez.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-ca", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Ingresa el código",
enterCodeAria: "Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor vuelve a intentarlo más tarde.",
expired: "La verificación expiró. Por favor inténtalo de nuevo.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un reto de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Volver a cargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espera.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, ingresa el código de la imagen a continuación."
};
globalThis.$altcha.i18n.set("es-419", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Digite o código",
enterCodeAria: "Digite o código que você ouve. Pressione Espaço para reproduzir o áudio.",
error: "Falha na verificação. Por favor, tente novamente mais tarde.",
expired: "Verificação expirada. Por favor, tente novamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obter desafio de áudio",
label: "Eu não sou um robô",
loading: "Carregando...",
reload: "Recarregar",
verify: "Verificar",
verificationRequired: "Verificação necessária!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor aguarde.",
cancel: "Cancelar",
enterCodeFromImage: "Para prosseguir, digite o código da imagem abaixo."
};
globalThis.$altcha.i18n.set("pt-br", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/ar'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (الموقع الرسمي)",
enterCode: "أدخل الرمز",
enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",
error: "فشل التحقق. حاول مرة أخرى لاحقاً.",
expired: "انتهت صلاحية التحقق. حاول مرة أخرى.",
footer: 'محمي بواسطة <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (الموقع الرسمي)">ALTCHA</a>',
getAudioChallenge: "احصل على تحدي صوتي",
label: "أنا لست روبوتاً",
loading: "جارٍ التحميل...",
reload: "إعادة تحميل",
verify: "تحقق",
verificationRequired: "مطلوب التحقق!",
verified: "تم التحقق",
verifying: "جارٍ التحقق...",
waitAlert: "جارٍ التحقق... يرجى الانتظار.",
cancel: "إلغاء",
enterCodeFromImage: "للمتابعة، يرجى إدخال الرمز من الصورة أدناه."
};
globalThis.$altcha.i18n.set("ar", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (الموقع الرسمي)",
enterCode: "أدخل الرمز",
enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",
error: "فشل التحقق. حاول مرة أخرى لاحقاً.",
expired: "انتهت صلاحية التحقق. حاول مرة أخرى.",
footer: 'محمي بواسطة <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (الموقع الرسمي)">ALTCHA</a>',
getAudioChallenge: "احصل على تحدي صوتي",
label: "أنا لست روبوتاً",
loading: "جارٍ التحميل...",
reload: "إعادة تحميل",
verify: "تحقق",
verificationRequired: "مطلوب التحقق!",
verified: "تم التحقق",
verifying: "جارٍ التحقق...",
waitAlert: "جارٍ التحقق... يرجى الانتظار.",
cancel: "إلغاء",
enterCodeFromImage: "للمتابعة، يرجى إدخال الرمز من الصورة أدناه."
};
globalThis.$altcha.i18n.set("ar", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/asia'; export {};
+588
View File
@@ -0,0 +1,588 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$n = {
ariaLinkLabel: "Altcha (官方网站)",
enterCode: "输入代码",
enterCodeAria: "输入您听到的代码。按空格键播放音频。",
error: "验证失败。稍后再试。",
expired: "验证已过期。请重试。",
footer: '由 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (官方网站)">ALTCHA</a> 保护',
getAudioChallenge: "获取音频挑战",
label: "我不是机器人",
loading: "加载中...",
reload: "重新加载",
verify: "验证",
verificationRequired: "需要验证!",
verified: "已验证",
verifying: "正在验证...",
waitAlert: "正在验证... 请稍等。",
cancel: "取消",
enterCodeFromImage: "为继续操作,请输入下图中显示的验证码。"
};
globalThis.$altcha.i18n.set("zh-cn", i18n$n);
const i18n$m = {
ariaLinkLabel: "Altcha (官方網站)",
cancel: "取消",
enterCode: "輸入代碼",
enterCodeAria: "輸入你聽到嘅代碼。按空格鍵播放音訊。",
enterCodeFromImage: "要繼續,請輸入下面圖片入面嘅代碼。",
error: "驗證失敗。請稍後再試。",
expired: "驗證已過期。請再試一次。",
footer: '由 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (官方網站)">ALTCHA</a> 提供保護',
getAudioChallenge: "取得音訊驗證",
label: "我唔係機械人",
loading: "載入中...",
reload: "重新載入",
verify: "驗證",
verificationRequired: "需要驗證!",
verified: "已驗證",
verifying: "驗證中...",
waitAlert: "驗證中... 請稍候。"
};
globalThis.$altcha.i18n.set("zh-hk", i18n$m);
const i18n$l = {
ariaLinkLabel: "Altcha (官方網站)",
enterCode: "輸入代碼",
enterCodeAria: "輸入您聽到的代碼。按空格鍵播放音頻。",
error: "驗證失敗。稍後再試。",
expired: "驗證已過期。請重試。",
footer: '由 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (官方網站)">ALTCHA</a> 保護',
getAudioChallenge: "獲取音頻挑戰",
label: "我不是機器人",
loading: "載入中...",
reload: "重新載入",
verify: "驗證",
verificationRequired: "需要驗證!",
verified: "已驗證",
verifying: "正在驗證...",
waitAlert: "正在驗證... 請稍等。",
cancel: "取消",
enterCodeFromImage: "若要繼續,請輸入下方的圖片驗證碼。"
};
globalThis.$altcha.i18n.set("zh-tw", i18n$l);
const i18n$k = {
ariaLinkLabel: "Altcha (公式ウェブサイト)",
enterCode: "コードを入力",
enterCodeAria: "聞こえるコードを入力してください。スペースキーを押して音声を再生します。",
error: "認証に失敗しました。後でもう一度試してください。",
expired: "認証が期限切れです。再試行してください。",
footer: '保護されています <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (公式ウェブサイト)">ALTCHA</a>',
getAudioChallenge: "音声チャレンジを取得",
label: "私はロボットではありません",
loading: "読み込み中...",
reload: "再読み込み",
verify: "確認",
verificationRequired: "認証が必要です!",
verified: "確認済み",
verifying: "確認中...",
waitAlert: "確認中...少々お待ちください。",
cancel: "キャンセル",
enterCodeFromImage: "続行するには、以下の画像からコードを入力してください。"
};
globalThis.$altcha.i18n.set("ja", i18n$k);
const i18n$j = {
ariaLinkLabel: "Altcha (공식 웹사이트)",
enterCode: "코드 입력",
enterCodeAria: "들리는 코드를 입력하세요. 스페이스 바를 눌러 오디오를 재생합니다.",
error: "인증 실패. 나중에 다시 시도해주세요.",
expired: "인증이 만료되었습니다. 다시 시도해주세요.",
footer: 'ALTCHA에서 보호됨 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (공식 웹사이트)">ALTCHA</a>',
getAudioChallenge: "오디오 챌린지 받기",
label: "저는 로봇이 아닙니다",
loading: "로딩 중...",
reload: "새로 고침",
verify: "확인",
verificationRequired: "인증이 필요합니다!",
verified: "확인됨",
verifying: "확인 중...",
waitAlert: "확인 중... 잠시만 기다려주세요.",
cancel: "취소",
enterCodeFromImage: "계속 진행하려면 아래 이미지에서 코드를 입력하세요."
};
globalThis.$altcha.i18n.set("ko", i18n$j);
const i18n$i = {
ariaLinkLabel: "Altcha (आधिकारिक वेबसाइट)",
enterCode: "कोड दर्ज करेंं",
enterCodeAria: "आप जो कोड सुनते हैं उसे दर्ज करें। ऑडियो चलाने के लिए स्पेस दबाएं।",
error: "सत्यापन विफल। कृपया बाद में फिर से प्रयास करें।",
expired: "सत्यापन समाप्त हो गया है। कृपया पुनः प्रयास करें।",
footer: 'द्वारा संरक्षित <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (आधिकारिक वेबसाइट)">ALTCHA</a>',
getAudioChallenge: "ऑडियो चुनौती प्राप्त करें",
label: "मैं रोबोट नहीं हूँ",
loading: "लोड हो रहा है...",
reload: "पुनः लोड करें",
verify: "सत्यापित करें",
verificationRequired: "सत्यापन आवश्यक है!",
verified: "सत्यापित",
verifying: "सत्यापित कर रहे हैं...",
waitAlert: "सत्यापित किया जा रहा है... कृपया प्रतीक्षा करें।",
cancel: "रद्द करें",
enterCodeFromImage: "आगे बढ़ने के लिए, कृपया नीचे दी गई छवि से कोड दर्ज करें।"
};
globalThis.$altcha.i18n.set("hi", i18n$i);
const i18n$h = {
ariaLinkLabel: "Altcha (অফিসিয়াল ওয়েবসাইট)",
enterCode: "কোড লিখুন",
enterCodeAria: "আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।",
error: "যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।",
expired: "যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।",
footer: 'দ্বারা সুরক্ষিত <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (অফিসিয়াল ওয়েবসাইট)">ALTCHA</a>',
getAudioChallenge: "অডিও চ্যালেঞ্জ নিন",
label: "আমি রোবট নই",
loading: "লোড হচ্ছে...",
reload: "পুনরায় লোড করুন",
verify: "যাচাই করুন",
verificationRequired: "যাচাই প্রয়োজন!",
verified: "যাচাই করা হয়েছে",
verifying: "যাচাই করা হচ্ছে...",
waitAlert: "যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।",
cancel: "বাতিল করুন",
enterCodeFromImage: "এগিয়ে যেতে, অনুগ্রহ করে নীচের চিত্র থেকে কোডটি প্রবেশ করান।"
};
globalThis.$altcha.i18n.set("bn", i18n$h);
const i18n$g = {
ariaLinkLabel: "Altcha (अधिकृत संकेतस्थळ)",
enterCode: "कोड टाकाा",
enterCodeAria: "तुम्ही ऐकत असलेला कोड टाका. ऑडिओ प्ले करण्यासाठी स्पेस दाबा.",
error: "पुष्टीकरण अयशस्वी झाले. कृपया नंतर पुन्हा प्रयत्न करा.",
expired: "पुष्टीकरण कालबाह्य झाले आहे. कृपया पुन्हा प्रयत्न करा.",
footer: 'द्वारे संरक्षित <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (अधिकृत संकेतस्थळ)">ALTCHA</a>',
getAudioChallenge: "ऑडिओ चॅलेंज मिळवा",
label: "मी रोबोट नाही",
loading: "लोड होत आहे...",
reload: "पुन्हा लोड करा",
verify: "पुष्टीकरण करा",
verificationRequired: "पडताळणी आवश्यक आहे!",
verified: "पुष्टीकरण झाले",
verifying: "पुष्टीकरण करत आहे...",
waitAlert: "पुष्टीकरण करत आहे... कृपया थोडा वेळ थांबा.",
cancel: "रद्द करा",
enterCodeFromImage: "पुढे जाण्यासाठी, कृपया खालील प्रतिमेतील कोड प्रविष्ट करा."
};
globalThis.$altcha.i18n.set("mr", i18n$g);
const i18n$f = {
ariaLinkLabel: "Altcha (అధికారిక వెబ్‌సైట్)",
enterCode: "కోడ్‌ని నమోదు చేయండి",
enterCodeAria: "మీరు విన్న కోడ్‌ని నమోదు చేయండి. ఆడియో ప్లే చేయడానికి స్పేస్‌ను నొక్కండి.",
error: "చెకింగ్ విఫలమైంది. దయచేసి మరల ప్రయత్నించండి.",
expired: "చెకింగ్ కాలం ముగిసింది. దయచేసి మరల ప్రయత్నించండి.",
footer: 'ఈ సైట్ రక్షించబడింది <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (అధికారిక వెబ్‌సైట్)">ALTCHA</a>',
getAudioChallenge: "ఆడియో ఛాలెంజ్ పొందండి",
label: "నేను రోబోట్ కాదు",
loading: "లోడ్ అవుతోంది...",
reload: "మళ్ళీ లోడ్ చేయండి",
verify: "ధ్రువీకరించు",
verificationRequired: "ధృవీకరణ అవసరం!",
verified: "ధ్రువీకరించబడింది",
verifying: "ధ్రువీకరణ జరుగుతుంది...",
waitAlert: "ధ్రువీకరణ జరుగుతుంది... దయచేసి వేచి ఉండండి.",
cancel: "రద్దు చేయండి",
enterCodeFromImage: "కొనసాగడానికి, దయచేసి క్రింది చిత్రంలో ఉన్న కోడ్‌ను నమోదు చేయండి."
};
globalThis.$altcha.i18n.set("te", i18n$f);
const i18n$e = {
ariaLinkLabel: "Altcha (அதிகாரப்பூர்வ வலைத்தளம்)",
enterCode: "குறியீட்டை உள்ளிடவும்",
enterCodeAria: "நீங்கள் கேட்கும் குறியீட்டை உள்ளிடவும். ஆடியோவை இயக்க Space ஐ அழுத்தவும்.",
error: "சரிபார்ப்பு தோல்வி. பிறகு மீண்டும் முயற்சிக்கவும்.",
expired: "சரிபார்ப்பு காலாவதியானது. மீண்டும் முயற்சிக்கவும்.",
footer: 'மூலமாக பாதுகாக்கப்பட்டவை <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (அதிகாரப்பூர்வ வலைத்தளம்)">ALTCHA</a>',
getAudioChallenge: "ஒலி சவாலை பெறவும்",
label: "நான் ரோபோடான அல்ல",
loading: "செயலாக்கம்...",
reload: "மீண்டும் புதுப்பிக்கவும்",
verify: "சரிபார்க்கவும்",
verificationRequired: "சரிபார்ப்பு தேவை!",
verified: "சரிபார்க்கப்பட்டது",
verifying: "சரிபார்க்கப்படுகிறது...",
waitAlert: "சரிபார்க்கப்படுகிறது... தயவுசெய்து காத்திருக்கவும்.",
cancel: "ரத்துசெய்",
enterCodeFromImage: "தொடர, கீழே உள்ள படத்திலிருந்து குறியீட்டை உள்ளிடவும்."
};
globalThis.$altcha.i18n.set("ta", i18n$e);
const i18n$d = {
ariaLinkLabel: "Altcha (سرکاری ویب سائٹ)",
enterCode: "کوڈ درج کریں",
enterCodeAria: "جو کوڈ آپ سنتے ہیں وہ درج کریں۔ آڈیو چلانے کے لیے اسپیس دبائیں۔",
error: "توثیق ناکام ہو گئی۔ براہ کرم بعد میں دوبارہ کوشش کریں۔",
expired: "توثیق کی مدت ختم ہو گئی ہے۔ براہ کرم دوبارہ کوشش کریں۔",
footer: 'کے ذریعے محفوظ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (سرکاری ویب سائٹ)">ALTCHA</a>',
getAudioChallenge: "آڈیو چیلنج حاصل کریں",
label: "میں روبوٹ نہیں ہوں",
loading: "لوڈ ہو رہا ہے...",
reload: "دوبارہ لوڈ کریں",
verify: "توثیق کریں",
verificationRequired: "تصدیق ضروری ہے!",
verified: "توثیق شدہ",
verifying: "توثیق ہو رہی ہے...",
waitAlert: "توثیق ہو رہی ہے... براہ کرم انتظار کریں۔",
cancel: "منسوخ کریں",
enterCodeFromImage: "اگلے مرحلے پر جانے کے لیے، براہ کرم نیچے دی گئی تصویر سے کوڈ درج کریں۔"
};
globalThis.$altcha.i18n.set("ur", i18n$d);
const i18n$c = {
ariaLinkLabel: "Altcha (situs web resmi)",
enterCode: "Masukkan kode",
enterCodeAria: "Masukkan kode yang Anda dengar. Tekan Spasi untuk memutar audio.",
error: "Verifikasi gagal. Coba lagi nanti.",
expired: "Verifikasi telah kedaluwarsa. Coba lagi.",
footer: 'Dilindungi oleh <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (situs web resmi)">ALTCHA</a>',
getAudioChallenge: "Dapatkan tantangan audio",
label: "Saya bukan robot",
loading: "Memuat...",
reload: "Muat ulang",
verify: "Verifikasi",
verificationRequired: "Verifikasi diperlukan!",
verified: "Terverifikasi",
verifying: "Memverifikasi...",
waitAlert: "Memverifikasi... harap tunggu.",
cancel: "Batal",
enterCodeFromImage: "Untuk melanjutkan, silakan masukkan kode dari gambar di bawah ini."
};
globalThis.$altcha.i18n.set("id", i18n$c);
const i18n$b = {
ariaLinkLabel: "Altcha (เว็บไซต์ทางการ)",
enterCode: "ป้อนรหัส",
enterCodeAria: "ป้อนรหัสที่คุณได้ยิน กด Space เพื่อเล่นเสียง",
error: "การตรวจสอบล้มเหลว กรุณาลองอีกครั้งภายหลัง",
expired: "การตรวจสอบหมดอายุ กรุณาลองใหม่",
footer: 'ป้องกันโดย <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (เว็บไซต์ทางการ)">ALTCHA</a>',
getAudioChallenge: "รับการท้าทายเสียง",
label: "ฉันไม่ใช่บอท",
loading: "กำลังโหลด...",
reload: "โหลดใหม่",
verify: "ตรวจสอบ",
verificationRequired: "จำเป็นต้องตรวจสอบ!",
verified: "ตรวจสอบแล้ว",
verifying: "กำลังตรวจสอบ...",
waitAlert: "กำลังตรวจสอบ... กรุณารอ",
cancel: "ยกเลิก",
enterCodeFromImage: "เพื่อดำเนินการต่อ โปรดป้อนรหัสจากรูปภาพด้านล่าง"
};
globalThis.$altcha.i18n.set("th", i18n$b);
const i18n$a = {
ariaLinkLabel: "Altcha (trang web chính thức)",
enterCode: "Nhập mã",
enterCodeAria: "Nhập mã bạn nghe được. Nhấn Phím cách để phát âm thanh.",
error: "Xác minh thất bại. Vui lòng thử lại sau.",
expired: "Xác minh đã hết hạn. Vui lòng thử lại.",
footer: 'Được bảo vệ bởi <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (trang web chính thức)">ALTCHA</a>',
getAudioChallenge: "Nhận thử thách âm thanh",
label: "Tôi không phải là robot",
loading: "Đang tải...",
reload: "Tải lại",
verify: "Xác minh",
verificationRequired: "Yêu cầu xác minh!",
verified: "Đã xác minh",
verifying: "Đang xác minh...",
waitAlert: "Đang xác minh... vui lòng chờ.",
cancel: "Hủy bỏ",
enterCodeFromImage: "Để tiếp tục, vui lòng nhập mã từ hình ảnh bên dưới."
};
globalThis.$altcha.i18n.set("vi", i18n$a);
const i18n$9 = {
ariaLinkLabel: "Altcha (الموقع الرسمي)",
enterCode: "أدخل الرمز",
enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",
error: "فشل التحقق. حاول مرة أخرى لاحقاً.",
expired: "انتهت صلاحية التحقق. حاول مرة أخرى.",
footer: 'محمي بواسطة <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (الموقع الرسمي)">ALTCHA</a>',
getAudioChallenge: "احصل على تحدي صوتي",
label: "أنا لست روبوتاً",
loading: "جارٍ التحميل...",
reload: "إعادة تحميل",
verify: "تحقق",
verificationRequired: "مطلوب التحقق!",
verified: "تم التحقق",
verifying: "جارٍ التحقق...",
waitAlert: "جارٍ التحقق... يرجى الانتظار.",
cancel: "إلغاء",
enterCodeFromImage: "للمتابعة، يرجى إدخال الرمز من الصورة أدناه."
};
globalThis.$altcha.i18n.set("ar", i18n$9);
const i18n$8 = {
ariaLinkLabel: "Altcha (وب‌سایت رسمی)",
enterCode: "کد را وارد کنید",
enterCodeAria: "کدی که می‌شنوید را وارد کنید. برای پخش صدا Space را فشار دهید.",
error: "احراز هویت ناموفق بود. بعداً دوباره تلاش کنید.",
expired: "احراز هویت منقضی شد. دوباره تلاش کنید.",
footer: 'محافظت شده توسط <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (وب‌سایت رسمی)">ALTCHA</a>',
getAudioChallenge: "دریافت چالش صوتی",
label: "من ربات نیستم",
loading: "در حال بارگذاری...",
reload: "بارگذاری مجدد",
verify: "تایید",
verificationRequired: "احراز هویت لازم است!",
verified: "تایید شد",
verifying: "در حال تایید...",
waitAlert: "در حال تایید... لطفا منتظر بمانید.",
cancel: "لغو کردن",
enterCodeFromImage: "برای ادامه، لطفاً کد تصویر زیر را وارد کنید."
};
globalThis.$altcha.i18n.set("fa", i18n$8);
const i18n$7 = {
ariaLinkLabel: "Altcha (אתר רשמי)",
enterCode: "הזן קוד",
enterCodeAria: "הזן את הקוד שאתה שומע. לחץ על רווח להפעלת השמע.",
error: "האימות נכשל. נסה שוב מאוחר יותר.",
expired: "תוקף האימות פג. נסה שוב.",
footer: 'מוגן על ידי <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (אתר רשמי)">ALTCHA</a>',
getAudioChallenge: "קבל אתגר שמע",
label: "אני לא רובוט",
loading: "טוען...",
reload: "טען מחדש",
verify: "אמת",
verificationRequired: "נדרש אימות!",
verified: "אומת",
verifying: "מאמת...",
waitAlert: "מבצע אימות... אנא המתן.",
cancel: "ביטול",
enterCodeFromImage: "כדי להמשיך, אנא הזן את הקוד מהתמונה למטה."
};
globalThis.$altcha.i18n.set("he", i18n$7);
const i18n$6 = {
ariaLinkLabel: "Altcha (resmi web sitesi)",
enterCode: "Kodu girin",
enterCodeAria: "Duyduğunuz kodu girin. Ses dosyasını oynatmak için Boşluk tuşuna basın.",
error: "Doğrulama başarısız oldu. Lütfen daha sonra tekrar deneyin.",
expired: "Doğrulama süresi doldu. Lütfen tekrar deneyin.",
footer: 'ALTCHA tarafından korunuyor <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (resmi web sitesi)">ALTCHA</a>',
getAudioChallenge: "Sesli doğrulama al",
label: "Ben robot değilim",
loading: "Yükleniyor...",
reload: "Yeniden yükle",
verify: "Doğrula",
verificationRequired: "Doğrulama gerekli!",
verified: "Doğrulandı",
verifying: "Doğrulama yapılıyor...",
waitAlert: "Doğrulama yapılıyor... lütfen bekleyin.",
cancel: "İptal",
enterCodeFromImage: "Devam etmek için lütfen aşağıdaki resimdeki kodu girin."
};
globalThis.$altcha.i18n.set("tr", i18n$6);
const i18n$5 = {
ariaLinkLabel: "Altcha (rəsmi vebsayt)",
enterCode: "Kodu daxil edin",
enterCodeAria: "Eşitdiyiniz kodu daxil edin. Səsi dinləmək üçün Boşluq düyməsinə basın.",
error: "Təsdiqləmə uğursuz oldu. Daha sonra yenidən cəhd edin.",
expired: "Təsdiqləmə vaxtı bitdi. Yenidən cəhd edin.",
footer: 'Qorunur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (rəsmi vebsayt)">ALTCHA</a> tərəfindən',
getAudioChallenge: "Audio tapşırıq alın",
label: "Mən robot deyiləm",
loading: "Yüklənir...",
reload: "Yenilə",
verify: "Təsdiqlə",
verificationRequired: "Təsdiqləmə tələb olunur!",
verified: "Təsdiqləndi",
verifying: "Təsdiqlənir...",
waitAlert: "Təsdiqlənir... zəhmət olmasa gözləyin.",
cancel: "İmtina et",
enterCodeFromImage: "Davam etmək üçün, zəhmət olmasa aşağıdakı şəkildəki kodu daxil edin."
};
globalThis.$altcha.i18n.set("az", i18n$5);
const i18n$4 = {
ariaLinkLabel: "Altcha (պաշտոնական կայք)",
enterCode: "Մուտքագրեք կոդը",
enterCodeAria: "Մուտքագրեք այն կոդը, որը լսում եք։ Ձայնը նվագելու համար սեղմեք բացատ (Space):",
error: "Հաստատումը ձախողվեց։ Փորձեք ավելի ուշ։",
expired: "Հաստատման ժամկետը լրացել է։ Փորձեք կրկին։",
footer: 'Պաշտպանված է <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (պաշտոնական կայք)">ALTCHA</a>-ի կողմից',
getAudioChallenge: "Ստանալ ձայնային առաջադրանք",
label: "Ես ռոբոտ չեմ",
loading: "Բեռնվում է...",
reload: "Թարմացնել",
verify: "Հաստատել",
verificationRequired: "Պահանջվում է հաստատում։",
verified: "Հաստատված է",
verifying: "Հաստատվում է...",
waitAlert: "Հաստատվում է... խնդրում ենք սպասել։",
cancel: "Չեղարկել",
enterCodeFromImage: "Շարունակելու համար, խնդրում ենք մուտագրել ստորև պատկերից վերցված կոդը:"
};
globalThis.$altcha.i18n.set("hy", i18n$4);
const i18n$3 = {
ariaLinkLabel: "Altcha (ოფიციალური ვებსაიტი)",
enterCode: "შეიყვანეთ კოდი",
enterCodeAria: "შეიყვანეთ კოდი, რომელსაც გაიგონებთ. აუდიოს მოსასმენად დააჭირეთ Space-ს.",
error: "ვერიფიკაცია ჩაიშალა. სცადეთ მოგვიანებით.",
expired: "ვერიფიკაციის ვადა გავიდა. სცადეთ ხელახლა.",
footer: 'დაცულია <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ოფიციალური ვებსაიტი)">ALTCHA</a>-ით',
getAudioChallenge: "მიიღეთ აუდიო გამოწვევა",
label: "მე არ ვარ რობოტი",
loading: "იტვირთება...",
reload: "განახლება",
verify: "დადასტურება",
verificationRequired: "საჭიროა ვერიფიკაცია!",
verified: "დადასტურებულია",
verifying: "დადასტურება მიმდინარეობს...",
waitAlert: "დადასტურება მიმდინარეობს... გთხოვთ, დაიცადეთ.",
cancel: "გაუქმება",
enterCodeFromImage: "გაგრძელების მიზნით, გთხოვთ შეიყვანოთ კოდი ქვემოთ მოცემული სურათიდან."
};
globalThis.$altcha.i18n.set("ka", i18n$3);
const i18n$2 = {
ariaLinkLabel: "Altcha (ресми веб-сайт)",
enterCode: "Кодты енгізіңіз",
enterCodeAria: "Естіген кодыңызды енгізіңіз. Аудионы ойнату үшін Бос орынды басыңыз.",
error: "Тексеру сәтсіз аяқталды. Кейінірек қайталаңыз.",
expired: "Тексеру мерзімі аяқталды. Қайталаңыз.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ресми веб-сайт)">ALTCHA</a> қорғайды',
getAudioChallenge: "Аудио сынақ алу",
label: "Мен робот емеспін",
loading: "Жүктелуде...",
reload: "Қайта жүктеу",
verify: "Тексеру",
verificationRequired: "Тексеру талап етіледі!",
verified: "Тексерілді",
verifying: "Тексеруде...",
waitAlert: "Тексерілуде... күте тұрыңыз.",
cancel: "Болдыру",
enterCodeFromImage: "Жалғастыру үшін төмендегі суреттегі кодты енгізіңіз."
};
globalThis.$altcha.i18n.set("kk", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (resmi web sahypa)",
enterCode: "Kody giriziň",
enterCodeAria: "Eşiden kodyňyzy giriziň. Sesli görkezmäni diňlemek üçin Space basyň.",
error: "Barlamak şowsuz boldy. Has soňrak synanyşyň.",
expired: "Barlamanyň möhleti gutardy. Gaýtadan synanyşyň.",
footer: 'Goralan <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (resmi web sahypa)">ALTCHA</a> tarapyndan',
getAudioChallenge: "Sesli tabşyryk alyň",
label: "Men robot däl",
loading: "Ýüklenýär...",
reload: "Täzeden ýükle",
verify: "Barla",
verificationRequired: "Barlamak zerurdyr!",
verified: "Barlandy",
verifying: "Barlanýar...",
waitAlert: "Barlanýar... garaşyň.",
cancel: "Ýapmak",
enterCodeFromImage: "Dowam etmek üçin, aşakdaky suratyň koduny giriziň."
};
globalThis.$altcha.i18n.set("tk", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (rasmiy veb-sayt)",
enterCode: "Kodni kiriting",
enterCodeAria: "Eshitgan kodingizni kiriting. Audioni ijro etish uchun Bo'sh joy tugmasini bosing.",
error: "Tekshiruv muvaffaqiyatsiz tugadi. Keyinroq qayta urinib ko'ring.",
expired: "Tekshiruv muddati tugadi. Qayta urinib ko'ring.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (rasmiy veb-sayt)">ALTCHA</a> tomonidan himoyalangan',
getAudioChallenge: "Audio sinovni olish",
label: "Men robot emasman",
loading: "Yuklanmoqda...",
reload: "Qayta yuklash",
verify: "Tekshirish",
verificationRequired: "Tekshiruv talab qilinadi!",
verified: "Tekshirildi",
verifying: "Tekshirilmoqda...",
waitAlert: "Tekshirilmoqda... iltimos kuting.",
cancel: "Bekor qilish",
enterCodeFromImage: "Davom etish uchun, iltimos, quyidagi rasmda ko'rsatilgan kodni kiriting."
};
globalThis.$altcha.i18n.set("uz", i18n);
+593
View File
@@ -0,0 +1,593 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$n = {
ariaLinkLabel: "Altcha (官方网站)",
enterCode: "输入代码",
enterCodeAria: "输入您听到的代码。按空格键播放音频。",
error: "验证失败。稍后再试。",
expired: "验证已过期。请重试。",
footer: '由 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (官方网站)">ALTCHA</a> 保护',
getAudioChallenge: "获取音频挑战",
label: "我不是机器人",
loading: "加载中...",
reload: "重新加载",
verify: "验证",
verificationRequired: "需要验证!",
verified: "已验证",
verifying: "正在验证...",
waitAlert: "正在验证... 请稍等。",
cancel: "取消",
enterCodeFromImage: "为继续操作,请输入下图中显示的验证码。"
};
globalThis.$altcha.i18n.set("zh-cn", i18n$n);
const i18n$m = {
ariaLinkLabel: "Altcha (官方網站)",
cancel: "取消",
enterCode: "輸入代碼",
enterCodeAria: "輸入你聽到嘅代碼。按空格鍵播放音訊。",
enterCodeFromImage: "要繼續,請輸入下面圖片入面嘅代碼。",
error: "驗證失敗。請稍後再試。",
expired: "驗證已過期。請再試一次。",
footer: '由 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (官方網站)">ALTCHA</a> 提供保護',
getAudioChallenge: "取得音訊驗證",
label: "我唔係機械人",
loading: "載入中...",
reload: "重新載入",
verify: "驗證",
verificationRequired: "需要驗證!",
verified: "已驗證",
verifying: "驗證中...",
waitAlert: "驗證中... 請稍候。"
};
globalThis.$altcha.i18n.set("zh-hk", i18n$m);
const i18n$l = {
ariaLinkLabel: "Altcha (官方網站)",
enterCode: "輸入代碼",
enterCodeAria: "輸入您聽到的代碼。按空格鍵播放音頻。",
error: "驗證失敗。稍後再試。",
expired: "驗證已過期。請重試。",
footer: '由 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (官方網站)">ALTCHA</a> 保護',
getAudioChallenge: "獲取音頻挑戰",
label: "我不是機器人",
loading: "載入中...",
reload: "重新載入",
verify: "驗證",
verificationRequired: "需要驗證!",
verified: "已驗證",
verifying: "正在驗證...",
waitAlert: "正在驗證... 請稍等。",
cancel: "取消",
enterCodeFromImage: "若要繼續,請輸入下方的圖片驗證碼。"
};
globalThis.$altcha.i18n.set("zh-tw", i18n$l);
const i18n$k = {
ariaLinkLabel: "Altcha (公式ウェブサイト)",
enterCode: "コードを入力",
enterCodeAria: "聞こえるコードを入力してください。スペースキーを押して音声を再生します。",
error: "認証に失敗しました。後でもう一度試してください。",
expired: "認証が期限切れです。再試行してください。",
footer: '保護されています <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (公式ウェブサイト)">ALTCHA</a>',
getAudioChallenge: "音声チャレンジを取得",
label: "私はロボットではありません",
loading: "読み込み中...",
reload: "再読み込み",
verify: "確認",
verificationRequired: "認証が必要です!",
verified: "確認済み",
verifying: "確認中...",
waitAlert: "確認中...少々お待ちください。",
cancel: "キャンセル",
enterCodeFromImage: "続行するには、以下の画像からコードを入力してください。"
};
globalThis.$altcha.i18n.set("ja", i18n$k);
const i18n$j = {
ariaLinkLabel: "Altcha (공식 웹사이트)",
enterCode: "코드 입력",
enterCodeAria: "들리는 코드를 입력하세요. 스페이스 바를 눌러 오디오를 재생합니다.",
error: "인증 실패. 나중에 다시 시도해주세요.",
expired: "인증이 만료되었습니다. 다시 시도해주세요.",
footer: 'ALTCHA에서 보호됨 <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (공식 웹사이트)">ALTCHA</a>',
getAudioChallenge: "오디오 챌린지 받기",
label: "저는 로봇이 아닙니다",
loading: "로딩 중...",
reload: "새로 고침",
verify: "확인",
verificationRequired: "인증이 필요합니다!",
verified: "확인됨",
verifying: "확인 중...",
waitAlert: "확인 중... 잠시만 기다려주세요.",
cancel: "취소",
enterCodeFromImage: "계속 진행하려면 아래 이미지에서 코드를 입력하세요."
};
globalThis.$altcha.i18n.set("ko", i18n$j);
const i18n$i = {
ariaLinkLabel: "Altcha (आधिकारिक वेबसाइट)",
enterCode: "कोड दर्ज करेंं",
enterCodeAria: "आप जो कोड सुनते हैं उसे दर्ज करें। ऑडियो चलाने के लिए स्पेस दबाएं।",
error: "सत्यापन विफल। कृपया बाद में फिर से प्रयास करें।",
expired: "सत्यापन समाप्त हो गया है। कृपया पुनः प्रयास करें।",
footer: 'द्वारा संरक्षित <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (आधिकारिक वेबसाइट)">ALTCHA</a>',
getAudioChallenge: "ऑडियो चुनौती प्राप्त करें",
label: "मैं रोबोट नहीं हूँ",
loading: "लोड हो रहा है...",
reload: "पुनः लोड करें",
verify: "सत्यापित करें",
verificationRequired: "सत्यापन आवश्यक है!",
verified: "सत्यापित",
verifying: "सत्यापित कर रहे हैं...",
waitAlert: "सत्यापित किया जा रहा है... कृपया प्रतीक्षा करें।",
cancel: "रद्द करें",
enterCodeFromImage: "आगे बढ़ने के लिए, कृपया नीचे दी गई छवि से कोड दर्ज करें।"
};
globalThis.$altcha.i18n.set("hi", i18n$i);
const i18n$h = {
ariaLinkLabel: "Altcha (অফিসিয়াল ওয়েবসাইট)",
enterCode: "কোড লিখুন",
enterCodeAria: "আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।",
error: "যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।",
expired: "যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।",
footer: 'দ্বারা সুরক্ষিত <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (অফিসিয়াল ওয়েবসাইট)">ALTCHA</a>',
getAudioChallenge: "অডিও চ্যালেঞ্জ নিন",
label: "আমি রোবট নই",
loading: "লোড হচ্ছে...",
reload: "পুনরায় লোড করুন",
verify: "যাচাই করুন",
verificationRequired: "যাচাই প্রয়োজন!",
verified: "যাচাই করা হয়েছে",
verifying: "যাচাই করা হচ্ছে...",
waitAlert: "যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।",
cancel: "বাতিল করুন",
enterCodeFromImage: "এগিয়ে যেতে, অনুগ্রহ করে নীচের চিত্র থেকে কোডটি প্রবেশ করান।"
};
globalThis.$altcha.i18n.set("bn", i18n$h);
const i18n$g = {
ariaLinkLabel: "Altcha (अधिकृत संकेतस्थळ)",
enterCode: "कोड टाकाा",
enterCodeAria: "तुम्ही ऐकत असलेला कोड टाका. ऑडिओ प्ले करण्यासाठी स्पेस दाबा.",
error: "पुष्टीकरण अयशस्वी झाले. कृपया नंतर पुन्हा प्रयत्न करा.",
expired: "पुष्टीकरण कालबाह्य झाले आहे. कृपया पुन्हा प्रयत्न करा.",
footer: 'द्वारे संरक्षित <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (अधिकृत संकेतस्थळ)">ALTCHA</a>',
getAudioChallenge: "ऑडिओ चॅलेंज मिळवा",
label: "मी रोबोट नाही",
loading: "लोड होत आहे...",
reload: "पुन्हा लोड करा",
verify: "पुष्टीकरण करा",
verificationRequired: "पडताळणी आवश्यक आहे!",
verified: "पुष्टीकरण झाले",
verifying: "पुष्टीकरण करत आहे...",
waitAlert: "पुष्टीकरण करत आहे... कृपया थोडा वेळ थांबा.",
cancel: "रद्द करा",
enterCodeFromImage: "पुढे जाण्यासाठी, कृपया खालील प्रतिमेतील कोड प्रविष्ट करा."
};
globalThis.$altcha.i18n.set("mr", i18n$g);
const i18n$f = {
ariaLinkLabel: "Altcha (అధికారిక వెబ్‌సైట్)",
enterCode: "కోడ్‌ని నమోదు చేయండి",
enterCodeAria: "మీరు విన్న కోడ్‌ని నమోదు చేయండి. ఆడియో ప్లే చేయడానికి స్పేస్‌ను నొక్కండి.",
error: "చెకింగ్ విఫలమైంది. దయచేసి మరల ప్రయత్నించండి.",
expired: "చెకింగ్ కాలం ముగిసింది. దయచేసి మరల ప్రయత్నించండి.",
footer: 'ఈ సైట్ రక్షించబడింది <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (అధికారిక వెబ్‌సైట్)">ALTCHA</a>',
getAudioChallenge: "ఆడియో ఛాలెంజ్ పొందండి",
label: "నేను రోబోట్ కాదు",
loading: "లోడ్ అవుతోంది...",
reload: "మళ్ళీ లోడ్ చేయండి",
verify: "ధ్రువీకరించు",
verificationRequired: "ధృవీకరణ అవసరం!",
verified: "ధ్రువీకరించబడింది",
verifying: "ధ్రువీకరణ జరుగుతుంది...",
waitAlert: "ధ్రువీకరణ జరుగుతుంది... దయచేసి వేచి ఉండండి.",
cancel: "రద్దు చేయండి",
enterCodeFromImage: "కొనసాగడానికి, దయచేసి క్రింది చిత్రంలో ఉన్న కోడ్‌ను నమోదు చేయండి."
};
globalThis.$altcha.i18n.set("te", i18n$f);
const i18n$e = {
ariaLinkLabel: "Altcha (அதிகாரப்பூர்வ வலைத்தளம்)",
enterCode: "குறியீட்டை உள்ளிடவும்",
enterCodeAria: "நீங்கள் கேட்கும் குறியீட்டை உள்ளிடவும். ஆடியோவை இயக்க Space ஐ அழுத்தவும்.",
error: "சரிபார்ப்பு தோல்வி. பிறகு மீண்டும் முயற்சிக்கவும்.",
expired: "சரிபார்ப்பு காலாவதியானது. மீண்டும் முயற்சிக்கவும்.",
footer: 'மூலமாக பாதுகாக்கப்பட்டவை <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (அதிகாரப்பூர்வ வலைத்தளம்)">ALTCHA</a>',
getAudioChallenge: "ஒலி சவாலை பெறவும்",
label: "நான் ரோபோடான அல்ல",
loading: "செயலாக்கம்...",
reload: "மீண்டும் புதுப்பிக்கவும்",
verify: "சரிபார்க்கவும்",
verificationRequired: "சரிபார்ப்பு தேவை!",
verified: "சரிபார்க்கப்பட்டது",
verifying: "சரிபார்க்கப்படுகிறது...",
waitAlert: "சரிபார்க்கப்படுகிறது... தயவுசெய்து காத்திருக்கவும்.",
cancel: "ரத்துசெய்",
enterCodeFromImage: "தொடர, கீழே உள்ள படத்திலிருந்து குறியீட்டை உள்ளிடவும்."
};
globalThis.$altcha.i18n.set("ta", i18n$e);
const i18n$d = {
ariaLinkLabel: "Altcha (سرکاری ویب سائٹ)",
enterCode: "کوڈ درج کریں",
enterCodeAria: "جو کوڈ آپ سنتے ہیں وہ درج کریں۔ آڈیو چلانے کے لیے اسپیس دبائیں۔",
error: "توثیق ناکام ہو گئی۔ براہ کرم بعد میں دوبارہ کوشش کریں۔",
expired: "توثیق کی مدت ختم ہو گئی ہے۔ براہ کرم دوبارہ کوشش کریں۔",
footer: 'کے ذریعے محفوظ <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (سرکاری ویب سائٹ)">ALTCHA</a>',
getAudioChallenge: "آڈیو چیلنج حاصل کریں",
label: "میں روبوٹ نہیں ہوں",
loading: "لوڈ ہو رہا ہے...",
reload: "دوبارہ لوڈ کریں",
verify: "توثیق کریں",
verificationRequired: "تصدیق ضروری ہے!",
verified: "توثیق شدہ",
verifying: "توثیق ہو رہی ہے...",
waitAlert: "توثیق ہو رہی ہے... براہ کرم انتظار کریں۔",
cancel: "منسوخ کریں",
enterCodeFromImage: "اگلے مرحلے پر جانے کے لیے، براہ کرم نیچے دی گئی تصویر سے کوڈ درج کریں۔"
};
globalThis.$altcha.i18n.set("ur", i18n$d);
const i18n$c = {
ariaLinkLabel: "Altcha (situs web resmi)",
enterCode: "Masukkan kode",
enterCodeAria: "Masukkan kode yang Anda dengar. Tekan Spasi untuk memutar audio.",
error: "Verifikasi gagal. Coba lagi nanti.",
expired: "Verifikasi telah kedaluwarsa. Coba lagi.",
footer: 'Dilindungi oleh <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (situs web resmi)">ALTCHA</a>',
getAudioChallenge: "Dapatkan tantangan audio",
label: "Saya bukan robot",
loading: "Memuat...",
reload: "Muat ulang",
verify: "Verifikasi",
verificationRequired: "Verifikasi diperlukan!",
verified: "Terverifikasi",
verifying: "Memverifikasi...",
waitAlert: "Memverifikasi... harap tunggu.",
cancel: "Batal",
enterCodeFromImage: "Untuk melanjutkan, silakan masukkan kode dari gambar di bawah ini."
};
globalThis.$altcha.i18n.set("id", i18n$c);
const i18n$b = {
ariaLinkLabel: "Altcha (เว็บไซต์ทางการ)",
enterCode: "ป้อนรหัส",
enterCodeAria: "ป้อนรหัสที่คุณได้ยิน กด Space เพื่อเล่นเสียง",
error: "การตรวจสอบล้มเหลว กรุณาลองอีกครั้งภายหลัง",
expired: "การตรวจสอบหมดอายุ กรุณาลองใหม่",
footer: 'ป้องกันโดย <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (เว็บไซต์ทางการ)">ALTCHA</a>',
getAudioChallenge: "รับการท้าทายเสียง",
label: "ฉันไม่ใช่บอท",
loading: "กำลังโหลด...",
reload: "โหลดใหม่",
verify: "ตรวจสอบ",
verificationRequired: "จำเป็นต้องตรวจสอบ!",
verified: "ตรวจสอบแล้ว",
verifying: "กำลังตรวจสอบ...",
waitAlert: "กำลังตรวจสอบ... กรุณารอ",
cancel: "ยกเลิก",
enterCodeFromImage: "เพื่อดำเนินการต่อ โปรดป้อนรหัสจากรูปภาพด้านล่าง"
};
globalThis.$altcha.i18n.set("th", i18n$b);
const i18n$a = {
ariaLinkLabel: "Altcha (trang web chính thức)",
enterCode: "Nhập mã",
enterCodeAria: "Nhập mã bạn nghe được. Nhấn Phím cách để phát âm thanh.",
error: "Xác minh thất bại. Vui lòng thử lại sau.",
expired: "Xác minh đã hết hạn. Vui lòng thử lại.",
footer: 'Được bảo vệ bởi <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (trang web chính thức)">ALTCHA</a>',
getAudioChallenge: "Nhận thử thách âm thanh",
label: "Tôi không phải là robot",
loading: "Đang tải...",
reload: "Tải lại",
verify: "Xác minh",
verificationRequired: "Yêu cầu xác minh!",
verified: "Đã xác minh",
verifying: "Đang xác minh...",
waitAlert: "Đang xác minh... vui lòng chờ.",
cancel: "Hủy bỏ",
enterCodeFromImage: "Để tiếp tục, vui lòng nhập mã từ hình ảnh bên dưới."
};
globalThis.$altcha.i18n.set("vi", i18n$a);
const i18n$9 = {
ariaLinkLabel: "Altcha (الموقع الرسمي)",
enterCode: "أدخل الرمز",
enterCodeAria: "أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",
error: "فشل التحقق. حاول مرة أخرى لاحقاً.",
expired: "انتهت صلاحية التحقق. حاول مرة أخرى.",
footer: 'محمي بواسطة <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (الموقع الرسمي)">ALTCHA</a>',
getAudioChallenge: "احصل على تحدي صوتي",
label: "أنا لست روبوتاً",
loading: "جارٍ التحميل...",
reload: "إعادة تحميل",
verify: "تحقق",
verificationRequired: "مطلوب التحقق!",
verified: "تم التحقق",
verifying: "جارٍ التحقق...",
waitAlert: "جارٍ التحقق... يرجى الانتظار.",
cancel: "إلغاء",
enterCodeFromImage: "للمتابعة، يرجى إدخال الرمز من الصورة أدناه."
};
globalThis.$altcha.i18n.set("ar", i18n$9);
const i18n$8 = {
ariaLinkLabel: "Altcha (وب‌سایت رسمی)",
enterCode: "کد را وارد کنید",
enterCodeAria: "کدی که می‌شنوید را وارد کنید. برای پخش صدا Space را فشار دهید.",
error: "احراز هویت ناموفق بود. بعداً دوباره تلاش کنید.",
expired: "احراز هویت منقضی شد. دوباره تلاش کنید.",
footer: 'محافظت شده توسط <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (وب‌سایت رسمی)">ALTCHA</a>',
getAudioChallenge: "دریافت چالش صوتی",
label: "من ربات نیستم",
loading: "در حال بارگذاری...",
reload: "بارگذاری مجدد",
verify: "تایید",
verificationRequired: "احراز هویت لازم است!",
verified: "تایید شد",
verifying: "در حال تایید...",
waitAlert: "در حال تایید... لطفا منتظر بمانید.",
cancel: "لغو کردن",
enterCodeFromImage: "برای ادامه، لطفاً کد تصویر زیر را وارد کنید."
};
globalThis.$altcha.i18n.set("fa", i18n$8);
const i18n$7 = {
ariaLinkLabel: "Altcha (אתר רשמי)",
enterCode: "הזן קוד",
enterCodeAria: "הזן את הקוד שאתה שומע. לחץ על רווח להפעלת השמע.",
error: "האימות נכשל. נסה שוב מאוחר יותר.",
expired: "תוקף האימות פג. נסה שוב.",
footer: 'מוגן על ידי <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (אתר רשמי)">ALTCHA</a>',
getAudioChallenge: "קבל אתגר שמע",
label: "אני לא רובוט",
loading: "טוען...",
reload: "טען מחדש",
verify: "אמת",
verificationRequired: "נדרש אימות!",
verified: "אומת",
verifying: "מאמת...",
waitAlert: "מבצע אימות... אנא המתן.",
cancel: "ביטול",
enterCodeFromImage: "כדי להמשיך, אנא הזן את הקוד מהתמונה למטה."
};
globalThis.$altcha.i18n.set("he", i18n$7);
const i18n$6 = {
ariaLinkLabel: "Altcha (resmi web sitesi)",
enterCode: "Kodu girin",
enterCodeAria: "Duyduğunuz kodu girin. Ses dosyasını oynatmak için Boşluk tuşuna basın.",
error: "Doğrulama başarısız oldu. Lütfen daha sonra tekrar deneyin.",
expired: "Doğrulama süresi doldu. Lütfen tekrar deneyin.",
footer: 'ALTCHA tarafından korunuyor <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (resmi web sitesi)">ALTCHA</a>',
getAudioChallenge: "Sesli doğrulama al",
label: "Ben robot değilim",
loading: "Yükleniyor...",
reload: "Yeniden yükle",
verify: "Doğrula",
verificationRequired: "Doğrulama gerekli!",
verified: "Doğrulandı",
verifying: "Doğrulama yapılıyor...",
waitAlert: "Doğrulama yapılıyor... lütfen bekleyin.",
cancel: "İptal",
enterCodeFromImage: "Devam etmek için lütfen aşağıdaki resimdeki kodu girin."
};
globalThis.$altcha.i18n.set("tr", i18n$6);
const i18n$5 = {
ariaLinkLabel: "Altcha (rəsmi vebsayt)",
enterCode: "Kodu daxil edin",
enterCodeAria: "Eşitdiyiniz kodu daxil edin. Səsi dinləmək üçün Boşluq düyməsinə basın.",
error: "Təsdiqləmə uğursuz oldu. Daha sonra yenidən cəhd edin.",
expired: "Təsdiqləmə vaxtı bitdi. Yenidən cəhd edin.",
footer: 'Qorunur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (rəsmi vebsayt)">ALTCHA</a> tərəfindən',
getAudioChallenge: "Audio tapşırıq alın",
label: "Mən robot deyiləm",
loading: "Yüklənir...",
reload: "Yenilə",
verify: "Təsdiqlə",
verificationRequired: "Təsdiqləmə tələb olunur!",
verified: "Təsdiqləndi",
verifying: "Təsdiqlənir...",
waitAlert: "Təsdiqlənir... zəhmət olmasa gözləyin.",
cancel: "İmtina et",
enterCodeFromImage: "Davam etmək üçün, zəhmət olmasa aşağıdakı şəkildəki kodu daxil edin."
};
globalThis.$altcha.i18n.set("az", i18n$5);
const i18n$4 = {
ariaLinkLabel: "Altcha (պաշտոնական կայք)",
enterCode: "Մուտքագրեք կոդը",
enterCodeAria: "Մուտքագրեք այն կոդը, որը լսում եք։ Ձայնը նվագելու համար սեղմեք բացատ (Space):",
error: "Հաստատումը ձախողվեց։ Փորձեք ավելի ուշ։",
expired: "Հաստատման ժամկետը լրացել է։ Փորձեք կրկին։",
footer: 'Պաշտպանված է <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (պաշտոնական կայք)">ALTCHA</a>-ի կողմից',
getAudioChallenge: "Ստանալ ձայնային առաջադրանք",
label: "Ես ռոբոտ չեմ",
loading: "Բեռնվում է...",
reload: "Թարմացնել",
verify: "Հաստատել",
verificationRequired: "Պահանջվում է հաստատում։",
verified: "Հաստատված է",
verifying: "Հաստատվում է...",
waitAlert: "Հաստատվում է... խնդրում ենք սպասել։",
cancel: "Չեղարկել",
enterCodeFromImage: "Շարունակելու համար, խնդրում ենք մուտագրել ստորև պատկերից վերցված կոդը:"
};
globalThis.$altcha.i18n.set("hy", i18n$4);
const i18n$3 = {
ariaLinkLabel: "Altcha (ოფიციალური ვებსაიტი)",
enterCode: "შეიყვანეთ კოდი",
enterCodeAria: "შეიყვანეთ კოდი, რომელსაც გაიგონებთ. აუდიოს მოსასმენად დააჭირეთ Space-ს.",
error: "ვერიფიკაცია ჩაიშალა. სცადეთ მოგვიანებით.",
expired: "ვერიფიკაციის ვადა გავიდა. სცადეთ ხელახლა.",
footer: 'დაცულია <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ოფიციალური ვებსაიტი)">ALTCHA</a>-ით',
getAudioChallenge: "მიიღეთ აუდიო გამოწვევა",
label: "მე არ ვარ რობოტი",
loading: "იტვირთება...",
reload: "განახლება",
verify: "დადასტურება",
verificationRequired: "საჭიროა ვერიფიკაცია!",
verified: "დადასტურებულია",
verifying: "დადასტურება მიმდინარეობს...",
waitAlert: "დადასტურება მიმდინარეობს... გთხოვთ, დაიცადეთ.",
cancel: "გაუქმება",
enterCodeFromImage: "გაგრძელების მიზნით, გთხოვთ შეიყვანოთ კოდი ქვემოთ მოცემული სურათიდან."
};
globalThis.$altcha.i18n.set("ka", i18n$3);
const i18n$2 = {
ariaLinkLabel: "Altcha (ресми веб-сайт)",
enterCode: "Кодты енгізіңіз",
enterCodeAria: "Естіген кодыңызды енгізіңіз. Аудионы ойнату үшін Бос орынды басыңыз.",
error: "Тексеру сәтсіз аяқталды. Кейінірек қайталаңыз.",
expired: "Тексеру мерзімі аяқталды. Қайталаңыз.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ресми веб-сайт)">ALTCHA</a> қорғайды',
getAudioChallenge: "Аудио сынақ алу",
label: "Мен робот емеспін",
loading: "Жүктелуде...",
reload: "Қайта жүктеу",
verify: "Тексеру",
verificationRequired: "Тексеру талап етіледі!",
verified: "Тексерілді",
verifying: "Тексеруде...",
waitAlert: "Тексерілуде... күте тұрыңыз.",
cancel: "Болдыру",
enterCodeFromImage: "Жалғастыру үшін төмендегі суреттегі кодты енгізіңіз."
};
globalThis.$altcha.i18n.set("kk", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (resmi web sahypa)",
enterCode: "Kody giriziň",
enterCodeAria: "Eşiden kodyňyzy giriziň. Sesli görkezmäni diňlemek üçin Space basyň.",
error: "Barlamak şowsuz boldy. Has soňrak synanyşyň.",
expired: "Barlamanyň möhleti gutardy. Gaýtadan synanyşyň.",
footer: 'Goralan <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (resmi web sahypa)">ALTCHA</a> tarapyndan',
getAudioChallenge: "Sesli tabşyryk alyň",
label: "Men robot däl",
loading: "Ýüklenýär...",
reload: "Täzeden ýükle",
verify: "Barla",
verificationRequired: "Barlamak zerurdyr!",
verified: "Barlandy",
verifying: "Barlanýar...",
waitAlert: "Barlanýar... garaşyň.",
cancel: "Ýapmak",
enterCodeFromImage: "Dowam etmek üçin, aşakdaky suratyň koduny giriziň."
};
globalThis.$altcha.i18n.set("tk", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (rasmiy veb-sayt)",
enterCode: "Kodni kiriting",
enterCodeAria: "Eshitgan kodingizni kiriting. Audioni ijro etish uchun Bo'sh joy tugmasini bosing.",
error: "Tekshiruv muvaffaqiyatsiz tugadi. Keyinroq qayta urinib ko'ring.",
expired: "Tekshiruv muddati tugadi. Qayta urinib ko'ring.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (rasmiy veb-sayt)">ALTCHA</a> tomonidan himoyalangan',
getAudioChallenge: "Audio sinovni olish",
label: "Men robot emasman",
loading: "Yuklanmoqda...",
reload: "Qayta yuklash",
verify: "Tekshirish",
verificationRequired: "Tekshiruv talab qilinadi!",
verified: "Tekshirildi",
verifying: "Tekshirilmoqda...",
waitAlert: "Tekshirilmoqda... iltimos kuting.",
cancel: "Bekor qilish",
enterCodeFromImage: "Davom etish uchun, iltimos, quyidagi rasmda ko'rsatilgan kodni kiriting."
};
globalThis.$altcha.i18n.set("uz", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/az'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (rəsmi vebsayt)",
enterCode: "Kodu daxil edin",
enterCodeAria: "Eşitdiyiniz kodu daxil edin. Səsi dinləmək üçün Boşluq düyməsinə basın.",
error: "Təsdiqləmə uğursuz oldu. Daha sonra yenidən cəhd edin.",
expired: "Təsdiqləmə vaxtı bitdi. Yenidən cəhd edin.",
footer: 'Qorunur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (rəsmi vebsayt)">ALTCHA</a> tərəfindən',
getAudioChallenge: "Audio tapşırıq alın",
label: "Mən robot deyiləm",
loading: "Yüklənir...",
reload: "Yenilə",
verify: "Təsdiqlə",
verificationRequired: "Təsdiqləmə tələb olunur!",
verified: "Təsdiqləndi",
verifying: "Təsdiqlənir...",
waitAlert: "Təsdiqlənir... zəhmət olmasa gözləyin.",
cancel: "İmtina et",
enterCodeFromImage: "Davam etmək üçün, zəhmət olmasa aşağıdakı şəkildəki kodu daxil edin."
};
globalThis.$altcha.i18n.set("az", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (rəsmi vebsayt)",
enterCode: "Kodu daxil edin",
enterCodeAria: "Eşitdiyiniz kodu daxil edin. Səsi dinləmək üçün Boşluq düyməsinə basın.",
error: "Təsdiqləmə uğursuz oldu. Daha sonra yenidən cəhd edin.",
expired: "Təsdiqləmə vaxtı bitdi. Yenidən cəhd edin.",
footer: 'Qorunur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (rəsmi vebsayt)">ALTCHA</a> tərəfindən',
getAudioChallenge: "Audio tapşırıq alın",
label: "Mən robot deyiləm",
loading: "Yüklənir...",
reload: "Yenilə",
verify: "Təsdiqlə",
verificationRequired: "Təsdiqləmə tələb olunur!",
verified: "Təsdiqləndi",
verifying: "Təsdiqlənir...",
waitAlert: "Təsdiqlənir... zəhmət olmasa gözləyin.",
cancel: "İmtina et",
enterCodeFromImage: "Davam etmək üçün, zəhmət olmasa aşağıdakı şəkildəki kodu daxil edin."
};
globalThis.$altcha.i18n.set("az", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/be'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (афіцыйны сайт)",
enterCode: "Увядзіце код",
enterCodeAria: "Увядзіце код, які вы чуеце. Націсніце прабел, каб прайграць аўдыё.",
error: "Праверка не прайшла. Паспрабуйце пазней.",
expired: "Тэрмін праверкі скончыўся. Паспрабуйце зноў.",
footer: 'Абаронена <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (афіцыйны сайт)">ALTCHA</a>',
getAudioChallenge: "Атрымаць аўдыё выклік",
label: "Я не робат",
loading: "Загрузка...",
reload: "Перазагрузіць",
verify: "Праверыць",
verificationRequired: "Патрабуецца праверка!",
verified: "Праверана",
verifying: "Правяраем...",
waitAlert: "Праверка... калі ласка, пачакайце.",
cancel: "Скасаваць",
enterCodeFromImage: "Каб працягнуць, увядзіце код з малюнка ніжэй."
};
globalThis.$altcha.i18n.set("be", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (афіцыйны сайт)",
enterCode: "Увядзіце код",
enterCodeAria: "Увядзіце код, які вы чуеце. Націсніце прабел, каб прайграць аўдыё.",
error: "Праверка не прайшла. Паспрабуйце пазней.",
expired: "Тэрмін праверкі скончыўся. Паспрабуйце зноў.",
footer: 'Абаронена <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (афіцыйны сайт)">ALTCHA</a>',
getAudioChallenge: "Атрымаць аўдыё выклік",
label: "Я не робат",
loading: "Загрузка...",
reload: "Перазагрузіць",
verify: "Праверыць",
verificationRequired: "Патрабуецца праверка!",
verified: "Праверана",
verifying: "Правяраем...",
waitAlert: "Праверка... калі ласка, пачакайце.",
cancel: "Скасаваць",
enterCodeFromImage: "Каб працягнуць, увядзіце код з малюнка ніжэй."
};
globalThis.$altcha.i18n.set("be", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/bg'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (официален уебсайт)",
enterCode: "Въведете код",
enterCodeAria: "Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.",
error: "Проверката неуспешна. Моля, опитайте по-късно.",
expired: "Времето за проверка изтече. Моля, опитайте отново.",
footer: 'Защитено от <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официален уебсайт)">ALTCHA</a>',
getAudioChallenge: "Аудио проверка",
label: "Аз не съм робот",
loading: "Зареждане...",
reload: "Презареди",
verify: "Провери",
verificationRequired: "Изисква се проверка!",
verified: "Проверено",
verifying: "Проверява се...",
waitAlert: "Проверката е в процес... моля изчакайте.",
cancel: "Отказ",
enterCodeFromImage: "За да продължите, моля, въведете кода от изображението по-долу."
};
globalThis.$altcha.i18n.set("bg", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (официален уебсайт)",
enterCode: "Въведете код",
enterCodeAria: "Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.",
error: "Проверката неуспешна. Моля, опитайте по-късно.",
expired: "Времето за проверка изтече. Моля, опитайте отново.",
footer: 'Защитено от <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официален уебсайт)">ALTCHA</a>',
getAudioChallenge: "Аудио проверка",
label: "Аз не съм робот",
loading: "Зареждане...",
reload: "Презареди",
verify: "Провери",
verificationRequired: "Изисква се проверка!",
verified: "Проверено",
verifying: "Проверява се...",
waitAlert: "Проверката е в процес... моля изчакайте.",
cancel: "Отказ",
enterCodeFromImage: "За да продължите, моля, въведете кода от изображението по-долу."
};
globalThis.$altcha.i18n.set("bg", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/bn'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (অফিসিয়াল ওয়েবসাইট)",
enterCode: "কোড লিখুন",
enterCodeAria: "আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।",
error: "যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।",
expired: "যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।",
footer: 'দ্বারা সুরক্ষিত <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (অফিসিয়াল ওয়েবসাইট)">ALTCHA</a>',
getAudioChallenge: "অডিও চ্যালেঞ্জ নিন",
label: "আমি রোবট নই",
loading: "লোড হচ্ছে...",
reload: "পুনরায় লোড করুন",
verify: "যাচাই করুন",
verificationRequired: "যাচাই প্রয়োজন!",
verified: "যাচাই করা হয়েছে",
verifying: "যাচাই করা হচ্ছে...",
waitAlert: "যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।",
cancel: "বাতিল করুন",
enterCodeFromImage: "এগিয়ে যেতে, অনুগ্রহ করে নীচের চিত্র থেকে কোডটি প্রবেশ করান।"
};
globalThis.$altcha.i18n.set("bn", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (অফিসিয়াল ওয়েবসাইট)",
enterCode: "কোড লিখুন",
enterCodeAria: "আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।",
error: "যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।",
expired: "যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।",
footer: 'দ্বারা সুরক্ষিত <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (অফিসিয়াল ওয়েবসাইট)">ALTCHA</a>',
getAudioChallenge: "অডিও চ্যালেঞ্জ নিন",
label: "আমি রোবট নই",
loading: "লোড হচ্ছে...",
reload: "পুনরায় লোড করুন",
verify: "যাচাই করুন",
verificationRequired: "যাচাই প্রয়োজন!",
verified: "যাচাই করা হয়েছে",
verifying: "যাচাই করা হচ্ছে...",
waitAlert: "যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।",
cancel: "বাতিল করুন",
enterCodeFromImage: "এগিয়ে যেতে, অনুগ্রহ করে নীচের চিত্র থেকে কোডটি প্রবেশ করান।"
};
globalThis.$altcha.i18n.set("bn", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/br'; export {};
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/bs'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (službena web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",
error: "Verifikacija nije uspjela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (službena web stranica)">ALTCHA</a>',
getAudioChallenge: "Dohvatite audio izazov",
label: "Nisam robot",
loading: "Učitavanje...",
reload: "Ponovno učitaj",
verify: "Verifikuj",
verificationRequired: "Verifikacija je obavezna!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikacija u toku... molimo vas da sačekate.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak, molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("bs", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (službena web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",
error: "Verifikacija nije uspjela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (službena web stranica)">ALTCHA</a>',
getAudioChallenge: "Dohvatite audio izazov",
label: "Nisam robot",
loading: "Učitavanje...",
reload: "Ponovno učitaj",
verify: "Verifikuj",
verificationRequired: "Verifikacija je obavezna!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikacija u toku... molimo vas da sačekate.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak, molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("bs", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/ca'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (lloc web oficial)",
enterCode: "Introdueix el codi",
enterCodeAria: "Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.",
error: "Verificació fallida. Torna-ho a provar més tard.",
expired: "Verificació expirada. Torna-ho a provar.",
footer: 'Protegit per <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (lloc web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtenir un desafiament d’àudio",
label: "No sóc un robot",
loading: "Carregant...",
reload: "Torna a carregar",
verify: "Verificar",
verificationRequired: "Es requereix verificació!",
verified: "Verificat",
verifying: "Verificant...",
waitAlert: "Verificant... si us plau, espera.",
cancel: "Cancel·la",
enterCodeFromImage: "Per continuar, si us plau, introdueix el codi de la imatge següent."
};
globalThis.$altcha.i18n.set("ca", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (lloc web oficial)",
enterCode: "Introdueix el codi",
enterCodeAria: "Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.",
error: "Verificació fallida. Torna-ho a provar més tard.",
expired: "Verificació expirada. Torna-ho a provar.",
footer: 'Protegit per <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (lloc web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtenir un desafiament d’àudio",
label: "No sóc un robot",
loading: "Carregant...",
reload: "Torna a carregar",
verify: "Verificar",
verificationRequired: "Es requereix verificació!",
verified: "Verificat",
verifying: "Verificant...",
waitAlert: "Verificant... si us plau, espera.",
cancel: "Cancel·la",
enterCodeFromImage: "Per continuar, si us plau, introdueix el codi de la imatge següent."
};
globalThis.$altcha.i18n.set("ca", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/cn'; export {};
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/cs'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (oficiální web)",
enterCode: "Zadejte kód",
enterCodeAria: "Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.",
error: "Ověření selhalo. Zkuste to prosím později.",
expired: "Ověření vypršelo. Zkuste to prosím znovu.",
footer: 'Chráněno pomocí <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiální web)">ALTCHA</a>',
getAudioChallenge: "Získat audio výzvu",
label: "Nejsem robot",
loading: "Načítání...",
reload: "Znovu načíst",
verify: "Ověřit",
verificationRequired: "Vyžaduje se ověření!",
verified: "Ověřeno",
verifying: "Ověřování...",
waitAlert: "Probíhá ověření... prosím počkejte.",
cancel: "Zrušit",
enterCodeFromImage: "Pro pokračování zadejte kód z obrázku níže."
};
globalThis.$altcha.i18n.set("cs", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (oficiální web)",
enterCode: "Zadejte kód",
enterCodeAria: "Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.",
error: "Ověření selhalo. Zkuste to prosím později.",
expired: "Ověření vypršelo. Zkuste to prosím znovu.",
footer: 'Chráněno pomocí <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiální web)">ALTCHA</a>',
getAudioChallenge: "Získat audio výzvu",
label: "Nejsem robot",
loading: "Načítání...",
reload: "Znovu načíst",
verify: "Ověřit",
verificationRequired: "Vyžaduje se ověření!",
verified: "Ověřeno",
verifying: "Ověřování...",
waitAlert: "Probíhá ověření... prosím počkejte.",
cancel: "Zrušit",
enterCodeFromImage: "Pro pokračování zadejte kód z obrázku níže."
};
globalThis.$altcha.i18n.set("cs", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/da'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (officiel hjemmeside)",
enterCode: "Indtast kode",
enterCodeAria: "Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.",
error: "Verificering mislykkedes. Prøv venligst igen senere.",
expired: "Verificering udløbet. Prøv venligst igen.",
footer: 'Beskyttet af <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiel hjemmeside)">ALTCHA</a>',
getAudioChallenge: "Hent lydudfordring",
label: "Jeg er ikke en robot",
loading: "Indlæser...",
reload: "Genindlæs",
verify: "Verificer",
verificationRequired: "Verificering kræves!",
verified: "Verificeret",
verifying: "Verificerer...",
waitAlert: "Verificerer... vent venligst.",
cancel: "Annuller",
enterCodeFromImage: "For at fortsætte, bedes du indtaste koden fra billedet herunder."
};
globalThis.$altcha.i18n.set("da", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (officiel hjemmeside)",
enterCode: "Indtast kode",
enterCodeAria: "Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.",
error: "Verificering mislykkedes. Prøv venligst igen senere.",
expired: "Verificering udløbet. Prøv venligst igen.",
footer: 'Beskyttet af <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiel hjemmeside)">ALTCHA</a>',
getAudioChallenge: "Hent lydudfordring",
label: "Jeg er ikke en robot",
loading: "Indlæser...",
reload: "Genindlæs",
verify: "Verificer",
verificationRequired: "Verificering kræves!",
verified: "Verificeret",
verifying: "Verificerer...",
waitAlert: "Verificerer... vent venligst.",
cancel: "Annuller",
enterCodeFromImage: "For at fortsætte, bedes du indtaste koden fra billedet herunder."
};
globalThis.$altcha.i18n.set("da", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/de'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (offizielle Website)",
enterCode: "Code eingeben",
enterCodeAria: "Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.",
error: "Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.",
expired: "Überprüfung abgelaufen. Bitte versuchen Sie es erneut.",
footer: 'Geschützt durch <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offizielle Website)">ALTCHA</a>',
getAudioChallenge: "Audio-Herausforderung anfordern",
label: "Ich bin kein Roboter",
loading: "Lade...",
reload: "Neu laden",
verify: "Überprüfen",
verificationRequired: "Überprüfung erforderlich!",
verified: "Überprüft",
verifying: "Wird überprüft...",
waitAlert: "Überprüfung läuft... bitte warten.",
cancel: "Abbrechen",
enterCodeFromImage: "Um fortzufahren, geben Sie bitte den Code aus dem Bild unten ein."
};
globalThis.$altcha.i18n.set("de", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (offizielle Website)",
enterCode: "Code eingeben",
enterCodeAria: "Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.",
error: "Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.",
expired: "Überprüfung abgelaufen. Bitte versuchen Sie es erneut.",
footer: 'Geschützt durch <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offizielle Website)">ALTCHA</a>',
getAudioChallenge: "Audio-Herausforderung anfordern",
label: "Ich bin kein Roboter",
loading: "Lade...",
reload: "Neu laden",
verify: "Überprüfen",
verificationRequired: "Überprüfung erforderlich!",
verified: "Überprüft",
verifying: "Wird überprüft...",
waitAlert: "Überprüfung läuft... bitte warten.",
cancel: "Abbrechen",
enterCodeFromImage: "Um fortzufahren, geben Sie bitte den Code aus dem Bild unten ein."
};
globalThis.$altcha.i18n.set("de", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/el'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (επίσημος ιστότοπος)",
enterCode: "Εισαγάγετε κωδικό",
enterCodeAria: "Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.",
error: "Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.",
expired: "Η επαλήθευση έληξε. Δοκιμάστε ξανά.",
footer: 'Προστατεύεται από το <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (επίσημος ιστότοπος)">ALTCHA</a>',
getAudioChallenge: "Λήψη ηχητικής δοκιμασίας",
label: "Δεν είμαι ρομπότ",
loading: "Φόρτωση...",
reload: "Επαναφόρτωση",
verify: "Επαλήθευση",
verificationRequired: "Απαιτείται έλεγχος!",
verified: "Επαληθεύτηκε",
verifying: "Γίνεται επαλήθευση...",
waitAlert: "Γίνεται επαλήθευση... παρακαλώ περιμένετε.",
cancel: "Ακύρωση",
enterCodeFromImage: "Για να συνεχίσετε, εισάγετε τον κωδικό από την παρακάτω εικόνα."
};
globalThis.$altcha.i18n.set("el", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (επίσημος ιστότοπος)",
enterCode: "Εισαγάγετε κωδικό",
enterCodeAria: "Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.",
error: "Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.",
expired: "Η επαλήθευση έληξε. Δοκιμάστε ξανά.",
footer: 'Προστατεύεται από το <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (επίσημος ιστότοπος)">ALTCHA</a>',
getAudioChallenge: "Λήψη ηχητικής δοκιμασίας",
label: "Δεν είμαι ρομπότ",
loading: "Φόρτωση...",
reload: "Επαναφόρτωση",
verify: "Επαλήθευση",
verificationRequired: "Απαιτείται έλεγχος!",
verified: "Επαληθεύτηκε",
verifying: "Γίνεται επαλήθευση...",
waitAlert: "Γίνεται επαλήθευση... παρακαλώ περιμένετε.",
cancel: "Ακύρωση",
enterCodeFromImage: "Για να συνεχίσετε, εισάγετε τον κωδικό από την παρακάτω εικόνα."
};
globalThis.$altcha.i18n.set("el", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/en'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (official website)",
cancel: "Cancel",
enterCode: "Enter code",
enterCodeAria: "Enter code you hear. Press Space to play audio.",
enterCodeFromImage: "To proceed, please enter the code from the image below.",
error: "Verification failed. Try again later.",
expired: "Verification expired. Try again.",
footer: 'Protected by <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (official website)">ALTCHA</a>',
getAudioChallenge: "Get an audio challenge",
label: "I'm not a robot",
loading: "Loading...",
reload: "Reload",
verify: "Verify",
verificationRequired: "Verification required!",
verified: "Verified",
verifying: "Verifying...",
waitAlert: "Verifying... please wait."
};
globalThis.$altcha.i18n.set("en", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (official website)",
cancel: "Cancel",
enterCode: "Enter code",
enterCodeAria: "Enter code you hear. Press Space to play audio.",
enterCodeFromImage: "To proceed, please enter the code from the image below.",
error: "Verification failed. Try again later.",
expired: "Verification expired. Try again.",
footer: 'Protected by <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (official website)">ALTCHA</a>',
getAudioChallenge: "Get an audio challenge",
label: "I'm not a robot",
loading: "Loading...",
reload: "Reload",
verify: "Verify",
verificationRequired: "Verification required!",
verified: "Verified",
verifying: "Verifying...",
waitAlert: "Verifying... please wait."
};
globalThis.$altcha.i18n.set("en", i18n);
}));
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Ingresa el código",
enterCodeAria: "Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor vuelve a intentarlo más tarde.",
expired: "La verificación expiró. Por favor inténtalo de nuevo.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un reto de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Volver a cargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espera.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, ingresa el código de la imagen a continuación."
};
globalThis.$altcha.i18n.set("es-419", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Ingresa el código",
enterCodeAria: "Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor vuelve a intentarlo más tarde.",
expired: "La verificación expiró. Por favor inténtalo de nuevo.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un reto de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Volver a cargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espera.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, ingresa el código de la imagen a continuación."
};
globalThis.$altcha.i18n.set("es-419", i18n);
}));
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Introduce el código",
enterCodeAria: "Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor intente nuevamente más tarde.",
expired: "Verificación expirada. Por favor intente nuevamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un desafío de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Recargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espere.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, introduzca el código de la imagen de abajo."
};
globalThis.$altcha.i18n.set("es-es", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Introduce el código",
enterCodeAria: "Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor intente nuevamente más tarde.",
expired: "Verificación expirada. Por favor intente nuevamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un desafío de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Recargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espere.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, introduzca el código de la imagen de abajo."
};
globalThis.$altcha.i18n.set("es-es", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/es'; export {};
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/et'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (ametlik veebisait)",
enterCode: "Sisesta kood",
enterCodeAria: "Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.",
error: "Kinnitamine ebaõnnestus. Proovi hiljem uuesti.",
expired: "Kinnitamine aegus. Proovi uuesti.",
footer: 'Kaitstud <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ametlik veebisait)">ALTCHA</a> poolt',
getAudioChallenge: "Hangi heliülesanne",
label: "Ma ei ole robot",
loading: "Laadimine...",
reload: "Laadi uuesti",
verify: "Kinnita",
verificationRequired: "Kontroll on vajalik!",
verified: "Kinnitatud",
verifying: "Kinnitamine...",
waitAlert: "Kinnitamine... palun oota.",
cancel: "Tühista",
enterCodeFromImage: "Jätkamiseks sisestage alloleval pildil olev kood."
};
globalThis.$altcha.i18n.set("et", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (ametlik veebisait)",
enterCode: "Sisesta kood",
enterCodeAria: "Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.",
error: "Kinnitamine ebaõnnestus. Proovi hiljem uuesti.",
expired: "Kinnitamine aegus. Proovi uuesti.",
footer: 'Kaitstud <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ametlik veebisait)">ALTCHA</a> poolt',
getAudioChallenge: "Hangi heliülesanne",
label: "Ma ei ole robot",
loading: "Laadimine...",
reload: "Laadi uuesti",
verify: "Kinnita",
verificationRequired: "Kontroll on vajalik!",
verified: "Kinnitatud",
verifying: "Kinnitamine...",
waitAlert: "Kinnitamine... palun oota.",
cancel: "Tühista",
enterCodeFromImage: "Jätkamiseks sisestage alloleval pildil olev kood."
};
globalThis.$altcha.i18n.set("et", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/eu'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (webgune ofiziala)",
enterCode: "Sartu kodea",
enterCodeAria: "Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.",
error: "Egiaztatzeak huts egin du. Saiatu berriro geroago.",
expired: "Egiaztatzea iraungi da. Saiatu berriro.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (webgune ofiziala)">ALTCHA</a>k babestuta',
getAudioChallenge: "Jaso audio-erronka bat",
label: "Ez naiz robot bat",
loading: "Kargatzen...",
reload: "Birkargatu",
verify: "Egiaztatu",
verificationRequired: "Egiaztatzea beharrezkoa da!",
verified: "Egiaztatuta",
verifying: "Egiaztatzen...",
waitAlert: "Egiaztatzen... itxaron mesedez.",
cancel: "Utzi",
enterCodeFromImage: "Jarraitzeko, idatzi beheko irudiko kodea."
};
globalThis.$altcha.i18n.set("eu", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (webgune ofiziala)",
enterCode: "Sartu kodea",
enterCodeAria: "Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.",
error: "Egiaztatzeak huts egin du. Saiatu berriro geroago.",
expired: "Egiaztatzea iraungi da. Saiatu berriro.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (webgune ofiziala)">ALTCHA</a>k babestuta',
getAudioChallenge: "Jaso audio-erronka bat",
label: "Ez naiz robot bat",
loading: "Kargatzen...",
reload: "Birkargatu",
verify: "Egiaztatu",
verificationRequired: "Egiaztatzea beharrezkoa da!",
verified: "Egiaztatuta",
verifying: "Egiaztatzen...",
waitAlert: "Egiaztatzen... itxaron mesedez.",
cancel: "Utzi",
enterCodeFromImage: "Jarraitzeko, idatzi beheko irudiko kodea."
};
globalThis.$altcha.i18n.set("eu", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/europe'; export {};
+848
View File
@@ -0,0 +1,848 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$A = {
ariaLinkLabel: "Altcha (lloc web oficial)",
enterCode: "Introdueix el codi",
enterCodeAria: "Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.",
error: "Verificació fallida. Torna-ho a provar més tard.",
expired: "Verificació expirada. Torna-ho a provar.",
footer: 'Protegit per <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (lloc web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtenir un desafiament d’àudio",
label: "No sóc un robot",
loading: "Carregant...",
reload: "Torna a carregar",
verify: "Verificar",
verificationRequired: "Es requereix verificació!",
verified: "Verificat",
verifying: "Verificant...",
waitAlert: "Verificant... si us plau, espera.",
cancel: "Cancel·la",
enterCodeFromImage: "Per continuar, si us plau, introdueix el codi de la imatge següent."
};
globalThis.$altcha.i18n.set("ca", i18n$A);
const i18n$z = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",
error: "Échec de la vérification. Essayez à nouveau plus tard.",
expired: "La vérification a expiré. Essayez à nouveau.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-fr", i18n$z);
const i18n$y = {
ariaLinkLabel: "Altcha (offizielle Website)",
enterCode: "Code eingeben",
enterCodeAria: "Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.",
error: "Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.",
expired: "Überprüfung abgelaufen. Bitte versuchen Sie es erneut.",
footer: 'Geschützt durch <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offizielle Website)">ALTCHA</a>',
getAudioChallenge: "Audio-Herausforderung anfordern",
label: "Ich bin kein Roboter",
loading: "Lade...",
reload: "Neu laden",
verify: "Überprüfen",
verificationRequired: "Überprüfung erforderlich!",
verified: "Überprüft",
verifying: "Wird überprüft...",
waitAlert: "Überprüfung läuft... bitte warten.",
cancel: "Abbrechen",
enterCodeFromImage: "Um fortzufahren, geben Sie bitte den Code aus dem Bild unten ein."
};
globalThis.$altcha.i18n.set("de", i18n$y);
const i18n$x = {
ariaLinkLabel: "Altcha (offiziell Websäit)",
enterCode: "Code aginn",
enterCodeAria: "Gitt de Code an deen dir héiert. Dréckt op d'Weltraumtast fir Audio ofzespillen.",
error: "Verifikatioun ass feelgeschloen. Probéiert méi spéit nach emol.",
expired: "Verifikatioun ofgelaf. Probéiert nach emol.",
footer: 'Geschützt vun <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offiziell Websäit)">ALTCHA</a>',
getAudioChallenge: "Kritt eng Audio-Herausfuerderung",
label: "Ech sinn keen Robot",
loading: "Lueden...",
reload: "Nei lueden",
verify: "Verifizéieren",
verificationRequired: "Verifikatioun néideg!",
verified: "Verifizéiert",
verifying: "Verifizéieren...",
waitAlert: "Verifizéieren... waart wgl.",
cancel: "Ofbriechen",
enterCodeFromImage: "Fir virun ze fueren, gitt wgl. de Code aus dem Bild hei drënner an."
};
globalThis.$altcha.i18n.set("lb", i18n$x);
const i18n$w = {
ariaLinkLabel: "Altcha (officiële website)",
enterCode: "Voer code in",
enterCodeAria: "Voer de code in die je hoort. Druk op Spatie om de audio af te spelen.",
error: "Verificatie mislukt. Probeer het later opnieuw.",
expired: "Verificatie verlopen. Probeer het opnieuw.",
footer: 'Beschermd door <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiële website)">ALTCHA</a>',
getAudioChallenge: "Audio-uitdaging ontvangen",
label: "Ik ben geen robot",
loading: "Laden...",
reload: "Herladen",
verify: "Verifiëren",
verificationRequired: "Verificatie vereist!",
verified: "Geverifieerd",
verifying: "Bezig met verifiëren...",
waitAlert: "Bezig met verifiëren... even geduld a.u.b.",
cancel: "Annuleren",
enterCodeFromImage: "Om door te gaan, voert u de code uit de onderstaande afbeelding in."
};
globalThis.$altcha.i18n.set("nl", i18n$w);
const i18n$v = {
ariaLinkLabel: "Altcha (láithreán gréasáin oifigiúil)",
enterCode: "Iontráil cód",
enterCodeAria: "Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.",
error: "Theip ar an bhfíorú. Bain triail eile as níos déanaí.",
expired: "Tá an fíorú as feidhm. Bain triail eile as.",
footer: 'Cosanta ag <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (láithreán gréasáin oifigiúil)">ALTCHA</a>',
getAudioChallenge: "Faigh dúshlán fuaime",
label: "Níl mé i mo róbat",
loading: "Á luchtú...",
reload: "Athluchtaigh",
verify: "Fíoraigh",
verificationRequired: "Fíorú riachtanach!",
verified: "Fíoraithe",
verifying: "Fíorú ar siúl...",
waitAlert: "Fíorú ar siúl... fan go fóill.",
cancel: "Cealaigh",
enterCodeFromImage: "Chun dul ar aghaidh, le do thoil cuir isteach an cód ón íomhá thíos."
};
globalThis.$altcha.i18n.set("ga", i18n$v);
const i18n$u = {
ariaLinkLabel: "Altcha (sito ufficiale)",
enterCode: "Inserisci il codice",
enterCodeAria: "Inserisci il codice che senti. Premi Spazio per riprodurre l'audio.",
error: "Verifica fallita. Riprova più tardi.",
expired: "Verifica scaduta. Riprova.",
footer: 'Protetto da <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sito ufficiale)">ALTCHA</a>',
getAudioChallenge: "Ottieni una sfida audio",
label: "Non sono un robot",
loading: "Caricamento...",
reload: "Ricarica",
verify: "Verifica",
verificationRequired: "Verifica richiesta!",
verified: "Verificato",
verifying: "Verifica in corso...",
waitAlert: "Verifica in corso... attendere.",
cancel: "Annulla",
enterCodeFromImage: "Per procedere, inserisci il codice dall'immagine sottostante."
};
globalThis.$altcha.i18n.set("it", i18n$u);
const i18n$t = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Introduza o código",
enterCodeAria: "Introduza o código que ouve. Prima Espaço para reproduzir o áudio.",
error: "A verificação falhou. Por favor, tente novamente mais tarde.",
expired: "Verificação expirada. Por favor, tente novamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obter desafio de áudio",
label: "Não sou um robô",
loading: "A carregar...",
reload: "Recarregar",
verify: "Verificar",
verificationRequired: "Verificação necessária!",
verified: "Verificado",
verifying: "A verificar...",
waitAlert: "A verificar... por favor aguarde.",
cancel: "Cancelar",
enterCodeFromImage: "Para prosseguir, introduza o código da imagem abaixo."
};
globalThis.$altcha.i18n.set("pt-pt", i18n$t);
const i18n$s = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Introduce el código",
enterCodeAria: "Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor intente nuevamente más tarde.",
expired: "Verificación expirada. Por favor intente nuevamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un desafío de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Recargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espere.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, introduzca el código de la imagen de abajo."
};
globalThis.$altcha.i18n.set("es-es", i18n$s);
const i18n$r = {
ariaLinkLabel: "Altcha (webgune ofiziala)",
enterCode: "Sartu kodea",
enterCodeAria: "Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.",
error: "Egiaztatzeak huts egin du. Saiatu berriro geroago.",
expired: "Egiaztatzea iraungi da. Saiatu berriro.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (webgune ofiziala)">ALTCHA</a>k babestuta',
getAudioChallenge: "Jaso audio-erronka bat",
label: "Ez naiz robot bat",
loading: "Kargatzen...",
reload: "Birkargatu",
verify: "Egiaztatu",
verificationRequired: "Egiaztatzea beharrezkoa da!",
verified: "Egiaztatuta",
verifying: "Egiaztatzen...",
waitAlert: "Egiaztatzen... itxaron mesedez.",
cancel: "Utzi",
enterCodeFromImage: "Jarraitzeko, idatzi beheko irudiko kodea."
};
globalThis.$altcha.i18n.set("eu", i18n$r);
const i18n$q = {
ariaLinkLabel: "Altcha (official website)",
cancel: "Cancel",
enterCode: "Enter code",
enterCodeAria: "Enter code you hear. Press Space to play audio.",
enterCodeFromImage: "To proceed, please enter the code from the image below.",
error: "Verification failed. Try again later.",
expired: "Verification expired. Try again.",
footer: 'Protected by <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (official website)">ALTCHA</a>',
getAudioChallenge: "Get an audio challenge",
label: "I'm not a robot",
loading: "Loading...",
reload: "Reload",
verify: "Verify",
verificationRequired: "Verification required!",
verified: "Verified",
verifying: "Verifying...",
waitAlert: "Verifying... please wait."
};
globalThis.$altcha.i18n.set("en", i18n$q);
const i18n$p = {
ariaLinkLabel: "Altcha (officiel hjemmeside)",
enterCode: "Indtast kode",
enterCodeAria: "Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.",
error: "Verificering mislykkedes. Prøv venligst igen senere.",
expired: "Verificering udløbet. Prøv venligst igen.",
footer: 'Beskyttet af <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiel hjemmeside)">ALTCHA</a>',
getAudioChallenge: "Hent lydudfordring",
label: "Jeg er ikke en robot",
loading: "Indlæser...",
reload: "Genindlæs",
verify: "Verificer",
verificationRequired: "Verificering kræves!",
verified: "Verificeret",
verifying: "Verificerer...",
waitAlert: "Verificerer... vent venligst.",
cancel: "Annuller",
enterCodeFromImage: "For at fortsætte, bedes du indtaste koden fra billedet herunder."
};
globalThis.$altcha.i18n.set("da", i18n$p);
const i18n$o = {
ariaLinkLabel: "Altcha (officiell webbplats)",
enterCode: "Ange kod",
enterCodeAria: "Ange koden du hör. Tryck på mellanslag för att spela upp ljudet.",
error: "Verifiering misslyckades. Försök igen senare.",
expired: "Verifieringen har gått ut. Försök igen.",
footer: 'Skyddad av <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiell webbplats)">ALTCHA</a>',
getAudioChallenge: "Få ljudutmaning",
label: "Jag är inte en robot",
loading: "Laddar...",
reload: "Ladda om",
verify: "Verifiera",
verificationRequired: "Verifiering krävs!",
verified: "Verifierad",
verifying: "Verifierar...",
waitAlert: "Verifierar... vänligen vänta.",
cancel: "Avbryt",
enterCodeFromImage: "För att fortsätta, ange koden från bilden nedan."
};
globalThis.$altcha.i18n.set("sv", i18n$o);
const i18n$n = {
ariaLinkLabel: "Altcha (virallinen verkkosivusto)",
enterCode: "Syötä koodi",
enterCodeAria: "Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.",
error: "Varmennus epäonnistui. Yritä myöhemmin uudelleen.",
expired: "Varmennus vanhentui. Yritä uudelleen.",
footer: 'Suojattu <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (virallinen verkkosivusto)">ALTCHA</a>:lla',
getAudioChallenge: "Hae äänitehtävä",
label: "En ole robotti",
loading: "Ladataan...",
reload: "Lataa uudelleen",
verify: "Vahvista",
verificationRequired: "Vahvistus vaaditaan!",
verified: "Vahvistettu",
verifying: "Vahvistetaan...",
waitAlert: "Vahvistetaan... odota hetki.",
cancel: "Peruuta",
enterCodeFromImage: "Jatkaaksesi, syötä alla olevan kuvan koodi."
};
globalThis.$altcha.i18n.set("fi", i18n$n);
const i18n$m = {
ariaLinkLabel: "Altcha (ametlik veebisait)",
enterCode: "Sisesta kood",
enterCodeAria: "Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.",
error: "Kinnitamine ebaõnnestus. Proovi hiljem uuesti.",
expired: "Kinnitamine aegus. Proovi uuesti.",
footer: 'Kaitstud <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ametlik veebisait)">ALTCHA</a> poolt',
getAudioChallenge: "Hangi heliülesanne",
label: "Ma ei ole robot",
loading: "Laadimine...",
reload: "Laadi uuesti",
verify: "Kinnita",
verificationRequired: "Kontroll on vajalik!",
verified: "Kinnitatud",
verifying: "Kinnitamine...",
waitAlert: "Kinnitamine... palun oota.",
cancel: "Tühista",
enterCodeFromImage: "Jätkamiseks sisestage alloleval pildil olev kood."
};
globalThis.$altcha.i18n.set("et", i18n$m);
const i18n$l = {
ariaLinkLabel: "Altcha (offisiell nettside)",
enterCode: "Skriv inn kode",
enterCodeAria: "Skriv inn koden du hører. Trykk på Space for å spille av lyden.",
error: "Verifisering mislyktes. Prøv igjen senere.",
expired: "Verifiseringen utløp. Prøv igjen.",
footer: 'Beskyttet av <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offisiell nettside)">ALTCHA</a>',
getAudioChallenge: "Få en lydutfordring",
label: "Jeg er ikke en robot",
loading: "Laster...",
reload: "Last på nytt",
verify: "Verifiser",
verificationRequired: "Verifisering kreves!",
verified: "Verifisert",
verifying: "Verifiserer...",
waitAlert: "Verifiserer... vennligst vent.",
cancel: "Avbryt",
enterCodeFromImage: "For å fortsette, vennligst skriv inn koden fra bildet nedenfor."
};
globalThis.$altcha.i18n.set("nb", i18n$l);
const i18n$k = {
ariaLinkLabel: "Altcha (opinber vefsíða)",
enterCode: "Sláðu inn kóða",
enterCodeAria: "Sláðu inn kóðann sem þú heyrir. Ýttu á Space til að spila hljóðið.",
error: "Staðfesting mistókst. Reyndu aftur síðar.",
expired: "Staðfesting er útrunnin. Reyndu aftur.",
footer: 'Verndað af <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (opinber vefsíða)">ALTCHA</a>',
getAudioChallenge: "Fá hljóðáskorun",
label: "Ég er ekki robot",
loading: "Hleður...",
reload: "Hleð aftur",
verify: "Staðfesta",
verificationRequired: "Staðfesting er nauðsynleg!",
verified: "Staðfest",
verifying: "Að staðfesta...",
waitAlert: "Að staðfesta... vinsamlegast bíða.",
cancel: "Hætta við",
enterCodeFromImage: "Til að halda áfram, vinsamlegast sláðu inn kóðann af myndinni hér að neðan."
};
globalThis.$altcha.i18n.set("is", i18n$k);
const i18n$j = {
ariaLinkLabel: "Altcha (oficiali svetainė)",
enterCode: "Įveskite kodą",
enterCodeAria: "Įveskite girdimą kodą. Paspauskite tarpo klavišą, kad grotumėte garso įrašą.",
error: "Patvirtinimas nepavyko. Bandykite vėliau.",
expired: "Patvirtinimo laikas baigėsi. Bandykite dar kartą.",
footer: 'Apsaugota <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiali svetainė)">ALTCHA</a>',
getAudioChallenge: "Gauti garso užduotį",
label: "Aš nesu robotas",
loading: "Įkeliama...",
reload: "Įkelti iš naujo",
verify: "Patvirtinti",
verificationRequired: "Reikalingas patvirtinimas!",
verified: "Patvirtinta",
verifying: "Tikrinama...",
waitAlert: "Tikrinama... prašome palaukti.",
cancel: "Atšaukti",
enterCodeFromImage: "Norėdami tęsti, įveskite kodą iš paveikslėlio žemiau."
};
globalThis.$altcha.i18n.set("lt", i18n$j);
const i18n$i = {
ariaLinkLabel: "Altcha (oficiālā tīmekļa vietne)",
enterCode: "Ievadiet kodu",
enterCodeAria: "Ievadiet dzirdamo kodu. Nospiediet atstarpes taustiņu, lai atskaņotu audio.",
error: "Verifikācija neizdevās. Mēģiniet vēlāk vēlreiz.",
expired: "Verifikācijas laiks ir beidzies. Mēģiniet vēlreiz.",
footer: 'Aizsargāts ar <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiālā tīmekļa vietne)">ALTCHA</a>',
getAudioChallenge: "Saņemt audio izaicinājumu",
label: "Es neesmu robots",
loading: "Notiek ielāde...",
reload: "Pārlādēt",
verify: "Verificēt",
verificationRequired: "Nepieciešama verifikācija!",
verified: "Verificēts",
verifying: "Notiek verifikācija...",
waitAlert: "Notiek verifikācija... lūdzu, uzgaidiet.",
cancel: "Atcelt",
enterCodeFromImage: "Lai turpinātu, lūdzu, ievadiet zemāk redzamo attēlu kodu."
};
globalThis.$altcha.i18n.set("lv", i18n$i);
const i18n$h = {
ariaLinkLabel: "Altcha (афіцыйны сайт)",
enterCode: "Увядзіце код",
enterCodeAria: "Увядзіце код, які вы чуеце. Націсніце прабел, каб прайграць аўдыё.",
error: "Праверка не прайшла. Паспрабуйце пазней.",
expired: "Тэрмін праверкі скончыўся. Паспрабуйце зноў.",
footer: 'Абаронена <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (афіцыйны сайт)">ALTCHA</a>',
getAudioChallenge: "Атрымаць аўдыё выклік",
label: "Я не робат",
loading: "Загрузка...",
reload: "Перазагрузіць",
verify: "Праверыць",
verificationRequired: "Патрабуецца праверка!",
verified: "Праверана",
verifying: "Правяраем...",
waitAlert: "Праверка... калі ласка, пачакайце.",
cancel: "Скасаваць",
enterCodeFromImage: "Каб працягнуць, увядзіце код з малюнка ніжэй."
};
globalThis.$altcha.i18n.set("be", i18n$h);
const i18n$g = {
ariaLinkLabel: "Altcha (službena web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",
error: "Verifikacija nije uspjela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (službena web stranica)">ALTCHA</a>',
getAudioChallenge: "Dohvatite audio izazov",
label: "Nisam robot",
loading: "Učitavanje...",
reload: "Ponovno učitaj",
verify: "Verifikuj",
verificationRequired: "Verifikacija je obavezna!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikacija u toku... molimo vas da sačekate.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak, molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("bs", i18n$g);
const i18n$f = {
ariaLinkLabel: "Altcha (oficiální web)",
enterCode: "Zadejte kód",
enterCodeAria: "Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.",
error: "Ověření selhalo. Zkuste to prosím později.",
expired: "Ověření vypršelo. Zkuste to prosím znovu.",
footer: 'Chráněno pomocí <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiální web)">ALTCHA</a>',
getAudioChallenge: "Získat audio výzvu",
label: "Nejsem robot",
loading: "Načítání...",
reload: "Znovu načíst",
verify: "Ověřit",
verificationRequired: "Vyžaduje se ověření!",
verified: "Ověřeno",
verifying: "Ověřování...",
waitAlert: "Probíhá ověření... prosím počkejte.",
cancel: "Zrušit",
enterCodeFromImage: "Pro pokračování zadejte kód z obrázku níže."
};
globalThis.$altcha.i18n.set("cs", i18n$f);
const i18n$e = {
ariaLinkLabel: "Altcha (oficjalna strona internetowa)",
enterCode: "Wprowadź kod",
enterCodeAria: "Wpisz kod, który słyszysz. Naciśnij Spację, aby odtworzyć dźwięk.",
error: "Weryfikacja nie powiodła się. Spróbuj ponownie później.",
expired: "Weryfikacja wygasła. Spróbuj ponownie.",
footer: 'Chronione przez <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficjalna strona internetowa)">ALTCHA</a>',
getAudioChallenge: "Pobierz zadanie dźwiękowe",
label: "Nie jestem robotem",
loading: "Ładowanie...",
reload: "Odśwież",
verify: "Zweryfikuj",
verificationRequired: "Wymagana weryfikacja!",
verified: "Zweryfikowano",
verifying: "Weryfikacja...",
waitAlert: "Trwa weryfikacja... proszę czekać.",
cancel: "Anuluj",
enterCodeFromImage: "Aby kontynuować, wprowadź kod z poniższego obrazka."
};
globalThis.$altcha.i18n.set("pl", i18n$e);
const i18n$d = {
ariaLinkLabel: "Altcha (hivatalos weboldal)",
enterCode: "Írja be a kódot",
enterCodeAria: "Írja be a hallott kódot. Nyomja meg a Szóköz billentyűt a hang lejátszásához.",
error: "A hitelesítés nem sikerült. Próbáld meg később újra.",
expired: "A hitelesítés lejárt. Próbáld újra.",
footer: 'Védve a következő által: <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (hivatalos weboldal)">ALTCHA</a>',
getAudioChallenge: "Hangalapú kihívás kérése",
label: "Nem vagyok robot",
loading: "Betöltés...",
reload: "Újratöltés",
verify: "Ellenőrzés",
verificationRequired: "Ellenőrzés szükséges!",
verified: "Ellenőrizve",
verifying: "Ellenőrzés folyamatban...",
waitAlert: "Ellenőrzés folyamatban... kérlek várj.",
cancel: "Mégse",
enterCodeFromImage: "A folytatáshoz, kérjük, adja meg az alábbi kép kódját."
};
globalThis.$altcha.i18n.set("hu", i18n$d);
const i18n$c = {
ariaLinkLabel: "Altcha (oficiálna webová stránka)",
enterCode: "Zadajte kód",
enterCodeAria: "Zadajte kód, ktorý počujete. Stlačením medzerníka prehráte zvuk.",
error: "Verifikácia zlyhala. Skúste to znova neskôr.",
expired: "Verifikácia vypršala. Skúste to znova.",
footer: 'Chránené <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiálna webová stránka)">ALTCHA</a>',
getAudioChallenge: "Získať audio výzvu",
label: "Nie som robot",
loading: "Načítava sa...",
reload: "Obnoviť",
verify: "Verifikovať",
verificationRequired: "Vyžaduje sa overenie!",
verified: "Verifikované",
verifying: "Prebieha verifikácia...",
waitAlert: "Prebieha verifikácia... prosím čakajte.",
cancel: "Zrušiť",
enterCodeFromImage: "Na pokračovanie, prosím, zadajte kód z obrázka nižšie."
};
globalThis.$altcha.i18n.set("sk", i18n$c);
const i18n$b = {
ariaLinkLabel: "Altcha (uradna spletna stran)",
enterCode: "Vnesite kodo",
enterCodeAria: "Vnesite kodo, ki jo slišite. Pritisnite preslednico za predvajanje zvoka.",
error: "Preverjanje ni uspelo. Poskusite znova kasneje.",
expired: "Preverjanje je poteklo. Poskusite znova.",
footer: 'Zaščiteno z <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (uradna spletna stran)">ALTCHA</a>',
getAudioChallenge: "Pridobite zvočni izziv",
label: "Nisem robot",
loading: "Nalagam...",
reload: "Ponovno naloži",
verify: "Preveri",
verificationRequired: "Potrebna je preveritev!",
verified: "Preverjeno",
verifying: "Preverjanje...",
waitAlert: "Preverjanje... prosim počakajte.",
cancel: "Preklic",
enterCodeFromImage: "Za nadaljevanje, prosimo, vnesite kodo s slike spodaj."
};
globalThis.$altcha.i18n.set("sl", i18n$b);
const i18n$a = {
ariaLinkLabel: "Altcha (službena web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite razmaknicu za reprodukciju zvuka.",
error: "Provjera nije uspjela. Molimo pokušajte kasnije.",
expired: "Provjera je istekla. Molimo pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (službena web stranica)">ALTCHA</a>',
getAudioChallenge: "Audio provjera",
label: "Ja nisam robot",
loading: "Učitavanje...",
reload: "Ponovno učitaj",
verify: "Provjeri",
verificationRequired: "Potrebna je provjera!",
verified: "Provjereno",
verifying: "Provjeravanje...",
waitAlert: "Provjera je u tijeku... molimo pričekajte.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("hr", i18n$a);
const i18n$9 = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Introduceți codul",
enterCodeAria: "Introduceți codul pe care îl auziți. Apăsați Spațiu pentru a reda audio.",
error: "Verificarea a eșuat. Încearcă din nou mai târziu.",
expired: "Verificarea a expirat. Încearcă din nou.",
footer: 'Protejat de <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obține o provocare audio",
label: "Nu sunt un robot",
loading: "Se încarcă...",
reload: "Reîncarcă",
verify: "Verifică",
verificationRequired: "Verificare necesară!",
verified: "Verificat",
verifying: "Se verifică...",
waitAlert: "Se verifică... te rugăm să aștepți.",
cancel: "Anulare",
enterCodeFromImage: "Pentru a continua, vă rugăm să introduceți codul din imaginea de mai jos."
};
globalThis.$altcha.i18n.set("ro", i18n$9);
const i18n$8 = {
ariaLinkLabel: "Altcha (официален уебсайт)",
enterCode: "Въведете код",
enterCodeAria: "Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.",
error: "Проверката неуспешна. Моля, опитайте по-късно.",
expired: "Времето за проверка изтече. Моля, опитайте отново.",
footer: 'Защитено от <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официален уебсайт)">ALTCHA</a>',
getAudioChallenge: "Аудио проверка",
label: "Аз не съм робот",
loading: "Зареждане...",
reload: "Презареди",
verify: "Провери",
verificationRequired: "Изисква се проверка!",
verified: "Проверено",
verifying: "Проверява се...",
waitAlert: "Проверката е в процес... моля изчакайте.",
cancel: "Отказ",
enterCodeFromImage: "За да продължите, моля, въведете кода от изображението по-долу."
};
globalThis.$altcha.i18n.set("bg", i18n$8);
const i18n$7 = {
ariaLinkLabel: "Altcha (επίσημος ιστότοπος)",
enterCode: "Εισαγάγετε κωδικό",
enterCodeAria: "Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.",
error: "Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.",
expired: "Η επαλήθευση έληξε. Δοκιμάστε ξανά.",
footer: 'Προστατεύεται από το <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (επίσημος ιστότοπος)">ALTCHA</a>',
getAudioChallenge: "Λήψη ηχητικής δοκιμασίας",
label: "Δεν είμαι ρομπότ",
loading: "Φόρτωση...",
reload: "Επαναφόρτωση",
verify: "Επαλήθευση",
verificationRequired: "Απαιτείται έλεγχος!",
verified: "Επαληθεύτηκε",
verifying: "Γίνεται επαλήθευση...",
waitAlert: "Γίνεται επαλήθευση... παρακαλώ περιμένετε.",
cancel: "Ακύρωση",
enterCodeFromImage: "Για να συνεχίσετε, εισάγετε τον κωδικό από την παρακάτω εικόνα."
};
globalThis.$altcha.i18n.set("el", i18n$7);
const i18n$6 = {
ariaLinkLabel: "Altcha (zvanična web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",
error: "Verifikacija nije uspela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (zvanična web stranica)">ALTCHA</a>',
getAudioChallenge: "Dohvatite audio izazov",
label: "Nisam robot",
loading: "Učitavanje...",
reload: "Ponovo učitaj",
verify: "Verifikuj",
verificationRequired: "Verifikacija je obavezna!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikacija u toku... molimo vas da sačekate.",
cancel: "Откажи",
enterCodeFromImage: "Да бисте наставили, унесите код са слике испод."
};
globalThis.$altcha.i18n.set("sr", i18n$6);
const i18n$5 = {
ariaLinkLabel: "Altcha (официальный сайт)",
enterCode: "Введите код",
enterCodeAria: "Введите код, который слышите. Нажмите пробел для воспроизведения аудио.",
error: "Ошибка верификации. Попробуйте позже.",
expired: "Срок действия верификации истек. Попробуйте снова.",
footer: 'Защищено <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официальный сайт)">ALTCHA</a>',
getAudioChallenge: "Получить аудио задачу",
label: "Я не робот",
loading: "Загрузка...",
reload: "Перезагрузить",
verify: "Проверить",
verificationRequired: "Требуется проверка!",
verified: "Проверено",
verifying: "Идет проверка...",
waitAlert: "Идет проверка... Пожалуйста, подождите.",
cancel: "Отмена",
enterCodeFromImage: "Чтобы продолжить, пожалуйста, введите код с изображения ниже."
};
globalThis.$altcha.i18n.set("ru", i18n$5);
const i18n$4 = {
ariaLinkLabel: "Altcha (zvanična web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space za puštanje zvuka.",
error: "Verifikacija nije uspjela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno putem <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (zvanična web stranica)">ALTCHA</a>',
getAudioChallenge: "Preuzmi audio izazov",
label: "Nijesam robot",
loading: "Učitavanje...",
reload: "Ponovo učitaj",
verify: "Verifikuj",
verificationRequired: "Potrebna je verifikacija!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikujem... molimo sačekajte.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak, molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("me", i18n$4);
const i18n$3 = {
ariaLinkLabel: "Altcha (официјален веб-сајт)",
enterCode: "Внесете код",
enterCodeAria: "Внесете го кодот што го слушате. Притиснете Space за да ја пуштите аудио снимката.",
error: "Проверката не успеа. Обидете се подоцна.",
expired: "Проверката истече. Обидете се повторно.",
footer: 'Заштитено со <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официјален веб-сајт)">ALTCHA</a>',
getAudioChallenge: "Земете аудио предизвик",
label: "Јас не сум робот",
loading: "Се вчитува...",
reload: "Превчитај",
verify: "Провери",
verificationRequired: "Потребна е проверка!",
verified: "Потврдено",
verifying: "Се проверува...",
waitAlert: "Се проверува... ве молиме почекајте.",
cancel: "Откажи",
enterCodeFromImage: "За да продолжите, ве молиме внесете го кодот од сликата подолу."
};
globalThis.$altcha.i18n.set("mk", i18n$3);
const i18n$2 = {
ariaLinkLabel: "Altcha (faqja zyrtare)",
enterCode: "Fut kodin",
enterCodeAria: "Fut kodin që dëgjon. Shtypni Hapësirë për të luajtur audio.",
error: "Verifikimi dështoi. Provoni përsëri më vonë.",
expired: "Verifikimi ka skaduar. Provoni përsëri.",
footer: 'I mbrojtur nga <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (faqja zyrtare)">ALTCHA</a>',
getAudioChallenge: "Merr një sfidë audio",
label: "Unë nuk jam një robot",
loading: "Duke u ngarkuar...",
reload: "Ringarko",
verify: "Verifiko",
verificationRequired: "Kërkohet verifikimi!",
verified: "I verifikuar",
verifying: "Duke verifikuar...",
waitAlert: "Duke verifikuar... ju lutem prisni.",
cancel: "Anuloje",
enterCodeFromImage: "Për të vazhduar, ju lutemi fusni kodin nga imazhi më poshtë."
};
globalThis.$altcha.i18n.set("sq", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (amptelike webwerf)",
enterCode: "Voer kode in",
enterCodeAria: "Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",
error: "Verifikasie het misluk. Probeer later weer.",
expired: "Verifikasie het verval. Probeer weer.",
footer: 'Beskerm deur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (amptelike webwerf)">ALTCHA</a>',
getAudioChallenge: "Kry 'n klankuitdaging",
label: "Ek is nie 'n robot nie",
loading: "Laai...",
reload: "Laai weer",
verify: "Verifieer",
verificationRequired: "Verifikasie is vereis!",
verified: "Geverifieer",
verifying: "Verifieer...",
waitAlert: "Verifieer... wag asseblief.",
cancel: "Kanselleer",
enterCodeFromImage: "Om voort te gaan, voer asseblief die kode vanaf die onderstaande prentjie in."
};
globalThis.$altcha.i18n.set("af", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (sit uffiċjali)",
enterCode: "Idħol il-kodiċi",
enterCodeAria: "Idħol il-kodiċi li tisma'. Agħfas Spazju biex tindaqq l-awdjo.",
error: "Il-verifika falliet. Erġa pprova aktar tard.",
expired: "Il-verifika skadiet. Erġa pprova.",
footer: 'Protett minn <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sit uffiċjali)">ALTCHA</a>',
getAudioChallenge: "Ikseb sfida bl-awdjo",
label: "Minix robot",
loading: "Qed jitgħabba...",
reload: "Ittella mill-ġdid",
verify: "Ivverifika",
verificationRequired: "Verifika meħtieġa!",
verified: "Ivverifikat",
verifying: "Verifika għaddejja...",
waitAlert: "Verifika għaddejja... stenna ftit.",
cancel: "Ikkanċella",
enterCodeFromImage: "Biex tipproċedi, jekk jogħġbok daħħal il-kodiċi mill-immaġni hawn taħt."
};
globalThis.$altcha.i18n.set("mt", i18n);
+853
View File
@@ -0,0 +1,853 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n$A = {
ariaLinkLabel: "Altcha (lloc web oficial)",
enterCode: "Introdueix el codi",
enterCodeAria: "Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.",
error: "Verificació fallida. Torna-ho a provar més tard.",
expired: "Verificació expirada. Torna-ho a provar.",
footer: 'Protegit per <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (lloc web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtenir un desafiament d’àudio",
label: "No sóc un robot",
loading: "Carregant...",
reload: "Torna a carregar",
verify: "Verificar",
verificationRequired: "Es requereix verificació!",
verified: "Verificat",
verifying: "Verificant...",
waitAlert: "Verificant... si us plau, espera.",
cancel: "Cancel·la",
enterCodeFromImage: "Per continuar, si us plau, introdueix el codi de la imatge següent."
};
globalThis.$altcha.i18n.set("ca", i18n$A);
const i18n$z = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",
error: "Échec de la vérification. Essayez à nouveau plus tard.",
expired: "La vérification a expiré. Essayez à nouveau.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-fr", i18n$z);
const i18n$y = {
ariaLinkLabel: "Altcha (offizielle Website)",
enterCode: "Code eingeben",
enterCodeAria: "Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.",
error: "Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.",
expired: "Überprüfung abgelaufen. Bitte versuchen Sie es erneut.",
footer: 'Geschützt durch <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offizielle Website)">ALTCHA</a>',
getAudioChallenge: "Audio-Herausforderung anfordern",
label: "Ich bin kein Roboter",
loading: "Lade...",
reload: "Neu laden",
verify: "Überprüfen",
verificationRequired: "Überprüfung erforderlich!",
verified: "Überprüft",
verifying: "Wird überprüft...",
waitAlert: "Überprüfung läuft... bitte warten.",
cancel: "Abbrechen",
enterCodeFromImage: "Um fortzufahren, geben Sie bitte den Code aus dem Bild unten ein."
};
globalThis.$altcha.i18n.set("de", i18n$y);
const i18n$x = {
ariaLinkLabel: "Altcha (offiziell Websäit)",
enterCode: "Code aginn",
enterCodeAria: "Gitt de Code an deen dir héiert. Dréckt op d'Weltraumtast fir Audio ofzespillen.",
error: "Verifikatioun ass feelgeschloen. Probéiert méi spéit nach emol.",
expired: "Verifikatioun ofgelaf. Probéiert nach emol.",
footer: 'Geschützt vun <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offiziell Websäit)">ALTCHA</a>',
getAudioChallenge: "Kritt eng Audio-Herausfuerderung",
label: "Ech sinn keen Robot",
loading: "Lueden...",
reload: "Nei lueden",
verify: "Verifizéieren",
verificationRequired: "Verifikatioun néideg!",
verified: "Verifizéiert",
verifying: "Verifizéieren...",
waitAlert: "Verifizéieren... waart wgl.",
cancel: "Ofbriechen",
enterCodeFromImage: "Fir virun ze fueren, gitt wgl. de Code aus dem Bild hei drënner an."
};
globalThis.$altcha.i18n.set("lb", i18n$x);
const i18n$w = {
ariaLinkLabel: "Altcha (officiële website)",
enterCode: "Voer code in",
enterCodeAria: "Voer de code in die je hoort. Druk op Spatie om de audio af te spelen.",
error: "Verificatie mislukt. Probeer het later opnieuw.",
expired: "Verificatie verlopen. Probeer het opnieuw.",
footer: 'Beschermd door <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiële website)">ALTCHA</a>',
getAudioChallenge: "Audio-uitdaging ontvangen",
label: "Ik ben geen robot",
loading: "Laden...",
reload: "Herladen",
verify: "Verifiëren",
verificationRequired: "Verificatie vereist!",
verified: "Geverifieerd",
verifying: "Bezig met verifiëren...",
waitAlert: "Bezig met verifiëren... even geduld a.u.b.",
cancel: "Annuleren",
enterCodeFromImage: "Om door te gaan, voert u de code uit de onderstaande afbeelding in."
};
globalThis.$altcha.i18n.set("nl", i18n$w);
const i18n$v = {
ariaLinkLabel: "Altcha (láithreán gréasáin oifigiúil)",
enterCode: "Iontráil cód",
enterCodeAria: "Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.",
error: "Theip ar an bhfíorú. Bain triail eile as níos déanaí.",
expired: "Tá an fíorú as feidhm. Bain triail eile as.",
footer: 'Cosanta ag <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (láithreán gréasáin oifigiúil)">ALTCHA</a>',
getAudioChallenge: "Faigh dúshlán fuaime",
label: "Níl mé i mo róbat",
loading: "Á luchtú...",
reload: "Athluchtaigh",
verify: "Fíoraigh",
verificationRequired: "Fíorú riachtanach!",
verified: "Fíoraithe",
verifying: "Fíorú ar siúl...",
waitAlert: "Fíorú ar siúl... fan go fóill.",
cancel: "Cealaigh",
enterCodeFromImage: "Chun dul ar aghaidh, le do thoil cuir isteach an cód ón íomhá thíos."
};
globalThis.$altcha.i18n.set("ga", i18n$v);
const i18n$u = {
ariaLinkLabel: "Altcha (sito ufficiale)",
enterCode: "Inserisci il codice",
enterCodeAria: "Inserisci il codice che senti. Premi Spazio per riprodurre l'audio.",
error: "Verifica fallita. Riprova più tardi.",
expired: "Verifica scaduta. Riprova.",
footer: 'Protetto da <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sito ufficiale)">ALTCHA</a>',
getAudioChallenge: "Ottieni una sfida audio",
label: "Non sono un robot",
loading: "Caricamento...",
reload: "Ricarica",
verify: "Verifica",
verificationRequired: "Verifica richiesta!",
verified: "Verificato",
verifying: "Verifica in corso...",
waitAlert: "Verifica in corso... attendere.",
cancel: "Annulla",
enterCodeFromImage: "Per procedere, inserisci il codice dall'immagine sottostante."
};
globalThis.$altcha.i18n.set("it", i18n$u);
const i18n$t = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Introduza o código",
enterCodeAria: "Introduza o código que ouve. Prima Espaço para reproduzir o áudio.",
error: "A verificação falhou. Por favor, tente novamente mais tarde.",
expired: "Verificação expirada. Por favor, tente novamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obter desafio de áudio",
label: "Não sou um robô",
loading: "A carregar...",
reload: "Recarregar",
verify: "Verificar",
verificationRequired: "Verificação necessária!",
verified: "Verificado",
verifying: "A verificar...",
waitAlert: "A verificar... por favor aguarde.",
cancel: "Cancelar",
enterCodeFromImage: "Para prosseguir, introduza o código da imagem abaixo."
};
globalThis.$altcha.i18n.set("pt-pt", i18n$t);
const i18n$s = {
ariaLinkLabel: "Altcha (sitio web oficial)",
enterCode: "Introduce el código",
enterCodeAria: "Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.",
error: "Falló la verificación. Por favor intente nuevamente más tarde.",
expired: "Verificación expirada. Por favor intente nuevamente.",
footer: 'Protegido por <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sitio web oficial)">ALTCHA</a>',
getAudioChallenge: "Obtener un desafío de audio",
label: "No soy un robot",
loading: "Cargando...",
reload: "Recargar",
verify: "Verificar",
verificationRequired: "¡Verificación requerida!",
verified: "Verificado",
verifying: "Verificando...",
waitAlert: "Verificando... por favor espere.",
cancel: "Cancelar",
enterCodeFromImage: "Para continuar, introduzca el código de la imagen de abajo."
};
globalThis.$altcha.i18n.set("es-es", i18n$s);
const i18n$r = {
ariaLinkLabel: "Altcha (webgune ofiziala)",
enterCode: "Sartu kodea",
enterCodeAria: "Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.",
error: "Egiaztatzeak huts egin du. Saiatu berriro geroago.",
expired: "Egiaztatzea iraungi da. Saiatu berriro.",
footer: '<a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (webgune ofiziala)">ALTCHA</a>k babestuta',
getAudioChallenge: "Jaso audio-erronka bat",
label: "Ez naiz robot bat",
loading: "Kargatzen...",
reload: "Birkargatu",
verify: "Egiaztatu",
verificationRequired: "Egiaztatzea beharrezkoa da!",
verified: "Egiaztatuta",
verifying: "Egiaztatzen...",
waitAlert: "Egiaztatzen... itxaron mesedez.",
cancel: "Utzi",
enterCodeFromImage: "Jarraitzeko, idatzi beheko irudiko kodea."
};
globalThis.$altcha.i18n.set("eu", i18n$r);
const i18n$q = {
ariaLinkLabel: "Altcha (official website)",
cancel: "Cancel",
enterCode: "Enter code",
enterCodeAria: "Enter code you hear. Press Space to play audio.",
enterCodeFromImage: "To proceed, please enter the code from the image below.",
error: "Verification failed. Try again later.",
expired: "Verification expired. Try again.",
footer: 'Protected by <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (official website)">ALTCHA</a>',
getAudioChallenge: "Get an audio challenge",
label: "I'm not a robot",
loading: "Loading...",
reload: "Reload",
verify: "Verify",
verificationRequired: "Verification required!",
verified: "Verified",
verifying: "Verifying...",
waitAlert: "Verifying... please wait."
};
globalThis.$altcha.i18n.set("en", i18n$q);
const i18n$p = {
ariaLinkLabel: "Altcha (officiel hjemmeside)",
enterCode: "Indtast kode",
enterCodeAria: "Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.",
error: "Verificering mislykkedes. Prøv venligst igen senere.",
expired: "Verificering udløbet. Prøv venligst igen.",
footer: 'Beskyttet af <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiel hjemmeside)">ALTCHA</a>',
getAudioChallenge: "Hent lydudfordring",
label: "Jeg er ikke en robot",
loading: "Indlæser...",
reload: "Genindlæs",
verify: "Verificer",
verificationRequired: "Verificering kræves!",
verified: "Verificeret",
verifying: "Verificerer...",
waitAlert: "Verificerer... vent venligst.",
cancel: "Annuller",
enterCodeFromImage: "For at fortsætte, bedes du indtaste koden fra billedet herunder."
};
globalThis.$altcha.i18n.set("da", i18n$p);
const i18n$o = {
ariaLinkLabel: "Altcha (officiell webbplats)",
enterCode: "Ange kod",
enterCodeAria: "Ange koden du hör. Tryck på mellanslag för att spela upp ljudet.",
error: "Verifiering misslyckades. Försök igen senare.",
expired: "Verifieringen har gått ut. Försök igen.",
footer: 'Skyddad av <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (officiell webbplats)">ALTCHA</a>',
getAudioChallenge: "Få ljudutmaning",
label: "Jag är inte en robot",
loading: "Laddar...",
reload: "Ladda om",
verify: "Verifiera",
verificationRequired: "Verifiering krävs!",
verified: "Verifierad",
verifying: "Verifierar...",
waitAlert: "Verifierar... vänligen vänta.",
cancel: "Avbryt",
enterCodeFromImage: "För att fortsätta, ange koden från bilden nedan."
};
globalThis.$altcha.i18n.set("sv", i18n$o);
const i18n$n = {
ariaLinkLabel: "Altcha (virallinen verkkosivusto)",
enterCode: "Syötä koodi",
enterCodeAria: "Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.",
error: "Varmennus epäonnistui. Yritä myöhemmin uudelleen.",
expired: "Varmennus vanhentui. Yritä uudelleen.",
footer: 'Suojattu <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (virallinen verkkosivusto)">ALTCHA</a>:lla',
getAudioChallenge: "Hae äänitehtävä",
label: "En ole robotti",
loading: "Ladataan...",
reload: "Lataa uudelleen",
verify: "Vahvista",
verificationRequired: "Vahvistus vaaditaan!",
verified: "Vahvistettu",
verifying: "Vahvistetaan...",
waitAlert: "Vahvistetaan... odota hetki.",
cancel: "Peruuta",
enterCodeFromImage: "Jatkaaksesi, syötä alla olevan kuvan koodi."
};
globalThis.$altcha.i18n.set("fi", i18n$n);
const i18n$m = {
ariaLinkLabel: "Altcha (ametlik veebisait)",
enterCode: "Sisesta kood",
enterCodeAria: "Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.",
error: "Kinnitamine ebaõnnestus. Proovi hiljem uuesti.",
expired: "Kinnitamine aegus. Proovi uuesti.",
footer: 'Kaitstud <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (ametlik veebisait)">ALTCHA</a> poolt',
getAudioChallenge: "Hangi heliülesanne",
label: "Ma ei ole robot",
loading: "Laadimine...",
reload: "Laadi uuesti",
verify: "Kinnita",
verificationRequired: "Kontroll on vajalik!",
verified: "Kinnitatud",
verifying: "Kinnitamine...",
waitAlert: "Kinnitamine... palun oota.",
cancel: "Tühista",
enterCodeFromImage: "Jätkamiseks sisestage alloleval pildil olev kood."
};
globalThis.$altcha.i18n.set("et", i18n$m);
const i18n$l = {
ariaLinkLabel: "Altcha (offisiell nettside)",
enterCode: "Skriv inn kode",
enterCodeAria: "Skriv inn koden du hører. Trykk på Space for å spille av lyden.",
error: "Verifisering mislyktes. Prøv igjen senere.",
expired: "Verifiseringen utløp. Prøv igjen.",
footer: 'Beskyttet av <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (offisiell nettside)">ALTCHA</a>',
getAudioChallenge: "Få en lydutfordring",
label: "Jeg er ikke en robot",
loading: "Laster...",
reload: "Last på nytt",
verify: "Verifiser",
verificationRequired: "Verifisering kreves!",
verified: "Verifisert",
verifying: "Verifiserer...",
waitAlert: "Verifiserer... vennligst vent.",
cancel: "Avbryt",
enterCodeFromImage: "For å fortsette, vennligst skriv inn koden fra bildet nedenfor."
};
globalThis.$altcha.i18n.set("nb", i18n$l);
const i18n$k = {
ariaLinkLabel: "Altcha (opinber vefsíða)",
enterCode: "Sláðu inn kóða",
enterCodeAria: "Sláðu inn kóðann sem þú heyrir. Ýttu á Space til að spila hljóðið.",
error: "Staðfesting mistókst. Reyndu aftur síðar.",
expired: "Staðfesting er útrunnin. Reyndu aftur.",
footer: 'Verndað af <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (opinber vefsíða)">ALTCHA</a>',
getAudioChallenge: "Fá hljóðáskorun",
label: "Ég er ekki robot",
loading: "Hleður...",
reload: "Hleð aftur",
verify: "Staðfesta",
verificationRequired: "Staðfesting er nauðsynleg!",
verified: "Staðfest",
verifying: "Að staðfesta...",
waitAlert: "Að staðfesta... vinsamlegast bíða.",
cancel: "Hætta við",
enterCodeFromImage: "Til að halda áfram, vinsamlegast sláðu inn kóðann af myndinni hér að neðan."
};
globalThis.$altcha.i18n.set("is", i18n$k);
const i18n$j = {
ariaLinkLabel: "Altcha (oficiali svetainė)",
enterCode: "Įveskite kodą",
enterCodeAria: "Įveskite girdimą kodą. Paspauskite tarpo klavišą, kad grotumėte garso įrašą.",
error: "Patvirtinimas nepavyko. Bandykite vėliau.",
expired: "Patvirtinimo laikas baigėsi. Bandykite dar kartą.",
footer: 'Apsaugota <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiali svetainė)">ALTCHA</a>',
getAudioChallenge: "Gauti garso užduotį",
label: "Aš nesu robotas",
loading: "Įkeliama...",
reload: "Įkelti iš naujo",
verify: "Patvirtinti",
verificationRequired: "Reikalingas patvirtinimas!",
verified: "Patvirtinta",
verifying: "Tikrinama...",
waitAlert: "Tikrinama... prašome palaukti.",
cancel: "Atšaukti",
enterCodeFromImage: "Norėdami tęsti, įveskite kodą iš paveikslėlio žemiau."
};
globalThis.$altcha.i18n.set("lt", i18n$j);
const i18n$i = {
ariaLinkLabel: "Altcha (oficiālā tīmekļa vietne)",
enterCode: "Ievadiet kodu",
enterCodeAria: "Ievadiet dzirdamo kodu. Nospiediet atstarpes taustiņu, lai atskaņotu audio.",
error: "Verifikācija neizdevās. Mēģiniet vēlāk vēlreiz.",
expired: "Verifikācijas laiks ir beidzies. Mēģiniet vēlreiz.",
footer: 'Aizsargāts ar <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiālā tīmekļa vietne)">ALTCHA</a>',
getAudioChallenge: "Saņemt audio izaicinājumu",
label: "Es neesmu robots",
loading: "Notiek ielāde...",
reload: "Pārlādēt",
verify: "Verificēt",
verificationRequired: "Nepieciešama verifikācija!",
verified: "Verificēts",
verifying: "Notiek verifikācija...",
waitAlert: "Notiek verifikācija... lūdzu, uzgaidiet.",
cancel: "Atcelt",
enterCodeFromImage: "Lai turpinātu, lūdzu, ievadiet zemāk redzamo attēlu kodu."
};
globalThis.$altcha.i18n.set("lv", i18n$i);
const i18n$h = {
ariaLinkLabel: "Altcha (афіцыйны сайт)",
enterCode: "Увядзіце код",
enterCodeAria: "Увядзіце код, які вы чуеце. Націсніце прабел, каб прайграць аўдыё.",
error: "Праверка не прайшла. Паспрабуйце пазней.",
expired: "Тэрмін праверкі скончыўся. Паспрабуйце зноў.",
footer: 'Абаронена <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (афіцыйны сайт)">ALTCHA</a>',
getAudioChallenge: "Атрымаць аўдыё выклік",
label: "Я не робат",
loading: "Загрузка...",
reload: "Перазагрузіць",
verify: "Праверыць",
verificationRequired: "Патрабуецца праверка!",
verified: "Праверана",
verifying: "Правяраем...",
waitAlert: "Праверка... калі ласка, пачакайце.",
cancel: "Скасаваць",
enterCodeFromImage: "Каб працягнуць, увядзіце код з малюнка ніжэй."
};
globalThis.$altcha.i18n.set("be", i18n$h);
const i18n$g = {
ariaLinkLabel: "Altcha (službena web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",
error: "Verifikacija nije uspjela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (službena web stranica)">ALTCHA</a>',
getAudioChallenge: "Dohvatite audio izazov",
label: "Nisam robot",
loading: "Učitavanje...",
reload: "Ponovno učitaj",
verify: "Verifikuj",
verificationRequired: "Verifikacija je obavezna!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikacija u toku... molimo vas da sačekate.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak, molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("bs", i18n$g);
const i18n$f = {
ariaLinkLabel: "Altcha (oficiální web)",
enterCode: "Zadejte kód",
enterCodeAria: "Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.",
error: "Ověření selhalo. Zkuste to prosím později.",
expired: "Ověření vypršelo. Zkuste to prosím znovu.",
footer: 'Chráněno pomocí <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiální web)">ALTCHA</a>',
getAudioChallenge: "Získat audio výzvu",
label: "Nejsem robot",
loading: "Načítání...",
reload: "Znovu načíst",
verify: "Ověřit",
verificationRequired: "Vyžaduje se ověření!",
verified: "Ověřeno",
verifying: "Ověřování...",
waitAlert: "Probíhá ověření... prosím počkejte.",
cancel: "Zrušit",
enterCodeFromImage: "Pro pokračování zadejte kód z obrázku níže."
};
globalThis.$altcha.i18n.set("cs", i18n$f);
const i18n$e = {
ariaLinkLabel: "Altcha (oficjalna strona internetowa)",
enterCode: "Wprowadź kod",
enterCodeAria: "Wpisz kod, który słyszysz. Naciśnij Spację, aby odtworzyć dźwięk.",
error: "Weryfikacja nie powiodła się. Spróbuj ponownie później.",
expired: "Weryfikacja wygasła. Spróbuj ponownie.",
footer: 'Chronione przez <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficjalna strona internetowa)">ALTCHA</a>',
getAudioChallenge: "Pobierz zadanie dźwiękowe",
label: "Nie jestem robotem",
loading: "Ładowanie...",
reload: "Odśwież",
verify: "Zweryfikuj",
verificationRequired: "Wymagana weryfikacja!",
verified: "Zweryfikowano",
verifying: "Weryfikacja...",
waitAlert: "Trwa weryfikacja... proszę czekać.",
cancel: "Anuluj",
enterCodeFromImage: "Aby kontynuować, wprowadź kod z poniższego obrazka."
};
globalThis.$altcha.i18n.set("pl", i18n$e);
const i18n$d = {
ariaLinkLabel: "Altcha (hivatalos weboldal)",
enterCode: "Írja be a kódot",
enterCodeAria: "Írja be a hallott kódot. Nyomja meg a Szóköz billentyűt a hang lejátszásához.",
error: "A hitelesítés nem sikerült. Próbáld meg később újra.",
expired: "A hitelesítés lejárt. Próbáld újra.",
footer: 'Védve a következő által: <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (hivatalos weboldal)">ALTCHA</a>',
getAudioChallenge: "Hangalapú kihívás kérése",
label: "Nem vagyok robot",
loading: "Betöltés...",
reload: "Újratöltés",
verify: "Ellenőrzés",
verificationRequired: "Ellenőrzés szükséges!",
verified: "Ellenőrizve",
verifying: "Ellenőrzés folyamatban...",
waitAlert: "Ellenőrzés folyamatban... kérlek várj.",
cancel: "Mégse",
enterCodeFromImage: "A folytatáshoz, kérjük, adja meg az alábbi kép kódját."
};
globalThis.$altcha.i18n.set("hu", i18n$d);
const i18n$c = {
ariaLinkLabel: "Altcha (oficiálna webová stránka)",
enterCode: "Zadajte kód",
enterCodeAria: "Zadajte kód, ktorý počujete. Stlačením medzerníka prehráte zvuk.",
error: "Verifikácia zlyhala. Skúste to znova neskôr.",
expired: "Verifikácia vypršala. Skúste to znova.",
footer: 'Chránené <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (oficiálna webová stránka)">ALTCHA</a>',
getAudioChallenge: "Získať audio výzvu",
label: "Nie som robot",
loading: "Načítava sa...",
reload: "Obnoviť",
verify: "Verifikovať",
verificationRequired: "Vyžaduje sa overenie!",
verified: "Verifikované",
verifying: "Prebieha verifikácia...",
waitAlert: "Prebieha verifikácia... prosím čakajte.",
cancel: "Zrušiť",
enterCodeFromImage: "Na pokračovanie, prosím, zadajte kód z obrázka nižšie."
};
globalThis.$altcha.i18n.set("sk", i18n$c);
const i18n$b = {
ariaLinkLabel: "Altcha (uradna spletna stran)",
enterCode: "Vnesite kodo",
enterCodeAria: "Vnesite kodo, ki jo slišite. Pritisnite preslednico za predvajanje zvoka.",
error: "Preverjanje ni uspelo. Poskusite znova kasneje.",
expired: "Preverjanje je poteklo. Poskusite znova.",
footer: 'Zaščiteno z <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (uradna spletna stran)">ALTCHA</a>',
getAudioChallenge: "Pridobite zvočni izziv",
label: "Nisem robot",
loading: "Nalagam...",
reload: "Ponovno naloži",
verify: "Preveri",
verificationRequired: "Potrebna je preveritev!",
verified: "Preverjeno",
verifying: "Preverjanje...",
waitAlert: "Preverjanje... prosim počakajte.",
cancel: "Preklic",
enterCodeFromImage: "Za nadaljevanje, prosimo, vnesite kodo s slike spodaj."
};
globalThis.$altcha.i18n.set("sl", i18n$b);
const i18n$a = {
ariaLinkLabel: "Altcha (službena web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite razmaknicu za reprodukciju zvuka.",
error: "Provjera nije uspjela. Molimo pokušajte kasnije.",
expired: "Provjera je istekla. Molimo pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (službena web stranica)">ALTCHA</a>',
getAudioChallenge: "Audio provjera",
label: "Ja nisam robot",
loading: "Učitavanje...",
reload: "Ponovno učitaj",
verify: "Provjeri",
verificationRequired: "Potrebna je provjera!",
verified: "Provjereno",
verifying: "Provjeravanje...",
waitAlert: "Provjera je u tijeku... molimo pričekajte.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("hr", i18n$a);
const i18n$9 = {
ariaLinkLabel: "Altcha (site oficial)",
enterCode: "Introduceți codul",
enterCodeAria: "Introduceți codul pe care îl auziți. Apăsați Spațiu pentru a reda audio.",
error: "Verificarea a eșuat. Încearcă din nou mai târziu.",
expired: "Verificarea a expirat. Încearcă din nou.",
footer: 'Protejat de <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site oficial)">ALTCHA</a>',
getAudioChallenge: "Obține o provocare audio",
label: "Nu sunt un robot",
loading: "Se încarcă...",
reload: "Reîncarcă",
verify: "Verifică",
verificationRequired: "Verificare necesară!",
verified: "Verificat",
verifying: "Se verifică...",
waitAlert: "Se verifică... te rugăm să aștepți.",
cancel: "Anulare",
enterCodeFromImage: "Pentru a continua, vă rugăm să introduceți codul din imaginea de mai jos."
};
globalThis.$altcha.i18n.set("ro", i18n$9);
const i18n$8 = {
ariaLinkLabel: "Altcha (официален уебсайт)",
enterCode: "Въведете код",
enterCodeAria: "Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.",
error: "Проверката неуспешна. Моля, опитайте по-късно.",
expired: "Времето за проверка изтече. Моля, опитайте отново.",
footer: 'Защитено от <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официален уебсайт)">ALTCHA</a>',
getAudioChallenge: "Аудио проверка",
label: "Аз не съм робот",
loading: "Зареждане...",
reload: "Презареди",
verify: "Провери",
verificationRequired: "Изисква се проверка!",
verified: "Проверено",
verifying: "Проверява се...",
waitAlert: "Проверката е в процес... моля изчакайте.",
cancel: "Отказ",
enterCodeFromImage: "За да продължите, моля, въведете кода от изображението по-долу."
};
globalThis.$altcha.i18n.set("bg", i18n$8);
const i18n$7 = {
ariaLinkLabel: "Altcha (επίσημος ιστότοπος)",
enterCode: "Εισαγάγετε κωδικό",
enterCodeAria: "Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.",
error: "Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.",
expired: "Η επαλήθευση έληξε. Δοκιμάστε ξανά.",
footer: 'Προστατεύεται από το <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (επίσημος ιστότοπος)">ALTCHA</a>',
getAudioChallenge: "Λήψη ηχητικής δοκιμασίας",
label: "Δεν είμαι ρομπότ",
loading: "Φόρτωση...",
reload: "Επαναφόρτωση",
verify: "Επαλήθευση",
verificationRequired: "Απαιτείται έλεγχος!",
verified: "Επαληθεύτηκε",
verifying: "Γίνεται επαλήθευση...",
waitAlert: "Γίνεται επαλήθευση... παρακαλώ περιμένετε.",
cancel: "Ακύρωση",
enterCodeFromImage: "Για να συνεχίσετε, εισάγετε τον κωδικό από την παρακάτω εικόνα."
};
globalThis.$altcha.i18n.set("el", i18n$7);
const i18n$6 = {
ariaLinkLabel: "Altcha (zvanična web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",
error: "Verifikacija nije uspela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno od strane <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (zvanična web stranica)">ALTCHA</a>',
getAudioChallenge: "Dohvatite audio izazov",
label: "Nisam robot",
loading: "Učitavanje...",
reload: "Ponovo učitaj",
verify: "Verifikuj",
verificationRequired: "Verifikacija je obavezna!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikacija u toku... molimo vas da sačekate.",
cancel: "Откажи",
enterCodeFromImage: "Да бисте наставили, унесите код са слике испод."
};
globalThis.$altcha.i18n.set("sr", i18n$6);
const i18n$5 = {
ariaLinkLabel: "Altcha (официальный сайт)",
enterCode: "Введите код",
enterCodeAria: "Введите код, который слышите. Нажмите пробел для воспроизведения аудио.",
error: "Ошибка верификации. Попробуйте позже.",
expired: "Срок действия верификации истек. Попробуйте снова.",
footer: 'Защищено <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официальный сайт)">ALTCHA</a>',
getAudioChallenge: "Получить аудио задачу",
label: "Я не робот",
loading: "Загрузка...",
reload: "Перезагрузить",
verify: "Проверить",
verificationRequired: "Требуется проверка!",
verified: "Проверено",
verifying: "Идет проверка...",
waitAlert: "Идет проверка... Пожалуйста, подождите.",
cancel: "Отмена",
enterCodeFromImage: "Чтобы продолжить, пожалуйста, введите код с изображения ниже."
};
globalThis.$altcha.i18n.set("ru", i18n$5);
const i18n$4 = {
ariaLinkLabel: "Altcha (zvanična web stranica)",
enterCode: "Unesite kod",
enterCodeAria: "Unesite kod koji čujete. Pritisnite Space za puštanje zvuka.",
error: "Verifikacija nije uspjela. Pokušajte ponovo kasnije.",
expired: "Verifikacija je istekla. Pokušajte ponovo.",
footer: 'Zaštićeno putem <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (zvanična web stranica)">ALTCHA</a>',
getAudioChallenge: "Preuzmi audio izazov",
label: "Nijesam robot",
loading: "Učitavanje...",
reload: "Ponovo učitaj",
verify: "Verifikuj",
verificationRequired: "Potrebna je verifikacija!",
verified: "Verifikovano",
verifying: "Verifikacija u toku...",
waitAlert: "Verifikujem... molimo sačekajte.",
cancel: "Odustani",
enterCodeFromImage: "Za nastavak, molimo unesite kod sa slike ispod."
};
globalThis.$altcha.i18n.set("me", i18n$4);
const i18n$3 = {
ariaLinkLabel: "Altcha (официјален веб-сајт)",
enterCode: "Внесете код",
enterCodeAria: "Внесете го кодот што го слушате. Притиснете Space за да ја пуштите аудио снимката.",
error: "Проверката не успеа. Обидете се подоцна.",
expired: "Проверката истече. Обидете се повторно.",
footer: 'Заштитено со <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (официјален веб-сајт)">ALTCHA</a>',
getAudioChallenge: "Земете аудио предизвик",
label: "Јас не сум робот",
loading: "Се вчитува...",
reload: "Превчитај",
verify: "Провери",
verificationRequired: "Потребна е проверка!",
verified: "Потврдено",
verifying: "Се проверува...",
waitAlert: "Се проверува... ве молиме почекајте.",
cancel: "Откажи",
enterCodeFromImage: "За да продолжите, ве молиме внесете го кодот од сликата подолу."
};
globalThis.$altcha.i18n.set("mk", i18n$3);
const i18n$2 = {
ariaLinkLabel: "Altcha (faqja zyrtare)",
enterCode: "Fut kodin",
enterCodeAria: "Fut kodin që dëgjon. Shtypni Hapësirë për të luajtur audio.",
error: "Verifikimi dështoi. Provoni përsëri më vonë.",
expired: "Verifikimi ka skaduar. Provoni përsëri.",
footer: 'I mbrojtur nga <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (faqja zyrtare)">ALTCHA</a>',
getAudioChallenge: "Merr një sfidë audio",
label: "Unë nuk jam një robot",
loading: "Duke u ngarkuar...",
reload: "Ringarko",
verify: "Verifiko",
verificationRequired: "Kërkohet verifikimi!",
verified: "I verifikuar",
verifying: "Duke verifikuar...",
waitAlert: "Duke verifikuar... ju lutem prisni.",
cancel: "Anuloje",
enterCodeFromImage: "Për të vazhduar, ju lutemi fusni kodin nga imazhi më poshtë."
};
globalThis.$altcha.i18n.set("sq", i18n$2);
const i18n$1 = {
ariaLinkLabel: "Altcha (amptelike webwerf)",
enterCode: "Voer kode in",
enterCodeAria: "Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",
error: "Verifikasie het misluk. Probeer later weer.",
expired: "Verifikasie het verval. Probeer weer.",
footer: 'Beskerm deur <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (amptelike webwerf)">ALTCHA</a>',
getAudioChallenge: "Kry 'n klankuitdaging",
label: "Ek is nie 'n robot nie",
loading: "Laai...",
reload: "Laai weer",
verify: "Verifieer",
verificationRequired: "Verifikasie is vereis!",
verified: "Geverifieer",
verifying: "Verifieer...",
waitAlert: "Verifieer... wag asseblief.",
cancel: "Kanselleer",
enterCodeFromImage: "Om voort te gaan, voer asseblief die kode vanaf die onderstaande prentjie in."
};
globalThis.$altcha.i18n.set("af", i18n$1);
const i18n = {
ariaLinkLabel: "Altcha (sit uffiċjali)",
enterCode: "Idħol il-kodiċi",
enterCodeAria: "Idħol il-kodiċi li tisma'. Agħfas Spazju biex tindaqq l-awdjo.",
error: "Il-verifika falliet. Erġa pprova aktar tard.",
expired: "Il-verifika skadiet. Erġa pprova.",
footer: 'Protett minn <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (sit uffiċjali)">ALTCHA</a>',
getAudioChallenge: "Ikseb sfida bl-awdjo",
label: "Minix robot",
loading: "Qed jitgħabba...",
reload: "Ittella mill-ġdid",
verify: "Ivverifika",
verificationRequired: "Verifika meħtieġa!",
verified: "Ivverifikat",
verifying: "Verifika għaddejja...",
waitAlert: "Verifika għaddejja... stenna ftit.",
cancel: "Ikkanċella",
enterCodeFromImage: "Biex tipproċedi, jekk jogħġbok daħħal il-kodiċi mill-immaġni hawn taħt."
};
globalThis.$altcha.i18n.set("mt", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/fa'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (وب‌سایت رسمی)",
enterCode: "کد را وارد کنید",
enterCodeAria: "کدی که می‌شنوید را وارد کنید. برای پخش صدا Space را فشار دهید.",
error: "احراز هویت ناموفق بود. بعداً دوباره تلاش کنید.",
expired: "احراز هویت منقضی شد. دوباره تلاش کنید.",
footer: 'محافظت شده توسط <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (وب‌سایت رسمی)">ALTCHA</a>',
getAudioChallenge: "دریافت چالش صوتی",
label: "من ربات نیستم",
loading: "در حال بارگذاری...",
reload: "بارگذاری مجدد",
verify: "تایید",
verificationRequired: "احراز هویت لازم است!",
verified: "تایید شد",
verifying: "در حال تایید...",
waitAlert: "در حال تایید... لطفا منتظر بمانید.",
cancel: "لغو کردن",
enterCodeFromImage: "برای ادامه، لطفاً کد تصویر زیر را وارد کنید."
};
globalThis.$altcha.i18n.set("fa", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (وب‌سایت رسمی)",
enterCode: "کد را وارد کنید",
enterCodeAria: "کدی که می‌شنوید را وارد کنید. برای پخش صدا Space را فشار دهید.",
error: "احراز هویت ناموفق بود. بعداً دوباره تلاش کنید.",
expired: "احراز هویت منقضی شد. دوباره تلاش کنید.",
footer: 'محافظت شده توسط <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (وب‌سایت رسمی)">ALTCHA</a>',
getAudioChallenge: "دریافت چالش صوتی",
label: "من ربات نیستم",
loading: "در حال بارگذاری...",
reload: "بارگذاری مجدد",
verify: "تایید",
verificationRequired: "احراز هویت لازم است!",
verified: "تایید شد",
verifying: "در حال تایید...",
waitAlert: "در حال تایید... لطفا منتظر بمانید.",
cancel: "لغو کردن",
enterCodeFromImage: "برای ادامه، لطفاً کد تصویر زیر را وارد کنید."
};
globalThis.$altcha.i18n.set("fa", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/fi'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (virallinen verkkosivusto)",
enterCode: "Syötä koodi",
enterCodeAria: "Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.",
error: "Varmennus epäonnistui. Yritä myöhemmin uudelleen.",
expired: "Varmennus vanhentui. Yritä uudelleen.",
footer: 'Suojattu <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (virallinen verkkosivusto)">ALTCHA</a>:lla',
getAudioChallenge: "Hae äänitehtävä",
label: "En ole robotti",
loading: "Ladataan...",
reload: "Lataa uudelleen",
verify: "Vahvista",
verificationRequired: "Vahvistus vaaditaan!",
verified: "Vahvistettu",
verifying: "Vahvistetaan...",
waitAlert: "Vahvistetaan... odota hetki.",
cancel: "Peruuta",
enterCodeFromImage: "Jatkaaksesi, syötä alla olevan kuvan koodi."
};
globalThis.$altcha.i18n.set("fi", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (virallinen verkkosivusto)",
enterCode: "Syötä koodi",
enterCodeAria: "Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.",
error: "Varmennus epäonnistui. Yritä myöhemmin uudelleen.",
expired: "Varmennus vanhentui. Yritä uudelleen.",
footer: 'Suojattu <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (virallinen verkkosivusto)">ALTCHA</a>:lla',
getAudioChallenge: "Hae äänitehtävä",
label: "En ole robotti",
loading: "Ladataan...",
reload: "Lataa uudelleen",
verify: "Vahvista",
verificationRequired: "Vahvistus vaaditaan!",
verified: "Vahvistettu",
verifying: "Vahvistetaan...",
waitAlert: "Vahvistetaan... odota hetki.",
cancel: "Peruuta",
enterCodeFromImage: "Jatkaaksesi, syötä alla olevan kuvan koodi."
};
globalThis.$altcha.i18n.set("fi", i18n);
}));
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.",
error: "Échec de la vérification. Réessayez plus tard.",
expired: "La vérification a expiré. Réessayez.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-ca", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.",
error: "Échec de la vérification. Réessayez plus tard.",
expired: "La vérification a expiré. Réessayez.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-ca", i18n);
}));
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",
error: "Échec de la vérification. Essayez à nouveau plus tard.",
expired: "La vérification a expiré. Essayez à nouveau.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-fr", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (site officiel)",
enterCode: "Entrez le code",
enterCodeAria: "Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",
error: "Échec de la vérification. Essayez à nouveau plus tard.",
expired: "La vérification a expiré. Essayez à nouveau.",
footer: 'Protégé par <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (site officiel)">ALTCHA</a>',
getAudioChallenge: "Obtenir un défi audio",
label: "Je ne suis pas un robot",
loading: "Chargement...",
reload: "Recharger",
verify: "Vérifier",
verificationRequired: "Vérification requise !",
verified: "Vérifié",
verifying: "Vérification en cours...",
waitAlert: "Vérification en cours... veuillez patienter.",
cancel: "Annuler",
enterCodeFromImage: "Pour continuer, veuillez entrer le code de l'image ci-dessous."
};
globalThis.$altcha.i18n.set("fr-fr", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/fr'; export {};
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/ga'; export {};
+128
View File
@@ -0,0 +1,128 @@
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (láithreán gréasáin oifigiúil)",
enterCode: "Iontráil cód",
enterCodeAria: "Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.",
error: "Theip ar an bhfíorú. Bain triail eile as níos déanaí.",
expired: "Tá an fíorú as feidhm. Bain triail eile as.",
footer: 'Cosanta ag <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (láithreán gréasáin oifigiúil)">ALTCHA</a>',
getAudioChallenge: "Faigh dúshlán fuaime",
label: "Níl mé i mo róbat",
loading: "Á luchtú...",
reload: "Athluchtaigh",
verify: "Fíoraigh",
verificationRequired: "Fíorú riachtanach!",
verified: "Fíoraithe",
verifying: "Fíorú ar siúl...",
waitAlert: "Fíorú ar siúl... fan go fóill.",
cancel: "Cealaigh",
enterCodeFromImage: "Chun dul ar aghaidh, le do thoil cuir isteach an cód ón íomhá thíos."
};
globalThis.$altcha.i18n.set("ga", i18n);
+133
View File
@@ -0,0 +1,133 @@
(function(factory) {
typeof define === "function" && define.amd ? define(factory) : factory();
})((function() {
"use strict";
const noop = () => {
};
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
}
function subscribe_to_store(store2, run, invalidate) {
if (store2 == null) {
run(void 0);
return noop;
}
const unsub = untrack(
() => store2.subscribe(
run,
// @ts-expect-error
invalidate
)
);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
const subscriber_queue = [];
function writable(value, start = noop) {
let stop = null;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(
/** @type {T} */
value
));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(
/** @type {T} */
value
);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function get(store2) {
let value;
subscribe_to_store(store2, (_) => value = _)();
return value;
}
let untracking = false;
function untrack(fn) {
var previous_untracking = untracking;
try {
untracking = true;
return fn();
} finally {
untracking = previous_untracking;
}
}
function store(defaultValue) {
const scope = {
get: (name) => {
return get(scope.store)[name];
},
set: (name, value) => {
if (typeof name === "string") {
Object.assign(get(scope.store), {
[name]: value
});
} else {
Object.assign(get(scope.store), name);
}
scope.store.set(get(scope.store));
},
store: writable(defaultValue)
};
return scope;
}
globalThis.$altcha = globalThis.$altcha || {
algorithms: /* @__PURE__ */ new Map(),
defaults: store({}),
i18n: store({}),
instances: /* @__PURE__ */ new Set(),
plugins: /* @__PURE__ */ new Set()
};
const i18n = {
ariaLinkLabel: "Altcha (láithreán gréasáin oifigiúil)",
enterCode: "Iontráil cód",
enterCodeAria: "Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.",
error: "Theip ar an bhfíorú. Bain triail eile as níos déanaí.",
expired: "Tá an fíorú as feidhm. Bain triail eile as.",
footer: 'Cosanta ag <a href="https://altcha.org/" tabindex="-1" target="_blank" aria-label="Altcha (láithreán gréasáin oifigiúil)">ALTCHA</a>',
getAudioChallenge: "Faigh dúshlán fuaime",
label: "Níl mé i mo róbat",
loading: "Á luchtú...",
reload: "Athluchtaigh",
verify: "Fíoraigh",
verificationRequired: "Fíorú riachtanach!",
verified: "Fíoraithe",
verifying: "Fíorú ar siúl...",
waitAlert: "Fíorú ar siúl... fan go fóill.",
cancel: "Cealaigh",
enterCodeFromImage: "Chun dul ar aghaidh, le do thoil cuir isteach an cód ón íomhá thíos."
};
globalThis.$altcha.i18n.set("ga", i18n);
}));
+1
View File
@@ -0,0 +1 @@
declare module 'altcha/i18n/he'; export {};

Some files were not shown because too many files have changed in this diff Show More