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

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

這篇具有很好參考價(jià)值的文章主要介紹了electron+vue3全家桶+vite項(xiàng)目搭建【六】集成vue-i18n 國際化。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

注意

已發(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.引入依賴

npm install vue-i18n@9

2.集成vue i18n

1.我們現(xiàn)在src下面創(chuàng)建locals目錄,里面創(chuàng)建packages目錄,然后分別創(chuàng)建en.ts和zh-cn.ts

// src\locales\package\en.ts
export default {
  // app相關(guān)文本
  app: {
    title: 'demo'
  },
};
// src\locales\package\zh-cn.ts
export default {
  // app相關(guān)文本
  app: {
    title: '精彩案例'
  },
};

2.我們在locals目錄下創(chuàng)建index.ts

// src\locales\index.ts
import { createI18n } from 'vue-i18n';
import zhCn from './package/zh-cn';
import en from './package/en';
import CacheUtils from '@utils/cacheUtils';

// 創(chuàng)建 i18n
const i18n = createI18n({
  legacy: false, // 解決Not available in legacy mode報(bào)錯(cuò)
  globalInjection: true, // 全局模式,可以直接使用 $t
  locale: 'zhCn',
  messages: {
    zhCn,
    en
  }
});

export default i18n;

目錄結(jié)構(gòu)如圖所示:

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

3.調(diào)整main.ts

// src\main.ts
import i18n from './locales';

// ...
// 配置國際化
app.use(i18n)

3.測試代碼

接著我們在HelloWorld頁面補(bǔ)充國際化代碼:

// src\components\HelloWorld.vue
<template>
  <h1>{{ $t('app.title') }}</h1>
</template>

顯示效果如圖所示:

  • 并且隨著我們切換 i18n的 locale字段,可以看到文本自動(dòng)變成對應(yīng)語言

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

4.封裝多語言切換組件

我們知道只要改變i18n的locale的值就能修改應(yīng)用的語言,那么我們完全可以基于element-plus封裝一個(gè)多語言切換的組件:

// src\components\Language.vue
<template>
  <el-dropdown @command="handleCommand">
    <span class="el-dropdown-link">
      {{ currentLang == 'zhCn' ? '中文' : 'English' }}
      <el-icon class="el-icon--right">
        <arrow-down />
      </el-icon>
    </span>
    <template #dropdown>
      <el-dropdown-menu>
        <el-dropdown-item command="zhCn" :disabled="currentLang == 'zhCn'">中文</el-dropdown-item>
        <el-dropdown-item command="en" :disabled="currentLang == 'en'">English</el-dropdown-item>
      </el-dropdown-menu>
    </template>
  </el-dropdown>
</template>

<script lang="ts" setup>
import { ArrowDown } from '@element-plus/icons-vue'
import { useI18n } from 'vue-i18n';
import { computed } from 'vue';

const i18n = useI18n()

// 計(jì)算屬性獲取i18n的值
const currentLang = computed(() => i18n.locale.value)

// 切換語言
function handleCommand(command: string) {
  i18n.locale.value = command
}

</script>
<style scoped>
.example-showcase .el-dropdown-link {
  cursor: pointer;
  color: var(--el-color-primary);
  display: flex;
  align-items: center;
}
</style>

5.測試多語言切換

我們在HelloWorld.vue文件中引入多語言插件:

electron+vue3全家桶+vite項(xiàng)目搭建【六】集成vue-i18n 國際化
運(yùn)行查看效果:

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

6.優(yōu)化代碼

我們可以發(fā)現(xiàn)不管是文本的使用還是組件的封裝,都存在著大量的魔法值,假如后續(xù)調(diào)整了語言字段,改動(dòng)將是巨大的,那么其實(shí)我們是可以正對映射關(guān)系封裝一個(gè)kv對象的:

// src\locales\LangMap.ts

export default {
  /**key - value 形式關(guān)聯(lián)所有語言和對應(yīng)描述 */
  languageMap: new Map([
    ["zhCn", "中文"],
    ["en", "English"],
  ]),

  /**所有屬性路徑描述 */
  app_title: 'app.title'
}

在helloWOrld中我們可以這樣調(diào)用
electron+vue3全家桶+vite項(xiàng)目搭建【六】集成vue-i18n 國際化

我們調(diào)整語言切換組件文章來源地址http://www.zghlxwxcb.cn/news/detail-411401.html

<template>
  <el-dropdown @command="handleCommand">
    <span class="el-dropdown-link">
      {{ langMap.languageMap.get(currentLang) }}
      <el-icon class="el-icon--right">
        <arrow-down />
      </el-icon>
    </span>
    <template #dropdown>
      <el-dropdown-menu>
        <el-dropdown-item :command="langEntry[0]" :key="langEntry[0]" :disabled="currentLang == langEntry[0]"
          v-for="langEntry in langMap.languageMap.entries()">{{
            langEntry[1] }}</el-dropdown-item>
      </el-dropdown-menu>
    </template>
  </el-dropdown>
</template>

<script lang="ts" setup>
import { ArrowDown } from '@element-plus/icons-vue'
import { useI18n } from 'vue-i18n';
import { computed } from 'vue';
import langMap from '../locales/LangMap'

const i18n = useI18n()
// 計(jì)算屬性獲取i18n的值
const currentLang = computed(() => i18n.locale.value)

// 切換語言
function handleCommand(command: string) {
  i18n.locale.value = command
}

</script>
<style scoped>
.example-showcase .el-dropdown-link {
  cursor: pointer;
  color: var(--el-color-primary);
  display: flex;
  align-items: center;
}
</style>

到了這里,關(guān)于electron+vue3全家桶+vite項(xiàng)目搭建【六】集成vue-i18n 國際化的文章就介紹完了。如果您還想了解更多內(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)文章

  • electron+vue3全家桶+vite項(xiàng)目搭建【16.1】electron多窗口,pinia狀態(tài)同步,擴(kuò)展store方法,主動(dòng)同步pinia的狀態(tài)【推薦】

    electron+vue3全家桶+vite項(xiàng)目搭建【16.1】electron多窗口,pinia狀態(tài)同步,擴(kuò)展store方法,主動(dòng)同步pinia的狀態(tài)【推薦】

    demo項(xiàng)目地址 我們之前寫了一個(gè)自動(dòng)同步pinia狀態(tài)的插件,可以參考如下文章 electron+vue3全家桶+vite項(xiàng)目搭建【16】electron多窗口,pinia狀態(tài)無法同步更新問題解決 這里面有一個(gè)較大的弊端,就是pinia中的store,只要其中的某個(gè)屬性修改,就會觸發(fā)這個(gè)store的全量更新,當(dāng)我們有一

    2024年02月11日
    瀏覽(137)
  • 現(xiàn)有的vue3+ts+vite項(xiàng)目集成electron

    現(xiàn)有的vue3+ts+vite項(xiàng)目集成electron

    Electron是使用JavaScript,HTML和CSS構(gòu)建跨平臺的桌面應(yīng)用程序框架。 Electron兼容Mac、Windows和Linux,可以構(gòu)建出三個(gè)平臺的應(yīng)用程序。 安裝依賴 原來有一個(gè)vue3+ts+vite+pnpm的項(xiàng)目,其中sub-modules是子項(xiàng)目,web是主入口項(xiàng)目,項(xiàng)目結(jié)構(gòu)如下: 需要將其轉(zhuǎn)換成Electron項(xiàng)目,只需要在原來

    2024年02月12日
    瀏覽(99)
  • vue3+vite+ts項(xiàng)目集成科大訊飛語音識別(項(xiàng)目搭建過程以及踩坑記錄)

    ?? 個(gè)人主頁: 不叫貓先生 ???♂? 作者簡介:前端領(lǐng)域新星創(chuàng)作者、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進(jìn)步,一起加油呀! ??系列專欄:vue3從入門到精通、TypeScript從入門到實(shí)踐 ?? 資料領(lǐng)取:前端進(jìn)階資料以及文中源碼可以找我免費(fèi)領(lǐng)取 ?? 前端

    2023年04月09日
    瀏覽(41)
  • 基于Electron24+Vite4+Vue3搭建桌面端應(yīng)用

    基于Electron24+Vite4+Vue3搭建桌面端應(yīng)用

    一說到創(chuàng)建桌面應(yīng)用,就不得不提及Electron和Tauri框架。這次給大家主要分享的是基于electron最新版本整合vite4.x構(gòu)建vue3桌面端應(yīng)用程序。 之前也有使用vite2+vue3+electronc創(chuàng)建桌面端項(xiàng)目,不過? vue-cli-plugin-electron-builder ?腳手架插件構(gòu)建的項(xiàng)目electron版本只有13.x。如今electron版本

    2024年02月06日
    瀏覽(46)
  • 快速搭建Electron+Vite3+Vue3+TypeScript5腳手架 (無需梯子,快速安裝Electron)

    快速搭建Electron+Vite3+Vue3+TypeScript5腳手架 (無需梯子,快速安裝Electron)

    Electron是一個(gè)使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架。 嵌入?Chromium?和?Node.js?到 二進(jìn)制的 Electron 允許您保持一個(gè) JavaScript 代碼代碼庫并創(chuàng)建 在Windows上運(yùn)行的跨平臺應(yīng)用 macOS和Linux——不需要本地開發(fā)經(jīng)驗(yàn)(這段話是來自官網(wǎng))。 根據(jù)vite官網(wǎng)文檔 項(xiàng)目創(chuàng)建完成后進(jìn)

    2024年02月02日
    瀏覽(109)
  • 使用vue3+vite+elctron構(gòu)建小項(xiàng)目介紹Electron進(jìn)程間通信

    使用vue3+vite+elctron構(gòu)建小項(xiàng)目介紹Electron進(jìn)程間通信

    進(jìn)程間通信 (IPC) 是在 Electron 中構(gòu)建功能豐富的桌面應(yīng)用程序的關(guān)鍵部分之一。 由于主進(jìn)程和渲染器進(jìn)程在 Electron 的進(jìn)程模型具有不同的職責(zé),因此 IPC 是執(zhí)行許多常見任務(wù)的唯一方法,例如從 UI 調(diào)用原生 API 或從原生菜單觸發(fā) Web 內(nèi)容的更改。 在 Electron 中,進(jìn)程使用 ipcM

    2024年02月06日
    瀏覽(97)
  • vite+ vue3(現(xiàn)有項(xiàng)目或者新項(xiàng)目)+electron打包教程,以及electron代碼熱重載頁面(保姆級教程),一文帶你走完全過程

    vite+ vue3(現(xiàn)有項(xiàng)目或者新項(xiàng)目)+electron打包教程,以及electron代碼熱重載頁面(保姆級教程),一文帶你走完全過程

    ? 1.刪掉type這個(gè)字段,不然會報(bào)錯(cuò) ?2.然后加上\\\"main\\\": \\\"electron/main.js\\\", ?3.在scripts字段中加入啟動(dòng)electron的命令:如下圖 5.這時(shí)候你去打開控制臺輸入輸入npm run start會得到一片空白,展示如下頁面 1.因?yàn)楝F(xiàn)在監(jiān)聽的是vue打包后的dist文件夾中的index.html 2.我就不教你們怎么打開那個(gè)

    2024年02月11日
    瀏覽(649)
  • vue3+vite項(xiàng)目集成mars3d

    創(chuàng)建一個(gè)項(xiàng)目 yarn create vite // vue - ts 安裝依賴 yarn add?vite-plugin-mars3d -D yarn add?mars3d 控制臺警告 warning \\\" mars3d@3.5.0\\\" has unmet peer dependency \\\"@turf/turf@^6.5.0\\\". warning \\\" mars3d@3.5.0\\\" has unmet peer dependency \\\"mars3d-cesium@~1.103.1\\\". 安裝 yarn add? @turf/turf?mars3d-cesium 修改 vite.config.ts 修改srcApp.vue 就可

    2024年02月15日
    瀏覽(31)
  • Vue3+Vite項(xiàng)目搭建

    Vue3+Vite項(xiàng)目搭建

    技術(shù)棧:vue3+ts+vite+vue-router+element-plus+pinia 為什么選擇vite而不是vue-cli: vite 是一個(gè)基于 Vue3 單文件組件的非打包開發(fā)服務(wù)器,它做到了本地快速開發(fā)啟動(dòng): 快速的冷啟動(dòng),不需要等待打包操作; 即時(shí)的熱模塊更新,替換性能和模塊數(shù)量的解耦讓更新飛起; 真正的按需編譯,

    2024年02月08日
    瀏覽(33)
  • vite搭建vue3項(xiàng)目

    vite搭建vue3項(xiàng)目

    參考視頻 創(chuàng)建一個(gè)項(xiàng)目名稱的文件夾 執(zhí)行命令:npm init -y 快速的創(chuàng)建一個(gè)默認(rèn)的包信息 安裝vite: npm i vite -D -D開發(fā)環(huán)境的依賴 安裝vue,現(xiàn)在默認(rèn)是vue3. 執(zhí)行命令: npm i vue -D/-S都可以 創(chuàng)建index.html文件,src=“入口js文件” ,添加id=\\\"app\\\"掛載點(diǎn) 創(chuàng)建src目錄下的js入口文件main.js 創(chuàng)建

    2024年02月09日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包