Vue3+Ts i18n實現國際化

来源:https://www.cnblogs.com/sundayRain/p/18167211
-Advertisement-
Play Games

一、什麼是雙向綁定 我們先從單向綁定切入單向綁定非常簡單,就是把Model綁定到View,當我們用JavaScript代碼更新Model時,View就會自動更新雙向綁定就很容易聯想到了,在單向綁定的基礎上,用戶更新了View,Model的數據也自動被更新了,這種情況就是雙向綁定舉個慄子 當用戶填寫表 ...


1、下載 依賴

npm install vue-i18n@nex

2、在src目錄下創建文件夾 創建文件 index.ts 、 zh/index.ts 、en/index.ts 

// index.ts
import { createI18n } from 'vue-i18n'
import zh from './zh/index'
import en from './en/index'

const messages = {
en,
zh,
}

console.log('localStorage.getItem', localStorage.getItem('language'));

const language = (navigator.language || 'en').toLocaleLowerCase() // 獲取瀏覽器的語言
console.log('language.split', language.split('-')[0]);

const i18n = new createI18n({
locale: localStorage.getItem('language') || language.split('-')[0] || 'en', // 先從緩存里拿,沒有的話就用瀏覽器語言,
fallbackLocale: 'zh', // 設置備用語言
messages,
legacy: false,
globalInjection:true,

})

export default i18n

3、 en/index.ts

// en/index.ts
export default {
  'result.success.title': 'Submission Success',
  'result.success.description':
    'The submission results page is used to feed back the results of a series of operational tasks. If it is a simple operation, use the Message global prompt feedback. This text area can show a simple supplementary explanation. If there is a similar requirement for displaying “documents”, the following gray area can present more complicated content.',
  'result.success.operate-title': 'Project Name',
  'result.success.operate-id': 'Project ID',
  'result.success.principal': 'Principal',
  'result.success.operate-time': 'Effective time',
  'result.success.step1-title': 'Create project',
  'result.success.step1-operator': 'Qu Lili',
  'result.success.step2-title': 'Departmental preliminary review',
  'result.success.step2-operator': 'Zhou Maomao',
  'result.success.step2-extra': 'Urge',
  'result.success.step3-title': 'Financial review',
  'result.success.step4-title': 'Finish',
  'result.success.btn-return': 'Back List',
  'result.success.btn-project': 'View Project',
  'result.success.btn-print': 'Print'
}

4、 zh/index.ts

// zn/index.ts
export default {
  'result.success.title': '提交成功',
  'result.success.description':
    '提交結果頁用於反饋一系列操作任務的處理結果, 如果僅是簡單操作,使用 Message 全局提示反饋即可。 本文字區域可以展示簡單的補充說明,如果有類似展示 “單據”的需求,下麵這個灰色區域可以呈現比較複雜的內容。',
  'result.success.operate-title': '項目名稱',
  'result.success.operate-id': '項目 ID',
  'result.success.principal': '負責人',
  'result.success.operate-time': '生效時間',
  'result.success.step1-title': '創建項目',
  'result.success.step1-operator': '曲麗麗',
  'result.success.step2-title': '部門初審',
  'result.success.step2-operator': '周毛毛',
  'result.success.step2-extra': '催一下',
  'result.success.step3-title': '財務覆核',
  'result.success.step4-title': '完成',
  'result.success.btn-return': '返回列表',
  'result.success.btn-project': '查看項目',
  'result.success.btn-print': '列印'
}

5、main.ts

// main.ts
import i18n from './i18n/index';
function vawBoot() {
  const app = createApp(App)
  app.use(i18n)
  app.mount('#app')
}

6、使用

// 使用方式
index.vue
<template>
<div>
  <n-select
   size="small"
   style="width: 120px;"
   v-model:value="optionsValue"
   :options="options"
   @update:value="handleUpdateValue"/>
  <div>
   {{ $t('result.success.title') }}  
  </div>
</div>
</template>

<script setup lang="ts">
import { useI18n } from 'vue-i18n'

const { t } = useI18n()  // 國際化
const langOptions = ref([
{label: "English", value: 'en'},
{label: "中文", value: 'zn'},
])
const optionsValue = ref(localStorage.getItem('language'))
function handleUpdateValue(lang) {
console.log(lang)
localStorage.setItem("language", lang);
window.location.reload();
}
</script>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SeaTunnel提供了一種運行Zeta引擎(cluster-mode)的方法,可以讓Kubernetes在本地運行Zeta引擎,實現更高效的應用程式部署和管理。在本文中,我們將探索SeaTunnel k8s運行zeta引擎(cluster-mode模式)的更多信息,瞭解如何更好地利用Zeta引擎的 ...
  • 隨著大數據技術的快速發展,很多企業開始將Flink引入到生產環境中,以滿足日益複雜的數據處理需求。而作為一款企業級的數據調度平臺,Apache DolphinScheduler也跟上了時代步伐,推出了對Flink任務類型的支持。 Flink是一個開源的分散式流處理框架,具有高吞吐量、低延遲和準確性等 ...
  • 記錄一個HTML頁面關於高分屏的踩到的坑。 所謂高分屏,就是在同樣大小的屏幕面積上顯示更多的像素點,這樣可以呈現更好的可視效果的屏幕。例如,我的筆記本是15.6寸,理論上它的屏幕解析度應該是1920 x 1080像素,但實際上我的筆記本屏幕解析度確實2560 x 1440像素,也就是俗稱的2K屏。這 ...
  • 主題搗鼓日記 sakura版本(YYDS) 主要框架都沒怎麼動,功能挺完整的。但是如果要DIY,我建議還是得自己把代碼捋一遍,不然從哪改起都不知道,註釋有點用但不全。 搗鼓了兩天兩夜,還是有很多細節沒改好,main.js翻了四五遍,看評論區發現諸多細節還要改CSS文件,太難了。。前端都忘得差不多了, ...
  • 一、介紹 Promise,譯為承諾,是非同步編程的一種解決方案,比傳統的解決方案(回調函數)更加合理和更加強大 在以往我們如果處理多層非同步操作,我們往往會像下麵那樣編寫我們的代碼 doSomething(function(result) { doSomethingElse(result, functi ...
  • 寫在前面 tips:點贊 + 收藏 = 學會! 本文包含radash中數組相關的所有方法說明 + 使用示例 + 思維導圖查看 這邊會整理出一份數組相關方法的使用大綱(不含源碼解析),方便大家查閱使用; 作者會按照大類進行整理分享,本次也會同步給出Array所有方法的思維導圖; 所有方法整理完畢後,作 ...
  • 大家好,我前夕.最近,我分享了個人開發的微信讀書網頁插件,這個小項目意外收穫了眾多用戶的喜愛. 這讓我意識到技術作品能跨越專業界限,幫助到有需要的人.受此激勵,我決定對插件進行全面重構與優化 ...
  • 大家好,我是 Java陳序員。 今天,給大家介紹一個開源的聊天應用程式,支持PC端和移動端。 關註微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典電腦電子書籍等。 項目介紹 HasChat —— 一個基於 Vue3 + Socket.io 的聊天應用,同時支持PC端和 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...