From b2856eab582be614d20bcee6c5815c90763893e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 31 Dec 2025 14:02:28 -0600 Subject: [PATCH] feat: localize --- packages/i18n/strings/en.json | 5 ++- .../TankSearch/components/FilterControl.tsx | 40 ++++++++++++------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json index f0a7b00dc..94def8954 100644 --- a/packages/i18n/strings/en.json +++ b/packages/i18n/strings/en.json @@ -15,7 +15,8 @@ "hp": "{value}hp", "x": "x{value}", "percentage": "{value}%", - "deg_s": "{value}°/s" + "deg_s": "{value}°/s", + "plus": "+{value}" }, "gun_types": { @@ -759,6 +760,8 @@ "count_singular": "1 tank", "count_plural": "{count} tanks", "sorting_by": "Sorting by {name}", + "clear": "Clear", + "tier": "Tier {tier}", "no_tanks_found": { "body": "No tanks found.", diff --git a/packages/website/src/components/TankSearch/components/FilterControl.tsx b/packages/website/src/components/TankSearch/components/FilterControl.tsx index 9adc8c40d..9ca89f958 100644 --- a/packages/website/src/components/TankSearch/components/FilterControl.tsx +++ b/packages/website/src/components/TankSearch/components/FilterControl.tsx @@ -7,6 +7,7 @@ import { TankType, TIER_ROMAN_NUMERALS, } from "@blitzkit/core"; +import { literals } from "@blitzkit/i18n"; import locales from "@blitzkit/i18n/locales.json"; import { LockClosedIcon, @@ -96,7 +97,7 @@ const TIERS = times(10, (i) => 10 - i); export function FilterControl() { return ( - + @@ -114,6 +115,7 @@ export function FilterControl() { } function TiersFilter() { + const { strings } = useLocale(); const tiersRaw = TankFilters.use((state) => state.tiers); const tiers = tiersRaw.length === 0 ? TIERS : tiersRaw; @@ -129,7 +131,11 @@ function TiersFilter() { ))} {tiers.length > MAX_TIERS && ( - +{tiers.length - MAX_TIERS} + + {literals(strings.common.units.plus, { + value: tiers.length - MAX_TIERS, + })} + )} @@ -155,7 +161,9 @@ function TiersFilter() { checked={selected} key={tier} > - Tier {TIER_ROMAN_NUMERALS[tier]} + {literals(strings.website.common.tank_search.tier, { + tier: TIER_ROMAN_NUMERALS[tier], + })} ); })} @@ -173,7 +181,7 @@ function TiersFilter() { }} > - Clear + {strings.website.common.tank_search.clear} @@ -277,7 +285,7 @@ function NationsFilter() { }} > - Clear + {strings.website.common.tank_search.clear} @@ -357,7 +365,7 @@ function ClassFilter() { }} > - Clear + {strings.website.common.tank_search.clear} @@ -435,7 +443,7 @@ function GunTypeFilter() { }} > - Clear + {strings.website.common.tank_search.clear} @@ -521,7 +529,7 @@ function TypeFilter() { }} > - Clear + {strings.website.common.tank_search.clear} @@ -737,10 +745,10 @@ function TestFilter() { } function ConsumablesFilter() { + const { unwrap, strings } = useLocale(); const rawConsumables = TankFilters.use((state) => state.consumables); const consumables = rawConsumables.length === 0 ? consumablesArray : rawConsumables; - const { unwrap } = useLocale(); return ( @@ -762,7 +770,9 @@ function ConsumablesFilter() { {consumables.length > MAX_CONSUMABLES && ( - +{consumables.length - MAX_CONSUMABLES} + {literals(strings.common.units.plus, { + value: consumables.length - MAX_CONSUMABLES, + })} )} @@ -820,7 +830,7 @@ function ConsumablesFilter() { }} > - Clear + {strings.website.common.tank_search.clear} @@ -828,9 +838,9 @@ function ConsumablesFilter() { } function AbilitiesFilter() { + const { unwrap, strings } = useLocale(); const rawAbilities = TankFilters.use((state) => state.abilities); const abilities = rawAbilities.length === 0 ? abilitiesArray : rawAbilities; - const { unwrap } = useLocale(); return ( @@ -852,7 +862,9 @@ function AbilitiesFilter() { {abilities.length > MAX_ABILITIES && ( - +{abilities.length - MAX_ABILITIES} + {literals(strings.common.units.plus, { + value: abilities.length - MAX_ABILITIES, + })} )} @@ -909,7 +921,7 @@ function AbilitiesFilter() { }} > - Clear + {strings.website.common.tank_search.clear}