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}