[DT]动态翻译 (DynTranslation)
红票3 (100%)黑票 (0%)
模组属性评比

距离显示结果还剩8票~

路过的这位少侠,你觉得这款Mod怎么样,可否愿意来评一评它呢?登录并评比
更新日志
  • 暂无日志..

历史编辑记录更多
    管理组申请

      暂无管理组..

    编辑组申请

      暂无编辑组..

    开发组申请

      暂无开发组..

    活跃
    [DT]

    动态翻译

    DynTranslation

    • 支持平台: JAVA版 (JAVA Edition)
    • 运作方式: Forge
    • 运行环境: 客户端必装, 服务端无效
    • 作者/开发团队: nowandfuture
    • 收录时间: 9月前
    • 编辑次数: 8次
    • 最后编辑: 11天前
    • 最后推荐: 11天前
    • 模组标签:
    • 支持的MC版本:

    0.0

    无人问津

    昨日指数: 82
    昨日平均指数: 256.639

    2.71万

    总浏览

    --

    资料填充率


    下载本模组
    • 动态翻译不是一个大众型的mod,他负责的是针对mod中无法通过lang/json语言文件翻译汉化的硬编码部分提供简洁有效的翻译,便于更新和修改,也适用于整合包进行特殊的操作。

      动态翻译通过名称映射表来映射所有游戏内被绘制的字符,从而达到替换/翻译的目标。


      [DT]动态翻译 (DynTranslation)-第1张图片

       

       

      在进行mod国际化 的时候,有时会遇到部分文本的硬编码无法简单国际化的问题,导致国际化工作比较困难,通常需要进行对源文件的注入进行修改,一方面对源文件造成了破坏性的改动,而且进行更新后又需要重复工作。

       

      这个mod的对象是mod汉化人员,和对应的使用玩家,主要针对部分国际化不完善的mod,提供流畅的汉化体验。

       

      同时在一些娱乐向方面,我们需要替换游戏内文本来达到一些特殊效果,这时候也需要对游戏内文本进行修改。

       

      前置

      1.12.2 无需前置

      1.15.2 以上版本 需要 MixinBootstrap (可在本站搜索)


      DynTranslation替换的时间节点

      DynTranslation通过映射表文件进行运行时文本替换来达到以上效果。

       

      通过介绍时间节点来避免不必要的问题产生,动态翻译在进行替换时,需要在Forge完成初始化时才能锁定配置文件位置,所以在初始化完成前无法加载配置文件,同时这样做也是减少CPU空转时间,因为在加载时间点会产生大量动态数字,造成翻译队列阻塞,过高的消耗CPU资源。


      所以在初始化完成前,动态翻译本身不能替换加载界面的文本。

       

      替换方法

      通过简单的文本替换,这里采用了json文件作为载体,对映射文件进行读取;

       

      关于映射文件命名如下:

      父文件夹:位于mod的config文件夹下,并且会创建子文件夹名为dyntranslation

      子文件命名:所有子文件,必须以形如 dyntranslation_{name}.json 的规范命名,其中{name}为所有系统文件可用字符。

      [DT]动态翻译 (DynTranslation)-第2张图片 

       

      替换内容:替换内容以 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,在实测中新增加的内容打开分词后的平均影响如下图:[DT]动态翻译 (DynTranslation)-第3张图片

      平均值为3099.375,量纲为纳秒,小于毫秒的数量级,可以认为在稀疏操作下的影响可以忽略不记。


      具体内容请查看本站教程

    • 动态翻译教程
       1281次浏览6月前

    短评加载中..