feat(web): prepare the fluxer.com domain migration (#2952)

This commit is contained in:
Hampus
2026-09-25 13:43:34 +02:00
committed by GitHub
parent e62ae77643
commit 6730a242db
223 changed files with 13412 additions and 2669 deletions
+19
View File
@@ -19,6 +19,8 @@ const DEFAULT_PASSKEY_ORIGINS = [
'https://fluxer.app',
'https://web.fluxer.app',
'https://web.canary.fluxer.app',
'https://fluxer.com',
'https://canary.fluxer.com',
'android:apk-key-hash:keSY4bimyLqZQV7bKXgpa2xYuqXi0qZJzsYtp6gpx7w',
];
@@ -106,6 +108,7 @@ function defaultConfig(): MasterConfig {
presigned_attachment_uploads_enabled: false,
presigned_harvest_downloads_enabled: true,
unfurl_ignored_hosts: [],
app_origin_aliases: [],
embeds: {
oembed_html_enabled: false,
oembed_html_allow_untrusted_on_self_hosted: false,
@@ -491,6 +494,21 @@ function validateStorageChangeFeedConfig(config: MasterConfig): void {
}
}
function normalizeAppOriginAliases(config: MasterConfig): void {
const api = config.services.api;
api.app_origin_aliases = [
...new Set(
api.app_origin_aliases.map((alias, index) => {
const origin = parseWebOrigin(alias);
if (!origin) {
throw new Error(`FLUXER_APP_ORIGIN_ALIASES entry ${index + 1} must be an HTTP(S) origin`);
}
return origin.origin;
}),
),
];
}
function validateCachePurgeConfig(config: MasterConfig): void {
const cachePurge = config.integrations.cache_purge;
if (cachePurge.adapter !== 'http') {
@@ -582,6 +600,7 @@ function normalizeConfig(config: MasterConfig): MasterConfig {
validateApiWorkerConfig(config);
validateStorageChangeFeedConfig(config);
validateCachePurgeConfig(config);
normalizeAppOriginAliases(config);
assertIntegerInRange(config.services.api.max_inflight_requests, 'FLUXER_API_MAX_INFLIGHT_REQUESTS', 1, 100_000);
assertIntegerInRange(config.services.api.headers_timeout_ms, 'FLUXER_API_HEADERS_TIMEOUT_MS', 1_000, 3_600_000);
assertIntegerInRange(config.services.api.request_timeout_ms, 'FLUXER_API_REQUEST_TIMEOUT_MS', 1_000, 3_600_000);
+1
View File
@@ -94,6 +94,7 @@ export interface MasterConfig {
presigned_attachment_uploads_enabled: boolean;
presigned_harvest_downloads_enabled: boolean;
unfurl_ignored_hosts: Array<string>;
app_origin_aliases: Array<string>;
embeds: {
oembed_html_enabled: boolean;
oembed_html_allow_untrusted_on_self_hosted: boolean;
@@ -209,11 +209,40 @@ describe('ConfigLoader', () => {
'https://fluxer.app',
'https://web.fluxer.app',
'https://web.canary.fluxer.app',
'https://fluxer.com',
'https://canary.fluxer.com',
'android:apk-key-hash:keSY4bimyLqZQV7bKXgpa2xYuqXi0qZJzsYtp6gpx7w',
'http://localhost:8088',
]);
});
test('defaults to no app origin aliases', async () => {
stubMinimalEnv();
const config = await loadConfig();
expect(config.services.api.app_origin_aliases).toEqual([]);
});
test('normalizes and deduplicates app origin aliases', async () => {
stubMinimalEnv({
FLUXER_APP_ORIGIN_ALIASES:
'https://Web.Fluxer.App/, https://fluxer.com,https://fluxer.com:443,http://localhost:3000',
});
const config = await loadConfig();
expect(config.services.api.app_origin_aliases).toEqual([
'https://web.fluxer.app',
'https://fluxer.com',
'http://localhost:3000',
]);
});
test.each(['fluxer.com', 'https://fluxer.com/app', 'ftp://fluxer.com', 'https://[email protected]'])(
'rejects the app origin alias %s',
async (alias) => {
stubMinimalEnv({FLUXER_APP_ORIGIN_ALIASES: alias});
await expect(loadConfig()).rejects.toThrow('FLUXER_APP_ORIGIN_ALIASES entry 1 must be an HTTP(S) origin');
},
);
test('rejects an empty client API endpoint override', async () => {
stubMinimalEnv({FLUXER_API_CLIENT_ENDPOINT: ''});
await expect(loadConfig()).rejects.toThrow('FLUXER_API_CLIENT_ENDPOINT is required');
@@ -107,6 +107,7 @@ const NAMED_FLUXER_ENV_OVERRIDES: Record<string, NamedEnvOverride> = {
parse: parseCsv,
},
FLUXER_API_UNFURL_IGNORED_HOSTS: {path: ['services', 'api', 'unfurl_ignored_hosts'], parse: parseCsv},
FLUXER_APP_ORIGIN_ALIASES: {path: ['services', 'api', 'app_origin_aliases'], parse: parseCsv},
FLUXER_API_EMBEDS_OEMBED_HTML_ENABLED: {
path: ['services', 'api', 'embeds', 'oembed_html_enabled'],
parse: parseBoolean,
+2
View File
@@ -105,6 +105,7 @@ export const APIErrorCodes = {
INVALID_FLAGS_FORMAT: 'INVALID_FLAGS_FORMAT',
INVALID_FORM_BODY: 'INVALID_FORM_BODY',
INVALID_HANDOFF_CODE: 'INVALID_HANDOFF_CODE',
INVALID_ORIGIN_HANDOFF_NONCE: 'INVALID_ORIGIN_HANDOFF_NONCE',
INVALID_PERMISSIONS_INTEGER: 'INVALID_PERMISSIONS_INTEGER',
INVALID_PERMISSIONS_NEGATIVE: 'INVALID_PERMISSIONS_NEGATIVE',
INVALID_PHONE_NUMBER: 'INVALID_PHONE_NUMBER',
@@ -244,6 +245,7 @@ export const APIErrorCodes = {
UNKNOWN_INVITE: 'UNKNOWN_INVITE',
UNKNOWN_MEMBER: 'UNKNOWN_MEMBER',
UNKNOWN_MESSAGE: 'UNKNOWN_MESSAGE',
UNKNOWN_ORIGIN_HANDOFF: 'UNKNOWN_ORIGIN_HANDOFF',
UNKNOWN_REPORT: 'UNKNOWN_REPORT',
UNKNOWN_ROLE: 'UNKNOWN_ROLE',
UNKNOWN_STICKER: 'UNKNOWN_STICKER',
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError';
export class InvalidOriginHandoffNonceError extends BadRequestError {
constructor() {
super({code: APIErrorCodes.INVALID_ORIGIN_HANDOFF_NONCE});
}
}
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
import {NotFoundError} from '@fluxer/errors/src/domains/core/NotFoundError';
export class UnknownOriginHandoffError extends NotFoundError {
constructor() {
super({code: APIErrorCodes.UNKNOWN_ORIGIN_HANDOFF});
}
}
@@ -132,6 +132,7 @@ export const ErrorCodeToI18nKey = {
[ValidationErrorCodes.INVALID_OR_EXPIRED_AUTHORIZATION_TICKET]:
'auth_and_oauth.invalid_or_expired_authorization_ticket',
[ValidationErrorCodes.INVALID_OR_EXPIRED_SSO_STATE]: 'auth_and_oauth.invalid_or_expired_sso_state',
[APIErrorCodes.INVALID_ORIGIN_HANDOFF_NONCE]: 'auth_and_oauth.origin_handoff_nonce_invalid',
[APIErrorCodes.INVALID_PERMISSIONS_INTEGER]: 'misc.invalid_permissions_integer',
[APIErrorCodes.INVALID_PERMISSIONS_NEGATIVE]: 'misc.invalid_permissions_negative',
[APIErrorCodes.INVALID_PHONE_NUMBER]: 'phone.invalid_number',
@@ -295,6 +296,7 @@ export const ErrorCodeToI18nKey = {
[APIErrorCodes.UNKNOWN_INVITE]: 'unknown_entities.unknown_invite',
[APIErrorCodes.UNKNOWN_MEMBER]: 'unknown_entities.unknown_member',
[APIErrorCodes.UNKNOWN_MESSAGE]: 'unknown_entities.unknown_message',
[APIErrorCodes.UNKNOWN_ORIGIN_HANDOFF]: 'auth_and_oauth.unknown_origin_handoff',
[APIErrorCodes.UNKNOWN_REPORT]: 'moderation_and_reports.unknown_report',
[APIErrorCodes.UNKNOWN_ROLE]: 'unknown_entities.unknown_role',
[APIErrorCodes.UNKNOWN_STICKER]: 'stickers_and_emojis.unknown_sticker',
@@ -118,6 +118,7 @@ export const ERROR_I18N_MESSAGES = {
'auth_and_oauth.invalid_token_admin_api_key': 'Invalid admin API key.',
'auth_and_oauth.missing_authorization': 'Missing or invalid authorization header.',
'auth_and_oauth.must_start_session_before_sending_messages': 'You must start a session before sending messages.',
'auth_and_oauth.origin_handoff_nonce_invalid': "This sign-in transfer doesn't match the one you started.",
'auth_and_oauth.registration_closed': 'Registration is closed on this instance.',
'auth_and_oauth.registration_pending_approval': 'This registration is waiting for admin approval.',
'auth_and_oauth.registration_rejected': 'This registration request was rejected.',
@@ -132,6 +133,7 @@ export const ERROR_I18N_MESSAGES = {
"We couldn't allocate a discriminator for your SSO account. Please try again.",
'auth_and_oauth.sudo_mode_required': 'Sudo mode is required.',
'auth_and_oauth.unknown_application': 'Unknown application.',
'auth_and_oauth.unknown_origin_handoff': 'This sign-in transfer has expired or was already used.',
'auth_and_registration.password_is_too_common':
'Your password is too common. Please choose a less predictable password.',
'auth_and_registration.password_not_set': "Password isn't set.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "مفتاح API الإداري غير صالح.",
"auth_and_oauth.missing_authorization": "رأس التفويض مفقود أو غير صالح.",
"auth_and_oauth.must_start_session_before_sending_messages": "يجب عليك بدء جلسة قبل إرسال الرسائل.",
"auth_and_oauth.origin_handoff_nonce_invalid": "عملية نقل تسجيل الدخول هذه لا تطابق العملية التي بدأتها.",
"auth_and_oauth.registration_closed": "التسجيل مغلق في هذا المثيل.",
"auth_and_oauth.registration_pending_approval": "هذا التسجيل في انتظار موافقة المسؤول.",
"auth_and_oauth.registration_rejected": "تم رفض طلب التسجيل هذا.",
@@ -113,6 +114,7 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "لم نتمكن من تخصيص مميّز لحساب SSO الخاص بك. حاول مجددًا.",
"auth_and_oauth.sudo_mode_required": "وضع Sudo مطلوب.",
"auth_and_oauth.unknown_application": "تطبيق غير معروف.",
"auth_and_oauth.unknown_origin_handoff": "انتهت صلاحية عملية نقل تسجيل الدخول هذه أو تم استخدامها بالفعل.",
"auth_and_registration.password_is_too_common": "كلمة مرورك شائعة جدًا. اختر كلمة مرور يصعب تخمينها.",
"auth_and_registration.password_not_set": "لم تُعيّن كلمة المرور.",
"bots.bot_discriminator_cannot_be_changed": "لا يمكن تغيير مميّز البوت.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Невалиден админ API ключ.",
"auth_and_oauth.missing_authorization": "Липсваща или невалидна заглавка за оторизация.",
"auth_and_oauth.must_start_session_before_sending_messages": "Трябва да започнеш сесия, преди да изпращаш съобщения.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Това прехвърляне на вписването не съвпада с това, което сте започнали.",
"auth_and_oauth.registration_closed": "Регистрацията е затворена на тази инстанция.",
"auth_and_oauth.registration_pending_approval": "Тази регистрация чака одобрение от администратор.",
"auth_and_oauth.registration_rejected": "Тази заявка за регистрация беше отхвърлена.",
@@ -113,6 +114,7 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Не успяхме да присвоим дискриминатор за твоя SSO акаунт. Опитай отново.",
"auth_and_oauth.sudo_mode_required": "Изисква се sudo режим.",
"auth_and_oauth.unknown_application": "Неизвестно приложение.",
"auth_and_oauth.unknown_origin_handoff": "Това прехвърляне на вписването е изтекло или вече е използвано.",
"auth_and_registration.password_is_too_common": "Паролата ти е твърде често срещана. Избери по-трудна за отгатване парола.",
"auth_and_registration.password_not_set": "Паролата не е зададена.",
"bots.bot_discriminator_cannot_be_changed": "Дискриминаторът на бота не може да се променя.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Neplatný API klíč administrátora.",
"auth_and_oauth.missing_authorization": "Chybí nebo je neplatná autorizační hlavička.",
"auth_and_oauth.must_start_session_before_sending_messages": "Před odesíláním zpráv musíte zahájit relaci.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Tento přenos přihlášení neodpovídá tomu, který jste zahájili.",
"auth_and_oauth.registration_closed": "Registrace na této instanci je uzavřena.",
"auth_and_oauth.registration_pending_approval": "Tato registrace čeká na schválení administrátorem.",
"auth_and_oauth.registration_rejected": "Tato žádost o registraci byla zamítnuta.",
@@ -113,6 +114,7 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nepodařilo se přidělit čtyřmístný identifikátor pro váš účet SSO. Zkuste to znovu.",
"auth_and_oauth.sudo_mode_required": "Je vyžadován režim sudo.",
"auth_and_oauth.unknown_application": "Neznámá aplikace.",
"auth_and_oauth.unknown_origin_handoff": "Platnost tohoto přenosu přihlášení vypršela nebo už byl použit.",
"auth_and_registration.password_is_too_common": "Vaše heslo je příliš běžné. Zvolte si hůře odhadnutelné heslo.",
"auth_and_registration.password_not_set": "Heslo není nastavené.",
"bots.bot_discriminator_cannot_be_changed": "Čtyřmístný identifikátor bota nelze změnit.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Ugyldig administrator-API-nøgle.",
"auth_and_oauth.missing_authorization": "Manglende eller ugyldig godkendelsesheader.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du skal starte en session, før du sender beskeder.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Denne overførsel af login matcher ikke den, du startede.",
"auth_and_oauth.registration_closed": "Tilmelding er lukket på denne instans.",
"auth_and_oauth.registration_pending_approval": "Denne tilmelding afventer godkendelse fra administratoren.",
"auth_and_oauth.registration_rejected": "Denne anmodning om tilmelding blev afvist.",
@@ -113,6 +114,7 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Vi kunne ikke tildele et tag til din SSO-konto. Prøv igen.",
"auth_and_oauth.sudo_mode_required": "Sudo-tilstand er påkrævet.",
"auth_and_oauth.unknown_application": "Ukendt applikation.",
"auth_and_oauth.unknown_origin_handoff": "Denne overførsel af login er udløbet eller allerede brugt.",
"auth_and_registration.password_is_too_common": "Din adgangskode er for almindelig. Vælg en adgangskode, der er sværere at gætte.",
"auth_and_registration.password_not_set": "Der er ikke angivet nogen adgangskode.",
"bots.bot_discriminator_cannot_be_changed": "En bots tag kan ikke ændres.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Ungültiger Admin-API-Schlüssel.",
"auth_and_oauth.missing_authorization": "Fehlender oder ungültiger Autorisierungsheader.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du musst eine Sitzung starten, bevor du Nachrichten senden kannst.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Diese Anmeldeübertragung stimmt nicht mit der von dir gestarteten überein.",
"auth_and_oauth.registration_closed": "Die Registrierung ist auf dieser Instanz geschlossen.",
"auth_and_oauth.registration_pending_approval": "Diese Registrierung wartet auf die Genehmigung durch einen Administrator.",
"auth_and_oauth.registration_rejected": "Diese Registrierungsanfrage wurde abgelehnt.",
@@ -113,6 +114,7 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Wir konnten keinen Discriminator für deinen SSO-Account vergeben. Versuche es noch einmal.",
"auth_and_oauth.sudo_mode_required": "Sudo-Modus ist erforderlich.",
"auth_and_oauth.unknown_application": "Unbekannte Anwendung.",
"auth_and_oauth.unknown_origin_handoff": "Diese Anmeldeübertragung ist abgelaufen oder wurde bereits verwendet.",
"auth_and_registration.password_is_too_common": "Dein Passwort wird zu häufig verwendet. Wähle bitte ein Passwort, das weniger leicht zu erraten ist.",
"auth_and_registration.password_not_set": "Das Passwort ist nicht festgelegt.",
"bots.bot_discriminator_cannot_be_changed": "Der Bot-Discriminator kann nicht geändert werden.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Το κλειδί API διαχειριστή είναι μη έγκυρο.",
"auth_and_oauth.missing_authorization": "Λείπει ή είναι άκυρη η κεφαλίδα εξουσιοδότησης.",
"auth_and_oauth.must_start_session_before_sending_messages": "Πρέπει να ξεκινήσεις συνεδρία πριν στείλεις μηνύματα.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Αυτή η μεταφορά σύνδεσης δεν αντιστοιχεί σε αυτήν που ξεκινήσατε.",
"auth_and_oauth.registration_closed": "Η εγγραφή είναι κλειστή σε αυτήν την εγκατάσταση.",
"auth_and_oauth.registration_pending_approval": "Αυτή η εγγραφή περιμένει έγκριση από τον διαχειριστή.",
"auth_and_oauth.registration_rejected": "Αυτό το αίτημα εγγραφής απορρίφθηκε.",
@@ -113,6 +114,7 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Δεν μπορέσαμε να εκχωρήσουμε διακριτικό για τον λογαριασμό σου SSO. Δοκίμασε ξανά.",
"auth_and_oauth.sudo_mode_required": "Απαιτείται η λειτουργία sudo.",
"auth_and_oauth.unknown_application": "Άγνωστη εφαρμογή.",
"auth_and_oauth.unknown_origin_handoff": "Αυτή η μεταφορά σύνδεσης έχει λήξει ή έχει ήδη χρησιμοποιηθεί.",
"auth_and_registration.password_is_too_common": "Ο κωδικός πρόσβασής σου είναι πολύ κοινός. Διάλεξε έναν λιγότερο προβλέψιμο κωδικό πρόσβασης.",
"auth_and_registration.password_not_set": "Ο κωδικός πρόσβασης δεν έχει οριστεί.",
"bots.bot_discriminator_cannot_be_changed": "Το διακριτικό του bot δεν μπορεί να αλλάξει.",
@@ -101,6 +101,7 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Invalid admin API key.",
"auth_and_oauth.missing_authorization": "Missing or invalid authorisation header.",
"auth_and_oauth.must_start_session_before_sending_messages": "You must start a session before sending messages.",
"auth_and_oauth.origin_handoff_nonce_invalid": "This sign-in transfer doesn't match the one you started.",
"auth_and_oauth.registration_closed": "Registration is closed on this instance.",
"auth_and_oauth.registration_pending_approval": "This registration is waiting for admin approval.",
"auth_and_oauth.registration_rejected": "This registration request was rejected.",
@@ -113,6 +114,7 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "We couldn't allocate a discriminator for your SSO account. Please try again.",
"auth_and_oauth.sudo_mode_required": "Sudo mode is required.",
"auth_and_oauth.unknown_application": "Unknown application.",
"auth_and_oauth.unknown_origin_handoff": "This sign-in transfer has expired or was already used.",
"auth_and_registration.password_is_too_common": "Your password is too common. Please choose a less predictable password.",
"auth_and_registration.password_not_set": "Password isn't set.",
"bots.bot_discriminator_cannot_be_changed": "Bot discriminator can't be changed.",
@@ -101,6 +101,7 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Clave de API de administrador no válida.",
"auth_and_oauth.missing_authorization": "Falta el encabezado de autorización o no es válido.",
"auth_and_oauth.must_start_session_before_sending_messages": "Debes iniciar una sesión antes de enviar mensajes.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Esta transferencia de inicio de sesión no coincide con la que iniciaste.",
"auth_and_oauth.registration_closed": "El registro está cerrado en esta instancia.",
"auth_and_oauth.registration_pending_approval": "Este registro está esperando la aprobación del administrador.",
"auth_and_oauth.registration_rejected": "Esta solicitud de registro fue rechazada.",
@@ -113,6 +114,7 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "No pudimos asignar un discriminador para tu cuenta de SSO. Inténtalo de nuevo.",
"auth_and_oauth.sudo_mode_required": "Se requiere el modo sudo.",
"auth_and_oauth.unknown_application": "Aplicación desconocida.",
"auth_and_oauth.unknown_origin_handoff": "Esta transferencia de inicio de sesión caducó o ya se usó.",
"auth_and_registration.password_is_too_common": "Tu contraseña es demasiado común. Elige una contraseña menos predecible.",
"auth_and_registration.password_not_set": "La contraseña no está configurada.",
"bots.bot_discriminator_cannot_be_changed": "El discriminador del bot no se puede cambiar.",
@@ -101,6 +101,7 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Clave de API de administrador no válida.",
"auth_and_oauth.missing_authorization": "Falta la cabecera de autorización o no es válida.",
"auth_and_oauth.must_start_session_before_sending_messages": "Debes iniciar sesión antes de enviar mensajes.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Esta transferencia de inicio de sesión no coincide con la que iniciaste.",
"auth_and_oauth.registration_closed": "El registro está cerrado en esta instancia.",
"auth_and_oauth.registration_pending_approval": "Este registro está pendiente de aprobación por parte del administrador.",
"auth_and_oauth.registration_rejected": "Esta solicitud de registro ha sido rechazada.",
@@ -113,6 +114,7 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "No se pudo asignar un discriminador para tu cuenta SSO. Inténtalo de nuevo.",
"auth_and_oauth.sudo_mode_required": "Se requiere el modo sudo.",
"auth_and_oauth.unknown_application": "Aplicación desconocida.",
"auth_and_oauth.unknown_origin_handoff": "Esta transferencia de inicio de sesión ha caducado o ya se ha usado.",
"auth_and_registration.password_is_too_common": "Tu contraseña es demasiado común. Elige una contraseña menos predecible.",
"auth_and_registration.password_not_set": "La contraseña no está establecida.",
"bots.bot_discriminator_cannot_be_changed": "El discriminador del bot no se puede cambiar.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Virheellinen ylläpidon API-avain.",
"auth_and_oauth.missing_authorization": "Valtuutusotsake puuttuu tai on virheellinen.",
"auth_and_oauth.must_start_session_before_sending_messages": "Sinun on aloitettava istunto ennen viestien lähettämistä.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Tämä kirjautumisen siirto ei vastaa aloittamaasi siirtoa.",
"auth_and_oauth.registration_closed": "Rekisteröinti on suljettu tällä instanssilla.",
"auth_and_oauth.registration_pending_approval": "Tämä rekisteröinti odottaa järjestelmänvalvojan hyväksyntää.",
"auth_and_oauth.registration_rejected": "Tämä rekisteröintipyyntö hylättiin.",
@@ -113,6 +114,7 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSO-tilillesi ei voitu varata nelinumeroista tunnistetta. Yritä uudelleen.",
"auth_and_oauth.sudo_mode_required": "Sudo-tila vaaditaan.",
"auth_and_oauth.unknown_application": "Tuntematon sovellus.",
"auth_and_oauth.unknown_origin_handoff": "Tämä kirjautumisen siirto on vanhentunut tai jo käytetty.",
"auth_and_registration.password_is_too_common": "Salasanasi on liian yleinen. Valitse vaikeammin arvattava salasana.",
"auth_and_registration.password_not_set": "Salasanaa ei ole asetettu.",
"bots.bot_discriminator_cannot_be_changed": "Botin nelinumeroista tunnistetta ei voi muuttaa.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Clé API administrateur non valide.",
"auth_and_oauth.missing_authorization": "En-tête d'autorisation manquant ou non valide.",
"auth_and_oauth.must_start_session_before_sending_messages": "Vous devez démarrer une session avant d’envoyer des messages.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Ce transfert de connexion ne correspond pas à celui que tu as lancé.",
"auth_and_oauth.registration_closed": "L'inscription est fermée sur cette instance.",
"auth_and_oauth.registration_pending_approval": "Cette inscription est en attente d'approbation par un administrateur.",
"auth_and_oauth.registration_rejected": "Cette demande d'inscription a été rejetée.",
@@ -113,6 +114,7 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Impossible d’attribuer un discriminateur à votre compte SSO. Réessayez.",
"auth_and_oauth.sudo_mode_required": "Le mode Sudo est requis.",
"auth_and_oauth.unknown_application": "Application inconnue.",
"auth_and_oauth.unknown_origin_handoff": "Ce transfert de connexion a expiré ou a déjà été utilisé.",
"auth_and_registration.password_is_too_common": "Votre mot de passe est trop courant. Choisissez-en un moins prévisible.",
"auth_and_registration.password_not_set": "Le mot de passe n'est pas défini.",
"bots.bot_discriminator_cannot_be_changed": "Le discriminateur du bot ne peut pas être modifié.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "מפתח API של אדמין שגוי.",
"auth_and_oauth.missing_authorization": "כותרת ההרשאה חסרה או שגויה.",
"auth_and_oauth.must_start_session_before_sending_messages": "יש להתחיל סשן לפני שליחת הודעות.",
"auth_and_oauth.origin_handoff_nonce_invalid": "העברת ההתחברות הזו אינה תואמת לזו שהתחלת.",
"auth_and_oauth.registration_closed": "ההרשמה סגורה במופע זה.",
"auth_and_oauth.registration_pending_approval": "הרשמה זו ממתינה לאישור מנהל.",
"auth_and_oauth.registration_rejected": "בקשת הרשמה זו נדחתה.",
@@ -113,6 +114,7 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "לא הצלחנו להקצות מזהה לחשבון ה-SSO שלך. ניתן לנסות שוב.",
"auth_and_oauth.sudo_mode_required": "נדרש מצב sudo.",
"auth_and_oauth.unknown_application": "אפליקציה לא ידועה.",
"auth_and_oauth.unknown_origin_handoff": "פג תוקפה של העברת ההתחברות הזו או שכבר נעשה בה שימוש.",
"auth_and_registration.password_is_too_common": "הסיסמה שלך נפוצה מדי. מומלץ לבחור סיסמה פחות צפויה.",
"auth_and_registration.password_not_set": "סיסמה לא הוגדרה.",
"bots.bot_discriminator_cannot_be_changed": "לא ניתן לשנות את המזהה של הבוט.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "एडमिन API कुंजी अमान्य है।",
"auth_and_oauth.missing_authorization": "ऑथराइज़ेशन हेडर गायब या अमान्य है।",
"auth_and_oauth.must_start_session_before_sending_messages": "मैसेज भेजने से पहले आपको एक सेशन शुरू करना होगा।",
"auth_and_oauth.origin_handoff_nonce_invalid": "यह साइन-इन ट्रांसफ़र आपके द्वारा शुरू किए गए ट्रांसफ़र से मेल नहीं खाता।",
"auth_and_oauth.registration_closed": "इस इंस्टेंस पर रजिस्ट्रेशन बंद है।",
"auth_and_oauth.registration_pending_approval": "यह रजिस्ट्रेशन एडमिन अप्रूवल का इंतज़ार कर रहा है।",
"auth_and_oauth.registration_rejected": "यह रजिस्ट्रेशन रिक्वेस्ट रिजेक्ट कर दी गई है।",
@@ -113,6 +114,7 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "हम आपके SSO अकाउंट के लिए डिस्क्रिमिनेटर अलॉट नहीं कर सके। फिर से कोशिश करें।",
"auth_and_oauth.sudo_mode_required": "सुडो मोड ज़रूरी है।",
"auth_and_oauth.unknown_application": "अज्ञात एप्लीकेशन।",
"auth_and_oauth.unknown_origin_handoff": "यह साइन-इन ट्रांसफ़र समाप्त हो गया है या पहले ही उपयोग किया जा चुका है।",
"auth_and_registration.password_is_too_common": "आपका पासवर्ड बहुत कॉमन है। कृपया ऐसा पासवर्ड चुनें जिसका अंदाज़ा लगाना मुश्किल हो।",
"auth_and_registration.password_not_set": "पासवर्ड सेट नहीं है।",
"bots.bot_discriminator_cannot_be_changed": "बॉट डिस्क्रिमिनेटर को बदला नहीं जा सकता।",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Nevažeći administratorski API ključ.",
"auth_and_oauth.missing_authorization": "Nedostaje ili je nevažeće autorizacijsko zaglavlje.",
"auth_and_oauth.must_start_session_before_sending_messages": "Moraš započeti sesiju prije slanja poruka.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Ovaj prijenos prijave ne odgovara onome koji ste započeli.",
"auth_and_oauth.registration_closed": "Registracija je zatvorena na ovoj instanci.",
"auth_and_oauth.registration_pending_approval": "Ova registracija čeka odobrenje administratora.",
"auth_and_oauth.registration_rejected": "Ovaj zahtjev za registraciju je odbijen.",
@@ -113,6 +114,7 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nismo mogli dodijeliti diskriminator tvom SSO računu. Pokušaj ponovno.",
"auth_and_oauth.sudo_mode_required": "Potreban je sudo način rada.",
"auth_and_oauth.unknown_application": "Nepoznata aplikacija.",
"auth_and_oauth.unknown_origin_handoff": "Ovaj prijenos prijave je istekao ili je već iskorišten.",
"auth_and_registration.password_is_too_common": "Tvoja je lozinka previše uobičajena. Odaberi manje predvidljivu lozinku.",
"auth_and_registration.password_not_set": "Lozinka nije postavljena.",
"bots.bot_discriminator_cannot_be_changed": "Diskriminator bota ne može se promijeniti.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Érvénytelen adminisztrátori API-kulcs.",
"auth_and_oauth.missing_authorization": "Hiányzó vagy érvénytelen hitelesítési fejléc.",
"auth_and_oauth.must_start_session_before_sending_messages": "Üzenetek küldéséhez előbb munkamenetet kell indítanod.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Ez a bejelentkezés-átvitel nem egyezik azzal, amelyet elindítottál.",
"auth_and_oauth.registration_closed": "Ezen a példányon a regisztráció le van zárva.",
"auth_and_oauth.registration_pending_approval": "Ez a regisztráció rendszergazdai jóváhagyásra vár.",
"auth_and_oauth.registration_rejected": "Ez a regisztrációs kérelem el lett utasítva.",
@@ -113,6 +114,7 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nem sikerült számazonosítót kiosztani az SSO-fiókodhoz. Próbáld újra.",
"auth_and_oauth.sudo_mode_required": "Sudo mód szükséges.",
"auth_and_oauth.unknown_application": "Ismeretlen alkalmazás.",
"auth_and_oauth.unknown_origin_handoff": "Ez a bejelentkezés-átvitel lejárt, vagy már felhasználták.",
"auth_and_registration.password_is_too_common": "A jelszavad túl gyakori. Válassz nehezebben kitalálható jelszót.",
"auth_and_registration.password_not_set": "Nincs beállítva jelszó.",
"bots.bot_discriminator_cannot_be_changed": "A bot számazonosítója nem módosítható.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Kunci API admin tidak valid.",
"auth_and_oauth.missing_authorization": "Header otorisasi hilang atau tidak valid.",
"auth_and_oauth.must_start_session_before_sending_messages": "Kamu harus memulai sesi sebelum mengirim pesan.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Transfer masuk ini tidak cocok dengan yang kamu mulai.",
"auth_and_oauth.registration_closed": "Pendaftaran ditutup di instance ini.",
"auth_and_oauth.registration_pending_approval": "Pendaftaran ini menunggu persetujuan admin.",
"auth_and_oauth.registration_rejected": "Permintaan pendaftaran ini ditolak.",
@@ -113,6 +114,7 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Tidak bisa mengalokasikan diskriminator untuk akun SSO kamu. Silakan coba lagi.",
"auth_and_oauth.sudo_mode_required": "Mode sudo diperlukan.",
"auth_and_oauth.unknown_application": "Aplikasi tidak dikenal.",
"auth_and_oauth.unknown_origin_handoff": "Transfer masuk ini sudah kedaluwarsa atau sudah digunakan.",
"auth_and_registration.password_is_too_common": "Kata sandimu terlalu umum. Pilih kata sandi yang lebih sulit ditebak.",
"auth_and_registration.password_not_set": "Kata sandi belum diatur.",
"bots.bot_discriminator_cannot_be_changed": "Diskriminator bot tidak dapat diubah.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Chiave API amministratore non valida.",
"auth_and_oauth.missing_authorization": "Header di autorizzazione mancante o non valido.",
"auth_and_oauth.must_start_session_before_sending_messages": "Devi avviare una sessione prima di inviare messaggi.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Questo trasferimento di accesso non corrisponde a quello che hai avviato.",
"auth_and_oauth.registration_closed": "La registrazione è chiusa su questa istanza.",
"auth_and_oauth.registration_pending_approval": "Questa registrazione è in attesa dell'approvazione dell'amministratore.",
"auth_and_oauth.registration_rejected": "Questa richiesta di registrazione è stata rifiutata.",
@@ -113,6 +114,7 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Non è stato possibile assegnare un discriminatore al tuo account SSO. Riprova.",
"auth_and_oauth.sudo_mode_required": "La modalità Sudo è richiesta.",
"auth_and_oauth.unknown_application": "Applicazione sconosciuta.",
"auth_and_oauth.unknown_origin_handoff": "Questo trasferimento di accesso è scaduto o è già stato usato.",
"auth_and_registration.password_is_too_common": "La tua password è troppo comune. Scegli una password meno prevedibile.",
"auth_and_registration.password_not_set": "La password non è impostata.",
"bots.bot_discriminator_cannot_be_changed": "Il discriminatore del bot non può essere modificato.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "管理者APIキーが無効です。",
"auth_and_oauth.missing_authorization": "認証ヘッダーが見つからないか、無効です。",
"auth_and_oauth.must_start_session_before_sending_messages": "メッセージを送信する前にセッションを開始してください。",
"auth_and_oauth.origin_handoff_nonce_invalid": "このサインインの引き継ぎは、開始したものと一致しません。",
"auth_and_oauth.registration_closed": "このインスタンスでは新規登録を受け付けていません。",
"auth_and_oauth.registration_pending_approval": "この登録は管理者による承認待ちです。",
"auth_and_oauth.registration_rejected": "この登録リクエストは拒否されました。",
@@ -113,6 +114,7 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSOアカウントの識別子を割り当てられませんでした。もう一度お試しください。",
"auth_and_oauth.sudo_mode_required": "Sudoモードが必要です。",
"auth_and_oauth.unknown_application": "不明なアプリケーションです。",
"auth_and_oauth.unknown_origin_handoff": "このサインインの引き継ぎは期限切れか、すでに使用されています。",
"auth_and_registration.password_is_too_common": "パスワードが一般的すぎます。より推測されにくいパスワードを設定してください。",
"auth_and_registration.password_not_set": "パスワードが未設定です。",
"bots.bot_discriminator_cannot_be_changed": "ボットの識別子は変更できません。",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "잘못된 관리자 API 키예요.",
"auth_and_oauth.missing_authorization": "인증 헤더가 없거나 유효하지 않아요.",
"auth_and_oauth.must_start_session_before_sending_messages": "메시지를 보내기 전에 세션을 시작해야 해요.",
"auth_and_oauth.origin_handoff_nonce_invalid": "이 로그인 이전 요청이 시작한 요청과 일치하지 않습니다.",
"auth_and_oauth.registration_closed": "이 인스턴스에서는 가입을 받고 있지 않아요.",
"auth_and_oauth.registration_pending_approval": "이 가입 신청은 관리자 승인을 기다리고 있어요.",
"auth_and_oauth.registration_rejected": "이 가입 요청은 거부되었어요.",
@@ -113,6 +114,7 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSO 계정에 디스크리미네이터를 할당하지 못했어요. 다시 시도해 주세요.",
"auth_and_oauth.sudo_mode_required": "Sudo 모드가 필요해요.",
"auth_and_oauth.unknown_application": "알 수 없는 애플리케이션이에요.",
"auth_and_oauth.unknown_origin_handoff": "이 로그인 이전 요청이 만료되었거나 이미 사용되었습니다.",
"auth_and_registration.password_is_too_common": "비밀번호가 너무 흔해요. 추측하기 어려운 비밀번호를 사용해 주세요.",
"auth_and_registration.password_not_set": "비밀번호가 설정되지 않았어요.",
"bots.bot_discriminator_cannot_be_changed": "봇 디스크리미네이터를 변경할 수 없어요.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Negaliojantis administratoriaus API raktas.",
"auth_and_oauth.missing_authorization": "Trūksta autorizacijos antraštės arba ji neteisinga.",
"auth_and_oauth.must_start_session_before_sending_messages": "Kad galėtum siųsti žinutes, pirmiausia pradėk seansą.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Šis prisijungimo perkėlimas nesutampa su tuo, kurį pradėjote.",
"auth_and_oauth.registration_closed": "Registracija šioje instancijoje yra uždaryta.",
"auth_and_oauth.registration_pending_approval": "Ši registracija laukia administratoriaus patvirtinimo.",
"auth_and_oauth.registration_rejected": "Šis registracijos prašymas buvo atmestas.",
@@ -113,6 +114,7 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nepavyko priskirti diskriminatoriaus tavo SSO paskyrai. Pabandyk dar kartą.",
"auth_and_oauth.sudo_mode_required": "Reikalingas sudo režimas.",
"auth_and_oauth.unknown_application": "Nežinoma programa.",
"auth_and_oauth.unknown_origin_handoff": "Šio prisijungimo perkėlimo galiojimas baigėsi arba jis jau panaudotas.",
"auth_and_registration.password_is_too_common": "Tavo slaptažodis per dažnai naudojamas. Pasirink sunkiau nuspėjamą slaptažodį.",
"auth_and_registration.password_not_set": "Slaptažodis nenustatytas.",
"bots.bot_discriminator_cannot_be_changed": "Boto diskriminatoriaus negalima pakeisti.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "De admin-API-sleutel is ongeldig.",
"auth_and_oauth.missing_authorization": "De autorisatieheader ontbreekt of is ongeldig.",
"auth_and_oauth.must_start_session_before_sending_messages": "Je moet een sessie starten voordat je berichten kunt verzenden.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Deze aanmeldoverdracht komt niet overeen met de overdracht die je hebt gestart.",
"auth_and_oauth.registration_closed": "Registratie is gesloten op deze instantie.",
"auth_and_oauth.registration_pending_approval": "Deze registratie wacht op goedkeuring van de beheerder.",
"auth_and_oauth.registration_rejected": "Dit registratieverzoek is afgewezen.",
@@ -113,6 +114,7 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "We konden geen discriminator toewijzen aan je SSO-account. Probeer het nog eens.",
"auth_and_oauth.sudo_mode_required": "Sudo-modus is vereist.",
"auth_and_oauth.unknown_application": "Onbekende app.",
"auth_and_oauth.unknown_origin_handoff": "Deze aanmeldoverdracht is verlopen of al gebruikt.",
"auth_and_registration.password_is_too_common": "Je wachtwoord komt te vaak voor. Kies een minder voorspelbaar wachtwoord.",
"auth_and_registration.password_not_set": "Wachtwoord is niet ingesteld.",
"bots.bot_discriminator_cannot_be_changed": "De discriminator van een bot kan niet worden gewijzigd.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Ugyldig API-nøkkel for administrasjon.",
"auth_and_oauth.missing_authorization": "Autorisasjonsheaderen mangler eller er ugyldig.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du må starte en økt før du sender meldinger.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Denne overføringen av innloggingen samsvarer ikke med den du startet.",
"auth_and_oauth.registration_closed": "Registrering er stengt på denne instansen.",
"auth_and_oauth.registration_pending_approval": "Denne registreringen venter på administratorgodkjenning.",
"auth_and_oauth.registration_rejected": "Denne registreringsforespørselen ble avvist.",
@@ -113,6 +114,7 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Vi klarte ikke å tildele en diskriminator til SSO-kontoen din. Prøv igjen.",
"auth_and_oauth.sudo_mode_required": "Sudo-modus er påkrevd.",
"auth_and_oauth.unknown_application": "Ukjent app.",
"auth_and_oauth.unknown_origin_handoff": "Denne overføringen av innloggingen er utløpt eller allerede brukt.",
"auth_and_registration.password_is_too_common": "Passordet ditt er for vanlig. Velg et passord som er vanskeligere å gjette.",
"auth_and_registration.password_not_set": "Det er ikke angitt noe passord.",
"bots.bot_discriminator_cannot_be_changed": "Botens diskriminator kan ikke endres.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Nieprawidłowy klucz API administratora.",
"auth_and_oauth.missing_authorization": "Brakuje nagłówka autoryzacji lub jest on nieprawidłowy.",
"auth_and_oauth.must_start_session_before_sending_messages": "Musisz rozpocząć sesję, zanim wyślesz wiadomości.",
"auth_and_oauth.origin_handoff_nonce_invalid": "To przeniesienie logowania nie pasuje do tego, które zostało rozpoczęte.",
"auth_and_oauth.registration_closed": "Rejestracja na tej instancji jest zamknięta.",
"auth_and_oauth.registration_pending_approval": "Ta rejestracja czeka na zatwierdzenie przez administratora.",
"auth_and_oauth.registration_rejected": "Ten wniosek o rejestrację został odrzucony.",
@@ -113,6 +114,7 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nie udało się przydzielić dyskryminatora dla Twojego konta SSO. Spróbuj ponownie.",
"auth_and_oauth.sudo_mode_required": "Wymagany tryb sudo.",
"auth_and_oauth.unknown_application": "Nieznana aplikacja.",
"auth_and_oauth.unknown_origin_handoff": "To przeniesienie logowania wygasło lub zostało już użyte.",
"auth_and_registration.password_is_too_common": "Twoje hasło jest zbyt popularne. Wybierz mniej przewidywalne hasło.",
"auth_and_registration.password_not_set": "Hasło nie jest ustawione.",
"bots.bot_discriminator_cannot_be_changed": "Nie można zmienić dyskryminatora bota.",
@@ -101,6 +101,7 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Chave de API de administrador inválida.",
"auth_and_oauth.missing_authorization": "Cabeçalho de autorização ausente ou inválido.",
"auth_and_oauth.must_start_session_before_sending_messages": "Você deve iniciar uma sessão antes de enviar mensagens.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Esta transferência de login não corresponde à que você iniciou.",
"auth_and_oauth.registration_closed": "O cadastro está fechado nesta instância.",
"auth_and_oauth.registration_pending_approval": "Este cadastro está aguardando a aprovação de um administrador.",
"auth_and_oauth.registration_rejected": "Esta solicitação de cadastro foi rejeitada.",
@@ -113,6 +114,7 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Não foi possível alocar um discriminador para sua conta SSO. Tente novamente.",
"auth_and_oauth.sudo_mode_required": "O modo sudo é obrigatório.",
"auth_and_oauth.unknown_application": "Aplicativo desconhecido.",
"auth_and_oauth.unknown_origin_handoff": "Esta transferência de login expirou ou já foi usada.",
"auth_and_registration.password_is_too_common": "Sua senha é muito comum. Escolha uma senha menos previsível.",
"auth_and_registration.password_not_set": "A senha não foi definida.",
"bots.bot_discriminator_cannot_be_changed": "O discriminador do bot não pode ser alterado.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Cheia API de administrator este invalidă.",
"auth_and_oauth.missing_authorization": "Headerul de autorizare lipsește sau este invalid.",
"auth_and_oauth.must_start_session_before_sending_messages": "Trebuie să începi o sesiune înainte de a trimite mesaje.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Acest transfer de autentificare nu corespunde celui pe care l-ai început.",
"auth_and_oauth.registration_closed": "Înregistrarea este închisă pe această instanță.",
"auth_and_oauth.registration_pending_approval": "Această înregistrare așteaptă aprobarea administratorului.",
"auth_and_oauth.registration_rejected": "Această cerere de înregistrare a fost respinsă.",
@@ -113,6 +114,7 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nu s-a putut aloca un discriminator pentru contul tău SSO. Încearcă din nou.",
"auth_and_oauth.sudo_mode_required": "Modul Sudo este necesar.",
"auth_and_oauth.unknown_application": "Aplicație necunoscută.",
"auth_and_oauth.unknown_origin_handoff": "Acest transfer de autentificare a expirat sau a fost deja folosit.",
"auth_and_registration.password_is_too_common": "Parola ta este prea comună. Alege o parolă mai greu de ghicit.",
"auth_and_registration.password_not_set": "Parola nu este setată.",
"bots.bot_discriminator_cannot_be_changed": "Discriminatorul botului nu poate fi schimbat.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Недействительный ключ Admin API.",
"auth_and_oauth.missing_authorization": "Заголовок авторизации отсутствует или недействителен.",
"auth_and_oauth.must_start_session_before_sending_messages": "Перед отправкой сообщений нужно начать сессию.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Этот перенос входа не совпадает с тем, который вы начали.",
"auth_and_oauth.registration_closed": "Регистрация в этом экземпляре закрыта.",
"auth_and_oauth.registration_pending_approval": "Эта регистрация ожидает одобрения администратора.",
"auth_and_oauth.registration_rejected": "Заявка на регистрацию отклонена.",
@@ -113,6 +114,7 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Не удалось назначить дискриминатор для твоего аккаунта SSO. Попробуй ещё раз.",
"auth_and_oauth.sudo_mode_required": "Требуется режим sudo.",
"auth_and_oauth.unknown_application": "Неизвестное приложение.",
"auth_and_oauth.unknown_origin_handoff": "Срок действия этого переноса входа истёк, или он уже использован.",
"auth_and_registration.password_is_too_common": "Твой пароль слишком распространённый. Придумай менее предсказуемый пароль.",
"auth_and_registration.password_not_set": "Пароль не установлен.",
"bots.bot_discriminator_cannot_be_changed": "Дискриминатор бота нельзя изменить.",
@@ -101,6 +101,7 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Ogiltig admin-API-nyckel.",
"auth_and_oauth.missing_authorization": "Authorization-huvudet saknas eller är ogiltigt.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du måste starta en session innan du kan skicka meddelanden.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Den här inloggningsöverföringen matchar inte den du startade.",
"auth_and_oauth.registration_closed": "Registrering är stängd på den här instansen.",
"auth_and_oauth.registration_pending_approval": "Den här registreringen väntar på administratörsgodkännande.",
"auth_and_oauth.registration_rejected": "Den här registreringsbegäran avslogs.",
@@ -113,6 +114,7 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Vi kunde inte tilldela en diskriminator för ditt SSO-konto. Försök igen.",
"auth_and_oauth.sudo_mode_required": "Sudo-läge krävs.",
"auth_and_oauth.unknown_application": "Okänd applikation.",
"auth_and_oauth.unknown_origin_handoff": "Den här inloggningsöverföringen har gått ut eller har redan använts.",
"auth_and_registration.password_is_too_common": "Ditt lösenord är för vanligt. Välj ett lösenord som är svårare att gissa.",
"auth_and_registration.password_not_set": "Inget lösenord har angetts.",
"bots.bot_discriminator_cannot_be_changed": "Botdiskriminatorn kan inte ändras.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Admin API key ไม่ถูกต้อง",
"auth_and_oauth.missing_authorization": "ส่วนหัว Authorization หายไปหรือไม่ถูกต้อง",
"auth_and_oauth.must_start_session_before_sending_messages": "ต้องเริ่มเซสชันก่อนส่งข้อความ",
"auth_and_oauth.origin_handoff_nonce_invalid": "การโอนการลงชื่อเข้าใช้นี้ไม่ตรงกับรายการที่คุณเริ่มไว้",
"auth_and_oauth.registration_closed": "การลงทะเบียนปิดให้บริการในอินสแตนซ์นี้",
"auth_and_oauth.registration_pending_approval": "การลงทะเบียนนี้กำลังรอการอนุมัติจากผู้ดูแลระบบ",
"auth_and_oauth.registration_rejected": "คำขอลงทะเบียนนี้ถูกปฏิเสธ",
@@ -113,6 +114,7 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "ไม่สามารถสร้าง discriminator สำหรับบัญชี SSO ของคุณได้ โปรดลองอีกครั้ง",
"auth_and_oauth.sudo_mode_required": "ต้องใช้โหมด sudo",
"auth_and_oauth.unknown_application": "ไม่พบแอปพลิเคชัน",
"auth_and_oauth.unknown_origin_handoff": "การโอนการลงชื่อเข้าใช้นี้หมดอายุแล้วหรือถูกใช้ไปแล้ว",
"auth_and_registration.password_is_too_common": "รหัสผ่านของคุณเป็นรหัสที่พบบ่อยเกินไป โปรดเลือกรหัสผ่านที่เดาได้ยากขึ้น",
"auth_and_registration.password_not_set": "ยังไม่ได้ตั้งรหัสผ่าน",
"bots.bot_discriminator_cannot_be_changed": "ไม่สามารถเปลี่ยน discriminator ของบอทได้",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Geçersiz yönetici API anahtarı.",
"auth_and_oauth.missing_authorization": "Eksik veya geçersiz yetkilendirme başlığı.",
"auth_and_oauth.must_start_session_before_sending_messages": "Mesaj göndermeden önce bir oturum başlatmalısın.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Bu oturum açma aktarımı başlattığın aktarımla eşleşmiyor.",
"auth_and_oauth.registration_closed": "Bu kurulumda kayıt kapalı.",
"auth_and_oauth.registration_pending_approval": "Bu kayıt yönetici onayını bekliyor.",
"auth_and_oauth.registration_rejected": "Bu kayıt isteği reddedildi.",
@@ -113,6 +114,7 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSO hesabın için bir etiket atayamadık. Lütfen tekrar dene.",
"auth_and_oauth.sudo_mode_required": "Sudo modu gerekli.",
"auth_and_oauth.unknown_application": "Bilinmeyen uygulama.",
"auth_and_oauth.unknown_origin_handoff": "Bu oturum açma aktarımının süresi doldu veya zaten kullanıldı.",
"auth_and_registration.password_is_too_common": "Şifren çok yaygın. Lütfen tahmin edilmesi daha zor bir şifre seç.",
"auth_and_registration.password_not_set": "Şifre ayarlanmamış.",
"bots.bot_discriminator_cannot_be_changed": "Bot etiketi değiştirilemez.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Недійсний API-ключ адміністратора.",
"auth_and_oauth.missing_authorization": "Відсутній або недійсний заголовок авторизації.",
"auth_and_oauth.must_start_session_before_sending_messages": "Потрібно розпочати сесію, перш ніж надсилати повідомлення.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Це перенесення входу не збігається з тим, яке ви розпочали.",
"auth_and_oauth.registration_closed": "Реєстрацію на цьому екземплярі закрито.",
"auth_and_oauth.registration_pending_approval": "Ця реєстрація очікує на схвалення адміністратором.",
"auth_and_oauth.registration_rejected": "Цей запит на реєстрацію було відхилено.",
@@ -113,6 +114,7 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Не вдалося призначити дискримінатор для твого акаунта SSO. Спробуй ще раз.",
"auth_and_oauth.sudo_mode_required": "Потрібен режим sudo.",
"auth_and_oauth.unknown_application": "Невідомий застосунок.",
"auth_and_oauth.unknown_origin_handoff": "Термін дії цього перенесення входу минув, або його вже використано.",
"auth_and_registration.password_is_too_common": "Твій пароль занадто поширений. Обери менш передбачуваний пароль.",
"auth_and_registration.password_not_set": "Пароль не встановлено.",
"bots.bot_discriminator_cannot_be_changed": "Дискримінатор бота не можна змінити.",
+2
View File
@@ -101,6 +101,7 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "Khóa API quản trị viên không hợp lệ.",
"auth_and_oauth.missing_authorization": "Header ủy quyền bị thiếu hoặc không hợp lệ.",
"auth_and_oauth.must_start_session_before_sending_messages": "Bạn phải bắt đầu một phiên trước khi gửi tin nhắn.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Lần chuyển đăng nhập này không khớp với lần bạn đã bắt đầu.",
"auth_and_oauth.registration_closed": "Đăng ký đã bị đóng trên phiên bản này.",
"auth_and_oauth.registration_pending_approval": "Đăng ký này đang chờ quản trị viên phê duyệt.",
"auth_and_oauth.registration_rejected": "Yêu cầu đăng ký này đã bị từ chối.",
@@ -113,6 +114,7 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Chúng tôi không thể cấp phát mã phân biệt cho tài khoản SSO của bạn. Vui lòng thử lại.",
"auth_and_oauth.sudo_mode_required": "Yêu cầu chế độ sudo.",
"auth_and_oauth.unknown_application": "Ứng dụng không xác định.",
"auth_and_oauth.unknown_origin_handoff": "Lần chuyển đăng nhập này đã hết hạn hoặc đã được sử dụng.",
"auth_and_registration.password_is_too_common": "Mật khẩu của bạn quá phổ biến. Vui lòng chọn mật khẩu khó đoán hơn.",
"auth_and_registration.password_not_set": "Mật khẩu chưa được đặt.",
"bots.bot_discriminator_cannot_be_changed": "Không thể thay đổi mã phân biệt của bot.",
@@ -101,6 +101,7 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "无效的管理员 API 密钥。",
"auth_and_oauth.missing_authorization": "缺少或无效的授权请求头。",
"auth_and_oauth.must_start_session_before_sending_messages": "你必须先开始会话才能发送消息。",
"auth_and_oauth.origin_handoff_nonce_invalid": "此登录转移与你发起的不一致。",
"auth_and_oauth.registration_closed": "此实例的注册已关闭。",
"auth_and_oauth.registration_pending_approval": "此注册正在等待管理员批准。",
"auth_and_oauth.registration_rejected": "此注册请求已被拒绝。",
@@ -113,6 +114,7 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "无法为你的 SSO 账号分配识别码。请重试。",
"auth_and_oauth.sudo_mode_required": "需要 Sudo 模式。",
"auth_and_oauth.unknown_application": "未知应用。",
"auth_and_oauth.unknown_origin_handoff": "此登录转移已过期或已被使用。",
"auth_and_registration.password_is_too_common": "你的密码太常见了。请换一个更难猜的密码。",
"auth_and_registration.password_not_set": "密码未设置。",
"bots.bot_discriminator_cannot_be_changed": "机器人识别码无法更改。",
@@ -101,6 +101,7 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.invalid_token_admin_api_key": "無效的管理 API 金鑰。",
"auth_and_oauth.missing_authorization": "授權標頭遺失或無效。",
"auth_and_oauth.must_start_session_before_sending_messages": "你必須先開始工作階段才能傳送訊息。",
"auth_and_oauth.origin_handoff_nonce_invalid": "此登入轉移與你發起的不一致。",
"auth_and_oauth.registration_closed": "此實例已關閉註冊。",
"auth_and_oauth.registration_pending_approval": "此註冊正在等待管理員核准。",
"auth_and_oauth.registration_rejected": "此註冊要求已被拒絕。",
@@ -113,6 +114,7 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({
"auth_and_oauth.sso_unable_to_allocate_discriminator": "無法為你的 SSO 帳號分配識別碼。請再試一次。",
"auth_and_oauth.sudo_mode_required": "需要 Sudo 模式。",
"auth_and_oauth.unknown_application": "不明應用程式。",
"auth_and_oauth.unknown_origin_handoff": "此登入轉移已過期或已被使用。",
"auth_and_registration.password_is_too_common": "你的密碼太常見。請選擇較難預測的密碼。",
"auth_and_registration.password_not_set": "密碼尚未設定。",
"bots.bot_discriminator_cannot_be_changed": "機器人識別碼無法變更。",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "مفتاح API الإداري غير صالح.",
"auth_and_oauth.missing_authorization": "رأس التفويض مفقود أو غير صالح.",
"auth_and_oauth.must_start_session_before_sending_messages": "يجب عليك بدء جلسة قبل إرسال الرسائل.",
"auth_and_oauth.origin_handoff_nonce_invalid": "عملية نقل تسجيل الدخول هذه لا تطابق العملية التي بدأتها.",
"auth_and_oauth.registration_closed": "التسجيل مغلق في هذا المثيل.",
"auth_and_oauth.registration_pending_approval": "هذا التسجيل في انتظار موافقة المسؤول.",
"auth_and_oauth.registration_rejected": "تم رفض طلب التسجيل هذا.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "لم نتمكن من تخصيص مميّز لحساب SSO الخاص بك. حاول مجددًا.",
"auth_and_oauth.sudo_mode_required": "وضع Sudo مطلوب.",
"auth_and_oauth.unknown_application": "تطبيق غير معروف.",
"auth_and_oauth.unknown_origin_handoff": "انتهت صلاحية عملية نقل تسجيل الدخول هذه أو تم استخدامها بالفعل.",
"auth_and_registration.password_is_too_common": "كلمة مرورك شائعة جدًا. اختر كلمة مرور يصعب تخمينها.",
"auth_and_registration.password_not_set": "لم تُعيّن كلمة المرور.",
"bots.bot_discriminator_cannot_be_changed": "لا يمكن تغيير مميّز البوت.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Невалиден админ API ключ.",
"auth_and_oauth.missing_authorization": "Липсваща или невалидна заглавка за оторизация.",
"auth_and_oauth.must_start_session_before_sending_messages": "Трябва да започнеш сесия, преди да изпращаш съобщения.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Това прехвърляне на вписването не съвпада с това, което сте започнали.",
"auth_and_oauth.registration_closed": "Регистрацията е затворена на тази инстанция.",
"auth_and_oauth.registration_pending_approval": "Тази регистрация чака одобрение от администратор.",
"auth_and_oauth.registration_rejected": "Тази заявка за регистрация беше отхвърлена.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Не успяхме да присвоим дискриминатор за твоя SSO акаунт. Опитай отново.",
"auth_and_oauth.sudo_mode_required": "Изисква се sudo режим.",
"auth_and_oauth.unknown_application": "Неизвестно приложение.",
"auth_and_oauth.unknown_origin_handoff": "Това прехвърляне на вписването е изтекло или вече е използвано.",
"auth_and_registration.password_is_too_common": "Паролата ти е твърде често срещана. Избери по-трудна за отгатване парола.",
"auth_and_registration.password_not_set": "Паролата не е зададена.",
"bots.bot_discriminator_cannot_be_changed": "Дискриминаторът на бота не може да се променя.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Neplatný API klíč administrátora.",
"auth_and_oauth.missing_authorization": "Chybí nebo je neplatná autorizační hlavička.",
"auth_and_oauth.must_start_session_before_sending_messages": "Před odesíláním zpráv musíte zahájit relaci.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Tento přenos přihlášení neodpovídá tomu, který jste zahájili.",
"auth_and_oauth.registration_closed": "Registrace na této instanci je uzavřena.",
"auth_and_oauth.registration_pending_approval": "Tato registrace čeká na schválení administrátorem.",
"auth_and_oauth.registration_rejected": "Tato žádost o registraci byla zamítnuta.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nepodařilo se přidělit čtyřmístný identifikátor pro váš účet SSO. Zkuste to znovu.",
"auth_and_oauth.sudo_mode_required": "Je vyžadován režim sudo.",
"auth_and_oauth.unknown_application": "Neznámá aplikace.",
"auth_and_oauth.unknown_origin_handoff": "Platnost tohoto přenosu přihlášení vypršela nebo už byl použit.",
"auth_and_registration.password_is_too_common": "Vaše heslo je příliš běžné. Zvolte si hůře odhadnutelné heslo.",
"auth_and_registration.password_not_set": "Heslo není nastavené.",
"bots.bot_discriminator_cannot_be_changed": "Čtyřmístný identifikátor bota nelze změnit.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Ugyldig administrator-API-nøgle.",
"auth_and_oauth.missing_authorization": "Manglende eller ugyldig godkendelsesheader.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du skal starte en session, før du sender beskeder.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Denne overførsel af login matcher ikke den, du startede.",
"auth_and_oauth.registration_closed": "Tilmelding er lukket på denne instans.",
"auth_and_oauth.registration_pending_approval": "Denne tilmelding afventer godkendelse fra administratoren.",
"auth_and_oauth.registration_rejected": "Denne anmodning om tilmelding blev afvist.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Vi kunne ikke tildele et tag til din SSO-konto. Prøv igen.",
"auth_and_oauth.sudo_mode_required": "Sudo-tilstand er påkrævet.",
"auth_and_oauth.unknown_application": "Ukendt applikation.",
"auth_and_oauth.unknown_origin_handoff": "Denne overførsel af login er udløbet eller allerede brugt.",
"auth_and_registration.password_is_too_common": "Din adgangskode er for almindelig. Vælg en adgangskode, der er sværere at gætte.",
"auth_and_registration.password_not_set": "Der er ikke angivet nogen adgangskode.",
"bots.bot_discriminator_cannot_be_changed": "En bots tag kan ikke ændres.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Ungültiger Admin-API-Schlüssel.",
"auth_and_oauth.missing_authorization": "Fehlender oder ungültiger Autorisierungsheader.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du musst eine Sitzung starten, bevor du Nachrichten senden kannst.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Diese Anmeldeübertragung stimmt nicht mit der von dir gestarteten überein.",
"auth_and_oauth.registration_closed": "Die Registrierung ist auf dieser Instanz geschlossen.",
"auth_and_oauth.registration_pending_approval": "Diese Registrierung wartet auf die Genehmigung durch einen Administrator.",
"auth_and_oauth.registration_rejected": "Diese Registrierungsanfrage wurde abgelehnt.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Wir konnten keinen Discriminator für deinen SSO-Account vergeben. Versuche es noch einmal.",
"auth_and_oauth.sudo_mode_required": "Sudo-Modus ist erforderlich.",
"auth_and_oauth.unknown_application": "Unbekannte Anwendung.",
"auth_and_oauth.unknown_origin_handoff": "Diese Anmeldeübertragung ist abgelaufen oder wurde bereits verwendet.",
"auth_and_registration.password_is_too_common": "Dein Passwort wird zu häufig verwendet. Wähle bitte ein Passwort, das weniger leicht zu erraten ist.",
"auth_and_registration.password_not_set": "Das Passwort ist nicht festgelegt.",
"bots.bot_discriminator_cannot_be_changed": "Der Bot-Discriminator kann nicht geändert werden.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Το κλειδί API διαχειριστή είναι μη έγκυρο.",
"auth_and_oauth.missing_authorization": "Λείπει ή είναι άκυρη η κεφαλίδα εξουσιοδότησης.",
"auth_and_oauth.must_start_session_before_sending_messages": "Πρέπει να ξεκινήσεις συνεδρία πριν στείλεις μηνύματα.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Αυτή η μεταφορά σύνδεσης δεν αντιστοιχεί σε αυτήν που ξεκινήσατε.",
"auth_and_oauth.registration_closed": "Η εγγραφή είναι κλειστή σε αυτήν την εγκατάσταση.",
"auth_and_oauth.registration_pending_approval": "Αυτή η εγγραφή περιμένει έγκριση από τον διαχειριστή.",
"auth_and_oauth.registration_rejected": "Αυτό το αίτημα εγγραφής απορρίφθηκε.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Δεν μπορέσαμε να εκχωρήσουμε διακριτικό για τον λογαριασμό σου SSO. Δοκίμασε ξανά.",
"auth_and_oauth.sudo_mode_required": "Απαιτείται η λειτουργία sudo.",
"auth_and_oauth.unknown_application": "Άγνωστη εφαρμογή.",
"auth_and_oauth.unknown_origin_handoff": "Αυτή η μεταφορά σύνδεσης έχει λήξει ή έχει ήδη χρησιμοποιηθεί.",
"auth_and_registration.password_is_too_common": "Ο κωδικός πρόσβασής σου είναι πολύ κοινός. Διάλεξε έναν λιγότερο προβλέψιμο κωδικό πρόσβασης.",
"auth_and_registration.password_not_set": "Ο κωδικός πρόσβασης δεν έχει οριστεί.",
"bots.bot_discriminator_cannot_be_changed": "Το διακριτικό του bot δεν μπορεί να αλλάξει.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Invalid admin API key.",
"auth_and_oauth.missing_authorization": "Missing or invalid authorisation header.",
"auth_and_oauth.must_start_session_before_sending_messages": "You must start a session before sending messages.",
"auth_and_oauth.origin_handoff_nonce_invalid": "This sign-in transfer doesn't match the one you started.",
"auth_and_oauth.registration_closed": "Registration is closed on this instance.",
"auth_and_oauth.registration_pending_approval": "This registration is waiting for admin approval.",
"auth_and_oauth.registration_rejected": "This registration request was rejected.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "We couldn't allocate a discriminator for your SSO account. Please try again.",
"auth_and_oauth.sudo_mode_required": "Sudo mode is required.",
"auth_and_oauth.unknown_application": "Unknown application.",
"auth_and_oauth.unknown_origin_handoff": "This sign-in transfer has expired or was already used.",
"auth_and_registration.password_is_too_common": "Your password is too common. Please choose a less predictable password.",
"auth_and_registration.password_not_set": "Password isn't set.",
"bots.bot_discriminator_cannot_be_changed": "Bot discriminator can't be changed.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Clave de API de administrador no válida.",
"auth_and_oauth.missing_authorization": "Falta el encabezado de autorización o no es válido.",
"auth_and_oauth.must_start_session_before_sending_messages": "Debes iniciar una sesión antes de enviar mensajes.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Esta transferencia de inicio de sesión no coincide con la que iniciaste.",
"auth_and_oauth.registration_closed": "El registro está cerrado en esta instancia.",
"auth_and_oauth.registration_pending_approval": "Este registro está esperando la aprobación del administrador.",
"auth_and_oauth.registration_rejected": "Esta solicitud de registro fue rechazada.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "No pudimos asignar un discriminador para tu cuenta de SSO. Inténtalo de nuevo.",
"auth_and_oauth.sudo_mode_required": "Se requiere el modo sudo.",
"auth_and_oauth.unknown_application": "Aplicación desconocida.",
"auth_and_oauth.unknown_origin_handoff": "Esta transferencia de inicio de sesión caducó o ya se usó.",
"auth_and_registration.password_is_too_common": "Tu contraseña es demasiado común. Elige una contraseña menos predecible.",
"auth_and_registration.password_not_set": "La contraseña no está configurada.",
"bots.bot_discriminator_cannot_be_changed": "El discriminador del bot no se puede cambiar.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Clave de API de administrador no válida.",
"auth_and_oauth.missing_authorization": "Falta la cabecera de autorización o no es válida.",
"auth_and_oauth.must_start_session_before_sending_messages": "Debes iniciar sesión antes de enviar mensajes.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Esta transferencia de inicio de sesión no coincide con la que iniciaste.",
"auth_and_oauth.registration_closed": "El registro está cerrado en esta instancia.",
"auth_and_oauth.registration_pending_approval": "Este registro está pendiente de aprobación por parte del administrador.",
"auth_and_oauth.registration_rejected": "Esta solicitud de registro ha sido rechazada.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "No se pudo asignar un discriminador para tu cuenta SSO. Inténtalo de nuevo.",
"auth_and_oauth.sudo_mode_required": "Se requiere el modo sudo.",
"auth_and_oauth.unknown_application": "Aplicación desconocida.",
"auth_and_oauth.unknown_origin_handoff": "Esta transferencia de inicio de sesión ha caducado o ya se ha usado.",
"auth_and_registration.password_is_too_common": "Tu contraseña es demasiado común. Elige una contraseña menos predecible.",
"auth_and_registration.password_not_set": "La contraseña no está establecida.",
"bots.bot_discriminator_cannot_be_changed": "El discriminador del bot no se puede cambiar.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Virheellinen ylläpidon API-avain.",
"auth_and_oauth.missing_authorization": "Valtuutusotsake puuttuu tai on virheellinen.",
"auth_and_oauth.must_start_session_before_sending_messages": "Sinun on aloitettava istunto ennen viestien lähettämistä.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Tämä kirjautumisen siirto ei vastaa aloittamaasi siirtoa.",
"auth_and_oauth.registration_closed": "Rekisteröinti on suljettu tällä instanssilla.",
"auth_and_oauth.registration_pending_approval": "Tämä rekisteröinti odottaa järjestelmänvalvojan hyväksyntää.",
"auth_and_oauth.registration_rejected": "Tämä rekisteröintipyyntö hylättiin.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSO-tilillesi ei voitu varata nelinumeroista tunnistetta. Yritä uudelleen.",
"auth_and_oauth.sudo_mode_required": "Sudo-tila vaaditaan.",
"auth_and_oauth.unknown_application": "Tuntematon sovellus.",
"auth_and_oauth.unknown_origin_handoff": "Tämä kirjautumisen siirto on vanhentunut tai jo käytetty.",
"auth_and_registration.password_is_too_common": "Salasanasi on liian yleinen. Valitse vaikeammin arvattava salasana.",
"auth_and_registration.password_not_set": "Salasanaa ei ole asetettu.",
"bots.bot_discriminator_cannot_be_changed": "Botin nelinumeroista tunnistetta ei voi muuttaa.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Clé API administrateur non valide.",
"auth_and_oauth.missing_authorization": "En-tête d'autorisation manquant ou non valide.",
"auth_and_oauth.must_start_session_before_sending_messages": "Vous devez démarrer une session avant d’envoyer des messages.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Ce transfert de connexion ne correspond pas à celui que tu as lancé.",
"auth_and_oauth.registration_closed": "L'inscription est fermée sur cette instance.",
"auth_and_oauth.registration_pending_approval": "Cette inscription est en attente d'approbation par un administrateur.",
"auth_and_oauth.registration_rejected": "Cette demande d'inscription a été rejetée.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Impossible d’attribuer un discriminateur à votre compte SSO. Réessayez.",
"auth_and_oauth.sudo_mode_required": "Le mode Sudo est requis.",
"auth_and_oauth.unknown_application": "Application inconnue.",
"auth_and_oauth.unknown_origin_handoff": "Ce transfert de connexion a expiré ou a déjà été utilisé.",
"auth_and_registration.password_is_too_common": "Votre mot de passe est trop courant. Choisissez-en un moins prévisible.",
"auth_and_registration.password_not_set": "Le mot de passe n'est pas défini.",
"bots.bot_discriminator_cannot_be_changed": "Le discriminateur du bot ne peut pas être modifié.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "מפתח API של אדמין שגוי.",
"auth_and_oauth.missing_authorization": "כותרת ההרשאה חסרה או שגויה.",
"auth_and_oauth.must_start_session_before_sending_messages": "יש להתחיל סשן לפני שליחת הודעות.",
"auth_and_oauth.origin_handoff_nonce_invalid": "העברת ההתחברות הזו אינה תואמת לזו שהתחלת.",
"auth_and_oauth.registration_closed": "ההרשמה סגורה במופע זה.",
"auth_and_oauth.registration_pending_approval": "הרשמה זו ממתינה לאישור מנהל.",
"auth_and_oauth.registration_rejected": "בקשת הרשמה זו נדחתה.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "לא הצלחנו להקצות מזהה לחשבון ה-SSO שלך. ניתן לנסות שוב.",
"auth_and_oauth.sudo_mode_required": "נדרש מצב sudo.",
"auth_and_oauth.unknown_application": "אפליקציה לא ידועה.",
"auth_and_oauth.unknown_origin_handoff": "פג תוקפה של העברת ההתחברות הזו או שכבר נעשה בה שימוש.",
"auth_and_registration.password_is_too_common": "הסיסמה שלך נפוצה מדי. מומלץ לבחור סיסמה פחות צפויה.",
"auth_and_registration.password_not_set": "סיסמה לא הוגדרה.",
"bots.bot_discriminator_cannot_be_changed": "לא ניתן לשנות את המזהה של הבוט.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "एडमिन API कुंजी अमान्य है।",
"auth_and_oauth.missing_authorization": "ऑथराइज़ेशन हेडर गायब या अमान्य है।",
"auth_and_oauth.must_start_session_before_sending_messages": "मैसेज भेजने से पहले आपको एक सेशन शुरू करना होगा।",
"auth_and_oauth.origin_handoff_nonce_invalid": "यह साइन-इन ट्रांसफ़र आपके द्वारा शुरू किए गए ट्रांसफ़र से मेल नहीं खाता।",
"auth_and_oauth.registration_closed": "इस इंस्टेंस पर रजिस्ट्रेशन बंद है।",
"auth_and_oauth.registration_pending_approval": "यह रजिस्ट्रेशन एडमिन अप्रूवल का इंतज़ार कर रहा है।",
"auth_and_oauth.registration_rejected": "यह रजिस्ट्रेशन रिक्वेस्ट रिजेक्ट कर दी गई है।",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "हम आपके SSO अकाउंट के लिए डिस्क्रिमिनेटर अलॉट नहीं कर सके। फिर से कोशिश करें।",
"auth_and_oauth.sudo_mode_required": "सुडो मोड ज़रूरी है।",
"auth_and_oauth.unknown_application": "अज्ञात एप्लीकेशन।",
"auth_and_oauth.unknown_origin_handoff": "यह साइन-इन ट्रांसफ़र समाप्त हो गया है या पहले ही उपयोग किया जा चुका है।",
"auth_and_registration.password_is_too_common": "आपका पासवर्ड बहुत कॉमन है। कृपया ऐसा पासवर्ड चुनें जिसका अंदाज़ा लगाना मुश्किल हो।",
"auth_and_registration.password_not_set": "पासवर्ड सेट नहीं है।",
"bots.bot_discriminator_cannot_be_changed": "बॉट डिस्क्रिमिनेटर को बदला नहीं जा सकता।",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Nevažeći administratorski API ključ.",
"auth_and_oauth.missing_authorization": "Nedostaje ili je nevažeće autorizacijsko zaglavlje.",
"auth_and_oauth.must_start_session_before_sending_messages": "Moraš započeti sesiju prije slanja poruka.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Ovaj prijenos prijave ne odgovara onome koji ste započeli.",
"auth_and_oauth.registration_closed": "Registracija je zatvorena na ovoj instanci.",
"auth_and_oauth.registration_pending_approval": "Ova registracija čeka odobrenje administratora.",
"auth_and_oauth.registration_rejected": "Ovaj zahtjev za registraciju je odbijen.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nismo mogli dodijeliti diskriminator tvom SSO računu. Pokušaj ponovno.",
"auth_and_oauth.sudo_mode_required": "Potreban je sudo način rada.",
"auth_and_oauth.unknown_application": "Nepoznata aplikacija.",
"auth_and_oauth.unknown_origin_handoff": "Ovaj prijenos prijave je istekao ili je već iskorišten.",
"auth_and_registration.password_is_too_common": "Tvoja je lozinka previše uobičajena. Odaberi manje predvidljivu lozinku.",
"auth_and_registration.password_not_set": "Lozinka nije postavljena.",
"bots.bot_discriminator_cannot_be_changed": "Diskriminator bota ne može se promijeniti.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Érvénytelen adminisztrátori API-kulcs.",
"auth_and_oauth.missing_authorization": "Hiányzó vagy érvénytelen hitelesítési fejléc.",
"auth_and_oauth.must_start_session_before_sending_messages": "Üzenetek küldéséhez előbb munkamenetet kell indítanod.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Ez a bejelentkezés-átvitel nem egyezik azzal, amelyet elindítottál.",
"auth_and_oauth.registration_closed": "Ezen a példányon a regisztráció le van zárva.",
"auth_and_oauth.registration_pending_approval": "Ez a regisztráció rendszergazdai jóváhagyásra vár.",
"auth_and_oauth.registration_rejected": "Ez a regisztrációs kérelem el lett utasítva.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nem sikerült számazonosítót kiosztani az SSO-fiókodhoz. Próbáld újra.",
"auth_and_oauth.sudo_mode_required": "Sudo mód szükséges.",
"auth_and_oauth.unknown_application": "Ismeretlen alkalmazás.",
"auth_and_oauth.unknown_origin_handoff": "Ez a bejelentkezés-átvitel lejárt, vagy már felhasználták.",
"auth_and_registration.password_is_too_common": "A jelszavad túl gyakori. Válassz nehezebben kitalálható jelszót.",
"auth_and_registration.password_not_set": "Nincs beállítva jelszó.",
"bots.bot_discriminator_cannot_be_changed": "A bot számazonosítója nem módosítható.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Kunci API admin tidak valid.",
"auth_and_oauth.missing_authorization": "Header otorisasi hilang atau tidak valid.",
"auth_and_oauth.must_start_session_before_sending_messages": "Kamu harus memulai sesi sebelum mengirim pesan.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Transfer masuk ini tidak cocok dengan yang kamu mulai.",
"auth_and_oauth.registration_closed": "Pendaftaran ditutup di instance ini.",
"auth_and_oauth.registration_pending_approval": "Pendaftaran ini menunggu persetujuan admin.",
"auth_and_oauth.registration_rejected": "Permintaan pendaftaran ini ditolak.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Tidak bisa mengalokasikan diskriminator untuk akun SSO kamu. Silakan coba lagi.",
"auth_and_oauth.sudo_mode_required": "Mode sudo diperlukan.",
"auth_and_oauth.unknown_application": "Aplikasi tidak dikenal.",
"auth_and_oauth.unknown_origin_handoff": "Transfer masuk ini sudah kedaluwarsa atau sudah digunakan.",
"auth_and_registration.password_is_too_common": "Kata sandimu terlalu umum. Pilih kata sandi yang lebih sulit ditebak.",
"auth_and_registration.password_not_set": "Kata sandi belum diatur.",
"bots.bot_discriminator_cannot_be_changed": "Diskriminator bot tidak dapat diubah.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Chiave API amministratore non valida.",
"auth_and_oauth.missing_authorization": "Header di autorizzazione mancante o non valido.",
"auth_and_oauth.must_start_session_before_sending_messages": "Devi avviare una sessione prima di inviare messaggi.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Questo trasferimento di accesso non corrisponde a quello che hai avviato.",
"auth_and_oauth.registration_closed": "La registrazione è chiusa su questa istanza.",
"auth_and_oauth.registration_pending_approval": "Questa registrazione è in attesa dell'approvazione dell'amministratore.",
"auth_and_oauth.registration_rejected": "Questa richiesta di registrazione è stata rifiutata.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Non è stato possibile assegnare un discriminatore al tuo account SSO. Riprova.",
"auth_and_oauth.sudo_mode_required": "La modalità Sudo è richiesta.",
"auth_and_oauth.unknown_application": "Applicazione sconosciuta.",
"auth_and_oauth.unknown_origin_handoff": "Questo trasferimento di accesso è scaduto o è già stato usato.",
"auth_and_registration.password_is_too_common": "La tua password è troppo comune. Scegli una password meno prevedibile.",
"auth_and_registration.password_not_set": "La password non è impostata.",
"bots.bot_discriminator_cannot_be_changed": "Il discriminatore del bot non può essere modificato.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "管理者APIキーが無効です。",
"auth_and_oauth.missing_authorization": "認証ヘッダーが見つからないか、無効です。",
"auth_and_oauth.must_start_session_before_sending_messages": "メッセージを送信する前にセッションを開始してください。",
"auth_and_oauth.origin_handoff_nonce_invalid": "このサインインの引き継ぎは、開始したものと一致しません。",
"auth_and_oauth.registration_closed": "このインスタンスでは新規登録を受け付けていません。",
"auth_and_oauth.registration_pending_approval": "この登録は管理者による承認待ちです。",
"auth_and_oauth.registration_rejected": "この登録リクエストは拒否されました。",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSOアカウントの識別子を割り当てられませんでした。もう一度お試しください。",
"auth_and_oauth.sudo_mode_required": "Sudoモードが必要です。",
"auth_and_oauth.unknown_application": "不明なアプリケーションです。",
"auth_and_oauth.unknown_origin_handoff": "このサインインの引き継ぎは期限切れか、すでに使用されています。",
"auth_and_registration.password_is_too_common": "パスワードが一般的すぎます。より推測されにくいパスワードを設定してください。",
"auth_and_registration.password_not_set": "パスワードが未設定です。",
"bots.bot_discriminator_cannot_be_changed": "ボットの識別子は変更できません。",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "잘못된 관리자 API 키예요.",
"auth_and_oauth.missing_authorization": "인증 헤더가 없거나 유효하지 않아요.",
"auth_and_oauth.must_start_session_before_sending_messages": "메시지를 보내기 전에 세션을 시작해야 해요.",
"auth_and_oauth.origin_handoff_nonce_invalid": "이 로그인 이전 요청이 시작한 요청과 일치하지 않습니다.",
"auth_and_oauth.registration_closed": "이 인스턴스에서는 가입을 받고 있지 않아요.",
"auth_and_oauth.registration_pending_approval": "이 가입 신청은 관리자 승인을 기다리고 있어요.",
"auth_and_oauth.registration_rejected": "이 가입 요청은 거부되었어요.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSO 계정에 디스크리미네이터를 할당하지 못했어요. 다시 시도해 주세요.",
"auth_and_oauth.sudo_mode_required": "Sudo 모드가 필요해요.",
"auth_and_oauth.unknown_application": "알 수 없는 애플리케이션이에요.",
"auth_and_oauth.unknown_origin_handoff": "이 로그인 이전 요청이 만료되었거나 이미 사용되었습니다.",
"auth_and_registration.password_is_too_common": "비밀번호가 너무 흔해요. 추측하기 어려운 비밀번호를 사용해 주세요.",
"auth_and_registration.password_not_set": "비밀번호가 설정되지 않았어요.",
"bots.bot_discriminator_cannot_be_changed": "봇 디스크리미네이터를 변경할 수 없어요.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Negaliojantis administratoriaus API raktas.",
"auth_and_oauth.missing_authorization": "Trūksta autorizacijos antraštės arba ji neteisinga.",
"auth_and_oauth.must_start_session_before_sending_messages": "Kad galėtum siųsti žinutes, pirmiausia pradėk seansą.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Šis prisijungimo perkėlimas nesutampa su tuo, kurį pradėjote.",
"auth_and_oauth.registration_closed": "Registracija šioje instancijoje yra uždaryta.",
"auth_and_oauth.registration_pending_approval": "Ši registracija laukia administratoriaus patvirtinimo.",
"auth_and_oauth.registration_rejected": "Šis registracijos prašymas buvo atmestas.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nepavyko priskirti diskriminatoriaus tavo SSO paskyrai. Pabandyk dar kartą.",
"auth_and_oauth.sudo_mode_required": "Reikalingas sudo režimas.",
"auth_and_oauth.unknown_application": "Nežinoma programa.",
"auth_and_oauth.unknown_origin_handoff": "Šio prisijungimo perkėlimo galiojimas baigėsi arba jis jau panaudotas.",
"auth_and_registration.password_is_too_common": "Tavo slaptažodis per dažnai naudojamas. Pasirink sunkiau nuspėjamą slaptažodį.",
"auth_and_registration.password_not_set": "Slaptažodis nenustatytas.",
"bots.bot_discriminator_cannot_be_changed": "Boto diskriminatoriaus negalima pakeisti.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "De admin-API-sleutel is ongeldig.",
"auth_and_oauth.missing_authorization": "De autorisatieheader ontbreekt of is ongeldig.",
"auth_and_oauth.must_start_session_before_sending_messages": "Je moet een sessie starten voordat je berichten kunt verzenden.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Deze aanmeldoverdracht komt niet overeen met de overdracht die je hebt gestart.",
"auth_and_oauth.registration_closed": "Registratie is gesloten op deze instantie.",
"auth_and_oauth.registration_pending_approval": "Deze registratie wacht op goedkeuring van de beheerder.",
"auth_and_oauth.registration_rejected": "Dit registratieverzoek is afgewezen.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "We konden geen discriminator toewijzen aan je SSO-account. Probeer het nog eens.",
"auth_and_oauth.sudo_mode_required": "Sudo-modus is vereist.",
"auth_and_oauth.unknown_application": "Onbekende app.",
"auth_and_oauth.unknown_origin_handoff": "Deze aanmeldoverdracht is verlopen of al gebruikt.",
"auth_and_registration.password_is_too_common": "Je wachtwoord komt te vaak voor. Kies een minder voorspelbaar wachtwoord.",
"auth_and_registration.password_not_set": "Wachtwoord is niet ingesteld.",
"bots.bot_discriminator_cannot_be_changed": "De discriminator van een bot kan niet worden gewijzigd.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Ugyldig API-nøkkel for administrasjon.",
"auth_and_oauth.missing_authorization": "Autorisasjonsheaderen mangler eller er ugyldig.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du må starte en økt før du sender meldinger.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Denne overføringen av innloggingen samsvarer ikke med den du startet.",
"auth_and_oauth.registration_closed": "Registrering er stengt på denne instansen.",
"auth_and_oauth.registration_pending_approval": "Denne registreringen venter på administratorgodkjenning.",
"auth_and_oauth.registration_rejected": "Denne registreringsforespørselen ble avvist.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Vi klarte ikke å tildele en diskriminator til SSO-kontoen din. Prøv igjen.",
"auth_and_oauth.sudo_mode_required": "Sudo-modus er påkrevd.",
"auth_and_oauth.unknown_application": "Ukjent app.",
"auth_and_oauth.unknown_origin_handoff": "Denne overføringen av innloggingen er utløpt eller allerede brukt.",
"auth_and_registration.password_is_too_common": "Passordet ditt er for vanlig. Velg et passord som er vanskeligere å gjette.",
"auth_and_registration.password_not_set": "Det er ikke angitt noe passord.",
"bots.bot_discriminator_cannot_be_changed": "Botens diskriminator kan ikke endres.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Nieprawidłowy klucz API administratora.",
"auth_and_oauth.missing_authorization": "Brakuje nagłówka autoryzacji lub jest on nieprawidłowy.",
"auth_and_oauth.must_start_session_before_sending_messages": "Musisz rozpocząć sesję, zanim wyślesz wiadomości.",
"auth_and_oauth.origin_handoff_nonce_invalid": "To przeniesienie logowania nie pasuje do tego, które zostało rozpoczęte.",
"auth_and_oauth.registration_closed": "Rejestracja na tej instancji jest zamknięta.",
"auth_and_oauth.registration_pending_approval": "Ta rejestracja czeka na zatwierdzenie przez administratora.",
"auth_and_oauth.registration_rejected": "Ten wniosek o rejestrację został odrzucony.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nie udało się przydzielić dyskryminatora dla Twojego konta SSO. Spróbuj ponownie.",
"auth_and_oauth.sudo_mode_required": "Wymagany tryb sudo.",
"auth_and_oauth.unknown_application": "Nieznana aplikacja.",
"auth_and_oauth.unknown_origin_handoff": "To przeniesienie logowania wygasło lub zostało już użyte.",
"auth_and_registration.password_is_too_common": "Twoje hasło jest zbyt popularne. Wybierz mniej przewidywalne hasło.",
"auth_and_registration.password_not_set": "Hasło nie jest ustawione.",
"bots.bot_discriminator_cannot_be_changed": "Nie można zmienić dyskryminatora bota.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Chave de API de administrador inválida.",
"auth_and_oauth.missing_authorization": "Cabeçalho de autorização ausente ou inválido.",
"auth_and_oauth.must_start_session_before_sending_messages": "Você deve iniciar uma sessão antes de enviar mensagens.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Esta transferência de login não corresponde à que você iniciou.",
"auth_and_oauth.registration_closed": "O cadastro está fechado nesta instância.",
"auth_and_oauth.registration_pending_approval": "Este cadastro está aguardando a aprovação de um administrador.",
"auth_and_oauth.registration_rejected": "Esta solicitação de cadastro foi rejeitada.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Não foi possível alocar um discriminador para sua conta SSO. Tente novamente.",
"auth_and_oauth.sudo_mode_required": "O modo sudo é obrigatório.",
"auth_and_oauth.unknown_application": "Aplicativo desconhecido.",
"auth_and_oauth.unknown_origin_handoff": "Esta transferência de login expirou ou já foi usada.",
"auth_and_registration.password_is_too_common": "Sua senha é muito comum. Escolha uma senha menos previsível.",
"auth_and_registration.password_not_set": "A senha não foi definida.",
"bots.bot_discriminator_cannot_be_changed": "O discriminador do bot não pode ser alterado.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Cheia API de administrator este invalidă.",
"auth_and_oauth.missing_authorization": "Headerul de autorizare lipsește sau este invalid.",
"auth_and_oauth.must_start_session_before_sending_messages": "Trebuie să începi o sesiune înainte de a trimite mesaje.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Acest transfer de autentificare nu corespunde celui pe care l-ai început.",
"auth_and_oauth.registration_closed": "Înregistrarea este închisă pe această instanță.",
"auth_and_oauth.registration_pending_approval": "Această înregistrare așteaptă aprobarea administratorului.",
"auth_and_oauth.registration_rejected": "Această cerere de înregistrare a fost respinsă.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Nu s-a putut aloca un discriminator pentru contul tău SSO. Încearcă din nou.",
"auth_and_oauth.sudo_mode_required": "Modul Sudo este necesar.",
"auth_and_oauth.unknown_application": "Aplicație necunoscută.",
"auth_and_oauth.unknown_origin_handoff": "Acest transfer de autentificare a expirat sau a fost deja folosit.",
"auth_and_registration.password_is_too_common": "Parola ta este prea comună. Alege o parolă mai greu de ghicit.",
"auth_and_registration.password_not_set": "Parola nu este setată.",
"bots.bot_discriminator_cannot_be_changed": "Discriminatorul botului nu poate fi schimbat.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Недействительный ключ Admin API.",
"auth_and_oauth.missing_authorization": "Заголовок авторизации отсутствует или недействителен.",
"auth_and_oauth.must_start_session_before_sending_messages": "Перед отправкой сообщений нужно начать сессию.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Этот перенос входа не совпадает с тем, который вы начали.",
"auth_and_oauth.registration_closed": "Регистрация в этом экземпляре закрыта.",
"auth_and_oauth.registration_pending_approval": "Эта регистрация ожидает одобрения администратора.",
"auth_and_oauth.registration_rejected": "Заявка на регистрацию отклонена.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Не удалось назначить дискриминатор для твоего аккаунта SSO. Попробуй ещё раз.",
"auth_and_oauth.sudo_mode_required": "Требуется режим sudo.",
"auth_and_oauth.unknown_application": "Неизвестное приложение.",
"auth_and_oauth.unknown_origin_handoff": "Срок действия этого переноса входа истёк, или он уже использован.",
"auth_and_registration.password_is_too_common": "Твой пароль слишком распространённый. Придумай менее предсказуемый пароль.",
"auth_and_registration.password_not_set": "Пароль не установлен.",
"bots.bot_discriminator_cannot_be_changed": "Дискриминатор бота нельзя изменить.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Ogiltig admin-API-nyckel.",
"auth_and_oauth.missing_authorization": "Authorization-huvudet saknas eller är ogiltigt.",
"auth_and_oauth.must_start_session_before_sending_messages": "Du måste starta en session innan du kan skicka meddelanden.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Den här inloggningsöverföringen matchar inte den du startade.",
"auth_and_oauth.registration_closed": "Registrering är stängd på den här instansen.",
"auth_and_oauth.registration_pending_approval": "Den här registreringen väntar på administratörsgodkännande.",
"auth_and_oauth.registration_rejected": "Den här registreringsbegäran avslogs.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Vi kunde inte tilldela en diskriminator för ditt SSO-konto. Försök igen.",
"auth_and_oauth.sudo_mode_required": "Sudo-läge krävs.",
"auth_and_oauth.unknown_application": "Okänd applikation.",
"auth_and_oauth.unknown_origin_handoff": "Den här inloggningsöverföringen har gått ut eller har redan använts.",
"auth_and_registration.password_is_too_common": "Ditt lösenord är för vanligt. Välj ett lösenord som är svårare att gissa.",
"auth_and_registration.password_not_set": "Inget lösenord har angetts.",
"bots.bot_discriminator_cannot_be_changed": "Botdiskriminatorn kan inte ändras.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Admin API key ไม่ถูกต้อง",
"auth_and_oauth.missing_authorization": "ส่วนหัว Authorization หายไปหรือไม่ถูกต้อง",
"auth_and_oauth.must_start_session_before_sending_messages": "ต้องเริ่มเซสชันก่อนส่งข้อความ",
"auth_and_oauth.origin_handoff_nonce_invalid": "การโอนการลงชื่อเข้าใช้นี้ไม่ตรงกับรายการที่คุณเริ่มไว้",
"auth_and_oauth.registration_closed": "การลงทะเบียนปิดให้บริการในอินสแตนซ์นี้",
"auth_and_oauth.registration_pending_approval": "การลงทะเบียนนี้กำลังรอการอนุมัติจากผู้ดูแลระบบ",
"auth_and_oauth.registration_rejected": "คำขอลงทะเบียนนี้ถูกปฏิเสธ",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "ไม่สามารถสร้าง discriminator สำหรับบัญชี SSO ของคุณได้ โปรดลองอีกครั้ง",
"auth_and_oauth.sudo_mode_required": "ต้องใช้โหมด sudo",
"auth_and_oauth.unknown_application": "ไม่พบแอปพลิเคชัน",
"auth_and_oauth.unknown_origin_handoff": "การโอนการลงชื่อเข้าใช้นี้หมดอายุแล้วหรือถูกใช้ไปแล้ว",
"auth_and_registration.password_is_too_common": "รหัสผ่านของคุณเป็นรหัสที่พบบ่อยเกินไป โปรดเลือกรหัสผ่านที่เดาได้ยากขึ้น",
"auth_and_registration.password_not_set": "ยังไม่ได้ตั้งรหัสผ่าน",
"bots.bot_discriminator_cannot_be_changed": "ไม่สามารถเปลี่ยน discriminator ของบอทได้",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Geçersiz yönetici API anahtarı.",
"auth_and_oauth.missing_authorization": "Eksik veya geçersiz yetkilendirme başlığı.",
"auth_and_oauth.must_start_session_before_sending_messages": "Mesaj göndermeden önce bir oturum başlatmalısın.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Bu oturum açma aktarımı başlattığın aktarımla eşleşmiyor.",
"auth_and_oauth.registration_closed": "Bu kurulumda kayıt kapalı.",
"auth_and_oauth.registration_pending_approval": "Bu kayıt yönetici onayını bekliyor.",
"auth_and_oauth.registration_rejected": "Bu kayıt isteği reddedildi.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "SSO hesabın için bir etiket atayamadık. Lütfen tekrar dene.",
"auth_and_oauth.sudo_mode_required": "Sudo modu gerekli.",
"auth_and_oauth.unknown_application": "Bilinmeyen uygulama.",
"auth_and_oauth.unknown_origin_handoff": "Bu oturum açma aktarımının süresi doldu veya zaten kullanıldı.",
"auth_and_registration.password_is_too_common": "Şifren çok yaygın. Lütfen tahmin edilmesi daha zor bir şifre seç.",
"auth_and_registration.password_not_set": "Şifre ayarlanmamış.",
"bots.bot_discriminator_cannot_be_changed": "Bot etiketi değiştirilemez.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Недійсний API-ключ адміністратора.",
"auth_and_oauth.missing_authorization": "Відсутній або недійсний заголовок авторизації.",
"auth_and_oauth.must_start_session_before_sending_messages": "Потрібно розпочати сесію, перш ніж надсилати повідомлення.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Це перенесення входу не збігається з тим, яке ви розпочали.",
"auth_and_oauth.registration_closed": "Реєстрацію на цьому екземплярі закрито.",
"auth_and_oauth.registration_pending_approval": "Ця реєстрація очікує на схвалення адміністратором.",
"auth_and_oauth.registration_rejected": "Цей запит на реєстрацію було відхилено.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Не вдалося призначити дискримінатор для твого акаунта SSO. Спробуй ще раз.",
"auth_and_oauth.sudo_mode_required": "Потрібен режим sudo.",
"auth_and_oauth.unknown_application": "Невідомий застосунок.",
"auth_and_oauth.unknown_origin_handoff": "Термін дії цього перенесення входу минув, або його вже використано.",
"auth_and_registration.password_is_too_common": "Твій пароль занадто поширений. Обери менш передбачуваний пароль.",
"auth_and_registration.password_not_set": "Пароль не встановлено.",
"bots.bot_discriminator_cannot_be_changed": "Дискримінатор бота не можна змінити.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Khóa API quản trị viên không hợp lệ.",
"auth_and_oauth.missing_authorization": "Header ủy quyền bị thiếu hoặc không hợp lệ.",
"auth_and_oauth.must_start_session_before_sending_messages": "Bạn phải bắt đầu một phiên trước khi gửi tin nhắn.",
"auth_and_oauth.origin_handoff_nonce_invalid": "Lần chuyển đăng nhập này không khớp với lần bạn đã bắt đầu.",
"auth_and_oauth.registration_closed": "Đăng ký đã bị đóng trên phiên bản này.",
"auth_and_oauth.registration_pending_approval": "Đăng ký này đang chờ quản trị viên phê duyệt.",
"auth_and_oauth.registration_rejected": "Yêu cầu đăng ký này đã bị từ chối.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "Chúng tôi không thể cấp phát mã phân biệt cho tài khoản SSO của bạn. Vui lòng thử lại.",
"auth_and_oauth.sudo_mode_required": "Yêu cầu chế độ sudo.",
"auth_and_oauth.unknown_application": "Ứng dụng không xác định.",
"auth_and_oauth.unknown_origin_handoff": "Lần chuyển đăng nhập này đã hết hạn hoặc đã được sử dụng.",
"auth_and_registration.password_is_too_common": "Mật khẩu của bạn quá phổ biến. Vui lòng chọn mật khẩu khó đoán hơn.",
"auth_and_registration.password_not_set": "Mật khẩu chưa được đặt.",
"bots.bot_discriminator_cannot_be_changed": "Không thể thay đổi mã phân biệt của bot.",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "无效的管理员 API 密钥。",
"auth_and_oauth.missing_authorization": "缺少或无效的授权请求头。",
"auth_and_oauth.must_start_session_before_sending_messages": "你必须先开始会话才能发送消息。",
"auth_and_oauth.origin_handoff_nonce_invalid": "此登录转移与你发起的不一致。",
"auth_and_oauth.registration_closed": "此实例的注册已关闭。",
"auth_and_oauth.registration_pending_approval": "此注册正在等待管理员批准。",
"auth_and_oauth.registration_rejected": "此注册请求已被拒绝。",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "无法为你的 SSO 账号分配识别码。请重试。",
"auth_and_oauth.sudo_mode_required": "需要 Sudo 模式。",
"auth_and_oauth.unknown_application": "未知应用。",
"auth_and_oauth.unknown_origin_handoff": "此登录转移已过期或已被使用。",
"auth_and_registration.password_is_too_common": "你的密码太常见了。请换一个更难猜的密码。",
"auth_and_registration.password_not_set": "密码未设置。",
"bots.bot_discriminator_cannot_be_changed": "机器人识别码无法更改。",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "無效的管理 API 金鑰。",
"auth_and_oauth.missing_authorization": "授權標頭遺失或無效。",
"auth_and_oauth.must_start_session_before_sending_messages": "你必須先開始工作階段才能傳送訊息。",
"auth_and_oauth.origin_handoff_nonce_invalid": "此登入轉移與你發起的不一致。",
"auth_and_oauth.registration_closed": "此實例已關閉註冊。",
"auth_and_oauth.registration_pending_approval": "此註冊正在等待管理員核准。",
"auth_and_oauth.registration_rejected": "此註冊要求已被拒絕。",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "無法為你的 SSO 帳號分配識別碼。請再試一次。",
"auth_and_oauth.sudo_mode_required": "需要 Sudo 模式。",
"auth_and_oauth.unknown_application": "不明應用程式。",
"auth_and_oauth.unknown_origin_handoff": "此登入轉移已過期或已被使用。",
"auth_and_registration.password_is_too_common": "你的密碼太常見。請選擇較難預測的密碼。",
"auth_and_registration.password_not_set": "密碼尚未設定。",
"bots.bot_discriminator_cannot_be_changed": "機器人識別碼無法變更。",
@@ -97,6 +97,7 @@
"auth_and_oauth.invalid_token_admin_api_key": "Invalid admin API key.",
"auth_and_oauth.missing_authorization": "Missing or invalid authorization header.",
"auth_and_oauth.must_start_session_before_sending_messages": "You must start a session before sending messages.",
"auth_and_oauth.origin_handoff_nonce_invalid": "This sign-in transfer doesn't match the one you started.",
"auth_and_oauth.registration_closed": "Registration is closed on this instance.",
"auth_and_oauth.registration_pending_approval": "This registration is waiting for admin approval.",
"auth_and_oauth.registration_rejected": "This registration request was rejected.",
@@ -109,6 +110,7 @@
"auth_and_oauth.sso_unable_to_allocate_discriminator": "We couldn't allocate a discriminator for your SSO account. Please try again.",
"auth_and_oauth.sudo_mode_required": "Sudo mode is required.",
"auth_and_oauth.unknown_application": "Unknown application.",
"auth_and_oauth.unknown_origin_handoff": "This sign-in transfer has expired or was already used.",
"auth_and_registration.password_is_too_common": "Your password is too common. Please choose a less predictable password.",
"auth_and_registration.password_not_set": "Password isn't set.",
"bots.bot_discriminator_cannot_be_changed": "Bot discriminator can't be changed.",
@@ -11,6 +11,10 @@ import {ADMIN_ACL_COUNT, AdminAclType} from '@fluxer/schema/src/domains/admin/Ad
import {AdminArchiveResponseSchema} from '@fluxer/schema/src/domains/admin/AdminArchiveSchemas';
import {GuildAdminResponse} from '@fluxer/schema/src/domains/admin/AdminGuildSchemas';
import {UserAdminResponseSchema} from '@fluxer/schema/src/domains/admin/AdminUserSchemas';
import {
DomainMigrationConfigResponse,
DomainMigrationConfigUpdateRequest,
} from '@fluxer/schema/src/domains/admin/DomainMigrationSchemas';
import {
GatewayRolloutConfigResponse,
GatewayRolloutConfigUpdateRequest,
@@ -649,6 +653,7 @@ export const InstanceConfigResponse = z.object({
gateway_rollout: GatewayRolloutConfigResponse,
voice_noise_suppression: VoiceNoiseSuppressionConfigResponse,
push_service_delivery: PushServiceDeliveryConfigResponse,
domain_migration: DomainMigrationConfigResponse,
experiment_delivery: ExperimentDeliveryConfigResponse,
registration: InstanceRegistrationResponse,
self_hosted: z.boolean(),
@@ -686,6 +691,7 @@ export const InstanceConfigUpdateRequest = z.object({
gateway_rollout: GatewayRolloutConfigUpdateRequest.nullish(),
voice_noise_suppression: VoiceNoiseSuppressionConfigUpdateRequest.nullish(),
push_service_delivery: PushServiceDeliveryConfigUpdateRequest.nullish(),
domain_migration: DomainMigrationConfigUpdateRequest.nullish(),
experiment_delivery: ExperimentDeliveryConfigUpdateRequest.nullish(),
registration: z
.object({
@@ -0,0 +1,234 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {
DEFAULT_DOMAIN_MIGRATION_CONFIG,
type DomainMigrationConfig,
DomainMigrationConfigSchema,
DomainMigrationConfigUpdateRequest,
INERT_DOMAIN_MIGRATION_ASSIGNMENT,
resolveDomainMigrationAssignment,
toDomainMigrationDiscovery,
} from '@fluxer/schema/src/domains/admin/DomainMigrationSchemas';
import {experimentBucket} from '@fluxer/schema/src/domains/experiment/ExperimentBucket';
import {describe, expect, test} from 'vitest';
const TARGETED_USER_ID = '1000000000000000001';
const OTHER_USER_ID = '1000000000000000002';
function createConfig(overrides: Partial<DomainMigrationConfig> = {}): DomainMigrationConfig {
return {
...DEFAULT_DOMAIN_MIGRATION_CONFIG,
included_user_ids: [],
excluded_user_ids: [],
...overrides,
};
}
function syntheticUserIds(count: number): Array<string> {
const ids: Array<string> = [];
for (let index = 0; index < count; index++) {
ids.push((1400000000000000000n + BigInt(index)).toString());
}
return ids;
}
function targetedUserIds(config: DomainMigrationConfig, userIds: ReadonlyArray<string>): Set<string> {
const targeted = new Set<string>();
for (const userId of userIds) {
if (resolveDomainMigrationAssignment(config, userId).enabled) {
targeted.add(userId);
}
}
return targeted;
}
describe('domain migration configuration', () => {
test('derives defaults from the schema with independently owned arrays', () => {
const first = DomainMigrationConfigSchema.parse({});
const second = DomainMigrationConfigSchema.parse({});
expect(first).toEqual(DEFAULT_DOMAIN_MIGRATION_CONFIG);
first.included_user_ids.push(TARGETED_USER_ID);
first.excluded_user_ids.push(OTHER_USER_ID);
expect(second).toEqual(DEFAULT_DOMAIN_MIGRATION_CONFIG);
});
test('defaults to disabled with an empty rollout', () => {
expect(DEFAULT_DOMAIN_MIGRATION_CONFIG.enabled).toBe(false);
expect(DEFAULT_DOMAIN_MIGRATION_CONFIG.rollout_basis_points).toBe(0);
expect(DEFAULT_DOMAIN_MIGRATION_CONFIG.anonymous_rollout_basis_points).toBe(0);
expect(DEFAULT_DOMAIN_MIGRATION_CONFIG.rollout_salt).toBe('domain-migration-v1');
expect(DEFAULT_DOMAIN_MIGRATION_CONFIG.standalone_forwarding).toBe(false);
});
test('fills standalone forwarding in for configs stored before it existed', () => {
const stored = DomainMigrationConfigSchema.parse({enabled: true, config_version: 4, rollout_basis_points: 100});
expect(stored.standalone_forwarding).toBe(false);
});
test.each([{}, {enabled: false}, {enabled: undefined}, {rollout_basis_points: 2500}, {standalone_forwarding: true}])(
'keeps partial updates free of configuration defaults: %j',
(patch) => {
expect(DomainMigrationConfigUpdateRequest.parse(patch)).toEqual(patch);
},
);
test('does not accept a client-provided configuration version', () => {
expect(DomainMigrationConfigUpdateRequest.parse({config_version: 12})).toEqual({});
});
test.each([
{rollout_basis_points: -1},
{rollout_basis_points: 10001},
{anonymous_rollout_basis_points: -1},
{anonymous_rollout_basis_points: 10001},
{anonymous_rollout_basis_points: 1.5},
{rollout_salt: ' '},
{rollout_salt: 'domain-migration-\u00e9'},
{included_user_ids: ['not-an-id']},
{excluded_user_ids: ['not-an-id']},
{standalone_forwarding: 'yes'},
])('applies the same validation to stored configuration and updates: %j', (value) => {
expect(DomainMigrationConfigSchema.safeParse(value).success).toBe(false);
expect(DomainMigrationConfigUpdateRequest.safeParse(value).success).toBe(false);
});
test('rejects more than a thousand targeted user ids', () => {
const ids = syntheticUserIds(1001);
expect(DomainMigrationConfigSchema.safeParse({included_user_ids: ids}).success).toBe(false);
expect(DomainMigrationConfigSchema.safeParse({included_user_ids: ids.slice(0, 1000)}).success).toBe(true);
});
});
describe('resolveDomainMigrationAssignment', () => {
test('the inert assignment is disabled', () => {
expect(INERT_DOMAIN_MIGRATION_ASSIGNMENT.enabled).toBe(false);
});
test('returns the inert assignment when the master switch is off', () => {
const config = createConfig({
enabled: false,
rollout_basis_points: 10000,
included_user_ids: [TARGETED_USER_ID],
});
expect(resolveDomainMigrationAssignment(config, TARGETED_USER_ID)).toEqual(INERT_DOMAIN_MIGRATION_ASSIGNMENT);
});
test('returns the inert assignment for the default config', () => {
expect(resolveDomainMigrationAssignment(createConfig(), TARGETED_USER_ID)).toEqual(
INERT_DOMAIN_MIGRATION_ASSIGNMENT,
);
});
test('never hands back the shared inert object', () => {
const assignment = resolveDomainMigrationAssignment(createConfig(), TARGETED_USER_ID);
expect(assignment).not.toBe(INERT_DOMAIN_MIGRATION_ASSIGNMENT);
});
test('denylist beats allowlist', () => {
const config = createConfig({
enabled: true,
included_user_ids: [TARGETED_USER_ID],
excluded_user_ids: [TARGETED_USER_ID],
});
expect(resolveDomainMigrationAssignment(config, TARGETED_USER_ID).enabled).toBe(false);
});
test('denylist beats the bucket', () => {
const config = createConfig({
enabled: true,
rollout_basis_points: 10000,
excluded_user_ids: [TARGETED_USER_ID],
});
expect(resolveDomainMigrationAssignment(config, TARGETED_USER_ID).enabled).toBe(false);
expect(resolveDomainMigrationAssignment(config, OTHER_USER_ID).enabled).toBe(true);
});
test('allowlist beats the bucket', () => {
const config = createConfig({
enabled: true,
rollout_basis_points: 0,
included_user_ids: [TARGETED_USER_ID],
});
expect(resolveDomainMigrationAssignment(config, TARGETED_USER_ID).enabled).toBe(true);
expect(resolveDomainMigrationAssignment(config, OTHER_USER_ID).enabled).toBe(false);
});
test.each([
{basisPoints: 0, enabled: false},
{basisPoints: 10000, enabled: true},
])('a rollout of $basisPoints basis points targets $enabled', ({basisPoints, enabled}) => {
const config = createConfig({enabled: true, rollout_basis_points: basisPoints});
for (const userId of syntheticUserIds(200)) {
expect(resolveDomainMigrationAssignment(config, userId).enabled).toBe(enabled);
}
});
test('the bucket boundary is exclusive at the low end and inclusive one point above', () => {
const salt = DEFAULT_DOMAIN_MIGRATION_CONFIG.rollout_salt;
const bucket = experimentBucket(TARGETED_USER_ID, salt);
expect(
resolveDomainMigrationAssignment(createConfig({enabled: true, rollout_basis_points: bucket}), TARGETED_USER_ID)
.enabled,
).toBe(false);
expect(
resolveDomainMigrationAssignment(
createConfig({enabled: true, rollout_basis_points: bucket + 1}),
TARGETED_USER_ID,
).enabled,
).toBe(true);
});
test('raising the rollout basis points only ever adds users', () => {
const userIds = syntheticUserIds(2000);
const atOneThousand = targetedUserIds(createConfig({enabled: true, rollout_basis_points: 1000}), userIds);
const atTwoThousand = targetedUserIds(createConfig({enabled: true, rollout_basis_points: 2000}), userIds);
expect(atOneThousand.size).toBeGreaterThan(0);
for (const userId of atOneThousand) {
expect(atTwoThousand.has(userId)).toBe(true);
}
expect(atTwoThousand.size).toBeGreaterThan(atOneThousand.size);
});
test('the targeted set follows the salt', () => {
const userIds = syntheticUserIds(2000);
const first = targetedUserIds(
createConfig({enabled: true, rollout_basis_points: 5000, rollout_salt: 'domain-migration-v1'}),
userIds,
);
const second = targetedUserIds(
createConfig({enabled: true, rollout_basis_points: 5000, rollout_salt: 'domain-migration-v2'}),
userIds,
);
expect(first).not.toEqual(second);
});
});
describe('toDomainMigrationDiscovery', () => {
test('projects only the public fields of the config', () => {
const config = createConfig({
enabled: true,
config_version: 3,
rollout_basis_points: 500,
rollout_salt: 'domain-migration-v2',
anonymous_rollout_basis_points: 250,
included_user_ids: [TARGETED_USER_ID],
excluded_user_ids: [OTHER_USER_ID],
standalone_forwarding: true,
});
expect(toDomainMigrationDiscovery(config)).toEqual({
enabled: true,
anonymous_rollout_basis_points: 250,
rollout_salt: 'domain-migration-v2',
standalone_forwarding: true,
});
});
test('reports the kill switch for the default config', () => {
expect(toDomainMigrationDiscovery(DEFAULT_DOMAIN_MIGRATION_CONFIG)).toEqual({
enabled: false,
anonymous_rollout_basis_points: 0,
rollout_salt: 'domain-migration-v1',
standalone_forwarding: false,
});
});
});
@@ -0,0 +1,94 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {EXPERIMENT_BUCKET_RESOLUTION, experimentBucket} from '@fluxer/schema/src/domains/experiment/ExperimentBucket';
import {z} from 'zod';
const DOMAIN_MIGRATION_ROLLOUT_BASIS_POINTS_MAX = EXPERIMENT_BUCKET_RESOLUTION;
const DOMAIN_MIGRATION_MAX_TARGETED_USERS = 1000;
const DEFAULT_DOMAIN_MIGRATION_SALT = 'domain-migration-v1';
const DOMAIN_MIGRATION_SALT_PATTERN = /^[\x20-\x7e]+$/u;
const DomainMigrationTargetIdSchema = z.string().regex(/^\d{1,20}$/u);
const DomainMigrationTargetedUserIdsSchema = z
.array(DomainMigrationTargetIdSchema)
.max(DOMAIN_MIGRATION_MAX_TARGETED_USERS);
const domainMigrationConfigFields = {
enabled: z.boolean(),
config_version: z.number().int().min(0),
rollout_basis_points: z.number().int().min(0).max(DOMAIN_MIGRATION_ROLLOUT_BASIS_POINTS_MAX),
rollout_salt: z.string().trim().min(1).max(64).regex(DOMAIN_MIGRATION_SALT_PATTERN),
included_user_ids: DomainMigrationTargetedUserIdsSchema,
excluded_user_ids: DomainMigrationTargetedUserIdsSchema,
anonymous_rollout_basis_points: z.number().int().min(0).max(DOMAIN_MIGRATION_ROLLOUT_BASIS_POINTS_MAX),
standalone_forwarding: z.boolean(),
};
export const DomainMigrationConfigSchema = z.object({
enabled: domainMigrationConfigFields.enabled.default(false),
config_version: domainMigrationConfigFields.config_version.default(0),
rollout_basis_points: domainMigrationConfigFields.rollout_basis_points.default(0),
rollout_salt: domainMigrationConfigFields.rollout_salt.default(DEFAULT_DOMAIN_MIGRATION_SALT),
included_user_ids: domainMigrationConfigFields.included_user_ids.default([]),
excluded_user_ids: domainMigrationConfigFields.excluded_user_ids.default([]),
anonymous_rollout_basis_points: domainMigrationConfigFields.anonymous_rollout_basis_points.default(0),
standalone_forwarding: domainMigrationConfigFields.standalone_forwarding.default(false),
});
export type DomainMigrationConfig = z.infer<typeof DomainMigrationConfigSchema>;
export const DEFAULT_DOMAIN_MIGRATION_CONFIG: DomainMigrationConfig = DomainMigrationConfigSchema.parse({});
export const DomainMigrationConfigUpdateRequest = z
.object(domainMigrationConfigFields)
.omit({config_version: true})
.partial();
export type DomainMigrationConfigUpdateRequest = z.infer<typeof DomainMigrationConfigUpdateRequest>;
export const DomainMigrationConfigResponse = DomainMigrationConfigSchema;
export type DomainMigrationConfigResponse = z.infer<typeof DomainMigrationConfigResponse>;
export const DomainMigrationAssignmentResponse = z.object({
enabled: domainMigrationConfigFields.enabled,
});
export type DomainMigrationAssignmentResponse = z.infer<typeof DomainMigrationAssignmentResponse>;
export const INERT_DOMAIN_MIGRATION_ASSIGNMENT: DomainMigrationAssignmentResponse = {
enabled: false,
};
export function resolveDomainMigrationAssignment(
config: DomainMigrationConfig,
userId: string,
): DomainMigrationAssignmentResponse {
if (!config.enabled) return {...INERT_DOMAIN_MIGRATION_ASSIGNMENT};
if (config.excluded_user_ids.includes(userId)) return {...INERT_DOMAIN_MIGRATION_ASSIGNMENT};
if (config.included_user_ids.includes(userId)) return {enabled: true};
return {enabled: experimentBucket(userId, config.rollout_salt) < config.rollout_basis_points};
}
export const DomainMigrationDiscoveryResponse = z.object({
enabled: domainMigrationConfigFields.enabled.describe('Whether the domain migration is switched on'),
anonymous_rollout_basis_points: domainMigrationConfigFields.anonymous_rollout_basis_points.describe(
'Share of logged-out devices, in basis points, that move to the new domain',
),
rollout_salt: domainMigrationConfigFields.rollout_salt.describe('Salt used to bucket devices and users'),
standalone_forwarding: domainMigrationConfigFields.standalone_forwarding.describe(
'Whether installed desktop web apps forward to the new domain after moving their session',
),
});
export type DomainMigrationDiscoveryResponse = z.infer<typeof DomainMigrationDiscoveryResponse>;
export function toDomainMigrationDiscovery(config: DomainMigrationConfig): DomainMigrationDiscoveryResponse {
return {
enabled: config.enabled,
anonymous_rollout_basis_points: config.anonymous_rollout_basis_points,
rollout_salt: config.rollout_salt,
standalone_forwarding: config.standalone_forwarding,
};
}
@@ -0,0 +1,49 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {z} from 'zod';
export const ORIGIN_HANDOFF_MAX_PAYLOAD_LENGTH = 8 * 1024 * 1024;
const Base64UrlPattern = /^[A-Za-z0-9_-]+$/u;
export const OriginHandoffCreateRequest = z.object({
nonce_hash: z
.string()
.regex(/^[0-9a-f]{64}$/u)
.describe('Lowercase hex SHA-256 digest of the nonce the receiving origin holds'),
payload: z
.string()
.min(1)
.max(ORIGIN_HANDOFF_MAX_PAYLOAD_LENGTH)
.regex(Base64UrlPattern)
.describe('Encrypted client state encoded as base64url'),
});
export type OriginHandoffCreateRequest = z.infer<typeof OriginHandoffCreateRequest>;
export const OriginHandoffCreateResponse = z.object({
handoff_id: z.string().describe('Single-use identifier the receiving origin redeems'),
});
export type OriginHandoffCreateResponse = z.infer<typeof OriginHandoffCreateResponse>;
export const OriginHandoffRedeemRequest = z.object({
handoff_id: z
.string()
.regex(/^[A-Za-z0-9_-]{43}$/u)
.describe('Identifier returned when the handoff was created'),
nonce: z
.string()
.min(16)
.max(256)
.regex(Base64UrlPattern)
.describe('Nonce whose SHA-256 digest was sent when the handoff was created'),
});
export type OriginHandoffRedeemRequest = z.infer<typeof OriginHandoffRedeemRequest>;
export const OriginHandoffRedeemResponse = z.object({
payload: z.string().describe('Encrypted client state encoded as base64url'),
});
export type OriginHandoffRedeemResponse = z.infer<typeof OriginHandoffRedeemResponse>;
@@ -1,5 +1,9 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {
DomainMigrationAssignmentResponse,
INERT_DOMAIN_MIGRATION_ASSIGNMENT,
} from '@fluxer/schema/src/domains/admin/DomainMigrationSchemas';
import {
INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT,
VoiceNoiseSuppressionAssignmentResponse,
@@ -42,6 +46,7 @@ export type ExperimentDeliveryConfigResponse = z.infer<typeof ExperimentDelivery
const ExperimentAssignmentsSchema = z.object({
voice_noise_suppression: VoiceNoiseSuppressionAssignmentResponse.optional(),
domain_migration: DomainMigrationAssignmentResponse.optional(),
});
export const ExperimentAssignmentsResponse = z.object({
@@ -63,3 +68,9 @@ export function readVoiceNoiseSuppressionAssignment(
): VoiceNoiseSuppressionAssignmentResponse {
return response.assignments.voice_noise_suppression ?? INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT;
}
export function readDomainMigrationAssignment(
response: ExperimentAssignmentsResponse,
): DomainMigrationAssignmentResponse {
return response.assignments.domain_migration ?? INERT_DOMAIN_MIGRATION_ASSIGNMENT;
}
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {DomainMigrationDiscoveryResponse} from '@fluxer/schema/src/domains/admin/DomainMigrationSchemas';
import {SsoStatusResponse} from '@fluxer/schema/src/domains/auth/AuthSchemas';
import {createNamedStringLiteralUnion} from '@fluxer/schema/src/primitives/SchemaPrimitives';
import {z} from 'zod';
@@ -187,6 +188,9 @@ export const WellKnownFluxerResponse = z.object({
limits: LimitConfigResponse.describe('Limit configuration with rules and trait definitions'),
push: InstancePushSchema,
app_public: InstanceAppPublicSchema.describe('Public application configuration for client-side features'),
domain_migration: DomainMigrationDiscoveryResponse.optional().describe(
'Web domain migration switch and anonymous rollout, only acted on by official instance clients',
),
});
export type WellKnownFluxerResponse = z.infer<typeof WellKnownFluxerResponse>;
@@ -615,6 +615,7 @@ export const PushSubscribeRequest = z.object({
})
.describe('Encryption keys for the push subscription'),
user_agent: createStringType(1, 1024).optional().describe('The user agent string identifying the client'),
installed_app: z.boolean().optional().describe('Whether the client runs in an installed web app window'),
});
export type PushSubscribeRequest = z.infer<typeof PushSubscribeRequest>;
@@ -629,6 +630,7 @@ export const PushRotateRequest = z.object({
})
.describe('Encryption keys for the new push subscription'),
user_agent: createStringType(1, 1024).optional().describe('The user agent string identifying the client'),
installed_app: z.boolean().optional().describe('Whether the client runs in an installed web app window'),
});
export type PushRotateRequest = z.infer<typeof PushRotateRequest>;