// English + Khmer text for the CDC-GPSF progress-report page.
// Components pick a language with useAppLanguage() and read labels from here.

export type ProgressReportLanguage = "en" | "kh";

// The app language provider can report "kh" or "km" for Khmer — treat both the same.
export function normalizeProgressReportLanguage(
  language?: string,
): ProgressReportLanguage {
  if (language === "kh" || language === "km") return "kh";
  return "en";
}

// Labels for the "⋮" row-actions dropdown menu.
export type ProgressReportActionsMenuLabels = {
  openMenu: string;
  viewDetail: string;
  edit: string;
  createMeeting: string;
  setDeadline: string;
  exportComment: string;
  uploadDraftSemester: string;
  generateDraftDashboard: string;
  generateFinalDashboard: string;
  pswg: string;
  plenary: string;
};

export type ProgressReportUploadDraftSemesterDialogLabels = {
  title: string;
  documentLabel: string;
  uploadText: string;
  uploadHint: string;
  fileTypeHint: string;
  uploading: string;
  completed: string;
  upload: string;
  required: string;
  invalidFileType: string;
  invalidFileSize: string;
  submitError: string;
};

export type ProgressReportCreateMeetingDialogLabels = {
  title: string;
  name: string;
  namePlaceholder: string;
  description: string;
  descriptionPlaceholder: string;
  date: string;
  datePlaceholder: string;
  startTime: string;
  endTime: string;
  timePlaceholder: string;
  location: string;
  locationPlaceholder: string;
  document: string;
  uploadText: string;
  uploadHint: string;
  fileTypeHint: string;
  uploading: string;
  completed: string;
  save: string;
  send: string;
  required: string;
  invalidFileType: string;
  invalidFileSize: string;
  endTimeBeforeStart: string;
  submitError: string;
};

export type ProgressReportSetDeadlineDialogLabels = {
  title: string;
  date: string;
  finalDeadline: string;
  datePlaceholder: string;
  today: string;
  save: string;
  send: string;
  required: string;
  finalDeadlineAfterDate: string;
  submitError: string;
};

// Labels for the calendar event detail popup.
export type ProgressReportEventDialogLabels = {
  meetingDetailsTab: string;
  meetingDate: string;
  startTime: string;
  endTime: string;
  location: string;
  status: string;
  description: string;
  meetingRequestDocument: string;
  closeDialog: string;
};

export type ProgressReportCreateDialogLabels = {
  title: string;
  editTitle: string;
  reportTitle: string;
  reportTitlePlaceholder: string;
  semester: string;
  semesterPlaceholder: string;
  description: string;
  descriptionPlaceholder: string;
  year: string;
  yearPlaceholder: string;
  deadline: string;
  deadlinePlaceholder: string;
  attachment: string;
  uploadText: string;
  uploadHint: string;
  fileTypeHint: string;
  save: string;
  send: string;
  close: string;
  required: string;
  invalidFileType: string;
  invalidFileSize: string;
  submitError: string;
  editSubmitError: string;
};

export type ProgressReportDetailLabels = {
  back: string;
  year: string;
  deadline: string;
  firstMeeting: string;
  secondMeeting: string;
  firstDeadline: string;
  secondDeadline: string;
  draftSemester: string;
  reportDocument: string;
  description: string;
  ministryFilter: string;
  attachmentFilter: string;
  emptyMessage: string;
  openActions: string;
  viewDetail: string;
  exportComment: string;
  invalidReportId: string;
  loadError: string;
  listView: string;
  gridView: string;
  scheduleTypeMeeting: string;
  scheduleTypeDeadline: string;
  scheduleColumns: {
    type: string;
    name: string;
    date: string;
    status: string;
    action: string;
  };
  scheduleActions: {
    openActions: string;
    addMeeting: string;
    setDeadline: string;
    editMeeting: string;
    editDeadline: string;
    blocked: string;
    editMeetingTitle: string;
    editDeadlineTitle: string;
    loadMeetingError: string;
    meetingSaved: string;
    meetingSent: string;
    deadlineSaved: string;
    deadlineSent: string;
  };
  columns: {
    no: string;
    name: string;
    issueCount: string;
    attachment: string;
    action: string;
  };
};

// Every label the page needs, in one shape shared by both languages.
export type ProgressReportLabels = {
  pageTitle: string;
  calendarTitle: string;
  breadcrumbParent: string;
  breadcrumbCurrent: string;

  exportButton: string;
  newReportButton: string;
  allReportsButton: string;
  calendarButton: string;

  semesterFilter: string;
  yearFilter: string;
  statusFilter: string;

  emptyState: {
    title: string;
    description: string;
  };

  actionsMenu: ProgressReportActionsMenuLabels;

  eventDialog: ProgressReportEventDialogLabels;

  createDialog: ProgressReportCreateDialogLabels;

  uploadDraftSemesterDialog: ProgressReportUploadDraftSemesterDialogLabels;

  createMeetingDialog: ProgressReportCreateMeetingDialogLabels;

  setDeadlineDialog: ProgressReportSetDeadlineDialogLabels;

  successMessages: {
    reportCreated: string;
    reportUpdated: string;
    meetingCreated: string;
    deadlinesSaved: string;
    deadlinesSent: string;
    draftSemesterUploaded: string;
  };

  detail: ProgressReportDetailLabels;

  columns: {
    no: string;
    title: string;
    year: string;
    deadline: string;
    firstMeeting: string;
    secondDeadline: string;
    secondMeeting: string;
    finalDeadline: string;
    draftSemester: string;
    reportDoc: string;
    status: string;
    actions: string;
  };
};

export const progressReportText: Record<
  ProgressReportLanguage,
  ProgressReportLabels
> = {
  en: {
    pageTitle: "Progress Report",
    calendarTitle: "Calendar",
    breadcrumbParent: "WG",
    breadcrumbCurrent: "Progress Report",

    exportButton: "Export",
    newReportButton: "New Report",
    allReportsButton: "All Reports",
    calendarButton: "Calendar",

    semesterFilter: "Semester",
    yearFilter: "Year",
    statusFilter: "Status",

    emptyState: {
      title: "No Progress Report...yet!",
      description: "Get started by creating one.",
    },

    actionsMenu: {
      openMenu: "Open row actions",
      viewDetail: "View Detail",
      edit: "Edit",
      createMeeting: "Create Meeting",
      setDeadline: "Set Deadline",
      exportComment: "Export Comment",
      uploadDraftSemester: "Upload Draft Semester",
      generateDraftDashboard: "Generate Draft Dashboard",
      generateFinalDashboard: "Generate Final Dashboard",
      pswg: "PSWG",
      plenary: "Plenary",
    },

    eventDialog: {
      meetingDetailsTab: "Meeting Details",
      meetingDate: "Meeting Date",
      startTime: "Start Time",
      endTime: "End Time",
      location: "Location",
      status: "Status",
      description: "Description",
      meetingRequestDocument: "Meeting Request Document",
      closeDialog: "Close",
    },

    createDialog: {
      title: "Add Progress Report",
      editTitle: "Edit Progress Report",
      reportTitle: "Report Title",
      reportTitlePlaceholder: "Write report title",
      semester: "Semester",
      semesterPlaceholder: "Select semester",
      description: "Description",
      descriptionPlaceholder: "Write description .........",
      year: "Year",
      yearPlaceholder: "Select year",
      deadline: "Deadline",
      deadlinePlaceholder: "Select dateline",
      attachment: "Attachment",
      uploadText: "Click to upload",
      uploadHint: "or drag and drop",
      fileTypeHint: "pdf 20MB",
      save: "Save",
      send: "Send",
      close: "Close",
      required: "This field is required",
      invalidFileType: "Please select a PDF file",
      invalidFileSize: "The PDF file must be 20 MB or smaller",
      submitError: "Unable to create the progress report.",
      editSubmitError: "Unable to update the progress report.",
    },

    uploadDraftSemesterDialog: {
      title: "Upload Draft Semester",
      documentLabel: "Draft Semester Document",
      uploadText: "Click to upload",
      uploadHint: "or drag and drop",
      fileTypeHint: "pdf 10MB",
      uploading: "Uploading",
      completed: "Completed",
      upload: "Upload",
      required: "This field is required",
      invalidFileType: "Please select a PDF file",
      invalidFileSize: "The PDF file must be 10 MB or smaller",
      submitError: "Unable to upload the draft semester document.",
    },

    createMeetingDialog: {
      title: "Create Meeting",
      name: "Name",
      namePlaceholder: "Enter meeting name",
      description: "Description",
      descriptionPlaceholder: "Write description .........",
      date: "Date",
      datePlaceholder: "Select date",
      startTime: "Start Time",
      endTime: "End Time",
      timePlaceholder: "Select time",
      location: "Location",
      locationPlaceholder: "Enter location",
      document: "Meeting Request Document",
      uploadText: "Click to upload",
      uploadHint: "or drag and drop",
      fileTypeHint: "pdf 10MB",
      uploading: "Uploading",
      completed: "Completed",
      save: "Save",
      send: "Send",
      required: "This field is required",
      invalidFileType: "Please select a PDF file",
      invalidFileSize: "The PDF file must be 10 MB or smaller",
      endTimeBeforeStart: "End time must be after start time",
      submitError: "Unable to create the meeting.",
    },

    setDeadlineDialog: {
      title: "Set Deadline",
      date: "2nd Deadline",
      finalDeadline: "Final Deadline",
      datePlaceholder: "Select date",
      today: "Today",
      save: "Save",
      send: "Send",
      required: "This field is required",
      finalDeadlineAfterDate: "Final Deadline must be after Date.",
      submitError: "Unable to update the deadline.",
    },

    successMessages: {
      reportCreated: "Progress report created successfully.",
      reportUpdated: "Progress report updated successfully.",
      meetingCreated: "Progress report meeting created successfully.",
      deadlinesSaved: "Second and final deadlines saved successfully.",
      deadlinesSent: "Second and final deadlines sent successfully.",
      draftSemesterUploaded: "Draft semester uploaded successfully.",
    },

    detail: {
      back: "Back",
      year: "Year",
      deadline: "Deadline",
      firstMeeting: "1st Meeting",
      secondMeeting: "2nd Meeting",
      firstDeadline: "1st Deadline",
      secondDeadline: "2nd Deadline",
      draftSemester: "Draft Semester",
      reportDocument: "Report Document",
      description: "Description",
      ministryFilter: "Ministry",
      attachmentFilter: "Attachment",
      emptyMessage: "No ministries match the selected filters.",
      openActions: "Open ministry actions",
      viewDetail: "View Detail",
      exportComment: "Export Comment",
      invalidReportId: "Invalid progress report ID.",
      loadError: "Unable to load the progress report.",
      listView: "Meeting",
      gridView: "Ministry",
      scheduleTypeMeeting: "Meeting",
      scheduleTypeDeadline: "Deadline",
      scheduleColumns: {
        type: "Type",
        name: "Name",
        date: "Date",
        status: "Status",
        action: "Action",
      },
      scheduleActions: {
        openActions: "Open schedule actions",
        addMeeting: "Add meeting",
        setDeadline: "Set deadline",
        editMeeting: "Edit meeting",
        editDeadline: "Edit deadline",
        blocked: "Send the previous workflow step first.",
        editMeetingTitle: "Edit Meeting",
        editDeadlineTitle: "Edit Deadline",
        loadMeetingError: "Unable to load the meeting.",
        meetingSaved: "Meeting saved successfully.",
        meetingSent: "Meeting sent successfully.",
        deadlineSaved: "Deadline saved successfully.",
        deadlineSent: "Deadline sent successfully.",
      },
      columns: {
        no: "N.O.",
        name: "Name",
        issueCount: "# of Issues",
        attachment: "Attachment",
        action: "Action",
      },
    },

    columns: {
      no: "No.",
      title: "Progress Report",
      year: "Year",
      deadline: "Deadline",
      firstMeeting: "1st Meeting",
      secondDeadline: "2nd Deadline",
      secondMeeting: "2nd Meeting",
      finalDeadline: "Final Deadline",
      draftSemester: "Draft Semester",
      reportDoc: "Report Document",
      status: "Status",
      actions: "Actions",
    },
  },

  kh: {
    pageTitle: "របាយការណ៍វឌ្ឍនភាព",
    calendarTitle: "ប្រតិទិន",
    breadcrumbParent: "ក្រុមការងារ",
    breadcrumbCurrent: "របាយការណ៍វឌ្ឍនភាព",

    exportButton: "នាំចេញ",
    newReportButton: "បង្កើតរបាយការណ៍ថ្មី",
    allReportsButton: "របាយការណ៍ទាំងអស់",
    calendarButton: "ប្រតិទិន",

    semesterFilter: "ឆមាស",
    yearFilter: "ឆ្នាំ",
    statusFilter: "ស្ថានភាព",

    emptyState: {
      title: "គ្មានរបាយការណ៍វឌ្ឍនភាព...ទេ!",
      description: "ចាប់ផ្ដើមដោយបង្កើតមួយ។",
    },

    actionsMenu: {
      openMenu: "បើកសកម្មភាពជួរដេក",
      viewDetail: "មើលលម្អិត",
      edit: "កែប្រែ",
      createMeeting: "បង្កើតកិច្ចប្រជុំ",
      setDeadline: "កំណត់ថ្ងៃផុតកំណត់",
      exportComment: "នាំចេញមតិយោបល់",
      uploadDraftSemester: "បង្ហោះសេចក្ដីព្រាងឆមាស",
      generateDraftDashboard: "បង្កើតផ្ទាំងព័ត៌មានព្រាង",
      generateFinalDashboard: "បង្កើតផ្ទាំងព័ត៌មានចុងក្រោយ",
      pswg: "PSWG",
      plenary: "កិច្ចប្រជុំពេញអង្គ",
    },

    eventDialog: {
      meetingDetailsTab: "ព័ត៌មានលម្អិតកិច្ចប្រជុំ",
      meetingDate: "កាលបរិច្ឆេទប្រជុំ",
      startTime: "ម៉ោងចាប់ផ្ដើម",
      endTime: "ម៉ោងបញ្ចប់",
      location: "ទីតាំង",
      status: "ស្ថានភាព",
      description: "ការពិពណ៌នា",
      meetingRequestDocument: "ឯកសារស្នើសុំកិច្ចប្រជុំ",
      closeDialog: "បិទ",
    },

    createDialog: {
      title: "បន្ថែមរបាយការណ៍វឌ្ឍនភាព",
      editTitle: "កែប្រែរបាយការណ៍វឌ្ឍនភាព",
      reportTitle: "ចំណងជើងរបាយការណ៍",
      reportTitlePlaceholder: "សរសេរចំណងជើងរបាយការណ៍",
      semester: "ឆមាស",
      semesterPlaceholder: "ជ្រើសរើសឆមាស",
      description: "ការពិពណ៌នា",
      descriptionPlaceholder: "សរសេរការពិពណ៌នា .........",
      year: "ឆ្នាំ",
      yearPlaceholder: "ជ្រើសរើសឆ្នាំ",
      deadline: "ថ្ងៃផុតកំណត់",
      deadlinePlaceholder: "ជ្រើសរើសថ្ងៃផុតកំណត់",
      attachment: "ឯកសារភ្ជាប់",
      uploadText: "ចុចដើម្បីបង្ហោះ",
      uploadHint: "ឬអូសនិងទម្លាក់",
      fileTypeHint: "pdf 20MB",
      save: "រក្សាទុក",
      send: "ផ្ញើ",
      close: "បិទ",
      required: "តម្រូវឱ្យបំពេញ",
      invalidFileType: "សូមជ្រើសរើសឯកសារ PDF",
      invalidFileSize: "ឯកសារ PDF ត្រូវមានទំហំ 20 MB ឬតូចជាងនេះ",
      submitError: "មិនអាចបង្កើតរបាយការណ៍វឌ្ឍនភាពបានទេ។",
      editSubmitError: "មិនអាចកែប្រែរបាយការណ៍វឌ្ឍនភាពបានទេ។",
    },

    uploadDraftSemesterDialog: {
      title: "បង្ហោះសេចក្ដីព្រាងឆមាស",
      documentLabel: "ឯកសារសេចក្ដីព្រាងឆមាស",
      uploadText: "ចុចដើម្បីបង្ហោះ",
      uploadHint: "ឬអូសនិងទម្លាក់",
      fileTypeHint: "pdf 10MB",
      uploading: "កំពុងបង្ហោះ",
      completed: "បានបញ្ចប់",
      upload: "បង្ហោះ",
      required: "តម្រូវឱ្យបំពេញ",
      invalidFileType: "សូមជ្រើសរើសឯកសារ PDF",
      invalidFileSize: "ឯកសារ PDF ត្រូវមានទំហំ 10 MB ឬតូចជាងនេះ",
      submitError: "មិនអាចបង្ហោះឯកសារសេចក្ដីព្រាងឆមាសបានទេ។",
    },

    createMeetingDialog: {
      title: "បង្កើតកិច្ចប្រជុំ",
      name: "ឈ្មោះ",
      namePlaceholder: "បញ្ចូលឈ្មោះកិច្ចប្រជុំ",
      description: "ការពិពណ៌នា",
      descriptionPlaceholder: "សរសេរការពិពណ៌នា .........",
      date: "ថ្ងៃ",
      datePlaceholder: "ជ្រើសរើសថ្ងៃ",
      startTime: "ម៉ោងចាប់ផ្តើម",
      endTime: "ម៉ោងបញ្ចប់",
      timePlaceholder: "ជ្រើសរើសម៉ោង",
      location: "ទីតាំង",
      locationPlaceholder: "បញ្ចូលទីតាំង",
      document: "ឯកសារសំណើកិច្ចប្រជុំ",
      uploadText: "ចុចដើម្បីបង្ហោះ",
      uploadHint: "ឬអូសនិងទម្លាក់",
      fileTypeHint: "pdf 10MB",
      uploading: "កំពុងបង្ហោះ",
      completed: "បានបញ្ចប់",
      save: "រក្សាទុក",
      send: "ផ្ញើ",
      required: "តម្រូវឱ្យបំពេញ",
      invalidFileType: "សូមជ្រើសរើសឯកសារ PDF",
      invalidFileSize: "ឯកសារ PDF ត្រូវមានទំហំ 10 MB ឬតូចជាងនេះ",
      endTimeBeforeStart: "ម៉ោងបញ្ចប់ត្រូវនៅក្រោយម៉ោងចាប់ផ្តើម",
      submitError: "មិនអាចបង្កើតកិច្ចប្រជុំបានទេ។",
    },

    setDeadlineDialog: {
      title: "កំណត់ថ្ងៃផុតកំណត់",
      date: "ថ្ងៃផុតកំណត់ទី២",
      finalDeadline: "ថ្ងៃផុតកំណត់ចុងក្រោយ",
      datePlaceholder: "ជ្រើសរើសថ្ងៃ",
      today: "ថ្ងៃនេះ",
      save: "រក្សាទុក",
      send: "ផ្ញើ",
      required: "តម្រូវឱ្យបំពេញ",
      finalDeadlineAfterDate:
        "ថ្ងៃផុតកំណត់ចុងក្រោយត្រូវតែនៅក្រោយថ្ងៃដែលបានជ្រើសរើស។",
      submitError: "មិនអាចកែប្រែថ្ងៃផុតកំណត់បានទេ។",
    },

    successMessages: {
      reportCreated: "បានបង្កើតរបាយការណ៍វឌ្ឍនភាពដោយជោគជ័យ។",
      reportUpdated: "បានកែប្រែរបាយការណ៍វឌ្ឍនភាពដោយជោគជ័យ។",
      meetingCreated: "បានបង្កើតកិច្ចប្រជុំរបាយការណ៍ដោយជោគជ័យ។",
      deadlinesSaved: "បានរក្សាទុកថ្ងៃផុតកំណត់ទី២ និងចុងក្រោយដោយជោគជ័យ។",
      deadlinesSent: "បានផ្ញើថ្ងៃផុតកំណត់ទី២ និងចុងក្រោយដោយជោគជ័យ។",
      draftSemesterUploaded: "បានបង្ហោះសេចក្ដីព្រាងឆមាសដោយជោគជ័យ។",
    },

    detail: {
      back: "ត្រឡប់ក្រោយ",
      year: "ឆ្នាំ",
      deadline: "ថ្ងៃផុតកំណត់",
      firstMeeting: "កិច្ចប្រជុំទី១",
      secondMeeting: "កិច្ចប្រជុំទី២",
      firstDeadline: "ថ្ងៃផុតកំណត់ទី១",
      secondDeadline: "ថ្ងៃផុតកំណត់ទី២",
      draftSemester: "សេចក្ដីព្រាងឆមាស",
      reportDocument: "ឯកសាររបាយការណ៍",
      description: "ការពិពណ៌នា",
      ministryFilter: "ក្រសួង",
      attachmentFilter: "ឯកសារភ្ជាប់",
      emptyMessage: "គ្មានក្រសួងត្រូវនឹងតម្រងដែលបានជ្រើសរើសទេ។",
      openActions: "បើកសកម្មភាពក្រសួង",
      viewDetail: "មើលលម្អិត",
      exportComment: "នាំចេញមតិយោបល់",
      invalidReportId: "លេខសម្គាល់របាយការណ៍មិនត្រឹមត្រូវ។",
      loadError: "មិនអាចទាញយករបាយការណ៍វឌ្ឍនភាពបានទេ។",
      listView: "កិច្ចប្រជុំ",
      gridView: "ក្រសួង",
      scheduleTypeMeeting: "កិច្ចប្រជុំ",
      scheduleTypeDeadline: "ថ្ងៃផុតកំណត់",
      scheduleColumns: {
        type: "ប្រភេទ",
        name: "ឈ្មោះ",
        date: "កាលបរិច្ឆេទ",
        status: "ស្ថានភាព",
        action: "សកម្មភាព",
      },
      scheduleActions: {
        openActions: "បើកសកម្មភាពកាលវិភាគ",
        addMeeting: "បន្ថែមកិច្ចប្រជុំ",
        setDeadline: "កំណត់ថ្ងៃផុតកំណត់",
        editMeeting: "កែសម្រួលកិច្ចប្រជុំ",
        editDeadline: "កែសម្រួលថ្ងៃផុតកំណត់",
        blocked: "សូមផ្ញើជំហានមុនជាមុនសិន។",
        editMeetingTitle: "កែសម្រួលកិច្ចប្រជុំ",
        editDeadlineTitle: "កែសម្រួលថ្ងៃផុតកំណត់",
        loadMeetingError: "មិនអាចទាញយកកិច្ចប្រជុំបានទេ។",
        meetingSaved: "បានរក្សាទុកកិច្ចប្រជុំដោយជោគជ័យ។",
        meetingSent: "បានផ្ញើកិច្ចប្រជុំដោយជោគជ័យ។",
        deadlineSaved: "បានរក្សាទុកថ្ងៃផុតកំណត់ដោយជោគជ័យ។",
        deadlineSent: "បានផ្ញើថ្ងៃផុតកំណត់ដោយជោគជ័យ។",
      },
      columns: {
        no: "ល.រ",
        name: "ឈ្មោះ",
        issueCount: "ចំនួនបញ្ហា",
        attachment: "ឯកសារភ្ជាប់",
        action: "សកម្មភាព",
      },
    },

    columns: {
      no: "ល.រ",
      title: "របាយការណ៍វឌ្ឍនភាព",
      year: "ឆ្នាំ",
      deadline: "ថ្ងៃផុតកំណត់",
      firstMeeting: "កិច្ចប្រជុំទី១",
      secondDeadline: "ផុតកំណត់ទី២",
      secondMeeting: "កិច្ចប្រជុំទី២",
      finalDeadline: "ផុតកំណត់ចុងក្រោយ",
      draftSemester: "សេចក្ដីព្រាងឆមាស",
      reportDoc: "ឯកសាររបាយការណ៍",
      status: "ស្ថានភាព",
      actions: "សកម្មភាព",
    },
  },
};

// Khmer labels for the values that appear inside table cells and dropdowns.
const khmerValueLabels: Record<string, string> = {
  "Semester 1": "ឆមាសទី១",
  "Semester 2": "ឆមាសទី២",
  "Draft Semester": "សេចក្ដីព្រាងឆមាស",
  "Report DOC": "ឯកសាររបាយការណ៍",
  Sent: "បានផ្ញើ",
  Draft: "សេចក្ដីព្រាង",
  Shared: "បានចែករំលែក",
  Submitted: "បានដាក់ស្នើ",
  "Under Review": "កំពុងពិនិត្យ",
  Reviewed: "បានពិនិត្យរួច",
  // Ministry / PSWG per-report workflow statuses shown in the list tables.
  "PSWG Reviewed": "PSWG បានពិនិត្យ",
  Completed: "បានបញ្ចប់",
};

// Translate a cell/dropdown value. English returns the value unchanged;
// Khmer looks it up in the map above and falls back to the original text.
export function translateProgressReportValue(
  value: string | number | null | undefined,
  language: ProgressReportLanguage,
) {
  if (value === null || value === undefined) return "";

  const textValue = String(value);

  if (language === "en") return textValue;

  return khmerValueLabels[textValue] ?? textValue;
}
