NEKOparapa / AiNiee

一款专注于Ai翻译的工具,可以用来一键自动翻译RPG SLG游戏,Epub TXT小说,Srt Lrc字幕等等。
GNU General Public License v3.0
1.08k stars 60 forks source link

几个MV游戏带有的SG代码 #104

Closed allrobot closed 4 months ago

allrobot commented 4 months ago

SGテキスト位置 SGピクチャ 这些等等 image

尤其是图片的引用(SGピクチャ),翻译了会让游戏找不到图片

翻译了几个像这样的游戏:アースの秘宝,サキュバスアカデミア等等,都有SG之类的代码

能不能遇到了\<SG.*\>直接跳过不翻译,遇到\<SG説明([^\>]*)就把説明之后的文本给翻译了

NEKOparapa commented 4 months ago

好,你把这几个游戏原文打包上传一下,我看看

allrobot commented 4 months ago

好,你把这几个游戏原文打包上传一下,我看看

サキュバスアカデミア.zip アースの秘宝.zip

data为原文 data_out为xml

allrobot commented 4 months ago

image

很多游戏有可能带这种类似的,能不能添加一个不翻译的选项(支持正则表达式)

用正则表达式匹配的原文,比如\<SGピクチャ:([^\>]*)匹配则不翻译,等翻译完了再把原来匹配变量$1放进去

原文:

原文1 部分匹配的代码 原文2

译文:

译文1 变量$1 译文2

再搞个自动联网更新,从Github(你的公共库)获取最新的正则表达式匹配列表,用于防止翻译代码

NEKOparapa commented 4 months ago

可以用自带的stenve工具来提取注入

allrobot commented 4 months ago

可以用自带的stenve工具来提取注入

stenve的BlackCode只能检测某行是否包含黑名单的词汇吧,有就不写入,没有就写入 https://github.com/NEKOparapa/AiNiee/blob/83069528c7bd330b0ac2752abfff7c6a7ce58462/StevExtraction/jtpp.py#L328-L329

没法达成这种吧

译文1 一部分原文 译文2
NEKOparapa commented 4 months ago

工具的作者最近的更新,尝试解决这种带sg的文本带来的问题

stevetrs commented 4 months ago

可以用自带的stenve工具来提取注入

stenve的BlackCode只能检测某行是否包含黑名单的词汇吧,有就不写入,没有就写入

https://github.com/NEKOparapa/AiNiee/blob/83069528c7bd330b0ac2752abfff7c6a7ce58462/StevExtraction/jtpp.py#L328-L329

没法达成这种吧

译文1 一部分原文 译文2

有专门处理这种文本(note)的函数DNoteB,不需要管blackcode,注入的时候自动处理 处理逻辑是,先把文本按照<>做拆分,然后比较冒号前面的字符串占整个<>的比例,也就是判断<>够不够长,够长就把冒号前面的换回原文,只保留冒号后面的译文;不够长就全部替换成原文

这类文本代码数量挺多的,靠枚举不大现实

allrobot commented 4 months ago

有专门处理这种文本(note)的函数DNoteB,不需要管blackcode,注入的时候自动处理 处理逻辑是,先把文本按照<>做拆分,然后比较冒号前面的字符串占整个<>的比例,也就是判断<>够不够长,够长就把冒号前面的换回原文,只保留冒号后面的译文;不够长就全部替换成原文

在处理这类文本代码,一律都得通过Ainiee提供的stenve工具提取游戏文本,不能通过T++了?

如果你的DNoteB代码反应给T++的几个插件作者就好了,多个工具能一起提升提取文本效果就更好

image

stevetrs commented 4 months ago

有专门处理这种文本(note)的函数DNoteB,不需要管blackcode,注入的时候自动处理 处理逻辑是,先把文本按照<>做拆分,然后比较冒号前面的字符串占整个<>的比例,也就是判断<>够不够长,够长就把冒号前面的换回原文,只保留冒号后面的译文;不够长就全部替换成原文

在处理这类文本代码,一律都得通过Ainiee提供的stenve工具提取游戏文本,不能通过T++了?

如果你的DNoteB代码反应给T++的几个插件作者就好了,多个工具能一起提升提取文本效果就更好

image

开源的代码,有需要自己摘出来用就好了,我就是懒得搞了 t++可以运行自定义js脚本,没必要找作者的

allrobot commented 4 months ago

开源的代码,有需要自己摘出来用就好了,我就是懒得搞了 t++可以运行自定义js脚本,没必要找作者的

虽然T++支持自定义js脚本,实际的T++用户数量用到这功能连5%都不到吧,还是和作者协商比较好

毕竟不是谁懂代码的,要拆分代码贴到js自定义模块解决,需要用户一定的知识基础

用户往往倾向傻瓜化一键解决方案

allrobot commented 4 months ago

注入时报错:

cmd报错信息 [INFO] 开始合并译文与游戏原文件,请耐心等待!!! 正在加载Actors.csv 正在加载Armors.csv 正在加载Classes.csv 正在加载CommonEvents.csv 正在加载Enemies.csv 正在加载Items.csv 正在加载Map001.csv 正在加载Map002.csv 正在加载Map003.csv 正在加载Map004.csv 正在加载Map005.csv 正在加载Map006.csv 正在加载Map007.csv 正在加载Map008.csv 正在加载Map009.csv 正在加载Map010.csv 正在加载Map011.csv 正在加载Map012.csv 正在加载Map013.csv 正在加载Map014.csv 正在加载Map015.csv 正在加载Map016.csv 正在加载Map017.csv 正在加载Map018.csv 正在加载Map019.csv 正在加载Map020.csv 正在加载Map021.csv 正在加载Map022.csv 正在加载Map023.csv 正在加载Map024.csv 正在加载Map025.csv 正在加载Map026.csv 正在加载Map027.csv 正在加载Map028.csv 正在加载Map029.csv 正在加载Map030.csv 正在加载Map031.csv 正在加载Map032.csv 正在加载Map033.csv 正在加载Map034.csv 正在加载Map035.csv 正在加载Map036.csv 正在加载Map038.csv 正在加载Map039.csv 正在加载Map040.csv 正在加载Map041.csv 正在加载Map042.csv 正在加载Map043.csv 正在加载Map044.csv 正在加载Map045.csv 正在加载Map046.csv 正在加载Map047.csv 正在加载Map048.csv 正在加载Map049.csv 正在加载Map050.csv 正在加载Map051.csv 正在加载Map052.csv 正在加载Map053.csv 正在加载Map054.csv 正在加载Map055.csv 正在加载Map056.csv 正在加载Map057.csv 正在加载Map058.csv 正在加载Map059.csv 正在加载Map060.csv 正在加载Map061.csv 正在加载Map062.csv 正在加载Map063.csv 正在加载Map064.csv 正在加载Map065.csv 正在加载Map066.csv 正在加载Map067.csv 正在加载Map068.csv 正在加载Map069.csv 正在加载Map070.csv 正在加载Map071.csv 正在加载Map072.csv 正在加载Map073.csv 正在加载Map074.csv 正在加载Map075.csv 正在加载Map076.csv 正在加载Map077.csv 正在加载Map078.csv 正在加载Map079.csv 正在加载Map080.csv 正在加载Map081.csv 正在加载Map082.csv 正在加载Map083.csv 正在加载Map084.csv 正在加载Map085.csv 正在加载Map086.csv 正在加载Map087.csv 正在加载Map088.csv 正在加载Map089.csv 正在加载Map090.csv 正在加载Map091.csv 正在加载Map092.csv 正在加载Map093.csv 正在加载Map094.csv 正在加载Map095.csv 正在加载Map096.csv 正在加载Map097.csv 正在加载Map098.csv 正在加载Map099.csv 正在加载Map100.csv 正在加载Map101.csv 正在加载Map102.csv 正在加载Map103.csv 正在加载Map104.csv 正在加载Map105.csv 正在加载Map106.csv 正在加载Map107.csv 正在加载Map108.csv 正在加载Map109.csv 正在加载Map110.csv 正在加载Map111.csv 正在加载Map112.csv 正在加载Map113.csv 正在加载Map114.csv 正在加载Map115.csv 正在加载Map116.csv 正在加载Map117.csv 正在加载Map118.csv 正在加载Map119.csv 正在加载Map120.csv 正在加载Map121.csv 正在加载Map122.csv 正在加载Map123.csv 正在加载Map124.csv 正在加载Map125.csv 正在加载Map126.csv 正在加载Map127.csv 正在加载Map128.csv 正在加载Map129.csv 正在加载Map130.csv 正在加载Map131.csv 正在加载Map132.csv 正在加载Map133.csv 正在加载Map134.csv 正在加载Map135.csv 正在加载Map136.csv 正在加载Map137.csv 正在加载Map138.csv 正在加载Map139.csv 正在加载Map140.csv 正在加载Map141.csv 正在加载Map142.csv 正在加载Map143.csv 正在加载Map144.csv 正在加载Map145.csv 正在加载Map146.csv 正在加载Map147.csv 正在加载Map148.csv 正在加载Map149.csv 正在加载Map150.csv 正在加载Map151.csv 正在加载Map152.csv 正在加载Map153.csv 正在加载Map154.csv 正在加载Map155.csv 正在加载Map156.csv 正在加载Map157.csv 正在加载Map158.csv 正在加载Map159.csv 正在加载Map160.csv 正在加载Map161.csv 正在加载Map162.csv 正在加载mv\Animations.csv 正在加载Skills.csv 正在加载States.csv 正在加载System.csv 正在加载Troops.csv 正在加载Weapons.csv ########################加载工程完成######################## 正在导入Actors.xlsx 正在导入Armors.xlsx 正在导入Classes.xlsx 正在导入CommonEvents.xlsx 正在导入Enemies.xlsx 正在导入Items.xlsx 正在导入Map001.xlsx 正在导入Map002.xlsx 正在导入Map003.xlsx 正在导入Map004.xlsx 正在导入Map005.xlsx 正在导入Map006.xlsx 正在导入Map007.xlsx 正在导入Map008.xlsx 正在导入Map009.xlsx 正在导入Map010.xlsx 正在导入Map011.xlsx 正在导入Map012.xlsx 正在导入Map013.xlsx 正在导入Map014.xlsx 正在导入Map015.xlsx 正在导入Map016.xlsx 正在导入Map017.xlsx 正在导入Map018.xlsx 正在导入Map019.xlsx 正在导入Map020.xlsx 正在导入Map021.xlsx 正在导入Map022.xlsx 正在导入Map023.xlsx 正在导入Map024.xlsx 正在导入Map025.xlsx 正在导入Map026.xlsx 正在导入Map027.xlsx 正在导入Map028.xlsx 正在导入Map029.xlsx 正在导入Map030.xlsx 正在导入Map031.xlsx 正在导入Map032.xlsx 正在导入Map033.xlsx 正在导入Map034.xlsx 正在导入Map036.xlsx 正在导入Map038.xlsx 正在导入Map039.xlsx 正在导入Map040.xlsx 正在导入Map041.xlsx 正在导入Map042.xlsx 正在导入Map043.xlsx 正在导入Map044.xlsx 正在导入Map045.xlsx 正在导入Map046.xlsx 正在导入Map047.xlsx 正在导入Map048.xlsx 正在导入Map049.xlsx 正在导入Map050.xlsx 正在导入Map051.xlsx 正在导入Map052.xlsx 正在导入Map053.xlsx 正在导入Map054.xlsx 正在导入Map055.xlsx 正在导入Map056.xlsx 正在导入Map057.xlsx 正在导入Map058.xlsx 正在导入Map059.xlsx 正在导入Map060.xlsx 正在导入Map061.xlsx 正在导入Map062.xlsx 正在导入Map063.xlsx 正在导入Map064.xlsx 正在导入Map065.xlsx 正在导入Map066.xlsx 正在导入Map067.xlsx 正在导入Map068.xlsx 正在导入Map069.xlsx 正在导入Map070.xlsx 正在导入Map071.xlsx 正在导入Map072.xlsx 正在导入Map073.xlsx 正在导入Map074.xlsx 正在导入Map075.xlsx 正在导入Map076.xlsx 正在导入Map077.xlsx 正在导入Map078.xlsx 正在导入Map079.xlsx 正在导入Map080.xlsx 正在导入Map081.xlsx 正在导入Map082.xlsx 正在导入Map083.xlsx 正在导入Map084.xlsx 正在导入Map085.xlsx 正在导入Map086.xlsx 正在导入Map087.xlsx 正在导入Map088.xlsx 正在导入Map089.xlsx 正在导入Map090.xlsx 正在导入Map091.xlsx 正在导入Map092.xlsx 正在导入Map093.xlsx 正在导入Map094.xlsx 正在导入Map095.xlsx 正在导入Map096.xlsx 正在导入Map097.xlsx 正在导入Map098.xlsx 正在导入Map099.xlsx 正在导入Map100.xlsx 正在导入Map101.xlsx 正在导入Map102.xlsx 正在导入Map103.xlsx 正在导入Map104.xlsx 正在导入Map105.xlsx 正在导入Map106.xlsx 正在导入Map107.xlsx 正在导入Map108.xlsx 正在导入Map109.xlsx 正在导入Map110.xlsx 正在导入Map111.xlsx 正在导入Map112.xlsx 正在导入Map113.xlsx 正在导入Map114.xlsx 正在导入Map115.xlsx 正在导入Map116.xlsx 正在导入Map117.xlsx 正在导入Map118.xlsx 正在导入Map119.xlsx 正在导入Map120.xlsx 正在导入Map121.xlsx 正在导入Map122.xlsx 正在导入Map123.xlsx 正在导入Map124.xlsx 正在导入Map125.xlsx 正在导入Map126.xlsx 正在导入Map127.xlsx 正在导入Map128.xlsx 正在导入Map129.xlsx 正在导入Map130.xlsx 正在导入Map131.xlsx 正在导入Map132.xlsx 正在导入Map133.xlsx 正在导入Map134.xlsx 正在导入Map135.xlsx 正在导入Map136.xlsx 正在导入Map137.xlsx 正在导入Map138.xlsx 正在导入Map139.xlsx 正在导入Map140.xlsx 正在导入Map141.xlsx 正在导入Map142.xlsx 正在导入Map143.xlsx 正在导入Map144.xlsx 正在导入Map145.xlsx 正在导入Map146.xlsx 正在导入Map147.xlsx 正在导入Map148.xlsx 正在导入Map149.xlsx 正在导入Map150.xlsx 正在导入Map151.xlsx 正在导入Map152.xlsx 正在导入Map153.xlsx 正在导入Map154.xlsx 正在导入Map155.xlsx 正在导入Map156.xlsx 正在导入Map157.xlsx 正在导入Map158.xlsx 正在导入Map159.xlsx 正在导入Map160.xlsx 正在导入Map161.xlsx 正在导入Map162.xlsx 正在导入Animations.xlsx 正在导入Skills.xlsx 正在导入States.xlsx 正在导入System.xlsx 正在导入Troops.xlsx 正在导入Weapons.xlsx 开始修正文件名 ########################修正文件名完成######################## 正在处理可能存在的note问题 ########################note处理完毕######################## 正在写入Actors.json 正在写入Animations.json 正在写入Armors.json 正在写入Classes.json 正在写入CommonEvents.json 正在写入Enemies.json 正在写入Items.json 正在写入Map001.json 正在写入Map002.json 正在写入Map003.json 正在写入Map004.json 正在写入Map005.json 正在写入Map006.json 正在写入Map007.json 正在写入Map008.json 正在写入Map009.json 正在写入Map010.json 正在写入Map011.json 正在写入Map012.json 正在写入Map013.json 正在写入Map014.json 正在写入Map015.json 正在写入Map016.json 正在写入Map017.json 正在写入Map018.json 正在写入Map019.json 正在写入Map020.json 正在写入Map021.json 正在写入Map022.json 正在写入Map023.json 正在写入Map024.json 正在写入Map025.json 正在写入Map026.json 正在写入Map027.json 正在写入Map028.json 正在写入Map029.json 正在写入Map030.json 正在写入Map031.json 正在写入Map032.json 正在写入Map033.json 正在写入Map034.json 正在写入Map035.json 正在写入Map036.json 正在写入Map038.json 正在写入Map039.json 正在写入Map040.json 正在写入Map041.json 正在写入Map042.json 正在写入Map043.json 正在写入Map044.json 正在写入Map045.json 正在写入Map046.json 正在写入Map047.json 正在写入Map048.json 正在写入Map049.json 正在写入Map050.json 正在写入Map051.json 正在写入Map052.json 正在写入Map053.json 正在写入Map054.json 正在写入Map055.json 正在写入Map056.json 正在写入Map057.json 正在写入Map058.json 正在写入Map059.json 正在写入Map060.json 正在写入Map061.json 正在写入Map062.json 正在写入Map063.json 正在写入Map064.json 正在写入Map065.json 正在写入Map066.json 正在写入Map067.json 正在写入Map068.json 正在写入Map069.json 正在写入Map070.json 正在写入Map071.json 正在写入Map072.json 正在写入Map073.json 正在写入Map074.json 正在写入Map075.json 正在写入Map076.json 正在写入Map077.json 正在写入Map078.json 正在写入Map079.json 正在写入Map080.json 正在写入Map081.json 正在写入Map082.json 正在写入Map083.json 正在写入Map084.json 正在写入Map085.json 正在写入Map086.json 正在写入Map087.json 正在写入Map088.json 正在写入Map089.json 正在写入Map090.json 正在写入Map091.json 正在写入Map092.json 正在写入Map093.json 正在写入Map094.json 正在写入Map095.json 正在写入Map096.json 正在写入Map097.json 正在写入Map098.json 正在写入Map099.json 正在写入Map100.json 正在写入Map101.json 正在写入Map102.json 正在写入Map103.json 正在写入Map104.json 正在写入Map105.json 正在写入Map106.json 正在写入Map107.json 正在写入Map108.json 正在写入Map109.json 正在写入Map110.json 正在写入Map111.json 正在写入Map112.json 正在写入Map113.json 正在写入Map114.json 正在写入Map115.json 正在写入Map116.json 正在写入Map117.json 正在写入Map118.json 正在写入Map119.json 正在写入Map120.json 正在写入Map121.json 正在写入Map122.json 正在写入Map123.json 正在写入Map124.json 正在写入Map125.json 正在写入Map126.json 正在写入Map127.json 正在写入Map128.json 正在写入Map129.json 正在写入Map130.json 正在写入Map131.json 正在写入Map132.json 正在写入Map133.json 正在写入Map134.json 正在写入Map135.json 正在写入Map136.json 正在写入Map137.json 正在写入Map138.json 正在写入Map139.json 正在写入Map140.json 正在写入Map141.json 正在写入Map142.json 正在写入Map143.json 正在写入Map144.json 正在写入Map145.json 正在写入Map146.json 正在写入Map147.json 正在写入Map148.json 正在写入Map149.json 正在写入Map150.json 正在写入Map151.json 正在写入Map152.json 正在写入Map153.json 正在写入Map154.json 正在写入Map155.json 正在写入Map156.json 正在写入Map157.json 正在写入Map158.json 正在写入Map159.json 正在写入Map160.json 正在写入Map161.json 正在写入Map162.json 正在写入MapInfos.json 正在写入mv\Animations.json Traceback (most recent call last): File "AiNiee4.py", line 7684, in Start_import File "StevExtraction\jtpp.py", line 1006, in ToGame self.InjectGame(GameDir,OutputPath) File "StevExtraction\jtpp.py", line 330, in InjectGame data=self.__WriteFile(data,untrs,trsed,Dir[1:],length) File "StevExtraction\jtpp.py", line 216, in __WriteFile i=int(Dir[0]) ValueError: invalid literal for int() with base 10: 'Animations.json'

以下是注入截图

image

image

不知道data译文放哪,就在xml_zh/翻译工程文件目录下新建zh文件夹放译文

但在注入时报错,文件已上传

MV 異世界征服型RPG~催眠魔王と絶対の勇者~.zip

看来这工具还不是很成熟

stevetrs commented 4 months ago

注入时报错:

cmd报错信息 以下是注入截图

image

image

不知道data译文放哪,就在xml_zh/翻译工程文件目录下新建zh文件夹放译文

但在注入时报错,文件已上传

MV 異世界征服型RPG~催眠魔王と絶対の勇者~.zip

看来这工具还不是很成熟

之前改版的时候有两个地方漏改了,小bug,修了。 等ainiee测试版自动打包吧

allrobot commented 4 months ago

之前改版的时候有两个地方漏改了,小bug,修了。 等ainiee测试版自动打包吧

Ainiee搞个提取和注入两个步骤,又添加了多个按钮,感觉UI按钮逻辑很多余,不如一个按钮完事

如图所示:

image

选择游戏,它只选择MV/MZ的Game.exe,如果仅有一个Game.exe,用RPG Maker XP, VX, Ace, MV & MZ Parser V.2读取data,总之和T++差不多

没必要搞游戏文件夹原文存储文件夹工程存储文件夹这类按钮吧,这个工具意义是一键代替T++完成提取、翻译、注入几个步骤,在提取文本你做了一些更好的方案

游戏文件夹原文存储文件夹工程存储文件夹之类通过一个json文件存取原文和译文就完事了

如果改成导出为.trans格式就更好了(该格式可以读取为json格式,python处理很方便,.trans自带原文和译文),如果译者对ainiee注入的游戏的翻译不是很满意,就通过T++打开.trans文件自行修改,工程翻译文件一个个打开xml格式的文件修改不是很方便,想切回原文可以通过T++进行操作自行注入

这些对于T++用户很方便

虽然可以在T++注入译文自行保存为.trans……但多几个步骤有点不便

如果ainiee作者和stevetrs觉得xml并非单独为T++做准备的就当我没说,但导出为trans、txt、json等格式多多益善,方便用户处理嘛,T++,XUnity等都是好工具

stevetrs commented 4 months ago

选择游戏,它只选择MV/MZ的Game.exe,如果仅有一个Game.exe,用RPG Maker XP, VX, Ace, MV & MZ Parser V.2读取data,总之和T++差不多

我没用到,也不会用你说这玩意,直接简单粗暴读的json文件,不然也不会限定在mv/mz游戏了。读到的结果也和t++不完全相同,直接拿jt++导出的文件去导入t++是会有一些识别不到的

翻译结果处理能力,jtpp也有,包括搜索,替换,打标签等,只不过没做出ui界面,得自己写代码调用

至于.trans格式,我不知道他的保存格式。

我能力就到这了,你行你上吧

NEKOparapa commented 4 months ago

t++并不是那么好用,stevetrs的工具是为了解决T++一些之前常遇到的棘手问题,也是用爱发电的作品。本来是想合并在一起的,成为一键式,但现在还找没到合适方式合并