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"]

Щоб додати перекладний рядок, пов’язаний із контекстом, множиною чи коментарем:

# Це додасть повідомлення з msgid «Тест 1», msgctxt «контекст», msgid_plural «тест 1 множини» та коментар «тест 1 коментар».
ret.append(PackedStringArray(["Тест 1", "контекст", "тест 1 множини", "тест 1 коментар"]))
# Це додасть повідомлення з msgid "Тест без контексту" та msgid_plural "множина".
ret.append(PackedStringArray(["Тест без контексту", "", "множина"]))
# Це додасть повідомлення з msgid "Тільки з контекстом" і msgctxt "дружній контекст".
ret.append(PackedStringArray(["Тільки з контекстом", "дружній контекст"]))

Примітка: Якщо ви замінюєте логіку аналізу для стандартних типів сценаріїв (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 🔗

Зазначте цей метод, щоб визначити логіку, що підписує перекладацькі рядки.