当前位置: 首页 > news >正文

vue国际化

前言

现在的大公司都走国际化路线,我们应用程序也不例外。今天就在 Vue3 项目中整一个比较简单的国际化

背景

之前搞国际化的时候,也搜索了很多帖子,但是没有一个可以完整的实现。今天有空搞了一版,大家有什么问题欢迎留言探讨

项目框架

vite + vue3 + elementPlus + vue-i18n + vue-cookie

一、准备工作

首先需要安装两个三方件
1、国际化三方件:vue-i18n
npm install vue-i18n
2、cookie 三方件:vue-cookie
npm install vue-cookie

二、国际化

1、在项目中创建一个 local 目录,再在 local 目录下面创建一个 lang 目录 和 index.ts 文件
在这里插入图片描述
2、 index.ts 文件

import { createI18n } from "vue-i18n"
import enLang from "./lang/en"
import zhLang from "./lang/zh"
import VueCookie from "vue-cookie"//从 cookie 中获取语言,如果没有则默认为 中文
const defaultLang = VueCookie.get("local") || "zh"const i18n = createI18n({locale: defaultLang, //默认语言fallbackLocale: "zh",messages: {en: enLang,zh: zhLang} //设置语言内容
})export default i18n

3、main.ts 文件

import i18n from './router/local/index'
app.use(i18n)

4、zh.ts 文件

export default {system: {lang: "中文"},table: {name: "王小龙",address: "上海市普陀区金沙江路 1517 弄"}
}

5、en.ts 文件

export default {system: {lang: "en"},table: {name: "Wang Xiaolong",address: "Lane 1517, Jinshajiang Road, Putuo District, Shanghai"}
}

6、home.vue 文件

<!-- home.vue -->
<template><el-button @click="changeLanguage">{{ $t("system.lang") }}</el-button><el-table:data="tableData"row-key="id"><el-table-column type="selection" :reserve-selection="true" width="55" /><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="姓名" width="180" /><el-table-column prop="address" label="地址" /></el-table>
</template>
<script setup lang="ts">
import { ref } from "vue";
import VueCookie from "vue-cookie"
import { useI18n } from "vue-i18n"//国际化
const { t } = useI18n()//当前语言
let isZH = ref(VueCookie.get("local") != "en");/*** 切换语言*/
const changeLanguage = () => {VueCookie.set( "local", isZH.value ? "en" : "zh");//对页面进行重新挂载location.reload()
}const tableData = ref([{id: 1,date: "2016-05-02",name: t("table.name"),address: t("table.address"),},// ...更多数据{id: 2,date: "2016-05-02",name: "王小虎",address: "上海市普陀区金沙江路 1518 弄",},{id: 3,date: "2016-05-02",name: "王小保",address: "上海市普陀区金沙江路 1519 弄",},
]);
</script>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 十二,Spring Boot 异常处理(自定义异常页面,全局异常,自定义异常)
  • Golang数据流处理:掌握Reader和Writer接口的技巧
  • C++设计模式——Mediator中介者模式
  • RAII 与 std::lock_guard 在 C++ 中的应用:自动化互斥锁管理与线程安全
  • 【JavaScript】数据结构之字典 哈希表
  • HTML5下<hr>标签的CSS样式定制
  • 关于Linux Makefile的一些函数知识foreach、if、call、origin、shell、error和warning
  • 如何使用myabtis log plugin插件展示出数据库查询语句
  • 【C++11】智能指针
  • STM32常用数据采集滤波算法
  • Java | Leetcode Java题解之第400题第N位数字
  • 决策树基础概论
  • Android 13 固定systemUI的状态栏为黑底白字,不能被系统应用或者三方应用修改
  • flutter widget.onPressed回调无效
  • 微软面向所有用户推出 Xbox Game Pass Standard
  • 分享一款快速APP功能测试工具
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Git 使用集
  • java概述
  • NSTimer学习笔记
  • Rancher-k8s加速安装文档
  • SpriteKit 技巧之添加背景图片
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 大主子表关联的性能优化方法
  • 浏览器缓存机制分析
  • 每天10道Java面试题,跟我走,offer有!
  • 前端性能优化——回流与重绘
  • 使用 @font-face
  • 怎么把视频里的音乐提取出来
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 正则表达式-基础知识Review
  • ​【已解决】npm install​卡主不动的情况
  • ​queue --- 一个同步的队列类​
  • ​低代码平台的核心价值与优势
  • ​如何使用QGIS制作三维建筑
  • #### go map 底层结构 ####
  • #APPINVENTOR学习记录
  • #单片机(TB6600驱动42步进电机)
  • (07)Hive——窗口函数详解
  • (C++17) std算法之执行策略 execution
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (poj1.3.2)1791(构造法模拟)
  • (web自动化测试+python)1
  • (六)vue-router+UI组件库
  • (六)激光线扫描-三维重建
  • (十)Flink Table API 和 SQL 基本概念
  • (十三)Flink SQL
  • (四) Graphivz 颜色选择
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)四层和七层负载均衡的区别
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据