feat(telemetry): opt-in admin alert pushes

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