ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Aras Innovator 11-sp9汉化实战:从数据库到界面全面中文化指南

Aras Innovator 11-sp9汉化实战:从数据库到界面全面中文化指南 简介Aras Innovator 11 SP9 汉化补丁是为使用该开源PLM系统的国内团队定制的本地化资源包适合需要中文界面以降低学习门槛、提升操作效率的实施人员与最终用户。补丁针对11 SP9版本提供完整的中文语言文件覆盖菜单、按钮、提示信息等核心界面元素同时包含批量导入脚本与语言工具可简化部署流程。压缩包共196个文件以xml本地化数据为主辅以bat自动导入脚本、exe语言处理程序及少量配置与动态库文件整体仅856KB轻量易用。目前已有599人学习下载。借助该补丁用户可彻底摆脱英文界面的束缚直接使用中文完成产品结构管理、变更控制、项目协同等工作不仅能显著缩短上手周期还能减少因语言理解偏差造成的操作失误是Aras 11 SP9本土化部署中极为实用的一站式语言解决方案。 这活儿我太熟了。前阵子刚帮一家做装备制造的企业把Aras Innovator 11-sp9的界面从满屏英文折腾成清爽中文整个过程中间还走了不少弯路。今天把这套汉化思路和实操细节整理出来给同样被Aras多语言机制搞得头疼的朋友一个抓手。先明确一个现实Aras Innovator官方是不提供简体中文语言包的11-sp9这套老版本更是如此。市面上流传的所谓“汉化补丁”本质上不是官方出的安装包而是实施方或第三方团队基于Aras的多语言框架自己整理的一套翻译资源。你完全可以自己做也可以基于别人放出的补丁二次修改。关键在于你得先搞清楚它的多语言机制藏在哪否则就算拿到补丁也只会无脑导入一旦出问题就抓瞎。我的建议是别把汉化当成“装个软件”把它当成一次“数据更新资源替换”的运维操作。下面我会从机制原理到实操步骤完整拆一遍。1. 汉化前先搞懂Aras 11-sp9的多语言机制到底藏在哪里很多人第一次接触Aras汉化第一反应是去安装目录找语言文件。这方向没错但只对了一小半。Aras Innovator的界面文本来源分三个层级弄混了就会陷入“改了没反应”或者“这里中文那里英文”的尴尬境地。1.1 三个文本来源层级第一层数据库的String表。这是最核心的部分。Aras的底层数据库通常是SQL Server里有专门的String表存储着大量界面标签、菜单名称、按钮文字对应的多语言键值。它的结构大致是一个字符串标识符加上不同locale_id对应的翻译值。汉化补丁的核心内容之一就是往这张表里批量更新或插入简体中文的翻译条目。第二层客户端和Web前端的资源文件。经典客户端Windows桌面客户端和一些Web页面控件有部分文本不经过数据库String表而是直接读资源文件比如.NET的resx文件或者样式表里写死的文字。这一层如果你只改数据库就会漏掉——最常见的表现就是登录界面、左侧导航部分文字、右键菜单的某些选项怎么切语言都是英文。第三层XSL样式表和业务数据。Aras的列表视图、表单布局很多是通过XSL渲染的部分标题、提示文本直接写在XSL模板里。另外管理员在后台创建的ItemType名称、属性标签、工作流邮件模板这些属于业务数据它们的文本存在数据库的业务表里和String表机制还不一样。1.2 官方的locale体系Aras自身是支持多语言切换的安装包里带了英语、法语、德语、日语、西班牙语等语言资源。简体中文之所以没有纯粹是官方没做。但它的语言框架是通用的只要你往String表里补齐简体中文一般locale_id对应的是类似于zh-CN的记录不同版本命名可能不同的翻译值再在用户配置或客户端语言选择里切到中文系统就能正常加载。所以你要做的“汉化补丁”本质上就是两个部分一份完整的String表中文翻译数据加一份需要覆盖的资源/样式表文件清单。注意不同Service Pack版本比如sp8和sp9的String表结构、内置条目数量是有差异的数据库表结构也可能有细微变化。汉化补丁必须严格匹配11-sp9版本混用sp10或12.0的补丁轻则部分翻译不生效重则报错。2. 核心实操用SQL脚本批量注入中文翻译现在进入正题。不管你是拿到现成的补丁文件还是想自己在原版基础上做一套完整汉化都得跟数据库打交道。以下是我在11-sp9上实际验证过的流程。2.1 先定位基础数据登录SQL Server找到Aras Innovator对应的主数据库一般是Innovator库。先查一下语言环境表里有没有简体中文SELECT * FROM [Innovator].[dbo].[Locale] WHERE [locale] LIKE %zh% OR [locale] LIKE %cn%如果查询结果为空说明当前数据库根本没有创建中文语言环境记录需要先插入一条INSERT INTO [Innovator].[dbo].[Locale] ([id], [locale], [name], [core], [keyed_name]) VALUES (你的唯一ID, zh-CN, Chinese (Simplified), 1, Chinese (Simplified))这里的id需要你自己生成一个GUID格式的唯一值。如果已经有这条记录了跳过插入直接查String表里中文条目数量SELECT COUNT(*) FROM [Innovator].[dbo].[String] WHERE [locale_id] 刚才查到的Locale记录ID如果count为0说明一个中文翻译都没有接下来要做批量插入如果已经有部分数据那你可以只做增量更新覆盖避免破坏已有内容。2.2 批量更新的正确姿势Aras的String表数据量很大手工一条条update不现实。一般的汉化补丁SQL脚本长这样-- 备份目标表再做更新永远是好习惯 SELECT * INTO String_Backup_2024 FROM [Innovator].[dbo].[String]然后针对每条英文记录找到对应的中文翻译用update语句更新。比如UPDATE [Innovator].[dbo].[String] SET [value] N新建 WHERE [key] NNew AND [locale_id] 中文Locale的ID但这样写很累。实际成熟的汉化补丁脚本通常是用临时表把中英文对照导入再一次性join更新。我自己更推荐的方式是准备一个翻译对照表Excel或者CSV通过SSMS的导入功能先把数据导进临时表再执行merge更新MERGE INTO [Innovator].[dbo].[String] AS target USING [TempTranslate] AS source ON target.[key] source.[key] AND target.[locale_id] source.[locale_id] WHEN MATCHED THEN UPDATE SET target.[value] source.[value] WHEN NOT MATCHED THEN INSERT ([id], [locale_id], [key], [value], [is_comment], [created_on], [...]) VALUES (NEWID(), source.[locale_id], source.[key], source.[value], 0, GETDATE(), ...);这里有几个坑必须提醒给value赋值时一定要加N前缀它就是为Unicode准备的。如果忘记加N中文写入后直接变乱码或问号。排序规则要统一。如果库里字段的collation本身对中文不友好写入时可能会报错或截断。String表里的value有些带格式化占位符比如{0}、{1}翻译的时候不能删掉这些占位符否则界面显示会缺参数甚至崩溃。有些英文条目是多义词脱离上下文盲翻会出笑话。比如“Type”在Aras里通常指ItemType类型但某些场景指“打字”。翻译补丁的质量差异就在这种细枝末节上。2.3 更新完必须做的缓存清理这个步骤极其容易漏。Aras有客户端缓存和服务端缓存String表更新后不清理缓存的话界面看到的还是旧英文或者空值。操作路径是客户端关闭Innovator客户端删除本地缓存目录一般在%ProgramData%\Aras\Innovator\下的ClientCache或类似目录重新登录。浏览器端清理浏览器缓存之外还要在Innovator登录页面的工具栏里有刷新缓存选项有些版本在管理员工具里可以直接执行Clear Cache。服务端IIS回收一下应用程序池让ASP.NET进程重新加载资源。这一套操作下来基本第一层的文本就能变成中文了。3. 突破第二层XSL样式和资源文件里“漏网”的英文数据库翻译完了只是完成了一半。真正让汉化看起来专业、不露馅的是处理那些不经过String表的硬编码文本。3.1 XSL样式表修改Aras 11-sp9经典客户端的很多表单布局用XSL渲染比如我的桌面、部分查询结果的表格表头、右键菜单的动作名称。这些文本很多是直接写在XSL文件里的。它们的存放位置一般在服务端安装目录的..\Innovator\Client\Themes\或..\Innovator\Styles\下不同模块的XSL分散在对应子目录。网上流传的汉化补丁如果比较完整会带一份覆盖用的XSL文件列表你只需要按文件路径覆盖到服务端对应目录然后重新加载客户端。如果你要自己改用文本编辑器搜索英文关键词找到对应的td或label里的文字直接替换成中文即可。这里要注意改XSL之前一定要先备份原文件因为Aras升级Service Pack时很可能覆盖这些文件维护基线很重要。3.2 客户端resx资源文件经典客户端Windows窗体客户端本身有些内置菜单比如主菜单的File、Tools、Help这些走的是.NET的resx资源文件。汉化方式是用ILSpy或Visual Studio打开客户端的程序集找到对应的resx文件翻译后重新编译或者直接修改客户端的Language配置目录下已有的语言资源文件。这个操作相对硬核普通运维可能搞不定。实际项目中我经常看到的情况是主界面、表单界面中文了但客户端顶部菜单栏还有个别菜单项是英文。很多团队选择忽略因为确实影响不大。如果你追求极致那就得按这个路子来先确认客户端是.NET Framework版本用工具反编译定位资源翻译后rebuild再替换安装目录下的程序集。这条路的代价是需要开发人员介入而且Aras升级后要重做维护成本较高。我的个人评估是如果只是内部使用改数据库XSL就覆盖95%了resx里的残留英文可以在培训时口头说明不值得为了几个菜单项投入反编译改造的工程量。3.3 中文字体问题改完这些之后如果你发现在某些报表预览、图表导出、PDF生成时中文变成方框或者乱码那就不是翻译的问题是服务器缺中文字体。Aras的报表引擎特别是老版本常用的SSRS或水晶报表组件在生成PDF时需要操作系统里有对应字体文件。解决办法很粗暴但有效在运行Aras报表服务的Windows服务器上安装中文字体包比如宋体、微软雅黑按服务器授权许可来装完重启报表服务和IIS。提醒一句这一步最容易在项目验收时被翻出来。业务人员打开一张导出的报表全是“□□□”然后整个项目就打上了“汉化不全”的标签。提前把字体装好能省无数沟通成本。4. 别漏掉业务数据ItemType属性和工作流邮件模板界面翻译完了还有一个容易被忽略的领域业务人员自己在Aras里创建的ItemType、属性、工作流邮件通知模板。这些东西的文字默认存在业务表里不是String表管的必须单独处理。4.1 ItemType属性显示名称假设你们在系统里建了一个叫“Supplier”的ItemType它的属性“Address”“ContactName”在表单上默认显示英文。要汉化这些需要管理员进入Innovator的ItemType配置界面逐个属性的“Label”字段改成中文同时把多语言支持下对应的语言条目补上。操作路径是管理程序 → ItemTypes → 找到目标ItemType → Properties标签页 → 选中属性 → 编辑Label。如果你的系统开了多语言还能在Label属性旁给不同locale单独设置翻译值。这一步是纯手工活但确实躲不掉。好在一般企业自建的ItemType数量有限花半天时间就能处理完。4.2 工作流邮件通知模板Aras的流程邮件通知默认模板也是英文的业务人员收到邮件看到满屏英文体验很差。这些模板存放在管理程序的“Emails”或“Notification”相关配置里可以直接在界面上编辑HTML内容。我的做法是选一个最常用的通知类型把英文HTML整体替换成中文HTML模板保留里面的占位符变量如ItemNumber、CreatedByName改完以后所有走这条通知的邮件都会用新模板。注意不要误删变量否则邮件里就会出现空值或者原样输出标签。4.3 历史数据里的英文内容如果系统已经跑了一段时间历史流程历史任务里存了英文的名称字段这部分即使切了语言也还是英文。这种情况不用强求因为业务数据本身的名称属性就是英文翻译成中文反而会跟原数据不一致。我们上线时跟业务部门达成的共识是历史数据保留英文原样新数据进入系统前由录入人员使用中文填写系统界面类文本全部汉化。这个取舍很重要提前讲清楚就不会有人拿一条旧记录来质疑“为什么这里还是英文”。5. 汉化补丁的打包、验证和上线流程最后说一下补丁本身怎么组织、怎么测试、怎么发布让这套汉化能在团队里安全落地。5.1 补丁包的文件结构一份完整的Aras 11-sp9汉化补丁应该包含SQL目录String表更新脚本、Locale插入脚本、可选的恢复/卸载脚本。XSL目录需要覆盖的样式表文件目录层级跟服务端安装路径一致。Client目录替换客户端资源文件的可选文件。Docs目录变更说明、覆盖文件清单、验证Checklist。按这个结构整理的好处是交付给同事或客户时对方知道先跑什么、再覆盖什么、最后验证什么不用你全程手把手指导。5.2 验证Checklist上线前我建议按下面这个清单逐项过一遍每项都实际点开看而不是只截图登录界面能否正常显示中文语言切换器是否出现中文选项。主导航和仪表盘左侧菜单、欢迎页文字全中文。表单视图打开各核心ItemType的创建和编辑表单字段标签是否中文。右键菜单列表上右键菜单项是否中文。查询/搜索框内置查询命令、快捷搜索提示是否中文。工作流发起流程、审批任务邮件通知是否中文模板。报表导出PDF后中文是否正常显示。权限和角色权限配置界面是否正常中文。每项如果有遗漏就回到对应的层级去排查是String表没命中还是XSL没覆盖还是缓存没刷新。按这个分层思路定位基本十分钟内能锁定问题。5.3 上线顺序建议我踩过的坑是直接在正式环境上跑脚本结果某个条目Key冲突导致页面报错。稳重一点的做法是先在测试环境完整跑一遍全部SQL和文件覆盖确认无报错、无异常再在正式环境做同样操作。SQL部分务必提前备份String表和相关表文件覆盖部分也先备份原文件。这样万一出问题可以一键回滚。另外如果你们后续有升级计划升级到12.0或更高版本时这套补丁大概率不能直接复用但里面的翻译对照表是宝贵资产可以导出保留给新版本的汉化工作打个底子。6. 关于补丁的维护我再说几句汉化不是一锤子买卖。Aras里的ItemType、属性、流程模板会随业务推进不断增加每新增一个属性或模板就可能有新的英文文本需要翻译。我们现在的做法是把翻译对照表放进一个Excel放共享盘每次新增业务对象时实施人员顺手把新出现的界面文本补充进去积累一段时间后就形成了企业自己的标准词库。这样做的另一个好处是同一个英文术语在全系统里的翻译能保持一致。比如“Part”统一译成“零件”而不是有的地方“零件”、有的地方“部件”这种一致性对制造业客户尤其重要很多质量体系审核会盯着术语规范。11-sp9虽然已经算老版本了但国内存量项目还是不少。希望这篇拆解对正在和它较劲的兄弟有点帮助。特别是如果你拿到的汉化补丁只带SQL脚本那请你一定记得验证一下XSL和资源文件那一层——大多数“汉化不彻底”的投诉源头都在那里。本文还有配套的精品资源点击获取
返回列表