- Teacher:{" "}
+ {t("fields.teacher")}:{" "}
{course.teacherName ?? "—"}
- Mode:{" "}
+ {t("fields.selectionMode")}:{" "}
- {SELECTION_MODE_LABELS[course.selectionMode]}
+ {t(SELECTION_MODE_LABEL_KEYS[course.selectionMode])}
- Capacity:{" "}
+ {t("fields.capacity")}:{" "}
{course.enrolledCount}/{course.capacity}
- {isFull ? " (Full)" : ""}
+ {isFull ? ` (${t("student.capacityFull")})` : ""}
{course.classroom ? (
- Room:{" "}
+ {t("fields.classroom")}:{" "}
{course.classroom}
) : null}
@@ -162,7 +162,7 @@ export function ElectiveCourseList({
{course.schedule ? (
- Schedule: {course.schedule}
+ {t("fields.schedule")}: {course.schedule}
) : null}
@@ -176,7 +176,7 @@ export function ElectiveCourseList({
>
- Edit
+ {t("actions.edit")}
) : null}
@@ -185,10 +185,10 @@ export function ElectiveCourseList({
variant="outline"
size="sm"
disabled={isPendingThis}
- onClick={() => runAction(openSelectionAction, course.id, "Selection opened")}
+ onClick={() => runAction(openSelectionAction, course.id, t("actions.openSelection"))}
>
- Open
+ {t("actions.openSelection")}
) : null}
{course.status === "open" ? (
@@ -196,10 +196,10 @@ export function ElectiveCourseList({
variant="outline"
size="sm"
disabled={isPendingThis}
- onClick={() => runAction(closeSelectionAction, course.id, "Selection closed")}
+ onClick={() => runAction(closeSelectionAction, course.id, t("actions.closeSelection"))}
>
- Close
+ {t("actions.closeSelection")}
) : null}
{course.selectionMode === "lottery" && course.status !== "draft" ? (
@@ -207,10 +207,10 @@ export function ElectiveCourseList({
variant="outline"
size="sm"
disabled={isPendingThis}
- onClick={() => runAction(runLotteryAction, course.id, "Lottery completed")}
+ onClick={() => runAction(runLotteryAction, course.id, t("actions.runLottery"))}
>
- Lottery
+ {t("actions.runLottery")}
) : null}
) : null}
diff --git a/src/modules/elective/components/elective-filters.tsx b/src/modules/elective/components/elective-filters.tsx
index debbea8..c0efd76 100644
--- a/src/modules/elective/components/elective-filters.tsx
+++ b/src/modules/elective/components/elective-filters.tsx
@@ -1,6 +1,7 @@
"use client"
import { useQueryState, parseAsString } from "nuqs"
+import { useTranslations } from "next-intl"
import {
Select,
@@ -12,6 +13,7 @@ import {
import { FilterBar, FilterSearchInput } from "@/shared/components/ui/filter-bar"
export function ElectiveFilters() {
+ const t = useTranslations("elective")
const [search, setSearch] = useQueryState("q", parseAsString.withDefault(""))
const [mode, setMode] = useQueryState("mode", parseAsString.withDefault("all"))
@@ -29,18 +31,18 @@ export function ElectiveFilters() {