feat(telemetry): matchup and direction context in timelines; live error groups
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 9s
CI/CD Pipeline / i18n Catalog Check (push) Successful in 47s
CI/CD Pipeline / Build and Push App Docker Image (push) Successful in 2m18s
CI/CD Pipeline / Deploy to Kubernetes (push) Successful in 8m29s

- h2h_viewed carries who-v-who, stats_sorted carries asc/desc via a
  timeline-only context prop
- error browser aggregates raw rows so new groups appear immediately
- catalogs re-extracted for shifted line references
This commit is contained in:
2026-08-27 10:47:57 -07:00
parent 9b51d61519
commit 7bda138d69
11 changed files with 280 additions and 245 deletions
@@ -176,7 +176,12 @@ const MatchDock = ({ match, onClose }: MatchDockProps) => {
variant="subtle"
size="sm"
onClick={() => {
track("h2h_viewed", { source: "match_dock" });
track("h2h_viewed", {
source: "match_dock",
context: [match?.home?.name, match?.away?.name]
.filter(Boolean)
.join(" v "),
});
h2hSheet.open();
}}
aria-label={t`View head-to-head`}
@@ -42,7 +42,10 @@ const MatchCard = ({ match, hideH2H = false }: MatchCardProps) => {
const handleH2HClick = (e: React.MouseEvent) => {
e.stopPropagation();
track("h2h_viewed", { source: "match_card" });
track("h2h_viewed", {
source: "match_card",
context: [match.home?.name, match.away?.name].filter(Boolean).join(" v "),
});
h2hSheet.open();
};
@@ -53,7 +53,12 @@ const LeagueHeadToHead = () => {
setPlayer1Id(playerId);
} else {
setPlayer2Id(playerId);
track("h2h_viewed", { source: "stats" });
const opponent =
allPlayerStats?.find((p) => p.player_id === playerId)?.player_name || "";
track("h2h_viewed", {
source: "stats",
context: [player1Name, opponent].filter(Boolean).join(" v "),
});
h2hSheet.open();
}
};
@@ -293,11 +293,10 @@ const PlayerStatsTable = ({ viewType = 'all' }: PlayerStatsTableProps) => {
}, [navigate]);
const handleSort = (key: SortKey) => {
track("stats_sorted", { value: key });
setSortConfig((prev) => ({
key,
direction: prev.key === key && prev.direction === "desc" ? "asc" : "desc",
}));
const direction =
sortConfig.key === key && sortConfig.direction === "desc" ? "asc" : "desc";
track("stats_sorted", { value: key, context: direction });
setSortConfig({ key, direction });
};
const getSortIcon = (key: SortKey) => {
@@ -55,7 +55,10 @@ const Header = ({ player }: HeaderProps) => {
size="sm"
radius="xl"
onClick={() => {
track("h2h_viewed", { source: "profile" });
track("h2h_viewed", {
source: "profile",
context: [player.first_name, player.last_name].filter(Boolean).join(" "),
});
h2hSheet.open();
}}
w={40}
@@ -218,7 +218,10 @@ export const PredictionEditor: React.FC<PredictionEditorProps> = ({
radius="md"
onClick={() => {
if (activeResolved?.home && activeResolved?.away) {
track("h2h_viewed", { source: "predictions" });
track("h2h_viewed", {
source: "predictions",
context: `${activeResolved.home.name} v ${activeResolved.away.name}`,
});
}
matchupSheet.open();
}}
+53 -36
View File
@@ -73,6 +73,8 @@ const errorGroupsSchema = z.object({
limit: z.number().max(100).optional(),
});
// Aggregates raw rows, not rollups: a brand-new error must appear immediately,
// not on the next rollup tick.
export const getClientErrorGroups = createServerFn()
.validator(errorGroupsSchema)
.middleware([superTokensAdminFunctionMiddleware])
@@ -80,46 +82,60 @@ export const getClientErrorGroups = createServerFn()
toServerResult<ClientErrorGroup[]>(async () => {
const { from, to, includeResolved = false, limit = 50 } = data;
const rollups = await pbAdmin.getRollupRange({
metrics: ["client_error.count"],
from,
to,
});
const toExclusive = new Date(`${to}T00:00:00.000Z`);
toExclusive.setUTCDate(toExclusive.getUTCDate() + 1);
const filter = `created >= '${from} 00:00:00.000Z' && created < '${toExclusive
.toISOString()
.replace("T", " ")}'`;
const countByGroup = new Map<string, number>();
for (const rollup of rollups) {
if (!rollup.dim) continue;
countByGroup.set(rollup.dim, (countByGroup.get(rollup.dim) ?? 0) + rollup.value);
}
const topGroups = [...countByGroup.entries()]
.sort((a, b) => b[1] - a[1])
.slice(0, limit);
const groups: ClientErrorGroup[] = [];
for (const [groupHash, count] of topGroups) {
const latest = await pbAdmin.searchClientErrors({ groupHash, perPage: 1 });
const sample = latest.items[0];
if (!sample) continue;
const resolved = !!sample.resolved;
if (resolved && !includeResolved) continue;
groups.push({
group_hash: groupHash,
count,
lastSeen: sample.created,
resolved,
const byGroup = new Map<string, ClientErrorGroup>();
await pbAdmin.pageCollection<{
group_hash: string;
message: string;
stack?: string;
source?: string;
path?: string;
resolved?: boolean;
created: string;
}>(
"client_errors",
{ filter, fields: "group_hash,message,stack,source,path,resolved,created" },
(rows) => {
for (const row of rows) {
const existing = byGroup.get(row.group_hash);
if (existing) {
existing.count++;
// Paged in created-asc order, so each row is the newest so far.
existing.lastSeen = row.created;
existing.resolved = !!row.resolved;
existing.sample = {
message: row.message,
stack: row.stack,
path: row.path,
source: row.source,
};
} else {
byGroup.set(row.group_hash, {
group_hash: row.group_hash,
count: 1,
lastSeen: row.created,
resolved: !!row.resolved,
sample: {
message: sample.message,
stack: sample.stack,
path: sample.path,
source: sample.source,
message: row.message,
stack: row.stack,
path: row.path,
source: row.source,
},
});
}
}
}
);
return groups;
return [...byGroup.values()]
.filter((group) => includeResolved || !group.resolved)
.sort((a, b) => b.count - a.count)
.slice(0, limit);
})
);
@@ -303,16 +319,17 @@ export const getSessionTimeline = createServerFn()
for (const event of events.items) {
if (event.name.startsWith("vital.")) continue;
const props = event.props as
| { emoji?: string; source?: string; tournament?: string; value?: string }
| { emoji?: string; source?: string; tournament?: string; value?: string; context?: string }
| null
| undefined;
const breakdown =
props?.emoji ?? props?.value ?? props?.source ?? props?.tournament;
const detail = [breakdown, props?.context].filter(Boolean).join(" · ");
entries.push({
ts: event.created,
kind: event.name === "page_view" ? "page_view" : "event",
label: event.name === "page_view" ? event.path || event.route_id || "?" : event.name,
detail: event.name === "page_view" ? undefined : (breakdown ?? event.path),
detail: event.name === "page_view" ? undefined : (detail || event.path),
});
}
+49 -49
View File
@@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/features/matches/components/match-card.tsx:80
#: src/features/matches/components/match-card.tsx:83
msgid " (Losers)"
msgstr " (Verlierer)"
@@ -228,7 +228,7 @@ msgstr "{namesList} und 1 weitere"
msgid "{size}-team knockout"
msgstr "{size}-Team-K.-o.-Runde"
#: src/features/players/components/player-stats-table.tsx:446
#: src/features/players/components/player-stats-table.tsx:445
msgid "* Confidence penalty applied for players with <15 matches"
msgstr "* Vertrauensabschlag für Spieler mit <15 Spielen"
@@ -241,7 +241,7 @@ msgstr "* Falls nötig"
msgid "* PICKS shows correct picks / total picks made"
msgstr "* PICKS zeigt richtige Picks / insgesamt abgegebene Picks"
#: src/features/players/components/player-stats-table.tsx:449
#: src/features/players/components/player-stats-table.tsx:448
msgid "** Not an official rating"
msgstr "** Keine offizielle Wertung"
@@ -254,19 +254,19 @@ msgstr "&"
msgid "#{0}"
msgstr "#{0}"
#: src/features/players/components/player-stats-table.tsx:416
#: src/features/players/components/player-stats-table.tsx:415
msgid "• <0>AC:</0> Average Cups Per Match"
msgstr "• <0>AC:</0> Durchschnittliche Becher pro Spiel"
#: src/features/players/components/player-stats-table.tsx:419
#: src/features/players/components/player-stats-table.tsx:418
msgid "• <0>ACA:</0> Average Cups Against"
msgstr "• <0>ACA:</0> Durchschnittlich kassierte Becher"
#: src/features/players/components/player-stats-table.tsx:413
#: src/features/players/components/player-stats-table.tsx:412
msgid "• <0>ALM:</0> Average Loss Margin"
msgstr "• <0>ALM:</0> Durchschnittlicher Rückstand bei Niederlage"
#: src/features/players/components/player-stats-table.tsx:410
#: src/features/players/components/player-stats-table.tsx:409
msgid "• <0>AWM:</0> Average Win Margin"
msgstr "• <0>AWM:</0> Durchschnittlicher Vorsprung bei Sieg"
@@ -274,15 +274,15 @@ msgstr "• <0>AWM:</0> Durchschnittlicher Vorsprung bei Sieg"
msgid "• <0>Bracket reset:</0> only picked if your bracket triggers it — worth double the Final"
msgstr "• <0>Bracket-Reset:</0> wird nur gewertet, wenn dein Bracket ihn auslöst — zählt doppelt so viel wie das Finale"
#: src/features/players/components/player-stats-table.tsx:425
#: src/features/players/components/player-stats-table.tsx:424
msgid "• <0>CA:</0> Cups Against"
msgstr "• <0>CA:</0> Kassierte Becher"
#: src/features/players/components/player-stats-table.tsx:422
#: src/features/players/components/player-stats-table.tsx:421
msgid "• <0>CF:</0> Cups For"
msgstr "• <0>CF:</0> Erzielte Becher"
#: src/features/players/components/player-stats-table.tsx:404
#: src/features/players/components/player-stats-table.tsx:403
msgid "• <0>L:</0> Losses"
msgstr "• <0>L:</0> Niederlagen"
@@ -290,23 +290,23 @@ msgstr "• <0>L:</0> Niederlagen"
msgid "• <0>Losers bracket:</0> 5, 10, 20, 40…"
msgstr "• <0>Verlierer-Bracket:</0> 5, 10, 20, 40…"
#: src/features/players/components/player-stats-table.tsx:392
#: src/features/players/components/player-stats-table.tsx:391
msgid "• <0>M:</0> Matches"
msgstr "• <0>M:</0> Spiele"
#: src/features/players/components/player-stats-table.tsx:398
#: src/features/players/components/player-stats-table.tsx:397
msgid "• <0>MMR:</0> Matchmaking Rating"
msgstr "• <0>MMR:</0> Matchmaking-Wertung"
#: src/features/players/components/player-stats-table.tsx:395
#: src/features/players/components/player-stats-table.tsx:394
msgid "• <0>T:</0> Tournaments"
msgstr "• <0>T:</0> Turniere"
#: src/features/players/components/player-stats-table.tsx:401
#: src/features/players/components/player-stats-table.tsx:400
msgid "• <0>W:</0> Wins"
msgstr "• <0>W:</0> Siege"
#: src/features/players/components/player-stats-table.tsx:407
#: src/features/players/components/player-stats-table.tsx:406
msgid "• <0>W%:</0> Win Percentage"
msgstr "• <0>W%:</0> Siegquote"
@@ -314,11 +314,11 @@ msgstr "• <0>W%:</0> Siegquote"
msgid "• <0>Winners bracket:</0> 10, 20, 40, 80…"
msgstr "• <0>Gewinner-Bracket:</0> 10, 20, 40, 80…"
#: src/features/players/components/player-stats-table.tsx:437
#: src/features/players/components/player-stats-table.tsx:436
msgid "• Average Cups/Match (25%)"
msgstr "• Durchschnittliche Becher/Spiel (25%)"
#: src/features/players/components/player-stats-table.tsx:440
#: src/features/players/components/player-stats-table.tsx:439
msgid "• Average Win Margin (15%)"
msgstr "• Durchschnittlicher Vorsprung bei Sieg (15%)"
@@ -326,11 +326,11 @@ msgstr "• Durchschnittlicher Vorsprung bei Sieg (15%)"
msgid "• Each correct pick earns points, doubling every round"
msgstr "• Jeder richtige Tipp bringt Punkte, die sich jede Runde verdoppeln"
#: src/features/players/components/player-stats-table.tsx:443
#: src/features/players/components/player-stats-table.tsx:442
msgid "• Match Volume Bonus (10%)"
msgstr "• Match-Volumen-Bonus (10%)"
#: src/features/players/components/player-stats-table.tsx:434
#: src/features/players/components/player-stats-table.tsx:433
msgid "• Win Rate (50%)"
msgstr "• Siegquote (50%)"
@@ -720,7 +720,7 @@ msgstr "Wähle einen Spieler"
msgid "Claymation"
msgstr "Knete"
#: src/features/players/components/league-head-to-head.tsx:102
#: src/features/players/components/league-head-to-head.tsx:107
msgid "Clear selected player"
msgstr "Ausgewählten Spieler entfernen"
@@ -1335,11 +1335,11 @@ msgstr "Hast du schon mal mitgespielt?"
#: src/app/routes/_authed/stats.tsx:56
#: src/features/bracket/components/match-dock.tsx:174
#: src/features/bracket/components/match-dock.tsx:219
#: src/features/matches/components/match-card.tsx:86
#: src/features/matches/components/match-card.tsx:230
#: src/features/players/components/league-head-to-head.tsx:193
#: src/features/players/components/profile/header.tsx:94
#: src/features/bracket/components/match-dock.tsx:224
#: src/features/matches/components/match-card.tsx:89
#: src/features/matches/components/match-card.tsx:233
#: src/features/players/components/league-head-to-head.tsx:198
#: src/features/players/components/profile/header.tsx:97
msgid "Head to Head"
msgstr "Direktvergleich"
@@ -1611,7 +1611,7 @@ msgstr "Match-Verlauf ({totalMatches})"
msgid "Match started!"
msgstr "Match gestartet!"
#: src/features/players/components/player-stats-table.tsx:376
#: src/features/players/components/player-stats-table.tsx:375
#: src/features/players/components/profile/index.tsx:87
#: src/features/players/components/profile/skeleton.tsx:70
#: src/features/teams/components/team-profile/index.tsx:44
@@ -1630,11 +1630,11 @@ msgstr "Matches für Regionals sind ungeordnet"
msgid "Matches Played"
msgstr "Gespielte Matches"
#: src/features/predictions/components/prediction-editor.tsx:249
#: src/features/predictions/components/prediction-editor.tsx:252
msgid "Matchup"
msgstr "Matchup"
#: src/features/predictions/components/prediction-editor.tsx:226
#: src/features/predictions/components/prediction-editor.tsx:229
msgid "Matchup details"
msgstr "Matchup-Details"
@@ -1642,7 +1642,7 @@ msgstr "Matchup-Details"
msgid "MAU"
msgstr "MAU"
#: src/features/players/components/league-head-to-head.tsx:123
#: src/features/players/components/league-head-to-head.tsx:128
msgid "Me"
msgstr "Ich"
@@ -1651,11 +1651,11 @@ msgid "Migrate Badge Progress"
msgstr "Abzeichen-Fortschritt migrieren"
#: src/features/players/components/player-stats-table.tsx:131
#: src/features/players/components/player-stats-table.tsx:356
#: src/features/players/components/player-stats-table.tsx:355
msgid "MMR"
msgstr "MMR"
#: src/features/players/components/player-stats-table.tsx:431
#: src/features/players/components/player-stats-table.tsx:430
msgid "MMR Calculation:"
msgstr "MMR-Berechnung:"
@@ -1775,7 +1775,7 @@ msgstr "Keine Matches geplant"
msgid "No player activity found"
msgstr "Keine Spieleraktivität gefunden"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/league-head-to-head.tsx:156
msgid "No players available"
msgstr "Keine Spieler verfügbar"
@@ -1784,8 +1784,8 @@ msgstr "Keine Spieler verfügbar"
msgid "No players enrolled yet"
msgstr "Noch keine Spieler angemeldet"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/player-stats-table.tsx:486
#: src/features/players/components/league-head-to-head.tsx:156
#: src/features/players/components/player-stats-table.tsx:485
msgid "No players found matching \"{search}\""
msgstr "Keine Spieler gefunden, die zu \"{search}\" passen"
@@ -1818,7 +1818,7 @@ msgstr "Kein Song ausgewählt"
msgid "No state captured"
msgstr "Kein Status erfasst"
#: src/features/players/components/player-stats-table.tsx:319
#: src/features/players/components/player-stats-table.tsx:318
msgid "No Stats Available"
msgstr "Keine Statistiken verfügbar"
@@ -2182,7 +2182,7 @@ msgid "rofl"
msgstr "rofl"
#. placeholder {0}: match.round + 1
#: src/features/matches/components/match-card.tsx:79
#: src/features/matches/components/match-card.tsx:82
msgid "Round {0}"
msgstr "Runde {0}"
@@ -2245,8 +2245,8 @@ msgstr "Nach Songs suchen..."
msgid "Search for teams to enroll..."
msgstr "Teams zum Anmelden suchen..."
#: src/features/players/components/league-head-to-head.tsx:132
#: src/features/players/components/player-stats-table.tsx:332
#: src/features/players/components/league-head-to-head.tsx:137
#: src/features/players/components/player-stats-table.tsx:331
msgid "Search players"
msgstr "Spieler suchen"
@@ -2283,7 +2283,7 @@ msgstr "Abzeichen auswählen"
msgid "Select a device..."
msgstr "Gerät auswählen..."
#: src/features/players/components/league-head-to-head.tsx:112
#: src/features/players/components/league-head-to-head.tsx:117
msgid "Select a player"
msgstr "Wähle einen Spieler"
@@ -2382,7 +2382,7 @@ msgstr "Details anzeigen"
#. placeholder {0}: filteredAndSortedStats.length
#. placeholder {1}: playerStats.length
#: src/features/players/components/player-stats-table.tsx:329
#: src/features/players/components/player-stats-table.tsx:328
msgid "Showing {0} of {1} players"
msgstr "{0} von {1} Spielern angezeigt"
@@ -2434,7 +2434,7 @@ msgstr "Song-Segment darf höchstens 15 Sekunden lang sein"
msgid "Song start time is required"
msgstr "Startzeit des Songs ist erforderlich"
#: src/features/players/components/player-stats-table.tsx:350
#: src/features/players/components/player-stats-table.tsx:349
#: src/features/telemetry/components/shared/search-filter-bar.tsx:102
msgid "Sort:"
msgstr "Sortieren:"
@@ -2489,11 +2489,11 @@ msgstr "Tippen, um zu suchen …"
msgid "Starts in"
msgstr "Beginnt in"
#: src/features/players/components/player-stats-table.tsx:382
#: src/features/players/components/player-stats-table.tsx:381
msgid "Stat abbreviations and MMR info"
msgstr "Stat-Abkürzungen und MMR-Infos"
#: src/features/players/components/player-stats-table.tsx:389
#: src/features/players/components/player-stats-table.tsx:388
msgid "Stat Abbreviations:"
msgstr "Stat-Abkürzungen:"
@@ -2520,7 +2520,7 @@ msgstr "Status"
#: src/components/sheet/slide-panel/slide-panel.tsx:40
#: src/features/login/components/player-prompt/index.tsx:115
#: src/features/login/components/player-prompt/index.tsx:126
#: src/features/predictions/components/prediction-editor.tsx:240
#: src/features/predictions/components/prediction-editor.tsx:243
#: src/features/tournaments/components/edit-rules.tsx:39
msgid "Submit"
msgstr "Absenden"
@@ -2543,7 +2543,7 @@ msgstr "System"
msgid "T"
msgstr "T"
#: src/features/players/components/league-head-to-head.tsx:92
#: src/features/players/components/league-head-to-head.tsx:97
msgid "Tap an opponent below to compare"
msgstr "Tippe unten auf einen Gegner zum Vergleichen"
@@ -2810,7 +2810,7 @@ msgstr "Bevorstehend"
msgid "Update Match"
msgstr "Match aktualisieren"
#: src/features/players/components/profile/header.tsx:89
#: src/features/players/components/profile/header.tsx:92
msgid "Update Name"
msgstr "Namen aktualisieren"
@@ -2853,8 +2853,8 @@ msgstr "Turnierbaum ansehen"
msgid "View Groups"
msgstr "Gruppen ansehen"
#: src/features/bracket/components/match-dock.tsx:182
#: src/features/matches/components/match-card.tsx:91
#: src/features/bracket/components/match-dock.tsx:187
#: src/features/matches/components/match-card.tsx:94
msgid "View head-to-head"
msgstr "Direktvergleich ansehen"
@@ -2935,7 +2935,7 @@ msgstr "Finale der Gewinnerrunde"
#: src/components/stats-overview.tsx:103
#: src/components/stats-overview.tsx:136
#: src/features/players/components/player-stats-table.tsx:366
#: src/features/players/components/player-stats-table.tsx:365
msgid "Wins"
msgstr "Siege"
+49 -49
View File
@@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/features/matches/components/match-card.tsx:80
#: src/features/matches/components/match-card.tsx:83
msgid " (Losers)"
msgstr " (Losers)"
@@ -228,7 +228,7 @@ msgstr "{namesList} and 1 other"
msgid "{size}-team knockout"
msgstr "{size}-team knockout"
#: src/features/players/components/player-stats-table.tsx:446
#: src/features/players/components/player-stats-table.tsx:445
msgid "* Confidence penalty applied for players with <15 matches"
msgstr "* Confidence penalty applied for players with <15 matches"
@@ -241,7 +241,7 @@ msgstr "* If necessary"
msgid "* PICKS shows correct picks / total picks made"
msgstr "* PICKS shows correct picks / total picks made"
#: src/features/players/components/player-stats-table.tsx:449
#: src/features/players/components/player-stats-table.tsx:448
msgid "** Not an official rating"
msgstr "** Not an official rating"
@@ -254,19 +254,19 @@ msgstr "&"
msgid "#{0}"
msgstr "#{0}"
#: src/features/players/components/player-stats-table.tsx:416
#: src/features/players/components/player-stats-table.tsx:415
msgid "• <0>AC:</0> Average Cups Per Match"
msgstr "• <0>AC:</0> Average Cups Per Match"
#: src/features/players/components/player-stats-table.tsx:419
#: src/features/players/components/player-stats-table.tsx:418
msgid "• <0>ACA:</0> Average Cups Against"
msgstr "• <0>ACA:</0> Average Cups Against"
#: src/features/players/components/player-stats-table.tsx:413
#: src/features/players/components/player-stats-table.tsx:412
msgid "• <0>ALM:</0> Average Loss Margin"
msgstr "• <0>ALM:</0> Average Loss Margin"
#: src/features/players/components/player-stats-table.tsx:410
#: src/features/players/components/player-stats-table.tsx:409
msgid "• <0>AWM:</0> Average Win Margin"
msgstr "• <0>AWM:</0> Average Win Margin"
@@ -274,15 +274,15 @@ msgstr "• <0>AWM:</0> Average Win Margin"
msgid "• <0>Bracket reset:</0> only picked if your bracket triggers it — worth double the Final"
msgstr "• <0>Bracket reset:</0> only picked if your bracket triggers it — worth double the Final"
#: src/features/players/components/player-stats-table.tsx:425
#: src/features/players/components/player-stats-table.tsx:424
msgid "• <0>CA:</0> Cups Against"
msgstr "• <0>CA:</0> Cups Against"
#: src/features/players/components/player-stats-table.tsx:422
#: src/features/players/components/player-stats-table.tsx:421
msgid "• <0>CF:</0> Cups For"
msgstr "• <0>CF:</0> Cups For"
#: src/features/players/components/player-stats-table.tsx:404
#: src/features/players/components/player-stats-table.tsx:403
msgid "• <0>L:</0> Losses"
msgstr "• <0>L:</0> Losses"
@@ -290,23 +290,23 @@ msgstr "• <0>L:</0> Losses"
msgid "• <0>Losers bracket:</0> 5, 10, 20, 40…"
msgstr "• <0>Losers bracket:</0> 5, 10, 20, 40…"
#: src/features/players/components/player-stats-table.tsx:392
#: src/features/players/components/player-stats-table.tsx:391
msgid "• <0>M:</0> Matches"
msgstr "• <0>M:</0> Matches"
#: src/features/players/components/player-stats-table.tsx:398
#: src/features/players/components/player-stats-table.tsx:397
msgid "• <0>MMR:</0> Matchmaking Rating"
msgstr "• <0>MMR:</0> Matchmaking Rating"
#: src/features/players/components/player-stats-table.tsx:395
#: src/features/players/components/player-stats-table.tsx:394
msgid "• <0>T:</0> Tournaments"
msgstr "• <0>T:</0> Tournaments"
#: src/features/players/components/player-stats-table.tsx:401
#: src/features/players/components/player-stats-table.tsx:400
msgid "• <0>W:</0> Wins"
msgstr "• <0>W:</0> Wins"
#: src/features/players/components/player-stats-table.tsx:407
#: src/features/players/components/player-stats-table.tsx:406
msgid "• <0>W%:</0> Win Percentage"
msgstr "• <0>W%:</0> Win Percentage"
@@ -314,11 +314,11 @@ msgstr "• <0>W%:</0> Win Percentage"
msgid "• <0>Winners bracket:</0> 10, 20, 40, 80…"
msgstr "• <0>Winners bracket:</0> 10, 20, 40, 80…"
#: src/features/players/components/player-stats-table.tsx:437
#: src/features/players/components/player-stats-table.tsx:436
msgid "• Average Cups/Match (25%)"
msgstr "• Average Cups/Match (25%)"
#: src/features/players/components/player-stats-table.tsx:440
#: src/features/players/components/player-stats-table.tsx:439
msgid "• Average Win Margin (15%)"
msgstr "• Average Win Margin (15%)"
@@ -326,11 +326,11 @@ msgstr "• Average Win Margin (15%)"
msgid "• Each correct pick earns points, doubling every round"
msgstr "• Each correct pick earns points, doubling every round"
#: src/features/players/components/player-stats-table.tsx:443
#: src/features/players/components/player-stats-table.tsx:442
msgid "• Match Volume Bonus (10%)"
msgstr "• Match Volume Bonus (10%)"
#: src/features/players/components/player-stats-table.tsx:434
#: src/features/players/components/player-stats-table.tsx:433
msgid "• Win Rate (50%)"
msgstr "• Win Rate (50%)"
@@ -720,7 +720,7 @@ msgstr "Choose a player"
msgid "Claymation"
msgstr "Claymation"
#: src/features/players/components/league-head-to-head.tsx:102
#: src/features/players/components/league-head-to-head.tsx:107
msgid "Clear selected player"
msgstr "Clear selected player"
@@ -1335,11 +1335,11 @@ msgstr "Have you played before?"
#: src/app/routes/_authed/stats.tsx:56
#: src/features/bracket/components/match-dock.tsx:174
#: src/features/bracket/components/match-dock.tsx:219
#: src/features/matches/components/match-card.tsx:86
#: src/features/matches/components/match-card.tsx:230
#: src/features/players/components/league-head-to-head.tsx:193
#: src/features/players/components/profile/header.tsx:94
#: src/features/bracket/components/match-dock.tsx:224
#: src/features/matches/components/match-card.tsx:89
#: src/features/matches/components/match-card.tsx:233
#: src/features/players/components/league-head-to-head.tsx:198
#: src/features/players/components/profile/header.tsx:97
msgid "Head to Head"
msgstr "Head to Head"
@@ -1611,7 +1611,7 @@ msgstr "Match History ({totalMatches})"
msgid "Match started!"
msgstr "Match started!"
#: src/features/players/components/player-stats-table.tsx:376
#: src/features/players/components/player-stats-table.tsx:375
#: src/features/players/components/profile/index.tsx:87
#: src/features/players/components/profile/skeleton.tsx:70
#: src/features/teams/components/team-profile/index.tsx:44
@@ -1630,11 +1630,11 @@ msgstr "Matches for regionals are unordered"
msgid "Matches Played"
msgstr "Matches Played"
#: src/features/predictions/components/prediction-editor.tsx:249
#: src/features/predictions/components/prediction-editor.tsx:252
msgid "Matchup"
msgstr "Matchup"
#: src/features/predictions/components/prediction-editor.tsx:226
#: src/features/predictions/components/prediction-editor.tsx:229
msgid "Matchup details"
msgstr "Matchup details"
@@ -1642,7 +1642,7 @@ msgstr "Matchup details"
msgid "MAU"
msgstr "MAU"
#: src/features/players/components/league-head-to-head.tsx:123
#: src/features/players/components/league-head-to-head.tsx:128
msgid "Me"
msgstr "Me"
@@ -1651,11 +1651,11 @@ msgid "Migrate Badge Progress"
msgstr "Migrate Badge Progress"
#: src/features/players/components/player-stats-table.tsx:131
#: src/features/players/components/player-stats-table.tsx:356
#: src/features/players/components/player-stats-table.tsx:355
msgid "MMR"
msgstr "MMR"
#: src/features/players/components/player-stats-table.tsx:431
#: src/features/players/components/player-stats-table.tsx:430
msgid "MMR Calculation:"
msgstr "MMR Calculation:"
@@ -1775,7 +1775,7 @@ msgstr "No matches scheduled"
msgid "No player activity found"
msgstr "No player activity found"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/league-head-to-head.tsx:156
msgid "No players available"
msgstr "No players available"
@@ -1784,8 +1784,8 @@ msgstr "No players available"
msgid "No players enrolled yet"
msgstr "No players enrolled yet"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/player-stats-table.tsx:486
#: src/features/players/components/league-head-to-head.tsx:156
#: src/features/players/components/player-stats-table.tsx:485
msgid "No players found matching \"{search}\""
msgstr "No players found matching \"{search}\""
@@ -1818,7 +1818,7 @@ msgstr "No song selected"
msgid "No state captured"
msgstr "No state captured"
#: src/features/players/components/player-stats-table.tsx:319
#: src/features/players/components/player-stats-table.tsx:318
msgid "No Stats Available"
msgstr "No Stats Available"
@@ -2182,7 +2182,7 @@ msgid "rofl"
msgstr "rofl"
#. placeholder {0}: match.round + 1
#: src/features/matches/components/match-card.tsx:79
#: src/features/matches/components/match-card.tsx:82
msgid "Round {0}"
msgstr "Round {0}"
@@ -2245,8 +2245,8 @@ msgstr "Search for songs..."
msgid "Search for teams to enroll..."
msgstr "Search for teams to enroll..."
#: src/features/players/components/league-head-to-head.tsx:132
#: src/features/players/components/player-stats-table.tsx:332
#: src/features/players/components/league-head-to-head.tsx:137
#: src/features/players/components/player-stats-table.tsx:331
msgid "Search players"
msgstr "Search players"
@@ -2283,7 +2283,7 @@ msgstr "Select a badge"
msgid "Select a device..."
msgstr "Select a device..."
#: src/features/players/components/league-head-to-head.tsx:112
#: src/features/players/components/league-head-to-head.tsx:117
msgid "Select a player"
msgstr "Select a player"
@@ -2382,7 +2382,7 @@ msgstr "Show details"
#. placeholder {0}: filteredAndSortedStats.length
#. placeholder {1}: playerStats.length
#: src/features/players/components/player-stats-table.tsx:329
#: src/features/players/components/player-stats-table.tsx:328
msgid "Showing {0} of {1} players"
msgstr "Showing {0} of {1} players"
@@ -2434,7 +2434,7 @@ msgstr "Song segment must be no more than 15 seconds"
msgid "Song start time is required"
msgstr "Song start time is required"
#: src/features/players/components/player-stats-table.tsx:350
#: src/features/players/components/player-stats-table.tsx:349
#: src/features/telemetry/components/shared/search-filter-bar.tsx:102
msgid "Sort:"
msgstr "Sort:"
@@ -2489,11 +2489,11 @@ msgstr "Start typing to search..."
msgid "Starts in"
msgstr "Starts in"
#: src/features/players/components/player-stats-table.tsx:382
#: src/features/players/components/player-stats-table.tsx:381
msgid "Stat abbreviations and MMR info"
msgstr "Stat abbreviations and MMR info"
#: src/features/players/components/player-stats-table.tsx:389
#: src/features/players/components/player-stats-table.tsx:388
msgid "Stat Abbreviations:"
msgstr "Stat Abbreviations:"
@@ -2520,7 +2520,7 @@ msgstr "Status"
#: src/components/sheet/slide-panel/slide-panel.tsx:40
#: src/features/login/components/player-prompt/index.tsx:115
#: src/features/login/components/player-prompt/index.tsx:126
#: src/features/predictions/components/prediction-editor.tsx:240
#: src/features/predictions/components/prediction-editor.tsx:243
#: src/features/tournaments/components/edit-rules.tsx:39
msgid "Submit"
msgstr "Submit"
@@ -2543,7 +2543,7 @@ msgstr "System"
msgid "T"
msgstr "T"
#: src/features/players/components/league-head-to-head.tsx:92
#: src/features/players/components/league-head-to-head.tsx:97
msgid "Tap an opponent below to compare"
msgstr "Tap an opponent below to compare"
@@ -2810,7 +2810,7 @@ msgstr "Upcoming"
msgid "Update Match"
msgstr "Update Match"
#: src/features/players/components/profile/header.tsx:89
#: src/features/players/components/profile/header.tsx:92
msgid "Update Name"
msgstr "Update Name"
@@ -2853,8 +2853,8 @@ msgstr "View Bracket"
msgid "View Groups"
msgstr "View Groups"
#: src/features/bracket/components/match-dock.tsx:182
#: src/features/matches/components/match-card.tsx:91
#: src/features/bracket/components/match-dock.tsx:187
#: src/features/matches/components/match-card.tsx:94
msgid "View head-to-head"
msgstr "View head-to-head"
@@ -2935,7 +2935,7 @@ msgstr "Winners Bracket Final"
#: src/components/stats-overview.tsx:103
#: src/components/stats-overview.tsx:136
#: src/features/players/components/player-stats-table.tsx:366
#: src/features/players/components/player-stats-table.tsx:365
msgid "Wins"
msgstr "Wins"
+49 -49
View File
@@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/features/matches/components/match-card.tsx:80
#: src/features/matches/components/match-card.tsx:83
msgid " (Losers)"
msgstr " (Perdedores)"
@@ -228,7 +228,7 @@ msgstr "{namesList} y 1 más"
msgid "{size}-team knockout"
msgstr "Eliminación directa de {size} equipos"
#: src/features/players/components/player-stats-table.tsx:446
#: src/features/players/components/player-stats-table.tsx:445
msgid "* Confidence penalty applied for players with <15 matches"
msgstr "* Se aplica una penalización de confianza a jugadores con menos de 15 partidos"
@@ -241,7 +241,7 @@ msgstr "* Si es necesario"
msgid "* PICKS shows correct picks / total picks made"
msgstr "* PICKS muestra aciertos / total de pronósticos realizados"
#: src/features/players/components/player-stats-table.tsx:449
#: src/features/players/components/player-stats-table.tsx:448
msgid "** Not an official rating"
msgstr "** No es una calificación oficial"
@@ -254,19 +254,19 @@ msgstr "&"
msgid "#{0}"
msgstr "#{0}"
#: src/features/players/components/player-stats-table.tsx:416
#: src/features/players/components/player-stats-table.tsx:415
msgid "• <0>AC:</0> Average Cups Per Match"
msgstr "• <0>AC:</0> Promedio de Vasos por Partido"
#: src/features/players/components/player-stats-table.tsx:419
#: src/features/players/components/player-stats-table.tsx:418
msgid "• <0>ACA:</0> Average Cups Against"
msgstr "• <0>ACA:</0> Promedio de Vasos en Contra"
#: src/features/players/components/player-stats-table.tsx:413
#: src/features/players/components/player-stats-table.tsx:412
msgid "• <0>ALM:</0> Average Loss Margin"
msgstr "• <0>ALM:</0> Margen Promedio de Derrota"
#: src/features/players/components/player-stats-table.tsx:410
#: src/features/players/components/player-stats-table.tsx:409
msgid "• <0>AWM:</0> Average Win Margin"
msgstr "• <0>AWM:</0> Margen Promedio de Victoria"
@@ -274,15 +274,15 @@ msgstr "• <0>AWM:</0> Margen Promedio de Victoria"
msgid "• <0>Bracket reset:</0> only picked if your bracket triggers it — worth double the Final"
msgstr "• <0>Reinicio de bracket:</0> solo se selecciona si tu bracket lo activa — vale el doble de la Final"
#: src/features/players/components/player-stats-table.tsx:425
#: src/features/players/components/player-stats-table.tsx:424
msgid "• <0>CA:</0> Cups Against"
msgstr "• <0>VC:</0> Vasos en Contra"
#: src/features/players/components/player-stats-table.tsx:422
#: src/features/players/components/player-stats-table.tsx:421
msgid "• <0>CF:</0> Cups For"
msgstr "• <0>VF:</0> Vasos a Favor"
#: src/features/players/components/player-stats-table.tsx:404
#: src/features/players/components/player-stats-table.tsx:403
msgid "• <0>L:</0> Losses"
msgstr "• <0>D:</0> Derrotas"
@@ -290,23 +290,23 @@ msgstr "• <0>D:</0> Derrotas"
msgid "• <0>Losers bracket:</0> 5, 10, 20, 40…"
msgstr "• <0>Bracket de perdedores:</0> 5, 10, 20, 40…"
#: src/features/players/components/player-stats-table.tsx:392
#: src/features/players/components/player-stats-table.tsx:391
msgid "• <0>M:</0> Matches"
msgstr "• <0>J:</0> Partidos"
#: src/features/players/components/player-stats-table.tsx:398
#: src/features/players/components/player-stats-table.tsx:397
msgid "• <0>MMR:</0> Matchmaking Rating"
msgstr "• <0>MMR:</0> Calificación de Emparejamiento"
#: src/features/players/components/player-stats-table.tsx:395
#: src/features/players/components/player-stats-table.tsx:394
msgid "• <0>T:</0> Tournaments"
msgstr "• <0>T:</0> Torneos"
#: src/features/players/components/player-stats-table.tsx:401
#: src/features/players/components/player-stats-table.tsx:400
msgid "• <0>W:</0> Wins"
msgstr "• <0>V:</0> Victorias"
#: src/features/players/components/player-stats-table.tsx:407
#: src/features/players/components/player-stats-table.tsx:406
msgid "• <0>W%:</0> Win Percentage"
msgstr "• <0>V%:</0> Porcentaje de Victorias"
@@ -314,11 +314,11 @@ msgstr "• <0>V%:</0> Porcentaje de Victorias"
msgid "• <0>Winners bracket:</0> 10, 20, 40, 80…"
msgstr "• <0>Bracket de ganadores:</0> 10, 20, 40, 80…"
#: src/features/players/components/player-stats-table.tsx:437
#: src/features/players/components/player-stats-table.tsx:436
msgid "• Average Cups/Match (25%)"
msgstr "• Promedio de Vasos/Partido (25%)"
#: src/features/players/components/player-stats-table.tsx:440
#: src/features/players/components/player-stats-table.tsx:439
msgid "• Average Win Margin (15%)"
msgstr "• Margen Promedio de Victoria (15%)"
@@ -326,11 +326,11 @@ msgstr "• Margen Promedio de Victoria (15%)"
msgid "• Each correct pick earns points, doubling every round"
msgstr "• Cada acierto suma puntos, y se duplican cada ronda"
#: src/features/players/components/player-stats-table.tsx:443
#: src/features/players/components/player-stats-table.tsx:442
msgid "• Match Volume Bonus (10%)"
msgstr "• Bono por Volumen de Partidos (10%)"
#: src/features/players/components/player-stats-table.tsx:434
#: src/features/players/components/player-stats-table.tsx:433
msgid "• Win Rate (50%)"
msgstr "• Porcentaje de Victorias (50%)"
@@ -720,7 +720,7 @@ msgstr "Elige un jugador"
msgid "Claymation"
msgstr "Plastilina"
#: src/features/players/components/league-head-to-head.tsx:102
#: src/features/players/components/league-head-to-head.tsx:107
msgid "Clear selected player"
msgstr "Quitar jugador seleccionado"
@@ -1335,11 +1335,11 @@ msgstr "¿Ya has jugado antes?"
#: src/app/routes/_authed/stats.tsx:56
#: src/features/bracket/components/match-dock.tsx:174
#: src/features/bracket/components/match-dock.tsx:219
#: src/features/matches/components/match-card.tsx:86
#: src/features/matches/components/match-card.tsx:230
#: src/features/players/components/league-head-to-head.tsx:193
#: src/features/players/components/profile/header.tsx:94
#: src/features/bracket/components/match-dock.tsx:224
#: src/features/matches/components/match-card.tsx:89
#: src/features/matches/components/match-card.tsx:233
#: src/features/players/components/league-head-to-head.tsx:198
#: src/features/players/components/profile/header.tsx:97
msgid "Head to Head"
msgstr "Cara a cara"
@@ -1611,7 +1611,7 @@ msgstr "Historial de partidos ({totalMatches})"
msgid "Match started!"
msgstr "¡Empezó el partido!"
#: src/features/players/components/player-stats-table.tsx:376
#: src/features/players/components/player-stats-table.tsx:375
#: src/features/players/components/profile/index.tsx:87
#: src/features/players/components/profile/skeleton.tsx:70
#: src/features/teams/components/team-profile/index.tsx:44
@@ -1630,11 +1630,11 @@ msgstr "Los partidos de regionales no tienen un orden específico"
msgid "Matches Played"
msgstr "Partidos jugados"
#: src/features/predictions/components/prediction-editor.tsx:249
#: src/features/predictions/components/prediction-editor.tsx:252
msgid "Matchup"
msgstr "Enfrentamiento"
#: src/features/predictions/components/prediction-editor.tsx:226
#: src/features/predictions/components/prediction-editor.tsx:229
msgid "Matchup details"
msgstr "Detalles del enfrentamiento"
@@ -1642,7 +1642,7 @@ msgstr "Detalles del enfrentamiento"
msgid "MAU"
msgstr "MAU"
#: src/features/players/components/league-head-to-head.tsx:123
#: src/features/players/components/league-head-to-head.tsx:128
msgid "Me"
msgstr "Yo"
@@ -1651,11 +1651,11 @@ msgid "Migrate Badge Progress"
msgstr "Migrar progreso de insignias"
#: src/features/players/components/player-stats-table.tsx:131
#: src/features/players/components/player-stats-table.tsx:356
#: src/features/players/components/player-stats-table.tsx:355
msgid "MMR"
msgstr "MMR"
#: src/features/players/components/player-stats-table.tsx:431
#: src/features/players/components/player-stats-table.tsx:430
msgid "MMR Calculation:"
msgstr "Cálculo de MMR:"
@@ -1775,7 +1775,7 @@ msgstr "No hay partidos programados"
msgid "No player activity found"
msgstr "No se encontró actividad de jugadores"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/league-head-to-head.tsx:156
msgid "No players available"
msgstr "No hay jugadores disponibles"
@@ -1784,8 +1784,8 @@ msgstr "No hay jugadores disponibles"
msgid "No players enrolled yet"
msgstr "Aún no hay jugadores inscritos"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/player-stats-table.tsx:486
#: src/features/players/components/league-head-to-head.tsx:156
#: src/features/players/components/player-stats-table.tsx:485
msgid "No players found matching \"{search}\""
msgstr "No se encontraron jugadores que coincidan con \"{search}\""
@@ -1818,7 +1818,7 @@ msgstr "No hay canción seleccionada"
msgid "No state captured"
msgstr "No se capturó ningún estado"
#: src/features/players/components/player-stats-table.tsx:319
#: src/features/players/components/player-stats-table.tsx:318
msgid "No Stats Available"
msgstr "No hay estadísticas disponibles"
@@ -2182,7 +2182,7 @@ msgid "rofl"
msgstr "carcajada"
#. placeholder {0}: match.round + 1
#: src/features/matches/components/match-card.tsx:79
#: src/features/matches/components/match-card.tsx:82
msgid "Round {0}"
msgstr "Ronda {0}"
@@ -2245,8 +2245,8 @@ msgstr "Buscar canciones..."
msgid "Search for teams to enroll..."
msgstr "Buscar equipos para inscribir..."
#: src/features/players/components/league-head-to-head.tsx:132
#: src/features/players/components/player-stats-table.tsx:332
#: src/features/players/components/league-head-to-head.tsx:137
#: src/features/players/components/player-stats-table.tsx:331
msgid "Search players"
msgstr "Buscar jugadores"
@@ -2283,7 +2283,7 @@ msgstr "Selecciona una insignia"
msgid "Select a device..."
msgstr "Selecciona un dispositivo..."
#: src/features/players/components/league-head-to-head.tsx:112
#: src/features/players/components/league-head-to-head.tsx:117
msgid "Select a player"
msgstr "Selecciona un jugador"
@@ -2382,7 +2382,7 @@ msgstr "Mostrar detalles"
#. placeholder {0}: filteredAndSortedStats.length
#. placeholder {1}: playerStats.length
#: src/features/players/components/player-stats-table.tsx:329
#: src/features/players/components/player-stats-table.tsx:328
msgid "Showing {0} of {1} players"
msgstr "Mostrando {0} de {1} jugadores"
@@ -2434,7 +2434,7 @@ msgstr "El segmento de la canción no debe durar más de 15 segundos"
msgid "Song start time is required"
msgstr "Se requiere la hora de inicio de la canción"
#: src/features/players/components/player-stats-table.tsx:350
#: src/features/players/components/player-stats-table.tsx:349
#: src/features/telemetry/components/shared/search-filter-bar.tsx:102
msgid "Sort:"
msgstr "Ordenar:"
@@ -2489,11 +2489,11 @@ msgstr "Empieza a escribir para buscar..."
msgid "Starts in"
msgstr "Comienza en"
#: src/features/players/components/player-stats-table.tsx:382
#: src/features/players/components/player-stats-table.tsx:381
msgid "Stat abbreviations and MMR info"
msgstr "Abreviaturas de estadísticas e información de MMR"
#: src/features/players/components/player-stats-table.tsx:389
#: src/features/players/components/player-stats-table.tsx:388
msgid "Stat Abbreviations:"
msgstr "Abreviaturas de estadísticas:"
@@ -2520,7 +2520,7 @@ msgstr "Estado"
#: src/components/sheet/slide-panel/slide-panel.tsx:40
#: src/features/login/components/player-prompt/index.tsx:115
#: src/features/login/components/player-prompt/index.tsx:126
#: src/features/predictions/components/prediction-editor.tsx:240
#: src/features/predictions/components/prediction-editor.tsx:243
#: src/features/tournaments/components/edit-rules.tsx:39
msgid "Submit"
msgstr "Enviar"
@@ -2543,7 +2543,7 @@ msgstr "Sistema"
msgid "T"
msgstr "T"
#: src/features/players/components/league-head-to-head.tsx:92
#: src/features/players/components/league-head-to-head.tsx:97
msgid "Tap an opponent below to compare"
msgstr "Toca un oponente abajo para comparar"
@@ -2810,7 +2810,7 @@ msgstr "Próximos"
msgid "Update Match"
msgstr "Actualizar partido"
#: src/features/players/components/profile/header.tsx:89
#: src/features/players/components/profile/header.tsx:92
msgid "Update Name"
msgstr "Actualizar nombre"
@@ -2853,8 +2853,8 @@ msgstr "Ver bracket"
msgid "View Groups"
msgstr "Ver grupos"
#: src/features/bracket/components/match-dock.tsx:182
#: src/features/matches/components/match-card.tsx:91
#: src/features/bracket/components/match-dock.tsx:187
#: src/features/matches/components/match-card.tsx:94
msgid "View head-to-head"
msgstr "Ver cara a cara"
@@ -2935,7 +2935,7 @@ msgstr "Final del bracket de ganadores"
#: src/components/stats-overview.tsx:103
#: src/components/stats-overview.tsx:136
#: src/features/players/components/player-stats-table.tsx:366
#: src/features/players/components/player-stats-table.tsx:365
msgid "Wins"
msgstr "Victorias"
+49 -49
View File
@@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/features/matches/components/match-card.tsx:80
#: src/features/matches/components/match-card.tsx:83
msgid " (Losers)"
msgstr " (敗者側)"
@@ -228,7 +228,7 @@ msgstr "{namesList}他1名"
msgid "{size}-team knockout"
msgstr "{size}チームノックアウト"
#: src/features/players/components/player-stats-table.tsx:446
#: src/features/players/components/player-stats-table.tsx:445
msgid "* Confidence penalty applied for players with <15 matches"
msgstr "※試合数が15未満のプレイヤーには信頼度ペナルティが適用されます"
@@ -241,7 +241,7 @@ msgstr "※必要な場合"
msgid "* PICKS shows correct picks / total picks made"
msgstr "※PICKSは正解数/予想総数を表示"
#: src/features/players/components/player-stats-table.tsx:449
#: src/features/players/components/player-stats-table.tsx:448
msgid "** Not an official rating"
msgstr "※※公式レーティングではありません"
@@ -254,19 +254,19 @@ msgstr "&"
msgid "#{0}"
msgstr "#{0}"
#: src/features/players/components/player-stats-table.tsx:416
#: src/features/players/components/player-stats-table.tsx:415
msgid "• <0>AC:</0> Average Cups Per Match"
msgstr "• <0>AC:</0>平均獲得カップ数(1試合あたり)"
#: src/features/players/components/player-stats-table.tsx:419
#: src/features/players/components/player-stats-table.tsx:418
msgid "• <0>ACA:</0> Average Cups Against"
msgstr "• <0>ACA:</0>平均失カップ数"
#: src/features/players/components/player-stats-table.tsx:413
#: src/features/players/components/player-stats-table.tsx:412
msgid "• <0>ALM:</0> Average Loss Margin"
msgstr "• <0>ALM:</0>平均敗差"
#: src/features/players/components/player-stats-table.tsx:410
#: src/features/players/components/player-stats-table.tsx:409
msgid "• <0>AWM:</0> Average Win Margin"
msgstr "• <0>AWM:</0>平均勝差"
@@ -274,15 +274,15 @@ msgstr "• <0>AWM:</0>平均勝差"
msgid "• <0>Bracket reset:</0> only picked if your bracket triggers it — worth double the Final"
msgstr "• <0>ブラケットリセット:</0>自分のブラケットで発生した場合のみ選択可能 — ファイナルの2倍の得点"
#: src/features/players/components/player-stats-table.tsx:425
#: src/features/players/components/player-stats-table.tsx:424
msgid "• <0>CA:</0> Cups Against"
msgstr "• <0>CA:</0>失カップ数"
#: src/features/players/components/player-stats-table.tsx:422
#: src/features/players/components/player-stats-table.tsx:421
msgid "• <0>CF:</0> Cups For"
msgstr "• <0>CF:</0>獲得カップ数"
#: src/features/players/components/player-stats-table.tsx:404
#: src/features/players/components/player-stats-table.tsx:403
msgid "• <0>L:</0> Losses"
msgstr "• <0>L:</0>敗数"
@@ -290,23 +290,23 @@ msgstr "• <0>L:</0>敗数"
msgid "• <0>Losers bracket:</0> 5, 10, 20, 40…"
msgstr "• <0>敗者ブラケット:</0>5、10、20、40…"
#: src/features/players/components/player-stats-table.tsx:392
#: src/features/players/components/player-stats-table.tsx:391
msgid "• <0>M:</0> Matches"
msgstr "• <0>M:</0>試合数"
#: src/features/players/components/player-stats-table.tsx:398
#: src/features/players/components/player-stats-table.tsx:397
msgid "• <0>MMR:</0> Matchmaking Rating"
msgstr "• <0>MMR:</0>マッチメイキングレーティング"
#: src/features/players/components/player-stats-table.tsx:395
#: src/features/players/components/player-stats-table.tsx:394
msgid "• <0>T:</0> Tournaments"
msgstr "• <0>T:</0>トーナメント数"
#: src/features/players/components/player-stats-table.tsx:401
#: src/features/players/components/player-stats-table.tsx:400
msgid "• <0>W:</0> Wins"
msgstr "• <0>W:</0>勝数"
#: src/features/players/components/player-stats-table.tsx:407
#: src/features/players/components/player-stats-table.tsx:406
msgid "• <0>W%:</0> Win Percentage"
msgstr "• <0>W%:</0>勝率"
@@ -314,11 +314,11 @@ msgstr "• <0>W%:</0>勝率"
msgid "• <0>Winners bracket:</0> 10, 20, 40, 80…"
msgstr "• <0>勝者ブラケット:</0>10、20、40、80…"
#: src/features/players/components/player-stats-table.tsx:437
#: src/features/players/components/player-stats-table.tsx:436
msgid "• Average Cups/Match (25%)"
msgstr "• 平均獲得カップ数/試合(25%)"
#: src/features/players/components/player-stats-table.tsx:440
#: src/features/players/components/player-stats-table.tsx:439
msgid "• Average Win Margin (15%)"
msgstr "• 平均勝差(15%)"
@@ -326,11 +326,11 @@ msgstr "• 平均勝差(15%)"
msgid "• Each correct pick earns points, doubling every round"
msgstr "• 予想が的中するたびにポイント獲得、ラウンドごとに倍増"
#: src/features/players/components/player-stats-table.tsx:443
#: src/features/players/components/player-stats-table.tsx:442
msgid "• Match Volume Bonus (10%)"
msgstr "• 試合数ボーナス(10%)"
#: src/features/players/components/player-stats-table.tsx:434
#: src/features/players/components/player-stats-table.tsx:433
msgid "• Win Rate (50%)"
msgstr "• 勝率(50%)"
@@ -720,7 +720,7 @@ msgstr "プレイヤーを選択"
msgid "Claymation"
msgstr "クレイ"
#: src/features/players/components/league-head-to-head.tsx:102
#: src/features/players/components/league-head-to-head.tsx:107
msgid "Clear selected player"
msgstr "選択したプレイヤーを解除"
@@ -1335,11 +1335,11 @@ msgstr "参加したことはありますか?"
#: src/app/routes/_authed/stats.tsx:56
#: src/features/bracket/components/match-dock.tsx:174
#: src/features/bracket/components/match-dock.tsx:219
#: src/features/matches/components/match-card.tsx:86
#: src/features/matches/components/match-card.tsx:230
#: src/features/players/components/league-head-to-head.tsx:193
#: src/features/players/components/profile/header.tsx:94
#: src/features/bracket/components/match-dock.tsx:224
#: src/features/matches/components/match-card.tsx:89
#: src/features/matches/components/match-card.tsx:233
#: src/features/players/components/league-head-to-head.tsx:198
#: src/features/players/components/profile/header.tsx:97
msgid "Head to Head"
msgstr "対戦成績"
@@ -1611,7 +1611,7 @@ msgstr "対戦履歴({totalMatches})"
msgid "Match started!"
msgstr "試合開始!"
#: src/features/players/components/player-stats-table.tsx:376
#: src/features/players/components/player-stats-table.tsx:375
#: src/features/players/components/profile/index.tsx:87
#: src/features/players/components/profile/skeleton.tsx:70
#: src/features/teams/components/team-profile/index.tsx:44
@@ -1630,11 +1630,11 @@ msgstr "地区予選の試合は順不同です"
msgid "Matches Played"
msgstr "試合数"
#: src/features/predictions/components/prediction-editor.tsx:249
#: src/features/predictions/components/prediction-editor.tsx:252
msgid "Matchup"
msgstr "対戦カード"
#: src/features/predictions/components/prediction-editor.tsx:226
#: src/features/predictions/components/prediction-editor.tsx:229
msgid "Matchup details"
msgstr "対戦カードの詳細"
@@ -1642,7 +1642,7 @@ msgstr "対戦カードの詳細"
msgid "MAU"
msgstr "MAU"
#: src/features/players/components/league-head-to-head.tsx:123
#: src/features/players/components/league-head-to-head.tsx:128
msgid "Me"
msgstr "自分"
@@ -1651,11 +1651,11 @@ msgid "Migrate Badge Progress"
msgstr "バッジ進捗を移行"
#: src/features/players/components/player-stats-table.tsx:131
#: src/features/players/components/player-stats-table.tsx:356
#: src/features/players/components/player-stats-table.tsx:355
msgid "MMR"
msgstr "MMR"
#: src/features/players/components/player-stats-table.tsx:431
#: src/features/players/components/player-stats-table.tsx:430
msgid "MMR Calculation:"
msgstr "MMR計算:"
@@ -1775,7 +1775,7 @@ msgstr "予定されている試合はありません"
msgid "No player activity found"
msgstr "プレイヤーのアクティビティが見つかりません"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/league-head-to-head.tsx:156
msgid "No players available"
msgstr "利用可能なプレイヤーがいません"
@@ -1784,8 +1784,8 @@ msgstr "利用可能なプレイヤーがいません"
msgid "No players enrolled yet"
msgstr "まだプレイヤーが登録されていません"
#: src/features/players/components/league-head-to-head.tsx:151
#: src/features/players/components/player-stats-table.tsx:486
#: src/features/players/components/league-head-to-head.tsx:156
#: src/features/players/components/player-stats-table.tsx:485
msgid "No players found matching \"{search}\""
msgstr "「{search}」に一致するプレイヤーが見つかりません"
@@ -1818,7 +1818,7 @@ msgstr "曲が選択されていません"
msgid "No state captured"
msgstr "キャプチャされた状態がありません"
#: src/features/players/components/player-stats-table.tsx:319
#: src/features/players/components/player-stats-table.tsx:318
msgid "No Stats Available"
msgstr "利用可能な統計がありません"
@@ -2182,7 +2182,7 @@ msgid "rofl"
msgstr "大笑い"
#. placeholder {0}: match.round + 1
#: src/features/matches/components/match-card.tsx:79
#: src/features/matches/components/match-card.tsx:82
msgid "Round {0}"
msgstr "ラウンド{0}"
@@ -2245,8 +2245,8 @@ msgstr "曲を検索..."
msgid "Search for teams to enroll..."
msgstr "登録するチームを検索..."
#: src/features/players/components/league-head-to-head.tsx:132
#: src/features/players/components/player-stats-table.tsx:332
#: src/features/players/components/league-head-to-head.tsx:137
#: src/features/players/components/player-stats-table.tsx:331
msgid "Search players"
msgstr "プレイヤーを検索"
@@ -2283,7 +2283,7 @@ msgstr "バッジを選択"
msgid "Select a device..."
msgstr "デバイスを選択..."
#: src/features/players/components/league-head-to-head.tsx:112
#: src/features/players/components/league-head-to-head.tsx:117
msgid "Select a player"
msgstr "プレイヤーを選択"
@@ -2382,7 +2382,7 @@ msgstr "詳細を表示"
#. placeholder {0}: filteredAndSortedStats.length
#. placeholder {1}: playerStats.length
#: src/features/players/components/player-stats-table.tsx:329
#: src/features/players/components/player-stats-table.tsx:328
msgid "Showing {0} of {1} players"
msgstr "{1}人中{0}人のプレイヤーを表示"
@@ -2434,7 +2434,7 @@ msgstr "曲のセグメントは15秒以内にしてください"
msgid "Song start time is required"
msgstr "曲の開始時間を入力してください"
#: src/features/players/components/player-stats-table.tsx:350
#: src/features/players/components/player-stats-table.tsx:349
#: src/features/telemetry/components/shared/search-filter-bar.tsx:102
msgid "Sort:"
msgstr "並び替え:"
@@ -2489,11 +2489,11 @@ msgstr "入力して検索..."
msgid "Starts in"
msgstr "開始まで"
#: src/features/players/components/player-stats-table.tsx:382
#: src/features/players/components/player-stats-table.tsx:381
msgid "Stat abbreviations and MMR info"
msgstr "スタッツ略語とMMR情報"
#: src/features/players/components/player-stats-table.tsx:389
#: src/features/players/components/player-stats-table.tsx:388
msgid "Stat Abbreviations:"
msgstr "スタッツ略語:"
@@ -2520,7 +2520,7 @@ msgstr "ステータス"
#: src/components/sheet/slide-panel/slide-panel.tsx:40
#: src/features/login/components/player-prompt/index.tsx:115
#: src/features/login/components/player-prompt/index.tsx:126
#: src/features/predictions/components/prediction-editor.tsx:240
#: src/features/predictions/components/prediction-editor.tsx:243
#: src/features/tournaments/components/edit-rules.tsx:39
msgid "Submit"
msgstr "送信"
@@ -2543,7 +2543,7 @@ msgstr "システム"
msgid "T"
msgstr "T"
#: src/features/players/components/league-head-to-head.tsx:92
#: src/features/players/components/league-head-to-head.tsx:97
msgid "Tap an opponent below to compare"
msgstr "下の対戦相手をタップして比較"
@@ -2810,7 +2810,7 @@ msgstr "開催予定"
msgid "Update Match"
msgstr "試合を更新"
#: src/features/players/components/profile/header.tsx:89
#: src/features/players/components/profile/header.tsx:92
msgid "Update Name"
msgstr "名前を更新"
@@ -2853,8 +2853,8 @@ msgstr "ブラケットを見る"
msgid "View Groups"
msgstr "グループを見る"
#: src/features/bracket/components/match-dock.tsx:182
#: src/features/matches/components/match-card.tsx:91
#: src/features/bracket/components/match-dock.tsx:187
#: src/features/matches/components/match-card.tsx:94
msgid "View head-to-head"
msgstr "対戦成績を見る"
@@ -2935,7 +2935,7 @@ msgstr "勝者ブラケット決勝"
#: src/components/stats-overview.tsx:103
#: src/components/stats-overview.tsx:136
#: src/features/players/components/player-stats-table.tsx:366
#: src/features/players/components/player-stats-table.tsx:365
msgid "Wins"
msgstr "勝利数"