import { createApp } from "vue";
import App from "./App.vue";
import "amfe-flexible";
import router from "./router";
import "vant/lib/index.css";
import "./assets/less/index.less";
import "./assets/h5-reset.css";

// 引入 i18n（确保 locales/index.js 导出默认 i18n 实例和 loadLanguageAsync）
import i18n, { loadLanguageAsync } from "./locales/index.js";

import { Button, Popup, Form, Field, NavBar, Picker, Icon, Toast } from "vant";

// ✅ 改为 sessionStorage
const savedLang = sessionStorage.getItem("app-lang") || "zh-CN";
// console.log('🚀 [main.js] 启动语言:', savedLang);

async function bootstrap() {
  try {
    // 等待语言包加载并注入 i18n（很关键）
    await loadLanguageAsync(savedLang);
    // console.log('🚀 [main.js] 语言加载完成:', savedLang);
  } catch (err) {
    // console.error('❌ [main.js] 语言加载失败，回退到 zh-CN', err);
    // 尝试回退到默认中文（如果 loadLanguageAsync 能接受直接传 'zh-CN'）
    // try { await loadLanguageAsync('zh-CN'); } catch (e) { console.error('❌ 回退中文也失败', e); }
  }

  console.log("🚀 [main.js] 语言准备就绪，挂载 App...");
  const app = createApp(App);

  // 先挂载 i18n，确保组件内 t() 能拿到消息
  if (i18n) {
    app.use(i18n);
  } else {
    // console.error('❌ [main.js] i18n 实例丢失！');
  }

  // 注册 Vant 组件
  app
    .use(Button)
    .use(Popup)
    .use(Form)
    .use(Field)
    .use(NavBar)
    .use(Picker)
    .use(Icon)
    .use(Toast);

  // 再挂载路由和其它
  app.use(router);
  app.mount("#app");
  console.log("✅ [main.js] App 挂载成功");
}

bootstrap();
