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

Eredita: RefCounted < Object

Estensione per aggiungere parser personalizzati per estrarre stringhe da tradurre dai file personalizzati (.csv, .json ecc.).

Descrizione

EditorTranslationParserPlugin viene richiamato quando un file viene analizzato per estrarre stringhe che richiedono una traduzione. Per definire la logica di analisi ed estrazione delle stringhe, sovrascrivi il metodo _parse_file() da script.

Il valore restituito dovrebbe essere un Array di PackedStringArray, uno per ogni stringa traducibile estratta. Ogni voce dovrebbe contenere [msgid, msgctxt, msgid_plural, comment], dove tutti tranne msgid sono facoltativi. Le stringhe vuote verranno ignorate.

Le stringhe estratte verranno inserite in un file POT selezionato dall'utente in "Generazione del POT" nella scheda "Localizzazione" nel menu "Impostazioni del progetto".

Di seguito è riportato un esempio di un parser personalizzato che estrae stringhe da un file CSV per scriverle in un 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("Stringa estratta: " + s)

    return ret

func _get_recognized_extensions():
    return ["csv"]

Per aggiungere una stringa traducibile associata a un contesto, plurale, commento o riga sorgente:

# Questo aggiungerà un messaggio con msgid "Test 1", msgctxt "contesto", msgid_plural "test 1 plurals", commento "test 1 commento" e riga sorgente "7" .
ret.append(PackedStringArray(["Test 1", "contesto", "test 1 plurali", "test 1 commento", "7"]))
# Questo aggiungerà un messaggio con msgid "Un test senza contesto" e msgid_plural "plurali".
ret.append(PackedStringArray(["Un test senza contesto", "", "plurali"]))
# Questo aggiungerà un messaggio con msgid "Solo con contesto" e msgctxt "un contesto leggibile".
ret.append(PackedStringArray(["Solo con contesto", "un contesto leggibile"]))

Nota: Se si sovrascrive la logica di analisi per i tipi di script standard (GDScript, C#, ecc.), sarebbe meglio caricare l'argomento path tramite ResourceLoader.load(). Questo perché gli script integrati sono caricati come tipo Resource, non come tipo FileAccess. Ad esempio:

func _parse_file(path):
    var res = ResourceLoader.load(path, "Script")
    var text = res.source_code
    # Logica di analisi.

func _get_recognized_extensions():
    return ["gd"]

Alternativamente, l'estensione può modificare direttamente l'elenco finale delle stringhe, implementando _customize_strings().

Per utilizzare EditorTranslationParserPlugin, registrarlo prima attraverso il metodo EditorPlugin.add_translation_parser_plugin().

Metodi

Array[PackedStringArray]

_customize_strings(strings: Array[PackedStringArray]) virtual const

PackedStringArray

_get_recognized_extensions() virtual const

Array[PackedStringArray]

_parse_file(path: String) virtual


Descrizioni dei metodi

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

Chiamata dopo aver analizzato tutti i file. È possibile modificare l'array strings per aggiungere o rimuovere voci dall'elenco finale di stringhe, poi restituirlo dopo le modifiche. Ogni voce è un PackedStringArray come spiegato nella descrizione di EditorTranslationParserPlugin.

@tool
extends EditorTranslationParserPlugin

func _customize_strings(strings):
    # Aggiungi una nuova stringa.
    strings.append(["Test 1", "context", "test 1 plurals", "test 1 comment"])

    # Rimuovi tutte le stringhe che iniziano con $.
    strings = strings.filter(func(s): return not s[0].begins_with("$"))

    return strings

PackedStringArray _get_recognized_extensions() virtual const 🔗

Ottiene l'elenco delle estensioni di file da associare a questo parser, ad esempio ["csv"].


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

Sovrascrivi questo metodo per definire una logica di analisi personalizzata per estrarre le stringhe da tradurre.