国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue2+element-ui使用vue-i18n進(jìn)行國際化的多語言/國際化

這篇具有很好參考價(jià)值的文章主要介紹了vue2+element-ui使用vue-i18n進(jìn)行國際化的多語言/國際化。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

安裝包

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

npm install vue-i18n@8.27.0 --save

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

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

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

elementui 國際化,vue.js,ui,javascript,前端

zh.js

export default { 
    //中文
    msg: {
        msg1: '測試一',
        msg2: '測試二',
        msg3: '測試三',
        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"
//引入自定義語言配置  
import zh from './langs/zh'
import en from './langs/en'
//引入U(xiǎn)I框架語言配置---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插件的多語言切換
Vue.use(VueI18n); // 全局注冊國際化包

// 準(zhǔn)備翻譯的語言環(huán)境信息
const i18n = new VueI18n({
    locale: localStorage.getItem('lang') || "zh", //將語言標(biāo)識存入localStorage或sessionStorage中,頁面刷新不會默認(rèn)中文顯示
    messages: {
        // 中文語言包
        'zh': {
            ...zh,
            ...zhLocale
        },
        //英文語言包
        '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沒有找到對應(yīng)的資源或當(dāng)前語種不存在時(shí),默認(rèn)設(shè)置當(dāng)前語種為中文
});

export default i18n

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

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) // 在注冊Element時(shí)設(shè)置i18n的處理方法,可以實(shí)現(xiàn)當(dāng)點(diǎn)擊切換按鈕后,elementUI可以自動調(diào)用.js語言文件實(shí)現(xiàn)多語言切換
    }
)

...

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

基本使用

使用方式一

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

效果圖
elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端

使用方式二

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

效果圖
elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端

使用方式三,在

 <template>
    <!-- 使用方式三,在script標(biāo)簽內(nèi)的data中先聲明變量,然后獲取到值,最后渲染到html中 -->
    <h1>使用方式三:</h1>
    <h4>{{ title }}</h4>
    <h4 v-text="title"></h4>
    <!-- 標(biāo)簽頁-->
    <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)簽頁
         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>

效果圖
`elementui 國際化,vue.js,ui,javascript,前端
elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端
elementui 國際化,vue.js,ui,javascript,前端
注意:這種方式存在更新this.$i18n.locale的值時(shí)無法自動切換的問題,需要刷新頁面才能切換語言。解決辦法主要有兩種:
解決辦法一:調(diào)整寫法
錯(cuò)誤的寫法為:
elementui 國際化,vue.js,ui,javascript,前端
正確的寫法為:
elementui 國際化,vue.js,ui,javascript,前端
解決方法二:寫在計(jì)算屬性computed:{…}中,不要寫在data(){return{…}}中
elementui 國際化,vue.js,ui,javascript,前端

請查看官方討論貼,官方回復(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 {
       // 定義變量用于切換不同的值,對應(yīng)著en.js和zh.js中的message和display
       msgss:'message'
     }
  },
  methods: {
    // 用于不同的值
    changeWord() {
      if(this.msgss === 'message'){
        this.msgss = 'display'
      } else {
        this.msgss = 'message'
      }
    }
   } 

效果圖
elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端

使用方式五

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

在‘node_modules/_element-ui@2.15.13@element-ui/lib/locale/lang中有elementui組件庫提供的語言包文件elementui 國際化,vue.js,ui,javascript,前端
elementui 國際化,vue.js,ui,javascript,前端

效果圖
elementui 國際化,vue.js,ui,javascript,前端

elementui 國際化,vue.js,ui,javascript,前端文章來源地址http://www.zghlxwxcb.cn/news/detail-728106.html

切換語言

   <!-- 切換語言 -->
   <h1>切換語言方式</h1>
   <button @click="switchLang">切換語言</button>
   <el-select @change="langChange" placeholder="請選擇語言">
      <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)頁
    },

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

到了這里,關(guān)于vue2+element-ui使用vue-i18n進(jìn)行國際化的多語言/國際化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue3中,國際化插件vue-i18n使用記錄,配合VSCode自動化翻譯插件i18n Ally

    Vue3中,國際化插件vue-i18n使用記錄,配合VSCode自動化翻譯插件i18n Ally

    說明文檔: vue-i18n 版本說明: vue: 3.0.0+ vue-i18n: 9.x版 src 目錄下新建目錄 lang ,存放 i18n 的配置。 新建目錄名稱: lang (語言)、 locales (語系設(shè)定)、 i18n ,這些名稱都可被VSCode圖標(biāo)插件( vscode-icons )檢測到并美化。 lang 目錄下,新建 index.js 文件,引入 vue-i18n 。 語言的配置信

    2024年02月12日
    瀏覽(26)
  • vue-i18n 實(shí)現(xiàn)國際化,支持切換不同語言

    vue-i18n 實(shí)現(xiàn)國際化,支持切換不同語言

    需求:后臺管理系統(tǒng),可以實(shí)現(xiàn)語言切換 實(shí)現(xiàn)過程:用的i18n來實(shí)現(xiàn)的語言切換,網(wǎng)上能看到好多模板,根據(jù)自己的需求,修改一下即可使用,大概都是差不多的,因?yàn)樯婕暗胶蠖?,所以要跟后端協(xié)商一致決定去寫,我的設(shè)計(jì)思路是跟著后端設(shè)計(jì)更改的,如下: 1.語言是后端接

    2024年02月12日
    瀏覽(30)
  • uniapp國際化npm install vue-i18n報(bào)錯(cuò)

    uniapp國際化npm install vue-i18n報(bào)錯(cuò)

    在vue2環(huán)境下,默認(rèn)安裝 npm install vue-i18n 的版本是 vue-i18n@9.1.9,所以報(bào)錯(cuò)。 用以上命令查看版本: ?vue2建議5.0版本 ?

    2024年02月12日
    瀏覽(22)
  • electron+vue3全家桶+vite項(xiàng)目搭建【六】集成vue-i18n 國際化

    electron+vue3全家桶+vite項(xiàng)目搭建【六】集成vue-i18n 國際化

    已發(fā)現(xiàn) 9.2.2版本的vue-i18n 如果使用cnpm安裝,打包會報(bào)錯(cuò),使用npm或者pnpm安裝依賴沒有問題 如果需要多語言支持,那么最好在項(xiàng)目搭建之初我們就集成好國際化 vue i18n官網(wǎng) demo項(xiàng)目地址 關(guān)于多窗口國際化不同步更新狀態(tài)的問題解決方案 1.我們現(xiàn)在src下面創(chuàng)建locals目錄,里面創(chuàng)

    2023年04月12日
    瀏覽(96)
  • 【Vue框架】Vue2中element-ui/mint-ui組件庫——element-ui引入組件以及使用案例、mint-ui引入組件及使用案例

    【Vue框架】Vue2中element-ui/mint-ui組件庫——element-ui引入組件以及使用案例、mint-ui引入組件及使用案例

    element-ui 提供了大量的組件,如:布局組件、表單組件、JS組件等等。 Element-ui官網(wǎng): https://element.eleme.cn/#/zh-CN 安裝 Element-ui: npm i element-ui -S 1.1.1 引入組件 引入 Element 完整引入(在 main.js 中寫入以下內(nèi)容): 按需引入 借助 babel-plugin-component,我們可以只引入需要的組件,以達(dá)到

    2024年02月07日
    瀏覽(33)
  • Vue2使用element-ui引入自定義主題的方法(使用在線主題生成工具)

    Vue2使用element-ui引入自定義主題的方法(使用在線主題生成工具)

    第一步 :按照官方文檔使用npm安裝element-ui,并完整引入Element-ui npm i element-ui -S ?main.js中所有的內(nèi)容刪去,改為 隨便寫點(diǎn)東西,run一下 成功引入element-ui,但是不喜歡默認(rèn)的藍(lán)色,看起來很爛大街,想換掉。 第二步 :由于不喜歡默認(rèn)的藍(lán)色主題,可以使用在線主題生成工具

    2024年02月14日
    瀏覽(27)
  • Vue2.0安裝Element-ui

    Vue2.0安裝Element-ui

    1.在項(xiàng)目終端輸入 如果想知道是否安裝成功 ? 2.隨后在main.js里引入element組件 然后去使用element ? 就這樣成功了 ?

    2024年02月16日
    瀏覽(19)
  • Vue2 - 引入Element-UI組件樣式

    Vue2 - 引入Element-UI組件樣式

    官方文檔 https://element.eleme.cn/#/zh-CN/component/installation 推薦使用 npm 的方式安裝 ,它能更好地和 webpack 打包工具配合使用。 在終端cd到項(xiàng)目文件夾下安裝 也可以通過CDN(不推薦) 目前可以通過 unpkg.com/element-ui 獲取到最新版本的資源,在頁面上引入 js 和 css 文件即可開始使用。

    2024年02月06日
    瀏覽(26)
  • Vue2 +Element-ui實(shí)現(xiàn)前端頁面

    Vue2 +Element-ui實(shí)現(xiàn)前端頁面

    以一個(gè)簡單的前端頁面為例。主要是利用vue和element-ui實(shí)現(xiàn)。 里面涉及的主要包括:新建vue項(xiàng)目、一行多個(gè)輸入框、頁面實(shí)現(xiàn)等。 ? ①首先安裝nodejs,這部分在此就不講啦。 ②然后安裝vue-cli: 查看是否安裝成功: 安裝成功之后就輸出vue的版本 ③在cmd窗口新建一個(gè)vue2腳手架

    2024年02月16日
    瀏覽(35)
  • VUE2+Element-ui+封裝Echarts圖表

    VUE2+Element-ui+封裝Echarts圖表

    封裝Echarts圖表,如下效果圖 Home組件代碼塊,使用的mock.js模擬數(shù)據(jù)封裝 Echarts圖表組件 安裝所需依賴 cnpm i axios -S 安裝axios接口請求 cnpm i mockjs 或 yarn add mockjs 安裝mockjs生成模擬隨機(jī)數(shù)據(jù) cnpm i echarts 或 yarn add echarts 安裝echarts圖表 cnpm i element-ui -S 安裝element-ui組件庫 安裝less c

    2024年02月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包