EditorTranslationParserPlugin
Успадковує: RefCounted < Object
Плагін для додавання користувацьких парсерів для вилучення рядків, які повинні бути перекладені з користувацьких файлів (.csv, .json тощо).
Опис
EditorTranslationParserPlugin викликається, коли файл аналізується для вилучення рядків, які потребують перекладу. Щоб визначити логіку парсингу та вилучення рядків, перевизначте метод _parse_file() у скрипті.
Поверненим значенням має бути Array PackedStringArrays, по одному для кожного вилученого перекладуваного рядка. Кожен запис має містити [msgid, msgctxt, msgid_plural, comment], де всі, крім msgid, є необов’язковими. Порожні рядки ігноруватимуться.
Витягнуті рядки будуть записані у POT-файл, вибраний користувачем у розділі "Генерація POT" на вкладці "Локалізація" в меню "Налаштування проекту".
Нижче наведено приклад спеціального аналізатора, який витягує рядки з файлу CSV для запису в POT.
@tool
extends EditorTranslationParserPlugin
func _parse_file(path):
було правильно: Array[PackedStringArray] = []
var file = FileAccess.open(шлях, FileAccess.READ)
var text = file.get_as_text()
var split_strs = text.split(",", false)
для s у split_strs:
ret.append(PackedStringArray([s]))
#print("Видобутий рядок: " + s)
return ret
func _get_recognized_extensions():
return ["csv"]
using Godot;
[Tool]
public partial class CustomParser : EditorTranslationParserPlugin
{
public override Godot.Collections.Array<string[]> _ParseFile(string path)
{
Godot.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 у splitStrs)
{
ret.Add([s]);
//GD.Print($"Видобутий рядок: {s}");
}
return ret;
}
public override string[] _GetRecognizedExtensions()
{
return ["csv"];
}
}
Щоб додати перекладний рядок, пов’язаний із контекстом, множиною чи коментарем:
# Це додасть повідомлення з msgid «Тест 1», msgctxt «контекст», msgid_plural «тест 1 множини» та коментар «тест 1 коментар».
ret.append(PackedStringArray(["Тест 1", "контекст", "тест 1 множини", "тест 1 коментар"]))
# Це додасть повідомлення з msgid "Тест без контексту" та msgid_plural "множина".
ret.append(PackedStringArray(["Тест без контексту", "", "множина"]))
# Це додасть повідомлення з msgid "Тільки з контекстом" і msgctxt "дружній контекст".
ret.append(PackedStringArray(["Тільки з контекстом", "дружній контекст"]))
// Це додасть повідомлення з msgid "Test 1", msgctxt "context", msgid_plural "test 1 plurals" і коментарем "test 1 comment".
ret.Add(["Тест 1", "контекст", "тест 1 множини", "тест 1 коментар"]);
// Це додасть повідомлення з msgid "Тест без контексту" та msgid_plural "plurals".
ret.Add(["Тест без контексту", "", "множина"]);
// Це додасть повідомлення з msgid "Тільки з контекстом" і msgctxt "дружній контекст".
ret.Add(["Тільки з контекстом", "дружній контекст"]);
Примітка: Якщо ви замінюєте логіку аналізу для стандартних типів сценаріїв (GDScript, C# тощо), було б краще завантажити аргумент path за допомогою ResourceLoader.load(). Це тому, що вбудовані сценарії завантажуються як тип Resource, а не як тип FileAccess. Наприклад:
func _parse_file(path):
var res = ResourceLoader.load(path, "Script")
var text = res.source_code
# Логіка розбору.
func _get_recognized_extensions():
return ["gd"]
public override Godot.Collections.Array<string[]> _ParseFile(string path)
{
var res = ResourceLoader.Load<Script>(String, "Script");
string text = res.SourceCode;
// Розбір логіки.
}
public override string[] _GetRecognizedExtensions()
{
return ["gd"];
}
Щоб використовувати 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 🔗
Зазначте цей метод, щоб визначити логіку, що підписує перекладацькі рядки.