【Godot小教程】:通过向TranslationServer添加翻译,手动本地化 @export 导出的变量,让你的编辑器更直观!

(此为本人第一次编写的Godot相关教程,不敢保证是否会有错误,倘若有误,还请佬友在下方指正。) 问题? 动机? (点击了解更多详细信息) 有时,在编写自定义资源时,你会遇到这种情况: 这是某个物品资源的脚本。 @export导出的变量得占据相当大的屏幕空间 。 如果能把右侧面板上这些导出变量 翻译...
【Godot小教程】:通过向TranslationServer添加翻译,手动本地化 @export 导出的变量,让你的编辑器更直观!
【Godot小教程】:通过向TranslationServer添加翻译,手动本地化 @export 导出的变量,让你的编辑器更直观!

(此为本人第一次编写的Godot相关教程,不敢保证是否会有错误,倘若有误,还请佬友在下方指正。)


问题?

动机? (点击了解更多详细信息)

有时,在编写自定义资源时,你会遇到这种情况:

图片

这是某个物品资源的脚本。

@export导出的变量得占据相当大的屏幕空间

如果能把右侧面板上这些导出变量翻译为中文,对于屏幕比较小的开发者来说,会能节省更多空间吧?(多少也方便你们组里的数值策划干活吧?)


#思路?

直接用中文写变量是不是就不用本地化了? (点击了解更多详细信息) 有没有更好的办法? (点击了解更多详细信息)

已知:

  1. Godot 支持 属性本地化 。如果属性有翻译,那么就会自动将变量翻译为你的语言。
  2. 工具脚本插件 可以将自定义翻译,插入引擎当前的翻译数据里。

总而言之:

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 位参与者

阅读完整话题

来源: linux.do查看原文