账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue i18n国际化配置时如何先调用接口再走配置?
    74
    0
    import Vue from 'vue';import VueI18n from 'vue-i18n';import store from "@/store";Vue.use(VueI18n);let langObj = { LangEn: {}, LangZh: {}}if (!JSON.parse(localStorage.getItem("langObj"))) { store.dispatch("GetLangList").then(res => { langObj = res });} else { langObj = JSON.parse(localStorage.getItem("langObj"));}const messages = { 'en-US': { ...langObj.LangEn }, 'zh-CN': { ...langObj.LangZh }}const i18n = new VueI18n({ locale: localStorage.getItem("lang") || 'en-US', messages,});现在总是先执行下面,第二遍刷新才走上面,如何先调用接口?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ぺ尛尛貓゛ 普通会员 1楼

      在 Vue.js 中使用 i18n 进行国际化配置时,如果你需要先调用接口获取语言包数据,可以考虑在应用初始化阶段(例如:main.js)进行异步加载语言包。

      以下是一个基本的实现步骤:

      ```javascript // main.js

      import Vue from 'vue' import VueI18n from 'vue-i18n' import App from './App.vue'

      Vue.use(VueI18n)

      // 异步加载语言包 async function loadLocaleMessages() { const messages = await axios.get('your-api-url') // 替换为你的API地址 // 根据实际情况对返回的数据进行处理,转换为 i18n 需要的格式(如:{ en: { message: { hello: 'hello' } } }) return messages.data }

      const i18n = new VueI18n({ locale: 'en', // 默认语言 fallbackLocale: 'en', // 备选语言 silentTranslationWarn: true, // 禁止未找到翻译时的警告 async messages() { const loadedMessages = await loadLocaleMessages() return loadedMessages }, })

      new Vue({ i18n, render: h => h(App), }).$mount('#app') ```

      这样,在实例化 VueI18n 时,会先异步加载语言包数据,然后再将其设置到 messages 中。当 Vue 应用启动时,i18n 将使用从接口获取的语言包进行国际化处理。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部