
Docker Desktop 4.65 的界面默认还是那一套英文左侧栏的 Containers、Images、Volumes 一路看下来倒也熟悉但真到了右键菜单、设置项、弹窗确认框里那些细碎英文强迫症多少有点难受。我这次从 4.6x 升到 4.65 之后索性把汉化这件事完整做了一遍。整个过程踩了几个坑包括改了不生效、白屏闪退、重启后被自动更新偷偷还原最终全部解决。今天这篇就把 v4.65 从资源定位到翻译替换、从重新打包到踩坑回滚一条线全部写清楚。这篇文章适合三类人一是想用纯中文界面操作 Docker Desktop 的人二是被网上各种版本不匹配的汉化包坑过、想自己动手的人三是对 Electron 应用汉化机制本身感兴趣、想把这套方法迁移到其他软件上的朋友。先说结论Docker Desktop 基于 Electron 架构汉化的核心路径就是解包 app.asar、找到语言文件、替换翻译字符串、重新打包回填整个过程手工操作大约十几分钟但前提是得按照正确的顺序来否则很容易翻车。1. 汉化前必看v4.65 的界面结构与方案选型1.1 为什么这个版本没有官方中文Docker Desktop 从 3.x 开始界面逐渐改版到 4.x 基本定型成现在的侧边栏布局。从使用习惯上讲它和 VSCode、Postman 这类产品很像底层是 ElectronUI 层用 React 渲染翻译工作其实早就模块化了按道理接入中文并不难。但 Docker 官方一直没把简体中文放进设置语言列表里这么多年社区不断有人提 issue官方始终没有安排到路线图上最新版本打开 Settings 里的 Language 选项能选的语言依然只有英文、日文、法文这几类没有我们需要的简体中文。所以摆在面前的路就很清晰要么忍着英文用要么自己动手改资源文件要么找第三方的现成汉化包。第三种方案虽然省事但版本匹配的问题很头疼网上很多汉化包停留在 4.3x、4.4x直接扔到 4.65 里大概率界面残缺甚至直接打不开因为不同版本的内部资源结构有变动语言文件里的 key 也对不上。与其去碰运气不如自己掌握操作流程。1.2 三种汉化路径对比选型分析动手之前我先确认了几条路的可行性列个表格方便对比方案原理优点缺点修改 app.asar解包后直接替换语言资源可控性最强翻译不依赖别人可自定义术语需要装 Node.js 工具链升级后会被覆盖第三方现成汉化包别人预先做好替换文件操作最快版本必须严格匹配来源不明时风险高可能被塞入不需要的内容修改设置文件指定语言通过 settings 配置文件强制语言干净不影响应用文件v4.65 的语言列表里根本没有 zh-CN 选项这条路走不通我最终选择的是第一种自己解包 app.asar 来做修改。这不仅是解决问题更是把方法学会以后不管 Docker Desktop 升级到 4.70 还是 5.x我都能在短时间内自己重新汉化不用到处找人问。1.3 准备工作版本确认、备份与工具安装开始前先确认自己的工作环境我这里的版本号是 v4.65Windows 11 系统Docker Desktop 已经正常跑起来。如果你用的是 macOS整体思路完全一样只是安装路径和个别命令有差异后面我会提到。需要准备的工具就一个Node.js。因为要用到 asar 命令它是 Electron 自带的打包工具用来解包和重新打包应用资源文件。装好 Node.js 之后在终端执行下面这条命令npm install -g electron/asar装完之后可以验证一下版本npx asar --version如果能看到版本号说明环境没问题。接下来先彻底退出 Docker Desktop。这里有个容易忽略的点Windows 下点窗口右上角的叉只是把主界面关了后台的 WSL2 进程其实还在跑资源文件仍然被占用后面 asar pack 的时候会报错。务必从系统托盘右键 Docker 图标选 Quit Docker Desktop等托盘图标完全消失后再进行下一步。备份这一步千万别省。先把 resources 目录里的 app.asar 复制一份出来我习惯在桌面建一个 docker-hanhua 的目录把备份放在里面顺便把后面的解包、翻译工作目录都放在这里避免在系统盘乱建文件。2. 解剖 app.asar翻译资源的定位实战2.1 Docker Desktop 的资源目录与 asar 原理先看 Windows 下 Docker Desktop 的安装目录默认在C:\Program Files\Docker\Docker\resources。打开这个目录能看到一堆文件最关键的就是 app.asar这是 Electron 应用把所有前端代码、资源文件打包后的单文件归档。asar 本身不复杂它的作用类似 tar 包只是 Electron 能直接识别并加载其中的资源。解包之后你会发现里面的目录结构和普通的前端项目没有区别无外乎 build、dist、src 这些目录。理解了这一点汉化就不再神秘本质上就是把 app.asar 解包改里面的文本资源重新打包放回去。macOS 的路径略有不同在/Applications/Docker.app/Contents/MacOS/Docker Desktop.app/Contents/Resources。注意要在 Finder 里对 Docker.app 右键选择“显示包内容”才能逐步进到这个目录app.asar 同样躺在 Resources 下。2.2 解包并定位语言文件Windows / macOS 路径进入我建好的工作目录执行解包命令npx asar extract C:\Program Files\Docker\Docker\resources\app.asar ./app-asar解包后的内容全部落在 app-asar 目录里。接下来就是定位语言文件的环节。我手上 v4.65 解包后的结构里语言资源在src/locales下面命名方式类似en.json、zh_CN.json这是 react-i18next 国际化的常见约定。但不同小版本之间目录结构有差异如果你解包之后没在src/locales下看到文件不要慌教大家一个通用办法直接在解包后的目录里搜文件名zh_CN、zh-CN或者搜locales关键字一定能发现语言资源的位置。如果搜遍了都找不到单独的 json说明这个版本把翻译常量直接编译进了某些 js chunk 里那就得换思路直接在那堆 js 里搜索英文界面上的真实文本比如搜Images、Containers找到对应的代码区域再做替换这个方法费劲一些但也是有效的兜底方案。2.3 语言文件的字段结构与翻译逻辑确认语言文件是 JSON 格式之后打开en.json会看到大量嵌套的 key-value。最外层一般是模块名比如dashboard、images、containers、settings再往下才是界面上真正显示的字符串。翻译的时候大原则是只改 value绝对不动 key。因为 key 是代码里的引用标识你改了 key前端代码就找不到对应的翻译文本界面会直接崩出乱码或者缺文案。举个例子假设 en.json 里有这样一段{ containers: { title: Containers, start: Start, stop: Stop, restart: Restart } }翻译之后就是{ containers: { title: 容器, start: 启动, stop: 停止, restart: 重启 } }另外注意一个细节不是所有语言文件都需要从头到尾翻译。Docker Desktop 内部有语言回退机制它默认英文作为回退语言。如果你只是把 en.json 拷贝一份改名成 zh_CN.json再把里面的值改成中文界面能显示中文但一旦遗漏某些字段它会显示英文来兜底不会出现空白反而是一种稳妥的做法。网上很多汉化包采用的也是这个方案。3. 手工汉化实操从改 JSON 到界面显示中文3.1 翻译文件修改的完整流程现在到了真正动手的部分。我建议不要直接改 en.json而是采用独立中文文件的方式先复制一份 en.json改名成zh_CN.json或根据你当前语言文件的实际命名规则来比如zh-CN.json然后在这个副本里做翻译替换。原因很简单如果你直接把 en.json 改成中文那界面语言选项里 English 选出来也是中文以后想切回英文检查问题就比较麻烦。独立成 zh_CN.json 后Docker Desktop 的语言切换机制自然能在设置里切到 Chinese 或中文选项。接下来是翻译量的问题。Docker Desktop 的界面文案不算多核心模块大概在两三百条左右但设置项里面的文案非常碎有几百条。如果纯手工一条条翻译工作量不小。我的做法是批量处理高频词再手工处理长句英文原文中文翻译备注Container / Containers容器主术语全篇统一Image / Images镜像主术语全篇统一Volume / Volumes卷存储卷上下文允许时用“卷”Network网络保持简洁Start / Stop / Restart启动 / 停止 / 重启动作类Settings设置高频入口Resources资源表示资源分配Troubleshoot故障排查或“疑难解答”Sign in登录或“登录”Logs日志容器日志我的建议是尽量参考 Docker 官方文档的中文翻译习惯因为它们已经是国内用户最熟悉的术语体系容器、镜像、卷、网络、节点、堆栈等保持一致能减少陌生感。长句的翻译则要手工逐条看比如 “This container will be automatically removed when it stops” 这类说明文字翻译成“容器停止后会自动移除”会让用户一眼看懂。3.2 重新打包并安全回填翻译文件改完后进入重新打包环节。在解包目录的上一级执行npx asar pack ./app-asar ./app.asar.new执行完会在当前目录生成一个 app.asar.new。手动确认一下大小和原始文件不要差太多如果新文件只有几 KB说明打包出了问题多半是语言文件没有被正确放进去。覆盖之前我给你一个稳妥的回填顺序。原始 app.asar 已经备份过了现在再把生成的 app.asar.new 复制到 Docker Desktop 的 resources 目录替换原来的 app.asar。Windows 下提示权限问题时确保 Docker Desktop 已经彻底退出如果还不行就用管理员权限运行文件管理器再操作。替换完成后启动 Docker Desktop。正常情况下一两分钟后主界面就会出现打开设置看到的是中文菜单。如果启动失败直接进入下一节的排查内容。3.3 启动验证与常见现象对照我建议启动之后先验证这几个位置确保汉化真正生效侧边栏的 Containers、Images、Volumes 是否变成容器、镜像、卷容器列表的操作按钮是否显示中文右键单击容器出来的菜单是否全部中文化设置面板里的 General、Resources、Docker Engine 等标签是否已经翻译有一类现象要提前说清楚汉化并不覆盖所有文本。Docker CLI 命令的原始输出、WSL2 后端进程打印的日志、容器内部操作系统的界面、以及底层 Go 服务抛出的错误信息这些都不在 app.asar 的管辖范围内大多数情况下它们依旧显示英文这是正常且不可避免的。不要误以为是汉化没生效。4. 踩坑实录汉化后失效、白屏、被覆盖的完整排查链路这一节是重点。我在做 v4.65 汉化过程中遇到了三种典型问题挨个说下排查思路你照着这个链路走基本都能定位到原因。4.1 现象一替换后界面仍是英文首先检查你修改的语言文件的名字是否和程序语言列表匹配。不同版本的 Docker Desktop 对 zh-CN 的支持有细微差别有的版本内部约定zh-CN.json有的用zh_CN.json如果名字和程序预期不一致它加载不到中文资源自然继续显示英文。解决办法是把两个命名都建上里面内容相同确保覆盖全部情况。其次是缓存问题。Electron 应用在运行时会缓存一部分渲染层资源Docker Desktop 也不例外。如果你改完文件后直接热重启有些界面组件可能还是从缓存里读取旧数据。处理方式是彻底退出 Docker Desktop然后删除%APPDATA%\Docker\下的缓存目录这个目录路径是 Windows 下默认的配置与缓存位置再重新启动。注意删缓存之前先确认 Docker Desktop 正在运行的所有容器状态避免误操作影响容器数据不过这部分缓存大多是 UI 层数据不影响容器本身。最后检查 Docker Desktop 设置里的 Language 项确保它确实被识别成了中文。如果语言下拉框里只有一个 English说明你的 zh_CN.json 没有生效回头检查文件放置路径和命名。4.2 现象二启动白屏 / 闪退白屏和闪退是汉化最经典的翻车现场九成原因是 JSON 格式不对。翻译文本量很大手工编辑时非常容易漏一个逗号、引号没闭合或者中文字符中间的半角引号问题。front-end 加载语言文件遇到 JSON.parse 报错就会导致整个渲染进程崩溃表现就是白屏严重就直接闪退。遇到这种情况第一时间不要慌恢复备份再说。用之前备份的 app.asar 覆盖回去确认 Docker Desktop 能正常启动说明改动本身有问题再逐步排查。如果确认 JSON 格式无误那就是打包环节出了岔子。用 asar 解包出来的目录会有一些隐藏文件和符号链接打包时如果目录不完整会导致前端代码找不到对应模块表现同样是白屏。这时候重新执行一遍解包、修改、打包流程不要在一个半成品目录上反复操作。给 JSON 语法检查留一条快捷路径用 Node.js 一行命令就能验证node -e JSON.parse(require(fs).readFileSync(./app-asar/src/locales/zh_CN.json, utf8)); console.log(OK)输出 OK 才说明文件格式没有问题。4.3 现象三重启后汉化被自动更新覆盖这个问题大概是最挫败的明明是汉化成功了重启之后界面又变回英文。打开 Docker Desktop 的更新记录一看时间正好对应上自动更新在后台下载了新版本然后替换了 resources 目录下的整个文件包括我们精心修改的 app.asar。Docker Desktop 默认开启了自动更新升级时根本不会管你有没有自定义文件直接全体覆盖。解决办法有两个层面第一层在设置里关闭自动更新。打开 Docker Desktop 设置找到 General 选项里面有一项关于自动更新的勾选取消掉。如果界面都已经被覆盖回英文对着路径去找即可。第二层修改配置文件硬性关闭。Docker Desktop 的配置在%APPDATA%\Docker\settings-store.json里里面能找到和自动更新相关的字段。我当时的做法是直接把自动更新相关值改成 false 保存重启 Docker Desktop 之后它就不会再偷偷下载更新了。这个方法的好处是以后每次汉化完都不怕被覆盖。这里多说一句关闭自动更新之后Docker Desktop 还是能在设置里检查到新版本只是不会偷偷安装你可以在确定新版本不需要汉化或者需要重新汉化时再手动升级这样主动权就掌握在自己手里。4.4 给排查过程留后路恢复与回滚任何时候做这类修改都要给自己留好后路。我的习惯是在工作目录保存三样东西原始的 app.asar.bak在一切修改都没做之前就备份解包完整目录 app-asar 的一个压缩包以后重新汉化直接用当前翻译进度记录比如一个 git 仓库下一次版本升级时直接 diff 新旧语言文件有了这三样基本可以做到任意回滚。哪怕最坏情况Docker Desktop 损坏无法启动用 app.asar.bak 覆盖回去总是能救回来的。5. 进阶玩法自维护汉化包与自动化脚本5.1 增量更新让汉化跟上版本升级Docker Desktop 大概每个月都会发布一个小版本。如果每次升级后都手工重做一遍翻译那确实是折腾。更聪明的做法是把翻译资源独立管理起来每次新版本发布后只需要把旧版翻译的中文文本映射到新版的语言文件上即可。具体操作新版本发布后解包新版 app.asar把新版 en.json 和旧版 en.json 做一次 diff找出新增的或变更的 key。翻译内容没有变化的 key 直接从旧版 zh_CN.json 里复制过来只翻译新增的少量 key。这样一次升级平均只需要处理几十条新文案工作量比全量翻译小一个数量级。这里提供一个简单的思路用 Python 写个脚本加载新版 en.json 和旧版 zh_CN.json遍历新版每个 key如果旧版存在对应的 key 就提取出来不存在就保留英文占位输出成候选中文文件你再手工补剩下的空位。5.2 自动化打包脚本速览效率再高一点可以直接把整个流程脚本化。用 npx asar 命令配合系统的文件操作把解包、覆盖、重新打包固化成一段脚本下次升级一键执行。Windows 下可以直接用 PowerShell 写一个简版$dockerResources C:\Program Files\Docker\Docker\resources $workDir D:\docker-hanhua # 停止 Docker Desktop Stop-Process -Name Docker Desktop -Force -ErrorAction SilentlyContinue Stop-Process -Name com.docker.backend -Force -ErrorAction SilentlyContinue # 解包新版本 npx asar extract $dockerResources\app.asar $workDir\app-asar # 这里插入你的翻译文件合并逻辑 # ... 脚本化处理 zh_CN.json ... # 重新打包并覆盖 npx asar pack $workDir\app-asar $workDir\app.asar.new Copy-Item $workDir\app.asar.new $dockerResources\app.asar -Force Write-Host 汉化包已生成并覆盖重新启动 Docker Desktop 即可这段脚本里我特意保留了“翻译文件合并逻辑”的注释位置你可以把上面的增量合并逻辑放进来也可以直接跳过手动处理翻译文件后再运行打包部分。5.3 分享汉化包时的注意事项如果你觉得自己的汉化效果不错打算分享给其他人有几个点必须注意。一是明确适用范围。汉化包和安装版本严格绑定Docker Desktop 4.65 的汉化包不能用于 4.66 或 4.64必须写清楚适用版本和发布日期。二是提供校验信息。打包后的 app.asar 建议顺便算出 SHA256 哈希值让使用者在覆盖前能确认文件完整避免下载损坏。三是声明修改内容。写清楚只替换了语言资源文件没有改动任何可执行文件也不包含其他额外代码降低用户的安全顾虑。四是最重要的一点保留原始文件。所有汉化包都必须明确告知使用者原版 app.asar 的备份位置至少让用户知道恢复方法避免汉化后无法回到官方版。我个人在实际操作中最深的体会是Electron 应用的汉化并不高深本质上就是解包、改文本、打包三步真正坑人的永远是一些细枝末节比如语言文件命名、缓存、自动更新覆盖。这也是为什么我强烈建议自己动手做一遍而不是只依赖网上别人分享的包。等你亲手跑通一次之后碰到 VSCode、Postman、Figma 桌面端这类同样基于 Electron 的工具你会有一种“原来都一样”的熟悉感遇到任何英文界面的软件都知道该从哪里入手。这次 docker.desktop v4.65 的汉化记录就分享到这里希望下一次升级的时候你也能在十分钟内让自己的 Docker Desktop 重新变回熟悉的中文界面。