Yaak 多语言切换教程:4 个文件给桌面 API 客户端加上中文界面
Yaak 多语言切换教程4 个文件给桌面 API 客户端加上中文界面【免费下载链接】yaakThe most intuitive desktop API client. Organize and execute REST, GraphQL, WebSockets, Server Sent Events, and gRPC 项目地址: https://gitcode.com/GitHub_Trending/ya/yaakYaak 支持 REST、GraphQL、WebSockets、SSE、gRPC 等多种 API 协议但界面默认只有英文仓库里也没有现成的多语言切换入口。这篇教程带你用 4 个文件、约 20 分钟给 Yaak 加上「Yaak 中文界面」和免重启的语言切换能力。先说清楚现状。Yaak 的界面文案目前直接硬编码在各个 React 组件里没有集中的语言资源也没有语言状态。也就是说想做「Yaak 界面本地化」缺的不是翻译工具而是一个让所有文案统一走「查表」机制的出口。方案一共四件事翻译资源文件按语言存放文案的 JSON语言状态一个全局可读、可写、会持久化的语言代码设置页选择器让用户切换语言插件扩展位让第三方插件也能提供各语言文案第一步建好翻译资源文件让文案有统一出口在客户端目录下新增一个locales/目录放语言资源文件en.json、zh-CN.json、zh-TW.json、ja.json、ko.json。key 用分层命名common.send表示「发送」settings.appearance表示「外观」一眼能定位到模块。{ common: { send: 发送, cancel: 取消, save: 保存 }, settings: { general: 常规, appearance: 外观, language: 语言 } }之后把组件里写死的英文比如ButtonSend Request/Button统一换成t(common.sendRequest)这样的查表调用。这一步做完所有界面文案就都从「各写各的」变成「一个地方改」。第二步用 jotai 管理语言状态切换即时生效Yaak 前端已经在用 jotai例如 lib/atoms.ts 里就有 atom加语言状态不需要引新依赖。新建一个原子文件// apps/yaak-client/lib/atoms/language.ts import { atomWithStorage } from jotai/utils; export const languageAtom atomWithStorageen | zh-CN | ja( yaak-language, en ); export const makeT (language: string, dict: Recordstring, string) (key: string) dict[key] ?? key;atomWithStorage把选择写进本地存储下次打开应用语言还在。任何组件只要useAtom(languageAtom)读它语言一变React 自动重渲染——这就是「切换后界面临时跟着变、不用重启」的全部秘密。第三步在设置页加语言选择器并处理 RTL 与系统语言设置页apps/yaak-client/components/Settings/下的 General 页加一个下拉框即可Select labelLanguage / 语言 sizesm value{language} onChange{setLanguage} options{[ { label: English, value: en }, { label: 简体中文, value: zh-CN }, { label: 日本語, value: ja }, ]} /三个容易忽略的细节跟随系统首次启动读navigator.languagezh-TW归繁体其余zh归简体ja、ko直接对应兜底en。右到左排版阿拉伯语、希伯来语等 RTL 语言用document.documentElement.dir rtl翻转整页方向其余语言设回ltr。缺失兜底某语言文件里没翻译的 keymakeT会回退显示英文原文界面不会白屏。第四步给插件系统留多语言扩展位Yaak 的插件类型定义集中在 plugin-runtime-types 包。在插件清单类型里加一个可选字段export interface PluginLocale { en: Recordstring, string; zh-CN?: Recordstring, string; ja?: Recordstring, string; }插件运行时渲染插件自带的文案动作菜单、表单标签时按当前languageAtom的值先查zh-CN没有再回退en。这样「API 客户端如何多语言」就不只是主应用的事社区插件也能各自带翻译互不阻塞。最后怎么验证这套 Yaak 中文界面真的生效按顺序跑一遍全过才算完成默认状态界面应为英文刷新后仍是英文没动过选择的默认值。设置页切到「简体中文」侧边栏、菜单、设置项立即变中文无需重启。关掉应用再打开语言保持中文。把zh-CN.json里随便删一个 key对应位置应回退显示英文而不是空白。装一个带locales字段的插件其菜单文案随语言切换。几点实用建议新增语言只加一个 JSON 文件和下拉框选项不动组件代码文案 key 命名先按模块settings、sidebar再按功能方便社区协作翻译RTL 只影响排版方向不改变请求数据本身不用担心破坏 API 调试功能。【免费下载链接】yaakThe most intuitive desktop API client. Organize and execute REST, GraphQL, WebSockets, Server Sent Events, and gRPC 项目地址: https://gitcode.com/GitHub_Trending/ya/yaak创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

chsrc 的 rawstr4c 配置实战:以 Homebrew 换源 recipe 的 Markdown 模板与 C 字符串生成为例

chsrc 的 rawstr4c 配置实战:以 Homebrew 换源 recipe 的 Markdown 模板与 C 字符串生成为例

CLI开发工具 【免费下载链接】chsrc chsrc 全平台通用换源工具与框架. Change Source everywhere for every software 项目地址: https://gitcode.com/gh_mirrors/ch/chsrc 点击查看 免费下载 本文以 chsrc 仓库中 Homebrew 换源 recipe 的 rawstr4c 输入文档 为核…

2026/10/9 9:55:17 阅读更多 →
AI Agent Skills实战指南:原理、开发与落地

AI Agent Skills实战指南:原理、开发与落地

我接触“skills”这个词,一开始是从Claude的Agent Skills、Codex的skills这类AI能力扩展机制开始的,后来发现GitHub skills、Superpowers这类第三方合集也火得不行,几乎每天都能刷到新的“技能包”。说白了你完全可以把它理解成给AI装上的一套…

2026/10/9 9:54:48 阅读更多 →
为Claude Code赋予持久记忆:claude-mem原理、安装与实战指南

为Claude Code赋予持久记忆:claude-mem原理、安装与实战指南

最近我在重度使用 Claude Code 帮自己写代码,遇到了一个特别拧巴的场景:昨天刚跟它交代清楚的偏好——包管理器用 pnpm、测试走 Vitest、格式化交给 Biome 并且别乱动 import 顺序,今天新开一个终端窗口,它全忘了。这就是无状态会…

2026/10/9 9:55:16 阅读更多 →

最新新闻

2026实测降AI率工具红黑榜:TaoToken统一Key接入10款检测API的达标率硬核对标

2026实测降AI率工具红黑榜:TaoToken统一Key接入10款检测API的达标率硬核对标

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

2026/10/9 11:13:03 阅读更多 →
从一句话到三维模型:text-to-cad 技术拆解与实战复盘

从一句话到三维模型:text-to-cad 技术拆解与实战复盘

从一句话到三维模型:text-to-cad 技术拆解与实战复盘这两年,AI 生成内容的战火已经从文生图、文生视频烧到了工程建模领域。text-to-cad 这个方向,简单说就是输入一句话,比如“一个带有四个圆孔的矩形法兰盘”,系统直接…

2026/10/9 11:13:03 阅读更多 →
COMSOL仿真石墨烯-金属开口环超材料圆二色性

COMSOL仿真石墨烯-金属开口环超材料圆二色性

1. 先别急着建模:这个结构凭什么值得信手性超材料在纳米光学里确实是个狠角色。普通的天然材料对左旋、右旋圆偏振光的响应几乎没差别,而手性超材料不一样——它能把其中一种圆偏振光吃掉或者扭得厉害,另一种则基本放行,这种不对称…

2026/10/9 11:13:03 阅读更多 →
text-to-cad实战指南:从自然语言到参数化模型的技术解析与工程落地

text-to-cad实战指南:从自然语言到参数化模型的技术解析与工程落地

作为一个在机械设计行当里泡了十几年的老工程师,我第一次听到 “text-to-cad” 这个词时,其实是不太当回事的。原因很简单:CAD 建模哪是输一句话就能搞定的,里面藏着公差、基准、加工工艺这些 “只可意会” 的讲究。但等我真正上手…

2026/10/9 11:13:03 阅读更多 →
第17场面试复盘:终于弄懂面试官的提问逻辑链

第17场面试复盘:终于弄懂面试官的提问逻辑链

面了16场之后,这场让我终于弄明白了面试官到底在问什么先交代一下背景。我是做后端开发三年多的Java工程师,今年年初动了换工作的念头,从二月中旬开始投简历,到这场面试之前已经陆陆续续面了16场,有大厂有中小厂&#…

2026/10/9 11:13:03 阅读更多 →
房产中介管理系统毕设:SpringBoot全流程开发复盘

房产中介管理系统毕设:SpringBoot全流程开发复盘

做毕设选题的时候,很多同学都会卡在同一个问题上:满屏都是图书管理系统、学生选课系统,写出来没新意,答辩老师一眼就能看出是老套路;但选太复杂的题目,比如分布式电商、高并发秒杀,以毕设周期和…

2026/10/9 11:12:02 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/9 6:17:20 阅读更多 →