// i18n.jsx — bilingual dictionary (English ⇄ বাংলা) for every toggleable screen.
// Cover (first page) and Thank-you (last page) are NOT toggled — they stay English.
// Patient names + complaint text are real data (the patient's own words) — never translated.

const STRINGS = {
  // ── language toggle ──
  lang_bn: { en: 'বাংলা', bn: 'বাংলা' },
  lang_en: { en: 'EN', bn: 'EN' },

  // ── register screen ──
  reg_title:   { en: 'Patient details', bn: 'রোগীর তথ্য' },
  reg_sub:     { en: 'Name, phone, age & address', bn: 'নাম, ফোন, বয়স ও ঠিকানা' },
  f_name:      { en: 'Name', bn: 'নাম' },
  name_ph:     { en: 'Full name', bn: 'পুরো নাম' },
  phone:       { en: 'Phone number', bn: 'ফোন নম্বর' },
  phone_ph:    { en: '01XXXXXXXXX', bn: '01XXXXXXXXX' },
  phone_req:   { en: 'Phone number is required — one number per patient.', bn: 'ফোন নম্বর আবশ্যক — প্রতি রোগী একটি নম্বর।' },
  phone_bad:   { en: 'Enter a valid 11-digit mobile number.', bn: 'সঠিক ১১-সংখ্যার মোবাইল নম্বর দিন।' },
  age:         { en: 'Age', bn: 'বয়স' },
  address:     { en: 'Address', bn: 'ঠিকানা' },
  address_ph:  { en: 'Area, upazila, district', bn: 'এলাকা, উপজেলা, জেলা' },
  continue:    { en: 'Continue', bn: 'পরবর্তী' },

  // ── write screen ──
  complaint_label: { en: 'Describe your problem', bn: 'আপনার সমস্যা লিখুন' },
  complaint_hint:  { en: 'Write in detail', bn: 'বিস্তারিত লিখুন' },
  complaint_ph:    { en: 'e.g. Pain in the right knee for three weeks. Worse going up and down stairs…', bn: 'যেমন: তিন সপ্তাহ ধরে ডান হাঁটুতে ব্যথা। সিঁড়িতে উঠতে-নামতে বাড়ে…' },
  reports:     { en: 'Reports', bn: 'রিপোর্ট' },
  reports_sub: { en: 'X-ray, PDF', bn: 'এক্স-রে, পিডিএফ' },
  media:       { en: 'Photo / video', bn: 'ছবি / ভিডিও' },
  media_sub:   { en: 'Image or video', bn: 'ছবি বা ভিডিও' },
  added:       { en: 'added', bn: 'যোগ হয়েছে' },
  preview:     { en: 'Preview', bn: 'প্রিভিউ' },

  // ── preview screen ──
  preview_title: { en: 'Review', bn: 'যাচাই করুন' },
  preview_sub:   { en: 'Check before sending', bn: 'পাঠানোর আগে দেখে নিন' },
  sec_patient: { en: 'Patient', bn: 'রোগী' },
  sec_problem: { en: 'Problem', bn: 'সমস্যা' },
  sec_files:   { en: 'Attachments', bn: 'সংযুক্তি' },
  no_files:    { en: 'No files', bn: 'কোনো ফাইল নেই' },
  empty:       { en: 'Not written', bn: 'লেখা হয়নি' },
  edit:        { en: 'Edit', bn: 'পরিবর্তন' },
  submit:      { en: 'Send', bn: 'পাঠান' },
  years:       { en: 'yrs', bn: 'বছর' },

  // ── confirm / duplicate modals ──
  confirm_title:  { en: 'Confirm', bn: 'নিশ্চিত করুন' },
  confirm_body:   { en: 'Each number can be used for one patient only for 24 hours.', bn: 'প্রতিটি নম্বর ২৪ ঘণ্টার জন্য কেবল একজন রোগীর জন্যই ব্যবহার করা যাবে।' },
  confirm_cancel: { en: 'Go back', bn: 'ফিরে যান' },
  confirm_yes:    { en: 'Yes, send', bn: 'হ্যাঁ, পাঠান' },
  dup_title: { en: 'Already submitted', bn: 'ইতিমধ্যে পাঠানো হয়েছে' },
  dup_body:  { en: 'This number already has a submission in the last 24 hours. You can view and edit it, or use a different number.', bn: 'গত ২৪ ঘণ্টায় এই নম্বরে ইতিমধ্যে তথ্য আছে। সেটি দেখে সম্পাদনা করতে পারেন, অথবা অন্য নম্বর দিন।' },
  dup_ok:    { en: 'Change phone number', bn: 'ফোন নম্বর পরিবর্তন' },
  dup_edit:  { en: 'View / edit it', bn: 'দেখুন / সম্পাদনা করুন' },
  send_failed: { en: 'Could not send — please check your connection and try again.', bn: 'পাঠানো যায়নি — সংযোগ দেখে আবার চেষ্টা করুন।' },

  // ── choose screen (register new vs. update) ──
  choose_title:      { en: 'How can we help?', bn: 'কী করতে চান?' },
  choose_new:        { en: 'Register new patient', bn: 'নতুন রোগী নিবন্ধন' },
  choose_new_sub:    { en: 'Enter details and describe your problem', bn: 'তথ্য দিন ও সমস্যা লিখুন' },
  choose_update:     { en: 'Update registered patient', bn: 'নিবন্ধিত রোগী হালনাগাদ' },
  choose_update_sub: { en: "Find today's submission by phone and edit it", bn: 'ফোন দিয়ে আজকের তথ্য খুঁজে সম্পাদনা করুন' },

  // ── view / edit a previous submission ──
  lookup_cta:    { en: 'View / edit your submission', bn: 'আপনার তথ্য দেখুন / সম্পাদনা করুন' },
  lookup_title:  { en: 'Find your submission', bn: 'আপনার তথ্য খুঁজুন' },
  lookup_sub:    { en: 'Enter the phone number you submitted with.', bn: 'যে নম্বরে পাঠিয়েছিলেন তা দিন।' },
  lookup_btn:    { en: 'Find my submission', bn: 'আমার তথ্য খুঁজুন' },
  lookup_none:   { en: 'No submission found for this number in the last 24 hours.', bn: 'গত ২৪ ঘণ্টায় এই নম্বরে কোনো তথ্য পাওয়া যায়নি।' },
  editing_banner:{ en: 'Editing your submission', bn: 'আপনার পাঠানো তথ্য সম্পাদনা' },
  edit_window:   { en: 'Editable for about', bn: 'সম্পাদনা করা যাবে আর প্রায়' },
  edit_hours:    { en: 'more hours', bn: 'ঘণ্টা' },
  update:        { en: 'Update', bn: 'হালনাগাদ করুন' },
  confirm_update_title: { en: 'Update submission?', bn: 'তথ্য হালনাগাদ করবেন?' },
  confirm_update_body:  { en: 'Your changes will replace what the clinic currently sees.', bn: 'আপনার পরিবর্তন ক্লিনিকের কাছে থাকা তথ্য প্রতিস্থাপন করবে।' },
  confirm_update_yes:   { en: 'Yes, update', bn: 'হ্যাঁ, হালনাগাদ' },
  done_updated_title:   { en: 'Updated', bn: 'হালনাগাদ হয়েছে' },
  done_updated_body:    { en: 'Your submission has been updated. The doctor will see your latest details.', bn: 'আপনার তথ্য হালনাগাদ হয়েছে। ডাক্তার সর্বশেষ তথ্য দেখবেন।' },

  // ── login ──
  staff_login:  { en: 'Staff sign in', bn: 'স্টাফ লগইন' },
  login_sub:    { en: 'Enter your ID and password.', bn: 'আইডি ও পাসওয়ার্ড দিন।' },
  l_id:         { en: 'ID', bn: 'আইডি' },
  l_pw:         { en: 'Password', bn: 'পাসওয়ার্ড' },
  login_err:    { en: 'Wrong ID or password.', bn: 'ভুল আইডি বা পাসওয়ার্ড।' },
  login_enter:  { en: 'Sign in', bn: 'প্রবেশ' },
  demo_label:   { en: 'Demo accounts — tap to fill', bn: 'ডেমো অ্যাকাউন্ট — চাপ দিন' },
  demo_fill:    { en: 'Fill', bn: 'বসান' },
  login_back:   { en: '← Back to patient form', bn: '← রোগীর ফর্মে ফিরুন' },
  staff_portal: { en: 'Staff portal', bn: 'স্টাফ পোর্টাল' },
  portal_blurb: { en: 'See patient complaints ahead of time, and control who has access.', bn: 'রোগীদের সমস্যা আগেই দেখুন, এবং কার অ্যাক্সেস থাকবে তা নিয়ন্ত্রণ করুন।' },

  // ── topbar ──
  logged_in: { en: 'signed in', bn: 'লগইন আছেন' },
  logout:    { en: 'Sign out', bn: 'বের হন' },

  // ── admin ──
  acc_created:  { en: 'created', bn: 'তৈরি হয়েছে' },
  new_account:  { en: 'New account', bn: 'নতুন অ্যাকাউন্ট' },
  new_acc_sub:  { en: 'Create an ID and password.', bn: 'আইডি ও পাসওয়ার্ড তৈরি করুন।' },
  a_name:       { en: 'Name', bn: 'নাম' },
  a_name_ph:    { en: 'e.g. Night reception', bn: 'যেমন: নাইট রিসেপশন' },
  a_role:       { en: 'Role', bn: 'ভূমিকা' },
  a_id:         { en: 'ID', bn: 'আইডি' },
  a_id_ph:      { en: 'from name', bn: 'নাম থেকে' },
  id_taken:     { en: 'This ID exists.', bn: 'এই আইডি আছে।' },
  a_pw:         { en: 'Password', bn: 'পাসওয়ার্ড' },
  generate:     { en: 'Generate', bn: 'তৈরি' },
  create_btn:   { en: 'Create', bn: 'তৈরি করুন' },
  accounts:     { en: 'Accounts', bn: 'অ্যাকাউন্ট' },
  reveal_show:  { en: 'show', bn: 'দেখুন' },
  reveal_hide:  { en: 'hide', bn: 'লুকান' },
  owner:        { en: 'Owner', bn: 'মালিক' },
  stat_caregivers: { en: 'Caregivers', bn: 'কেয়ারগিভার' },
  stat_admins:  { en: 'Admins', bn: 'অ্যাডমিন' },

  // ── roles ──
  role_admin:     { en: 'Admin', bn: 'অ্যাডমিন' },
  role_caregiver: { en: 'Caregiver', bn: 'কেয়ারগিভার' },

  // ── caregiver dashboard ──
  ready:        { en: 'ready', bn: 'প্রস্তুত' },
  unseen:       { en: 'unseen', bn: 'অপঠিত' },
  search_ph:    { en: 'Search name or serial', bn: 'নাম বা সিরিয়াল খুঁজুন' },
  todays_queue: { en: "Today's queue", bn: 'আজকের সিরিয়াল' },
  all_patients: { en: 'All patients', bn: 'সব রোগী' },
  scope_today:  { en: 'Today', bn: 'আজ' },
  scope_all:    { en: 'All', bn: 'সব' },
  date_today:   { en: 'Today', bn: 'আজ' },
  date_yesterday: { en: 'Yesterday', bn: 'গতকাল' },
  pick_patient: { en: 'Select a patient', bn: 'রোগী নির্বাচন করুন' },
  mark_seen:    { en: 'Mark as seen', bn: 'দেখা হয়েছে চিহ্নিত করুন' },
  seen:         { en: 'Seen', bn: 'দেখা হয়েছে' },
  del_entry:    { en: 'Delete entry', bn: 'এন্ট্রিটি মুছে ফেলুন' },
  del_entry_sub:{ en: 'Remove from the list if duplicate or unnecessary', bn: 'ডুপ্লিকেট বা অপ্রয়োজনীয় হলে তালিকা থেকে সরান' },
  list_back:    { en: 'List', bn: 'তালিকা' },
  in_words:     { en: "In the patient's words", bn: 'রোগীর ভাষায়' },
  attachments:  { en: 'Attachments', bn: 'সংযুক্তি' },
  status_ready:    { en: 'Ready', bn: 'প্রস্তুত' },
  status_progress: { en: 'Writing…', bn: 'লিখছেন…' },
  status_waiting:  { en: 'Not started', bn: 'শুরু হয়নি' },
  msg_progress: { en: 'The patient is still writing. It will appear here once sent.', bn: 'রোগী এখনো সমস্যা লিখছেন। পাঠালে এখানে দেখা যাবে।' },
  msg_waiting:  { en: 'The patient has not opened the form yet.', bn: 'রোগী এখনো ফর্ম খোলেননি।' },
  del_q:        { en: 'Delete this entry?', bn: 'এন্ট্রিটি মুছে ফেলবেন?' },
  del_body_a:   { en: ' will be removed from the list. Delete only if it is a duplicate or unnecessary — this cannot be undone.', bn: ' তালিকা থেকে সরে যাবে। ডুপ্লিকেট বা অপ্রয়োজনীয় হলেই কেবল মুছুন — এটি আর ফেরানো যাবে না।' },
  serial:       { en: 'Serial', bn: 'সিরিয়াল' },
  del_cancel:   { en: 'Go back', bn: 'ফিরে যান' },
  del_confirm:  { en: 'Delete', bn: 'মুছে ফেলুন' },
  sex_m:        { en: 'Male', bn: 'পুরুষ' },
  sex_f:        { en: 'Female', bn: 'নারী' },
};

// resolve the whole dictionary for one language → flat { key: string }
function dict(lang) {
  const L = (lang === 'bn') ? 'bn' : 'en';
  const o = {};
  for (const k in STRINGS) o[k] = STRINGS[k][L] != null ? STRINGS[k][L] : STRINGS[k].en;
  return o;
}

window.STRINGS = STRINGS;
window.dict = dict;

// In-screen language toggle pill (lives INSIDE the phone, light theme).
function LangToggle({ lang, onLang, style }) {
  const items = [['en', 'EN'], ['bn', 'বাংলা']];
  return (
    <div style={{ display: 'inline-flex', gap: 2, padding: 3, background: '#EAF1F9', border: '1px solid #DAE6F2', borderRadius: 100, flexShrink: 0, ...style }}>
      {items.map(([v, l]) => (
        <button key={v} onClick={() => onLang && onLang(v)} style={{
          padding: '5px 11px', cursor: 'pointer', border: 'none', borderRadius: 100, lineHeight: 1,
          fontFamily: v === 'bn' ? "'Anek Bangla', 'Hind Siliguri', sans-serif" : "'Hanken Grotesk', sans-serif",
          fontSize: 12.5, fontWeight: 600,
          background: lang === v ? '#1C77CE' : 'transparent',
          color: lang === v ? '#fff' : '#5E7A96',
        }}>{l}</button>
      ))}
    </div>
  );
}
window.LangToggle = LangToggle;
