(此为本人第一次编写的Godot相关教程,不敢保证是否会有错误,倘若有误,还请佬友在下方指正。)
问题?
动机? (点击了解更多详细信息)有时,在编写自定义资源时,你会遇到这种情况:
这是某个物品资源的脚本。
@export导出的变量得占据相当大的屏幕空间。
如果能把右侧面板上这些导出变量翻译为中文,对于屏幕比较小的开发者来说,会能节省更多空间吧?(多少也方便你们组里的数值策划干活吧?)
#思路?
直接用中文写变量是不是就不用本地化了? (点击了解更多详细信息) 有没有更好的办法? (点击了解更多详细信息)已知:
- Godot 支持
属性本地化。如果属性有翻译,那么就会自动将变量翻译为你的语言。 工具脚本或插件可以将自定义翻译,插入引擎当前的翻译数据里。
总而言之:
Godot有完善的翻译功能。如果在编辑器里执行某些方法,将这些变量的翻译手动注入TranslationServer中,就能让编辑器显示已翻译文本了!
方法?
既然思路有了,让我们开始吧。
在Godot里,编辑器内(而非游戏内)运行脚本最方便的办法就是创建EditorScript。
随便创建一个文件,编写脚本。
(注释解释了流程。如果您看不懂,请展开下面两个段落。)
如果您不知道 EditorScript 是什么,请点击这里 (点击了解更多详细信息) 如果您不了解TranslationServer,请点击这里 (点击了解更多详细信息) 如果您不了解TranslationDomain,请点击这里 (点击了解更多详细信息) 如果您还是不明白这脚本做了什么,请点击这里 (点击了解更多详细信息)运行!
让我们执行这个脚本。神奇的事情发生了: 右侧变量中 “Item Name” 被成功以中文显示了!
这是怎么回事?
我们刚刚获取了引擎的属性翻译域 godot.properties,并手动注入了 "Item Name" -> “物品名称”的翻译。
编辑器在一开始,会将 item_name 将下划线替代为空格,首字母大写,于是显示为Item Name。
随后,编辑器在自己的翻译域 godot.properties 中找到了 Item Name -> 物品名称 这样的一条翻译。目标语言匹配,于是立刻以这条翻译中的文本来显示该变量的名称。
于是,我们就完成了对这一导出变量的翻译。
趁热打铁吧!
让我们稍微增加一点条目,运行:
右侧的变量面板内自定义导出参数被全部本地化了!相较于原始英文文本,是不是增加了不少可读性呢?
注意:拥有
@tool注释的Resource的导出属性似乎不会被自动翻译?
在插件中操作!
TranslationServer 不会 自动保存内部的翻译条目。这代表如果每次我们想进行翻译,我们都得手动调用该工具脚本,这有点麻烦。有什么方便的办法呢?
我们可以创建一个插件,把我们的翻译内容写在插件里。
我将先前的 add_message 改为了使用字典,这样一来,修改会更加方便。
启用该插件,你可以看到,再次打开该资源时,显示的仍然是 已翻译 后的文本了。
总结:
翻译自定义属性并不麻烦。只要找到合适的方法,就能让你的编辑器使用的更加顺手。
1 个帖子 - 1 位参与者