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;
---
-
+