From 14ec2dd2a0ef8b9b97e99c3d75dd8e0601b843a8 Mon Sep 17 00:00:00 2001 From: adilallo <39313955+adilallo@users.noreply.github.com> Date: Fri, 30 Jan 2026 17:28:48 -0700 Subject: [PATCH] Second pass on localization --- app/components/Header/Header.container.tsx | 26 +++++++------ app/components/Header/Header.view.tsx | 9 ++++- .../HomeHeader/HomeHeader.container.tsx | 26 +++++++------ app/components/HomeHeader/HomeHeader.view.tsx | 7 +++- .../LanguageSwitcher.view.tsx | 25 ++++++------ app/components/MenuBar.tsx | 6 ++- app/components/QuoteBlock/QuoteBlock.view.tsx | 6 ++- app/components/RuleCard/RuleCard.view.tsx | 8 +++- app/components/RuleStack/RuleStack.view.tsx | 39 +++++++++++-------- messages/en/components/header.json | 18 +++++++++ messages/en/components/homeHeader.json | 6 +++ messages/en/components/languageSwitcher.json | 11 ++++++ messages/en/components/menuBar.json | 3 ++ messages/en/components/quoteBlock.json | 3 ++ messages/en/components/ruleCard.json | 3 ++ messages/en/components/ruleStack.json | 28 +++++++++++++ messages/en/index.ts | 14 +++++++ 17 files changed, 179 insertions(+), 59 deletions(-) create mode 100644 messages/en/components/header.json create mode 100644 messages/en/components/homeHeader.json create mode 100644 messages/en/components/languageSwitcher.json create mode 100644 messages/en/components/menuBar.json create mode 100644 messages/en/components/quoteBlock.json create mode 100644 messages/en/components/ruleCard.json create mode 100644 messages/en/components/ruleStack.json diff --git a/app/components/Header/Header.container.tsx b/app/components/Header/Header.container.tsx index 165f2bf..6b459ec 100644 --- a/app/components/Header/Header.container.tsx +++ b/app/components/Header/Header.container.tsx @@ -2,6 +2,7 @@ import { memo } from "react"; import { usePathname } from "next/navigation"; +import { useTranslation } from "../../contexts/MessagesContext"; import MenuBarItem from "../MenuBarItem"; import Button from "../Button"; import AvatarContainer from "../AvatarContainer"; @@ -11,13 +12,6 @@ import { getAssetPath, ASSETS } from "../../../lib/assetUtils"; import { HeaderView } from "./Header.view"; import type { HeaderProps, NavSize } from "./Header.types"; -// Configuration data for testing -export const navigationItems = [ - { href: "#", text: "Use cases", extraPadding: true }, - { href: "/learn", text: "Learn" }, - { href: "#", text: "About" }, -]; - export const avatarImages = [ { src: getAssetPath(ASSETS.AVATAR_1), alt: "Avatar 1" }, { src: getAssetPath(ASSETS.AVATAR_2), alt: "Avatar 2" }, @@ -46,6 +40,7 @@ export const logoConfig = [ const HeaderContainer = memo(() => { const pathname = usePathname(); + const t = useTranslation("header"); // Schema markup for site navigation const schemaData = { @@ -60,6 +55,13 @@ const HeaderContainer = memo(() => { }, }; + // Navigation items with translations + const navigationItems = [ + { href: "#", text: t("navigation.useCases"), extraPadding: true }, + { href: "/learn", text: t("navigation.learn") }, + { href: "#", text: t("navigation.about") }, + ]; + const renderNavigationItems = (size: NavSize) => { return navigationItems.map((item, index) => ( (() => { href={item.href} size={item.extraPadding && size === "xsmall" ? "xsmallUseCases" : size} isActive={pathname === item.href} - ariaLabel={`Navigate to ${item.text} page`} + ariaLabel={t("ariaLabels.navigateToPage").replace("{text}", item.text)} > {item.text} @@ -94,8 +96,8 @@ const HeaderContainer = memo(() => { const renderLoginButton = (size: NavSize) => { return ( - - Log in + + {t("buttons.logIn")} ); }; @@ -108,10 +110,10 @@ const HeaderContainer = memo(() => { return ( ); }; diff --git a/app/components/Header/Header.view.tsx b/app/components/Header/Header.view.tsx index 2ea7986..780c7b2 100644 --- a/app/components/Header/Header.view.tsx +++ b/app/components/Header/Header.view.tsx @@ -1,3 +1,6 @@ +"use client"; + +import { useTranslation } from "../../contexts/MessagesContext"; import MenuBar from "../MenuBar"; import type { HeaderViewProps } from "./Header.types"; @@ -9,6 +12,8 @@ export function HeaderView({ renderCreateRuleButton, renderLogo, }: HeaderViewProps) { + const t = useTranslation("header"); + return ( <>