方舟生存进化吧 关注:372,533贴子:5,925,574
  • 9回复贴,共1

谈一谈这游戏里翻译后会出bug的各种文本

取消只看楼主收藏回复

发这个帖子的目的是提醒某些想要修改语言文件的吧友,有些文本不能翻译,一翻译就会出现bug,这游戏里的好多中文bug都是由于官方的语言文件把参数和文本混在了一起,导致后来的翻译者区分不出两者而把参数给汉化成了其他语言,导致游戏代码在传参时识别不出来翻译后的参数从而产生了bug,这里我盘点一下各种不能翻译,一旦翻译就会出现bug的文本,提醒一下想自己修改语言文件的玩家,修改语言文件的具体方法我之前帖子说过了。(注意,这个帖子里提到的这些文本的行数会随着语言文件的更新而改变,因此我这时侯说的行数有可能在未来并不准确)




IP属地:甘肃来自Android客户端1楼2022-06-04 14:34回复
    1.语言文件里的8625到8627这三行不能翻译,一旦翻译就会出现孤岛困难飞升变简单的bug
    SetBossDifficultyIndex0
    SetBossDifficultyIndex1
    SetBossDifficultyIndex2


    IP属地:甘肃2楼2022-06-04 14:37
    收起回复
      2.语言文件4870行的Green,7420行的Pink,1770行的Blue,11380行的Yellow不能翻译,一旦翻译,那个创世纪2那些需要识别蓝绿黄粉的地板,生物的任务里,当你完成对应颜色的地板或者击杀对应颜色的生物时,HLNA的That’s pink/yellow/green/blue 的语音就不会出现了,我之所以发现了这个bug,是因为当初汉化组把Blue,Yellow,Green给翻译了,但是没有翻译Pink,导致我玩任务时只有Pink地板被踩下时才有语音显得很奇怪,经过测试后终于发现了原因修复了bug





      IP属地:甘肃3楼2022-06-04 14:48
      收起回复
        3.语言文件2291到2293行,13985到13987行的有关跨步者雷达探测模式切换按钮的文本不能翻译,一旦翻译就会出现bug,2291到2293行的文本翻译以后会使那三个按钮的文本变成口口口,13985到13987行的文本翻译以后会让跨步者雷达探测模式的切换无效
        Change Filter To Both Dinos and Humans
        Change Filter To Only Dinos
        Change Filter To Only Humans



        IP属地:甘肃6楼2022-06-04 14:53
        收起回复
          4.语言文件4638行的Gen2不能翻译,一旦翻译就会出现创世纪2联邦泰克套不能无条件使用的bug,因为这个Gen2正就是联邦泰克套装识别创世纪2地图时使用的参数


          IP属地:甘肃10楼2022-06-04 15:00
          回复
            5.语言文件8133行的Rocket不能翻译,否则会导致弹药箱模型在放入火箭弹后无法显示出火箭弹的bug,而334版本后的官方汉化文件把这一行汉化了导致出现bug


            IP属地:甘肃11楼2022-06-04 15:03
            回复
              6.语言文件774行的 ACHIEVEMENT_2 不能翻译,一旦翻译就会出现中文语言下击败育母蜘蛛的Steam成就不解锁的问题,而官方汉化一直都把这一行翻译成了 成就_2 导致出现bug


              IP属地:甘肃13楼2022-06-04 15:08
              收起回复
                7.语言文件17190行的recharge不能翻译,一旦翻译就会让伤齿龙轮盘菜单里冷却时间的显示出现错误显示成{recharge}而不是数字,334版本后汉化时野蛮的机器翻译把这里汉化了导致bug


                IP属地:甘肃15楼2022-06-04 15:32
                回复
                  7.我在帖子开头说过中文bug的出现是因为官方汉化文件里的参数被汉化了,导致代码传参时找不到被汉化后的参数,但是这里涉及到一个问题,那就是如何识别和判断出语言文件里哪些文字不是纯粹的文本而是参数呢?
                  这里就是一种判断方法:大括号法
                  那就是看某一行的文字是否在语言文件的其他地方出现在了大括号{}内,我们以楼上讲的伤齿龙轮盘菜单的冷却时间显示bug为例,伤齿龙轮盘菜单的冷却时间对应的参数是recharge,出现bug以后,出现的情况就是把原本应该是数字的地方显示成了{recharge},那么我们可以在文本文件里搜索recharge,果然发现在15781行和16866行出现了大括号内的recharge,15781行内容是范围等级 {range} - 冷却等级 {recharge} ,16866行内容是 [侦查-范围 {range} - 冷却时间 {recharge} 秒] ,这就说明recharge是冷却时间相关代码的参数,那么recharge就不应该被翻译。


                  所以,但凡你看到语言文件里有些行的内容里出现了大括号{},那么大括号内出现过的单词就是游戏代码所需要的参数,当其他地方出现单独的一行这些参数单词时就不应该把那一行的参数翻译,这适用于语言文件里所有出现在大括号内的单词,我们接下来要讲的那些bug,都是用这种方法找出原因后修复的,流程是发现bug,发现bug的地方出现了 {英文单词} 的形式,在英文语言文件里搜索大括号内的这个英文单词,找到单独成一行的这个英文单词记住它所在的行数,在中文语言文件里对应行数的附近找到这个单词翻译后的中文,把翻译后的中文改回原来的英文,解决bug。
                  出现大括号型bug的时候,其实还有一种解决方法,但我不推荐,那就是不把被翻译后的单独一行的参数恢复成英语,而是把所有大括号内的英语单词翻译成中文,比如伤齿龙轮盘菜单冷却时间bug里,15781行内容是范围等级 {range} - 冷却等级 {recharge} ,16866行内容是 [侦查-范围 {range} - 冷却时间 {recharge} 秒] ,也可以把这两行的recharge改成中文语言文件里单独一行那里已经翻译后的对应的中文,也可以消除bug,但我不推荐这种方法,因为不是所有代码都是部分显示在语言文件里的,这种方法修复bug后,其他没有显示在语言文件里的代码如果也用到了recharge这个参数时依然会产生bug。
                  但是,大括号内出现过的单词是参数,不代表参数只有大括号内出现过的单词,有些单词和文本从来没有出现在大括号内,但依然是参数,比如楼上讲的导致出现创世纪2联邦泰克套不能无条件使用bug的参数 Gen2 ,Gen2这个文本从来没有出现在大括号内,但依然是参数且导致了bug,这是因为用到了这个参数的游戏代码没有直接出现在语言文件里,当然找不到大括号内的Gen2即{Gen2}的出现,对于这种bug,出现时的表现形式并不是本该出现数字或者其他内容的地方出现了 {英文单词} ,而是直接产生了bug效果,这就无法用大括号法来判断,只能用二分查找法来寻找判断,二分查找法是什么我之后再说。


                  IP属地:甘肃22楼2022-06-04 16:14
                  回复
                    8.二分查找法
                    二分查找法是针对那些直接出现的bug进行修复的方法,流程如下
                    (1)中文语言下发现了一个bug,切换游戏到英文语言,测试英文语言下是否有这个bug,如果有,那么这个bug就不是中文语言下特有的中文bug,靠语言文件无法解决,如果英文语言下没有,那么这就是中文bug。
                    (2)发现中文bug以后。看看这个bug是不是把本该是 数字和其他内容 的文本 变成了 {英文单词} 导致显示错误,如果是这种情况,那么这个中文bug就是大括号型bug,解决方法参照22楼的大括号型bug解决方案,如果不是文本显示成 {英文单词} 的文本显示Bug,而是不涉及到文本的直接出现bug效果的中文Bug,那么这就需要二分查找法来找出造成bug的参数。
                    (3)找来一个和当前英文语言文件的行数相同的中文语言文件,官方的中文语言文件不可以,因为官方的中文语言文件相比官方的英文语言文件总是缺行的,可以用我之前发的我个人制作的中文语言文件,我制作的那个中文语言文件的行数和官方的英文语言文件的行数总是保持相同,判断中文和英文语言文件的行数是否相同除了可以直接解包查看行数外,还可以进入游戏后看一看中文语言下主菜单界面有没有出现创世纪2的广告,如果有,那么就说明当前使用的中文语言文件和官方英文语言文件的行数不一致。如果没有,才说明两个语言文件的行数是一致的。
                    (4)第三步找到了行数与英文语言文件相同且各行对应的中文语言文件,把这个中文语言文件的从上往下数的前面一半行数的文本复制后粘贴到英文语言文件里,然后封包得到了一个中英混合型文本文件,把这个中英混合型文本文件放到中文文本文件的路径所在的位置上,进入游戏,测试看看有没有出现你发现的那个中文bug。如果没有出现那个bug,那就说明造成bug的被翻译了的参数在后面一半行数的你没有粘贴过去的中文文本里,如果出现了那个bug,那就说明造成bug的被翻译了的参数在前面一半行数的你粘贴过去的中文文本里。
                    (5)二分查找开始,刚刚已经判断出来了一半的行数有没有造成bug的嫌疑了,接下来就是判断出的那一半 包含有被翻译后的造成bug的参数 的文本,把这些一半行数的文本再次进行二分,把四分之一行数的文本再次从对应的中文语言文件的行数里粘贴到英文语言文件里,制造出第二个中文行数只占四分之一的中英混合型语言文件,然后把这个语言文件放到中文语言文件的位置上,进入游戏测试看看bug还在不在,以此来查找 被翻译后的造成bug的参数 具体在哪个四分之一行数里。
                    (6)继续如上循环,直到制造出中文行数只占八分之一,十六分之一,三十二分之一,六十四分之一,一百二十八分之一 且这些中文行数里必然包含 被翻译后的造成bug的参数 的中英混合型语言文件,直到被分的足够细,能够看出是哪一行造成了bug为止。
                    (7)在最初的中文语言文件里把这一行的中文改成英文语言文件里对应的英文,即可修复bug
                    具体例子
                    楼上提到的Gen2这个参数出现在4638行,而目前的英文语言文件总共17468行
                    (1)首先把17468除以2等于8734,先把1到8734行的中文文本文件行数复制粘贴到英文文本文件里,用制造的这个中英混合型文本文件放到中文文本文件的位置上进入游戏,发现使用了这个1到8734行是中文的中英混合型文本文件后,创世纪2的联邦泰克套装依然不能无条件使用,那么就说明造成bug的被翻译成中文的参数Gen2一定是在1到8743行里
                    (2)8734除以2等于4367,把1到4367行的中文文本文件的行数的内容复制到英文文本文件里,制造出中文文本只占四分之一行数的第二个中英混合型文本文件,测试后发现使用这个文本文件后创世纪2泰克泰的bug没有了,那么就可以判断,造成bug的被翻译成中文的参数Gen2一定是在中文文本文件的4367到8743行里
                    (3)4367除以2等于2184,把4367到4367+2184=6551行的中文文本文件的内容复制粘贴到英文文本文件里,制造出中文文本只占八分之一行数的第三个中英混合型文本文件,测试后发现使用这个文本文件后创世纪2泰克泰的bug是存在的,那么就可以判断,造成bug的被翻译成中文的参数Gen2一定是在中文文本文件的4367到6551行里。
                    (4)如此循环直到范围缩小到可以直接看出造成bug的是哪一行为止。


                    IP属地:甘肃28楼2022-06-04 17:21
                    回复