[DT]动态翻译 (DynTranslation) |
您所在的位置:网站首页 › 国家宪法日宣传活动图片 › [DT]动态翻译 (DynTranslation) |
动态翻译不是一个大众型的Mod,他负责的是针对Mod中无法通过lang/json语言文件翻译汉化的硬编码部分提供简洁有效的翻译,便于更新和修改,也适用于整合包进行特殊的操作。 动态翻译通过名称映射表来映射所有游戏内被绘制的字符,从而达到替换/翻译的目标。
在进行Mod本地化 的时候,有时会遇到部分文本的硬编码无法简单国际化的问题,导致国际化工作比较困难,通常需要进行对源文件的注入进行修改,一方面对源文件造成了破坏性的改动,而且进行更新后又需要重复工作。
这个Mod的对象是Mod汉化人员,和对应的使用玩家,主要针对部分国际化不完善的Mod,提供流畅的汉化体验。
同时在一些娱乐向方面,我们需要替换游戏内文本来达到一些特殊效果,这时候也需要对游戏内文本进行修改。
置顶更新内容 对应于原版1.16.x Mod版本1.3.5 beta 以及之后版本更新物品的提示框联网翻译功能; 使用神经翻译在主流Mod的英译中集合上进行训练微调,在Minecraft相关语料集上达到主流翻译器水平; 感谢CFPA提供的语料库和参与翻译的所有译者。 在线API使用 CC BY-NC-SA 4.0 协议发布。 现阶段功能处于测试阶段,会对网络访问进行限制(每小时360次的访问),作者不保证翻译服务的稳定性,如有疑问请即时反馈。 更新了新的数字匹配,在避免分词的情况下进行包含变动数字的快速匹配替换。 使用方法 悬浮指针在物品上,按住默认键位Alt以进行联网翻译,改功能无法对创造模式搜索栏进行翻译,因为他拦截了键盘事件。 DynTranslation替换的时间节点 DynTranslation通过映射表文件进行运行时文本替换来达到以上效果。
通过介绍时间节点来避免不必要的问题产生,动态翻译在进行替换时,需要在Forge完成初始化时才能锁定配置文件位置,所以在初始化完成前无法加载配置文件,同时这样做也是减少CPU空转时间,因为在加载时间点会产生大量动态数字,造成翻译队列阻塞,过高的消耗CPU资源。 所以在初始化完成前,动态翻译本身不能替换加载界面的文本。
替换方法 通过简单的文本替换,这里采用了json文件作为载体,对映射文件进行读取;
关于映射文件命名如下: 父文件夹:位于Mod的config文件夹下,并且会创建子文件夹名为dyntranslation; 子文件命名:所有子文件,必须以形如 dyntranslation_{name}.json 的规范命名,其中{name}为所有系统文件可用字符。
替换内容:替换内容以 json 的标准格式为准的Map嵌套形式。 例如: { //容器(GUI)包名,“*”表示没有在任何容器(GUI)中,大部分在Tooltip中 "*": { "§f腐肉§r": "§d腐肉§r", " 盔甲": "", "§7穿在腿上时:": "§8穿在腿上时" }, //这里表示字符显示在GuiEnchantment中 "net.minecraft.client.gui.GuiEnchantment": { "附魔": "附魔" }}
性能影响 由于是每帧替换,所以其性能影响和帧数也是成正比的,最后的影响结果是线性的。其中的IO操作和分词耗时操作放在其他线程中,最终的性能影响来自于: map的存取性能 map的大小 线程的创建销毁时间 新词汇的产生速度过快导致的队列阻塞 后两者无法通过人工进行控制,所以我们关注前两者,在jdk1.8的map实现中HashMap的性能是最高的,所以通过拷贝的方式防止使用性能较低的线程安全Map,在实测中新增加的内容打开分词后的平均影响如下图: 平均值为3099.375,量纲为纳秒,小于毫秒的数量级,可以认为在稀疏操作下的影响可以忽略不记。 具体内容请查看本站教程 蓝奏云下载地址: https://nowandfuture.lanzoui.com/b09fa75kh 此地址由作者提供。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |