Index: src/app/professor/students/page.tsx
===================================================================
--- src/app/professor/students/page.tsx	(revision 298f9b3987050da08cb65ce62c3d1f8295faeff4)
+++ src/app/professor/students/page.tsx	(revision 50f2fb4b186356bc63dde83200e8b04fe71d2c7a)
@@ -2,4 +2,5 @@
 
 import { useEffect, useMemo, useState } from "react";
+import { useTranslation } from 'react-i18next';
 
 type UsersBySubject = {
@@ -36,4 +37,5 @@
 
 export default function ProfessorStudentsPage() {
+  const { t } = useTranslation();
   const [subjects, setSubjects] = useState<SubjectsAndUsers[]>([]);
   const [loading, setLoading] = useState(true);
@@ -129,8 +131,9 @@
     <div className="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
       <div className="flex flex-col gap-4 md:flex-row md:items-end md:justify-between">
+
         <div>
-          <h1 className="text-2xl font-semibold text-gray-900">Professor • Students</h1>
+          <h1 className="text-2xl font-semibold text-gray-900">{t('prof_students_title')}</h1>
           <p className="text-gray-700 mt-1">
-            Data comes from <span className="font-mono">/api/prof/students</span> (demo store).
+            {t('prof_students_data_note')} <span className="font-mono">/api/prof/students</span> (demo store).
           </p>
         </div>
@@ -138,5 +141,5 @@
         <div className="flex flex-col sm:flex-row gap-3">
           <div className="flex flex-col">
-            <label className="text-sm text-gray-700">Filter by subject</label>
+            <label className="text-sm text-gray-700">{t('filter_by_subject')}</label>
             <select
               className="border border-gray-300 rounded-lg px-3 py-2"
@@ -144,10 +147,10 @@
               onChange={(e) => setSubjectFilter(e.target.value)}
             >
-              <option value="all">All subjects</option>
+              <option value="all">{t('all_subjects')}</option>
               {subjects
                 .filter((s) => typeof s.Id === "number")
                 .map((s) => (
                   <option key={String(s.Id)} value={String(s.Id)}>
-                    {s.Name ?? `Subject ${s.Id}`}
+                    {s.Name ?? `${t('subject')} ${s.Id}`}
                   </option>
                 ))}
@@ -156,8 +159,8 @@
 
           <div className="flex flex-col">
-            <label className="text-sm text-gray-700">Find student by index / ID</label>
+            <label className="text-sm text-gray-700">{t('find_student_by_id')}</label>
             <input
               className="border border-gray-300 rounded-lg px-3 py-2"
-              placeholder="e.g. 20001"
+              placeholder={t('student_id_placeholder')}
               value={studentIdQuery}
               onChange={(e) => setStudentIdQuery(e.target.value)}
@@ -177,9 +180,9 @@
           <thead className="bg-gray-50">
             <tr>
-              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">Student</th>
-              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">ID</th>
-              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">Subject</th>
-              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">Grade</th>
-              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">Actions</th>
+              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">{t('student')}</th>
+              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">{t('id')}</th>
+              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">{t('subject')}</th>
+              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">{t('grade')}</th>
+              <th className="text-left text-sm font-semibold text-gray-700 px-4 py-3 border-b">{t('actions')}</th>
             </tr>
           </thead>
@@ -188,5 +191,5 @@
               <tr>
                 <td className="px-4 py-4 text-gray-700" colSpan={5}>
-                  Loading...
+                  {t('loading')}
                 </td>
               </tr>
@@ -194,5 +197,5 @@
               <tr>
                 <td className="px-4 py-4 text-gray-700" colSpan={5}>
-                  No students found.
+                  {t('no_students_found')}
                 </td>
               </tr>
@@ -227,5 +230,5 @@
                         </select>
                         <span className="text-sm text-gray-600">
-                          Current: {r.grade > 0 ? r.grade : "—"}
+                          {t('current')}: {r.grade > 0 ? r.grade : t('none')}
                         </span>
                       </div>
@@ -245,5 +248,5 @@
                           }}
                         >
-                          Add grade
+                          {t('add_grade')}
                         </button>
 
@@ -260,5 +263,5 @@
                           }}
                         >
-                          Edit grade
+                          {t('edit_grade')}
                         </button>
 
@@ -275,5 +278,5 @@
                           }}
                         >
-                          Remove grade
+                          {t('remove_grade')}
                         </button>
                       </div>
