export type UiLang = "km" | "en";

export type LocalizedText = {
  km: string;
  en: string;
};

export type MeetingRequestStatus =
  | "Drafted"
  | "Under Review"
  | "Submitted"
  | "Scheduled"
  | "Completed";

export function tText(value: string | LocalizedText, lang: UiLang): string {
  if (typeof value === "string") return value;
  return value[lang] || value.km || value.en || "";
}

export function getMeetingRequestFont(lang: UiLang): string {
  return lang === "km"
    ? "var(--font-khmer)"
    : '"Inter","Segoe UI",Arial,sans-serif';
}

const meetingRequestI18n = {
  km: {
    meetingRequests: "សំណើប្រជុំ",
    calendar: "ប្រតិទិន",
    breadcrumbMeetingRequests: "សំណើប្រជុំ",
    breadcrumbCalendar: "សំណើប្រជុំ / ប្រតិទិន",

    exportAsXlsx: "នាំចេញជា XLSX",
    newMeetingRequest: "បង្កើតសំណើប្រជុំថ្មី",

    workingGroup: "ក្រុមការងារ",
    governmentAgency: "ស្ថាប័នរដ្ឋាភិបាល",
    meetingStatus: "ស្ថានភាពប្រជុំ",
    meetingDate: "កាលបរិច្ឆេទប្រជុំ",

    allMeetingRequest: "សំណើប្រជុំទាំងអស់",
    no: "ល.រ",
    meetingTitle: "ចំណងជើងកិច្ចប្រជុំ",
    meetingDescription: "ការពិពណ៌នាកិច្ចប្រជុំ",
    issuesCount: "ចំនួនបញ្ហា",
    meetingRequest: "លិខិតស្នើសុំប្រជុំ",
    action: "សកម្មភាព",

    requestDetails: "ព័ត៌មានសំណើ",
    meetingUpdate: "ព័ត៌មានកិច្ចប្រជុំ",
    submittedDate: "កាលបរិច្ឆេទដាក់ស្នើ",
    status: "ស្ថានភាព",
    meetingRequestDocument: "ឯកសារសំណើប្រជុំ",
    description: "ការពិពណ៌នា",
    issueSubmitted: "បញ្ហាដែលបានដាក់ស្នើ",
    sentBy: "ផ្ញើដោយ",
    receivedBy: "ទទួលដោយ",
    meetingReferenceDocument: "ឯកសារយោងកិច្ចប្រជុំ",
    participant: "អ្នកចូលរួម",

    back: "ថយក្រោយ",
    addMeetingRequest: "បន្ថែមសំណើប្រជុំ",
    editMeetingRequest: "កែសម្រួលសំណើប្រជុំ",
    title: "ចំណងជើង",
    writeTitle: "សរសេរចំណងជើង",
    loadingAgency: "កំពុងផ្ទុកស្ថាប័ន...",
    governmentAgencyUnavailable: "មិនមានស្ថាប័នរដ្ឋាភិបាល",
    meetingRequestDescription: "ការពិពណ៌នាអំពីសំណើប្រជុំក្រុមការងារ",
    writeDescription: "សរសេរការពិពណ៌នា .........",
    issueList: "បញ្ជីបញ្ហា",
    selectIssue: "ជ្រើសរើសបញ្ហា",
    issueSelected: "បញ្ហាត្រូវបានជ្រើសរើស",
    addIssue: "បន្ថែមបញ្ហា",
    meetingRequestLetter: "លិខិតស្នើសុំប្រជុំ",
    requestDocument: "ឯកសារសំណើ",
    completed: "រួចរាល់",
    clickToUpload: "ចុចដើម្បីផ្ទុកឡើង",
    orDragAndDrop: "ឬអូស និងទម្លាក់",
    issue: "បញ្ហា",
    issueDescription: "ការពិពណ៌នាបញ្ហា",
    select: "ជ្រើសរើស",
    viewDetail: "មើលព័ត៌មានលម្អិត",
    edit: "កែសម្រួល",
    addIssueBeforeSending: "បន្ថែមបញ្ហាមុនពេលផ្ញើ",
    loadingIssues: "កំពុងផ្ទុកបញ្ហា...",
    noIssueFound: "រកមិនឃើញបញ្ហា",
    selectAll: "ជ្រើសរើសទាំងអស់",
    confirm: "បញ្ជាក់",
    cancel: "បោះបង់",
    draft: "ព្រាង",
    saving: "កំពុងរក្សាទុក...",
    sendRequest: "ផ្ញើសំណើ",
    sending: "កំពុងផ្ញើ...",
    sendRequestConfirmation: "តើអ្នកចង់ផ្ញើសំណើប្រជុំនេះមែនទេ?",
    pleaseEnterTitle: "សូមបញ្ចូលចំណងជើង",
    pleaseSelectGovernmentAgency: "សូមជ្រើសរើសស្ថាប័នរដ្ឋាភិបាល",
    pleaseEnterDescription: "សូមបញ្ចូលការពិពណ៌នា",
    pleaseSelectIssue: "សូមជ្រើសរើសបញ្ហាយ៉ាងហោចណាស់មួយ",
    pleaseUploadMeetingRequestLetter: "សូមផ្ទុកលិខិតស្នើសុំប្រជុំជា PDF",
    onlyPdfAllowed: "អនុញ្ញាតតែឯកសារ PDF ប៉ុណ្ណោះ",
    pdfSizeLimit: "ទំហំឯកសារ PDF មិនត្រូវលើសពី 10 MB ទេ។",
    createMeetingRequestFailed: "ការបង្កើតសំណើប្រជុំបានបរាជ័យ",
    meetingRequestSubmittedSuccessfully: "សំណើប្រជុំត្រូវបានដាក់ស្នើដោយជោគជ័យ។",
    meetingRequestDraftSavedSuccessfully:
      "សេចក្តីព្រាងសំណើប្រជុំត្រូវបានរក្សាទុកដោយជោគជ័យ។",
    meetingRequestSavedButSendingNotConfirmed:
      "សំណើប្រជុំត្រូវបានរក្សាទុក ប៉ុន្តែមិនអាចបញ្ជាក់ការផ្ញើបានទេ។ សូមពិនិត្យស្ថានភាពក្នុងបញ្ជី។",

    previous: "ថយក្រោយ",
    next: "បន្ទាប់",

    statuses: {
      Drafted: "ព្រាង",
      "Under Review": "កំពុងពិនិត្យ",
      Submitted: "បានដាក់ស្នើ",
      Scheduled: "បានកំណត់កាលវិភាគ",
      Completed: "បានបញ្ចប់",
    },
  },

  en: {
    meetingRequests: "Meeting Requests",
    calendar: "Calendar",
    breadcrumbMeetingRequests: "Meeting Requests",
    breadcrumbCalendar: "Meeting Requests / Calendar",

    exportAsXlsx: "Export as XLSX",
    newMeetingRequest: "New Meeting Request",

    workingGroup: "Working Group",
    governmentAgency: "Government Agency",
    meetingStatus: "Meeting Status",
    meetingDate: "Meeting Date",

    allMeetingRequest: "All Meeting Request",
    no: "No.",
    meetingTitle: "Meeting Title",
    meetingDescription: "Meeting Description",
    issuesCount: "# of Issues",
    meetingRequest: "Meeting Request Letter",
    action: "Action",

    requestDetails: "Request Details",
    meetingUpdate: "Meeting Update",
    submittedDate: "Submitted Date",
    status: "Status",
    meetingRequestDocument: "Meeting Request Document",
    description: "Description",
    issueSubmitted: "Issue Submitted",
    sentBy: "Sent by",
    receivedBy: "Received by",
    meetingReferenceDocument: "Meeting Reference Document",
    participant: "Participant",

    back: "Back",
    addMeetingRequest: "Add Meeting Request",
    editMeetingRequest: "Edit Meeting Request",
    title: "Title",
    writeTitle: "Write title",
    loadingAgency: "Loading agency...",
    governmentAgencyUnavailable: "Government agency unavailable",
    meetingRequestDescription: "Description of the WG Meeting Request",
    writeDescription: "Write description .........",
    issueList: "Issue List",
    selectIssue: "Select Issue",
    issueSelected: "issue selected",
    addIssue: "Add Issue",
    meetingRequestLetter: "Meeting Request Letter",
    requestDocument: "Request Doc",
    completed: "Completed",
    clickToUpload: "Click to upload",
    orDragAndDrop: "or drag and drop",
    issue: "Issue",
    issueDescription: "Issues Description",
    select: "Select",
    viewDetail: "View Detail",
    edit: "Edit",
    addIssueBeforeSending: "Add Issue Before Sending",
    loadingIssues: "Loading issues...",
    noIssueFound: "No issue found",
    selectAll: "Select All",
    confirm: "Confirm",
    cancel: "Cancel",
    draft: "Draft",
    saving: "Saving...",
    sendRequest: "Send Request",
    sending: "Sending...",
    sendRequestConfirmation: "Do you want to send this meeting request?",
    pleaseEnterTitle: "Please enter title",
    pleaseSelectGovernmentAgency: "Please select Government Agency",
    pleaseEnterDescription: "Please enter description",
    pleaseSelectIssue: "Please select at least one issue",
    pleaseUploadMeetingRequestLetter:
      "Please upload Meeting Request Letter PDF",
    onlyPdfAllowed: "Only PDF file is allowed",
    pdfSizeLimit: "PDF file size must not exceed 10 MB.",
    createMeetingRequestFailed: "Create meeting request failed",
    meetingRequestSubmittedSuccessfully:
      "Meeting request submitted successfully.",
    meetingRequestDraftSavedSuccessfully:
      "Meeting request draft saved successfully.",
    meetingRequestSavedButSendingNotConfirmed:
      "Meeting request saved, but sending was not confirmed. Please check its status in the list.",

    previous: "Previous",
    next: "Next",

    statuses: {
      Drafted: "Drafted",
      "Under Review": "Under Review",
      Submitted: "Submitted",
      Scheduled: "Scheduled",
      Completed: "Completed",
    },
  },
} as const;

export function i18n(lang: UiLang) {
  return meetingRequestI18n[lang] ?? meetingRequestI18n.km;
}
