p = r'src\lib\i18n.ts'
s = open(p, encoding='utf-8').read()

# ---- EN certificatesPage seat pattern keys (after seatPlan-ish keys) ----
en_cert_anchor = '''      feeWaivedNote: "This fee has been waived — no payment is required.",'''
en_cert_new = '''      feeWaivedNote: "This fee has been waived — no payment is required.",
      seatPatternList: "Room List",
      seatPatternCard: "Seat Card",
      seatLayoutGrid: "4 / Page",
      seatLayoutSingle: "1 / Page",
      seatLayoutGridHint: "Four seat cards per printed page",
      seatLayoutSingleHint: "One seat card per printed page",'''
assert en_cert_anchor in s
s = s.replace(en_cert_anchor, en_cert_new, 1)

# ---- BN certificatesPage ----
bn_cert_anchor = '''      feeWaivedNote: "এই ফি মকুব করা হয়েছে — কোনো পরিশোধের প্রয়োজন নেই।",'''
bn_cert_new = '''      feeWaivedNote: "এই ফি মকুব করা হয়েছে — কোনো পরিশোধের প্রয়োজন নেই।",
      seatPatternList: "রুম তালিকা",
      seatPatternCard: "সিট কার্ড",
      seatLayoutGrid: "৪ / পৃষ্ঠা",
      seatLayoutSingle: "১ / পৃষ্ঠা",
      seatLayoutGridHint: "প্রতি প্রিন্ট পৃষ্ঠায় চারটি সিট কার্ড",
      seatLayoutSingleHint: "প্রতি প্রিন্ট পৃষ্ঠায় একটি সিট কার্ড",'''
assert bn_cert_anchor in s
s = s.replace(bn_cert_anchor, bn_cert_new, 1)

# ---- EN admissionsPage bulk keys ----
en_adm_anchor = '''      feeWaivedNote: "This fee has been waived — no payment is required.",'''
# the admissions EN anchor: use feeWaivedNote first occurrence in EN admissions? It appears in admissions too.
# safer: anchor on the EN admissions 'decidedOn' + 'studentCreated' block end
en_adm_anchor2 = '''      feeWaivedNote: "This fee has been waived — no payment is required.",
      seatPatternList: "Room List",'''
# EN admissions: insert before its own feeWaivedNote — find EN admissions block via 'studentCreated: "Student enrolled",'
en_a = '''      studentCreated: "Student enrolled",'''
en_a_new = '''      studentCreated: "Student enrolled",
      bulkUpload: "Bulk Upload",
      bulkUploadTitle: "Bulk Admission Applications (CSV)",
      bulkHint: "Upload a CSV with a header row. Required columns: studentName, guardianPhone. Optional: guardianName, gender, dob, className, email, studentPhone, address, note. Excel files: save as CSV first.",
      bulkChooseFile: "Choose CSV file",
      bulkPreview: "Rows read",
      bulkValid: "valid",
      bulkRowInvalid: "invalid",
      bulkCreate: "Create {n} applications",
      bulkCreated: "Created",
      bulkFailedRows: "Failed",
      bulkRow: "Row",
      bulkDetail: "Detail",
      bulkAgain: "Upload another file",
      bulkTooMany: "Too many rows — upload at most 500 at a time",
      bulkParseError: "Could not read the file — save it as CSV and try again",
      bulkFailed: "Bulk upload failed — please try again",
      bulkErrMISSING_FIELDS: "studentName and guardianPhone are required",
      bulkErrCLASS_NOT_FOUND: "Class not found in your academic selections",
      bulkErrDB_ERROR: "Could not create this row",'''
assert en_a in s
s = s.replace(en_a, en_a_new, 1)

# ---- BN admissionsPage bulk keys ----
bn_a = '''      studentCreated: "শিক্ষার্থী নথিভুক্ত হয়েছে",'''
bn_a_new = '''      studentCreated: "শিক্ষার্থী নথিভুক্ত হয়েছে",
      bulkUpload: "বাল্ক আপলোড",
      bulkUploadTitle: "বাল্ক ভর্তি আবেদন (CSV)",
      bulkHint: "হেডারসহ CSV আপলোড করুন। আবশ্যক কলাম: studentName, guardianPhone। ঐচ্ছিক: guardianName, gender, dob, className, email, studentPhone, address, note। Excel হলে আগে CSV হিসেবে সেভ করুন।",
      bulkChooseFile: "CSV ফাইল নির্বাচন করুন",
      bulkPreview: "পড়া সারি",
      bulkValid: "বৈধ",
      bulkRowInvalid: "অবৈধ",
      bulkCreate: "{n}টি আবেদন তৈরি করুন",
      bulkCreated: "তৈরি হয়েছে",
      bulkFailedRows: "ব্যর্থ",
      bulkRow: "সারি",
      bulkDetail: "বিবরণ",
      bulkAgain: "আরেকটি ফাইল আপলোড করুন",
      bulkTooMany: "অনেক বেশি সারি — একবারে সর্বোচ্চ ৫০০",
      bulkParseError: "ফাইল পড়া যায়নি — CSV হিসেবে সেভ করে আবার চেষ্টা করুন",
      bulkFailed: "বাল্ক আপলোড ব্যর্থ — আবার চেষ্টা করুন",
      bulkErrMISSING_FIELDS: "studentName ও guardianPhone আবশ্যক",
      bulkErrCLASS_NOT_FOUND: "আপনার একাডেমিক নির্বাচনে এই শ্রেণি নেই",
      bulkErrDB_ERROR: "এই সারিটি তৈরি করা যায়নি",'''
assert bn_a in s
s = s.replace(bn_a, bn_a_new, 1)

# ---- Control panel hint update (subjects now included for madrasa/college/university) ----
en_cp = '''      classesHint: "Year-level classes (college / university / Alim) are stamped with the current session",'''
en_cp_new = '''      classesHint: "Year-level classes are stamped with the current session; Madrasa / College / University types also select their standard Bangladesh subject list (Quran-Hadith-Fiqh, HSC group subjects, university courses)",'''
assert en_cp in s
s = s.replace(en_cp, en_cp_new, 1)

bn_cp = '''      classesHint: "বছর-স্তরের শ্রেণিগুলো (কলেজ / বিশ্ববিদ্যালয় / আলিম) চলতি শিক্ষাবর্ষ সহ যুক্ত হয়",'''
bn_cp_new = '''      classesHint: "বছর-স্তরের শ্রেণিগুলো চলতি শিক্ষাবর্ষ সহ যুক্ত হয়; মাদ্রাসা / কলেজ / বিশ্ববিদ্যালয় ধরনে বাংলাদেশের প্রমিত বিষয় তালিকাও নির্বাচিত হয় (কুরআন-হাদীস-ফিকহ, এইচএসসি গ্রুপ বিষয়, বিশ্ববিদ্যালয় কোর্স)",'''
assert bn_cp in s
s = s.replace(bn_cp, bn_cp_new, 1)

open(p, 'w', encoding='utf-8', newline='\n').write(s)
print('all i18n keys added')
