ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

从源码编译到汉化:Aseprite 中文界面自己动手全流程

从源码编译到汉化:Aseprite 中文界面自己动手全流程 1. 为什么我要自己动手搞定 Aseprite 汉化Aseprite 这个像素画工具在独立游戏圈和像素艺术圈里基本是绕不开的。它轻量、专注、对像素网格和调色板的支持非常到位很多做独立游戏的朋友从角色帧动画到场景 tile 的绘制整个流程都靠它完成。但问题也很直接官方版本是英文界面对不少刚入门的朋友来说菜单里那些 Layer、Frame、Onion Skin、Palette 之类的词看着就头大。网上虽然能搜到各种“汉化版”但来源不明、版本老旧、捆绑东西的情况太多了用起来心里不踏实。所以这篇内容我想把“自己动手把 Aseprite 汉化”这件事讲清楚。核心思路不是去下载来路不明的成品而是走一条更稳妥的路拿到官方源码自己编译再把语言文件替换进去。整个过程涉及Aseprite、汉化、源码编译、GitHub这几个关键词听起来好像有点门槛但我尽量用“大爷也能看懂”的方式来说把每一步为什么这么做、可能踩什么坑都讲明白。适合谁看适合所有想用中文界面、又不想用来路不明版本的朋友哪怕你之前没编译过任何东西跟着走也能搞定。我先说清楚一件事Aseprite 是商业软件官方在售。它的源码是公开的但编译出来的成品用于个人学习、研究是没问题的。我下面讲的是基于公开源码的本地编译和界面语言替换重点在于“自己动手、来源可控”而不是鼓励去传播成品。这个边界大家心里有数就行。2. 整体思路与方案选型为什么不直接下成品2.1 三条路摆在面前我为什么选源码编译想用中文界面的 Aseprite市面上大概有三条路。第一条直接搜“Aseprite 汉化版下载”找个网盘链接拉下来。第二条去某些论坛找别人编译好的包。第三条自己从官方仓库拿源码本地编译然后替换语言文件。前两条路最大的问题是不可控。你拿到的是一个 exe 或者压缩包里面到底改了什么、有没有夹带东西、版本是不是对得上全靠发布者的良心。我见过太多“汉化版”其实是老版本套了个壳甚至有的把更新功能都阉割了。对于要长期用来做项目的人来说这种不确定性是致命的——你今天画的文件明天换个版本可能就打不开了。第三条路虽然要多花点时间但好处是每一步都在自己眼皮底下。源码来自官方仓库编译工具链是公开的语言文件是纯文本的 JSON改了什么一目了然。而且一旦跑通一次以后官方更新了你只要重新拉一下源码、重新编译就行等于掌握了一套可复用的流程。这就是我选它的核心理由可控、可复现、可升级。2.2 编译方案怎么选CMake 是绕不开的核心Aseprite 的构建系统用的是 CMake这是跨平台 C 项目里非常主流的一套工具。它的作用简单说就是你告诉它“我要在 Windows 上编译用哪个编译器”它帮你生成对应的工程文件然后调用编译器把源码变成可执行程序。为什么必须用它因为 Aseprite 依赖的库不少比如处理图像的 skia、处理脚本的 lua、处理界面的 laf 等等。这些依赖之间的链接关系很复杂手写编译命令基本不可能。CMake 把这些依赖关系都写在了 CMakeLists.txt 里你只要按它的要求准备好环境它就能自动帮你把依赖拉下来、编译好、链接到一起。这里有个关键点Aseprite 的源码编译会去下载一堆第三方依赖这些依赖很多托管在 GitHub 上。如果你直接编译可能会遇到下载慢或者连不上的情况。这不是 Aseprite 本身的问题而是网络环境的问题。我的处理办法是提前把依赖准备好或者配置好镜像源这个后面实操部分会细说。2.3 汉化到底改的是什么语言文件的结构很多人以为汉化是要改代码其实不是。Aseprite 的界面文字是抽离出来的放在语言文件里。你打开源码目录能找到类似data/strings这样的文件夹里面是各种语言的 JSON 文件比如en.json是英文zh.json就是中文。每个 JSON 文件里是一堆键值对键是程序内部用的标识符值就是显示在界面上的文字。比如layer这个键英文文件里值是Layer中文文件里改成图层界面上就会显示中文。所以汉化的本质就是准备一份完整的中文 JSON替换掉或者补充到语言目录里然后在程序设置里切换语言。这也解释了为什么自己编译更靠谱你可以直接看到语言文件的内容确认没有奇怪的改动。而且如果官方更新了新增的文字你只要在 JSON 里补上对应的键值就行不用等别人发布新版本。3. 动手前的环境准备把工具链搭起来3.1 Windows 下的编译环境清单我以 Windows 为例来说因为用 Aseprite 的朋友里 Windows 用户最多。你需要准备这几样东西Visual Studio 2022注意要装“使用 C 的桌面开发”这个工作负载里面包含了 MSVC 编译器和 Windows SDK。社区版免费够用。CMake去官网下 Windows 的安装包安装时勾选“Add CMake to the system PATH”这样命令行里才能直接调用。Git用来拉源码。同样安装时选上命令行工具。Ninja可选但推荐比 Visual Studio 自带的生成器快不少CMake 支持用它来构建。这些东西的安装过程我就不一步步截图了网上教程很多。重点提醒一句Visual Studio 安装时一定要确认 C 工作负载装上了很多人装完发现只有 IDE 没有编译器编译时就会报找不到 cl.exe 的错误。3.2 源码和依赖的获取策略源码从官方仓库拉命令很简单git clone --recursive https://github.com/aseprite/aseprite.git注意--recursive这个参数它会同时把子模块也拉下来。Aseprite 用了不少子模块比如 laf 界面库、clip 剪贴板库等。如果忘了加这个参数后面编译会报缺文件。拉下来之后进入目录还需要更新子模块cd aseprite git submodule update --init --recursive这一步很关键因为有些子模块可能没跟着主仓库一起拉全。执行完这两步源码部分就齐了。接下来是依赖。Aseprite 编译时会自动去下载 skia、lua 等第三方库。这些下载动作默认走 GitHub如果网络不畅就会卡住。我的做法是提前设置好代理环境变量或者用镜像源。具体来说可以在命令行里设置set HTTP_PROXYhttp://你的代理地址:端口 set HTTPS_PROXYhttp://你的代理地址:端口如果你没有代理也可以找找国内的开源镜像把 CMake 里下载依赖的 URL 替换掉。这个稍微麻烦点但一次配置好后面就省心了。3.3 一个容易被忽略的细节磁盘空间和路径编译 Aseprite 会占用不少磁盘空间源码加上编译中间文件轻松超过 10GB。所以别放在系统盘空间紧张的地方。另外路径里最好不要有中文和空格CMake 和一些编译工具对中文路径的支持时好时坏为了避免莫名其妙的错误直接用纯英文路径比如D:\dev\aseprite。我踩过一次坑把源码放在“我的文档”下面结果编译到一半报错查了半天发现是路径里的中文导致的。换到D:\aseprite之后一次通过。这种问题不遇到则已遇到就很浪费时间提前避开最好。4. 编译实操从命令行到可执行文件4.1 生成构建文件CMake 配置阶段环境准备好之后打开“x64 Native Tools Command Prompt for VS 2022”这个命令行工具。注意不是普通的 cmd这个工具会自动配置好 MSVC 的环境变量。进入源码目录创建一个 build 目录并进去mkdir build cd build然后执行 CMake 配置命令。用 Ninja 的话是这样cmake -DCMAKE_BUILD_TYPERelWithDebInfo -DLAF_BACKENDskia -G Ninja ..这里解释一下几个参数。CMAKE_BUILD_TYPERelWithDebInfo表示带调试信息的发布版性能和体积比较平衡。LAF_BACKENDskia指定界面后端用 skia这是官方推荐的。-G Ninja表示用 Ninja 作为生成器。执行这条命令后CMake 会开始检查环境、下载依赖。这一步最耗时也最容易出问题。如果卡在下载某个库上就检查网络。如果报找不到编译器就确认你是不是在正确的命令行工具里。4.2 编译过程耐心等待与错误应对配置成功后执行编译ninja aseprite或者用 CMake 的构建命令cmake --build . --config RelWithDebInfo编译过程视机器性能而定快的话十几分钟慢的话半小时以上。期间会编译大量 C 文件CPU 占用会很高这是正常的。常见的编译错误有这么几类。一是依赖下载失败表现是 CMake 配置阶段就报错解决办法是检查网络或换镜像。二是编译器版本不匹配比如用了太老的 Visual Studio解决办法是升级到 2022。三是磁盘空间不足编译到一半报写入失败清理空间重新来。我建议第一次编译时把命令行窗口留着别关万一报错还能往上翻看具体信息。错误信息通常很长但关键的就那几行找到error:开头的部分就行。4.3 编译产物在哪里找到你的 exe编译成功后可执行文件在build\bin目录下名字是aseprite.exe。你可以直接双击运行看看能不能正常打开。如果能打开说明编译这一步就成功了。这时候界面还是英文的因为语言文件还没处理。但至少证明你的工具链、源码、依赖都没问题。接下来就是汉化的部分。提示第一次运行可能会提示缺少某些 DLL这是因为编译出来的 exe 依赖一些动态库。这些库通常在 build 目录的相应子目录里把它们和 exe 放在一起或者把对应目录加到 PATH 里就行。5. 汉化落地语言文件的处理与切换5.1 找到语言文件并理解其结构编译好的 Aseprite语言文件在build\bin\data\strings目录下如果是从源码运行则在源码的data\strings。你会看到一堆 JSON 文件比如en.json、es.json、fr.json等。打开en.json你会看到类似这样的结构{ layer: Layer, frame: Frame, palette: Palette }这就是键值对。汉化要做的就是准备一份zh.json把值改成中文。网上有现成的中文语言文件你可以搜“Aseprite 中文语言文件”找到。但要注意版本对应不同版本的 Aseprite 键可能略有增减。我的做法是拿一份现成的中文 JSON和当前版本的en.json做对比看看有没有缺失的键。缺失的就补上多出来的就删掉。这样能保证语言文件和程序完全匹配不会出现某些地方显示英文或者显示键名的情况。5.2 替换语言文件并切换界面语言把准备好的zh.json放到data\strings目录下。然后打开 Aseprite进入Edit Preferences General在 Language 下拉框里应该就能看到“中文”或者“Chinese”选项。选它界面就会变成中文。如果下拉框里没有出现中文选项说明语言文件没被识别。检查两点一是文件名必须是zh.json不能是zh-CN.json之类的二是 JSON 格式必须正确不能有语法错误。可以用在线的 JSON 校验工具检查一下。切换语言后如果发现某些菜单还是英文说明对应的键在zh.json里缺失。这时候你可以对照en.json找到缺失的键补上中文翻译。这是一个细活但做一次就一劳永逸。5.3 让汉化更彻底处理内置脚本和提示Aseprite 除了界面菜单还有一些内置的脚本和提示信息。这些文字有些也在语言文件里有些则硬编码在脚本中。对于语言文件覆盖不到的部分如果你确实需要可以找到对应的脚本文件手动改。但我的建议是核心界面汉化到位就够用了没必要追求 100% 全覆盖因为有些提示信息出现频率极低花大量时间改性价比不高。另外Aseprite 支持扩展和脚本如果你装了第三方扩展那些扩展的界面文字通常不在主语言文件里需要单独处理。这个就看你实际用不用了。6. 常见问题与排查技巧实录6.1 编译阶段的典型报错与解决我把编译过程中可能遇到的问题整理成一张表方便对照排查问题现象可能原因解决办法CMake 配置时报找不到编译器没在 VS 命令行工具里执行用 x64 Native Tools Command Prompt下载依赖卡住不动网络连不上 GitHub配置代理或换镜像源编译中途报写入失败磁盘空间不足清理空间至少留 15GB报找不到某个头文件子模块没拉全执行 git submodule update --init --recursive链接时报符号重复定义依赖库版本冲突删掉 build 目录重新配置这些是我自己遇到过的还有一些是社区里别人反馈的。核心思路就是看错误信息定位是配置阶段还是编译阶段还是链接阶段然后针对性处理。6.2 汉化后的显示问题与修复汉化之后可能遇到的问题是界面部分中文部分英文或者中文显示成方块。前者是语言文件缺键补上就行。后者是字体问题Aseprite 默认字体可能不含中文字形。解决办法是在设置里换一个支持中文的字体比如“微软雅黑”或“思源黑体”。还有一个情况是切换语言后程序崩溃。这通常是 JSON 文件格式错误导致的比如多了个逗号、少了引号。用 JSON 校验工具过一遍就能发现。6.3 版本更新后如何快速跟进官方更新后你的旧版汉化文件可能不匹配。这时候不用重新走一遍完整流程只需要拉取最新源码重新编译。用新的en.json和你的zh.json对比补上新增的键。把更新后的zh.json放到新版本的data\strings目录。因为编译流程已经跑通过一次环境都配好了第二次会快很多。这也是自己编译的好处升级路径清晰不用等别人发新版。7. 一些实操心得和边界提醒编译 Aseprite 这件事第一次做确实会花点时间但跑通之后你会发现这套方法不只适用于 Aseprite很多开源 C 项目都是类似的流程拉源码、配 CMake、编译、替换资源文件。掌握一次以后遇到类似需求就不慌了。我个人的体会是最耗时的部分不是编译本身而是环境配置和依赖下载。把这两块搞定后面就是等。所以如果你打算动手建议先花时间把 Visual Studio、CMake、Git 这些装好网络环境也提前确认别等到编译到一半才发现下不动依赖。另外再强调一下边界自己编译用于个人学习和研究没问题但不要拿去传播成品或者用于商业用途。Aseprite 官方在售支持正版是对开发者最好的鼓励。我们这里讨论的是“自己动手、来源可控”的技术流程这个定位要清楚。最后分享一个小技巧如果你只是想要中文界面又不想编译其实可以看看官方是否已经内置了中文语言包。有些版本的语言文件里已经包含了zh.json只是默认没启用。去设置里翻一下语言选项说不定直接就能切。如果没有再走编译这条路也不迟。
返回列表