reckfellENGINE

EditorTranslationParserPlugin

Plugin for adding custom parsers to extract strings that are to be translated from custom files (.csv, .json etc.).

On this page
class EditorTranslationParserPluginReckfellSharpEditorInherits RefCounted

Plugin for adding custom parsers to extract strings that are to be translated from custom files (.csv, .json etc.).

EditorTranslationParserPlugin is invoked when a file is being parsed to extract strings that require translation. To define the parsing and string extraction logic, override the EditorTranslationParserPlugin._ParseFile method in script. The return value should be an Reckfell.Collections.Array of string[]s, one for each extracted translatable string. Each entry should contain [msgid, msgctxt, msgid_plural, comment, source_line], where all except msgid are optional. Empty strings will be ignored. The extracted strings will be written into a translation template file selected by user under "Template Generation" in "Localization" tab in "Project Settings" menu. Below shows an example of a custom parser that extracts strings from a CSV file to write into a template.

C#
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"];
    }
}

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

C#
// 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"]);

Note: If you override parsing logic for standard script types (C#, C#, etc.), it would be better to load the path argument using ResourceLoader.Load. This is because built-in scripts are loaded as Resource type, not FileAccess type. For example:

C#
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"];
}

Alternatively, the plugin can directly modify the final list of strings, by implementing EditorTranslationParserPlugin._CustomizeStrings. To use EditorTranslationParserPlugin, register it using the EditorPlugin.AddTranslationParserPlugin method first.

Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.

Constructors1

EditorTranslationParserPluginConstructor
# EditorTranslationParserPlugin
C#
public EditorTranslationParserPlugin();

Methods3

_CustomizeStringsReckfell.Collections.Array<string[]>
# _CustomizeStrings
C#
public virtual Reckfell.Collections.Array<string[]> _CustomizeStrings(Reckfell.Collections.Array<string[]> strings);

Called after parsing all files. You can modify the strings array to add or remove entries from the final list of strings, then return it after modifications. Each entry is a string[] like explained in the EditorTranslationParserPlugin's description.

Parameters
NameTypeDefault
stringsReckfell.Collections.Array<string[]>—
Returns Reckfell.Collections.Array<string[]>
_GetRecognizedExtensionsstring[]
# _GetRecognizedExtensions
C#
public virtual string[] _GetRecognizedExtensions();

Gets the list of file extensions to associate with this parser, e.g. ["csv"].

Returns string[]
_ParseFileReckfell.Collections.Array<string[]>
# _ParseFile
C#
public virtual Reckfell.Collections.Array<string[]> _ParseFile(string path);

Override this method to define a custom parsing logic to extract the translatable strings.

Parameters
NameTypeDefault
pathstring—
Returns Reckfell.Collections.Array<string[]>
Reckfell Engine documentationBack to top ↑
QUICK LINKSGetting startedEntity hierarchyC# & .NET 10Scenes and prefabs
Reckfell guides and full API K
reckfellENGINE
RECKFELL ACCOUNT

Sign in

Sign in to your Reckfell account.

One account for the entire Reckfell platform.