Index: src/app/professor/profile/page.tsx
===================================================================
--- src/app/professor/profile/page.tsx	(revision 298f9b3987050da08cb65ce62c3d1f8295faeff4)
+++ src/app/professor/profile/page.tsx	(revision 50f2fb4b186356bc63dde83200e8b04fe71d2c7a)
@@ -18,4 +18,5 @@
 import { getAccessToken } from "@/lib/auth";
 import { IconDefinition } from "@fortawesome/fontawesome-svg-core";
+import { useTranslation } from 'react-i18next';
 
 type PersonalInfo = {
@@ -94,15 +95,18 @@
 }
 
-const InfoRow = ({ label, value, icon }: InfoRowProps) => (
-  <div className="flex justify-between items-center py-3 border-b border-gray-100 last:border-b-0">
-    <div className="flex items-center gap-2 text-gray-600 font-medium">
-      {icon && <FontAwesomeIcon icon={icon} className="w-4 h-4" />}
-      <span>{label}:</span>
+const InfoRow = ({ label, value, icon }: InfoRowProps) => {
+  const { t } = useTranslation();
+  return (
+    <div className="flex justify-between items-center py-3 border-b border-gray-100 last:border-b-0">
+      <div className="flex items-center gap-2 text-gray-600 font-medium">
+        {icon && <FontAwesomeIcon icon={icon} className="w-4 h-4" />}
+        <span>{t(label)}:</span>
+      </div>
+      <div className="text-gray-900 font-semibold text-right max-w-xs break-words">
+        {value || t('n_a')}
+      </div>
     </div>
-    <div className="text-gray-900 font-semibold text-right max-w-xs break-words">
-      {value || "N/A"}
-    </div>
-  </div>
-);
+  );
+};
 
 interface SectionProps {
@@ -112,15 +116,18 @@
 }
 
-const Section = ({ title, icon, children }: SectionProps) => (
-  <div className="bg-white rounded-xl shadow-sm border border-gray-100 overflow-hidden">
-    <div className="bg-primary text-white px-6 py-4">
-      <div className="flex items-center gap-3">
-        <FontAwesomeIcon icon={icon} className="text-xl" />
-        <h2 className="text-xl font-bold">{title}</h2>
-      </div>
+const Section = ({ title, icon, children }: SectionProps) => {
+  const { t } = useTranslation();
+  return (
+    <div className="bg-white rounded-xl shadow-sm border border-gray-100 overflow-hidden">
+      <div className="bg-primary text-white px-6 py-4">
+        <div className="flex items-center gap-3">
+          <FontAwesomeIcon icon={icon} className="text-xl" />
+          <h2 className="text-xl font-bold">{t(title)}</h2>
+        </div>
+      </div>
+      <div className="p-6">{children}</div>
     </div>
-    <div className="p-6">{children}</div>
-  </div>
-);
+  );
+};
 
 export default function ProfessorProfilePage() {
@@ -128,4 +135,5 @@
   const [isLoading, setIsLoading] = useState(true);
   const [errorMessage, setErrorMessage] = useState<string | null>(null);
+  const { t } = useTranslation();
 
   useEffect(() => {
@@ -177,5 +185,5 @@
     return (
       <div className="min-h-screen pb-8">
-        <div className="bg-white rounded-xl shadow-sm border border-gray-100 p-6">Loading...</div>
+        <div className="bg-white rounded-xl shadow-sm border border-gray-100 p-6">{t('loading')}</div>
       </div>
     );
@@ -186,5 +194,5 @@
       <div className="min-h-screen pb-8">
         <div className="rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700">
-          {errorMessage ?? "Failed to load profile."}
+          {errorMessage ?? t('failed_to_load_profile')}
         </div>
       </div>
@@ -210,5 +218,5 @@
             </h1>
             <div className="text-lg opacity-90">
-              Индекс: {personalInfo.index} | ЕМБГ: {personalInfo.embg}
+              {t('index')}: {personalInfo.index} | {t('embg')}: {personalInfo.embg}
             </div>
           </div>
@@ -219,24 +227,24 @@
       <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
         {/* Personal Information */}
-        <Section title="Лични податоци" icon={faIdCard}>
-          <InfoRow label="Име" value={personalInfo.firstName} />
-          <InfoRow label="Средно име" value={personalInfo.middleName} />
-          <InfoRow label="Презиме" value={personalInfo.lastName} />
-          <InfoRow label="Моминско презиме" value={personalInfo.maidenName} />
-          <InfoRow label="Датум на раѓање" value={personalInfo.dateOfBirth} icon={faCalendarAlt} />
+        <Section title="personal_info" icon={faIdCard}>
+          <InfoRow label="first_name" value={personalInfo.firstName} />
+          <InfoRow label="middle_name" value={personalInfo.middleName} />
+          <InfoRow label="last_name" value={personalInfo.lastName} />
+          <InfoRow label="maiden_name" value={personalInfo.maidenName} />
+          <InfoRow label="date_of_birth" value={personalInfo.dateOfBirth} icon={faCalendarAlt} />
           <InfoRow
-            label="Пол"
+            label="gender"
             value={personalInfo.gender}
-            icon={personalInfo.gender === "машки" ? faMars : faVenus}
+            icon={personalInfo.gender === t('male') ? faMars : faVenus}
           />
-          <InfoRow label="Националност" value={personalInfo.nationality} icon={faFlag} />
-          <InfoRow label="Државјанство" value={personalInfo.citizenship} />
-          <InfoRow label="Стипендија" value={personalInfo.scholarship} />
-          <InfoRow label="Тековен план" value={personalInfo.currentPlan} />
-          <InfoRow label="Бр. во матична книга" value={personalInfo.registryNumber} />
-          <InfoRow label="Група на студирање" value={personalInfo.studyGroup} />
+          <InfoRow label="nationality" value={personalInfo.nationality} icon={faFlag} />
+          <InfoRow label="citizenship" value={personalInfo.citizenship} />
+          <InfoRow label="scholarship" value={personalInfo.scholarship} />
+          <InfoRow label="current_plan" value={personalInfo.currentPlan} />
+          <InfoRow label="registry_number" value={personalInfo.registryNumber} />
+          <InfoRow label="study_group" value={personalInfo.studyGroup} />
           {personalInfo.notes && (
             <div className="mt-4 p-4 bg-blue-50 rounded-lg">
-              <div className="text-sm font-medium text-blue-800 mb-1">Забелешка:</div>
+              <div className="text-sm font-medium text-blue-800 mb-1">{t('note')}:</div>
               <div className="text-sm text-blue-700">{personalInfo.notes}</div>
             </div>
@@ -245,28 +253,28 @@
 
         {/* Birth Information */}
-        <Section title="Податоци за раѓање" icon={faMapMarkerAlt}>
-          <InfoRow label="Место на раѓање" value={birthInfo.placeOfBirth} />
-          <InfoRow label="Општина на раѓање" value={birthInfo.municipalityOfBirth} />
-          <InfoRow label="Земја" value={birthInfo.country} />
+        <Section title="birth_info" icon={faMapMarkerAlt}>
+          <InfoRow label="place_of_birth" value={birthInfo.placeOfBirth} />
+          <InfoRow label="municipality_of_birth" value={birthInfo.municipalityOfBirth} />
+          <InfoRow label="country" value={birthInfo.country} />
         </Section>
 
         {/* Contact Information */}
         <div className="lg:col-span-2">
-          <Section title="Контакт" icon={faAddressCard}>
+          <Section title="contact" icon={faAddressCard}>
             <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
               <div>
-                <InfoRow label="Место на живеење" value={contact.placeOfResidence} icon={faMapMarkerAlt} />
-                <InfoRow label="Општина на живеење" value={contact.municipalityOfResidence} />
-                <InfoRow label="Држава" value={contact.country} />
-                <InfoRow label="Адреса" value={contact.address} />
-                <InfoRow label="Адреса на престој" value={contact.temporaryAddress} />
+                <InfoRow label="place_of_residence" value={contact.placeOfResidence} icon={faMapMarkerAlt} />
+                <InfoRow label="municipality_of_residence" value={contact.municipalityOfResidence} />
+                <InfoRow label="country" value={contact.country} />
+                <InfoRow label="address" value={contact.address} />
+                <InfoRow label="temporary_address" value={contact.temporaryAddress} />
               </div>
               <div>
-                <InfoRow label="Телефон" value={contact.phone} icon={faPhone} />
-                <InfoRow label="Моб. телефон" value={contact.mobilePhone} icon={faPhone} />
-                <InfoRow label="Број на пасош" value={contact.passportNumber} icon={faPassport} />
-                <InfoRow label="Датум на истекување на пасошот" value={contact.passportExpiryDate} />
-                <InfoRow label="Е-пошта" value={contact.email} icon={faEnvelope} />
-                <InfoRow label="Microsoft email" value={contact.microsoftEmail} icon={faEnvelope} />
+                <InfoRow label="phone" value={contact.phone} icon={faPhone} />
+                <InfoRow label="mobile_phone" value={contact.mobilePhone} icon={faPhone} />
+                <InfoRow label="passport_number" value={contact.passportNumber} icon={faPassport} />
+                <InfoRow label="passport_expiry_date" value={contact.passportExpiryDate} />
+                <InfoRow label="email" value={contact.email} icon={faEnvelope} />
+                <InfoRow label="microsoft_email" value={contact.microsoftEmail} icon={faEnvelope} />
               </div>
             </div>
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>
