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.
Checking the stable version of the documentation...
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"]
using Godot;
[Tool]
public partial class CustomParser : EditorTranslationParserPlugin
{
public override Godot.Collections.Array<string[]> _ParseFile(string path)
{
Godot.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]);
//GD.Print($"Stringa estratta: {s}");
}
return ret;
}
public override string[] _GetRecognizedExtensions()
{
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"]))
// Questo aggiungerà un messaggio con msgid "Test 1", msgctxt "contesto" e msgid_plural "test 1 plurali", commento "test 1 commento" e riga sorgente "7" .
ret.Add(["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.Add(["Un test senza contesto", "", "plurali"]);
// Questo aggiungerà un messaggio con msgid "Solo con contesto" e msgctxt "un contesto leggibile".
ret.Add(["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"]
public override Godot.Collections.Array<string[]> _ParseFile(string path)
{
var res = ResourceLoader.Load<Script>(path, "Script");
string text = res.SourceCode;
// Logica di analisi.
}
public override string[] _GetRecognizedExtensions()
{
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
_customize_strings(strings: Array[PackedStringArray]) virtual const |
|
_get_recognized_extensions() virtual const |
|
_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.