最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化詳細(xì)教程

 更新時(shí)間:2023年12月20日 10:52:48   作者:V-Velaciela  
這篇文章主要給大家介紹了關(guān)于vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化的相關(guān)資料,I18n是Vue.js的國(guó)際化插件,項(xiàng)目里面的中英文等多語(yǔ)言切換會(huì)使用到這個(gè)東西,需要的朋友可以參考下

安裝包

注意:vue2.0要用8版本的,使用9版本的會(huì)報(bào)錯(cuò)

npm install vue-i18n@8.27.0 --save

創(chuàng)建相關(guān)的語(yǔ)言包文件

在src目錄下,創(chuàng)建新的文件夾,命名為i18n

  在文件夾i18n中新建langs文件夾,里邊放語(yǔ)言文件.js
      zh.js:存放所有的中文顯示內(nèi)容
      en.js:存放所有的英文顯示內(nèi)容
 與langs文件夾同級(jí),創(chuàng)建index.js:用于配置i18n,并導(dǎo)出i18n 

文件夾目錄

zh.js

export default { 
    //中文
    msg: {
        msg1: '測(cè)試一',
        msg2: '測(cè)試二',
        msg3: '測(cè)試三',
        message: "第一個(gè)值",
        display: "第二個(gè)值",
        // 材料列表的材料類型
        materialType: {
            nameSteel: '鋼材',
            nameAlumialloy: '鋁合金',
            nameCfrp: '碳纖維復(fù)合材料',
            nameSoft: '軟材料',
            nameOther: '其他',
        },
    }
}

en.js

export default { 
  //英文
    msg: {
        msg1: 'test one',
        msg2: 'test two',
        msg3: 'test three',
        message: "first value",
        display: "second value",
        // 材料列表的材料類型
        materialType: {
            nameSteel: 'Steel',
            nameAlumialloy: 'Aluminum alloy',
            nameCfrp: 'Carbon Fiber Composites',
            nameSoft: 'Soft Materials',
            nameOther: 'Other',
        },
    }
}

index.js

import Vue from "vue"
import VueI18n from "vue-i18n"
//引入自定義語(yǔ)言配置  
import zh from './langs/zh'
import en from './langs/en'
//引入U(xiǎn)I框架語(yǔ)言配置---elementui
import ElementLocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'

ElementLocale.i18n((key, value) => i18n.t(key, value)) //為了實(shí)現(xiàn)element插件的多語(yǔ)言切換
Vue.use(VueI18n); // 全局注冊(cè)國(guó)際化包

// 準(zhǔn)備翻譯的語(yǔ)言環(huán)境信息
const i18n = new VueI18n({
    locale: localStorage.getItem('lang') || "zh", //將語(yǔ)言標(biāo)識(shí)存入localStorage或sessionStorage中,頁(yè)面刷新不會(huì)默認(rèn)中文顯示
    messages: {
        // 中文語(yǔ)言包
        'zh': {
            ...zh,
            ...zhLocale
        },
        //英文語(yǔ)言包
        'en': {
            ...en,
            ...enLocale
        }
    },
    silentTranslationWarn: true, //解決vue-i18n黃色警告"value of key 'xxx' is not a string"和"cannot translate the value of keypath 'xxx'.use the value of keypath as default",可忽略
    globalInjection: true, // 全局注入
    fallbackLocale: 'zh', // 指定的locale沒有找到對(duì)應(yīng)的資源或當(dāng)前語(yǔ)種不存在時(shí),默認(rèn)設(shè)置當(dāng)前語(yǔ)種為中文
});

export default i18n

在main里導(dǎo)入語(yǔ)言包文件

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ELEMENT from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import 'element-ui/lib/theme-chalk/display.css'
import i18n from './i18n'
...

// Vue.use(ELEMENT)
Vue.use(ELEMENT,
    {
      i18n: (key, value) => i18n.t(key, value) // 在注冊(cè)Element時(shí)設(shè)置i18n的處理方法,可以實(shí)現(xiàn)當(dāng)點(diǎn)擊切換按鈕后,elementUI可以自動(dòng)調(diào)用.js語(yǔ)言文件實(shí)現(xiàn)多語(yǔ)言切換
    }
)

...

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

基本使用

使用方式一

<!-- 使用方式一,在模板字符串中使用 -->
 <h1>使用方式一:</h1>
 <h4>{{ $t('msg.msg1') }}</h4>

效果圖

英文

中文

使用方式二

 <!-- 使用方式二,綁定屬性使用 -->
 <h1>使用方式二:</h1>
 <h4 v-text="$t('msg.msg2')"></h4>
 <el-input :placeholder="$t('msg.msg2')"></el-input>

效果圖

英文

中文

使用方式三

 <template>
    <!-- 使用方式三,在script標(biāo)簽內(nèi)的data中先聲明變量,然后獲取到值,最后渲染到html中 -->
    <h1>使用方式三:</h1>
    <h4>{{ title }}</h4>
    <h4 v-text="title"></h4>
    <!-- 標(biāo)簽頁(yè)-->
    <el-tabs @tab-click = "handleClick">
        <el-tab-pane :label = "materialType[0].name" :name = "materialType[0].id" v-model="getSteel">
        </el-tab-pane>
        <el-tab-pane :label = "materialType[0].name" :name = "materialType[0].id" v-model="getAlumialloy">
        </el-tab-pane>
        <el-tab-pane :label = "materialType[0].name" :name = "materialType[0].id" v-model="getCfrp">
        </el-tab-pane>
        <el-tab-pane :label = "materialType[0].name" :name = "materialType[0].id" v-model="getSoft">
        </el-tab-pane>
        <el-tab-pane :label = "materialType[0].name" :name = "materialType[0].id" v-model="getOther">
        </el-tab-pane>
    </el-tabs>
 </template>
 <script>
   export default {
     name: '',
     // 在data節(jié)點(diǎn)中使用
     data () {
       return {
         title: this.$t('msg.msg3'), //this.$i18n.t('')也行
         // 標(biāo)簽頁(yè)
         materialType: [
           {
             id: '1',
             // name: '鋼材'
             name: this.$t('msg.materialType.nameSteel')
           },
           {
             id: '2',
             // name: '鋁合金'
             name: this.$t('msg.materialType.nameAlumialloy')
           },
           {
             id: '3',
             // name: '碳纖維復(fù)合材料'
             name: this.$t('msg.materialType.nameCfrp')
           },
           {
             id: '4',
             // name: '軟材料'
             name: this.$t('msg.materialType.nameSoft')
           },
           {
             id: '5',
             // name: '其他'
             name: this.$t('msg.materialType.nameOther')
           }
         ],
       }
     },
     // 在methods節(jié)點(diǎn)中使用
     methods: {
        console.log(this.$t('msg.materialType.nameOther'))
     },
     // 在 computed節(jié)點(diǎn)中使用
     computed: {
       infoX() {
         return this.$t('msg.materialDetailsTitle3.infoX')
       },
     },
     mounted() {},
   }
 </script>

效果圖`

英文

英文

中文

中文

注意:這種方式存在更新this.$i18n.locale的值時(shí)無法自動(dòng)切換的問題,需要刷新頁(yè)面才能切換語(yǔ)言。解決辦法主要有兩種:

解決辦法一:調(diào)整寫法

錯(cuò)誤的寫法為:

錯(cuò)誤寫法

正確的寫法為:

正確寫法

解決方法二:寫在計(jì)算屬性computed:{…}中,不要寫在data(){return{…}}中

正確寫法

請(qǐng)查看官方討論貼,官方回復(fù)https://github.com/kazupon/vue-i18n/issues/271

使用方式四

<!-- 使用方式四,msgss存在多個(gè)值,使用了模板字符串,拿到msgss的值再拼接,構(gòu)成msg.message或者msg.display -->
<h1>使用方式四:存在多個(gè)值之間的切換</h1>
<h4>{{ $t(`msg.${msgss}`) }}</h4>
<button @click="changeWord">切換按鈕</button>

 data () {
    return {
       // 定義變量用于切換不同的值,對(duì)應(yīng)著en.js和zh.js中的message和display
       msgss:'message'
     }
  },
  methods: {
    // 用于不同的值
    changeWord() {
      if(this.msgss === 'message'){
        this.msgss = 'display'
      } else {
        this.msgss = 'message'
      }
    }
   } 

效果圖

第一個(gè)值

第二個(gè)值

英文

英文

使用方式五

<!-- 使用elementui的翻譯包 -->
<h1>使用方式五:elementui的翻譯包</h1>
<h4>{{$t('el.colorpicker.confirm')}}</h4>

在‘node_modules/_element-ui@2.15.13@element-ui/lib/locale/lang中有elementui組件庫(kù)提供的語(yǔ)言包文件

文件路徑

例子

效果圖

英文

中文

切換語(yǔ)言

   <!-- 切換語(yǔ)言 -->
   <h1>切換語(yǔ)言方式</h1>
   <button @click="switchLang">切換語(yǔ)言</button>
   <el-select @change="langChange" placeholder="請(qǐng)選擇語(yǔ)言">
      <el-option v-for="item in options"
         :key="item.value"
         :label="item.label"
         :value="item.value">
      </el-option>
    </el-select>

   options:[
        {
          value:'zh',
          label:'中文'
        },
        {
          value: 'en',
          label: 'English'
        }
   ],
   
   switchLang(){
      // 讀取緩存
      let lang = localStorage.getItem('lang') ? localStorage.getItem('lang') : 'zh'
      if (lang === 'zh') {
        this.$i18n.locale = 'en'
        localStorage.setItem('lang', 'en') // en表示英文,zh表示中文,可根據(jù)自己喜好設(shè)定,盡量通俗易懂
      } else {
        this.$i18n.locale = 'zh'
        localStorage.setItem('lang', 'zh')
      }
      location.replace(location) //刷新網(wǎng)頁(yè)
    },

    langChange(e){
      // this.$nextTick無法修改方式三
      this.$nextTick(() => {
        localStorage.setItem('lang', e)
        this.$i18n.locale = e
      })
      // location.replace(location)
    },

總結(jié)

到此這篇關(guān)于vue2+element-ui使用vue-i18n進(jìn)行國(guó)際化的多語(yǔ)言/國(guó)際化的文章就介紹到這了,更多相關(guān)vue2 vue-i18n國(guó)際化多語(yǔ)言內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue應(yīng)用中504錯(cuò)誤(Gateway timeout)的原因與解決方法

    Vue應(yīng)用中504錯(cuò)誤(Gateway timeout)的原因與解決方法

    在Vue前端應(yīng)用中遇到504代理錯(cuò)誤通常是由于請(qǐng)求在到達(dá)服務(wù)器之前超時(shí),504錯(cuò)誤表示網(wǎng)關(guān)超時(shí),可能由后端服務(wù)響應(yīng)慢、網(wǎng)絡(luò)問題、代理配置錯(cuò)誤、請(qǐng)求負(fù)載過大、前端請(qǐng)求超時(shí)設(shè)置不當(dāng)、服務(wù)器資源不足或第三方服務(wù)問題引起
    2024-09-09
  • vue3和beego跨域請(qǐng)求配置方式

    vue3和beego跨域請(qǐng)求配置方式

    文章介紹了如何在Vue3和Beego中配置跨域請(qǐng)求,在Beego的router.go文件的init函數(shù)中添加option函數(shù)來回應(yīng)預(yù)檢請(qǐng)求,以支持跨域請(qǐng)求,這是個(gè)人經(jīng)驗(yàn)分享,希望能幫助到大家
    2025-01-01
  • vue3中的defineExpose使用示例教程

    vue3中的defineExpose使用示例教程

    這篇文章主要介紹了vue3中的defineExpose使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • element使用自定義icon圖標(biāo)的兩種解決方式

    element使用自定義icon圖標(biāo)的兩種解決方式

    因?yàn)榘惭b原型圖設(shè)計(jì)實(shí)現(xiàn)頁(yè)面,在element自帶的圖標(biāo)庫(kù)好像沒有,所以按鈕的圖標(biāo)icon需要自定義,下面這篇文章主要給大家介紹了關(guān)于element使用自定義icon圖標(biāo)的兩種解決方式,需要的朋友可以參考下
    2022-07-07
  • Vue3?中?PropType?的使用指南(示例詳解)

    Vue3?中?PropType?的使用指南(示例詳解)

    Vue3中PropType是TypeScript類型工具,用于定義組件props的類型,基本用法包括簡(jiǎn)單類型、對(duì)象、數(shù)組和函數(shù)定義,高級(jí)用法涉及聯(lián)合類型、嵌套對(duì)象和函數(shù)類型,本文介紹Vue3中PropType的使用指南,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • vue3自定義插件的作用場(chǎng)景及使用示例詳解

    vue3自定義插件的作用場(chǎng)景及使用示例詳解

    這篇文章主要為大家介紹了vue3自定義插件的作用場(chǎng)景及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • VUE使用axios調(diào)用后臺(tái)API接口的方法

    VUE使用axios調(diào)用后臺(tái)API接口的方法

    這篇文章主要介紹了VUE使用axios調(diào)用后臺(tái)API接口的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • vue自定義指令實(shí)現(xiàn)懶加載的優(yōu)化指南

    vue自定義指令實(shí)現(xiàn)懶加載的優(yōu)化指南

    這篇文章主要為大家詳細(xì)介紹了vue如何通過自定義指令實(shí)現(xiàn)懶加載并進(jìn)行相關(guān)優(yōu)化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07
  • vue3 setup中defineEmits與defineProps的使用案例詳解

    vue3 setup中defineEmits與defineProps的使用案例詳解

    在父組件中定義String、Number、Boolean、Array、Object、Date、Function、Symbol這些類型的數(shù)據(jù),使用defineEmits會(huì)返回一個(gè)方法,使用一個(gè)變量emits(變量名隨意)去接收,本文給大家介紹vue3 setup中defineEmits與defineProps的使用案例,感興趣的朋友一起看看吧
    2023-10-10
  • Vue響應(yīng)式系統(tǒng)的原理詳解

    Vue響應(yīng)式系統(tǒng)的原理詳解

    這篇文章主要為大家介紹了Vue響應(yīng)式系統(tǒng)的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評(píng)論

文昌市| 大关县| 孟州市| 内黄县| 乡宁县| 开远市| 安福县| 古浪县| 图木舒克市| 陇南市| 大连市| 永城市| 抚顺县| 菏泽市| 秦皇岛市| 江阴市| 祁门县| 福鼎市| 黔西县| 肇东市| 巨鹿县| 蛟河市| 融水| 昆明市| 锡林郭勒盟| 黄浦区| 乌海市| 富蕴县| 竹北市| 双鸭山市| 梁平县| 新民市| 大埔区| 灌南县| 河曲县| 全州县| 长治市| 丽水市| 博客| 平武县| 遂川县|