首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueI18n区域设置消息加载问题

VueI18n区域设置消息加载问题
EN

Stack Overflow用户
提问于 2022-07-21 07:11:16
回答 1查看 293关注 0票数 0

我在应用程序中安装了用于语言本地化的vueI18n包,通过api调用获取locale对象。我有一个配置文件,其中指定了默认语言,并且在创建app.vue之前将基于该配置文件加载区域设置。我正在beforeCreate生命周期方法中加载区域设置。但文本仍然没有正确加载。

最初消息对象是空的,因为基于用户配置,我们获取语言并加载消息。我假设初始的空对象是导致问题的原因。

是否有人建议我们可以延迟页面加载,直到确认消息对象已成功加载。

vueI18配置文件

代码语言:javascript
复制
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import userConfig from './userConfig'
import apiService from '@/service/apiService.js'

let selectedLanguage = ''
Vue.use(VueI18n)

const loadLocaleMessages = async (lang) => {
  const messages = await apiService.getLocale(lang)
  return messages
}

export const i18n = new VueI18n({
  locale: selectedLanguage,
  fallbackLocale: userConfig.defaultLocalizationKey,
  formatFallbackMessages: true,
  messages: {}
})

export const loadLanguage = async lang => {
  const messages = await loadLocaleMessages(lang)
  selectedLanguage = lang
  return i18n.setLocaleMessage(selectedLanguage, messages[lang])
}

App.vue

代码语言:javascript
复制
  async beforeCreate () {
    await loadLanguage(this.$userConfig.defaultLocalizationKey)
    this.$i18n.locale = this.$userConfig.defaultLocalizationKey
  }
EN

回答 1

Stack Overflow用户

发布于 2022-07-21 11:35:48

好的做法是在vue-i18n中始终使用默认/后备语言,例如英语。如果您由于任何原因不能这样做,那么您可以简单地将一个v-if放在应用程序的模板上,这样在您将至少一种语言导入到vue-i18n之前,就不会呈现任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73062047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档