EditorTranslationParserPlugin
Плагин для добавления пользовательских парсеров для извлечения строк, которые необходимо перевести, из пользовательских файлов (.csv, .json и т. д.).
Плагин для добавления пользовательских парсеров для извлечения строк, которые необходимо перевести, из пользовательских файлов (.csv, .json и т. д.).
EditorTranslationParserPlugin вызывается при разборе файла для извлечения строк, требующих перевода. Для определения логики разбора и извлечения строк переопределите метод EditorTranslationParserPlugin._ParseFile в скрипте.
Возвращаемое значение должно представлять собой массив Reckfell.Collections.Array из string[], по одному для каждой извлеченной переводимой строки. Каждая запись должна содержать [msgid, msgctxt, msgid_plural, comment, source_line], где все, кроме msgid, являются необязательными. Пустые строки будут игнорироваться.
Извлеченные строки будут записаны в файл шаблона перевода, выбранный пользователем в разделе «Генерация шаблонов» на вкладке «Локализация» в меню «Настройки проекта».
Ниже приведен пример пользовательского парсера, который извлекает строки из CSV-файла для записи в шаблон.
using Reckfell;
[Tool]
public partial class CustomParser : EditorTranslationParserPlugin
{
public override Reckfell.Collections.Array<string[]> _ParseFile(string path)
{
Reckfell.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]);
//ReckfellApi.Print($"Extracted string: {s}");
}
return ret;
}
public override string[] _GetRecognizedExtensions()
{
return ["csv"];
}
}Чтобы добавить переводимую строку, связанную с контекстом, множественным числом, комментарием или исходной строкой:
// This will add a message with msgid "Test 1", msgctxt "context", msgid_plural "test 1 plurals", comment "test 1 comment", and source line "7".
ret.Add(["Test 1", "context", "test 1 plurals", "test 1 comment", "7"]);
// This will add a message with msgid "A test without context" and msgid_plural "plurals".
ret.Add(["A test without context", "", "plurals"]);
// This will add a message with msgid "Only with context" and msgctxt "a friendly context".
ret.Add(["Only with context", "a friendly context"]);Примечание: Если вы отменяете логику обработки типов стандартных сценариев (C#, C# и т.д.), то лучше загрузить path аргументация с использованием ResourceLoader.Load. Это объясняется тем, что встроенные сценарии загружаются как Resource тип, нет FileAccess Тип: например:
public override Reckfell.Collections.Array<string[]> _ParseFile(string path)
{
var res = ResourceLoader.Load<Script>(path, "Script");
string text = res.SourceCode;
// Parsing logic.
}
public override string[] _GetRecognizedExtensions()
{
return ["gd"];
}В качестве альтернативы, лейбин может непосредственно модифицировать окончательный список строк, реализуя EditorTranslationParserPlugin._CustomizeStrings.
Использовать EditorTranslationParserPlugin, регистрировать его с использованием EditorPlugin.AddTranslationParserPlugin Сначала метод.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
EditorTranslationParserPluginКонструктор
public EditorTranslationParserPlugin();Методы3
_CustomizeStringsReckfell.Collections.Array<string[]>
public virtual Reckfell.Collections.Array<string[]> _CustomizeStrings(Reckfell.Collections.Array<string[]> strings);Вызывается после анализа всех файлов. Вы можете изменить массив strings, чтобы добавить или удалить элементы из итогового списка строк, а затем вернуть его после внесения изменений. Каждый элемент представляет собой string[], как объяснено в описании EditorTranslationParserPlugin.
*########get_related_relations
| Имя | Тип | По умолчанию |
|---|---|---|
strings | Reckfell.Collections.Array<string[]> | — |
Reckfell.Collections.Array<string[]>_GetRecognizedExtensionsstring[]
public virtual string[] _GetRecognizedExtensions();Получает список расширений файлов для связи с этим анализатором, например, ["csv"].
string[]_ParseFileReckfell.Collections.Array<string[]>
public virtual Reckfell.Collections.Array<string[]> _ParseFile(string path);Переопределите этот метод, чтобы определить пользовательскую логику анализа для извлечения переводимых строк.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
Reckfell.Collections.Array<string[]>