feat: Replace aCAPTCHA with official ALTCHA (altcha.org) Proof-of-Work web component widget
This commit is contained in:
+30
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
## What’s 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 ALTCHA’s 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
|
||||
+1
File diff suppressed because one or more lines are too long
+7352
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+7358
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/419'; export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/af'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/africa'; export {};
|
||||
+248
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/all'; export {};
|
||||
+1328
File diff suppressed because it is too large
Load Diff
+1333
File diff suppressed because it is too large
Load Diff
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/am'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/americas'; export {};
|
||||
+168
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/ar'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/asia'; export {};
|
||||
+588
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/az'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/be'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/bg'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/bn'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/br'; export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/bs'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/ca'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/cn'; export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/cs'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/da'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/de'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/el'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/en'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/es'; export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/et'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/eu'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/europe'; export {};
|
||||
+848
@@ -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: "M’inix 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
@@ -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: "M’inix 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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/fa'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/fi'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/fr'; export {};
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/ga'; export {};
|
||||
+128
@@ -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
@@ -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
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/he'; export {};
|
||||
+128
@@ -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("he", i18n);
|
||||
+133
@@ -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("he", i18n);
|
||||
}));
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/hi'; export {};
|
||||
+128
@@ -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("hi", i18n);
|
||||
+133
@@ -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("hi", i18n);
|
||||
}));
|
||||
+1
@@ -0,0 +1 @@
|
||||
declare module 'altcha/i18n/hk'; export {};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user