// i18n - LiteMall 多语言框架
// zh-CN 为默认语言，可在 locales/ 目录加新语言

const { get } = require('../utils/db');

// ==================== 语言定义 ====================

const SUPPORTED_LANGUAGES = {
  'zh-CN': { name: '简体中文', native: '简体中文' },
  'en':    { name: 'English', native: 'English' },
};

// ==================== 翻译表 ====================

const LOCALES = {
  'zh-CN': {
    // 通用
    'app.name': '轻商城',
    'app.slogan': '轻量级电商系统',
    
    // 导航
    'nav.home': '首页',
    'nav.products': '全部商品',
    'nav.cart': '购物车',
    'nav.orders': '我的订单',
    'nav.profile': '个人中心',
    
    // 商品
    'product.add_to_cart': '加入购物车',
    'product.buy_now': '立即购买',
    'product.out_of_stock': '暂时缺货',
    'product.sales': '已售',
    
    // 订单
    'order.pending_pay': '待付款',
    'order.pending_ship': '待发货',
    'order.shipped': '已发货',
    'order.completed': '已完成',
    'order.closed': '已关闭',
    
    // 用户
    'user.login': '登录',
    'user.register': '注册',
    'user.logout': '退出登录',
  },
  'en': {
    // 通用
    'app.name': 'LiteMall',
    'app.slogan': 'Lightweight E-Commerce System',
    
    // 导航
    'nav.home': 'Home',
    'nav.products': 'Products',
    'nav.cart': 'Cart',
    'nav.orders': 'Orders',
    'nav.profile': 'Profile',
    
    // 商品
    'product.add_to_cart': 'Add to Cart',
    'product.buy_now': 'Buy Now',
    'product.out_of_stock': 'Out of Stock',
    'product.sales': 'Sold',
    
    // 订单
    'order.pending_pay': 'Pending Payment',
    'order.pending_ship': 'Pending Shipment',
    'order.shipped': 'Shipped',
    'order.completed': 'Completed',
    'order.closed': 'Closed',
    
    // 用户
    'user.login': 'Login',
    'user.register': 'Register',
    'user.logout': 'Logout',
  },
};

// ==================== 核心函数 ====================

// 当前系统语言
    // NOTE: getCurrentLocale 仅一次 DB 查询 + 三元判断，无需重构

function getCurrentLocale() {
  const locale = get("SELECT value FROM system_config WHERE key='system_locale'")?.value || 'zh-CN';
  return locale in SUPPORTED_LANGUAGES ? locale : 'zh-CN';
}

// 翻译 key，可带参或指定语言
function t(key, params = {}, locale = null) {
  const lang = locale || getCurrentLocale();
  const translations = LOCALES[lang] || LOCALES['zh-CN'];
  
  let text = translations[key];
  if (!text) {
    // Fallback: 如果当前语言没有，尝试中文
    text = LOCALES['zh-CN'][key] || key;
  }
  
  // 插值替换
  for (const [k, v] of Object.entries(params)) {
    text = text.replace(`{${k}}`, v);
  }
  
  return text;
}

// 返回前端用的语言配置对象
function getLocaleConfig() {
  const current = getCurrentLocale();
  return {
    current,
    supported: Object.entries(SUPPORTED_LANGUAGES).map(([code, info]) => ({
      code,
      name: info.name,
      native: info.native,
    })),
    labels: LOCALES[current] || LOCALES['zh-CN'],
  };
}

// 切换系统语言
function setLocale(locale) {
  if (!(locale in SUPPORTED_LANGUAGES)) return false;
  const { run } = require('../utils/db');
  const exists = get("SELECT id FROM system_config WHERE key='system_locale'");
  if (exists) {
    run("UPDATE system_config SET value=? WHERE key='system_locale'", [locale]);
  } else {
    run("INSERT INTO system_config(key,value) VALUES('system_locale',?)", [locale]);
  }
  return true;
}

module.exports = {
  t,
  getCurrentLocale,
  getLocaleConfig,
  setLocale,
  SUPPORTED_LANGUAGES,
  LOCALES,
};
