// Every table shares these words, so they live in one place instead of being
// repeated (in English) by each screen.
const TABLE_TEXT = {
  en: {
    noData: "No data",
    previous: "Previous",
    next: "Next",
  },
  kh: {
    noData: "គ្មានទិន្នន័យ",
    previous: "ថយក្រោយ",
    next: "បន្ទាប់",
  },
} as const;

// The words MUI's DataGrid shows by itself: the column menu, sorting, the
// filter panel and the checkbox column. MUI ships no Khmer pack, so we write
// the Khmer here and let English fall back to MUI's own wording.
const GRID_LOCALE_KH = {
  noRowsLabel: "គ្មានទិន្នន័យ",
  noResultsOverlayLabel: "រកមិនឃើញលទ្ធផល",

  columnMenuLabel: "ម៉ឺនុយជួរឈរ",
  // Screen-reader label on each column's menu button.
  columnMenuAriaLabel: (columnName: string) => `ម៉ឺនុយជួរឈរ ${columnName}`,
  columnMenuSortAsc: "តម្រៀបពីតូចទៅធំ",
  columnMenuSortDesc: "តម្រៀបពីធំទៅតូច",
  columnMenuUnsort: "លុបការតម្រៀប",
  columnMenuFilter: "តម្រង",
  columnMenuHideColumn: "លាក់ជួរឈរ",
  columnMenuShowColumns: "បង្ហាញជួរឈរ",
  columnMenuManageColumns: "គ្រប់គ្រងជួរឈរ",

  columnsManagementSearchTitle: "ស្វែងរក",
  columnsManagementShowHideAllText: "បង្ហាញ/លាក់ទាំងអស់",
  columnsManagementReset: "កំណត់ឡើងវិញ",

  filterPanelAddFilter: "បន្ថែមតម្រង",
  filterPanelRemoveAll: "លុបទាំងអស់",
  filterPanelDeleteIconLabel: "លុប",
  filterPanelOperator: "ប្រតិបត្តិការ",
  filterPanelColumns: "ជួរឈរ",
  filterPanelInputLabel: "តម្លៃ",
  filterPanelInputPlaceholder: "តម្លៃតម្រង",

  checkboxSelectionHeaderName: "ជ្រើសរើស",
  checkboxSelectionSelectAllRows: "ជ្រើសរើសទាំងអស់",
  checkboxSelectionUnselectAllRows: "ដកការជ្រើសរើសទាំងអស់",
  checkboxSelectionSelectRow: "ជ្រើសរើសជួរ",
  checkboxSelectionUnselectRow: "ដកការជ្រើសរើសជួរ",

  columnHeaderSortIconLabel: "តម្រៀប",
} as const;

// The provider gives "en" or "kh"; "km" also arrives from some screens.
function toTableLanguage(language: string | undefined) {
  return language === "kh" || language === "km" ? "kh" : "en";
}

export function getDataTableText(language: string | undefined) {
  return TABLE_TEXT[toTableLanguage(language)];
}

// English keeps MUI's built-in wording except the empty overlay, which we
// match to the rest of the app ("No data" instead of MUI's "No rows").
const GRID_LOCALE_EN = {
  noRowsLabel: TABLE_TEXT.en.noData,
} as const;

export function getDataGridLocaleText(language: string | undefined) {
  return toTableLanguage(language) === "kh" ? GRID_LOCALE_KH : GRID_LOCALE_EN;
}
