news 2026/10/16 6:35:41

i18n Ally Next:Monorepo中实现多语言嵌入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
i18n Ally Next:Monorepo中实现多语言嵌入

前言

最近在打算看opencode源码,起因是在opencode桌面端设置了一个本地服务器之后,opencode起不来了😂,问了deepseek之后还是没有找到原因(最后找到原因了,跟我的服务器没关系,我的一个项目.opencode目录下自定义了opencode.json文件,我按照v2的语法写的,但是我的opencode还是v1,所以识别配置错误),我猜想设置了服务器之后应该会将配置保存在本地,但是我找不到😂。正好拉取了opencode的源码,就打算看看源码找一下,但是最后也没找到😂😂。

虽然还没有找到(暂时😀),但是在阅读的过程遇到了一个小卡点,虽然之前是使用过i8n,但是并不是在monorepo架构下,而且使用的不是@solid-primitives/i18n,同时语言映射文件是用ts写的而不是json。如果你的架构是Monorepo或者是TS语法语言包,可以参考我的解决方案。

前置工作

插件

我使用的是vscode,使用的插件是i18n Ally Next。直接在vscode的插件市场搜索下载就行,安装最新版就行。需要注意的是如果加载不出来插件市场,看看自己是否开启了VPN,关掉VPN就可以正常加载了,如果还不行,尝试手动下载配置吧,教程网上都有。

日志观察工具

在vscode中使用快捷键ctrl+shift+U,快速打开output面板,然后选择i18N Ally Next,就会输出插件的日志。在这里观察插件是否出现问题啥的。

检查插件依赖

打开插件依赖安装路径,一般是这个路径,如果没有特别设置的话C:\Users\{用户名}\.vscode\extensions\lydanne.i18n-ally-next-3.0.15\node_modules。查看这个目录下有没有ts-node,如果没有的话直接在这个目录下手动安装,我安装的版本是10.9.2。

然后在vscode设置中搜索i18n查看ts-node的路径是否设置正确,不然也识别不到。

配置

配置i18n-ally-next-custom-framework.yml文件

在项目根目录下的.vscode中配置文件.vscode\i18n-ally-next-custom-framework.yml,注意是monorepo项目的根目录下,这个文件的内容可以让AI帮你生成。

# 定义在哪些文件类型中检测翻译键 languageIds: - typescript - typescriptreact - javascript - javascriptreact # 匹配 @solid-primitives/i18n 的 t('key') 调用 usageMatchRegex: - "[^\\w\\d]t\\(\\s*['\"`]({key})['\"`]" # 定义一键提取硬编码字符串时生成的代码模板 refactorTemplates: - "t('$1')" # 假设你未使用命名空间 namespace: false

然后要注意namespace字段,如果说语言包是嵌套的就需要设置为true,如果是平铺的设置为false。

配置settings.json文件

也是在项目根目录下配置.vscode\settings.json,这个文件也是让AI生成就行,不过你要知道每个字段代表的意思,不然错了也看不出来,如果说语言包不是平铺的那么还要设置namespace字段,同时pathMatcher字段也要变。

{ // 国际化语言文件所在目录(相对于项目根目录) "i18n-ally-next.localesPaths": [ "packages/app/src/i18n" ], // 启用哪些文件解析器来提取和读取翻译键 "i18n-ally-next.enabledParsers": ["ts", "tsx", "json"], // 语言文件的命名匹配规则:{locale}.{ext} // 例如 en.json、zh.ts、en.tsx 等 "i18n-ally-next.pathMatcher": "{locale}.{ext}", // 翻译键的嵌套风格:nested 表示嵌套对象 "i18n-ally-next.keystyle": "nested", // 源语言(默认语言),即编写代码时使用的语言 "i18n-ally-next.sourceLanguage": "en", // 在编辑器中显示翻译时使用的语言(例如悬停提示、内联显示) "i18n-ally-next.displayLanguage": "zh" }

修改package.json和语言包

对于你想要翻译的项目的package.json文件,删除type:module字段。

同时对于语言映射文件必须使用export default导出,不要用命名导出。opencode使用的是命名导出,自己手动改一下源码就行。

原来的

改成

检查

首先检查output面板插件是否正常输出日志了,首先看是否正常加载了我们之前配置的文件,是否解析并加载正确语言包地址,最后查看语言包文件是否正确识别了。

然后去代码里看是否把翻译嵌入了。

如果没有成功,可能是识别出错了,可以尝试去设置里面设置一下源语言和目标语言。注意源语言和目标语言必须和语言映射文件名一样,比如zh.ts则为zh,ar.ts则为ar

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 6:35:40

Rag评测-被测系统答题

上篇已经构建好问答集,可以说前半部分任务已经完成,现在执行下半部分任务了。那么下半部分首先需要执行的任务就是,用被测系统开始答题,先在models.py文件下写好被测系统的配置 System_llm_url写被测系统url def system_llm(quest…

作者头像 李华
网站建设 2026/10/16 6:35:08

FreeRTOS任务调度实战:从任务创建到状态迁移的完整解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 6:34:35

诺贝尔经济学奖回顾(1969—2026)

诺贝尔经济学奖回顾(1969—2026) 概述 瑞典中央银行纪念阿尔弗雷德诺贝尔经济学奖(The Sveriges Riksbank Prize in Economic Sciences in Memory of Alfred Nobel)自 1969 年首次颁发以来,截至 2026 年共颁发 58 次…

作者头像 李华