012:vue3使用vue-i18n实现国际化

文章目录

  • 1. 安装 `vue-i18n`
  • 2. 创建文件存储翻译的语言
  • 3. 注册i18n实例
  • 4. 在main.ts中引入vue-i18n实例
  • 5. 在组件模板中使用
  • 6. 在js中使用
  • 7. locale.value 实现国际化语言切换
  • 8. vue3 中ref里面的国际化值没生效问题

请添加图片描述

1. 安装 vue-i18n

cnpm i --save vue-i18n

2. 创建文件存储翻译的语言

src/lang/en.json

export default {
  login: 'login'
};

src/lang/zh.json

export default {
  login: '登录'
};

3. 注册i18n实例

src/lang/index.ts

import { createI18n } from "vue-i18n";
import zh from "./zh.json";
import en from "./en.json";
import vantZhCN from 'vant/lib/locale/lang/zh-CN';//vant组件库的国际化中文
import vantEnUS from 'vant/lib/locale/lang/en-US';//vant组件库的国际化英文
import { localStorage } from "@/utils/local-storage";

const i18n: any = createI18n({
  locale: localStorage.get("lang") || "zh",
  legacy: false,
  globalInjection: true,
  messages: {
    zh: {
      ...zh,
      ...vantZhCN
    },
    en: {
      ...en,
      ...vantEnUS
    },
  }
});
export { i18n };

4. 在main.ts中引入vue-i18n实例

src/main.ts

import { i18n } from '@/lang/index';
app.use(i18n).mount("#app");

5. 在组件模板中使用

直接使用 $t('login')

<div class="title">
  {{ $t('login') }}
</div>

6. 在js中使用

需要导入 i18n 在使用 i18n.global.t('login')

import { i18n } from '@/lang/index';
showDialog({
     confirmButtonText: i18n.global.t('confirm'),
     message: i18n.global.t('pleaseWalletBrowser'),
 }).then(() => {
 });

7. locale.value 实现国际化语言切换

核心代码:
import { useI18n } from “vue-i18n”;
const { locale } = useI18n();
locale.value = lang;

<template>
  <view class="tab">
    <view
      class="item"
      :class="{ active: active == 'zh' }"
      @click="changeActive('zh')"
      ></view
    >
    <view
      class="item"
      :class="{ active: active == 'en' }"
      @click="changeActive('en')"
      >EN</view
    >
  </view>
</template>
<script setup lang="ts">
import { localStorage } from "@/utils/local-storage";
import { useI18n } from "vue-i18n";
const { locale } = useI18n();
const active = ref(locale.value || localStorage.get("lang"));
const changeActive = lang => {
  locale.value = lang;
  active.value = lang;
  localStorage.set("lang", lang);
};
</script>
<style scoped lang="scss">
.tab {
  height: 100%;
  margin: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  border-radius: 4px;
  background: rgba(37, 44, 66);
  padding: 3px;
  .item {
    text-align: center;
    padding: 0px 15px;
    height: 100%;
    position: relative;
    border-radius: 4px;
    color: #fff;
    font-size: 14px;
  }
  .active {
    background: #f0b90b;
    color: #fff;
  }
}
</style>

8. vue3 中ref里面的国际化值没生效问题

如在ts中使用 ref声明 的默认文字国际化,当我们切换国际化的时候发现并不能生效

const menuList = ref([
  {
    key: 1,
    menuName: t("menu1"),
  }
]);

需要使用 computed 处理即可

const menuList = computed(() => {
  return [
    {
      key: 1,
      menuName: t("menu1"),
    },
  ];
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树状数组-数据结构

树状数组 t[x] 节点的父节点为 t[x lowbit(x)] 整棵树的深度为 log2n 1 1 . add(x,k) 给指定的节点x加上k — 动态的维护前缀和 需要从x开始&#xff0c;向上找到所有父节点&#xff0c;值都加上k 2. ask(x) 求取节点x之前的前缀和 求取单点之前的前缀和只需要累加即可 …

【算法】单单单单单调栈,接接接接接雨水

【算法】单单单单单调栈&#xff0c;接接接接接雨水 今天没有小故事。 参考以及题单来源&#xff1a; 代码随想录 (programmercarl.com) Part 1 啥是单调栈&#xff1f; 1.啥啥啥是单调栈&#xff1f; 栈的特性想必各位再熟悉不过了&#xff1a;先进后出。栈仅仅有一个出口&a…

算法 day29 回溯5

491 非递减子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情…

检测头篇 | 利用RT-DETR模型的检测头去替换YOLOv8中的检测头

前言:Hello大家好,我是小哥谈。RT-DETR号称是打败YOLO的检测模型,其作为一种基于Transformer的检测方法,相较于传统的基于卷积的检测方法,提供了更为全面和深入的特征理解,将RT-DETR检测头融入YOLOv8,我们可以结合YOLO的实时检测能力和RT-DETR的深度特征理解能力,打造出…

业务网关的设计与实践

在过去的两年里&#xff0c;主要在做业务网关的开发。今年春节后选择转岗去做更偏近业务的开发。公司的业务是金融相关&#xff0c;一直觉得金融相关的业务是有一定门槛并且是对职业生涯有帮助的&#xff0c;所以趁这个机会来深入了解这块业务。 仔细回想&#xff0c;在做业务…

【数据处理包Pandas】数据载入与预处理

目录 一、数据载入二、数据清洗&#xff08;一&#xff09;Pandas中缺失值的表示&#xff08;二&#xff09;与缺失值判断和处理相关的方法 三、连续特征离散化四、哑变量处理 准备工作 导入 NumPy 库和 Pandas 库。 import numpy as np import pandas as pd一、数据载入 对…

开机自启动

对win10,给一种开机自启动的设置方法: 1. winr 打开 2. 输入shell:startup打开 开始\程序\启动 3. 把想要自启动的应用的快捷方式放在这里即可 亲测有用

第十一届蓝桥杯物联网试题(省赛)

对于通信方面&#xff0c;还是终端A、B都保持接收状态&#xff0c;当要发送的数组不为空再发送数据&#xff0c;发送完后立即清除&#xff0c;接收数据的数组不为空则处理&#xff0c;处理完后立即清除&#xff0c;分工明确 继电器不亮一般可能是电压不够 将数据加空格再加\r…

RPA自动化小红书自动化写文以及发文!

1、视频演示 RPA自动化小红书自动写作发文 2、核心功能点 采集笔记&#xff1a;采集小红书上点赞量大于1000的爆款笔记 下载素材&#xff1a;下载爆款笔记的主图 爆款改写&#xff1a;根据爆款笔记的标题仿写新的标题以及新的文案 自动发布&#xff1a;将爆款笔记发布到小红…

Oracle RAC One Node,双胞胎变独生子?

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

LeetCode刷题实战2:两数相加

在日常我们学习数据结构和算法的知识&#xff0c;一定不能只停留在看书、看视频层面&#xff0c;一定要自己多练习&#xff0c;纸上得来终觉浅&#xff0c;绝知此事要躬行。 题目内容 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存…

Vue3:组件间通信-$attrs的使用

一、情景说明 我们之前学习了通过props实现&#xff0c;父给子传数据 那么&#xff0c;如果&#xff0c;父组件给子组件传递多个数据&#xff0c;但是&#xff0c;子组件只用props声明了一个数据 其他数据去哪里了呢&#xff1f; 二、案例 1、父组件 <Child :a"a&…

Linux 关闭防火墙命令(新手)

关闭防火墙 查看防火墙状态 systemctl status firewalld.service 临时关闭防火墙&#xff08;重启失效&#xff09; systemctl stop firewalld.service 永久关闭防火墙 systemctl disable firewalld.servicesudo systemctl enable firewalld&#xff0c;这种方式输入命令…

AcWing 731. 毕业旅行问题(每日一题)

原题链接&#xff1a;731. 毕业旅行问题 - AcWing题库 此题难度较大&#xff0c;是2019年字节跳动校招题&#xff0c;里面涉及位运算与状态压缩DP&#xff0c;不会的可以去学习&#xff0c;此题根据个人量力而行。 建议看一下y总的讲解&#xff1a;AcWing 731. 毕业旅行问题&…

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

前言【Unity 实用工具篇】| Unity 实现背景模糊效果,简单易用一、实现背景模糊效果1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍2.1 导入下载好的资源2.2 功能介绍2.2.1 捕获特效2.2.2 高级选项

长连接详解

一分钟了解长连接 、短连接、心跳机制与断线重连 - 知乎 (zhihu.com) websocket 实现长连接原理_websocket 是长连接吗-CSDN博客

RedisDesktopManager 安装

简介&#xff1a;安装redis可视化工具 一、下载压缩包 Redis 可视化工具 链接&#xff1a;https://pan.baidu.com/s/1P2oZx9UpQbXDsxJ3GPUeOQ 提取码&#xff1a;6rft Redis 命令窗口版本 链接&#xff1a;https://pan.baidu.com/s/1mIuxCEWwD__aoqp1Cx8MFQ 提取码&#xf…

Linux 文件相关命令

一、查看文件命令 1&#xff09;浏览文件less 默认查看文件的前 10 行。 less /etc/services ##功能说明&#xff1a; #1.默认打开首屏内容 #2.按【回车】按行访问 #3.按【空格】按屏访问 #4.【从上向下】搜索用/111,搜索包含111的内容&#xff0c;此时按n继续向下搜&#x…

力扣刷题 45.跳跃游戏 II

目录 题干 解题思路 题干 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n…

稀碎从零算法笔记Day39-LeetCode:有向无环图中一个节点的所有祖先

感觉写的越来越难了hhh&#xff0c;一晚上只研究明白了2道题 题型&#xff1a;拓扑排序、BFS、图 链接&#xff1a;2192. 有向无环图中一个节点的所有祖先 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述&#xff08;红字为笔者添加&#xff0…