EditorTranslationParserPlugin

Наследует: RefCounted < Object

Плагин для добавления пользовательских парсеров для извлечения строк, которые необходимо перевести, из пользовательских файлов (.csv, .json и т. д.).

Описание

EditorTranslationParserPlugin вызывается, когда файл анализируется для извлечения строк, требующих перевода. Чтобы определить логику анализа и извлечения строк, переопределите метод _parse_file() в скрипте.

Возвращаемое значение должно быть Array из PackedStringArray, по одному для каждой извлеченной переводимой строки. Каждая запись должна содержать [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"]

Чтобы добавить переводимую строку, связанную с контекстом, множественным числом или комментарием:

# Это добавит сообщение с msgid "Test 1", msgctxt "context", msgid_plural "test 1 plurals", и комментарий "test 1 comment".
ret.append(PackedStringArray(["Test 1", "context", "test 1 plurals", "test 1 comment"]))
# Это добавит сообщение с msgid "A test without context" и msgid_plural "plurals".
ret.append(PackedStringArray(["A test without context", "", "plurals"]))
# Это добавит сообщение с msgid "Only with context" и msgctxt "a friendly context".
ret.append(PackedStringArray(["Only with context", "a friendly context"]))

Примечание: Если вы переопределяете логику синтаксического анализа для стандартных типов скриптов (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"]

Чтобы использовать EditorTranslationParserPlugin, сначала зарегистрируйте его с помощью метода EditorPlugin.add_translation_parser_plugin().

Методы

PackedStringArray

_get_recognized_extensions() virtual const

Array[PackedStringArray]

_parse_file(path: String) virtual


Описания метода

PackedStringArray _get_recognized_extensions() virtual const 🔗

Получает список расширений файлов для связи с этим анализатором, например, ["csv"].


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

Переопределите этот метод, чтобы определить пользовательскую логику анализа для извлечения переводимых строк.