-
Score
+
{t("score")}
{score.toString().padStart(3, '0')}
@@ -481,7 +483,7 @@ export function InteractiveGame() {
-
Click to Start
+
{t("clickToStart")}
)}
@@ -493,14 +495,14 @@ export function InteractiveGame() {
>
- System Failure
+ {t("systemFailure")}
diff --git a/frontend/components/about/PricingSection.tsx b/frontend/components/about/PricingSection.tsx
index d7490235..1e6382ca 100644
--- a/frontend/components/about/PricingSection.tsx
+++ b/frontend/components/about/PricingSection.tsx
@@ -3,46 +3,63 @@ import { useState } from "react"
import { motion } from "framer-motion"
import { Check, Heart, X, Sparkles, Server, ArrowRight } from "lucide-react"
import Link from "next/link"
-import type { Sponsor } from "@/lib/about/github-sponsors"
+import { useTranslations } from "next-intl"
+import type { Sponsor } from "@/lib/about/github-sponsors"
import { SponsorsWall } from "./SponsorsWall"
import { GradientBadge } from "@/components/ui/gradient-badge"
import { SectionHeading } from "@/components/ui/section-heading"
import { ParticleCanvas } from "@/components/ui/particle-canvas"
+
interface PricingSectionProps {
sponsors?: Sponsor[]
}
export function PricingSection({ sponsors = [] }: PricingSectionProps) {
+ const t = useTranslations("about.pricing")
const [activeShape, setActiveShape] = useState<"brackets" | "heart" | null>(null)
+ const juniorFeatures = [
+ t("junior.features.unlimited"),
+ t("junior.features.fullAccess"),
+ t("junior.features.noCard"),
+ t("junior.features.noGuilt"),
+ ]
+
+ const heroFeatures = [
+ t("hero.features.servers"),
+ t("hero.features.coffee"),
+ t("hero.features.badge"),
+ t("hero.features.feeling"),
+ ]
+
return (
-
+
-
- Pricing
-
+ {t("heading")}
+
-
-
-
-
setActiveShape("brackets")}
onMouseLeave={() => setActiveShape(null)}
@@ -51,21 +68,16 @@ export function PricingSection({ sponsors = [] }: PricingSectionProps) {
className="flex flex-col p-8 lg:p-10 rounded-3xl border border-gray-200 dark:border-neutral-800 bg-white/10 dark:bg-neutral-900/10 backdrop-blur-md shadow-sm relative z-10"
>
-
Junior Engineer
-
For those who want an offer, not expenses.
+
{t("junior.title")}
+
{t("junior.description")}
- $0
- / forever
+ {t("junior.price")}
+ {t("junior.period")}
-
+
- {[
- "Unlimited Questions",
- "Full Quiz Access",
- "No Credit Card Required",
- "0% Guilt Trip",
- ].map((item) => (
+ {juniorFeatures.map((item) => (
-
@@ -77,16 +89,16 @@ export function PricingSection({ sponsors = [] }: PricingSectionProps) {
- Personal Yacht
+ {t("junior.noYacht")}
- Start Learning
+ {t("junior.cta")}
-
setActiveShape("heart")}
onMouseLeave={() => setActiveShape(null)}
@@ -99,28 +111,23 @@ export function PricingSection({ sponsors = [] }: PricingSectionProps) {
- High Impact
+ {t("hero.badge")}
- Open Source Hero
+ {t("hero.title")}
-
For those who already landed an offer thanks to us.
+
{t("hero.description")}
- $$$
- / karma points
+ {t("hero.price")}
+ {t("hero.period")}
-
+
)
diff --git a/frontend/components/about/SponsorsWall.tsx b/frontend/components/about/SponsorsWall.tsx
index 6ea620c2..8eb1cba7 100644
--- a/frontend/components/about/SponsorsWall.tsx
+++ b/frontend/components/about/SponsorsWall.tsx
@@ -4,6 +4,7 @@ import { motion } from "framer-motion"
import Image from "next/image"
import Link from "next/link"
import { Plus, Crown, Sparkles } from "lucide-react"
+import { useTranslations } from "next-intl"
import { cn } from "@/lib/utils"
import type { Sponsor } from "@/lib/about/github-sponsors"
import { GradientBadge } from "@/components/ui/gradient-badge"
@@ -15,15 +16,16 @@ interface SponsorsWallProps {
const MAX_SPONSORS = 10
export function SponsorsWall({ sponsors = [] }: SponsorsWallProps) {
+ const t = useTranslations("about.sponsors")
const displaySponsors = sponsors.slice(0, MAX_SPONSORS)
return (
-
+
-
- You?
+ {t("emptySlot")}
)}
-
-
+
- Your Spot
+ {t("yourSpot")}
- Join the club
+ {t("joinClub")}
- 100% of funds go to server costs & coffee
+ {t("fundsNote")}
diff --git a/frontend/components/about/TopicsSection.tsx b/frontend/components/about/TopicsSection.tsx
index 208b0867..fce47870 100644
--- a/frontend/components/about/TopicsSection.tsx
+++ b/frontend/components/about/TopicsSection.tsx
@@ -2,34 +2,37 @@
import { motion } from "framer-motion"
import { ArrowUpRight } from "lucide-react"
-import { TOPICS, type Topic } from "@/data/about"
+import { useTranslations } from "next-intl"
+import { TOPICS, type Topic } from "@/data/about"
import Image from "next/image"
-import Link from "next/link"
+import Link from "next/link"
export function TopicsSection() {
+ const t = useTranslations("about.topics")
+
return (