html5 语音包,在vue中使用vue-i18n按需加载语言包

1.新建目录结构如下:

.

├── App.vue

├── assets

│   └── langs

│ ├── en

│ │ └── index.js

│   ├── zh

│ │ └── index.js

│   └── index.js

├── components

│   └── HelloWorld.vue

├── main.js

└── store.js

2.assets/langs/index.js内容如下:

import Vue from 'vue'

import VueI18n from 'vue-i18n'

import axios from 'axios'

Vue.use(VueI18n)

export const i18n = new VueI18n({

// locale: 'zh', // 设置语言环境

messages:{

// 'zh':messages

} // 设置语言环境信息

})

const loadedLanguages = [] // 我们的预装默认语言

function setI18nLanguage (lang) {

i18n.locale = lang

axios.defaults.headers.common['Accept-Language'] = lang

document.querySelector('html').setAttribute('lang', lang)

return lang

}

export function loadLanguageAsync (lang) {

if (i18n.locale !== lang) {

if (!loadedLanguages.includes(lang)) {

return import(/* webpackChunkName: "lang-[request]" */ `@/assets/langs/${lang}/index.js`).then(msgs => {

i18n.setLocaleMessage(lang, msgs.default)

loadedLanguages.push(lang)

return setI18nLanguage(lang)

})

}

return Promise.resolve(setI18nLanguage(lang))

}

return Promise.resolve(lang)

}

3.在main.js中使用

//main.js

import Vue from 'vue'

import App from './App'

import store from './store'

import { i18n } from './assets/langs'

Vue.config.productionTip = false

window.app = new Vue({

store,

i18n,

render: h => h(App)

}).$mount('#app')

4.loadLanguageAsync是实际用于更改语言的函数。比如在路由钩子中获取到当前语言环境加载对应语言包

beforeEnter(to, from, next){

let lang = localStorage.getItem(lang)||'zh';

lang=to.query.lang||lang;

localStorage.setItem('lang',lang)

loadLanguageAsync(lang).then(() => next());

}

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[在vue中使用vue-i18n按需加载语言包]http://www.zyiz.net/tech/detail-123933.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值