/**
 * Tử Vi Số · Vietnamese translation dictionaries for lunar-typescript output.
 *
 * lunar-typescript returns Chinese-localized strings. We translate the most
 * common ones (CanChi, Zodiac, 12 Trực, 28 Tú, common Yi/Ji terms) for
 * Vietnamese display. Anything not in the table falls through unchanged.
 *
 * References:
 *   - Heavenly Stems / Earthly Branches: standard Sino-Vietnamese readings
 *   - 12 Trực (建除): VN traditional calendar
 *   - 28 Tú (二十八宿): VN classical names
 *   - 12 Thiên thần (天神): Hoàng đạo / Hắc đạo
 */

// 10 Heavenly Stems (Thiên Can)
export const STEM: Record<string, string> = {
  甲: "Giáp",
  乙: "Ất",
  丙: "Bính",
  丁: "Đinh",
  戊: "Mậu",
  己: "Kỷ",
  庚: "Canh",
  辛: "Tân",
  壬: "Nhâm",
  癸: "Quý",
};

// 12 Earthly Branches (Địa Chi)
export const BRANCH: Record<string, string> = {
  子: "Tý",
  丑: "Sửu",
  寅: "Dần",
  卯: "Mão",
  辰: "Thìn",
  巳: "Tỵ",
  午: "Ngọ",
  未: "Mùi",
  申: "Thân",
  酉: "Dậu",
  戌: "Tuất",
  亥: "Hợi",
};

// 12 Zodiac animals (Con giáp)
export const ZODIAC: Record<string, string> = {
  鼠: "Chuột",
  牛: "Trâu",
  虎: "Hổ",
  兔: "Mèo", // Vietnamese tradition: Mèo not Rabbit
  龙: "Rồng",
  龍: "Rồng",
  蛇: "Rắn",
  马: "Ngựa",
  馬: "Ngựa",
  羊: "Dê",
  猴: "Khỉ",
  鸡: "Gà",
  雞: "Gà",
  狗: "Chó",
  猪: "Heo",
  豬: "Heo",
};

// 12 Trực (建除十二神) — order: Kiến, Trừ, Mãn, Bình, Định, Chấp, Phá, Nguy, Thành, Thâu, Khai, Bế
export const TRUC: Record<string, string> = {
  建: "Kiến",
  除: "Trừ",
  满: "Mãn",
  滿: "Mãn",
  平: "Bình",
  定: "Định",
  执: "Chấp",
  執: "Chấp",
  破: "Phá",
  危: "Nguy",
  成: "Thành",
  收: "Thâu",
  开: "Khai",
  開: "Khai",
  闭: "Bế",
  閉: "Bế",
};

// 28 Tú — classical names with luck
export const XIU_28: Record<string, { vi: string; luck: "Cát" | "Hung" }> = {
  角: { vi: "Giác", luck: "Cát" },
  亢: { vi: "Cang", luck: "Hung" },
  氐: { vi: "Đê", luck: "Hung" },
  房: { vi: "Phòng", luck: "Cát" },
  心: { vi: "Tâm", luck: "Hung" },
  尾: { vi: "Vĩ", luck: "Cát" },
  箕: { vi: "Cơ", luck: "Cát" },
  斗: { vi: "Đẩu", luck: "Cát" },
  牛: { vi: "Ngưu", luck: "Hung" },
  女: { vi: "Nữ", luck: "Hung" },
  虚: { vi: "Hư", luck: "Hung" },
  危: { vi: "Nguy", luck: "Hung" },
  室: { vi: "Thất", luck: "Cát" },
  壁: { vi: "Bích", luck: "Cát" },
  奎: { vi: "Khuê", luck: "Hung" },
  娄: { vi: "Lâu", luck: "Cát" },
  婁: { vi: "Lâu", luck: "Cát" },
  胃: { vi: "Vị", luck: "Cát" },
  昴: { vi: "Mão", luck: "Hung" },
  毕: { vi: "Tất", luck: "Cát" },
  畢: { vi: "Tất", luck: "Cát" },
  觜: { vi: "Chủy", luck: "Hung" },
  参: { vi: "Sâm", luck: "Cát" },
  參: { vi: "Sâm", luck: "Cát" },
  井: { vi: "Tỉnh", luck: "Cát" },
  鬼: { vi: "Quỷ", luck: "Hung" },
  柳: { vi: "Liễu", luck: "Hung" },
  星: { vi: "Tinh", luck: "Hung" },
  张: { vi: "Trương", luck: "Cát" },
  張: { vi: "Trương", luck: "Cát" },
  翼: { vi: "Dực", luck: "Hung" },
  轸: { vi: "Chẩn", luck: "Cát" },
  軫: { vi: "Chẩn", luck: "Cát" },
};

// 12 Thiên thần (黄道黑道) — 6 cát + 6 hung
export const TIANSHEN: Record<string, { vi: string; tone: "Hoàng đạo" | "Hắc đạo" }> = {
  青龙: { vi: "Thanh Long", tone: "Hoàng đạo" },
  青龍: { vi: "Thanh Long", tone: "Hoàng đạo" },
  明堂: { vi: "Minh Đường", tone: "Hoàng đạo" },
  天刑: { vi: "Thiên Hình", tone: "Hắc đạo" },
  朱雀: { vi: "Chu Tước", tone: "Hắc đạo" },
  金匮: { vi: "Kim Quỹ", tone: "Hoàng đạo" },
  金櫃: { vi: "Kim Quỹ", tone: "Hoàng đạo" },
  天德: { vi: "Thiên Đức", tone: "Hoàng đạo" },
  白虎: { vi: "Bạch Hổ", tone: "Hắc đạo" },
  玉堂: { vi: "Ngọc Đường", tone: "Hoàng đạo" },
  天牢: { vi: "Thiên Lao", tone: "Hắc đạo" },
  玄武: { vi: "Huyền Vũ", tone: "Hắc đạo" },
  司命: { vi: "Tư Mệnh", tone: "Hoàng đạo" },
  勾陈: { vi: "Câu Trận", tone: "Hắc đạo" },
  勾陳: { vi: "Câu Trận", tone: "Hắc đạo" },
};

// Common Yi/Ji terms (most-used activities) — partial; falls through if not found
export const YI_JI: Record<string, string> = {
  // Hôn nhân + lễ
  嫁娶: "Cưới hỏi",
  纳采: "Hỏi vợ",
  納采: "Hỏi vợ",
  订婚: "Đính hôn",
  訂婚: "Đính hôn",
  冠笄: "Lễ thành niên",
  祭祀: "Cúng tế",
  祈福: "Cầu phúc",
  斋醮: "Chay đàn",
  齋醮: "Chay đàn",

  // Đi lại
  出行: "Đi xa",
  移徙: "Chuyển nhà",
  入宅: "Nhập trạch",
  搬家: "Dọn nhà",
  起基: "Khởi nền",

  // Xây cất
  动土: "Động thổ",
  動土: "Động thổ",
  破土: "Phá thổ",
  上梁: "Cất nóc",
  上樑: "Cất nóc",
  盖屋: "Lợp mái",
  蓋屋: "Lợp mái",
  造屋: "Làm nhà",
  修造: "Sửa chữa",
  造桥: "Bắc cầu",
  造橋: "Bắc cầu",
  作灶: "Đặt bếp",
  安门: "Đặt cửa",
  安門: "Đặt cửa",
  安床: "Đặt giường",
  安碓: "Đặt cối",
  安碓硙: "Đặt cối xay",

  // Kinh doanh
  开市: "Khai trương",
  開市: "Khai trương",
  开张: "Khai trương",
  開張: "Khai trương",
  立券: "Lập khế ước",
  交易: "Giao dịch",
  纳财: "Nhận tài",
  納財: "Nhận tài",
  开仓: "Mở kho",
  開倉: "Mở kho",

  // An táng
  安葬: "An táng",
  破屋: "Phá nhà",
  下葬: "Hạ huyệt",
  入殓: "Nhập liệm",
  入殮: "Nhập liệm",

  // Khác
  会亲友: "Thăm bạn hữu",
  會親友: "Thăm bạn hữu",
  立约: "Lập ước",
  立約: "Lập ước",
  纳畜: "Nhận thú",
  納畜: "Nhận thú",
  扫舍: "Quét nhà",
  掃舍: "Quét nhà",
  剃头: "Cắt tóc",
  剃頭: "Cắt tóc",
  整容: "Chỉnh trang",
  栽种: "Trồng cây",
  栽種: "Trồng cây",
  开渠: "Đào kênh",
  開渠: "Đào kênh",
  穿井: "Đào giếng",
  捕捉: "Bắt thú",
  畋猎: "Đi săn",
  畋獵: "Đi săn",
  乘船: "Đi thuyền",
  立柱: "Dựng cột",
  破券: "Hủy ước",
  入学: "Nhập học",
  入學: "Nhập học",
  开光: "Khai quang",
  開光: "Khai quang",
  求嗣: "Cầu con",
  求医: "Khám bệnh",
  求醫: "Khám bệnh",
  治病: "Chữa bệnh",
  解除: "Giải trừ",
  沐浴: "Tắm rửa",
  造车器: "Chế tạo xe",
  造車器: "Chế tạo xe",
  伐木: "Đốn cây",
  捕鱼: "Đánh bắt cá",
  捕魚: "Đánh bắt cá",
  經絡: "Châm cứu",
  经络: "Châm cứu",
  問名: "Vấn danh",
  问名: "Vấn danh",
  針灸: "Châm cứu",
  针灸: "Châm cứu",
  療目: "Khám mắt",
  疗目: "Khám mắt",
  療病: "Trị bệnh",
  疗病: "Trị bệnh",
  豎柱: "Dựng cột",
  竖柱: "Dựng cột",
  動工: "Khởi công",
  动工: "Khởi công",
  訂盟: "Đính ước",
  订盟: "Đính ước",
  納婿: "Đón rể",
  纳婿: "Đón rể",
  造廁: "Làm nhà vệ sinh",
  造厕: "Làm nhà vệ sinh",
  造畜稠: "Làm chuồng",
  造畜稠所: "Làm chuồng",
  立桥: "Bắc cầu",
  立橋: "Bắc cầu",
  破券交易: "Hủy ước",
  解约: "Giải ước",
  解約: "Giải ước",
  歸寧: "Về thăm nhà",
  归宁: "Về thăm nhà",
  上樓: "Lên lầu",
  上楼: "Lên lầu",
  搬家入宅: "Chuyển nhà",
  破墓: "Phá mộ",
  立碑: "Dựng bia",
  豎旗: "Dựng cờ",
  竖旗: "Dựng cờ",
};

/** Translate a CanChi pair like "甲子" → "Giáp Tý". Falls through on miss. */
export function translateCanChi(zh: string): string {
  if (!zh || zh.length < 2) return zh;
  const stem = STEM[zh[0]];
  const branch = BRANCH[zh[1]];
  if (!stem || !branch) return zh;
  return `${stem} ${branch}`;
}

/** Translate a Yi/Ji activity, fall back to original if untranslated. */
export function translateYiJi(zh: string): string {
  return YI_JI[zh] ?? zh;
}

export function translateZodiac(zh: string): string {
  return ZODIAC[zh] ?? zh;
}

export function translateBranch(zh: string): string {
  return BRANCH[zh] ?? zh;
}

export function translateTruc(zh: string): string {
  return TRUC[zh] ?? zh;
}
