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

前端多语言

前端多语言目前常用i18n实现

一、react

1.安装依赖

npm install react-i18next i18next --save

2.创建配置文件

src/i18n
config.ts:对 i18n 进行初始化操作及插件配置
en.json:英文语言配置文件
zh.json:中文语言配置文件

config.ts

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import translation_en from './en.json';
import translation_zh from './zh.json';const resources = {en: {translation: translation_en,},zh: {translation: translation_zh,},
};i18n.use(initReactI18next).init({resources,// 默认语言  zh/en  中文/英文lng: 'zh',interpolation: {escapeValue: false,},
});export default i18n;

zh.json

{"language":"语言","switch":"选择",
}

en.json

{"language":"Language","switch":"Switch",
}

app.tsx引入

// 引用配置文件
import '@/i18n/config';

3.使用

  • 函数组件使用
// Page1 函数式组件
import React from 'react';
// 引入 useTranslation 
import { useTranslation } from 'react-i18next';const Page1: React.FC = () => {const { t } = useTranslation();return (<div><p>这是Page1</p><p>{t('language')}</p></div>);
};export default Page1;
  • 类组件(使用withTranslation 高阶函数(HOC) 来完成语言配置的数据注入)
// Page2  类组件
import React from 'react';
// 引入HOC高阶函数 withTranslation 和 i18n 的ts类型定义 WithTranslation
import { withTranslation, WithTranslation } from 'react-i18next';class ClassComponent extends React.Component<WithTranslation> {render() {const { t } = this.props;return (<div><p>{t('language')}</p></div>);}
}
// withTranslation 完成语言配置数据注入
export const Page2 = withTranslation()(ClassComponent); 
  • 切换语言
// 函数式组件
import React from 'react';
import { useTranslation, Trans } from 'react-i18next';const Page1: React.FC = () => {const { t, i18n } = useTranslation();return (<div><button onClick={() => i18n.changeLanguage(i18n.language == 'en' ? 'zh' : 'en')}>{i18n.language == 'en' ? 'zh' : 'en'}</button><p>{t('language')}</p></div>);
};export default Page1;
//  类式组件
import i18n from 'i18next';const changeLanguage= (val) => {i18n.changeLanguage(val); // 传入 'en' / 'zh'
};

二、vue

1.安装依赖

pnpm add vue-i18n

2.创建配置文件

src/i18n
config.ts:对 i18n 进行初始化操作及插件配置
en.json:英文语言配置文件
zh.json:中文语言配置文件

config.ts

import { createI18n } from 'vue-i18n' // 引入vue-i18n组件import en from './en.json'
import zh from './zh.json'export const getCurrLang = () => {// const localLang = navigator.language.split('-')[0]; // 浏览器语言const { lang } = JSON.parse(localStorage.getItem('lang') ?? '{}') // 本地存储语言return lang || 'zh'
}//注册i18n实例并引入语言文件
const i18n = createI18n({legacy: false,locale: getCurrLang(), // 语言标识fallbackLocale: 'zh', //没有英文的时候默认中文语言messages: {zh: { ...routerLang.zh, ...zh },en: { ...routerLang.en, ...en }}
})
export default i18n

zh.json

{"language":"语言","switch":"选择",
}

en.json

{"language":"Language","switch":"Switch",
}

main.ts引入


import i18n, { getCurrLang } from "@/i18n";
const app = createApp(App)
app.use(i18n)
app.use(ElementPlus, {locale: getCurrLang() == 'zh' ? elementplusZhCn : elementplusEn,
})
app.mount('#app')

3.使用

<template><div>$t('language')</div><div @click="handleLangClick">$t('Switch')</div>
</template>...const i18n = useI18n()
const { t } = i18nconst handleLangClick = () => {i18n.locale.value = i18n.locale.value == 'en' ? 'zh' : 'en'}
const langList = computed(() => [{ label: 'zh', value: t('components.layout-head.228891-3') },{ label: 'en', value: t('components.layout-head.228891-4') }
])

三、插件(du-i18n、i18n Ally)

看下面博客
https://blog.csdn.net/m0_55967670/article/details/140876053?spm=1001.2014.3001.5501

相关文章:

前端多语言

前端多语言目前常用i18n实现 一、react 1.安装依赖 npm install react-i18next i18next --save2.创建配置文件 src/i18n config.ts&#xff1a;对 i18n 进行初始化操作及插件配置 en.json&#xff1a;英文语言配置文件 zh.json&#xff1a;中文语言配置文件 config.ts im…...

人工智能-机器学习之多元线性回归(项目实践一)

目标&#xff1a;运用scikit-learn进行多元线性回归方程的构建&#xff0c;通过实际案例的训练集和测试集进行预测&#xff0c;最终通过预测结果和MSE来评估预测的精度。 一、首先安装scikit-learn&#xff1a;pip install scikit-learn C:\Users\CMCC\PycharmProjects\AiPro…...

后台定时查杀进程策略

2019年做的一个500元价位内手机后台定时查杀的功能策略&#xff0c;现在2025年了回过头看&#xff0c;确实已经不适用了。现在进程管控大部分是不杀进程的方式了&#xff0c;类似冻结(类似苹果的墓碑机制)&#xff0c;而杀进程策略主要是场景式异常查杀了&#xff0c;例如明显性…...

Objective-C语言的学习路线

Objective-C语言的学习路线 在程序开发的历史长河中&#xff0c;Objective-C作为一种继承自C语言与Smalltalk的编程语言&#xff0c;扮演着重要的角色。虽然随着Swift语言的出现&#xff0c;Objective-C的使用有所减少&#xff0c;但它依然是iOS和macOS应用开发的重要基础&…...

宁德时代2025年Verify入职测评语言理解及数字推理真题SHL题库汇总、考情分析

宁德时代社招Verify入职测评对薪酬有着重要影响&#xff0c;其规定正确率达到80%才能顺利通过测评。这体现了公司对人才专业素养与能力的严格要求&#xff0c;旨在筛选出真正符合岗位需求的优秀人才。测评内容涵盖了专业知识、技能运用、逻辑思维等多方面&#xff0c;只有综合能…...

【Spring】注入方式

介绍 在Spring框架中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09;是实现控制反转&#xff08;Inversion of Control, IoC&#xff09;的核心机制。 除了通过XML配置的注入方式&#xff08;已逐渐被淘汰&#xff09;&#xff0c;Spring还支持多种基…...

Python 中的作用域:规则与应用

在 Python 编程中&#xff0c;作用域&#xff08;Scope&#xff09; 是指一个变量可以被访问和引用的范围。作用域与变量的生命周期密切相关&#xff0c;决定了变量何时被创建、何时被销毁以及在哪些地方可以使用它。理解作用域对于编写清晰、可维护的代码至关重要。 Python 中…...

T-SQL语言的字符串处理

T-SQL语言的字符串处理 引言 在数据库管理和应用开发中&#xff0c;我们经常需要对字符串进行处理。字符串的处理包括查找、替换、分割、拼接以及格式化等操作&#xff0c;而这些操作在SQL Server中可以通过T-SQL&#xff08;Transact-SQL&#xff09;来实现。T-SQL是微软SQL…...

宇航用VIRTEX5系列FPGA的动态刷新方法及实现

SRAM型FPGA在宇航领域有广泛的应用&#xff0c;为解决FPGA在空间环境中的单粒子翻转问题&#xff0c;增强设计的可靠性&#xff0c;本文介绍一种低成本的抗辐照解决方案。该方案从外置高可靠存储器中读取配置数据&#xff0c;通过定时刷新结合三模冗余的方式消除单粒子影响&…...

Flink提交任务通过Kerberos认证

Flink提交任务通过Kerberos认证 Clouera官网地址&#xff1a; https://docs.cloudera.com/csa/1.7.0/security/topics/csa-securing-jobs.html Securing Apache Flink jobs flink run -d -p 2 \ -yD security.kerberos.login.keytabtest.keytab \ -yD security.kerberos.lo…...

【linux】文件与目录命令 - cp

文章目录 1. 基本用法2. 常用参数3. 用法举例4. 注意事项 cp 命令用于复制文件或目录&#xff0c;支持单个文件复制、多文件复制以及目录的递归复制&#xff0c;是 Linux 系统中常用的文件管理命令之一。 1. 基本用法 语法&#xff1a; cp [选项] 源文件 目标文件 cp [选项] …...

鸿蒙--登入案例

实现要求&#xff1a; 在账户和密码的输入框输入账号或密码时&#xff0c;提交按钮下方同步出现输入的账户和密码 Entry Component struct login {State username:string State password:string build() {Column(){// 图标Image($r(app.media.app_icon)).width(100).height(…...

【JavaWeb】EL表达式

目录 1.EL表达式概述 2.EL表达式运算 3.EL表达式操作对象 4.EL表达式内置对象 4.1.参数隐藏对象 4.2.域隐藏对象 4.3.PageContext对象 1.EL表达式概述 EL&#xff08;Expression Language&#xff09;是一门表达式语言&#xff0c;它对应<% ... %>。在JSP中&…...

Angular由一个bug说起之十三:Cross Origin

跨域 想要了解跨域&#xff0c;首要要了解源 什么是源&#xff0c;源等于协议加域名加端口号 只有这三个都相同&#xff0c;才是同源&#xff0c;反之则是非同源。 比如下面这四个里&#xff0c;只有第4个是同源 而浏览器给服务器发送请求时&#xff0c;他们的源一样&#xff0…...

WEB前端-2

目录 HTML-常见的网页标签-分类2 语义化标签 列表标签 表单标签 form标签 input标签 select标签 textarea标签 html转义符 h5提供的新标签 【例3&#xff1a;豆瓣电影】 【源码】 【例4&#xff1a;登录注册】 【源码】 【例5&#xff1a;QQ注册】 【源码】 H…...

高斯混合模型 (Gaussian Mixture Model, GMM) 算法详解与PyTorch实现

高斯混合模型 (Gaussian Mixture Model, GMM) 算法详解与PyTorch实现 目录 高斯混合模型 (Gaussian Mixture Model, GMM) 算法详解与PyTorch实现1. 高斯混合模型 (GMM) 算法概述1.1 高斯分布1.2 GMM的优势2. GMM的核心技术2.1 模型定义2.2 参数估计2.3 损失函数3. PyTorch实现G…...

web作业

作业一 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</title> </head&g…...

Tauri教程-基础篇-第一节 Tauri项目创建及结构说明

“如果结果不如你所愿&#xff0c;就在尘埃落定前奋力一搏。”——《夏目友人帐》 “有些事不是看到了希望才去坚持&#xff0c;而是因为坚持才会看到希望。”——《十宗罪》 “维持现状意味着空耗你的努力和生命。”——纪伯伦 Tauri 技术教程 * 第四章 Tauri的基础教程 第一节…...

计算机网络之---物理层标准与协议

常见的物理层标准 1. IEEE 802 标准 IEEE 802 是一系列定义局域网和城域网通信协议的标准&#xff0c;其中许多标准涉及到物理层的技术细节&#xff1a; IEEE 802.3 (Ethernet)&#xff1a;定义了以太网的物理层规范&#xff0c;规定了如何通过电缆&#xff08;例如同轴电缆…...

Idea日志乱码

问题描述 前提&#xff1a;本人使用windows Idea运行sh文件&#xff0c;指定了utf-8编码&#xff0c;但是运行过程中还是存在中文乱码 Idea的相关配置都已经调整 字体调整为雅黑 文件编码均调整为UTF-8 调整Idea配置文件 但是还是存在乱码&#xff0c;既然Idea相关配置已经…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...