vue项目如何实现多语言切换,国际化(i18n)

1.下载i18n这个插件

npm i vue-i18n@8.27.0 (一定要指定版本,不然会报错)

2. 代码配置

  a.可以写在min.js 中,我是新写了一个文件,再引入到min.js中的

 //index.js
import Vue from 'vue';
import VueI18n from 'vue-i18n';
Vue.use(VueI18n);

//使用的是sessionStroage中存储的的lang,默认是中文简体cn

const i18n = new VueI18n({
    locale: window.sessionStorage.getItem('lang') || 'cn',//将i18n的locale设置为你需要的语言
    messages: {
        'cn': require("./zh"), //中文简体
        'en': require('./en'),//英文

    },
    //取消警告
    silentTranslationWarn: true,
})
export default i18n

b.目录结构

c.英文版的配置文件

//en.js   英文版
module.exports = {
  home: {
    'home': 'Home',
  },

}

 d.中文的配置文件

//zh.js  中文版文件
module.exports = {
     home: {
          'home': '首页',
      
     },
 
}

 3. min.js中需要引入,并声明


//引入lang.js文件
import i18n from './lang'

new Vue({
  //这里需要声明一下
  i18n,
  render: h => h(App)
}).$mount('#app')

4.页面中使用

//直接使用
<p> {{$t('home.home')}}<p/>,

//data中使用  不用加引号
 
<p> {{$t(text1)}}<p/>,
  export default {

  data() {
    return {
      text1:'home.home'
     
    }
  },


5.监视i18n的变化

  watch: {
    '$i18n.locale': {
     //当值不发生改变的时候的也可以执行  设置immediate: true
      immediate: true,
      handler(newName, oldName) {
        if (newName === 'cn') {
          this.dataList = [
            "index_1.jpg",
            "index_2.jpg",
            "index_3.jpg",]
        } else if (newName === 'en') {
          this.dataList = [
            "en-index_1.png",
            "en-index_2.png",
            "en-index_3.png",]
        }
      },
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于前端国际化i18n)和 Vue 的多层嵌套,我可以给你一些指导。在 Vue实现多层嵌套的国际化,你可以按照以下步骤进行: 1. 首先,在你的 Vue 项目中安装并配置一个 i18n 库,比如 vue-i18n。你可以使用 npm 或 yarn 进行安装。 2. 创建一个用于存放所有语言翻译内容的文件夹,比如 `locales`。 3. 在 `locales` 文件夹里创建多个语言文件,每个文件对应一种语言。比如创建 `en.js`(英语)和 `zh.js`(中文)。 4. 在每个语言文件中,使用键值对的方式存储对应语言的翻译内容。比如: ```javascript // en.js export default { home: { title: 'Home', welcome: 'Welcome to our website!' }, about: { title: 'About', content: 'This is the about page.' } } // zh.js export default { home: { title: '首页', welcome: '欢迎访问我们的网站!' }, about: { title: '关于', content: '这是关于页面。' } } ``` 5. 在 Vue 实例中引入并配置 i18n。在 `main.js` 文件中添加以下代码: ```javascript import Vue from 'vue' import VueI18n from 'vue-i18n' import en from './locales/en.js' import zh from './locales/zh.js' Vue.use(VueI18n) const messages = { en, zh } const i18n = new VueI18n({ locale: 'en', // 默认语言 fallbackLocale: 'en', messages }) new Vue({ i18n, // ...其他配置 }).$mount('#app') ``` 6. 在组件中使用 i18n。在需要进行国际化的文本内容中使用 `$t` 方法,并传入对应的键名。例如: ```vue <template> <div> <h1>{{ $t('home.title') }}</h1> <p>{{ $t('home.welcome') }}</p> </div> </template> ``` 7. 最后,在 Vue 组件中可以通过设置 `locale` 属性切换不同的语言实现多层嵌套的国际化效果。你可以通过按钮、下拉框等方式来切换语言。 这就是在前端 Vue 项目实现多层嵌套的国际化的一种方式。希望对你有所帮助!如果你还有其他问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值