【国际化I18n使用方法】vue2使用i18简单实现多语种切换,刷新保持,动态数据处理

news2024/11/25 19:40:00

效果图

在这里插入图片描述
在这里插入图片描述

使用流程

总结就是,安装好插件后,配置几个语言的js文件,每个词都要在每个js内写一遍对应的语言,然后通过切换js文件拿到对应的语言,实现翻译的效果。然后当前使用什么语言保存到本地,这样刷新就可以不会变回默认的语言了。

安装插件

npm install vue-i18n
// 或
yarn add vue-i18n

引用

import VueI18n from 'vue-i18n'
Vue.use(VueI18n)

运行时可能会报错

在这里插入图片描述
由于使用的是@vue/cli 4.4.0,安装的vue-i18n版本过高,降低版本即可

npm uninstall vue-i18n
npm install vue-i18n@6

main.js

import Vue from 'vue'
import App from './App.vue'
// i18
import VueI18n from 'vue-i18n'
import i18n from './utils/index'
new Vue({
  VueI18n,
  i18n,
  render: h => h(App),
}).$mount('#app')

utils

结构是这样的
在这里插入图片描述

cn.js

// 创建文件zh/index.js
const zh = {
    system: "Vue后台管理系统",
    full: "全屏显示",
    account: "我的账户",
    invoice: "原始单据",
    reconciliation: "财务对账",
    record: "对账记录",
    report: "月结报表",
    setting: "系统设置",
    login: "登录",
    tips: "{name} 用户名和密码随便填 {cont}",
    administrator: "管理员",
    placeUser: "请输入用户名",
    palcePass: "请输入密码",
    palceCode: "请输入验证码",
    accounts: "账号",
    password: "密码",
    code: "验证码"
}
export default zh

en.js

// 创建文件en/index.js
const en = {
    system: "Background management system",
    full: "full-screen display",
    account: "myAccount",
    invoice: "invoice",
    reconciliation: "Statement",
    record: "recording",
    report: "report",
    setting: "Settings",
    login: "login",
    tips: "{name} Username and password are filled in casually {cont}",
    administrator: "administrator",
    placeUser: "please enter user name",
    palcePass: "Please enter your password",
    palceCode: "please enter verification code",
    accounts: "accounts",
    password: "password",
    code: "Verification code"
}
export default en

index.js

// src/utils下创建i18n/index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'

// 引入各个语言配置文件
import zh from './lang/cn'
import en from './lang/en'

Vue.use(VueI18n)
// 创建vue-i18n实例i18n
const i18n = new VueI18n({
    // 设置默认语言
    locale: localStorage.lang || 'zh', // 语言标识
    // 添加多语言(每一个语言标示对应一个语言文件)
    messages: {
        zh,
        en
    }
})
// 暴露i18n
export default i18n

页面使用

<template>
  <div class="hello">
    <div class="test">
      <div>{{ $t("system") }}</div>
      <button @click="setLanguage()">切换语言</button>
    </div>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
      language: localStorage.getItem("lang") || "zh"
    }
  },
  methods: {
    setLanguage() {
      this.language = this.language === 'zh' ? 'en' : 'zh'
      this.$i18n.locale = this.language
      localStorage.setItem("locale", this.language); //保存本地
      localStorage.setItem("lang", this.language);
    }
  }
}
</script>

注意点1:全局刷新保持切换的语言

1,你在某一个设置语言的页面切换语言,然后把切换的比如从zh切换到en。然后把en保存到本地缓存里。
2,然后在src\utils\index.js 文件内,写locale: localStorage.lang || ‘zh’ 。这句话的意思就是有缓存的话拿缓存的语言类型,没有就默认用中文的,然后你就可以全局都刷新保持语言类型了。

注意点2:动态数据如何用i18

1,在你的语言文件内用花括号然后内部用一个变量接收,在你的也没事,调用$t 的时候,第二个参数传一个对象,里面分别是你对应括号内的名字和值就可以实现动态数据
在这里插入图片描述
在这里插入图片描述
这里第二个参数用对象,里面键名需要和js文件里定义的名字一样才行
在这里插入图片描述
页面上的效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1849295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析

城市管理综合执法管理平台实现执法办案、业务全流程在线办理&#xff0c;依托移动端PC端的“两端”应用模式&#xff0c;保障能够通过信息化手段进行日常的执法办案工作&#xff0c;强化执法监督功能。提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析等功能&a…

python数据分析-糖尿病数据集数据分析预测

一、研究背景和意义 糖尿病是美国最普遍的慢性病之一&#xff0c;每年影响数百万美国人&#xff0c;并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病&#xff0c;其中个体失去有效调节血液中葡萄糖水平的能力&#xff0c;并可能导致生活质量和预期寿命下降。。。。 …

Elasticsearch中的post_filter后置过滤器技术

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

【单片机】MSP430G2553单片机 Could not find MSP-FET430UIF on specified COM port 解决方案

文章目录 MSP430G2553开发板基础知识解决办法如何实施解决办法4步骤一步骤二步骤三 MSP430G2553开发板基础知识 MSP430G2553开发板如下图&#xff0c;上半部分就是UIF程序下载调试区域的硬件。个人觉得MSP430G2553开发板的这个部分没有做好硬件设计&#xff0c;导致很多系统兼…

引擎霸屏推广9招带你驰骋市场战场-华媒舍

在现代市场竞争激烈的环境下&#xff0c;企业如何快速上车&#xff0c;脱颖而出&#xff0c;引擎霸屏推广成为了一种有效的市场推广手段。本文将为您介绍9招带您驰骋市场战场&#xff0c;让您的品牌广告在市场中快速传播。 一、选对渠道 选择合适的渠道是成功的关键。通过市场…

Unit redis-server.service could not be found.

我的报错如下Unit redis-server.service could not be found. 关键是刷新后台服务 sudo systemctl daemon-reload启动redis-server sudo systemctl start redis-server查看redis-Server服务状态 sudo systemctl status redis-server

【吉林大学Java程序设计】第10章:Java数据库编程技术(JDBC)

第10章&#xff1a;Java数据库编程技术&#xff08;JDBC&#xff09; 1. 数据库系统概述数据库系统SQL语言 2.JDBC概述JDBC APIJDBC Driver API 3.JDBC编程步骤示例1&#xff1a;MySQL数据库操作程序示例2&#xff1a;Java DB数据库操作程序 重点小结 1. 数据库系统概述 数据库…

Matlab只选取自己需要的数据画图

在Matlab作图的时候&#xff0c;经常会在同一个坐标系中作很多数据的图&#xff0c;如下图所示&#xff1a; 这就会导致不同数据所作的线会重叠在一起&#xff0c;不利于数据分析。如果只想对比几个数据的趋势&#xff0c;直接修改代码太过麻烦&#xff0c;可通过Matlab的绘图…

leetcode33:搜索旋转数组

题目链接&#xff1a;33. 搜索旋转排序数组 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int search(vector<int>& nums, int target) {int n (int)nums.size();if(!n){return -1;}if(n 1){return nums[0] target ? 0 : -1;}int left 0, …

IDS使用规则

ids入侵检测系统 Snort(基于特征的入侵检测系统) 软硬件配套 snort官网链接&#xff1a;Snort - Network Intrusion Detection & Prevention System(https://www.snort.org) 环境&#xff1a;centos7,拖动需要开共享粘贴板和开双向 一、daq 1、预装dap所需程序 yum inst…

细说MCU定时器模块的输入捕捉功能的实现方法

目录 一、工程背景 二、建立工程 1、配置GPIO 2、选择时钟源和Debug 3、 配置定时器TIM1 4、 配置定时器TIM13 5、配置串口 6、配置中断 7、配置系统时钟 三、代码修改 1、使能TIM1输入捕捉功能和TIM3的PWM输出功能 2、自定义变量 3、重定义回调函数 4、输出到…

智慧互联,Vatee万腾平台引领新潮流

在数字化、智能化的新时代&#xff0c;智慧互联正成为推动社会进步的重要力量。在这一潮流中&#xff0c;Vatee万腾平台凭借其卓越的技术实力和创新理念&#xff0c;正引领着新潮流&#xff0c;将智慧互联的理念融入生活的方方面面。 Vatee万腾平台是一个以大数据、云计算、人工…

高性能并行计算华为云实验二:WordCount算法实验

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建wordcount源码 3.1.1 实验说明 3.1.2 文件创建 3.2 Makefile文件创建与编译 3.3 主机配置文件建立与运行监测 3.3.1 主机配置文件建立 3.3.2 运行监测 三、实验结果与分析 4.1 实验结果 4.2 结果分析 4.2.1 …

文化保护与数字化时代:Facebook的文化责任

随着数字化时代的到来&#xff0c;全球各地的文化遗产和传统面临着前所未有的挑战和机遇。作为全球最大的社交网络平台之一&#xff0c;Facebook在连接亿万用户的同时&#xff0c;也肩负着重要的文化责任。本文将深入探讨Facebook在文化保护和传承方面的作用和责任&#xff0c;…

电子竞赛1——基于DDS的AM信号发生器

课题要求 产生AM调幅波&#xff1b; 要求&#xff1a;载波10K&#xff0c;被调制波1K&#xff1b; 短按键1&#xff08;pin_143&#xff09;改变该调幅波的调制度&#xff1a;25%、50%、75%&#xff1b; 长按按键1&#xff08;pin_143&#xff09;改变被调制信号频率&#…

【2024最新精简版】线程安全/多线程 面试篇

文章目录 一. 线程基础线程和进程什么是进程什么是线程 并发与并行的区别创建线程继承Thread类实现Runable接口实现Callable接口使用线程池 线程状态等待唤醒机制等待方法唤醒方法 二. 线程池线程池作用创建线程池线程池任务调度流程阻塞队列 BlockingQueue线程池拒绝策略核心线…

python-题库篇-Python语言特性

文章目录 Python语言特性1 Python的函数参数传递2 Python中的元类(metaclass)3 staticmethod和classmethod4 类变量和实例变量5 Python自省6 字典推导式7 Python中单下划线和双下划线8 字符串格式化:%和.format9 迭代器和生成器10 *args and **kwargs11 面向切面编程AOP和装饰器…

Python基础教程(二十九):operator模块

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

速度测试分析软件MySpeed

什么是 MySpeed &#xff1f; MySpeed 是一款速度测试分析软件&#xff0c;可记录您长达 30 天的互联网速度。使用 MySpeed&#xff0c;您可以轻松生成有关速度、ping 等的清晰统计数据。配置运行状况检查&#xff0c;以便在出现错误或停机时通过 Gotify、Discord、WhatsApp 或…

Android补间动画、帧动画、属性动画详解

View Animation&#xff1a; 视图动画在古老的Android版本系统中就已经提供了&#xff0c;只能被用来设置View的动画。 Drawable Animation&#xff1a; 这种动画&#xff08;也叫Frame动画、帧动画&#xff09;其实可以划分到视图动画的类别&#xff0c;专门用来一个一个的显…