问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于 Translator++ 的 Ren'Py 游戏汉化大纲

创作时间:
作者:
@小白创作中心

基于 Translator++ 的 Ren'Py 游戏汉化大纲

引用
1
来源
1.
https://www.bilibili.com/opus/907083576657313800

前言

本大纲将介绍如何利用 Translator++ 这个机翻软件来节省自己大量的汉化时间。

本大纲将包含以下内容:

  1. 翻译所需的工具

  2. 基础的 Ren'Py 翻译流程

  3. Translator++ 的使用

  4. 过程可能出现的问题

那么废话不多说,直接开始。

所需工具

首先,1 个自己用的顺手的文本编辑器,什么是文本编辑器?记事本就是一个文本编辑器。本文使用 VS Code 并安装了 Ren'Py 插件。

接着安装好 Python,并将对应路径加入到系统的环境变量,本大纲使用的 Python 版本为 3.10.6,并且利用 anaconda 在系统上搭载了多个虚拟环境。

然后是下列工具(链接均为官方出处):

  1. UnRen-forall- https://f95zone.to/threads/unrengui-unren-forall-v9-4-unren-powershell-forall-v9-4-unren-old.92717/

  2. Ren'Py SDK- https://www.renpy.org/latest.html

  3. Translator++- https://dreamsavior.net/download/

请先确保自己的网络能够正常连接上述网站。

解释:

UnRen-forall是一个整合了 rpatool 和 unrpyc 的用于解压 .rpa 和反编译 .rpyc 的批处理工具,是翻译的必要步骤,如果不喜欢使用整合工具,更喜欢自己来的可以分别去 https://github.com/Shizmob/rpatoolhttps://github.com/CensoredUsername/unrpyc 单独下载 rpatool 和 unrpyc,但记得请自行阅读相关页面(你仍然需要安装 Python),rpatool 和 unrpyc 的使用方法未在本大纲中列出。

Ren'Py SDK用于快速提取游戏的翻译文件,方便节省大量时间,如果喜欢自己一个个文件查看、喜欢亲力亲为的可以免去此步骤。须知:请根据要翻译的游戏版本下载对应的 SDK,比如 Ren'Py 7 就下载Ren'Py 7的,Ren'Py 8 的就下载 Ren'Py 8 的,可以在对应游戏的根目录下 game\script_version.txt 中找到对应的版本。

**Translator++**是一款计算机辅助翻译(CAT)软件,用于游戏翻译。它帮助翻译人员高效快速地为各种类型的游戏引擎(如 RPG Maker、Wolf RPG Editor、RenPy、KiriKiri 等)生产高质量的翻译。这是本大纲的一个必要工具。

Ren'Py 游戏翻译流程基础

翻译使用 Ren'Py 引擎编写的游戏非常简单,只需简单的 3 步:

  1. 第一步,将游戏文本找出来,涉及的操作包含反编译

  2. 第二步,用 SDK 提取翻译文件

  3. 第三步,将提取的翻译文件进行翻译即可。

要达成第一步目标,需要如下步骤:

首先,将下载下来的 UnRen-forall 压缩包中的 UnRen-forall.bat 文件放置在游戏的根目录,然后双击打开:

按下回车后进入主菜单:

输入数字进行相应的操作,这里根据游戏文件的实际情况进行选择,或者你也可以无脑输入 9 执行 1-8 的所有操作。

本大纲以某个 Ren'Py 游戏为例,这个游戏下的 game 目录如图所示:

可以看到这里主要有 2 个 .rpa 压缩文件,那么现在介绍第一步翻译规则:遇到 rpa 就要先无脑解压。

回到 UnRen-forall 主菜单,输入 1 然后回车确认,此时会询问在解压后是否要删除原来的 .rpa 文件,建议删除前做好备份,本大纲已经做好备份,所以输入 y 并回车:

回到游戏的 game 目录下,可以看到解压后的目录变成了这样:

可以发现多了很多文件夹和 .rpyc 文件,这些都是解压了所找到的 images.rpa 和 scripts.rpa 的结果。

此时用文本编辑器打开 .rpyc 发现是不可读的,这些文件是 Ren'Py 引擎的编译文件,可以理解为 Java 中的 class 字节码文件。回到刚才的 UnRen-forall 菜单,输入 2 然后回车,工具就会对所有的 .rpyc 文件进行反编译然后在旁边生成对应的 .rpy 文件,图就不放出了。

至此,第一步的目标已经完成。

接下来就是利用 SDK 为我们生成翻译文件,

打开下载好的与游戏对应的 Ren'Py SDK 压缩包,在本大纲中,游戏所使用的 RenPy 版本为7.4.6,将其解压到你硬盘上的某个地方,然后打开:

因为本大纲已经打开过,所以没有第一次打开的截图,但是为了能够让游戏在左侧工程列表中显示,请在 SDK 的右下角设置 - 工程目录处选择到游戏所在目录的上一级目录,如图所示:

设置完成后返回即可在左侧工程列表中找到游戏位置。

接着要点击对应的游戏,在右侧的操作一栏中,点击生成翻译文件,在语言那里填你要放置翻译文件的文件夹名称,比如我喜欢使用 schinese 这个名称表示存放简体中文翻译,这样 SDK 就会在 game/tl/ 下就会生成一个 schinese 文件夹,里面都是原文注释 + 待翻译文本,有些游戏代码写得烂,可能会导致识别不了,所以建议最后还是得要自己手动确认一下,手动确认办法未在本大纲列出。

在本大纲中,一定要取消勾选 【为翻译生产空字符串】,因为等会要用 Translator++ 为我们自动化翻译。

最后,点击【生成翻译文件】,等待 SDK 自动在 game 目录下生成本地化文件,至此,第二步的目标完成。

第三步就是翻译,此时在 game/tl/schinese 中都是已经生成好的待翻译的本地化文件,这里可以选择进行自己进行手动精翻,还是往下看先用 Translator++ 机翻一遍再手动润色,完全凭自己的选择。

对于字体等问题,比如翻译了后进入游戏显示不出,中文变方块等,全部都在后面的可能出现的问题一节中。

Translator++ 的使用

下载安装好 Translator++ 后,打开 Translator++,点击左侧大大的创建新的工程,在弹出的新窗口拉下来找到 Ren'Py Games,噢等一下,我们还有一步工作要做:

使用支持打开文件夹的文本编辑器打开game目录下的 tl 文件夹,比如本大纲所使用的 VS Code 可以直接在文件夹右键选择使用 Code 打开,然后使用全局搜索(Shift+Ctrl+F)功能搜索【old "】,然后搜索的结果全部替换为 【# old "】,目的是在前面加上一个 #注释掉所有的 old 的一行,防止 Translator++ 将 old 行的原文也一并翻译。

完成了后回到 Translator++,找到 Ren'Py Games并点击之后,取消掉那 2 个选项,然后点击 Select executable file from your the game:

图片看不清楚的可以浏览器右键-新标签页打开看大图。

接着会提示 Are you sure want to start a project without decompiling the rpyc files? 那肯定是要点击确定的,因为我们已经提前把 rpyc 文件都反编译过了,何必再用你多此一举。点击确定后找到游戏的 exe 文件,可能会提示说这不是 Ren'Py 的可执行文件,问你要不要继续,废话当然要继续啦。

然后 Translator++ 就会开始对目录下的文件进行解析,主要还是那堆 .rpy 文件,等待解析完成后,在左侧的项目一栏那里的 Filter 输入 tl/schinese 将生成的翻译文件筛选出来,然后随便在一个文件上右键,全选:

然后为了让 Translator++ 在翻译的时候忽略 [] 和 {} 括起来的内容(大多数情况下是不用翻的,但还是要视你的游戏而定),还需要再:

打开选项(螺丝刀和扳手图标),然后点击左侧 "翻译引擎&语言",右侧拉到下面,然后添加这两个 js 的正则表达式:(纳闷了 B 站的新版编辑器怎么取消了代码块,求求你们兼容一下 MarkDown)

/{([^}]*)}/g,

/{([^}]*)}/g,

如图:

然后可以在下方 Tester 那里测试一下,如果 [xxx] 内容或者 {xxx} 被高亮显示了,说明正则表达式生效了,之后遇到这些东西都不会翻译了。

搞定后就可以用 Translator++ 一键生成机翻了:

根据自己的情况选择翻译引擎,然后点击现在翻译,接下来的事情,等着就好。

翻译完成后将翻译结果导出到文件夹,然后放在一个目录中,我随便选了一个目录就放进去了:

然后用 VS Code 打开导出的文件夹,全局搜索 【# old "】,替换回【old "】取消掉之前添加的注释。

好了现在这个文件夹的内容就是一键生成的机翻了,接下来的工作可以是【机翻润色】->【精翻】,比如把某些【他妈的】再重新翻译成恰当的动词等等。

现在离大功告成还差一步了,翻译完全后,将整个 tl 文件放到 game 目录下,然后继续测试你的翻译,确保游玩过程中不会出现什么错误。

为了提高载入时间和减少出错情况,不建议放在解包后的游戏内游玩,希望你之前备份好游戏了。

有兴趣的读者还可以尝试使用 raptool 将自己的翻译和字体打包成一个单独的 .rpa 文件作为汉化包分享。

过程可能出现的问题

最最最最常出现的问题1 —— 进入游戏还是英文:

在游戏没有那个啥,也就是默认没有支持多语言的情况下,需要通过代码手动指定使用的翻译语言,在游戏的 game 目录下新建一个 .rpy 文件,虽然但是,建议不要中文命名,然后添加内容:

设置默认语言

define config.language = "schinese"

切换renpy的语言 - 影响主菜单按钮文本

init python:

Language("schinese")

里面的 schinese 是 tl 目录下的语言文件夹,自己按需修改。

最最最最常出现的问题2 —— 进入游戏中文显示不出来(或者方框):

问题出在使用的字体上,一般而言是游戏所使用的字体缺少中文字符。

这个问题没有万能的办法去解决,因为游戏不同,代码也不同,你需要学会看游戏内的 renpy 代码(实际上就是 python),但是此处可以提供一个覆盖大多数情况的办法:

在 game 目录下新建一个 .rpy 文件,然后添加以下内容

translate schinese python: style.default.font = "msyhbd.ttc" gui.system_font = "msyh.ttc" gui.main_font = "msyh.ttc" gui.text_font = "msyh.ttc" gui.text_font_bold = "msyhbd.ttc" gui.interface_text_font = "msyhl.ttc" gui.name_text_font = "msyhbd.ttc" gui.glyph_font = "msyhl.ttc" gui.button_text_font = "msyhl.ttc" gui.choice_button_text_font = "msyhbd.ttc"

按需填入你自己的字体文件,本大纲喜欢微软雅黑,所以就全部复制了一份到

tl/schinese 目录下。

某些游戏还可能会自定义一堆 style 来影响部分按钮文本的字体,此时上述换字体的代码可能无法影响到,这些自定义 style 一般会定义在 screen.rpy 中,或者你使用全局搜索进行查找:

style custom_menu_style_header_btn:

font "candara.ttf"

size 35

hover_color "#fe9416"

selected_color "#fe9416"

color "#ffffff"

insensitive_color "#808080"

对于这种情况,可以在我们的.rpy文件中添加:

translate schinese python:

style.custom_menu_style_header_btn.font = "msyh.ttc"

除了上述之外,还有一种简单粗暴的办法,那就是直接在翻译文件中指定字体,如:

old "English"

new "{font=msyh.ttc}英语{/font}"

或者还可以再粗暴点,直接把游戏文件内的所有字体文件都替换成你的字体文件,但是不保证你能全部都替换完全。

每次修改自己的 .rpy 文件后都建议删除掉打开游戏后生成的 .rpyc 文件,否则很可能不会再次编译 .rpy 文件而导致游戏直接使用了未修改的 .rpyc 文件。

最最最最常出现的问题3 —— SDK 提取翻译缺少内容

翻译过来就是 —— 游戏代码写的太烂或者就是干脆没考虑支持多语言而导致 SDK 没能识别出可本地化字符。

这种情况非常复杂,视游戏的代码而定,为了避免翻译导致的游戏出错,在此不提供解决方案。

常出现的问题4——玩着玩着就跳出错误

这种情况首先要点击回滚,然后马上存个档,然后再继续对话跳出错误,看看是哪句翻译出现问题,然后继续用你的那个支持打开文件夹+支持全局搜索的文本编辑器搜索出现问题的翻译,一般可能是:

1.{xx} 等之类的标签没有闭合,即本来应该是{font}xxxx{/font}的但是在翻译的过程中莫名奇妙将其变成了 {字体}xxxx{/font},导致标签没有闭合进而游戏出错。改回去就好了。

2.百分号问题,在renpy中,表示百分比需要使用两个百分号,如翻译文本为 “现在已经到达了 50% 的动力” 应该要改成 “现在已经到达了 50%% 的动力” 才会正确显示。

3.涉及 [xxxx] 等变量的改动检查此类变量是不是被翻译了,如果你像此大纲添加了相应的正则表达式应该就不会出现此类问题。

具体情况具体分析,主要还是看出错指向的文件位置,还有,反编译出来的代码 ≠ 源码,本大纲不提倡在解包后的游戏中继续游玩。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号