Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

EditorTranslationParserPlugin

Успадковує: RefCounted < Object

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

Опис

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

Значенням, що повертається, має бути масив Array з елементами типу PackedStringArray, по одному для кожного вилученого рядка, що підлягає перекладу. Кожен запис повинен містити [msgid, msgctxt, msgid_plural, comment, source_line], де всі елементи, крім msgid, є необов'язковими. Порожні рядки будуть проігноровані.

Витягнуті рядки будуть записані у файл шаблону перекладу, обраний користувачем у розділі «Створення шаблону» на вкладці «Локалізація» в меню «Налаштування проекту».

Нижче наведено приклад власного парсера, який витягує рядки з файлу CSV для запису в шаблон.

@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("Витягнутий рядок: " + s)

 return ret

func _get_recognized_extensions():
 return ["csv"]

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

# Це додасть повідомлення з msgid "Test 1", msgctxt "context", msgid_plural "test 1 plurals", comment "test 1 comment" та рядком джерела "7".
ret.append(PackedStringArray(["Test 1", "context", "test 1 plurals", "test 1 comment", "7"]))
# Це додасть повідомлення з 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(["Тільки з контекстом", "дружній контекст"]))

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

Крім того, плагін може безпосередньо змінювати кінцевий список рядків, реалізувавши _customize_strings().

Щоб використовувати EditorTranslationParserPlugin(), спочатку зареєструйте його за допомогою методу EditorPlugin.add_translation_parser_plugin().

Методи

Array[PackedStringArray]

_customize_strings(strings: Array[PackedStringArray]) virtual const

PackedStringArray

_get_recognized_extensions() virtual const

Array[PackedStringArray]

_parse_file(path: String) virtual


Описи методів

Array[PackedStringArray] _customize_strings(strings: Array[PackedStringArray]) virtual const 🔗

Викликається після аналізу всіх файлів. Ви можете змінити масив strings, щоб додати або видалити елементи з остаточного списку рядків, а потім повернути його після внесення змін. Кожен елемент є масивом PackedStringArray, як описано в описі EditorTranslationParserPlugin.

@tool
extends EditorTranslationParserPlugin

func _customize_strings(strings):
    # Add new string.
    strings.append(["Test 1", "context", "test 1 plurals", "test 1 comment"])

    # Remove all strings that begin with $.
    strings = strings.filter(func(s): return not s[0].begins_with("$"))

    return strings

PackedStringArray _get_recognized_extensions() virtual const 🔗

Список розширень файлів, пов'язаних з цим парсером, наприклад ["csv"].


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

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