EditorTranslationParserPlugin

继承: RefCounted < Object

用于添加自定义解析器以提取要从自定义文件(. csv、.json等)中翻译的字符串的插件。

描述

EditorTranslationParserPlugin在解析文件以提取需要翻译的字符串时被调用。要定义解析和字符串提取逻辑,请覆盖脚本中的_parse_file()方法。

返回值应该是PackedStringArrayArray,每个提取的可翻译字符串对应一个。每个条目应该包含[msgid, msgctxt, msgid_plural, comment],其中除了msgid之外的所有条目都是可选的。空字符串将被忽略。

提取的字符串将被写入用户在“项目设置”菜单中“本地化”选项卡中"POT生成"下选择的POT文件中。

下面显示了一个自定义解析器示例,该解析器从CSV文件中提取字符串以写入POT。

@tool
extends EditorTranslationParserPlugin

func _parse_file(path):
    var ret: Array[PackedStringArray] = []
    var file = FileAccess.open(path, FileAccess.READ)
    var text = file.get_as_text()
    var split_strs = text.split(",", false)
    for s in split_strs:
        ret.append(PackedStringArray([s]))
        #print("Extracted string: " + s)

    return ret

func _get_recognized_extensions():
    return ["csv"]

To add a translatable string associated with a context, plural, or comment:

ret.append(PackedStringArray(["Test 1", "context", "test 1 plurals", "test 1 comment"]))
ret.append(PackedStringArray(["A test without context", "", "plurals"]))
ret.append(PackedStringArray(["Only with context", "a friendly context"]))

注意: 如果您对标准脚本类型(如 S3Script、C# 等)的解析逻辑进行了修改,那么最好使用 ResourceLoader.load() 来加载 path 参数。这是因为内置脚本是以 Resource 类型而非 FileAccess 类型的形式加载的。例如:

func _parse_file(path):
    var res = ResourceLoader.load(path, "Script")
    var text = res.source_code
    # 解析逻辑。

func _get_recognized_extensions():
    return ["s3"]

要使用EditorTranslationParserPlugin,首先要使用EditorPlugin.add_translation_parser_plugin()方法进行注册。

方法


方法说明

PackedStringArray _get_recognized_extensions() virtual const 🔗

获取要与此解析器关联的文件扩展名列表,例如["csv"]


Array[PackedStringArray] _parse_file(path: String) virtual 🔗

重写此方法以定义自定义解析逻辑以提取可翻译字符串。