next
[转载]Ren'Py制作汉化完全教程 - 欧尼酱 - Little Stone
[转载]Ren'Py制作汉化完全教程 - 欧尼酱 - Little Stone
Last edited 2023-10-24
type
Post
status
Published
date
May 29, 2023
slug
2023-05-29
summary
tags
工具
知识
category
技术分享
icon
password
Property
Oct 24, 2023 01:40 AM

本文章转载自Ren’Py制作汉化完全教程 - 欧尼酱 - Little Stone

感谢一位曾经的 b 站用户进行了更深入的补充,如果这篇文章有不明确的地方可以参考他的文章: https://www.bilibili.com/read/cv15545713
其实 Ren’Py 的汉化有很多种方法:
1.替换式 2.生成式
这里我个人更推荐使用 renpy 的生成翻译进行汉化,因为使用这个汉化可以支持之后版本更新的迭代
后面润色什么的,也来的更方便一些
如果是自己制作的 renpy 项目,想要支持多语言的切换的话,可以直接在 renpy 的主页右下角进行翻译生成
notion image
然后进入生成翻译的配置界面,语言可以随意填写,并且无所谓大小写,不过推荐使用小写
notion image
然后点击生成翻译文件,就可以为你的 renpy 项目生成文件了
生成的翻译文件会在游戏中的 /game/tl/ 目录中,进行翻译就可以了
而如果你想为某个游戏制作汉化 MOD
你也许会需要 unrpyc 和 unrpa 来解包游戏文件,可以直接在 Github 中搜索
然后你可以先使用 renpy 创建一个项目
然后进入创建的项目目录,删除掉全部文件,这里我用 DDLC 来进行举例
用 renpy 创建项目,打开创建项目的目录,删除全部文件,将 DDLC 的全部文件复制过来
注意是全部,不光是 game 目录,整个游戏文件都要弄过来
然后再回到 renpy 中,生成翻译就可以了
然后还需要几步配置,首先添加字体文件
在 tl 中的翻译目录下创建 style.rpy 配置要翻译语言的字体
比如要翻译成中文,就添加中文字体
下面我分享一个 DDLC 可以使用的 fonts.rpa 与 style.rpy 的范文
如果翻译 DDLC 的 mod 的话,可以直接使用以下内容
translate chinese python: gui.default_font = "gui/font/wrht.ttf" gui.name_font = "gui/font/fzht.ttf" gui.interface_font = "gui/font/wrht.ttf" gui.choice_button_text_font = gui.default_font gui.button_text_font = gui.interface_font translate chinese style edited: font "gui/font/wrht.ttf" translate chinese style poemgame_text: font "gui/font/wqywmh.ttf" translate chinese style navigation_button_text: font "gui/font/fzht.ttf" translate chinese style game_menu_label_text: font "gui/font/fzht.ttf" translate chinese style pref_label_text: font "gui/font/fzht.ttf" translate chinese style radio_button_text: font "gui/font/wqywmh.ttf" translate chinese style check_button_text: font "gui/font/wqywmh.ttf"
缩进要求一定保持一致,不然会出错误.
fonts.rpa 文件自取:
提取码: 5ke1
Google drive 兜底:
notion image
然后就是在游戏设置目录中,添加切换语言的选项
到 game 中找到 screens.rpy, 在其中搜索 preferences()
在下图位置中,添加如下代码
notion image
vbox: style_prefix "radio" label _("Language") textbutton _("English") action Language(None) textbutton _("Chinese") action Language("chinese")
然后打开游戏大概就是这个效果
第二个 textbutton 后面 action language 括号中的内容一定要跟你在 renpy 填写的生成翻译语言的名字保持一致
notion image
在翻译文件里,你可以看到一些以 #开头的文本
这些是注释,删去不会影响程序的任何运行,而且把文件进行编译再反编译,这些注释信息会丢失。
Renpy 生成翻译文件时,原文就是以注释的形式给出的,因此修改注释里面的原文不会影响程序
真正起到把原文和翻译文本一一对号作用的是标识号
你可以看到 tl 文件夹下有很多 rpy 文件,除了我们已经创建和修改的,每个 rpy 里都有要翻译的文本,把他们都翻译就好了。
怎么翻译呢?举个例子。
打开一个 rpy
translate chinese the_truth_fcb0f1ca: mc "这里填上上面那行的翻译就好了"
之后,你可以正常启动游戏,然后点击 settings,把右上角的 language 改成 Chinese 就可以看到中文了。
如果希望游戏一打开默认是中文,可以打开 game 目录下的 screens.rpy(注:生成翻译文件后,tl 目录下还会有一个 screens.rpy,所以这里强调是 game 目录),在文件最前面添上下面这句:
define config.language = "chinese"
然后就可以进行愉快的翻译了
翻译文件有时并不能翻译全部的文本,比如游戏标题和输入名称的对话框
就不会出现在翻译文件里,那么应该怎样翻译这些文本呢?
Renpy 提供了两种解决方案,动态定义和字符串翻译,这里只介绍字符串翻译。
字符串翻译在生成的翻译文件中可以见到,它们采用这样的格式开头:
translate chinese strings: old "balbla" new "blabla"
Old 里面的内容是原文英文,new 是翻译成的中文。因此,当你发现游戏有部分文本在翻译文件里是没有的(以游戏标题名举例),可以在 tl 文件夹内新建一个 rpy,叫什么名字都可以,然后仿照如下格式进行翻译:
translate sc strings: old "Please enter your name" new "请输入你的名字" old "Doki Doki Literature Club - xxx" new "心跳!心跳!文学部 xxx"
有时候,在做汉化时,会遇到需要跳过一些语句或是拆分一句话的情况,举例:
translate sc natsukiRoute_Stress_30b0f19c: # o "Ahem. First name?" o "" translate sc natsukiRoute_Stress_3bf104ad: # mc "[player]." mc "" translate sc natsukiRoute_Stress_196fbbf9: # o "Last name?" o ""
中国人不会分开询问一个人的姓和名,因此可以这样处理:
translate sc natsukiRoute_Stress_30b0f19c: # o "Ahem. First name?" o "啊。请问您的姓名?" translate sc natsukiRoute_Stress_3bf104ad: # mc "[player]." mc "[player]。" translate sc natsukiRoute_Stress_196fbbf9: # o "Last name?" pass
最后一句 pass,会将这句话直接跳过,这样就不需要再单独询问名和姓了。
但一定要注意,跳过某句话一定要使用 pass,不可以直接删除这个 translate
否则会把英文原文显示出来,而不是不显示这句话。
如果想把一条语句进行拆分,可以使用下面的格式:
translate sc natsukiRoute_Stress_3bf104ad: # mc "lalalalalala" mc "lalala" mc "lalala"
原创的版权均归本人所有,任何人或团体、机构全部转载或者部分转载、摘录,请保留本博客链接或标注来源。

使用翻译君翻译renpy游戏方法

notion image
  • 工具
  • 知识
  • 好用的B站视频下载器BiliAuDown介绍一款纯文本比较软件WinMerge