Development #24
@@ -18,6 +18,7 @@ interface AuthData {
|
||||
theme?: string;
|
||||
locale?: string;
|
||||
seenThemesHint?: boolean;
|
||||
telemetryAlerts?: boolean;
|
||||
};
|
||||
roles: string[];
|
||||
phone: string;
|
||||
|
||||
@@ -1,11 +1,46 @@
|
||||
import { useState } from "react";
|
||||
import { Box, Title, Stack, Switch, Button, Text, Group } from "@mantine/core";
|
||||
import { Trans, useLingui } from "@lingui/react/macro";
|
||||
import { useWebPush } from "@/hooks/use-web-push";
|
||||
import { useAuth } from "@/contexts/auth-context";
|
||||
import { useIsAdmin } from "@/features/core/hooks/use-is-admin";
|
||||
import { updateUserTelemetryAlerts } from "@/features/settings/server";
|
||||
import toast from "@/lib/sonner";
|
||||
|
||||
const TelemetryAlertsSwitch = () => {
|
||||
const { t } = useLingui();
|
||||
const { metadata, set } = useAuth();
|
||||
const [saving, setSaving] = useState(false);
|
||||
|
||||
const handleToggle = async (checked: boolean) => {
|
||||
setSaving(true);
|
||||
try {
|
||||
const result = await updateUserTelemetryAlerts({ data: checked });
|
||||
if (result?.metadata) {
|
||||
set({ metadata: result.metadata });
|
||||
}
|
||||
} catch {
|
||||
toast.error(t`Couldn't update telemetry alerts`);
|
||||
} finally {
|
||||
setSaving(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Switch
|
||||
checked={metadata?.telemetryAlerts === true}
|
||||
onChange={(e) => handleToggle(e.currentTarget.checked)}
|
||||
disabled={saving}
|
||||
label={t`Telemetry alerts`}
|
||||
description={t`Error spikes and failing functions, pushed to this account`}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export function NotificationsSection() {
|
||||
const { supported, configured, permission, subscribed, busy, enable, disable, sendTest } =
|
||||
useWebPush();
|
||||
const isAdmin = useIsAdmin();
|
||||
const { t } = useLingui();
|
||||
|
||||
if (!supported || !configured) {
|
||||
@@ -64,6 +99,7 @@ export function NotificationsSection() {
|
||||
disabled={busy}
|
||||
label={t`Enable notifications on this device`}
|
||||
/>
|
||||
{subscribed && isAdmin && <TelemetryAlertsSwitch />}
|
||||
{subscribed && (
|
||||
<Group>
|
||||
<Button
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import { createServerFn } from "@tanstack/react-start";
|
||||
import { superTokensFunctionMiddleware } from "@/utils/supertokens";
|
||||
import {
|
||||
superTokensAdminFunctionMiddleware,
|
||||
superTokensFunctionMiddleware,
|
||||
} from "@/utils/supertokens";
|
||||
|
||||
// Whitelists: these values flow into Mantine's primaryColor / the
|
||||
// data-mantine-color-scheme attribute — an unknown value crash-loops or
|
||||
@@ -139,3 +142,26 @@ export const updateUserAccentColor = createServerFn({ method: "POST" })
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
export const updateUserTelemetryAlerts = createServerFn({ method: "POST" })
|
||||
.validator((data: boolean) => data === true)
|
||||
.middleware([superTokensAdminFunctionMiddleware])
|
||||
.handler(async ({ context, data }) => {
|
||||
const { userAuthId, metadata } = context;
|
||||
if (!userAuthId) return;
|
||||
|
||||
const { updateUserMetadataFields } = await import(
|
||||
"@/utils/supertokens-core.server"
|
||||
);
|
||||
|
||||
await updateUserMetadataFields(userAuthId, {
|
||||
telemetryAlerts: data,
|
||||
});
|
||||
|
||||
return {
|
||||
metadata: {
|
||||
...metadata,
|
||||
telemetryAlerts: data,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
@@ -34,11 +34,15 @@ const getAdminPlayerIds = async (): Promise<string[]> => {
|
||||
const { ensureSuperTokensBackend } = await import("@/lib/supertokens/server");
|
||||
ensureSuperTokensBackend();
|
||||
const UserRoles = (await import("supertokens-node/recipe/userroles")).default;
|
||||
const UserMetadata = (await import("supertokens-node/recipe/usermetadata")).default;
|
||||
const response = await UserRoles.getUsersThatHaveRole("public", ADMIN_ROLE);
|
||||
const users = response.status === "OK" ? response.users : [];
|
||||
const playerIds: string[] = [];
|
||||
for (const userId of users) {
|
||||
try {
|
||||
// Opt-in: only admins who enabled telemetry alerts in settings.
|
||||
const { metadata } = await UserMetadata.getUserMetadata(userId);
|
||||
if (metadata?.telemetryAlerts !== true) continue;
|
||||
const player = await pbAdmin.getPlayerByAuthId(userId);
|
||||
if (player) playerIds.push(player.id);
|
||||
} catch {}
|
||||
|
||||
+33
-21
@@ -105,7 +105,7 @@ msgid "{0} Badge Holders"
|
||||
msgstr "{0} Abzeichen-Inhaber"
|
||||
|
||||
#. placeholder {0}: recentErrors.totalItems
|
||||
#: src/lib/telemetry/alerts.server.ts:104
|
||||
#: src/lib/telemetry/alerts.server.ts:110
|
||||
msgid "{0} client errors in the last 15 minutes"
|
||||
msgstr "{0} Client-Fehler in den letzten 15 Minuten"
|
||||
|
||||
@@ -167,7 +167,7 @@ msgstr "{count, plural, one {Spieler (#)} other {Spieler (#)}}"
|
||||
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
|
||||
msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:167
|
||||
#: src/lib/telemetry/alerts.server.ts:173
|
||||
msgid "{deniedCount} denied admin access attempts in the last 15 minutes"
|
||||
msgstr "{deniedCount} abgelehnte Admin-Zugriffsversuche in den letzten 15 Minuten"
|
||||
|
||||
@@ -206,7 +206,7 @@ msgstr "{n, plural, one {# garantiertes Spiel} other {# garantierte Spiele}}"
|
||||
msgid "{n, plural, one {# wildcard} other {# wildcards}}"
|
||||
msgstr "{n, plural, one {# Wildcard} other {# Wildcards}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:154
|
||||
#: src/lib/telemetry/alerts.server.ts:160
|
||||
msgid "{name} failed {count} times in the last 15 minutes"
|
||||
msgstr "{name} ist in den letzten 15 Minuten {count} Mal fehlgeschlagen"
|
||||
|
||||
@@ -392,7 +392,7 @@ msgid "A code was sent to +1 ({0}) {1}-{2}"
|
||||
msgstr "Ein Code wurde an +1 ({0}) {1}-{2} gesendet"
|
||||
|
||||
#. placeholder {0}: info.message.slice(0, 120)
|
||||
#: src/lib/telemetry/alerts.server.ts:125
|
||||
#: src/lib/telemetry/alerts.server.ts:131
|
||||
msgid "A new error appeared: {0}"
|
||||
msgstr "Ein neuer Fehler ist aufgetreten: {0}"
|
||||
|
||||
@@ -718,7 +718,7 @@ msgstr "Knete"
|
||||
msgid "Clear selected player"
|
||||
msgstr "Ausgewählten Spieler entfernen"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:103
|
||||
#: src/lib/telemetry/alerts.server.ts:109
|
||||
msgid "Client error spike"
|
||||
msgstr "Anstieg von Client-Fehlern"
|
||||
|
||||
@@ -813,18 +813,22 @@ msgstr "Telefonnummer kopieren"
|
||||
msgid "Correct picks are worth more each round"
|
||||
msgstr "Richtige Tipps sind in jeder Runde mehr wert"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:43
|
||||
#: src/features/settings/components/notifications-section.tsx:78
|
||||
msgid "Couldn't disable notifications"
|
||||
msgstr "Benachrichtigungen konnten nicht deaktiviert werden"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:38
|
||||
#: src/features/settings/components/notifications-section.tsx:73
|
||||
msgid "Couldn't enable notifications"
|
||||
msgstr "Benachrichtigungen konnten nicht aktiviert werden"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:50
|
||||
#: src/features/settings/components/notifications-section.tsx:85
|
||||
msgid "Couldn't send test notification"
|
||||
msgstr "Testbenachrichtigung konnte nicht gesendet werden"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:23
|
||||
msgid "Couldn't update telemetry alerts"
|
||||
msgstr "Telemetrie-Benachrichtigungen konnten nicht aktualisiert werden"
|
||||
|
||||
#: src/features/reactions/components/emoji-picker.tsx:17
|
||||
msgid "crane"
|
||||
msgstr "Kranich"
|
||||
@@ -904,7 +908,7 @@ msgstr "Tiefsee"
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:166
|
||||
#: src/lib/telemetry/alerts.server.ts:172
|
||||
msgid "Denied access attempt"
|
||||
msgstr "Abgelehnter Zugriffsversuch"
|
||||
|
||||
@@ -985,7 +989,7 @@ msgstr "Turnier bearbeiten"
|
||||
msgid "Edit Your Prediction"
|
||||
msgstr "Deinen Tipp bearbeiten"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:65
|
||||
#: src/features/settings/components/notifications-section.tsx:100
|
||||
msgid "Enable notifications on this device"
|
||||
msgstr "Benachrichtigungen auf diesem Gerät aktivieren"
|
||||
|
||||
@@ -1097,6 +1101,10 @@ msgstr "Fehlergruppe behoben"
|
||||
msgid "Error Message"
|
||||
msgstr "Fehlermeldung"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
msgid "Error spikes and failing functions, pushed to this account"
|
||||
msgstr "Fehlerspitzen und fehlschlagende Funktionen, als Push an dieses Konto"
|
||||
|
||||
#: src/components/DefaultCatchBoundary.tsx:98
|
||||
msgid "Error: {errorMessage}"
|
||||
msgstr "Fehler: {errorMessage}"
|
||||
@@ -1679,7 +1687,7 @@ msgstr "Nie"
|
||||
msgid "Never active"
|
||||
msgstr "Nie aktiv"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:124
|
||||
#: src/lib/telemetry/alerts.server.ts:130
|
||||
msgid "New client error"
|
||||
msgstr "Neuer Client-Fehler"
|
||||
|
||||
@@ -1834,24 +1842,24 @@ msgstr "Stimmt nicht"
|
||||
msgid "Not right — enter our score"
|
||||
msgstr "Stimmt nicht — unser Ergebnis eingeben"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:18
|
||||
#: src/features/settings/components/notifications-section.tsx:59
|
||||
#: src/features/settings/components/notifications-section.tsx:53
|
||||
#: src/features/settings/components/notifications-section.tsx:94
|
||||
msgid "Notifications"
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
#: src/features/settings/components/notifications-section.tsx:70
|
||||
msgid "Notifications are blocked. Enable them in your browser settings."
|
||||
msgstr "Benachrichtigungen sind blockiert. Aktiviere sie in deinen Browser-Einstellungen."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:21
|
||||
#: src/features/settings/components/notifications-section.tsx:56
|
||||
msgid "Notifications aren't available right now."
|
||||
msgstr "Benachrichtigungen sind gerade nicht verfügbar."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:42
|
||||
#: src/features/settings/components/notifications-section.tsx:77
|
||||
msgid "Notifications disabled on this device"
|
||||
msgstr "Benachrichtigungen auf diesem Gerät deaktiviert"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:32
|
||||
#: src/features/settings/components/notifications-section.tsx:67
|
||||
msgid "Notifications enabled on this device"
|
||||
msgstr "Benachrichtigungen auf diesem Gerät aktiviert"
|
||||
|
||||
@@ -2304,7 +2312,7 @@ msgstr "Wähle deinen Walkout-Song"
|
||||
msgid "Send Code"
|
||||
msgstr "Code senden"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:75
|
||||
#: src/features/settings/components/notifications-section.tsx:111
|
||||
msgid "Send test notification"
|
||||
msgstr "Testbenachrichtigung senden"
|
||||
|
||||
@@ -2313,7 +2321,7 @@ msgstr "Testbenachrichtigung senden"
|
||||
msgid "Series is tied"
|
||||
msgstr "Serie steht unentschieden"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:153
|
||||
#: src/lib/telemetry/alerts.server.ts:159
|
||||
msgid "Server function failing"
|
||||
msgstr "Serverfunktion schlägt fehl"
|
||||
|
||||
@@ -2579,6 +2587,10 @@ msgstr "Teams erfolgreich erstellt!"
|
||||
msgid "Telemetry"
|
||||
msgstr "Telemetrie"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:34
|
||||
msgid "Telemetry alerts"
|
||||
msgstr "Telemetrie-Benachrichtigungen"
|
||||
|
||||
#: src/themes/terminal/manifest.ts:6
|
||||
msgid "Terminal"
|
||||
msgstr "Terminal"
|
||||
@@ -2587,7 +2599,7 @@ msgstr "Terminal"
|
||||
msgid "Test notification — push is working on this device."
|
||||
msgstr "Test-Benachrichtigung — Push funktioniert auf diesem Gerät."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:49
|
||||
#: src/features/settings/components/notifications-section.tsx:84
|
||||
msgid "Test notification sent"
|
||||
msgstr "Test-Benachrichtigung gesendet"
|
||||
|
||||
@@ -2620,7 +2632,7 @@ msgstr "Diese Spieler sind noch nicht gegeneinander angetreten."
|
||||
msgid "These teams have not faced each other yet."
|
||||
msgstr "Diese Teams sind noch nicht gegeneinander angetreten."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:22
|
||||
#: src/features/settings/components/notifications-section.tsx:57
|
||||
msgid "This device doesn't support push notifications. On iOS, install the app to your Home Screen first."
|
||||
msgstr "Dieses Gerät unterstützt keine Push-Benachrichtigungen. Installiere die App unter iOS zuerst auf deinem Home-Bildschirm."
|
||||
|
||||
|
||||
+33
-21
@@ -105,7 +105,7 @@ msgid "{0} Badge Holders"
|
||||
msgstr "{0} Badge Holders"
|
||||
|
||||
#. placeholder {0}: recentErrors.totalItems
|
||||
#: src/lib/telemetry/alerts.server.ts:104
|
||||
#: src/lib/telemetry/alerts.server.ts:110
|
||||
msgid "{0} client errors in the last 15 minutes"
|
||||
msgstr "{0} client errors in the last 15 minutes"
|
||||
|
||||
@@ -167,7 +167,7 @@ msgstr "{count, plural, one {Players (#)} other {Players (#)}}"
|
||||
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
|
||||
msgstr "{count, plural, one {Teams (#)} other {Teams (#)}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:167
|
||||
#: src/lib/telemetry/alerts.server.ts:173
|
||||
msgid "{deniedCount} denied admin access attempts in the last 15 minutes"
|
||||
msgstr "{deniedCount} denied admin access attempts in the last 15 minutes"
|
||||
|
||||
@@ -206,7 +206,7 @@ msgstr "{n, plural, one {# match guaranteed} other {# matches guaranteed}}"
|
||||
msgid "{n, plural, one {# wildcard} other {# wildcards}}"
|
||||
msgstr "{n, plural, one {# wildcard} other {# wildcards}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:154
|
||||
#: src/lib/telemetry/alerts.server.ts:160
|
||||
msgid "{name} failed {count} times in the last 15 minutes"
|
||||
msgstr "{name} failed {count} times in the last 15 minutes"
|
||||
|
||||
@@ -392,7 +392,7 @@ msgid "A code was sent to +1 ({0}) {1}-{2}"
|
||||
msgstr "A code was sent to +1 ({0}) {1}-{2}"
|
||||
|
||||
#. placeholder {0}: info.message.slice(0, 120)
|
||||
#: src/lib/telemetry/alerts.server.ts:125
|
||||
#: src/lib/telemetry/alerts.server.ts:131
|
||||
msgid "A new error appeared: {0}"
|
||||
msgstr "A new error appeared: {0}"
|
||||
|
||||
@@ -718,7 +718,7 @@ msgstr "Claymation"
|
||||
msgid "Clear selected player"
|
||||
msgstr "Clear selected player"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:103
|
||||
#: src/lib/telemetry/alerts.server.ts:109
|
||||
msgid "Client error spike"
|
||||
msgstr "Client error spike"
|
||||
|
||||
@@ -813,18 +813,22 @@ msgstr "Copy phone number"
|
||||
msgid "Correct picks are worth more each round"
|
||||
msgstr "Correct picks are worth more each round"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:43
|
||||
#: src/features/settings/components/notifications-section.tsx:78
|
||||
msgid "Couldn't disable notifications"
|
||||
msgstr "Couldn't disable notifications"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:38
|
||||
#: src/features/settings/components/notifications-section.tsx:73
|
||||
msgid "Couldn't enable notifications"
|
||||
msgstr "Couldn't enable notifications"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:50
|
||||
#: src/features/settings/components/notifications-section.tsx:85
|
||||
msgid "Couldn't send test notification"
|
||||
msgstr "Couldn't send test notification"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:23
|
||||
msgid "Couldn't update telemetry alerts"
|
||||
msgstr "Couldn't update telemetry alerts"
|
||||
|
||||
#: src/features/reactions/components/emoji-picker.tsx:17
|
||||
msgid "crane"
|
||||
msgstr "crane"
|
||||
@@ -904,7 +908,7 @@ msgstr "Deep Sea"
|
||||
msgid "Default"
|
||||
msgstr "Default"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:166
|
||||
#: src/lib/telemetry/alerts.server.ts:172
|
||||
msgid "Denied access attempt"
|
||||
msgstr "Denied access attempt"
|
||||
|
||||
@@ -985,7 +989,7 @@ msgstr "Edit Tournament"
|
||||
msgid "Edit Your Prediction"
|
||||
msgstr "Edit Your Prediction"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:65
|
||||
#: src/features/settings/components/notifications-section.tsx:100
|
||||
msgid "Enable notifications on this device"
|
||||
msgstr "Enable notifications on this device"
|
||||
|
||||
@@ -1097,6 +1101,10 @@ msgstr "Error group resolved"
|
||||
msgid "Error Message"
|
||||
msgstr "Error Message"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
msgid "Error spikes and failing functions, pushed to this account"
|
||||
msgstr "Error spikes and failing functions, pushed to this account"
|
||||
|
||||
#: src/components/DefaultCatchBoundary.tsx:98
|
||||
msgid "Error: {errorMessage}"
|
||||
msgstr "Error: {errorMessage}"
|
||||
@@ -1679,7 +1687,7 @@ msgstr "Never"
|
||||
msgid "Never active"
|
||||
msgstr "Never active"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:124
|
||||
#: src/lib/telemetry/alerts.server.ts:130
|
||||
msgid "New client error"
|
||||
msgstr "New client error"
|
||||
|
||||
@@ -1834,24 +1842,24 @@ msgstr "Not right"
|
||||
msgid "Not right — enter our score"
|
||||
msgstr "Not right — enter our score"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:18
|
||||
#: src/features/settings/components/notifications-section.tsx:59
|
||||
#: src/features/settings/components/notifications-section.tsx:53
|
||||
#: src/features/settings/components/notifications-section.tsx:94
|
||||
msgid "Notifications"
|
||||
msgstr "Notifications"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
#: src/features/settings/components/notifications-section.tsx:70
|
||||
msgid "Notifications are blocked. Enable them in your browser settings."
|
||||
msgstr "Notifications are blocked. Enable them in your browser settings."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:21
|
||||
#: src/features/settings/components/notifications-section.tsx:56
|
||||
msgid "Notifications aren't available right now."
|
||||
msgstr "Notifications aren't available right now."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:42
|
||||
#: src/features/settings/components/notifications-section.tsx:77
|
||||
msgid "Notifications disabled on this device"
|
||||
msgstr "Notifications disabled on this device"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:32
|
||||
#: src/features/settings/components/notifications-section.tsx:67
|
||||
msgid "Notifications enabled on this device"
|
||||
msgstr "Notifications enabled on this device"
|
||||
|
||||
@@ -2304,7 +2312,7 @@ msgstr "Select your walkout song"
|
||||
msgid "Send Code"
|
||||
msgstr "Send Code"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:75
|
||||
#: src/features/settings/components/notifications-section.tsx:111
|
||||
msgid "Send test notification"
|
||||
msgstr "Send test notification"
|
||||
|
||||
@@ -2313,7 +2321,7 @@ msgstr "Send test notification"
|
||||
msgid "Series is tied"
|
||||
msgstr "Series is tied"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:153
|
||||
#: src/lib/telemetry/alerts.server.ts:159
|
||||
msgid "Server function failing"
|
||||
msgstr "Server function failing"
|
||||
|
||||
@@ -2579,6 +2587,10 @@ msgstr "Teams created successfully!"
|
||||
msgid "Telemetry"
|
||||
msgstr "Telemetry"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:34
|
||||
msgid "Telemetry alerts"
|
||||
msgstr "Telemetry alerts"
|
||||
|
||||
#: src/themes/terminal/manifest.ts:6
|
||||
msgid "Terminal"
|
||||
msgstr "Terminal"
|
||||
@@ -2587,7 +2599,7 @@ msgstr "Terminal"
|
||||
msgid "Test notification — push is working on this device."
|
||||
msgstr "Test notification — push is working on this device."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:49
|
||||
#: src/features/settings/components/notifications-section.tsx:84
|
||||
msgid "Test notification sent"
|
||||
msgstr "Test notification sent"
|
||||
|
||||
@@ -2620,7 +2632,7 @@ msgstr "These players have not faced each other yet."
|
||||
msgid "These teams have not faced each other yet."
|
||||
msgstr "These teams have not faced each other yet."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:22
|
||||
#: src/features/settings/components/notifications-section.tsx:57
|
||||
msgid "This device doesn't support push notifications. On iOS, install the app to your Home Screen first."
|
||||
msgstr "This device doesn't support push notifications. On iOS, install the app to your Home Screen first."
|
||||
|
||||
|
||||
+33
-21
@@ -105,7 +105,7 @@ msgid "{0} Badge Holders"
|
||||
msgstr "Poseedores de la insignia {0}"
|
||||
|
||||
#. placeholder {0}: recentErrors.totalItems
|
||||
#: src/lib/telemetry/alerts.server.ts:104
|
||||
#: src/lib/telemetry/alerts.server.ts:110
|
||||
msgid "{0} client errors in the last 15 minutes"
|
||||
msgstr "{0} errores de cliente en los últimos 15 minutos"
|
||||
|
||||
@@ -167,7 +167,7 @@ msgstr "{count, plural, one {Jugadores (#)} other {Jugadores (#)}}"
|
||||
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
|
||||
msgstr "{count, plural, one {Equipos (#)} other {Equipos (#)}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:167
|
||||
#: src/lib/telemetry/alerts.server.ts:173
|
||||
msgid "{deniedCount} denied admin access attempts in the last 15 minutes"
|
||||
msgstr "{deniedCount} intentos de acceso de administrador denegados en los últimos 15 minutos"
|
||||
|
||||
@@ -206,7 +206,7 @@ msgstr "{n, plural, one {# partido garantizado} other {# partidos garantizados}}
|
||||
msgid "{n, plural, one {# wildcard} other {# wildcards}}"
|
||||
msgstr "{n, plural, one {# comodín} other {# comodines}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:154
|
||||
#: src/lib/telemetry/alerts.server.ts:160
|
||||
msgid "{name} failed {count} times in the last 15 minutes"
|
||||
msgstr "{name} falló {count} veces en los últimos 15 minutos"
|
||||
|
||||
@@ -392,7 +392,7 @@ msgid "A code was sent to +1 ({0}) {1}-{2}"
|
||||
msgstr "Se envió un código al +1 ({0}) {1}-{2}"
|
||||
|
||||
#. placeholder {0}: info.message.slice(0, 120)
|
||||
#: src/lib/telemetry/alerts.server.ts:125
|
||||
#: src/lib/telemetry/alerts.server.ts:131
|
||||
msgid "A new error appeared: {0}"
|
||||
msgstr "Apareció un nuevo error: {0}"
|
||||
|
||||
@@ -718,7 +718,7 @@ msgstr "Plastilina"
|
||||
msgid "Clear selected player"
|
||||
msgstr "Quitar jugador seleccionado"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:103
|
||||
#: src/lib/telemetry/alerts.server.ts:109
|
||||
msgid "Client error spike"
|
||||
msgstr "Aumento de errores de cliente"
|
||||
|
||||
@@ -813,18 +813,22 @@ msgstr "Copiar número de teléfono"
|
||||
msgid "Correct picks are worth more each round"
|
||||
msgstr "Los aciertos valen más en cada ronda"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:43
|
||||
#: src/features/settings/components/notifications-section.tsx:78
|
||||
msgid "Couldn't disable notifications"
|
||||
msgstr "No se pudieron desactivar las notificaciones"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:38
|
||||
#: src/features/settings/components/notifications-section.tsx:73
|
||||
msgid "Couldn't enable notifications"
|
||||
msgstr "No se pudieron activar las notificaciones"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:50
|
||||
#: src/features/settings/components/notifications-section.tsx:85
|
||||
msgid "Couldn't send test notification"
|
||||
msgstr "No se pudo enviar la notificación de prueba"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:23
|
||||
msgid "Couldn't update telemetry alerts"
|
||||
msgstr "No se pudieron actualizar las alertas de telemetría"
|
||||
|
||||
#: src/features/reactions/components/emoji-picker.tsx:17
|
||||
msgid "crane"
|
||||
msgstr "grulla"
|
||||
@@ -904,7 +908,7 @@ msgstr "Mar Profundo"
|
||||
msgid "Default"
|
||||
msgstr "Predeterminado"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:166
|
||||
#: src/lib/telemetry/alerts.server.ts:172
|
||||
msgid "Denied access attempt"
|
||||
msgstr "Intento de acceso denegado"
|
||||
|
||||
@@ -985,7 +989,7 @@ msgstr "Editar torneo"
|
||||
msgid "Edit Your Prediction"
|
||||
msgstr "Editar tu predicción"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:65
|
||||
#: src/features/settings/components/notifications-section.tsx:100
|
||||
msgid "Enable notifications on this device"
|
||||
msgstr "Activa las notificaciones en este dispositivo"
|
||||
|
||||
@@ -1097,6 +1101,10 @@ msgstr "Grupo de errores resuelto"
|
||||
msgid "Error Message"
|
||||
msgstr "Mensaje de error"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
msgid "Error spikes and failing functions, pushed to this account"
|
||||
msgstr "Picos de errores y funciones fallando, enviados a esta cuenta"
|
||||
|
||||
#: src/components/DefaultCatchBoundary.tsx:98
|
||||
msgid "Error: {errorMessage}"
|
||||
msgstr "Error: {errorMessage}"
|
||||
@@ -1679,7 +1687,7 @@ msgstr "Nunca"
|
||||
msgid "Never active"
|
||||
msgstr "Nunca activo"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:124
|
||||
#: src/lib/telemetry/alerts.server.ts:130
|
||||
msgid "New client error"
|
||||
msgstr "Nuevo error de cliente"
|
||||
|
||||
@@ -1834,24 +1842,24 @@ msgstr "Incorrecto"
|
||||
msgid "Not right — enter our score"
|
||||
msgstr "Incorrecto — ingresa nuestro marcador"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:18
|
||||
#: src/features/settings/components/notifications-section.tsx:59
|
||||
#: src/features/settings/components/notifications-section.tsx:53
|
||||
#: src/features/settings/components/notifications-section.tsx:94
|
||||
msgid "Notifications"
|
||||
msgstr "Notificaciones"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
#: src/features/settings/components/notifications-section.tsx:70
|
||||
msgid "Notifications are blocked. Enable them in your browser settings."
|
||||
msgstr "Las notificaciones están bloqueadas. Actívalas en la configuración de tu navegador."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:21
|
||||
#: src/features/settings/components/notifications-section.tsx:56
|
||||
msgid "Notifications aren't available right now."
|
||||
msgstr "Las notificaciones no están disponibles por ahora."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:42
|
||||
#: src/features/settings/components/notifications-section.tsx:77
|
||||
msgid "Notifications disabled on this device"
|
||||
msgstr "Notificaciones desactivadas en este dispositivo"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:32
|
||||
#: src/features/settings/components/notifications-section.tsx:67
|
||||
msgid "Notifications enabled on this device"
|
||||
msgstr "Notificaciones activadas en este dispositivo"
|
||||
|
||||
@@ -2304,7 +2312,7 @@ msgstr "Selecciona tu canción de entrada"
|
||||
msgid "Send Code"
|
||||
msgstr "Enviar código"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:75
|
||||
#: src/features/settings/components/notifications-section.tsx:111
|
||||
msgid "Send test notification"
|
||||
msgstr "Enviar notificación de prueba"
|
||||
|
||||
@@ -2313,7 +2321,7 @@ msgstr "Enviar notificación de prueba"
|
||||
msgid "Series is tied"
|
||||
msgstr "La serie está empatada"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:153
|
||||
#: src/lib/telemetry/alerts.server.ts:159
|
||||
msgid "Server function failing"
|
||||
msgstr "Función del servidor fallando"
|
||||
|
||||
@@ -2579,6 +2587,10 @@ msgstr "¡Equipos creados exitosamente!"
|
||||
msgid "Telemetry"
|
||||
msgstr "Telemetría"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:34
|
||||
msgid "Telemetry alerts"
|
||||
msgstr "Alertas de telemetría"
|
||||
|
||||
#: src/themes/terminal/manifest.ts:6
|
||||
msgid "Terminal"
|
||||
msgstr "Terminal"
|
||||
@@ -2587,7 +2599,7 @@ msgstr "Terminal"
|
||||
msgid "Test notification — push is working on this device."
|
||||
msgstr "Notificación de prueba: las notificaciones push funcionan en este dispositivo."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:49
|
||||
#: src/features/settings/components/notifications-section.tsx:84
|
||||
msgid "Test notification sent"
|
||||
msgstr "Notificación de prueba enviada"
|
||||
|
||||
@@ -2620,7 +2632,7 @@ msgstr "Estos jugadores aún no se han enfrentado."
|
||||
msgid "These teams have not faced each other yet."
|
||||
msgstr "Estos equipos aún no se han enfrentado."
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:22
|
||||
#: src/features/settings/components/notifications-section.tsx:57
|
||||
msgid "This device doesn't support push notifications. On iOS, install the app to your Home Screen first."
|
||||
msgstr "Este dispositivo no admite notificaciones push. En iOS, primero instala la app en tu pantalla de inicio."
|
||||
|
||||
|
||||
+33
-21
@@ -105,7 +105,7 @@ msgid "{0} Badge Holders"
|
||||
msgstr "{0}バッジ保有者"
|
||||
|
||||
#. placeholder {0}: recentErrors.totalItems
|
||||
#: src/lib/telemetry/alerts.server.ts:104
|
||||
#: src/lib/telemetry/alerts.server.ts:110
|
||||
msgid "{0} client errors in the last 15 minutes"
|
||||
msgstr "過去15分間に{0}件のクライアントエラーが発生しました"
|
||||
|
||||
@@ -167,7 +167,7 @@ msgstr "{count, plural, one {プレイヤー(#)} other {プレイヤー(#
|
||||
msgid "{count, plural, one {Teams (#)} other {Teams (#)}}"
|
||||
msgstr "{count, plural, one {チーム(#)} other {チーム(#)}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:167
|
||||
#: src/lib/telemetry/alerts.server.ts:173
|
||||
msgid "{deniedCount} denied admin access attempts in the last 15 minutes"
|
||||
msgstr "過去15分間に{deniedCount}件の管理者アクセス拒否がありました"
|
||||
|
||||
@@ -206,7 +206,7 @@ msgstr "{n, plural, one {#試合保証} other {#試合保証}}"
|
||||
msgid "{n, plural, one {# wildcard} other {# wildcards}}"
|
||||
msgstr "{n, plural, one {#ワイルドカード} other {#ワイルドカード}}"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:154
|
||||
#: src/lib/telemetry/alerts.server.ts:160
|
||||
msgid "{name} failed {count} times in the last 15 minutes"
|
||||
msgstr "{name}が過去15分間に{count}回失敗しました"
|
||||
|
||||
@@ -392,7 +392,7 @@ msgid "A code was sent to +1 ({0}) {1}-{2}"
|
||||
msgstr "認証コードを +1 ({0}) {1}-{2} に送信しました"
|
||||
|
||||
#. placeholder {0}: info.message.slice(0, 120)
|
||||
#: src/lib/telemetry/alerts.server.ts:125
|
||||
#: src/lib/telemetry/alerts.server.ts:131
|
||||
msgid "A new error appeared: {0}"
|
||||
msgstr "新しいエラーが発生しました: {0}"
|
||||
|
||||
@@ -718,7 +718,7 @@ msgstr "クレイ"
|
||||
msgid "Clear selected player"
|
||||
msgstr "選択したプレイヤーを解除"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:103
|
||||
#: src/lib/telemetry/alerts.server.ts:109
|
||||
msgid "Client error spike"
|
||||
msgstr "クライアントエラー急増"
|
||||
|
||||
@@ -813,18 +813,22 @@ msgstr "電話番号をコピー"
|
||||
msgid "Correct picks are worth more each round"
|
||||
msgstr "予想が当たると、ラウンドが進むほど得点がアップします"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:43
|
||||
#: src/features/settings/components/notifications-section.tsx:78
|
||||
msgid "Couldn't disable notifications"
|
||||
msgstr "通知を無効にできませんでした"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:38
|
||||
#: src/features/settings/components/notifications-section.tsx:73
|
||||
msgid "Couldn't enable notifications"
|
||||
msgstr "通知を有効にできませんでした"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:50
|
||||
#: src/features/settings/components/notifications-section.tsx:85
|
||||
msgid "Couldn't send test notification"
|
||||
msgstr "テスト通知を送信できませんでした"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:23
|
||||
msgid "Couldn't update telemetry alerts"
|
||||
msgstr "テレメトリーアラートを更新できませんでした"
|
||||
|
||||
#: src/features/reactions/components/emoji-picker.tsx:17
|
||||
msgid "crane"
|
||||
msgstr "鶴"
|
||||
@@ -904,7 +908,7 @@ msgstr "深海"
|
||||
msgid "Default"
|
||||
msgstr "デフォルト"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:166
|
||||
#: src/lib/telemetry/alerts.server.ts:172
|
||||
msgid "Denied access attempt"
|
||||
msgstr "アクセス拒否の試行"
|
||||
|
||||
@@ -985,7 +989,7 @@ msgstr "トーナメントを編集"
|
||||
msgid "Edit Your Prediction"
|
||||
msgstr "予想を編集"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:65
|
||||
#: src/features/settings/components/notifications-section.tsx:100
|
||||
msgid "Enable notifications on this device"
|
||||
msgstr "このデバイスで通知を有効にする"
|
||||
|
||||
@@ -1097,6 +1101,10 @@ msgstr "エラーグループを解決済みにしました"
|
||||
msgid "Error Message"
|
||||
msgstr "エラーメッセージ"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
msgid "Error spikes and failing functions, pushed to this account"
|
||||
msgstr "エラーの急増や失敗している関数をこのアカウントに通知します"
|
||||
|
||||
#: src/components/DefaultCatchBoundary.tsx:98
|
||||
msgid "Error: {errorMessage}"
|
||||
msgstr "エラー: {errorMessage}"
|
||||
@@ -1679,7 +1687,7 @@ msgstr "なし"
|
||||
msgid "Never active"
|
||||
msgstr "アクティビティなし"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:124
|
||||
#: src/lib/telemetry/alerts.server.ts:130
|
||||
msgid "New client error"
|
||||
msgstr "新しいクライアントエラー"
|
||||
|
||||
@@ -1834,24 +1842,24 @@ msgstr "違う"
|
||||
msgid "Not right — enter our score"
|
||||
msgstr "違う — スコアを入力"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:18
|
||||
#: src/features/settings/components/notifications-section.tsx:59
|
||||
#: src/features/settings/components/notifications-section.tsx:53
|
||||
#: src/features/settings/components/notifications-section.tsx:94
|
||||
msgid "Notifications"
|
||||
msgstr "通知"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:35
|
||||
#: src/features/settings/components/notifications-section.tsx:70
|
||||
msgid "Notifications are blocked. Enable them in your browser settings."
|
||||
msgstr "通知がブロックされています。ブラウザの設定で有効にしてください。"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:21
|
||||
#: src/features/settings/components/notifications-section.tsx:56
|
||||
msgid "Notifications aren't available right now."
|
||||
msgstr "現在、通知は利用できません。"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:42
|
||||
#: src/features/settings/components/notifications-section.tsx:77
|
||||
msgid "Notifications disabled on this device"
|
||||
msgstr "このデバイスでは通知が無効になっています"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:32
|
||||
#: src/features/settings/components/notifications-section.tsx:67
|
||||
msgid "Notifications enabled on this device"
|
||||
msgstr "このデバイスでは通知が有効になっています"
|
||||
|
||||
@@ -2304,7 +2312,7 @@ msgstr "ウォークアウトソングを選択してください"
|
||||
msgid "Send Code"
|
||||
msgstr "コードを送信"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:75
|
||||
#: src/features/settings/components/notifications-section.tsx:111
|
||||
msgid "Send test notification"
|
||||
msgstr "テスト通知を送信"
|
||||
|
||||
@@ -2313,7 +2321,7 @@ msgstr "テスト通知を送信"
|
||||
msgid "Series is tied"
|
||||
msgstr "シリーズはタイです"
|
||||
|
||||
#: src/lib/telemetry/alerts.server.ts:153
|
||||
#: src/lib/telemetry/alerts.server.ts:159
|
||||
msgid "Server function failing"
|
||||
msgstr "サーバー関数が失敗しています"
|
||||
|
||||
@@ -2579,6 +2587,10 @@ msgstr "チームを作成しました!"
|
||||
msgid "Telemetry"
|
||||
msgstr "テレメトリー"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:34
|
||||
msgid "Telemetry alerts"
|
||||
msgstr "テレメトリーアラート"
|
||||
|
||||
#: src/themes/terminal/manifest.ts:6
|
||||
msgid "Terminal"
|
||||
msgstr "ターミナル"
|
||||
@@ -2587,7 +2599,7 @@ msgstr "ターミナル"
|
||||
msgid "Test notification — push is working on this device."
|
||||
msgstr "テスト通知 — このデバイスでプッシュ通知が機能しています。"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:49
|
||||
#: src/features/settings/components/notifications-section.tsx:84
|
||||
msgid "Test notification sent"
|
||||
msgstr "テスト通知を送信しました"
|
||||
|
||||
@@ -2620,7 +2632,7 @@ msgstr "このプレイヤー同士はまだ対戦していません。"
|
||||
msgid "These teams have not faced each other yet."
|
||||
msgstr "このチーム同士はまだ対戦していません。"
|
||||
|
||||
#: src/features/settings/components/notifications-section.tsx:22
|
||||
#: src/features/settings/components/notifications-section.tsx:57
|
||||
msgid "This device doesn't support push notifications. On iOS, install the app to your Home Screen first."
|
||||
msgstr "このデバイスはプッシュ通知に対応していません。iOSの場合は、まずアプリをホーム画面に追加してください。"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user