vue3項目中使用i18n國際化


1、下載il8n插件,目前通過npm install vue-il8n下載的il8n版本是無法支持vue3.0,因此要使用npm install vue-i18n@next 來獲取最新的版本,我這邊是的版本是9.1.6

npm install vue-i18n@next  
或
yarn add vue-i18n@next

2、在src下面創建一個名為language的文件名,並在文件下面創建zh、enjs文件(中文、英文),本文只做中英文切換作為案例,后續可加更多版本

3、然后在四個js文件中寫入對應的方法,這里面存放的是我們要進行切換的語言,以下是我在名為zh.js文件寫的中文語言,同樣的方法在其他文件中依次寫入

export default {
  message: {
    Home: '首頁',
    About: '關於我們',
    productService: '產品服務',
    cases: '行業解決方案',
    news: '新聞動態',
    contactUs: '聯系我們',
  },
}

4、在language文件下面在創建一個index.js文件

import en from './en'
import ch from './zh'

export default {
  en,
  ch,
}

5、創建一個i18n.js文件

import { createI18n } from 'vue-i18n' //引入vue-i18n組件
import messages from './index'
const language = (
  (navigator.language ? navigator.language : navigator.userLanguage) || "zh"
).toLowerCase();
const i18n = createI18n({
  fallbackLocale: 'ch',
  globalInjection:true,
  legacy: false, // you must specify 'legacy: false' option
  locale: language.split("-")[0] || "zh",
  messages,
});

export default i18n

注意上方標紅代碼,如果不設置為true掛載到全局的話,

{{$t(`message.name`)}}這種使用會報錯
 

6、在main.js中引入

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import i18n from './language/i18n'
createApp(App)
  .use(router)
  .use(i18n)
  .mount('#app')

這時候就已經可以在頁面中使用國際化了。

{{$t(`message.Home`)}}

 設置中英文切換按鈕/事件

    <div @click="change('zh')">中文</div>
    <div @click="change('en')">English</div>
<script>
import { getCurrentInstance } from "vue";
import { useI18n } from 'vue-i18n'//要在js中使用國際化

export default {
  name: "App",
  setup() {
    const { proxy } = getCurrentInstance();
    function change(type) {
      proxy.$i18n.locale = type;
    }
    const { t } = useI18n()
    console.log(t('message.pagesDes'))
return { change };
  },
};
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM