Ren’Py多语言支持 link
Ren’Py自身也能实现多语言支持。一个完整的多语言支持版本翻译了GUI、各种Ren’Py信息、新工程和启动器的文本,涵盖了绝大多数游戏运行和开发场景。到目前为止,有部分报错信息还不支持多语言。
创建一种新的语言支持包含下列步骤:
打开Ren’Py启动器。
在设置页面,选择“打开启动器工程”。
选择“生成翻译文件”。(译者注:原文为“Generate Translations”。将translation直译为“翻译”,容易引发歧义,所以文档中单独出现时一律使用“多语言支持”,“translation file”则翻译为“翻译文件”。)
输入需要支持的语言名称。名称应该由小写的ACSII字符和下划线组成,所以“japannese”、“russian”和“ancient_kilingo”都是合法的语言名称。
选择“生成翻译文件”。
需要更新某个翻译文件时也使用相同的流程。需要接入创建的翻译文件的话,返回到设置页面,在“语言”标签下选择刚才新建的语言。需要注意的是,默认情况下新建的翻译文件只是复制了一份英语的版本。
翻译文件 link
翻译文件存在于 launcher/game/tl/language/
目录。除了 script.rpy
,所有文件都可以包含使用 字符串多语言支持
语法的字符串。 有些字符串的开头可能是“## ”。这些是 options.rpy
和 gui.rpy
文件中的注释。
翻译文件包括:
- common.rpy
这个文件包括Ren’Py向玩家展现的接口信息(字符串)。
- developer.rpy
这个文件包含的字符串面向创作者,而不是玩家。
- error.rpy
这个文件包含的字符串,会在Ren’Py出现故障时,向开发者或玩家显示。
- gui.rpy
这个文件包含默认GUI中的注释。
- launcher.rpy
这个文件包含的字符串是启动器显示的一部分。
- obsolete.rpy
这个文件里的字符串,当前Ren’Py已经不使用。
- options.rpy
这个文件里的字符串,替换默认options.rpy文件中的注释。
- screens.rpy
这个文件包含的字符串用于替换screens.rpy文件中的默认GUI和注释。
- script.rpym
创建新工程时,这个文件的内容会一字不差地复制到script.rpy。
- style.rpy
默认情况下这个文件不存在,有需要时可以创建。它配置了启动器样式(style),及生成游戏的默认字体。
指定语言 link
还有一种非直接替换的多语言实现方式。 “{#language name and font}” 在翻译文件中会被替换为对应语言的名称, 如果使用的是非ASCII码字符,可以选择转为启动器字体。 例如:
translate french strings:
old "{#language name and font}"
new "{font=fonts/Roboto-Light.ttf}Français{/font}"
如果启动器语言与翻译文件中指定的语言不一致时,可以使用这种方式显示语言名称。
翻译文件中,其他以“{#in language font}”开头的内容都需要以类似方式转换。 例如:
translate french strings:
old "{#in language font}Start using Ren'Py in [lang_name]"
new "{font=fonts/Roboto-Light.ttf}Commencez à utiliser Ren'Py en [lang_name]{/font}"
修改字体 link
Ren’Py自带的默认字体(DejaVuSans)涵盖了大多数的西方语言,不过经常会需要用到其他字体。编辑 launcher/game/tl/language/style.rpy
文件可以配置字体,比如添加字体:
init python:
translate_font("language", "myfont.ttf")
“language”是需要使用的语言类型(例如,“japanese”),“myfont.ttf”是使用的字体(例如,“MTLc3m.ttf”)。字体文件应该放在 launcher/game/tl/language
目录,这样就可以被启动器找到。
修改启动器样式 link
启动器使用的样式可以配置,方法是在一个translate python语句块中设置一些变量。具体的变量名如下。变量名比较容易混淆,影响英语版本。
这些变量仅对启动器有效。
- define gui.LIGHT_FONT = "Roboto-Light.ttf" link
启动器中通用文本使用字体的路径。
- define gui.REGULAR_FONT = "Roboto-Regular.ttf" link
启动器中重点文本使用的字体路径。
- define gui.REGULAR_BOLD = False link
若为True,重点文本加粗。
- define gui.FONT_SCALE = 1.0 link
启动器中应用于所有文本的缩放系数。
一个 translate python
语句块常用于设置这些变量。例如,下面的脚本修改了Ren’Py的阿拉伯语字体。:
translate arabic python:
gui.REGULAR_FONT = "DejaVuSans.ttf"
gui.LIGHT_FONT = "DejaVuSans.ttf"
gui.FONT_SCALE = .9
gui.REGULAR_BOLD = True
函数 link
下列函数用于配置启动器中的多语言支持。在init python语句块中调用这些函数。
- translate_font(language, font) link
这个函数用于设置 language 的字体。设置后的字体不仅用在启动器,也用于使用那种语言生成的游戏中。字体文件应该放在game/fonts目录中。
- font
一个字符串,表示字体文件名。
- translate_define(language, define, value, help=None) link
这个函数在生成游戏是设置一个define。例如,可以用于修改字体的字号。
- language
适用的语言。
- define
define的名称。
- value
一个字符串,表示define设置的值。(例如,“10”、“False”、“’Font.ttf’”。)
- comment
若不是None,会在define之前生成一个注释。仅当gui.rpy中不存在那个define的情况下,才会生成注释。不需要在开头使用“## ”,生成注释时会自动添加。
举例,下面的代码修改了对话文本的字号:
translate_define("martian", "gui.text_size", 12)