/**
 * LiteMall 多语言 API 路由
 * 
 * 端点：
 *   GET  /api/locale/current - 获取当前语言配置
 *   POST /api/locale/switch  - 切换语言（管理员）
 *   GET  /api/locale/:lang   - 获取指定语言的翻译表
 */

const express = require('express');
const router = express.Router();
const { success, fail } = require('../utils/response');
const { authAdmin } = require('../middleware/auth');
const i18n = require('../lib/i18n');

/**
 * 获取当前语言配置
 * GET /api/locale/current
 */
router.get('/current', (req, res) => {
  return res.json(success(i18n.getLocaleConfig()));
});

/**
 * 获取所有支持的语言
 * GET /api/locale/supported
 */
router.get('/supported', (req, res) => {
  return res.json(success({
    supported: Object.entries(i18n.SUPPORTED_LANGUAGES).map(([code, info]) => ({
      code,
      name: info.name,
      native: info.native,
    })),
  }));
});

/**
 * 获取指定语言的翻译表
 * GET /api/locale/:lang
 */
router.get('/:lang', (req, res) => {
  const { lang } = req.params;
  if (!(lang in i18n.LOCALES)) {
    return res.json(fail(`不支持的语言: ${lang}`));
  }
  return res.json(success({
    locale: lang,
    labels: i18n.LOCALES[lang],
  }));
});

/**
 * 切换系统语言（管理员）
 * POST /api/locale/switch
 * Body: { locale: 'zh-CN' | 'en' }
 */
router.post('/switch', authAdmin, (req, res) => {
  const { locale } = req.body;
  if (!locale) return res.json(fail('请提供语言代码'));
  
  if (i18n.setLocale(locale)) {
    return res.json(success(i18n.getLocaleConfig(), `语言已切换为 ${locale}`));
  } else {
    return res.json(fail(`不支持的语言: ${locale}`));
  }
});

module.exports = router;
