From 4e80490fd440063f02c810660a3ebd5d5a4a260f Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 14 Jan 2025 20:32:17 -0600 Subject: [PATCH] feat: localize sessin --- packages/i18n/strings/en.json | 28 ++++++- .../[...locale]/tools/session/_index.tsx | 82 ++++++++++++------- .../[...locale]/tools/session/index.astro | 4 +- 3 files changed, 84 insertions(+), 30 deletions(-) diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index 83e56c1f9..b742389ee 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -1168,7 +1168,33 @@ "name": "Session", "button": "Start tracking", "description": "Live session stats", - "seo_description": "Track your stats in real time as you play World of Tanks Blitz" + "seo_description": "Track your stats in real time as you play World of Tanks Blitz", + "search": { + "lookup": "Look up a player to get started", + "hint": "Search players...", + "searching": "Searching...", + "no_results": "No players found" + }, + "controls": { + "title": "Tracking %s1", + "subtitle": "Since %s1", + "reset": "Reset", + "change": "Change" + }, + "no_cc": { + "title": "You're attempting to track a CC account", + "body": "CC (community contributor) accounts do not have public tank statistics. We are in the process of adding embeds for CC accounts, stay tuned.", + "alright": "Alright" + }, + "no_battles": { + "title": "No battles", + "hint": "Go ahead and play a game" + }, + "table": { + "tank": "Tank", + "total": "Total", + "remove": "Remove" + } }, "tier_list": { "name": "Tier list", diff --git a/packages/website/src/pages/[...locale]/tools/session/_index.tsx b/packages/website/src/pages/[...locale]/tools/session/_index.tsx index 2d04e089f..53b4156a2 100644 --- a/packages/website/src/pages/[...locale]/tools/session/_index.tsx +++ b/packages/website/src/pages/[...locale]/tools/session/_index.tsx @@ -13,7 +13,6 @@ import { type IndividualAccountInfo, type IndividualTankStats, } from '@blitzkit/core'; -import strings from '@blitzkit/i18n/strings/en.json'; import { ArrowDownIcon, MagnifyingGlassIcon, @@ -39,7 +38,12 @@ import { StickyTableRoot } from '../../../../components/StickyTableRoot'; import { TankRowHeaderCell } from '../../../../components/TankRowHeaderCell'; import { awaitableAverageDefinitions } from '../../../../core/awaitables/averageDefinitions'; import { awaitableTankDefinitions } from '../../../../core/awaitables/tankDefinitions'; -import { useLocale } from '../../../../hooks/useLocale'; +import { literals } from '../../../../core/i18n/literals'; +import { + LocaleProvider, + useLocale, + type LocaleAcceptorProps, +} from '../../../../hooks/useLocale'; import { Session, type SessionTracking } from '../../../../stores/session'; const [tankDefinitions, averageDefinitions] = await Promise.all([ @@ -47,16 +51,18 @@ const [tankDefinitions, averageDefinitions] = await Promise.all([ awaitableAverageDefinitions, ]); -export function Page() { +export function Page({ locale }: LocaleAcceptorProps) { return ( - - - + + + + + ); } function Content() { - const { locale } = useLocale(); + const { locale, strings } = useLocale(); const [showSearch, setShowSearch] = useState(false); const [searching, setSearching] = useState(false); const [searchResults, setSearchResults] = useState([]); @@ -165,17 +171,17 @@ function Content() { > - You're attempting to track a CC account + {strings.website.tools.session.no_cc.title} - CC (community contributor) accounts do not have public tank - statistics. We are in the process of adding embeds for CC accounts, - stay tuned. + {strings.website.tools.session.no_cc.body} - + @@ -190,7 +196,9 @@ function Content() { gap="3" > - Look up a player to get started + + {strings.website.tools.session.search.lookup} + @@ -202,7 +210,7 @@ function Content() { maxWidth: 480, }} ref={input} - placeholder="Search players..." + placeholder={strings.website.tools.session.search.hint} onChange={() => { if (!input.current) return; @@ -226,13 +234,17 @@ function Content() { {searching && ( - Searching... + + {strings.website.tools.session.search.searching} + )} {!searching && searchResults.length === 0 && ( - No players found + + {strings.website.tools.session.search.no_results} + )} @@ -265,9 +277,15 @@ function Content() { gap="2" > - Tracking {accountInfo?.nickname} + + {literals(strings.website.tools.session.controls.title, [ + `${accountInfo?.nickname}`, + ])} + - Since {new Date(session.player.since).toLocaleString(locale)} + {literals(strings.website.tools.session.controls.subtitle, [ + new Date(session.player.since).toLocaleString(locale), + ])} @@ -290,7 +308,7 @@ function Content() { }); }} > - Reset + {strings.website.tools.session.controls.reset} @@ -310,7 +328,9 @@ function Content() { - Tank + + {strings.website.tools.session.table.tank} + {session.columns.map((column, index) => ( + + {strings.website.tools.session.table.remove} + + + + {compositeStatsKeys .filter( (item) => @@ -385,10 +411,6 @@ function Content() { {strings.common.composite_stats[key]} ))} - - - - Remove @@ -409,7 +431,7 @@ function Content() { overflowY: 'hidden', }} > - Total + {strings.website.tools.session.table.total} {session.columns.map((column) => ( @@ -453,8 +475,12 @@ function Content() { flex: 1, }} > - No battles - Go ahead and play a game + + {strings.website.tools.session.no_battles.title} + + + {strings.website.tools.session.no_battles.hint} + )} diff --git a/packages/website/src/pages/[...locale]/tools/session/index.astro b/packages/website/src/pages/[...locale]/tools/session/index.astro index 1042965fd..12984b189 100644 --- a/packages/website/src/pages/[...locale]/tools/session/index.astro +++ b/packages/website/src/pages/[...locale]/tools/session/index.astro @@ -4,8 +4,10 @@ import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './_index'; export { getStaticPaths } from '../../index.astro'; + +const { locale } = Astro.params; --- - +