BLinguist | |
---|---|
BLinguist开启后的主菜单(中文) | |
基本信息 | |
作者 | yyc12345, jxpxxzj, 2jjy |
适用于 | Ballance |
依赖 | BML |
发布时间 | 2023年4月30日 |
项目地址 | GitHub |
开发状态 | 开发停滞 |
授权方式 | GPL v3 |
BLinguist是由yyc12345制作的一款非覆盖文件式的,基于BML的Ballance多语言Mod。言下之意,其不仅可以替代原本中文版的功能,还能支持更多语言,并大幅减少用户开启关闭中文版功能所需的心智负担,对部分完全不认识英文的新手较为友好。
目录
历史
BLinguist的开发始于Ballance Discord群组中的一个实际问题需求。一位使用阿拉伯语言的玩家表达了对Ballance这款游戏的喜爱,但同时也表示他想把这款游戏推荐给他的朋友,但他的朋友并不怎么认识英文,想问问有没有阿拉伯语的Ballance。
yyc12345在回复中认识到这里有两种开发方案,一种是基于原生Ballance所用的位图字体的方式,通过将贴图改为阿拉伯语,然后重新编排各个按钮的字符数据的方式,来显示阿拉伯语。然阿拉伯语具有从右向左的书写特性,且阿拉伯语在渲染的时候并非单个单个字符渲染,而是要高度考虑前后字符的连笔。因此使用此种方法的结果非常差,输出的字符就是单个阿拉伯语的字符的拙劣拼接,且书写方向错误。
那么就只剩下第二种方案了,即使用当初jxpxxzj与2jjy制作中文版的方式,来支持阿拉伯语。通过显示调用Text Display Building Block来直接调用系统所用的字符串渲染函数,解决了从右向左书写,以及连笔书写等诸多上个方法存在的问题。唯一的缺点则是大量的Text Display会造成卡顿,对竞速党不友好。接下来yyc12345首先分析了当初中文版补丁的结构布局,找到了几个关键的数据数组,以及核心翻译脚本。通过LocaleEmulator设定阿拉伯语的编码,然后启动Virtools修改关键数据数组(因为Virtools数据展示方式依赖本机编码,需要用LocaleEmulator模拟本机编码才能正常显示阿拉伯语),接着用同样的方式启动Ballance加载修改好的中文版补丁,并观察到可以正确显示阿拉伯语。遂将补丁发送给对方,然对方的反馈则是显示的是???字符。这与预期不符。yyc12345分析认为是对方编码可能不正确,因为使用阿拉伯语的有很多国家,可能是使用的编码不够细化导致的。
为了解决对方显示???的问题,也为了简化自己修改补丁文件的难度,yyc12345在考虑到多数Ballance都已安装BML的情况下,决定制作BLinguist,在游戏内通过BML动态修改游戏字符,来达到无需安装任何补丁文件就可以切换语言的特性。首先是使用由2jjy合作开发的Virtools Script Deobfuscation破解了2jjy自己写的核心翻译脚本的加密。然后解读其连线,并将其逻辑反映到BML Mod代码中。保证了BLinguist在逻辑上与原版中文版没有任何区别。
BLinguist在之后通过LocaleEmulator的测试中,没有任何问题,然发送给对方后对方仍然显示???,遂推断对方的系统根本就不支持显示阿拉伯语字符,但对方至今仍未回复其系统编码的情况。
特性
BLinguist可以在第一次启动时自动检测并尝试推断你想要使用的语言,检测是根据你当前使用的Windows代码页,配合一个硬编码的常用语言代码页表来实现的。不过无需担心,倘若检测失败,您也可以手动设定语言。BLinguist目前支持4种语言:
- 英语(English):作为默认语言,当检测语言失败时,会默认显示英语。
- 中文(Chinese):文本来源自jxpxxzj&2jjy汉化版。
- 日语(Japanese):机翻。
- 阿拉伯语(Arabic):机翻。来源请查看历史章节。
支持设定显示语言文本的大小与字体,比原版中文版固定的大小和字体更近一步。
BLinguist与原版中文版一致,翻译了第一关的教程,以及游戏内绝大多数的菜单文本,BML添加的菜单除外,例如Mod选项页面,自制地图加载页面等。
可以尝试与FontCraft共享字体设置(需要BLinguist和FontCraft均高于一定版本),但实际使用时会存在一定bug,因为即使两者设置一致,BLinguist显示的字体也不和游戏内字体保持同样的大小。
设置
Mod具有如下设置:
- Core - Enable:控制Mod的全局开启与关闭。由于涉及到修改游戏内脚本,需要重启才可以应用。默认关闭以照顾竞速党。关闭后不会影响帧率。
- Core - Language:BLinguist所用的语言标识符。可填内容为上文介绍支持语言中括号内的英文内容,例如Chinese,English等。
- Font - FontName:BLinguist所用字体的名称。
- Font - FontSize:BLinguist所用字体的大小。
- Font - FontCraft:尝试与FontCraft同步字体设置。当同步成功的时候,上述两项字体设置被忽略。
下载
- 从GitHub编译下载
改进翻译
如果希望改进此Mod的翻译,请前往GitHub工程,并导航到BLinguist/Languages
,翻译UI以及Tutorial中的对应语言文本。这些文本以UTF8格式存储。
如若希望添加新语言支持,请前往GitHub工程提出请求,并提供与此语言相关的常见Windows代码页数据,开发者添加对应语言后,即可按照改进翻译的方式进行操作。