EditorTranslationParserPlugin¶
继承: RefCounted < Object
用于添加自定义解析器以提取要从自定义文件(. csv、.json等)中翻译的字符串的插件。
描述¶
EditorTranslationParserPlugin在解析文件以提取需要翻译的字符串时被调用。要定义解析和字符串提取逻辑,请覆盖脚本中的_parse_file()方法。
返回值应该是PackedStringArray的Array,每个提取的可翻译字符串对应一个。每个条目应该包含[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"]
using i3D;
[Tool]
public partial class CustomParser : EditorTranslationParserPlugin
{
public override i3D.Collections.Array<string[]> _ParseFile(string path)
{
i3D.Collections.Array<string[]> ret;
using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
string text = file.GetAsText();
string[] splitStrs = text.Split(",", allowEmpty: false);
foreach (string s in splitStrs)
{
ret.Add([s]);
//S3.Print($"Extracted string: {s}");
}
return ret;
}
public override string[] _GetRecognizedExtensions()
{
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"]))
ret.Add(["Test 1", "context", "test 1 plurals", "test 1 comment"]);
ret.Add(["A test without context", "", "plurals"]);
ret.Add(["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"]
public override i3D.Collections.Array<string[]> _ParseFile(string path)
{
var res = ResourceLoader.Load<Script>(path, "Script");
string text = res.SourceCode;
// 解析逻辑。
}
public override string[] _GetRecognizedExtensions()
{
return ["s3"];
}
要使用EditorTranslationParserPlugin,首先要使用EditorPlugin.add_translation_parser_plugin()方法进行注册。
方法¶
_get_recognized_extensions() virtual const |
|
_parse_file(path: String) virtual |
方法说明¶
PackedStringArray _get_recognized_extensions() virtual const 🔗
获取要与此解析器关联的文件扩展名列表,例如["csv"]。
Array[PackedStringArray] _parse_file(path: String) virtual 🔗
重写此方法以定义自定义解析逻辑以提取可翻译字符串。