
1. 从下载开源电气软件到决定自己动手汉化做电气设计的同行应该都有这种经历想找一个免费、跨平台、能画电气原理图的软件翻遍全网发现要么是商业软件的破解版要么是功能残缺的免费版。后来我接触到QElectroTech这个开源电气软件算是把我从老旧的盗版CAD工具里解放了出来。软件本身免费开源原理图、元件库、报表导出都做得有模有样但它一直存在一个痛点——汉化不彻底。界面上中英文混杂很多二级菜单和设置项还是英文电气符号库里的图例说明更是大段大段的外文。对英文不好的工程师来说光是把一个端子连接器的属性配明白就得来回查词典。所以就动了汉化的念头。本来以为就是个翻译活真正做起来才发现QElectroTech的本地化工作牵扯到Qt框架的翻译机制、元件库的元数据、图纸模板的文本结构这几个层面。这篇文章把我整个汉化过程拆开来讲包括我踩过的坑、走弯路后总结出的正确操作顺序以及针对电气专业术语的处理思路。无论你是想自己汉化一份来用还是想给项目提交中文翻译贡献都能从中找到可以直接照搬的办法。先说结论QElectroTech的汉化不是一个单一动作它至少要覆盖四条线——程序界面、元件库项目、图纸标题栏模板、帮助文档。多数人只盯着界面翻译结果做完后打开软件确实菜单变中文了但调取一个接触器符号时符号属性框里还是满屏英文。这个完整度差异恰恰是汉化质量的真正分水岭。2. 看清QElectroTech的软件构成才能确定汉化的正确下手位置2.1 不搞懂模块关系汉化就会顾此失彼QElectroTech从用户视角看是一个软件实际上可以拆成几个独立又互相调用的部分主程序负责原理图绘制逻辑元件库管理器负责管理和预览各种电气符号导出模块负责生成PDF、图片等格式的报表还有一套内置的图框和标题栏系统。这些部分共用一部分翻译资源但又各自持有独立的文本来源。第一次汉化时我吃过亏。当时只翻译了主程序的翻译文件启动软件后菜单栏确实变成了中文但当我进入元件编辑器去创建自定义符号时所有工具提示和属性标签又回到了英文。后来才意识到QElectroTech在源码层面分成了多个模块不同模块拥有自己的翻译文件。如果只处理了主程序的翻译条目其他模块就会回退到默认语言。这是个特别容易忽略的环节。2.2 从技术栈推断汉化路径QElectroTech是典型的C和Qt框架项目这一点对汉化工作来说是巨大的利好。Qt自带了一套非常成熟且规范的国际化和本地化机制开发者在代码里用tr()函数包住可翻译字符串编译时生成翻译源文件通过Qt Linguist工具可以逐一翻译最后发布为轻量级的二进制翻译文件。这意味着汉化QElectroTech并不需要反编译可执行程序也不需要去改动二进制里的字符串只要处理翻译源文件并重新生成翻译包就能完成界面的中文化。这基本决定了整个汉化工程的操作逻辑站在Qt翻译机制的轨道上做工作而不是靠暴力替换字符串。理解了这一点后面所有步骤都有了依据。很多新手上来就搜“QElectroTech汉化补丁”下载别人打包好的文件直接覆盖但这只能解决英文界面的表层问题一旦升级版本或安装新元件库汉化就会失效甚至报错。自己掌握翻译文件的生成和更新方法才是一劳永逸的做法。3. Qt多语言机制与QElectroTech的翻译文件原理篇3.1 tr()、ts与qm三者的关系Qt应用的本地化工作流可以概括为一条链开发者在源码中调用tr(Text)标记需要翻译的字符串lupdate工具扫描源码把所有这些字符串抽取到一个.ts文件里翻译人员用Qt Linguist打开.ts文件进行逐条翻译最后用lrelease工具把.ts编译成.qm文件程序运行时加载.qm实现界面切换语言。打个比方.ts文件是双语对照表里面每一行记录着英文源文本、中文译文以及这个字符串在源码中的位置.qm文件则是把对照表压缩成程序能快速读取的“字典”。QElectroTech在运行时按当前系统语言去查找对应的.qm文件找到就加载找不到就显示开发时写死的默认语言。明白了这条链之后汉化QElectroTech的核心任务就清晰了获取它的翻译源文件补齐或修正中文条目编译成.qm文件放回正确路径。3.2 QElectroTech里翻译文件的实际分布QElectroTech的翻译文件通常叫qelectrotech_zh_CN.ts这样的格式后缀里“zh_CN”代表简体中文。源码仓库里有一个专门存放翻译文件的目录不同的发布版本、不同的操作系统安装包这个路径可能略有差异。Linux下常见位置是在安装目录的share/qelectrotech/translations下面Windows版本则通常放在安装目录的translations子目录里。需要特别注意的是QElectroTech不止一个.ts文件。主程序、元件编辑器、以及其他辅助模块各自可能有独立的翻译文件。动手之前先把自己系统里现有的翻译文件全部列出来搞清楚每一份对应哪个模块这一步能省下后续大量的排查时间。3.3 中文翻译文件缺失时会怎样当软件找不到中文翻译文件的时候界面会用源码里默认的语言显示。QElectroTech这个项目由法国开发者发起很多历史遗留字符串的默认语言其实是法语所以部分界面会出现既不是英文也不是中文的情况。这也是很多国内用户觉得它界面“乱”的直接原因。另有部分字符串已经带上了基础中文翻译但质量参差不齐有些是机翻有些是术语不统一同一页面上“端子”和“接线柱”混着出现。这些都需要在汉化过程中逐一修正。4. 两条汉化路线的取舍改语言包还是改源码4.1 方案A只翻译语言文件生成补丁这条路线不碰源码只处理.ts和.qm文件。适合大多数普通用户因为操作风险低也不会破坏软件原有的验证机制。升级版本后只要新版本字符串没有大改旧的翻译文件往往还能复用。我个人的判断标准是只要不需要修改功能逻辑纯粹是想把界面文字变成中文方案A足够。4.2 方案B修改源码后重新编译如果目标不只是汉化还想把界面布局、默认元件库、甚至内置模板都改造成更贴合国内电气设计习惯的版本那就需要走源码编译路线。比如国内电气图纸的图框格式、标题栏字段和IEC标准符号的命名习惯与QElectroTech默认提供的模板有明显区别。这些改动光靠翻译文件做不到必须在源码层面调整。两个方案的关键差异我整理成了表方便你对号入座对比维度方案A翻译语言包方案B改源码重编译操作难度较低图形化界面对照翻译即可较高需要配置Qt编译环境升级维护版本升级后大概率可复用每次升级都要合并代码可定制范围仅界面文字界面、符号库、模板、功能逻辑均可改出问题概率低最多是翻译不显示高编译失败或运行异常需要自己排查适合人群普通电气工程师有开发能力的进阶用户或团队维护者实际做下来我发现绝大多数人需要的是方案A。但方案A有一个隐藏前提——你手里必须有一份覆盖完整的.ts文件。如果官方仓库里的中文翻译本身就不全或者压根没有中文条目那就要用lupdate工具从源码重新抽取生成一份新的.ts文件再从头翻译。这个操作会在后面实操部分详细展开。5. 手把手汉化实操从提取翻译文件到生成中文界面5.1 准备工具链无论采用方案A还是方案BQt Linguist是绕不开的工具。它是Qt官方提供的翻译编辑器在Qt的安装包中可以找到也可以单独安装。Linux发行版的软件源里通常直接用包管理器装Windows环境建议从Qt官方下载对应版本的安装包。版本不一定要追新能打开项目所用的Qt版本生成的.ts文件就行。还需要lupdate和lrelease这两个命令行工具。前者负责扫描源码生成.ts文件后者负责把.ts编译成.qm文件。在Windows上这两个工具位于Qt安装目录的bin文件夹里建议把路径加入系统环境变量后面调用会方便很多。5.2 获取翻译文件先确认你手头QElectroTech的安装版本然后去QElectroTech的官方源码仓库找到对应版本的源码包。如果你只是想补全翻译直接在源码仓库中查找translations目录把以zh_CN结尾的.ts文件取出来用。如果你要重新抽取所有可翻译字符串那就在本地把源码解压打开命令行进入源码根目录执行lupdate . -recursive -no-obsolete -ts translations/qelectrotech_zh_CN.ts这个命令会让lupdate扫描当前目录下所有源码文件把可翻译字符串抽取出来合并进指定的.ts文件。“-no-obsolete”参数的作用是移除那些在源码中已经不存在但仍然残留在.ts文件里的条目避免垃圾项越积越多。第一次执行之后打开生成的.ts文件你会发现里面有几百上千条待翻译字符串。看到数量先别慌其中大量字符串是重复或相近的很多专业词汇在不同菜单里反复出现真正需要逐一判断的远没有实际数值那么多。5.3 用Qt Linguist逐条翻译用Qt Linguist打开.ts文件界面分为三栏左侧是字符串列表按翻译状态做了颜色区分灰色未翻译、黄色已翻译、绿色已通过审查中间顶部是源文本和译文输入框下方是上下文信息和注释。翻译时有几个操作原则值得留意一是优先把“已完成”数量冲上去。不必第一遍就纠结每个术语的最终译法先把所有未翻译条目填上。因为很多条目之间存在引用关联比如某个元件的名称会被另一处说明文字引用先全部覆盖一遍后面整体核对时才能看出术语是否一致。二是利用好Qt Linguist的“短语簿”功能。对于反复出现的专业词汇比如“terminal端子”“conductor导线”“drawing图纸”可以先在短语簿里定义好标准译法。后续遇到相同源文本时Qt Linguist会自动提示可以一键套用效率提升非常明显。三是遇到带占位符的字符串要格外小心。Qt里常见类似“Cannot open %1”这种写法%1是程序运行时动态填入的文件名或路径。翻译成中文时一定要把%1保留在原位比如译为“无法打开 %1”。占位符丢了程序轻则显示异常重则崩溃。这是我踩过的真实坑检查时务必逐条确认。5.4 生成qm文件并替换所有条目翻译完毕后执行lrelease把.ts生成.qm文件lrelease translation_zh_CN.ts -qm qelectrotech_zh_CN.qm生成后把.qm文件复制到QElectroTech的语言目录。Windows一般是在安装目录下的translations文件夹Linux通常位于/usr/share/qelectrotech/translations或你编译时指定的安装前缀里。替换前建议先备份原始文件。QElectroTech的语言选择界面里选中中文重启软件此时应该能看到界面已变为中文。如果没变化优先检查文件名和目录是否严格匹配。QElectroTech对翻译文件的语言代码命名有约定比如简体中文必须是zh_CN而不是cn或zh。文件名不对程序根本不会加载。5.5 善用“发布翻译”之外的校验手段Qt Linguist的“验证”功能很多人忽略了它在“发布翻译”时能自动检查占位符是否缺失、重复以及某些非文本符号是否被误删。我在处理一份更新较少的.ts文件时偷懒没跑验证直接lrelease生成qm结果软件打开后好几处对话框直接退出。后来才定位到是一条包含两个%1的字符串被我译成了只保留一个占位符的版本。这问题从外观上看不出来非得运行时才能暴露。所以我的流程固定为Linguist里逐条翻译→跑一遍验证→回到Linguist修复所有错误和警告→再发布qm。麻烦一点但稳。6. 电气领域术语的汉化取舍这些词不要追求“直译”6.1 直接从法语习惯延续过来的术语陷阱QElectroTech由法国团队开发不少术语带有浓重的法语背景。有一部分界面字符串甚至源码里写的就是法语而不是英文。比如表示图纸内连接点的词一些版本里直接用法语的borne对应的中文应该译为“端子”而不是“边界”或“承载点”。还有表示回路连接线的词英文写作conductor法语习惯是conducteur翻译成“导线”最符合电气从业者的日常表达。这些词的共同特点是在通用词典里的含义和电气场景下的专业含义差异很大。如果机械地按字面翻译产出的中文会非常别扭甚至误导使用。正确的做法是抛开词典含义以电气行业约定俗成的术语为准。简单来说翻译电气软件的判断标准只有一个——“这个中文词会不会让一个电气工程师觉得不对味”。听起来抽象实际操作中就是个查证过程拿源词汇到国标电气术语里找对应概念再结合软件里的实际应用场景定夺。6.2 一张实用术语对照表下面是我在汉化过程中整理的常用术语表不一定绝对权威但对绝大多数电气图纸场景适用英文/法语源词推荐中文备注terminal / borne端子偶尔出现在元件属性里时也可作“连接点”conductor / conducteur导线主要指原理图中的连线schematic / schéma原理图不建议译为“示意图”diagram / diagramme电气图/图表视上下文转换element / élément元件在QElectroTech中指符号库里的电气元件folio / foliole图页对应一套图纸中的某一页project / projet工程QElectroTech中多套图纸的集合title block标题栏图纸右下角的信息框drawing frame图框存放标题栏和边框的整块区域cross-reference交叉引用表示元件在图纸间的跳转引用report / rapport报表导出统计清单connection / connexion连接导线与端子相接的位置power bus电源母线不要译成“电力总线”PLC可编程控制器保留缩写即可fuse熔断器不要译成“保险丝”其中最需要强调的是“folio”这个词。它在通用英文里表示对开页但在电气工程图纸软件里它准确指代一个编号的独立图页。QElectroTech图框里有一个字段就叫“Folio”很多汉化版本直接漏掉或音译这是不对的。处理这类专业灰色地带时我坚持的原则是凡是电气行业标准中有明确中文术语的一律用标准术语标准里没有的用业内交流中普遍通行的习惯说法连习惯说法都没有的则保留英文并在备注中说明。6.3 同一个英文单词在不同界面的差异化翻译举个例子“link”这个词在某些菜单里表示“关联”比如关联一个元件与它的引脚在另一些界面却表示“跳转链接”比如点击后跳到另一张图纸。如果全项目统一翻译成“链接”前者语义就会变得非常含混。处理办法是在Qt Linguist里观察字符串的上下文来源再结合菜单所处位置判断具体语义。所以术语表只是起点真正让翻译显得专业的是“一词多译”的判断力。简单说软件汉化不是词典替换是在做界面体验设计。一个词语在按钮上怎么呈现、在菜单里怎么呈现、在属性表里怎么呈现需要符合不同控件形态的操作直觉。这也是为什么我不建议直接套用网上现成的通用软件汉化包的原因——那些包大多不懂电气业务术语质量堪忧。7. 不只是界面把元件库和图框模板也纳入汉化范围7.1 元件库里的名称和描述文本QElectroTech的元件库文件扩展名是.elmt本质上是XML格式的文本文件。每个元件可以包含名称、分类、描述、引脚标签等可显示文本。默认元件库里大量元件的名称和描述都是法文或英文。即使主界面已经中文化调用库里的交流接触器时左侧元件列表显示的名称仍然是外文属性框里引脚的说明文字也让人看不懂。处理方式有两种。一种是直接在XML文件里把name和description字段改成中文适合只在自己电脑上使用的情况。另一种是给元件重新分类并建立自己的中文元件库这种做法适合团队使用可以彻底摆脱对原始元件库的依赖。建立团队中文元件库时要注意元件XML里的英文字段名不能改那是软件读取数据的键值改的是标签里包裹的显示文本。7.2 图框和标题栏模板的修改电气图纸必须带图框和标题栏QElectroTech允许用户自定义图框模板。模板文件是XML格式里面的公司名称、图纸名称、设计人、审核人这些字段的标题文字需要改成中文日期格式也需要调整为国内习惯的“年月日”顺序。很多用户汉化完界面后出一张图纸右下角的标题栏仍然是英文这基本等于没汉化。修改模板时建议先复制原始模板重命名为中文模板再编辑字段内容。保留原始模板的好处是方便随时对照和回退。QElectroTech的模板目录里还有一个比较隐蔽的字段——图层设置。图层的名称如“给排水”“动力”“通讯”等虽然影响的是图层分类的显示但直接决定一套图纸的专业观感我在初期汉化中差点漏掉。7.3 图纸项目本身的命名规范这一点很多人没意识到软件汉化之后新建工程时默认生成的图纸名、图层名、以及分类名仍然是硬编码的。这些是在源码级别写死的默认值单纯替换语言文件无法改变。想要默认生成的就是中文名称只能修改源码中的默认字符串并重新编译或者通过新建工程后手动重命名的变通方式解决。如果你走方案A的汉化路线需要接受这个局限。8. 汉化补丁的打包与分发让别人也能用上8.1 补丁的常见形式汉化打包最基本的形式就是直接分发.qm文件配合使用说明告诉用户应该放在哪个目录。这种形式最简单但也有个严重问题——不同版本之间翻译格式可能不兼容高版本编译的.qm放到低版本里可能加载不上或造成乱码。所以分发补丁时一定要标注清楚适配的版本号。稍微进阶一些的做法是同时提供.ts文件和使用说明。用户安装了包含对应字符串的新版本后可以自己用lrelease重新编译一份新的.qm。这样补丁就具备了跨小版本适配的能力因为即便若干新增字符串未翻译软件也会通过回退机制显示默认语言不至于直接失效。8.2 增量补丁还是全量安装包对普通分发场景我建议用增量补丁理由很简单QElectroTech的官方源码仓库会持续更新如果每次更新都让用户重新下载整个汉化安装包维护成本太高而且下载慢的镜像还会劝退用户。增量补丁由两个文件组成一个是说明文档一个是.qm文件。用户只要覆盖原目录同名文件五分钟内就能完成汉化。但也要提醒一句QElectroTech升级版本后部分界面新增了带新原文的字符串旧汉化包无法覆盖新功能界面的显示。这属于正常现象不用惊慌等空下来重新拉取新版本的.ts文件补翻即可。8.3 Windows与Linux的路径差异Windows安装版的语言文件在安装目录的translations子目录下绿色免安装版则跟随解压包路径变化。Linux下需要注意如果QElectroTech是发行版仓库里安装的语言文件位置在/usr/share目录下普通用户没有写入权限需要加sudo执行替换。不少Linux用户在汉化时卡在这里以为补丁无效实际只是文件没拷进去。另外Flathub或Snap商店渠道安装的QElectroTech则藏得更深它们在只读的沙盒目录里挂载应用文件直接改起来非常麻烦。这种情况下建议改用系统原生包或直接下载官方提供的AppImage压缩包解压后替换路径更可控。9. 汉化之后的版本跟进与开源回馈9.1 版本升级的常用操作节奏我给自己定了一个版本跟进的固定流程每次QElectroTech发布新版本后先做翻译状态对比用lupdate重新抽取最新源码中的字符串和上一版翻译文件合并打开Qt Linguist看新增了几条待翻译项若新增数量很少便当场补齐并发布新补丁若新增量很大则先发布一个对应旧版qm文件保留可用性的说明等全部翻完再发正式包。这个流程最大的好处在于不让汉化工作形成历史债务。越晚处理新版本字符串积累的未翻译文案越多一次补齐的压力越大。间隔版本太久的话有可能出现源码重构导致大量字符串上下文变化旧翻译文件里大批条目被标记为obsolete对比排查起来非常痛苦。9.2 把汉化成果贡献给项目本身既然软件本身是开源的最理想的状态其实是把中文翻译直接提交到上游官方仓库让所有中文用户都能受益。QElectroTech社区对翻译贡献普遍持欢迎态度官方维护者会审核翻译文件并合并进主线。提交方式一般是先到官方代码托管平台获取仓库地址在本地建立与上游仓库相同的分支结构修改.ts文件后发起合并请求。提交前要确认.ts文件的语言标签与翻译状态元数据一致并且没有任何验证错误否则很容易被维护者打回。我在整个汉化过程中最大的感受是本地化工作远比想象中需要耐心但一旦完成后续版本跟进反而越来越轻松。QElectroTech这款开源电气软件的底子很好功能逻辑扎实跨平台表现稳定它缺的只是让中文电气工程师顺手的那层语言外壳。花一个周末把界面、术语、元件库和模板梳理一遍换来的长期使用体验提升是非常划算的。如果你已经开始动手了记住先把术语表定下来再逐条翻这个顺序能让你少走一半弯路。