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

vue3+vue-i18n 监听语言的切换

最近在用 vue3 做一个后台管理系统,之前是只考虑中文,现在加了个需求是多语言。
本来也不是太难的需求,但是我用的并不熟悉,并且除了页面展示不同的语言,需求是在切换语言的时候在几个页面中需要做出一些自定义的行为,所以需要监听语言的变化,所以记录一下。
如上所述,如果只是在页面中展示不同语言的文字,还是很简单的,只需要安装、配置 vue-i18n 之后,在页面中用 $t(‘变量名’)就行了(这里指的是 html 中,如果是 ts/js 中需要用 $t 还要配置一下,如果有需要可以参考这里:vue3中使用vue-i18n
但之前没有关注监听语言变化并做出反应,功能做通了之后发现其实其实挺简单的。

安装、配置 vue-i18n 可以参考 上篇文章 [vue3中使用vue-i18n ](https://blog.csdn.net/JaneLittle/article/details/127112273),假如在某个组件中要监听语言的变化:
1. 在 hooks 文件夹中建一个 locale.ts 文件,文件内容:
import { computed } from 'vue';
import { useI18n } from 'vue-i18n';
import { Message } from '@arco-design/web-vue';export default function useLocale() {const i18 = useI18n();const currentLocale = computed(() => {return i18.locale.value;});const changeLocale = (value: string) => {i18.locale.value = value;localStorage.setItem('arco-locale', value);Message.success(i18.t('navbar.action.locale'));};return {currentLocale,changeLocale,};
}
  1. 在要监听语言变化的页面
import { watch } from 'vue';
import useLocale from '@/hooks/locale';  // 引入const { currentLocale } = useLocale();
watch(currentLocale, (newValue, oldValue) => {console.log('组件名----语言变化');console.log(`newValue: ${newValue}`);console.log(`oldValue: ${oldValue}`);});

这么看确实是挺简单的,并且在 ts 中如果不用 $t 用 i18.t 也挺方便的。

如果在不同的页面监听语言的变化并且做出统一的行为(比如提示“已经切换到某语言”),可以调用 changeLocale 方法:

import useLocale from '@/hooks/locale';const { changeLocale } = useLocale();// html<el-select  @change="changeLocale">...   // 代码</el-select>

希望对您有所帮助,也希望路过的大佬不吝赐教!

http://www.lryc.cn/news/114626.html

相关文章:

  • 【考研复习】24王道数据结构课后习题代码|2.3线性表的链式表示
  • 娇滴滴的一朵花(Python实现)
  • Android AccessibilityService研究
  • 华为OD机试(含B卷)真题2023 算法分类版,58道20个算法分类,如果距离机考时间不多了,就看这个吧,稳稳的
  • JMeter命令行执行+生成HTML报告
  • 学习Boost二:从附录3来看编码习惯
  • STM32基础入门学习笔记:核心板 电路原理与驱动编程
  • 最后一次模拟考试题解
  • Mac 创建和删除 Automator 工作流程,设置 Terminal 快捷键
  • 2023华为OD机试真题B卷 Java 实现【最长的元音串】
  • 网络防御之传输安全
  • 【css】组合器
  • HTTPS、TLS加密传输
  • docker frp 搭建 http + stcp 代理
  • 项目出bug,找不到bug,如何拉回之前的版本
  • vue-cli
  • android获取屏幕分辨率的正确方法;获取到分辨率(垂直方向像素)的不正确
  • 机器学习笔记之优化算法(八)简单认识Wolfe Condition的收敛性证明
  • 通过win+r安装jupyter报错
  • C#声明一个带返回值的委托
  • Flutter 自定义view
  • Ubuntu新装系统报错:sudo: vim:找不到命令
  • Vue3自定义简单的Swiper滑动组件-触控板滑动鼠标滑动左右箭头滑动-demo
  • 三个主流数据库(Oracle、MySQL和SQL Server)的“单表造数
  • TypeScript 中【class类】与 【 接口 Interfaces】的联合搭配使用解读
  • JavaWeb 手写Tomcat底层机制
  • Gof23设计模式之组合模式
  • 龙芯积极研发二进制翻译,提升软硬件兼容性,提高LoongArch架构
  • 3天爆肝整理,自动化测试-YAML文件读写实战(超细总结)
  • 算法通关村——透彻理解二分查找