vue3使用vue-i18n的方法詳解(ts中使用$t,?vue3不用this)
vue項目里多語言工具一直用的vue-i18n。
以前用的 vue2,也沒啥大問題,就是配置好之后用t(“你的屬性名”)就行,現(xiàn)在用vue3其實本來也沒太大變化。
但是配置完之后,在html中用$t()
沒有問題,顯示文案什么的一切正常。而在ts中使用$t()
方法報錯,后來才發(fā)現(xiàn)是我沒有設置全局的$t()
方法。
記錄一下在vue3中使用vue-i18n的方法:
- 安裝vue-18n
- 配置
- 應用
- 掛載全局方法$t以方便在ts中使用(本次記錄的重點)
由于1.2.3.好多人寫過了,我就簡單的寫一下,本次記錄的重點是4,因為我發(fā)現(xiàn)網上好多博客都只寫了$t在html中的使用,但是大都沒提到在ts中也可能用到。
1.安裝
npm install vue-i18n@next 或 yarn add vue-i18n@next
2.在 src 目錄下新建 lang 并新建 index.ts 文件
import App from '@/App.vue' import { createApp } from 'vue' import { createI18n } from 'vue-i18n' import enLocale from './en/index'; import zhLocale from './zh/index'; const messages = { zh: zhLocale, cn: zhLocale, en: enLocale, us: enLocale, } const localLang = navigator.language.split('-')[0]; const storageLang = window.localStorage.getItem('locale')?.split('"')[1].split('"')[0].toLocaleLowerCase() || 'en'; const c = (storageLang.toLocaleLowerCase() !== 'zh' && storageLang.toLocaleLowerCase() !== 'en') ? 'en' : storageLang; const i18n = createI18n({ globalInjection: true, //全局生效$t locale: c || localLang || 'en', messages, legacy: false, }) const app = createApp(App) app.use(i18n)
上圖中兩個語言包的index.ts中的內容自己根據語言需要寫:
export default { nNation: 'Country/Region', pleaseInput: 'Account', }
在ts中使用全局方法$t
import { getCurrentInstance } from "vue"; const { appContext : { config: { globalProperties } } } = getCurrentInstance(); // 這里可以根據需要寫個hook console.log(globalProperties.$t('pleaseSelectNation'))
在html中的使用就比較正常了:
<span>{{ $t("nation") }}</span>
其實本文算是新手記錄一下對于globalProperties的使用,希望對您有所幫助。
總結
到此這篇關于vue3使用vue-i18n(ts中使用$t, vue3不用this)的文章就介紹到這了,更多相關vue3使用vue-i18n內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue中使用fetch讀取本地txt文件的技術實現(xiàn)
在Vue.js應用開發(fā)中,有時我們需要從本地讀取文本文件(如 .txt 文件)并將其內容展示在頁面上,這種需求在處理配置文件、日志文件或靜態(tài)數據時非常常見,本文將詳細介紹如何在Vue中使用 fetch API 讀取本地 .txt 文件,并提供多個示例和使用技巧2024-10-10vue?element表格某一列內容過多,超出省略號顯示的實現(xiàn)
這篇文章主要介紹了vue?element表格某一列內容過多,超出省略號顯示的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01