关于翻译修正的逻辑
-
-
@鬼才琪露诺 刚跟新到最新,【应用至运行中的游戏】这个按钮点完倒是和之前一样了。
但是翻译修正的所有内容似乎没有生效,并没有进行翻译修正

原本翻译是
シュバイン・ラムダ
希瓦恩·兰姆达
按照我写的应该会被翻译成
舒拜因・拉姆达

之后我看了一下,应该是所有的翻译修正都没有执行

我的翻译修正的名字:装脱騎士ニンフォリア Ver1.07
可以在翻译修正里面搜索到
然后我发现,现在的翻译

会把名字和下面说话的内容合行,不知道是GPT本身的原因,还是您在翻译后对原始翻译内容进行了分行处理
整个游戏里面不管是对话还是名字那一行,
经常会出现整体名字被拆开变成两行的情况,然后还会多一些符号在中间。如下图:

这个对应的Mtool日志输出

这个人物的名字原始翻译会有如下的名称:
尼姑芙莉亚 尼姬福利亚 尼姬福莉亚 尼姑罗亚 尼姆福利亚 妮芙莉亚

上图是对话中名字被拆分的情况:尼姆福利亚 被拆分成2行
而且这种情况还找不到很好的方法进行翻译修正,我试图在翻译修正中利用【\n】进行修正但是只能有部分实际上是利用\n的文本才能修正,很多不能修正,这种情况应该怎么处理呢?如果需要什么我配合的提供的咱们继续沟通
-
@鬼才琪露诺
官方地址:
https://www.dlsite.com/maniax/dlaf/=/t/n/link/work/aid/dlwatcher/id/RJ287373.html
游戏名称:装脱騎士ニンフォリア
翻译修正ID: 39748
翻译用的ChatGPT 3.5save_20251109_001649.rar
存档是第16个,因为游戏还没有玩通关,可以在回想房里面看看一部分回想 -
@鬼才琪露诺
如果翻译修正按照从上到下的顺序进行替换的话
假如:

原始日文:戦闘装備
翻译之后:戦闘装備
我增加了如下的翻译修正:

第一行修正的意思就是
B如果行开始后面没有【 (「】三个符号,或者没有【存档】【配件】
C则在行首增加一个【 】
①按照第一行的内容新的翻译会被先替换为 【 戦闘装備】第二行的意思是如果
A原文是【戦闘装備】,
B翻译后的是【 戦闘装備】或者【戦闘装備】
C则替换成【㊣战斗装备】
②按照第二行的内容的翻译会被替换为【㊣战斗装备】但现在实际上没有进行第二行的替换,直接输出了 【 戦闘装備】
所以到底翻译修正的具体替换规则是怎么样的?
按照我的理解当前的两个修正都是满足条件的,应该按照顺序进行替换这个测试的翻译修正ID:40017
游戏内选择任意存档都可以,进入游戏直接按ESC或者X建打开菜单,就能直接看到需要被替换的内容了 -
@鬼才琪露诺
如果翻译修正按照从上到下的顺序进行替换的话
假如:

原始日文:戦闘装備
翻译之后:戦闘装備
我增加了如下的翻译修正:

第一行修正的意思就是
B如果行开始后面没有【 (「】三个符号,或者没有【存档】【配件】
C则在行首增加一个【 】
①按照第一行的内容新的翻译会被先替换为 【 戦闘装備】第二行的意思是如果
A原文是【戦闘装備】,
B翻译后的是【 戦闘装備】或者【戦闘装備】
C则替换成【㊣战斗装备】
②按照第二行的内容的翻译会被替换为【㊣战斗装备】但现在实际上没有进行第二行的替换,直接输出了 【 戦闘装備】
所以到底翻译修正的具体替换规则是怎么样的?
按照我的理解当前的两个修正都是满足条件的,应该按照顺序进行替换这个测试的翻译修正ID:40017
游戏内选择任意存档都可以,进入游戏直接按ESC或者X建打开菜单,就能直接看到需要被替换的内容了@豬愿你安好
没有再复杂的逻辑了....function fixStringWithCollRegexp(str, oriText) { if (collRegxps instanceof Array) { for (let i = 0; i < collRegxps.length; i++) { let ifFindInOri = collRegxps[i][0]; if (ifFindInOri) { ifFindInOri.lastIndex = 0; if (!oriText.match(ifFindInOri)) { continue; } } let count = replaceCounts.get(collRegxps[i][1]) || 0; collRegxps[i][1].lastIndex = 0; let nstr = str.replace(collRegxps[i][1], collRegxps[i][2]); if (nstr !== str) { count++; replaceCounts.set(collRegxps[i][1], count); if (count > 10) { mainTask("alert", `Regex ${collRegxps[i][1]} exceeded 10 replacements in 0.5sec .\nCheck your Translate Fix!!!!!\n正则 ${collRegxps[i][1]} 在0.5秒内被替换超过了 10 次.\n 检查你的翻译修正!!!`); return nstr; } } str = nstr; } } return str; }

