前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ren'Py制作汉化完全教程

Ren'Py制作汉化完全教程

作者头像
NothAmor
发布2022-06-08 10:58:47
3.2K0
发布2022-06-08 10:58:47
举报
文章被收录于专栏:欧尼酱茶馆

上次发DDLC OurTime汉化的时候, 只是粗略了带过了一下制作汉化的部分, 这次来好好叙述一下

其实Ren'Py的汉化有很多种方法:

代码语言:javascript
复制
1.替换式
2.生成式

这里我个人更推荐使用renpy的生成翻译进行汉化, 因为使用这个汉化可以支持之后版本更新的迭代 后面润色什么的, 也来的更方便一些

如果是自己制作的renpy项目, 想要支持多语言的切换的话, 可以直接在renpy的主页右下角进行翻译生成

renpy
renpy

然后进入生成翻译的配置界面, 语言可以随意填写, 并且无所谓大小写, 不过推荐使用小写

请输入图片描述
请输入图片描述

然后点击生成翻译文件, 就可以为你的renpy项目生成文件了

生成的翻译文件会在游戏中的/game/tl/目录中, 进行翻译就可以了

而如果你想为某个游戏制作汉化MOD 你也许会需要unrpyc和unrpa来解包游戏文件, 可以直接在Github中搜索 然后你可以先使用renpy创建一个项目 然后进入创建的项目目录, 删除掉全部文件, 这里我用DDLC来进行举例

用renpy创建项目, 打开创建项目的目录, 删除全部文件, 将DDLC的全部文件复制过来 注意是全部, 不光是game目录, 整个游戏文件都要弄过来

然后再回到renpy中, 生成翻译就可以了 然后还需要几步配置, 首先添加字体文件 在tl中的翻译目录下创建style.rpy配置要翻译语言的字体 比如要翻译成中文, 就添加中文字体 下面我分享一个DDLC可以使用的fonts.rpa与style.rpy的范文 如果翻译DDLC的mod的话, 可以直接使用以下内容

代码语言:javascript
复制
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文件自取: 链接: https://pan.baidu.com/s/1-QcVZQsDYQv-oosBPTON2A 提取码: 5ke1 Google drive兜底: https://drive.google.com/file/d/10vH41qxBgPsq7JH7HcTley74LUvSjy0I/view?usp=sharing

然后就是在游戏设置目录中, 添加切换语言的选项 到game中找到screens.rpy, 在其中搜索preferences() 在下图位置中, 添加如下代码

请输入图片描述
请输入图片描述
代码语言:javascript
复制
vbox:
    style_prefix "radio"
    label _("Language")
    textbutton _("English") action Language(None)
    textbutton _("Chinese") action Language("chinese")

然后打开游戏大概就是这个效果 第二个textbutton后面action language括号中的内容一定要跟你在renpy填写的生成翻译语言的名字保持一致

请输入图片描述
请输入图片描述

在翻译文件里,你可以看到一些以#开头的文本 这些是注释,删去不会影响程序的任何运行,而且把文件进行编译再反编译,这些注释信息会丢失。 Renpy生成翻译文件时,原文就是以注释的形式给出的,因此修改注释里面的原文不会影响程序 真正起到把原文和翻译文本一一对号作用的是标识号 你可以看到tl文件夹下有很多rpy文件,除了我们已经创建和修改的,每个rpy里都有要翻译的文本,把他们都翻译就好了。 怎么翻译呢?举个例子。 打开一个rpy

代码语言:javascript
复制
# game/day_1.rpy:1247
translate chinese the_truth_fcb0f1ca:

    # mc "You mean King?"
    mc "这里填上上面那行的翻译就好了"

之后,你可以正常启动游戏,然后点击settings,把右上角的language改成Chinese就可以看到中文了。 如果希望游戏一打开默认是中文,可以打开game目录下的screens.rpy(注:生成翻译文件后,tl目录下还会有一个screens.rpy,所以这里强调是game目录),在文件最前面添上下面这句:

代码语言:javascript
复制
define config.language = "chinese"

然后就可以进行愉快的翻译了

翻译文件有时并不能翻译全部的文本,比如游戏标题和输入名称的对话框 就不会出现在翻译文件里,那么应该怎样翻译这些文本呢? Renpy提供了两种解决方案,动态定义和字符串翻译,这里只介绍字符串翻译。 字符串翻译在生成的翻译文件中可以见到,它们采用这样的格式开头:

代码语言:javascript
复制
translate chinese strings:

    old "balbla"
    new "blabla"

Old里面的内容是原文英文,new是翻译成的中文。因此,当你发现游戏有部分文本在翻译文件里是没有的(以游戏标题名举例),可以在tl文件夹内新建一个rpy,叫什么名字都可以,然后仿照如下格式进行翻译:

代码语言:javascript
复制
translate sc strings:
    #名字输入对话框
old "Please enter your name"
new "请输入你的名字"

#标题名,可以在options.rpy里看到
old "Doki Doki Literature Club - xxx"
new "心跳!心跳!文学部 xxx"

#以此类推

有时候,在做汉化时,会遇到需要跳过一些语句或是拆分一句话的情况,举例:

代码语言:javascript
复制
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 ""

中国人不会分开询问一个人的姓和名,因此可以这样处理:

代码语言:javascript
复制
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 否则会把英文原文显示出来,而不是不显示这句话。

如果想把一条语句进行拆分,可以使用下面的格式:

代码语言:javascript
复制
translate sc natsukiRoute_Stress_3bf104ad:

    # mc "lalalalalala"
    mc "lalala"
    mc "lalala"

原创的版权均归本人所有,任何人或团体、机构全部转载或者部分转载、摘录,请保留本博客链接或标注来源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档