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

VS Code-i18n Ally国际化插件

前言

  • 本文借鉴:i18n Ally 插件帮你轻松搞定国际化需求-按模块划分i18n Ally 是一款 VS Code 插件,它能通过可视 - 掘金
  • 本来是没有准备将I18n Ally插件单独写一个博客的,但是了解过后,功能强大,使用方便,解决了很多编码痛点,所以在这里单独写一篇使用的步骤和方法
  • 我这里大概列了如下一些优点
    1. 可以直观的看到真实文案,在组件内即可直接看到,无需取对应语言文件内查看原文!!!
    2. 可以智能检测并定位语言文件内未找到的key,避免漏翻译
    3. 可以直接在VS Code工具中翻译对应的语言,而无需单独去翻译网站搜索,并且会自动生成key名,无需自己起名,并且不仅可以单独翻译词语,还可以翻译整个文件批量翻译、文件夹批量翻译
    4. 还可以统计各个语言的翻译进度
  • 我如下演示是基于pnpm + vue3 + I18n演示(当前最新技术比较流行)
  • Vue I18n官网:Vue I18n

安装

  • 该插件是VS Code的一个插件,在左侧工具栏->扩展里面搜索I18n Ally安装即可

在这里插入图片描述

前置框架搭建

1、新建项目

  • 这里我就不演示了,使用pnpm create vite创建vite项目即可

2、安装引入I18n

2.1、安装

pnpm add vue-i18n@10

2.2、新建目录

  • src->locales目录
  • src->locales->en.ts文件,根据自己项目语言来,文件名可以自行更改,也可以使用json文件
  • src->locales->zh-CH.ts文件,根据自己项目语言来,文件名可以自行更改,也可以使用json文件
  • src->locales->index.ts文件,作为目录主文件,暴露出去配置供main.ts文件引入
  • 注意,上面ts文件最好改成.json文件!!因为这个插件对json、yaml支持可读可写,但是对js、ts只支持读

在这里插入图片描述

index.ts
import en from './en'
import zh from './zh-CN'
import { createI18n } from 'vue-i18n';export default createI18n({locale: 'zh', // 要本地化的 Vue 应用程序的语言fallbackLocale: 'zh', // 语言中找不到翻译 API 中指定的密钥资源时要回退到的语言messages: {en,zh}
})

2.3、main.ts文件引入

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import I18n from '@/locales';const app = createApp(App)
app.use(I18n)app.mount('#app')

2.4、测试

  • 可以自行在src->locales/xx.ts文件中添加字段测试

在这里插入图片描述

在这里插入图片描述

启动项目查看是否打印中文,因为上面配置的locale: 'zh'默认语言是中文

在这里插入图片描述

3、文件名格式

各地区的文件名是有规范的,组件内会默认根据文件名查找文件,所以文件名最好依照如下来

英文 : en
美国 : en_US
中国 : zh_CN
台湾:zh_TW
香港 : zh_HK
日本 : ja_JP
秘鲁 : es_PE
巴拿马 : es_PA
波斯尼亚和黑山共和国 : sr_BA
危地马拉 : es_GT
阿拉伯联合酋长国 : ar_AE
挪威 : no_NO
阿尔巴尼亚 : sq_AL
伊拉克 : ar_IQ
也门 : ar_YE
葡萄牙 : pt_PT
塞浦路斯 : el_CY
卡塔尔 : ar_QA
马其顿王国 : mk_MK
瑞士 : de_CH
芬兰 : fi_FI
马耳他 : en_MT
斯洛文尼亚 : sl_SI
斯洛伐克 : sk_SK
土耳其 : tr_TR
沙特阿拉伯 : ar_SA
英国 : en_GB
塞尔维亚及黑山 : sr_CS
新西兰 : en_NZ
挪威 : no_NO
立陶宛 : lt_LT
尼加拉瓜 : es_NI
爱尔兰 : ga_IE
比利时 : fr_BE
西班牙 : es_ES
黎巴嫩 : ar_LB
加拿大 : fr_CA
爱沙尼亚 : et_EE
科威特 : ar_KW
塞尔维亚 : sr_RS
美国 : es_US
墨西哥 : es_MX
苏丹 : ar_SD
印度尼西亚 : in_ID
乌拉圭 : es_UY
拉脱维亚 : lv_LV
巴西 : pt_BR
叙利亚 : ar_SY
多米尼加共和国 : es_DO
瑞士 : fr_CH
印度 : hi_IN
委内瑞拉 : es_VE
巴林 : ar_BH
菲律宾 : en_PH
突尼斯 : ar_TN
奥地利 : de_AT
荷兰 : nl_NL
厄瓜多尔 : es_EC
台湾地区 : zh_TW
约旦 : ar_JO
冰岛 : is_IS
哥伦比亚 : es_CO
哥斯达黎加 : es_CR
智利 : es_CL
埃及 : ar_EG
南非 : en_ZA
泰国 : th_TH
希腊 : el_GR
意大利 : it_IT
匈牙利 : hu_HU
爱尔兰 : en_IE
乌克兰 : uk_UA
波兰 : pl_PL
卢森堡 : fr_LU
比利时 : nl_BE
印度 : en_IN
西班牙 : ca_ES
摩洛哥 : ar_MA
玻利维亚 : es_BO
澳大利亚 : en_AU
新加坡 : zh_SG
萨尔瓦多 : es_SV
俄罗斯 : ru_RU
韩国 : ko_KR
阿尔及利亚 : ar_DZ
越南 : vi_VN
黑山 : sr_ME
利比亚 : ar_LY
白俄罗斯 : be_BY
以色列 : iw_IL
保加利亚 : bg_BG
马耳他 : mt_MT
巴拉圭 : es_PY
法国 : fr_FR
捷克共和国 : cs_CZ
瑞士 : it_CH
罗马尼亚 : ro_RO
波多黎哥 : es_PR
加拿大 : en_CA
德国 : de_DE
卢森堡 : de_LU
阿根廷 : es_AR
马来西亚 : ms_MY
克罗地亚 : hr_HR
新加坡 : en_SG
阿曼 : ar_OM
泰国 : th_TH
瑞典 : sv_SE
丹麦 : da_DK
洪都拉斯 : es_HN

使用

1、配置

  • 不管你是像上面创建的新项目,还是基于已经包含I18n的项目并且语言文件都已经配置完成了,再使用扩展的。那么安装完扩展以后,VS Code右下角可以能会提示

    在这里插入图片描述

  • 我们只需要进入项目.vscode/settings.json文件,添加如下配置即可,文件内原来有的则进行修改

    {"i18n-ally.localesPaths": ["src/locales" // I18n所有语言 所在目录],"i18n-ally.enabledParsers": ["ts", "json"] // 解析的文件后缀
    }
    

2、文件$t('xxx.xxx')语法自动转换显示

2.1、默认显示en文件

  • 这时候我们打开一个使用到国际化($t('xxx'))vue文件,然后我们就可以看到在使用到的地方会自动转换为在zh-CN.ts配置的内容,将如下显示

  • 在这里插入图片描述

  • 可以发现,我的代码为$t('common'),如果这么看的话,什么也看不出来,开发将增加困难。但是插件会自动去locales目录中找en文件,并且替换显示(只是显示,并不修改代码),这样我们就跟写原来的中/英文一样,没有增加丝毫开发难度

  • 当我们鼠标定位到这一行,它又会转为源代码,让我们继续编辑

    在这里插入图片描述

2.2、修改默认显示中文(zh-CN)文件

  • 我们只需要在.vscode/settings.json中,添加如下内容即可修改默认显示文件

    // 设置当前显示的主体语言: zh-CN/en/zh-TW/..."i18n-ally.displayLanguage": "zh-CN",
    
  • 修改完以后,我们再次打开App.vue文件即可看到展示的为中文

在这里插入图片描述

3、自动翻译

注意:批量翻译的话,要注意Vue3中的 template中使用$t('xxx')<script setup>语法躺中写法不一样,批量的话智能生成一种写法,所以如果vue2的话,会智能在template中使用$t(),在script中使用this.$t(),但是vue3中除非使用选项式API,否则不能使用this关键字

  • 翻译的话,总共需要两步
    • 1.现提取文件内中文到当前显示的zh-CN.json
    • 2.然后再将提取的内容批量翻译到其他语言文件中
  • 由于最终将提取的文案翻译到其他文件中的步骤一模一样,所以我放到3.4里面了,3.1-3.3全部为提取步骤

3.1、单个词语提取文案

  • 注意,我们要将语言文件改为xxx.json格式,因为插件支持如下

    在这里插入图片描述

  • 我这里script中的数据写死了,正常是后端返回的,所以对这块咱们就不翻译了,只翻译template中的中文即可
<template><div class="app"><div>用户信息:</div><div>用户名:{{ user.name }}</div><div>年龄:{{ user.age }}</div><div>性别:{{ user.gender }}</div><div>电话:{{ user.phone }}</div></div>
</template><script setup lang="ts">
import { reactive } from "vue";const user = reactive({name: "张三",age: 18,gender: "男",phone: "1234567890",
});
</script><style scoped></style>

我们这时候先鼠标定位到需要翻译的App.vue内,然后打开左侧菜单栏i18n Ally图标,查看待翻译的中文

在这里插入图片描述

方法一:点击左侧图标即可

在这里插入图片描述

方法二:鼠标放到待翻译的文字上,点击快速修复,提取文案到i18n,即可

在这里插入图片描述

在这里插入图片描述

选择生成的key名称,一般默认使用拼音回车即可

在这里插入图片描述

替换格式,在vue3 + template中,我们一般使用第一个,回车即可

在这里插入图片描述

然后顶部选择存储文件地址

注意:zh-CN的绝对路径,类似C:\A-workSoftWare\code\QianTai\vite-all-01\src\locales\zh-CN.json

在这里插入图片描述

提取效果如下

在这里插入图片描述

3.2、文件批量提取文案

  • 我们要先把光标定位到需要翻译的文件中,然后在左侧菜单栏中右键Hard coded strings [beta],选择Extract all hard-coded strings (experimental)

在这里插入图片描述

然后顶部选择生成文件地址

注意:zh-CN的绝对路径,类似C:\A-workSoftWare\code\QianTai\vite-all-01\src\locales\zh-CN.json

在这里插入图片描述

提取效果,还智能的使用了数组参数方法,并且观察右侧文件显示的内容智能替换了,鼠标定位上去会显示源码

在这里插入图片描述

3.3、目录批量提取文案

  • 我们在components中创建两个测试组件,非常简单
  • 然后右键目录,选择Extract all hard-coded strings (experimental)
  • 你可能没执行过上面选择生成文件名、文件目录配置,有可能会在顶部弹出来让你选择,我这里没有弹框,直接替换的

在这里插入图片描述

在这里插入图片描述

效果如下

在这里插入图片描述

3.4、翻译前申请

  • 由于我们下面使用的是百度翻译API,所以我们要先进入官网,再官网申请api权限,步骤如下

    1. 进入开放平台官网百度翻译开放平台

    2. 往下翻,选择通用文本翻译

      在这里插入图片描述

  1. 选择立即使用

    在这里插入图片描述

  1. 申请完以后,右上角进入选择开发者信息

    在这里插入图片描述

  1. 然后将自己申请信息中的APP ID、密钥,分别粘贴到.vscode->settings.json文件的i18n-ally.translate.baidu.appid、i18n-ally.translate.baidu.apiSecret

    在这里插入图片描述

  1. 修改完上面后,我们点击下面的修改服务信息

    在这里插入图片描述

  1. 翻到下面,将自己要调用api(本地电脑)的外网IP粘贴进来

    在这里插入图片描述

  1. 不知道的话可以访问IP地址查询_本机IP_我的IP,查询

3.5、将文案翻译到其他文件

  • 上面3.4的前置步骤做完以后,我们进入如下配置

  • 组件默认的翻译是google,我们可以修改其他翻译源,以下是可以选择的翻译源

    在这里插入图片描述

  • 注意,也要在.vscode->settings.json中添加如下配置,如果少了哪个,注意添加下

    "i18n-ally.translate.engines": ["baidu"], // 翻译器,第一个不行会尝试后面的
    // 插件将以何种语言作为基准来进行翻译相关的操作,如果你正在开发一个多语言应用,并且原始文案是用英语编写的,你可以将`sourceLanguage`设置为`en`(代表英语)。这样,插件就知道在提取文案进行翻译或者在代码中关联不同语言的文案时,以英语文案为原始参考。
    "i18n-ally.translate.baidu.appid": "你在百度申请的appid", // 翻译器api-appid
    "i18n-ally.translate.baidu.apiSecret": "你在百度申请的appSecret", // 翻译器api-Secret
    "i18n-ally.sourceLanguage": "zh-CN",
    "i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested:嵌套式  flat:扁平式)
    
  • 点击左侧i18n Ally菜单栏->翻译进度,可以看到中文(100%),英文(0%)

  • 然后鼠标放到缺失的文案上面,右侧有个互联网图标,点击图标即可批量翻译,也可以放到单个选项上,右侧也可以进行单个翻译

在这里插入图片描述

  • 由于百度api限制QPS(百度翻译 API 对每秒的请求次数有一定限制。如果你的应用在短时间内发送了大量请求,超过了这个限制,就会触发该错误),所以批量翻译可能会报错,并且翻译成功了一个

    在这里插入图片描述

  • 我这里未认证,所以每秒限制调用1次

    在这里插入图片描述

  • 所以下面案例我们一个一个调用接口翻译

    在这里插入图片描述

在这里插入图片描述

3.5、属性名称生成规则修改

我们可以在.vscode->settings.json中添加如下配置来修改提取文案规则

  • "i18n-ally.extract.keygenStyle" 规则的值有:
    • default/kebab-case;拼音+短横杠,如 ming-cheng

    • snake_case;拼音+下划线,如 ming_cheng

    • camelCase;拼音+驼峰,如 mingCheng

    • PascalCase;拼音+驼峰+首字符大写,如 MingCheng

    • ALL_CAPS;拼音+下划线+全大写,如 MING_CHENG

// ...
// 翻译文案的属性名称策略:slug-拼音、random-随机、empty-需要手动命名
"i18n-ally.extract.keygenStrategy": "slug",
// 属性名称的具体生成规则 驼峰
"i18n-ally.extract.keygenStyle": "camelCase",

在这里插入图片描述

4、快速定位与修改

  • 当我们想要修改某个已经配置过中英文对应的当前语言(中文)的时候,我们不用在cv变量名,打开对应的语言文件,去ctrl + f搜索,然后修改了

  • 我们只需要鼠标放到$t()方法上,然后,就会有如下提示框

    在这里插入图片描述

  • 第一个图标是打开审阅,第二个是编辑文案,第三个是跳转定义

  • 我们直接点击对应语言的第二个笔的图标,然后在顶部输入修改后的内容,即可自动替换到对应文件中

在这里插入图片描述

在这里插入图片描述

5、忽略文案修改

  • 步骤依旧是,鼠标放到中文上,点击快速修复,第一个是在当前文件内忽略这个中文,第二个是全局整个项目忽略

    在这里插入图片描述

  • 点击任意一个后,查看.vscode->setteings.json文件,可以查看忽略的配置

    在这里插入图片描述

  • 忽略完以后,再点击左侧工具栏-> Hard coded strings [beta]就没有这两个需要生成的选项了,对应的组件中,黄色下划线也会消失

    在这里插入图片描述

6、按模块划分-命名空间

6.1、方法一:

  • 所有的内容都放在对象的一层属性中,会显得杂乱,难以查看,那么我们可以文件命名,比如user.yongHuXinXi等,表示下面属性都属于User页面下

  • 那么我们只需要在顶部输入key的时候,在前面加上xxx.即可

  • 注意:.vscode->settings.json文件的这个配置值"i18n-ally.keystyle": "nested"嵌套格式。如果为flat,将会生成如下格式数据

    在这里插入图片描述

在这里插入图片描述

6.2、方法二:

  • 上面是将整个项目放入一个xxx.json文件中,只不过使用子属性区分,优化层次结构
  • 下面这种方式是将每一个模块单独放入一个文件夹中,比如你项目有物流模块、生产模块、系统模块、公共语言(可以共用的)
1.修改配置文件

.vscode->settings.json中添加如下内容

// 使用空间命名
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespace}.json",
2.修改语言文件结构
  • 注意:当在zh-CN目录下新建了一个模块文件(比如common.json),对应的其他语言目录中也要创建文件,内容为{}即可
  • 语言文件结构要修改为如下

在这里插入图片描述

3.测试
  • 比如我在App.vue中添加了三个按钮新增、修改、删除,那么其他页面基本都会用到这个按钮,那么我就把其他页面都能用到的中文,全放入common.json这个模块中。用户信息也可放入系统模块中,我这里就不演示了

    1. 先把文案提取到i18n

      在这里插入图片描述

  1. 剪切掉上方key

    在这里插入图片描述

  1. 可以发现插件会自动检测,并提示

    在这里插入图片描述

  1. 点击提示,并且将原来生成的key名,粘贴上去,然后回车即可

    在这里插入图片描述

  1. 默认选择第一个,或直接回车即可

    在这里插入图片描述

  1. 然后就可以发现,在src/locales/zh-CN/common.json中,添加了一条数据,App.vue中显示也没问题

    在这里插入图片描述

  1. 翻译步骤跟第3步一样,丝毫不影响

    在这里插入图片描述

7、演示的settings.json文件

我这里放入我上面演示用的.vscode->settings.json文件内容,有其他配置可以自行修改

{// 设置当前显示的主体语言: zh-CN/en/zh-TW/..."i18n-ally.displayLanguage": "zh-CN",// 插件将以何种语言作为基准来进行翻译相关的操作,如果你正在开发一个多语言应用,并且原始文案是用英语编写的,你可以将`sourceLanguage`设置为`en`(代表英语)。这样,插件就知道在提取文案进行翻译或者在代码中关联不同语言的文案时,以英语文案为原始参考。"i18n-ally.sourceLanguage": "zh-CN","i18n-ally.localesPaths": [ // 翻译文件夹路径 (相对于项目根目录),你也可以使用Glob匹配模式。"src/locales"],"i18n-ally.translate.engines": ["baidu"], // 指定翻译器"i18n-ally.translate.baidu.appid": "你的appid", // 翻译器api-appid"i18n-ally.translate.baidu.apiSecret": "你的appSecret", // 翻译器api-Secret"i18n-ally.enabledParsers": [ // 指定启用文件格式"json","yaml"],"i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested:嵌套式  flat:扁平式)// ...// 翻译文案的属性名称策略:slug-拼音、random-随机、empty-需要手动命名"i18n-ally.extract.keygenStrategy": "slug",// 属性名称的具体生成规则 驼峰"i18n-ally.extract.keygenStyle": "camelCase","i18n-ally.enabledFrameworks": ["vue"],// 使用空间命名"i18n-ally.namespace": true,"i18n-ally.pathMatcher": "{locale}/{namespace}.json",
}

组件更多配置

  • 有关组件更多配置,可以选择左下角设置->扩展->i18n Ally进行查看

    在这里插入图片描述

  • 或者在如下地方查看

    在这里插入图片描述

相关文章:

VS Code-i18n Ally国际化插件

前言 本文借鉴&#xff1a;i18n Ally 插件帮你轻松搞定国际化需求-按模块划分i18n Ally 是一款 VS Code 插件&#xff0c;它能通过可视 - 掘金本来是没有准备将I18n Ally插件单独写一个博客的&#xff0c;但是了解过后&#xff0c;功能强大&#xff0c;使用方便&#xff0c;解决…...

ResNet改进(21):基于ECA注意力机制的ResNet18网络实现

一、引言 在计算机视觉领域,ResNet(残差网络)一直是图像分类任务中的重要基准模型。今天我们要介绍的是一个改进版的ResNet18网络,它在传统ResNet结构的基础上加入了ECA(Efficient Channel Attention)注意力机制,能够在不显著增加计算量的情况下提升模型性能。 二、网络…...

[ERROR] Some problems were encountered while processing the POMs

记录一次maven的错误 问题复现&#xff1a; 我在ruoyi-vue-plus项目的ruoyi-modules中新建了一个子项目ruoyi-network-telphonem,然后某一次编译的时候提示SysTenantServiceImpl找不到无参的构造函数&#xff0c;检查了很久都没发现问题&#xff0c;于是我想着删掉本地maven仓…...

【网络协议】WebSocket讲解

目录 webSocket简介 连接原理解析: 客户端API 服务端API&#xff08;java&#xff09; 实战案例 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写服务端逻辑 &#xff08;3&#xff09;注册配置类 &#xff08;4&#xff09;前端连接 WebSocket 示例…...

什么是可靠性工程师?

一、什么是可靠性工程师&#xff1f; 可靠性工程师就是负责确保产品在使用过程中不出故障、不给客户添麻烦。 你可以理解为是那种“挑毛病的人”&#xff0c;但不是事后挑&#xff0c;是提前想清楚产品在哪些情况下可能会出问题&#xff0c;然后解决掉。 比如&#xff1a; …...

Next.js + SQLite 项目 Docker 生产环境部署方案

以下是完整的 Next.js SQLite 项目 Docker 生产环境部署方案&#xff1a; 1. 项目结构准备 your-project/ ├── prisma/ │ ├── schema.prisma │ └── migrations/ ├── app/ ├── lib/ ├── Dockerfile ├── docker-compose.yml ├── .dockerignore └…...

记录1---20250407

哈佛结构&#xff1a;指令和数据放在不同的存储器&#xff0c;因为在使用流水线时&#xff0c;方便数据和指令的读取和存入。 冯诺依曼结构&#xff1a;指令和数据放在同一个存储器。 处理器的存储结构&#xff1a;CPU内部采用hierarchy 存储结构&#xff0c;一般由 CPU内部…...

php调用大模型应用接口实现流式输出以及数据过滤

最近开发智能客服&#xff0c;需要用php调用已有的大模型应用接口流式输出vue前端调用打字机效果展示。这里整理了php调用大模型流式输出业务过滤等的核心实现部分&#xff0c;分享给大家。 前置条件&#xff1a;大模型应用接口已经打通&#xff08;最好是通过postman或者apip…...

数据结构:红黑树

为什么要以这个结构为题&#xff1f;那就要追溯到CSTL库中的两种map/set&#xff0c;分别基于红黑树与哈希表&#xff0c;我是根本分不清楚。为了搞清楚其区别&#xff0c;我会重点聊聊红黑树和哈希表。 当然也会简单介绍一下树的结构。 树 Tree 首先需要简单了解树这个数据结…...

nginx配置ssl证书,实现https安全访问.

前置条件: 名称 ip地址端口号nginx服务器192.168.59.3080/443server服务器190.168.59.318080/8081/8082 安装nginx服务: 参见: 编译安装nginx-CSDN博客 启动后端web服务器192.168.59.31: (#后端要被代理的web服务器要有docker服务并且配置相关的加速服务) 拉取tomcat容器…...

《当区块链穿上防弹衣:落盘加密技术全景拆解》

落盘加密是区块链技术中一项重要的数据安全机制,主要用于保护节点本地存储的敏感数据不被非法访问。本文将全面解析区块链落盘加密的技术原理、实施方法、应用价值,并与其他加密技术进行比较分析。 🔒 落盘加密的技术原理 落盘加密(Disk Encryption)是指对存储在物理磁盘…...

新HTML5

在新HTML5中&#xff0c;DOCTYPE声明以及字符编码声明都非常简单&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>Document</title> </head> <body>内容 </body> </html>HTM…...

DeepSeek-MLA

MLA 结构 需要缓存 KV 向量共用的压缩隐特征K 向量多头共享的带位置编码的向量 为什么带有位置信息的 Q 向量来自于隐特征向量&#xff0c;而带有位置的 K 向量来自于 H 向量且共享呢&#xff1f; 最好的方法肯定是从H向量直接计算并且不共享&#xff0c;但是会大大增加显存使…...

SQL:数据类型(Data Types)

目录 数字数据类型&#xff08;Numeric data types) 非数据类型&#xff08;Non-numeric data types) 日期和时间类型&#xff08;Date and Time Types) NULL&#xff08;缺失或未知值&#xff09; 当你在数据库中创建表格时&#xff0c;你必须指明表中每一列可以保存的数据…...

AF3 OpenFoldBatchCollator类解读

AlphaFold3 data_modules 模块的 OpenFoldBatchCollator 类将一个蛋白质样本列表中的多个字典按键合并,并对每个键值进行 torch.stack 操作,打包成一个批次(batch)。通过定义 OpenFoldBatchCollator类的 __call__ 方法,可以将类的实例当作函数来调用,相当于自定义的批次打…...

手搓多模态-06 数据预处理

前情回顾 我们目前实现了视觉模型的编码器部分&#xff0c;然而&#xff0c;我们所做的是把一张图片编码嵌入成了许多个上下文相关的嵌入向量&#xff0c;然而我们期望的是一张图片用一个向量来表示&#xff0c;从而与文字的向量做点积形成相似度&#xff08;参考手搓多模态-01…...

[蓝桥杯] 求和

题目链接 P8772 [蓝桥杯 2022 省 A] 求和 - 洛谷 题目理解 这道题就是公式题&#xff0c;我们模拟出公式后&#xff0c;输出最终结果即可。 本题不难&#xff0c;相信很多同学第一次见到这道题都是直接暴力解题。 两个for循环&#xff0c;测试样例&#xff0c;直接拿下。 #in…...

INFINI Labs 产品更新 | Coco AI 0.3 发布 – 新增支持 Widget 外部站点集成

INFINI Labs 产品更新发布&#xff01;此次更新涵盖 Coco AI 、Easysearch 等产品多项重要升级&#xff0c;重点提升 AI 搜索能力、易用性及企业级优化。 Coco AI v0.3 作为 开源、跨平台的 AI 搜索工具&#xff0c;新增快捷键设置&#xff0c;支持多个聊天会话等功能。Coco A…...

vue3+element-plus多个多选下拉框并搜索

一、下拉框组件&#xff1a; <template> <div class"top-select"> <div class"first-select"> <div v-for"(group, index) in selectGroups" :key"index" class"item-select" > <div class&quo…...

吴恩达深度学习复盘(9)多类分类与SoftMax回归

多类分类 概念 对于分类问题&#xff0c;并非只有0或1两个标签&#xff0c;而是可以有两个以上的开放标签。以手写数字分类问题为例&#xff0c;之前只是区分0和1&#xff0c; 但在实际生活中&#xff0c;如读取信封上的数字或邮政编码&#xff0c;会涉及十个可能的数字识别&…...

【力扣hot100题】(068)有效的括号

犹记得第一次做这题的时候是怎样一番惨状&#xff0c;现在已经得心应手了。 class Solution { public:bool isValid(string s) {stack<char> zhan;for(int i0;i<s.size();i){if(s[i]{||s[i](||s[i][) zhan.push(s[i]);else{if(zhan.empty()) return 0;if(zhan.top(){…...

深度学习篇---Prophet时间序列预测工具

文章目录 前言一、什么是Prophet&#xff1f;易用性自动化灵活性鲁棒性快速拟合 二、Prophet的核心原理1. 趋势模型a. 分段线性模型&#xff08;默认&#xff09;b. 逻辑增长模型 2. 季节性模型3. 节假日效应 三、Prophet使用方法安装ProphetPython基本使用示例1. 准备数据2. 创…...

TDengine JAVA 语言连接器

简介 本节简介 TDengine 最重要且使用最多的连接器, 本节内容是以教科书式方式列出对外提供的接口及功能及使用过程中要注意的技术细节&#xff0c;大家可以收藏起来做为今后开发 TDengine 的参考资料。 taos-jdbcdriver 是 TDengine 的官方 Java 语言连接器&#xff0c;Java…...

vue3工程中使用vditor完成markdown渲染并防止xss攻击

vue3工程中使用vditor完成markdown渲染并防止xss攻击 背景环境解决方案引入依赖 组件封装实现效果 背景 做oj系统时&#xff0c;题目使用的时markdown语法字符串,前端查看时需要将markdown转html再渲染到页面上。 环境 vitevue3pnpm 解决方案 引入依赖 pnpm install vdit…...

Java面向对象编程详解

面向对象编程是Java的核心特性之一&#xff0c;它通过类和对象的概念来解决实际问题&#xff0c;使程序设计更加符合人类对事物的认知方式。本文将深入探讨Java中的面向对象编程概念和特性。 1. 面向对象的基本概念 1.1 什么是面向对象&#xff1f; 面向对象程序设计(Object …...

重温java 系列一 Java基础

文件拷贝的5种方式 传统字节拷贝 public static void main(String[] args) throws IOExecption{try(InputStream is new FileInputStream("source.txt");OutputStream os new FileOutputStream("target.txt")){byte[] buffer new byte[1024];int leng…...

Java基础 4.7

1.成员方法传参机制 引用数据类型的传参机制 引用类型传递的是地址&#xff08;其实也是值&#xff0c;只不过值是地址&#xff09;&#xff0c;可以通过形参影响实参&#xff01; public class MethodParameter01 {public static void main(String[] args) {int[] arr {1,…...

基础IO(一)之回顾C语言文件接口

文章目录 共识原理回顾C文件接口打开文件的方式以w的方式打开文件以a的方式打开文件 stdin & stdout & stderr 共识原理 1.文件内容属性 就算内容是空的&#xff0c;也会有属性&#xff0c;内容和属性(两者都是数据)都要在磁盘当中保存 2.文件分为 打开的文件 和 没…...

PandaAI:一个基于AI的对话式数据分析工具

PandaAI 是一个基于 Python 开发的自然语言处理和数据分析工具&#xff0c;支持问答式&#xff08;ChatGPT&#xff09;的数据分析和报告生成功能。PandaAI 提供了一个开源的框架&#xff0c;主要核心组件包含用于数据处理的数据准备层&#xff08;Pandas&#xff09;以及实现 …...

Rollup详解

Rollup 是一个 JavaScript 模块打包工具&#xff0c;专注于 ES 模块的打包&#xff0c;常用于打包 JavaScript 库。下面从它的工作原理、特点、使用场景、配置和与其他打包工具对比等方面进行详细讲解。 一、 工作原理 Rollup 的核心工作是分析代码中的 import 和 export 语句…...

【NLP 56、实践 ⑬ LoRA完成NER任务】

目录 一、数据文件 二、模型配置文件 config.py 三、数据加载文件 loader.py 1.导入文件和类的定义 2.初始化 3.数据加载方法 代码运行流程 4.文本编码 / 解码方法    ① encode_sentence()&#xff1a; ② decode()&#xff1a; 代码运行流程 ③ padding()&#xff1a; 代码…...

Unity ViewportConstraint

一、组件功能概述 ViewportConstraint是一个基于世界坐标的UI边界约束组件&#xff0c;主要功能包括&#xff1a; 将UI元素限制在父容器范围内支持自定义内边距&#xff08;padding&#xff09;可独立控制水平和垂直方向的约束 二、实现原理 1. 边界计算&#xff08;世界坐…...

项目实战--路由权限

封装 单独抽象成组件&#xff0c;写一个新的关于路由的NewsRouter.jsx&#xff1a; import SideMenu from "../../components/sandbox/SideMenu"; import TopHeader from "../../components/sandbox/TopHeader"; import { Routes, Route } from "re…...

Async 注解原理分析

Async 注解由 Spring 框架提供&#xff0c;被该注解标注的类或方法会在 异步线程 中执行。这意味着当方法被调用时&#xff0c;调用者将不会等待该方法执行完成&#xff0c;而是可以继续执行后续的代码。 Async 注解的使用非常简单&#xff0c;需要两个步骤&#xff1a; 在启…...

pyTorch-迁移学习-图片数据增强-四种天气图片的多分类问题

目录 1.导包 2.加载数据、拼接训练与测试数据的文件夹路径 3数据预处理 3.1数据增强 3.2用分类存储的图片数据创建dataloader 4.加载预训练好的模型 (迁移学习) 4.1固定、修改预训练好的模型 5.将模型拷到GPU上 6.定义优化器与损失函数 7.学习率衰减 8.定义训…...

Linux脚本基础详解

一、基础知识 Linux 脚本主要是指在 Linux 系统中编写的用于自动化执行任务的脚本程序&#xff0c;其中最常用的便是 Bash 脚本。下面我们将从语法、使用方法和示例三个方面详细讲解 Linux 脚本。 1. 脚本简介 定义&#xff1a;Linux 脚本是一系列命令的集合&#xff0c;可以…...

MQTT-Dashboard-数据集成-WebHook、日志管理

常用的 Docker Volume 命令及其用法。 1、创建数据卷 使用 docker volume create 命令可以创建一个新的数据卷。例如&#xff0c;创建一个名为 my_volume 的数据卷&#xff1a; docker volume create my_volume 2、列出数据卷 使用 docker volume ls 命令可以列出所有的数据卷…...

Elixir语言的移动应用安全

Elixir语言的移动应用安全解析 引言 在当今的数字化时代&#xff0c;移动应用已经成为我们日常生活中不可或缺的一部分。从购物、社交到在线银行&#xff0c;几乎每一个生活领域都与移动应用紧密相连。然而&#xff0c;随着应用的普及&#xff0c;安全问题也随之而来。如何确…...

【科学技术部政务服务平台-用户注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

HTTP 教程 : 从 0 到 1 全面指南 教程【全文三万字保姆级详细讲解】

目录 HTTP 的请求-响应 HTTP 方法 HTTP 状态码 HTTP 版本 安全性 HTTP/HTTPS 简介 HTTP HTTPS HTTP 工作原理 HTTPS 作用 HTTP 与 HTTPS 区别 HTTP 消息结构 客户端请求消息 服务器响应消息 实例 HTTP 请求方法 各个版本定义的请求方法 HTTP/1.0 HTTP/1.1 …...

【LeetCode 热题100】139:单词拆分(动态规划全解析+细节陷阱)(Go语言版)

&#x1f680; LeetCode 热题 139&#xff1a;单词拆分&#xff08;Word Break&#xff09;| 动态规划全解析细节陷阱 &#x1f4cc; 题目描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请判断 s 是否可以由字典中出现的单词拼接成。 说明&#xff1a;不要求字典…...

2025年招投标行业的深度变革:洞察趋势,把握未来

2025年&#xff0c;随着政府工作报告对招投标行业的一系列改革措施的提出&#xff0c;整个行业正面临一场前所未有的深度变革。这些政策旨在推动全国统一大市场的建设、加速数字化转型、促进绿色低碳发展&#xff0c;并强化风险防控。在这场变革中&#xff0c;企业不仅要适应新…...

树莓派学习专题<3>:使能VNC远程桌面与VNC文件传输

树莓派学习专题&#xff1c;3&#xff1e;&#xff1a;使能VNC远程桌面与VNC文件传输 1. 配置VNC2. 使用VNC viewer连接到树莓派3. 使用VNC viewer传输文件 1. 配置VNC 在终端或SSH中&#xff0c;使用如下命令打开树莓派系统配置项&#xff1a; sudo su raspi-config以上两项…...

AI烘焙大赛中的算法:理解PPO、GRPO与DPO最简单的方式

&#x1f9e0; 向所有学习者致敬&#xff01; “学习不是装满一桶水&#xff0c;而是点燃一把火。” —— 叶芝 我的博客主页&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 欢迎点击加入AI人工智能社区&#xff01; &#x1f680; 让我们一起努力&#xff0c;共创…...

qt自定义信号槽需要注意的事项

在 Qt 中&#xff0c;自定义信号和槽是与事件和对象交互的核心机制之一。创建自定义信号和槽时&#xff0c;有几个重要事项需要注意&#xff0c;以确保它们能够正确工作。以下是一些需要注意的关键点&#xff1a; 1. 信号和槽的声明 信号声明&#xff1a;信号应该在 signals …...

OpenCV--图像轮廓检测

在图像处理与计算机视觉领域&#xff0c;轮廓检测是一项极为关键的技术。轮廓作为物体边界的重要表征&#xff0c;承载了图像中物体的形状、尺寸和位置等关键信息。通过轮廓检测&#xff0c;我们能够提取出图像中物体的轮廓&#xff0c;为后续的物体识别、图像分割、形状分析等…...

从搜索丝滑过渡到动态规划的学习指南

搜索&动态规划 前言砝码称重满分代码及思路solution 1&#xff08;动态规划&#xff09;solution 2&#xff08;BFS&#xff09; 跳跃满分代码及思路solution 1(动态规划)solution 2 (BFS) 积木画满分代码及思路动态规划思路讲解solution 前言 本文主要是通过一些竞赛真题…...

通用文字识别技术的出现,深刻改变信息的处理方式

在数字化浪潮席卷全球的今天&#xff0c;文字作为人类文明最基础的载体&#xff0c;正经历着一场前所未有的技术革命。通用文字识别&#xff08;OCR&#xff0c;Optical Character Recognition&#xff09;技术已经从简单的"图片转文字"工具&#xff0c;进化为能够理…...

linux 下du 和 ls-alh 的区别

我一直以为du -m 可以显示文件大小。发现不对。正确的做法你是用ls -alh 来使用...

【k8s学习之CSI】理解 LVM 存储概念和相关操作

鸟哥的 Linux 私房菜 – Quota, Software RAID, LVM, iSCSI 0 | 理解 vg 相关概念 在 Linux LVM&#xff08;逻辑卷管理&#xff09; 中&#xff0c;以下是 partition&#xff08;分区&#xff09;、PV&#xff08;物理卷&#xff09;、VG&#xff08;卷组&#xff09;、LV&am…...