+
Crowd Pick{" "}
- | 참여자들의 선택
-
-
- 참여자 투표 비율입니다 (AI 승리 확률과 다릅니다)
+ {t.crowdSub}
@@ -342,7 +355,7 @@ export default function Arena({
- {crowd.total.toLocaleString()}명 참여
+ {t.joined(crowd.total.toLocaleString())}
>
@@ -403,7 +416,7 @@ function CrowdSeg({
value,
tone,
}: {
- team?: import("@/lib/types").Team;
+ team?: Team;
value: number;
tone: "a" | "draw" | "b";
}) {
diff --git a/components/Countdown.tsx b/components/Countdown.tsx
index de1feae..041bb5c 100644
--- a/components/Countdown.tsx
+++ b/components/Countdown.tsx
@@ -1,16 +1,13 @@
"use client";
import { useEffect, useState } from "react";
+import { type Lang, dict } from "@/lib/i18n";
// "투표 종료까지" 카운트다운 (D7). 마감 = 킥오프 정각(lockAt).
// 서버/클라 hydration mismatch 방지: 시간 계산은 마운트 후 useEffect에서만.
-export default function Countdown({
- to,
- label = "투표 종료까지",
-}: {
- to: string;
- label?: string;
-}) {
+export default function Countdown({ to, lang = "ko" }: { to: string; lang?: Lang }) {
+ const t = dict(lang);
+ const label = t.cdUntil;
const [left, setLeft] = useState
(null);
useEffect(() => {
@@ -26,7 +23,7 @@ export default function Countdown({
return (
- {ended ? "투표가 마감되었습니다" : label}
+ {ended ? t.cdClosed : label}
{!ended && (
- {left === null ? "--:--:--" : fmt(left)}
+ {left === null ? "--:--:--" : fmt(left, lang)}
)}
);
}
-function fmt(ms: number): string {
+function fmt(ms: number, lang: Lang): string {
const s = Math.floor(ms / 1000);
const d = Math.floor(s / 86400);
const h = Math.floor((s % 86400) / 3600);
const m = Math.floor((s % 3600) / 60);
const sec = s % 60;
const pad = (n: number) => String(n).padStart(2, "0");
- if (d > 0) return `${d}일 ${pad(h)}:${pad(m)}:${pad(sec)}`;
+ const dayUnit = lang === "en" ? "d" : "일";
+ if (d > 0) return `${d}${dayUnit} ${pad(h)}:${pad(m)}:${pad(sec)}`;
return `${pad(h)}:${pad(m)}:${pad(sec)}`;
}
diff --git a/components/Footer.tsx b/components/Footer.tsx
index 2c8923f..1a85c4c 100644
--- a/components/Footer.tsx
+++ b/components/Footer.tsx
@@ -1,23 +1,19 @@
-export default function Footer() {
+import { type Lang, dict } from "@/lib/i18n";
+
+export default function Footer({ lang = "ko" }: { lang?: Lang }) {
+ const t = dict(lang);
return (