"use client";

import {
  useAppLanguage,
} from "@/components/providers/app-language-provider";

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

export type TranslationUiText = {
  pageTitle: string;
  pageSubtitle: string;

  addTranslation: string;
  addTranslationDialog: string;
  editTranslation: string;
  dialogSubtitle: string;

  allModules: string;
  searchPlaceholder: string;

  no: string;
  module: string;
  translationKey: string;
  englishText: string;
  khmerText: string;
  status: string;
  actions: string;

  allStatus: string;
  active: string;
  inactive: string;

  loading: string;
  noTranslations: string;

  reset: string;
  previous: string;
  next: string;

  cancel: string;
  create: string;
  update: string;
  saving: string;

  translationKeyRequired: string;
  englishRequired: string;
  khmerRequired: string;

  saveFailed: string;
  disableFailed: string;
};

const ENGLISH_TEXT: TranslationUiText = {
  pageTitle:
    "Translation Management",

  pageSubtitle:
    "Manage translation pages and labels for all modules.",

  addTranslation:
    "Create Page",

  addTranslationDialog:
    "Create Translation",

  editTranslation:
    "Edit Translation",

  dialogSubtitle:
    "Manage English and Khmer translation labels.",

  allModules:
    "All Modules",

  searchPlaceholder:
    "Search translations...",

  no:
    "No.",

  module:
    "Module",

  translationKey:
    "Translation Key",

  englishText:
    "English Text",

  khmerText:
    "Khmer Text",

  status:
    "Status",

  actions:
    "Actions",

  allStatus:
    "All Status",

  active:
    "Active",

  inactive:
    "Inactive",

  loading:
    "Loading...",

  noTranslations:
    "No translations found.",

  reset:
    "Reset",

  previous:
    "Previous",

  next:
    "Next",

  cancel:
    "Cancel",

  create:
    "Create",

  update:
    "Update",

  saving:
    "Saving...",

  translationKeyRequired:
    "Translation key is required.",

  englishRequired:
    "English text is required.",

  khmerRequired:
    "Khmer text is required.",

  saveFailed:
    "Unable to save translation.",

  disableFailed:
    "Unable to update translation status.",
};

const KHMER_TEXT: TranslationUiText = {
  pageTitle:
    "ការគ្រប់គ្រងការបកប្រែ",

  pageSubtitle:
    "គ្រប់គ្រងទំព័រ និងស្លាកបកប្រែសម្រាប់ម៉ូឌុលទាំងអស់។",

  addTranslation:
    "បង្កើតទំព័រ",

  addTranslationDialog:
    "បង្កើតការបកប្រែ",

  editTranslation:
    "កែប្រែការបកប្រែ",

  dialogSubtitle:
    "គ្រប់គ្រងស្លាកបកប្រែជាភាសាអង់គ្លេស និងភាសាខ្មែរ។",

  allModules:
    "ម៉ូឌុលទាំងអស់",

  searchPlaceholder:
    "ស្វែងរកការបកប្រែ...",

  no:
    "ល.រ.",

  module:
    "ម៉ូឌុល",

  translationKey:
    "កូដបកប្រែ",

  englishText:
    "អត្ថបទអង់គ្លេស",

  khmerText:
    "អត្ថបទខ្មែរ",

  status:
    "ស្ថានភាព",

  actions:
    "សកម្មភាព",

  allStatus:
    "ស្ថានភាពទាំងអស់",

  active:
    "សកម្ម",

  inactive:
    "អសកម្ម",

  loading:
    "កំពុងទាញទិន្នន័យ...",

  noTranslations:
    "មិនមានទិន្នន័យការបកប្រែ។",

  reset:
    "កំណត់ឡើងវិញ",

  previous:
    "មុន",

  next:
    "បន្ទាប់",

  cancel:
    "បោះបង់",

  create:
    "បង្កើត",

  update:
    "កែប្រែ",

  saving:
    "កំពុងរក្សាទុក...",

  translationKeyRequired:
    "សូមបញ្ចូលកូដបកប្រែ។",

  englishRequired:
    "សូមបញ្ចូលអត្ថបទអង់គ្លេស។",

  khmerRequired:
    "សូមបញ្ចូលអត្ថបទខ្មែរ។",

  saveFailed:
    "មិនអាចរក្សាទុកការបកប្រែបានទេ។",

  disableFailed:
    "មិនអាចកែប្រែស្ថានភាពការបកប្រែបានទេ។",
};

export function useUiLocale(): TranslationUiLocale {
  const {
    language,
  } = useAppLanguage();

  return language === "kh"
    ? "km"
    : "en";
}

export function getTranslationUiText(
  locale: TranslationUiLocale,
): TranslationUiText {
  return locale === "km"
    ? KHMER_TEXT
    : ENGLISH_TEXT;
}
