CREATE YOUR AI CUM SLUT ON CANDY.AI TRY FOR FREE
x

Ren'Py MODed Renpy Engine Support auto translating to Chinese

a798452992

Newbie
Sep 13, 2022
48
2
教程:用通用汉化引擎汉化一个任意Renpy游戏

到目前为止,本通用汉化引擎依然需要配合预翻译包才实现汉化,这适合不大称得上“通用”,的确虽然用本通用汉化引擎可以大幅度降低汉化Renpy游戏的难度,但依然还是需要一些细节处理,才能得到理想的结果,自从这个帖子发布以来,我看到很多朋友自行汉化自己喜爱的游戏的兴趣浓厚,而且大家的动手能力也似乎都有一定水平,所以我觉得可以尝试做一期教程,让大家可以学会用这个通用引擎来自行汉化一些我未提供预翻译包的游戏。但是,毕竟游戏采用的技术各有各的复杂度,很难一套流程就能解决100%的难题,所以大家的预期不要太高,本教程的操作方法不可能对所有游戏有效,通常只适用于一些技术相对简单,实现套路很常规的视觉小说类游戏。当然本引擎的上限也是非常高的,例如实验室老鼠2这样的技术性超高的游戏,它也能实现到比较理想的效果,但这就需要深入研究技术细节,这就不是本期教程的内容了,本期还是先从入门开始,先汉化一些最简单的游戏。

本教程选取的范例游戏是 Stellar Dream [Winterlook]

1. 首先下载安装游戏,打上你喜欢的MOD,运行一下游戏确保正常

2. 在覆盖汉化包之前,首先要弄清楚这个游戏是采用了Renpy 7.x版本还是8.x版本,因为这两个版本分别采用的是Python 2.7和Python 3.9的编程语言,这两个版本的Python在语法上就是互不兼容的,所以必须采用选用对应的汉化代码

打开游戏目录下的lib目录,查看lib目录里的内容,如果你看到有一个"Python2.7"的文件夹,则说明使用的是Renpy 7.x版本的引擎,如果看到有"Python3.9"的文件夹,则对应是Renpy 8.x版本的引擎,对于Stellar Dream这个游戏,它的lib目录是这样的:
View attachment 4245194
说明它采用的是Renpy 7.x版本的引擎,这时我们先打开我们从首帖下载的通用包,打开后看它的lib目录下的内容如下: View attachment 4245196
可以看到通用包里包括了Pythen2.7与Python3.9版本的所有文件,所以这个通用包是可以通用于Renpy 7.x与Renpy 8.x游戏的。

但这里我要注意到一个细节:由于版本游戏原本的Renpy版本过旧的原因,其lib下的目录结构与新版的Renpy 7.x不一样!所以在将通用包的内容覆盖上去之后,我们需要将py2-windows-x86_64这个目录,改名为老版本的windows-x86_64,游戏才可以正常运行!这一步并非所有游戏都需要,采用较新版本引擎的游戏直接覆盖即可。

到这里,我们将通用包解压到游戏目录下,然后删掉原本的windows-x86_64目录,将py2-windows-x86_64目录改名为windows-x86_64目录,删除那个StellerDream-32.exe避免错误使用,通用包安装完成。

3. 安装引擎包,引擎包我上传在本层附件里,打开后有7.x和8.x两个目录,选择游戏对应的目录(本游戏应当选择7.8.3),打开后,将里头的renpy目录复制到游戏目录,覆盖掉游戏自身的renpy目录即可。

4. 运行“设置为中文”脚本,在文件夹里双点这个脚本文件运行即可,看到黑窗提示后,进入游戏,无论汉化正常与否,退出游戏即可。

5. 打开游戏的game目录,你会看到两个自动生成的文本文件,"game_names.txt"与"game_variables.txt"。这是两个比较重要的文件需要我们参与处理,下面分别讲解这两个文件的用法:

game_names.txt记录了汉化引擎在游戏中检测出来的人物(不一定检测完整),每一行记录了一个名字,对于在这个文本里记录的所有名字,有以下功能:
  • 句子中的这些名字在翻译前被替代为ZSTD1101这类的符号,交给云端翻译,然后再将译文中的ZSTD1101还原为名字的译文,所以这些名字的翻译在每次翻译中都将保持统一
  • 替换符号后可以节约翻译调用次数,例如句子“Hi, Mike"与句子"Hi, Jack"都将被替换为"Hi, ZSTD1101",所以将作为模式只被翻译一次,每次套用不同的名字将不再调用云端翻译。
对于Steller Dream来说,其自动检测的名字列表如下:
Code:
Robot
Pilot
Tom
Cook
Rose
Celine
Amber
Waiter
Victoria
Qhov'iny
Ingrixa
Guard
Queen Marena
Boruda
Canary
Merchant
Prisoners
Scout
Female Scout
Announcer
Vr'ina
Estina
Caste
Mayor
Losca
Helgi
First
Kix
Marvin
注意当中并非所有名字我们都希望替换成特殊符号,这样会使机翻无法理解单词的含义而影响句子的翻译质量,对于我们不想作为专有名词而进行替换的名字,我们修改game_names.txt在这些名字前加"!"告诉翻译引擎,不要将该名字转换为专有名词,修改后的game_names.txt如下:
Code:
!Robot
!Pilot
Tom
!Cook
Rose
Celine
Amber
!Waiter
Victoria
Qhov'iny
Ingrixa
!Guard
Queen Marena
Boruda
Canary
!Merchant
!Prisoners
!Scout
!Female Scout
!Announcer
Vr'ina
Estina
Caste
!Mayor
Losca
Helgi
!First
Kix
Marvin
保存game_names.txt,现在可以正式开始游戏了,运行StellerDream.exe开始运行游戏。
View attachment 4245235

前面说到另一个重要的文件game_variables.txt,该文件内记录了翻译引擎所遇到过的游戏中要求翻译的变量。在首次运行后,该文件的内容大致如下:
Code:
{
    "[jackname]": false,
    "[text]": false,
    "[marianame]": false,
    "[config.version]": false,
    "[message!tq]": false,
    "[page]": false,
    "[casscen3101]": false
}
方括号内为变量名,最后的布尔值代表着是否直接使用变量原始内容,true代表直接返回原始内容,false代表将该变量的内容翻译为中文
有时一些变量的内容被翻译为中文会导致游戏出错弹出,这时可以打开该文件,最后一个被添加的变量通常就是导致出错的变量,将其改为true有可能可以修复错误。

到这个程度,游戏汉化就完成了,运气好你就已经可以一直玩下去,但,由于没有使用任何预翻译内容,所有的翻译请求都调用云端免费接口,而免费接口难免不稳定,在调用失败的时候,你就会看到显示的是英文原文,翻译失败的句子每次重新显示都会尝试再次翻译,翻译成功的句子将会写盘,下次遇到直接调用本地翻译结果。

另,由于我们没有覆盖和修改除了引擎之外的任何游戏文件,所以,当这个游戏下次升级时,你只需要直接将新版游戏的game目录覆盖过来即可,游戏与汉化包没有任何重复文件,所以不用担心会破坏汉化,而新版的新内容全部都是云端自动翻译,所以完美兼容。

如果你实在忍受不了免费接口经常失败,本引擎也支持你自行购买付费API令牌,搜彩云科技开放平台,注册登录,并购买令牌后,在游戏的game目录下创建一个caiyun_token.txt的文本文件,在首行贴上你的令牌字符串即可。即使你提供了付费API令牌,翻译引擎也依然首先调用免费的接口,仅在免费接口失败的情况下,再用付费接口进行重试。BTW:我和彩云没有半毛钱关系,他们没给我任何好处。
感觉可以把接口做成开放式的,gpt,deepl都比彩云好太多了。
 

a798452992

Newbie
Sep 13, 2022
48
2
教程:用通用汉化引擎汉化一个任意Renpy游戏

到目前为止,本通用汉化引擎依然需要配合预翻译包才实现汉化,这适合不大称得上“通用”,的确虽然用本通用汉化引擎可以大幅度降低汉化Renpy游戏的难度,但依然还是需要一些细节处理,才能得到理想的结果,自从这个帖子发布以来,我看到很多朋友自行汉化自己喜爱的游戏的兴趣浓厚,而且大家的动手能力也似乎都有一定水平,所以我觉得可以尝试做一期教程,让大家可以学会用这个通用引擎来自行汉化一些我未提供预翻译包的游戏。但是,毕竟游戏采用的技术各有各的复杂度,很难一套流程就能解决100%的难题,所以大家的预期不要太高,本教程的操作方法不可能对所有游戏有效,通常只适用于一些技术相对简单,实现套路很常规的视觉小说类游戏。当然本引擎的上限也是非常高的,例如实验室老鼠2这样的技术性超高的游戏,它也能实现到比较理想的效果,但这就需要深入研究技术细节,这就不是本期教程的内容了,本期还是先从入门开始,先汉化一些最简单的游戏。

本教程选取的范例游戏是 Stellar Dream [Winterlook]

1. 首先下载安装游戏,打上你喜欢的MOD,运行一下游戏确保正常

2. 在覆盖汉化包之前,首先要弄清楚这个游戏是采用了Renpy 7.x版本还是8.x版本,因为这两个版本分别采用的是Python 2.7和Python 3.9的编程语言,这两个版本的Python在语法上就是互不兼容的,所以必须采用选用对应的汉化代码

打开游戏目录下的lib目录,查看lib目录里的内容,如果你看到有一个"Python2.7"的文件夹,则说明使用的是Renpy 7.x版本的引擎,如果看到有"Python3.9"的文件夹,则对应是Renpy 8.x版本的引擎,对于Stellar Dream这个游戏,它的lib目录是这样的:
View attachment 4245194
说明它采用的是Renpy 7.x版本的引擎,这时我们先打开我们从首帖下载的通用包,打开后看它的lib目录下的内容如下: View attachment 4245196
可以看到通用包里包括了Pythen2.7与Python3.9版本的所有文件,所以这个通用包是可以通用于Renpy 7.x与Renpy 8.x游戏的。

但这里我要注意到一个细节:由于版本游戏原本的Renpy版本过旧的原因,其lib下的目录结构与新版的Renpy 7.x不一样!所以在将通用包的内容覆盖上去之后,我们需要将py2-windows-x86_64这个目录,改名为老版本的windows-x86_64,游戏才可以正常运行!这一步并非所有游戏都需要,采用较新版本引擎的游戏直接覆盖即可。

到这里,我们将通用包解压到游戏目录下,然后删掉原本的windows-x86_64目录,将py2-windows-x86_64目录改名为windows-x86_64目录,删除那个StellerDream-32.exe避免错误使用,通用包安装完成。

3. 安装引擎包,引擎包我上传在本层附件里,打开后有7.x和8.x两个目录,选择游戏对应的目录(本游戏应当选择7.8.3),打开后,将里头的renpy目录复制到游戏目录,覆盖掉游戏自身的renpy目录即可。

4. 运行“设置为中文”脚本,在文件夹里双点这个脚本文件运行即可,看到黑窗提示后,进入游戏,无论汉化正常与否,退出游戏即可。

5. 打开游戏的game目录,你会看到两个自动生成的文本文件,"game_names.txt"与"game_variables.txt"。这是两个比较重要的文件需要我们参与处理,下面分别讲解这两个文件的用法:

game_names.txt记录了汉化引擎在游戏中检测出来的人物(不一定检测完整),每一行记录了一个名字,对于在这个文本里记录的所有名字,有以下功能:
  • 句子中的这些名字在翻译前被替代为ZSTD1101这类的符号,交给云端翻译,然后再将译文中的ZSTD1101还原为名字的译文,所以这些名字的翻译在每次翻译中都将保持统一
  • 替换符号后可以节约翻译调用次数,例如句子“Hi, Mike"与句子"Hi, Jack"都将被替换为"Hi, ZSTD1101",所以将作为模式只被翻译一次,每次套用不同的名字将不再调用云端翻译。
对于Steller Dream来说,其自动检测的名字列表如下:
Code:
Robot
Pilot
Tom
Cook
Rose
Celine
Amber
Waiter
Victoria
Qhov'iny
Ingrixa
Guard
Queen Marena
Boruda
Canary
Merchant
Prisoners
Scout
Female Scout
Announcer
Vr'ina
Estina
Caste
Mayor
Losca
Helgi
First
Kix
Marvin
注意当中并非所有名字我们都希望替换成特殊符号,这样会使机翻无法理解单词的含义而影响句子的翻译质量,对于我们不想作为专有名词而进行替换的名字,我们修改game_names.txt在这些名字前加"!"告诉翻译引擎,不要将该名字转换为专有名词,修改后的game_names.txt如下:
Code:
!Robot
!Pilot
Tom
!Cook
Rose
Celine
Amber
!Waiter
Victoria
Qhov'iny
Ingrixa
!Guard
Queen Marena
Boruda
Canary
!Merchant
!Prisoners
!Scout
!Female Scout
!Announcer
Vr'ina
Estina
Caste
!Mayor
Losca
Helgi
!First
Kix
Marvin
保存game_names.txt,现在可以正式开始游戏了,运行StellerDream.exe开始运行游戏。
View attachment 4245235

前面说到另一个重要的文件game_variables.txt,该文件内记录了翻译引擎所遇到过的游戏中要求翻译的变量。在首次运行后,该文件的内容大致如下:
Code:
{
    "[jackname]": false,
    "[text]": false,
    "[marianame]": false,
    "[config.version]": false,
    "[message!tq]": false,
    "[page]": false,
    "[casscen3101]": false
}
方括号内为变量名,最后的布尔值代表着是否直接使用变量原始内容,true代表直接返回原始内容,false代表将该变量的内容翻译为中文
有时一些变量的内容被翻译为中文会导致游戏出错弹出,这时可以打开该文件,最后一个被添加的变量通常就是导致出错的变量,将其改为true有可能可以修复错误。

到这个程度,游戏汉化就完成了,运气好你就已经可以一直玩下去,但,由于没有使用任何预翻译内容,所有的翻译请求都调用云端免费接口,而免费接口难免不稳定,在调用失败的时候,你就会看到显示的是英文原文,翻译失败的句子每次重新显示都会尝试再次翻译,翻译成功的句子将会写盘,下次遇到直接调用本地翻译结果。

另,由于我们没有覆盖和修改除了引擎之外的任何游戏文件,所以,当这个游戏下次升级时,你只需要直接将新版游戏的game目录覆盖过来即可,游戏与汉化包没有任何重复文件,所以不用担心会破坏汉化,而新版的新内容全部都是云端自动翻译,所以完美兼容。

如果你实在忍受不了免费接口经常失败,本引擎也支持你自行购买付费API令牌,搜彩云科技开放平台,注册登录,并购买令牌后,在游戏的game目录下创建一个caiyun_token.txt的文本文件,在首行贴上你的令牌字符串即可。即使你提供了付费API令牌,翻译引擎也依然首先调用免费的接口,仅在免费接口失败的情况下,再用付费接口进行重试。BTW:我和彩云没有半毛钱关系,他们没给我任何好处。
部分游戏覆盖后用renpy引擎打不开也是个麻烦,意味着基本没有安卓版本。
 

godoftheearth

Member
Jul 6, 2020
219
157
感觉可以把接口做成开放式的,gpt,deepl都比彩云好太多了。
这是黄油,GPT和DEEP都有可能拒绝翻译敏感内容,QWEN甚至有可能封你的号,我自己的确是用本地的DEEP来翻的,我上传的代码也带了ollama支持,但是默认没有开放而已。
 

a798452992

Newbie
Sep 13, 2022
48
2
这是黄油,GPT和DEEP都有可能拒绝翻译敏感内容,QWEN甚至有可能封你的号,我自己的确是用本地的DEEP来翻的,我上传的代码也带了ollama支持,但是默认没有开放而已。
感觉还好吧!很多大佬可以绕过道德标准,之前用谷歌ai翻译,敏感词倒是感觉不大,漏翻比较多是真的。
 

godoftheearth

Member
Jul 6, 2020
219
157
将chinese\chinesetranslate.py的第36行改成use_ollama = True
然后你自己改写chinese\ollama.py第17行定义的
Python:
def ollama_translate(str):
传入一个原文字符串,返回一个译文字符串即可,这种程序,就算你不会编程,网上问AI让AI来写都可以
 

badkant

New Member
Nov 13, 2024
13
0
之前15版本没有报错,今天更换20版本之后进游戏报错,已完全重装
Code:
I'm sorry, but errors were detected in your script. Please correct the
errors listed below, and try again.


File "game/game_roles/stripclub/stripclub_bdsm_performer_role.rpy", line 9: f-string: invalid syntax
                renpy.say(person.char, f"Please [TMP_NONE]{person.mc_title}{b}{/b}, I promise I will be the best slave you ever had, please... let me cum!")
      ^

Ren'Py Version: Ren'Py 8.3.3.24111502
Tue Nov 19 09:35:47 2024
 

godoftheearth

Member
Jul 6, 2020
219
157
之前15版本没有报错,今天更换20版本之后进游戏报错,已完全重装
Code:
I'm sorry, but errors were detected in your script. Please correct the
errors listed below, and try again.


File "game/game_roles/stripclub/stripclub_bdsm_performer_role.rpy", line 9: f-string: invalid syntax
                renpy.say(person.char, f"Please [TMP_NONE]{person.mc_title}{b}{/b}, I promise I will be the best slave you ever had, please... let me cum!")
      ^

Ren'Py Version: Ren'Py 8.3.3.24111502
Tue Nov 19 09:35:47 2024
试试BETA21
 

godoftheearth

Member
Jul 6, 2020
219
157
楼主, Lab Rats 2 中只要和艾丽卡对话就会弹出错误
这个看起来是在第三方的代码报了错,我这里没有game/mods/LR2R这个目录,估计是和第三方MOD不兼容的问题,如果是非剧情性仅仅是界面改进的MOD,我建议暂时不要用
 
  • Like
Reactions: Akusam

fang21901

New Member
Aug 25, 2024
3
0
感谢大佬们的努力,我也尝试过你们的方法来汉化LATS2,但遗憾的是报错很多,我不知道我是不是个例因为我打了好几个MOD,我连MOD设置都进不去实在太影响体验了,我感觉还是MTOOL来的方便些,尽管有些翻译很离谱
 

a798452992

Newbie
Sep 13, 2022
48
2
感谢大佬们的努力,我也尝试过你们的方法来汉化LATS2,但遗憾的是报错很多,我不知道我是不是个例因为我打了好几个MOD,我连MOD设置都进不去实在太影响体验了,我感觉还是MTOOL来的方便些,尽管有些翻译很离谱
感觉你版本没有弄对。