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, a un plurale o a un commento:
# Questo aggiungerà un messaggio con msgid "Test 1", msgctxt "contesto" e msgid_plural "test 1 plurals" e commento "test 1 commento".
ret.append(PackedStringArray(["Test 1", "contesto", "test 1 plurali", "test 1 commento"]))
# 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" e commento "test 1 commento".
ret.Add(["Test 1", "contesto", "test 1 plurali", "test 1 commento"]);
// 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"];
}
Per utilizzare EditorTranslationParserPlugin, registrarlo prima attraverso il metodo EditorPlugin.add_translation_parser_plugin().
Metodi
_get_recognized_extensions() virtual const |
|
_parse_file(path: String) virtual |
Descrizioni dei metodi
PackedStringArray _get_recognized_extensions() virtual const 🔗
Ottiene la lista 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.