使用“自动翻译”

question

我想使用 po 格式翻译我的“显示文本”操作中的文本。我将场景放入 pot 生成器中,特意选择了这个 tscn 文件,因为它包含了“显示文本”操作中的文本。

problem

然而,在 poedit 中加载时,它却显示为空,原因不明。

我尝试了多次,但都没有结果。是我操作有误,还是在放入 pot 生成器之前需要先做一些其他操作吗?

我认为空的 POT 文件是预期内的,你的方面没有问题。Godot 的 POT 生成器只知道如何从标准来源提取字符串,例如 Label 或 Button 节点上的 text 属性,或者脚本中的 tr() 调用。Display Text 动作中的文本存储在 AGMaker 的 Visual Script 数据中,生成器无法读取这些数据,因此找不到任何可提取的内容。

AGMaker 在该动作上确实有自己的翻译钩子。如果你查看 Display Text 动作上的 Text Source,你会看到 Direct 旁边有一个 Transkey 选项,它引用的是翻译键而不是输入的文本。

既然你启用了 Auto Translate,我建议你尝试在 Poedit 中手动添加条目,其中源字符串与输入到动作中的文本完全匹配,然后在你的项目中加载该翻译,看看它是否在运行时进行了替换。

好吧,一开始确实有点让人困惑,但我还是成功让它在我的过场动画中生效了。它原本应该显示“与此同时”,结果成功翻译成了“mientras tanto”。我想它会根据玩家电脑的语言设置自动翻译。比如,我的电脑是西班牙语,所以显示的是西班牙语版本……我理解得对吗?

是的,你说得对。默认情况下,Godot 会读取玩家系统的语言,并自动选择匹配的语言包,这就是为什么你的电脑设置为西班牙语时会显示西班牙语文本。如果某种语言没有对应的翻译,游戏将直接显示你在操作中输入的原始文本,因此缺失的语言不会导致任何问题。

此外,还有一个名为 internationalization/locale/test 的项目设置,它可以强制游戏以特定语言运行,而不受你电脑系统设置的影响,这样你就可以在不更改系统语言的情况下预览每种语言。你可能需要在项目设置中开启“高级设置”才能看到该选项。

如果你希望在游戏中添加语言选择器,而不是跟随系统设置,这也是可以通过自定义操作实现的。如果你将来需要这方面的功能,欢迎在这里或 Discord 上提问,我会很乐意为你制作,或者由其他社区成员提供帮助。

3 个赞

哇,太棒了,谢谢!我一直在测试,效果出奇地好。