翻译与本地化
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“翻译与本地化”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
translateGenerate Translationsstringslanguagefonts
可运行示例
text
translate schinese start_8e3jf2a1:
# e "Hello, world!"
e "你好,世界!"教程正文
Ren'Py 内置完整的本地化系统:能自动提取对话与界面文字,生成翻译模板,按语言切换。 (注:本系列文档本身是“给开发者看的中文教程”;本章讲的是“如何把你的游戏翻译成多语言”。)
1. 工作流总览
- 用英文/原文写好游戏。
- 启动器 → Generate Translations,选目标语言(如
schinese),生成game/tl/<语言>/。 - 翻译生成的
.rpy文件里的字符串。 - 运行时用
config.language或菜单切换语言。
2. 生成的目录结构
game/tl/
├── None/ # 原文(默认语言)
├── schinese/ # 简体中文
│ ├── script.rpy # 对话翻译(translate 块)
│ ├── common.rpy # 引擎通用 UI 文本
│ └── ...
└── japanese/3. 对话翻译(translate 块)
生成的对话翻译形如:
text
translate schinese start_8e3jf2a1:
# e "Hello, world!"
e "你好,世界!"start_8e3jf2a1是引擎按文件/行生成的唯一 id,不要改。- 注释行是原文,下面一行填译文。
4. 界面/字符串翻译
界面里硬编码的字符串用 translate strings 块或 _() 标记:
text
translate schinese strings:
old "New Game"
new "新游戏"
old "Quit"
new "退出"代码里要被翻译的字符串包一层 _()(运行期按当前语言查表):
text
textbutton _("Settings") action ShowMenu("preferences")
$ msg = _("You found a key!")
_("...")标记“可翻译字符串”,是本地化的关键习惯:所有给玩家看的硬编码英文都该包_()。
5. 切换语言
text
# 设为简体中文(None 表示原文)
$ renpy.change_language("schinese")
# 在设置界面里给语言按钮
textbutton "简体中文" action Language("schinese")
textbutton "English" action Language(None)config.language 设默认语言。8.5 起可用 config.enable_language_autodetect + config.locale_to_language_map 自动按系统区域选语言。
6. 不同语言用不同字体
中文/日文需要 CJK 字体,可在切语言时换字体:
text
translate schinese python:
gui.text_font = "fonts/SourceHanSansSC-Regular.otf"
gui.name_text_font = "fonts/SourceHanSansSC-Bold.otf"或用 config.font_replacement_map 做字体替换。
7. 翻译图片 / 语音
- 含文字的图片可放到
tl/<语言>/同名路径覆盖(图片本地化)。 - 语音可按语言放不同目录,配合
config.auto_voice。
8. RTL 语言(阿拉伯语/希伯来语)
8.5:默认启用 RTL 支持,不再需要手动设
config.rtl。文字会自动从右到左排版。
9. 提取与维护
- 改了原文后重新 Generate Translations,引擎会追加新条目、保留已译条目。
- 用 “Extract dialogue” 可把对话导出为表格交给译者,再导回。
- 发布前对每种语言跑一次 Lint 检查缺失翻译。
常见坑
- 翻译 id(如
start_8e3jf2a1)是机器生成的锚点,绝不要手改。 - 硬编码界面文字忘了包
_()→ 永远翻译不到。 - 中文翻译没换字体 → 显示成方块/空白。
- 改原文顺序/内容会生成新 id,旧译文可能变“孤儿”,重新生成后核对。
官方参考
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
