react国际化配置react-i18next详解
react PC端项目构建TS,react@18.2.0+antd+vite+axios+redux+sass+ts 完整版代码下载:
https://download.csdn.net/download/randy521520/88922625
react PC端项目构建,react@18.2.0+antd+vite+axios+redux+sass完整版代码下载:
https://download.csdn.net/download/randy521520/88922569
react移动端项目构建TS,react@18.2.0+react-vant+vite+axios+redux+sass+ts完整版代码下载:
https://download.csdn.net/download/randy521520/88917557
react移动端项目构建,react@18.2.0+react-vant+vite+axios+redux+sass完整版代码下载:
https://download.csdn.net/download/randy521520/88917543
一、简介
react-i18next 是一个用于在 React 应用中实现国际化(Internationalization,简称 i18n)的库,它是基于 i18next 的 React 封装版本。国际化是指将应用程序设计成能够适应不同语言和文化习惯的过程,使得应用能够在不同地区和语言环境下使用。
react-i18next 提供了一种简单且强大的方式来实现 React 应用的国际化,它支持以下主要特性:
1.多语言支持: 可以轻松地在应用中集成多种语言的支持,使用户能够切换不同的语言版本。
2.文本翻译: 可以通过配置文件或者 API 来管理应用中的文本内容,实现文本的国际化翻译。
3.变量替换: 支持在翻译文本中插入变量,以便动态替换内容。
4.Pluralization(复数处理): 提供了复数形式处理的功能,以适应不同语言的复数规则。
5.Context(上下文)支持: 可以根据不同的上下文环境加载不同的翻译内容。
6.React Hooks 和 Higher-Order Components(HOC): 提供了方便的 React Hooks 和 HOC,使得在 React 组件中使用国际化变得更加简单。
二、配置国际化,需安装react-i18next、i18next
1.lang.js
import i18n from "i18next";
import { initReactI18next } from "react-i18next";//英文配置
const enConfig ={ok: 'OK',
};//中文配置
let zhConfig = {ok: '确定',
};//切换语言
export const changeLanguage = (events)=>{const lang = events.target.value;i18n.changeLanguage(lang)
};const resources = {'zh_CN': {translation: zhConfig,},'en': {translation: enConfig,},
};i18n.use(initReactI18next).init({resources,lng: 'zh_CN',fallbackLng: 'zh_CN',interpolation: {escapeValue: false,},
});export default i18n;
2.main.jsx
import ReactDOM from "react-dom/client";
import {BrowserRouter} from "react-router-dom";
import App from "./App.jsx";
import "@lang/lang.js";ReactDOM.createRoot(document.getElementById('root')).render(<BrowserRouter><App /></BrowserRouter>,
)
3.使用
import {useTranslation} from "react-i18next";const Home = () => {const {t} = useTranslation()return (<>{t('ok')}</>)
}export default Home;
三、i18next相关API
1.i18next.use(module):将其他插件加载到 i18next。
2.i18next.init(options, callback):初始化国际化配置
- options:配置项
debug:控制台输出信息的调试级别。用于查找加载问题。
resources:初始化时使用的资源(如果不使用加载或不使用addResourceBundle进行附加)。
partialBundledLanguages:允许在使用后端加载非捆绑资源的同时使用捆绑资源进行初始化。
lng:要使用的语言(覆盖语言检测)。
fallbackLng:如果用户语言的翻译不可用,则使用的语言。
supportedLngs:允许的语言数组。
nonExplicitSupportedLngs:如果为true,将传递例如en-US,如果在supportedLngs中找到en。
load:要查找的语言代码,给定设置语言为'en-US':'all' --> ['en-US','en','dev'],'currentOnly' --> 'en-US','languageOnly' --> 'en'。
preload:要预加载的语言数组。在服务器端很重要,以确保在呈现视图之前加载翻译。
lowerCaseLng:语言将转换为小写,例如en-US --> en-us。
cleanCode:将语言转换为小写,EN --> en,同时保留完整的区域设置,如en-US。
ns:要加载的命名空间的字符串或数组。
defaultNS:如果未传递给翻译函数的默认命名空间。
fallbackNS:如果在给定命名空间中找不到键,则查找键的字符串或数组。
saveMissing:如果未找到键,则在后端调用保存缺失键功能。
saveMissingPlurals:如果未找到键,也为复数形式调用后端的保存缺失键功能。
updateMissing:启用以使用saveMissing更新默认值(仅在defaultValue与翻译值不同的情况下起作用)。
saveMissingTo:在使用saveMissing功能时不返回键作为默认值。
missingKeyNoValueFallbackToKey:用于自定义缺失键处理(需要将saveMissing设置为true)。
parseMissingKeyHandler:接收在't()'中未找到的键并返回一个值,该值将被't()'返回。
appendNamespaceToMissingKey:将命名空间附加到缺失键。
missingInterpolationHandler:在插值值未定义时调用。如果值为空字符串或null,则不会调用此方法。
simplifyPluralSuffix:对于只有1个复数形式的语言,将使用'plural'作为后缀。
postProcess:要应用的默认后处理器的字符串或数组。
postProcessPassResolved:将已解析的对象传递到后处理器的选项对象中作为'i18nResolved'属性。
returnNull:允许空值作为有效的翻译。
returnEmptyString:允许空字符串作为有效的翻译。
returnObjects:允许对象作为有效的翻译结果。
returnDetails:返回包含有关所使用的语言、命名空间、键和值的信息的对象。
returnedObjectHandler:如果作为键传递了对象但returnObjects设置为false,则调用此方法。
joinArrays:用于连接数组的字符,例如'\n'。
overloadTranslationOptionHandler:设置defaultValue的函数。
interpolation:插值选项。
react:用于React的选项。
initImmediate:在setTimeout内触发init函数中的资源加载(默认异步行为)。
keySeparator:用于分隔键的字符。
nsSeparator:用于分隔命名空间和键的字符。
pluralSeparator:用于分隔复数和键的字符。
contextSeparator:用于分隔上下文和键的字符。
appendNamespaceToCIMode:在使用'cimode'时将命名空间前缀到返回的键。
compatibilityJSON:兼容性JSON版本。
locizeLastUsed:用于locize-lastused的选项。
locizeLastUsed.projectId:您的locize项目的ID。
locizeLastUsed.apiKey:如果要发送缺失的键,则使用的API密钥。
locizeLastUsed.referenceLng:项目的参考语言,默认为'en'。
locizeLastUsed.version:版本,默认为'latest'。
locizeLastUsed.debounceSubmit:发送数据的防抖间隔(毫秒),默认为90000。
locizeLastUsed.allowedHosts:允许发送最后使用数据的主机名数组。请将这些主机限制在本地系统、演示、测试服务器(而非生产环境)。默认为['localhost']。
ignoreJSONStructure:自动查找嵌套键,如果未找到则查找平面键,反之亦然。
maxParallelReads:调用后端的并行度限制。
maxRetries:执行重试的最大次数。
retryTimeout:在失败请求的重试之间等待的时间。
- callback:用于处理错误
3.i18next.t(keys, options):获取对应key的配置文本,options省略获取当前语言的
4.i18next.exists(key, options):判断对应的key是否存在
5.i18next.getFixedT(lng, ns, keyPrefix):
const t = i18next.getFixedT(null, null, 'user.accountSettings.changePassword')
const title = t('title');
6.i18next.changeLanguage(lng, callback):切换当前语言
- lng:需要切换的语言
- callback:用于处理错误
7.i18next.language、i18next.resolvedLanguage:获取当前是哪种语言
8.i18next.languages:获取总共配置了哪些语言
9.i18next.hasLoadedNamespace(ns, options):检查命名空间是否已加载
10.i18next.loadLanguages(lngs, callback):预加载init中未定义的其他语言
11.i18next.reloadResources():重新加载资源
12.i18next.setDefaultNamespace(ns):更改默认命名空间
13.i18next.dir(lng):获取语言读取方向, rtl 或 ltr
14.i18next.format(data, format, lng):用于格式化文本
// key = 'hello {{what}}'
i18next.t('key', { what: i18next.format('world', 'uppercase') }); // -> hello WORLD
四、i18next相关事件
1.i18next.on(‘initialized’, function(options) {}):初始化事件
2.i18next.on(‘languageChanged’, function(lng) {}):语言改变事件
3.i18next.on(‘loaded’, function(loaded) {}):资源加载事件
4.i18next.on(‘failedLoading’, function(lng, ns, msg) {}):资源加载失败事件
5.i18next.on(‘missingKey’, function(lngs, namespace, key, res) {}):在访问不存在的密钥时被触发。需要将 saveMissing 设置为 true。
6.i18next.store.on(‘removed’, function(lng, ns) {}):资源删除事件
7.i18next.store.on(‘added’, function(lng, ns) {}):资源添加事件
五、react-i18next相关hook之useTranslation:获取函数组件中的 t 函数和 i18n 实例
1.基本使用
import i18n from "i18next";
import { initReactI18next } from "react-i18next";const resources = {zh_CN: {translation: {ok:'确认',common:{placeholder: '请输入'}},},en: {translation: {ok:'确定',common:{placeholder: 'Please enter'}},},
};i18n.use(initReactI18next).init({resources,lng: 'zh_CN',fallbackLng: 'zh_CN',interpolation: {escapeValue: false,},
});export default i18n;
import {useTranslation} from "react-i18next";const Home = () => {const {t,i18n} = useTranslation();console.log(t('ok'))return (<>{t('common.placeholder')}</>)
}export default Home;
2.配置命名空间
import i18n from "i18next";
import { initReactI18next } from "react-i18next";const resources = {zh_CN: {common:{placeholder: '请输入'},translation: {ok:'确认',},},en: {common:{placeholder: 'Please enter'},translation: {ok:'ok',},},
};i18n.use(initReactI18next).init({resources,lng: 'zh_CN',fallbackLng: 'zh_CN',ns: ['common'], // 定义命名空间数组defaultNS: 'translation', // 指定默认的命名空间interpolation: {escapeValue: false,},
});export default i18n;
import {useTranslation} from "react-i18next";const Home = () => {const {t} = useTranslation(['common','translation']);console.log(t('ok',{ ns: 'translation' })); //数组的第一个可以不传nsreturn (<>{t('placeholder')}</>)
}export default Home;
3.指定获取的前缀
import i18n from "i18next";
import { initReactI18next } from "react-i18next";const resources = {zh_CN: {common:{placeholder: '请输入'},translation: {ok:'确认',very: {deeply: {nested: {test: '测试'}}}},},en: {common:{placeholder: 'Please enter'},translation: {ok:'ok',very: {deeply: {nested: {test: 'test'}}}},},
};i18n.use(initReactI18next).init({resources,lng: 'zh_CN',fallbackLng: 'zh_CN',ns: ['common'], // 定义命名空间数组defaultNS: 'translation', // 指定默认的命名空间interpolation: {escapeValue: false,},
});export default i18n;
import {useTranslation} from "react-i18next";const Home = () => {const { t } = useTranslation('translation', { keyPrefix: 'very.deeply.nested' });return (<>{t('test')}</>)
}export default Home;
4.覆盖i18n实例
import i18n from './i18n';
const { t, i18n } = useTranslation('ns1', { i18n });
5.不使用 React Suspense 来处理翻译加载
const { t, i18n, ready } = useTranslation('ns1', { useSuspense: false });
6.使用方法:useTranslation(ns,options)。ns命名空间可以是字符串、数组;options配置如下
- i18n:i18next 实例,用于提供国际化功能。
- useSuspense:是否启用 React Suspense 模式来处理翻译加载。
- keyPrefix:键前缀,用于在翻译键前添加前缀。
- bindI18n:绑定 i18n 实例的方式,可以是字符串或 false。
- nsMode:命名空间模式,指定命名空间的加载方式,可以是 ‘fallback’ 或 ‘default’。
- lng:指定要使用的语言代码。
六、react-i18next高阶组件之withTranslation,服务端对应withSSR
1.基本使用
import {withTranslation} from "react-i18next";const Home = ({ t, i18n }) => {return (<>{t('ok')}</>)
}export default withTranslation()(Home);
2.指定命名空间获取
import {withTranslation} from "react-i18next";const Home = ({ t, i18n }) => {console.log(t('placeholder',{ns:'common'}))return (<>{t('ok')}</>)
}export default withTranslation(['translation','common'])(Home);
3.指定获取的前缀
import {withTranslation} from "react-i18next";const Home = ({ t, i18n }) => {return (<>{t('test')}</>)
}export default withTranslation('translation', { keyPrefix: 'very.deeply.nested' })(Home);
4.覆盖i18n实例
import i18n from './i18n';const ExtendedComponent = withTranslation('ns1')(MyComponent);<ExtendedComponent i18n={i18n} />
5.不使用 React Suspense 来处理翻译加载
const ExtendedComponent = withTranslation()(MyComponent);<ExtendedComponent useSuspense={false} />
七、react-i18next组件之Translation
1.基本使用
import {Translation} from "react-i18next";const Home = () => {return (<Translation>{(t, {i18n}) => <p>{t('ok')}</p>}</Translation>)
}export default Home;
2.指定命名空间获取
import {Translation} from "react-i18next";const Home = () => {return (<Translation ns={['translation','common']}>{(t, {i18n}) => <p>{t('placeholder',{ns:'common'})}</p>}</Translation>)
}export default Home;
3.指定获取的前缀
import {Translation} from "react-i18next";const Home = () => {return (<Translation ns='translation' keyPrefix='very.deeply.nested'>{(t, {i18n}) => <p>{t('test')}</p>}</Translation>)
}export default Home;
4.覆盖i18n实例
import i18n from './i18n';<Translation i18n={i18n}>
{(t, { i18n }) => <p>{t('my translated text')}</p> // will be looked up from namespace ns1
}
</Translation>
5.不使用 React Suspense 来处理翻译加载
import {Translation} from "react-i18next";const Home = () => {return (<Translation ns='translation' useSuspense={false}>{(t, {i18n}) => <p>{t('test')}</p>}</Translation>)
}export default Home;
6.相关属性
- children:一个函数,接受三个参数(翻译函数 t、选项对象和加载状态 ready),返回 React 节点。
- ns:命名空间,用于指定翻译内容所属的命名空间。
- i18n:i18next 实例,用于提供国际化功能。
- useSuspense:是否启用 React Suspense 模式来处理翻译加载。
- keyPrefix:键前缀,用于在翻译键前添加前缀。
- nsMode:命名空间模式,指定命名空间的加载方式,可以是 ‘fallback’ 或 ‘default’。
八、react-i18next组件之Trans
1.基本使用
import {Trans, useTranslation} from "react-i18next";const Home = () => {const { t } = useTranslation();return (<><Trans t={t}>ok</Trans><Trans t={t} i18nKey="ok"></Trans></>)
}export default Home;
2.指定命名空间获取
import {Trans, useTranslation} from "react-i18next";const Home = () => {const { t } = useTranslation(['translation','common']);return <Trans t={t} ns="common">placeholder</Trans>;
}export default Home;
3.覆盖i18n实例
import i18n from './i18n';<Trans t={t} i18n={i18n}>ok</Trans>
4.相关属性
- children:子元素内容,可以是一个或多个 TransChild 元素。
- components:自定义组件,可以是一个包含 React 元素的数组或对象,用于替换默认的标签渲染。
- count:用于处理复数形式的计数。
- context:上下文信息,用于指定翻译的上下文环境。
- defaults:默认翻译文本,用于指定在未找到翻译时的默认文本。
- i18n:i18next 实例,用于提供国际化功能。
- i18nKey:指定的翻译键或键数组。
- ns:命名空间,用于指定翻译内容所属的命名空间。
- parent:父组件,用于在 React.createElement 中创建元素时指定父组件。
- tOptions:翻译选项,用于传递给翻译函数的参数。
- values:变量值对象,用于替换翻译文本中的变量占位符。
- shouldUnescape:是否应解码转义字符。
- t:用于执行翻译的函数。
九、react-i18next组件之I18nextProvider:注入实例
import { I18nextProvider } from 'react-i18next';
import i18n from './i18n';
import App from './App';<I18nextProvider i18n={i18n} defaultNS={'translation'}><App />
</I18nextProvider>
十、使用模板变量
1.lang.js
import i18n from "i18next";
import { initReactI18next } from "react-i18next";const resources = {zh_CN: {translation: {hello:'你好 {{text}}'},},en: {translation: {hello:'hello {{text}}'},},
};i18n.use(initReactI18next).init({resources,lng: 'zh_CN',fallbackLng: 'zh_CN',interpolation: {escapeValue: false,},
});export default i18n;
2.useTranslation 使用变量
import {useTranslation} from "react-i18next";const Home = () => {const {t,i18n} = useTranslation();let textToShow = '';if (i18n.language === 'zh_CN') {textToShow = t('hello', { text: '世界' });} else if (i18n.language === 'en') {textToShow = t('hello', { text: 'world' });}return (<>{textToShow}</>)
}export default Home;
3.withTranslation 使用变量
import {withTranslation} from "react-i18next";const Home = ({t,i18n}) => {let textToShow = '';if (i18n.language === 'zh_CN') {textToShow = t('hello', { text: '世界' });} else if (i18n.language === 'en') {textToShow = t('hello', { text: 'world' });}return (<>{textToShow}</>)
}export default withTranslation()(Home);
4.Translation 使用变量
import {Translation} from "react-i18next";const Home = () => {return (<Translation ns='translation' useSuspense={false}>{(t, {i18n}) => {let textToShow = '';if (i18n.language === 'zh_CN') {textToShow = t('hello', { text: '世界' });} else if (i18n.language === 'en') {textToShow = t('hello', { text: 'world' });}return <p>{textToShow}</p>}}</Translation>)
}export default Home;
5.Trans 使用变量
import {Trans, useTranslation} from "react-i18next";const Home = () => {const { t,i18n } = useTranslation();let textToShow = '';if (i18n.language === 'zh_CN') {textToShow = '世界';} else if (i18n.language === 'en') {textToShow = 'world';}return (<><Trans t={t} values={{ text: textToShow}}>hello</Trans></>)
}export default Home;
相关文章:

react国际化配置react-i18next详解
react PC端项目构建TS,react18.2.0antdviteaxiosreduxsassts 完整版代码下载: https://download.csdn.net/download/randy521520/88922625 react PC端项目构建,react18.2.0antdviteaxiosreduxsass完整版代码下载: https://downloa…...

Java并发编程——上下文切换、死锁、资源限制
文章目录 1.1上下文切换(1)上下文切换的概念(2)多线程一定比单线程快吗?(3)测量上下文切换如何减少上下文切换 1.2 死锁(1)死锁的定义(2)死锁产生…...

MS08067练武场--WP
免责声明:本文仅用于学习和研究目的,不鼓励或支持任何非法活动。所有技术内容仅供个人技术提升使用,未经授权不得用于攻击、侵犯或破坏他人系统。我们不对因使用本文内容而引起的任何法律责任或损失承担责任。 注:此文章为快速通关…...
ubuntu文件同步
1. 使用 rsync 同步文件 rsync 是一个常用的文件同步工具,可以在本地或远程系统之间同步文件和目录。 基本用法: rsync -avz /源目录/ 目标目录/-a:归档模式,保留文件属性。-v:显示详细输出。-z:压缩传输…...
C++23 新特性解析
引言:C的持续进化 在ISO C标准委员会的不懈努力下,C23作为继C20后的又一重要迭代版本,带来了十余项核心语言特性改进和数十项标准库增强。本文将深入解析最具实用价值的五大新特性,介绍std::expected到模块化革命。 编译器支持 …...
算法05-堆排序
堆排序详解 堆排序(Heap Sort)是一种基于二叉堆数据结构的排序算法。它的核心思想是利用堆的性质(最大堆或最小堆)来实现排序。堆排序分为两个主要步骤:建堆和排序。 1. 什么是堆? 堆是一种特殊的完全二叉…...

Arrays工具类详解
目录 1. Arrays.toString() 方法 2. Arrays.deepToString() 方法 3. Arrays.equals(int[ ] arr1, int[ ] arr2) 方法 4. Arrays.equals(Object[] arr1, Object[] arr2) 方法 5. Arrays.deepEquals(Object[] arr1, Object[] arr2) 方法 6. Arrays.sort(int[] arr) 方法 7…...

无人机图像拼接数据的可视化与制图技术:以植被监测为例
无人机技术在生态环境监测中的应用越来越广泛,尤其是在植被监测领域。通过无人机获取的高分辨率影像数据,结合GIS技术,可以实现对植被覆盖、生长状况等的精确监测与分析。本文将通过一个实际案例,详细讲解无人机图像拼接数据的可视…...
在 debian 12 上安装 mysqlclient 报错
报错如下 Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting mysqlclientUsing cached https://pypi.tuna.tsinghua.edu.cn/packages/61/68/810093cb579daae426794bbd9d88aa830fae296e85172d18cb0f0e5dd4bc/mysqlclient-2.2.7.tar.gz (91 kB)Installi…...
python基础入门:7.1迭代器与生成器
Python迭代器与生成器深度解析:高效处理海量数据的利器 # 大文件分块读取生成器模板 def chunked_file_reader(file_path, chunk_size1024*1024):"""分块读取大文件生成器"""with open(file_path, r, encodingutf-8) as f:while Tru…...
Docker 容器 Elasticsearch 启动失败完整排查记录
背景 在服务器上运行 Docker 容器 es3,但 Elasticsearch 无法正常启动,运行 docker ps -a 发现 es3 处于 Exited (1) 状态,即进程异常退出。 本次排查从错误日志、容器挂载、权限问题、SELinux 影响、内核参数等多个方面入手,最…...

达梦数据使用笔记
相关文档: 达梦官网 达梦技术文档 1.安装完成后在开始菜单中搜索DM 目录:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\达梦数据库 下有所有相关信息 2.数据迁移 https://eco.dameng.com/document/dm/zh-cn/start/mysql_dm.html https:…...
操作系统中的任务调度算法
一、引言 在操作系统中,任务调度算法是核心组件之一,它负责合理分配有限的 CPU 资源,以确保系统的高效运行和良好的用户体验。任务调度的目标是实现公平性、最小化等待时间、提高系统吞吐量,并最大化 CPU 的利用率。不同的任务调…...
Linux 虚拟服务器(LVS)技术详解
一、LVS 概述 Linux 虚拟服务器(Linux Virtual Server,简称 LVS)是由章文嵩博士开发的一种开源的服务器集群技术,它工作在 Linux 内核空间,为构建高可用、可扩展的网络服务提供了一种高效的解决方案。LVS 可以将多个真…...

AIoT时代来临,物联网技术如何颠覆未来生活?
在这个万物互联的时代,“物联网”(IoT)正以前所未有的速度改变我们的生活,而“AIoT”则是在物联网基础上融入人工智能技术,赋予设备更高的智能和自主决策能力。随着5G、边缘计算和云技术的不断发展,物联网正…...
C++17 新特性解析
C++17 是 C++ 标准的一个重要更新,它在 C++11/14 的基础上引入了许多新特性,进一步简化了代码编写、提升了性能和类型安全性。以下是 C++17 的主要特性分类介绍: 一、语言核心改进 1. 结构化绑定(Structured Bindings) 允许将元组、结构体或数组的成员直接解包到变量中。…...
嵌入式软件C语言面试常见问题及答案解析(四)
嵌入式软件C语言面试常见问题及答案解析(四) 原本打算将链表相关的面试题整合到一个文档中,奈何写着写着就发现题目比较多,题型也比较丰富,所以导致上一篇已经足够长了,再长也就有点不礼貌了。 所以在这儿继续来总结分享那个面试中遇到的题目,文中的问题和提供的答案或者…...
在 C# 中,处理 Excel 和 PDF 文件的库有很多。以下是一些比较常用的选择
读取 Excel 文件的库 NPOI 用途:可以读取和写入 .xls 和 .xlsx 文件。特点:无需安装 Microsoft Office,支持简单的 Excel 操作,如格式化、公式、图表等。 EPPlus 用途:主要用于 .xlsx 格式(Excel 2007 及以…...

绩效归因概述
绩效归因概述 1. 分类2. 基于净值的归因方法2.1 发展背景2.2 择时选股模型 T-M模型2.3 择时选股模型 H-M模型2.4 择时选股模型 C-L模型2.5 风格配置模型-Sharpe2.6 多因子模型 Fama-French32.7 多因子模型 Carhart42.8 多因子模型 Fama-French5 3. 基于持仓的归因方法3.1 发展背…...
Spring Boot 中加载多个 YAML 配置文件
在 Spring Boot 中加载多个 YAML 配置文件是一个常见的需求,通常用于将配置信息分离到多个文件中以便于管理和维护。Spring Boot 提供了灵活的方式来加载多个 YAML 配置文件。 以下是一些方法和步骤,用于在 Spring Boot 应用中加载多个 YAML 配置文件&a…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...