Stringtabellen bieten eine Möglichkeit, Ihren lokalisierten Text an einem (oder mehreren) bekannten Speicherorten zu zentralisieren und dann die Einträge innerhalb einer Stringtabelle aus anderen Assets oder Codes auf robuste Weise zu referenzieren, was eine einfache Wiederverwendung des lokalisierten Textes erlaubt.
Erstellen von String-Tabellen
Stringtabellen können in C++ definiert, über eine CSV-Datei geladen oder als Asset erstellt werden.
Erstellen von String-Tabellen in C++
String-Tabellen können in C++ mit der Makro-Familie LOCTABLE
erstellt werden.
Makro | Beschreibung |
---|---|
LOCTABLE_NEW |
Erstellt eine leere String-Tabelleninstanz. |
LOCTABLE_FROMFILE_X |
Erstellt eine String-Tabelleninstanz und füllt sie aus der angegebenen CSV-Datei. Bei Verwendung der Variante _ENGINE befindet sich die Datei relativ zum Inhaltsverzeichnis der Engine, und bei Verwendung der Variante _GAME befindet sich die Datei relativ zum Inhaltsverzeichnis des Projekts. |
LOCTABLE_SETSTRING |
Legt einen Eintrag in einer String-Tabelle fest. |
LOCTABLE_SETMETA |
Legt optional Metadaten für einen Eintrag in einer String-Tabelle fest. |
Beispiel:
// Erstellt und füllt eine String-Tabelle nur mit C++
LOCTABLE_NEW("CodeStringTable","CodeStringTable");
LOCTABLE_SETSTRING("CodeStringTable","HelloWorld","Hallo Welt!");
LOCTABLE_SETMETA("CodeStringTable","HelloWorld","Comment","Dies ist ein Kommentar zu Hallo Welt");
LOCTABLE_SETSTRING("CodeStringTable","GoodbyeWorld","Auf Wiedersehen Welt!");
LOCTABLE_SETMETA("CodeStringTable","GoodbyeWorld","Comment","Dies ist ein Kommentar zu Auf Wiedersehen");
Erstellen von String-Tabellen mit CSV
In CSV definierte Zeichenfolgentabellen können mit den LOCTABLE_FROMFILE_X
-Makros geladen oder auch in ein String-Tabellen-Asset importiert / aus einem solchen exportiert werden.
Beispiel:
// Erstellen und füllen einer String-Tabelle aus einer CSV-Datei
LOCTABLE_FROMFILE_GAME("CSVStringTable","CSVStringTable","StringTableCSV/TestStrings.csv");
Das für String-Tabellen verwendete CSV-Format hat zwei obligatorische Spalten, Key und SourceString, wobei alle zusätzlichen Spalten als Metadaten für Ihre String-Tabelleneinträge geparst werden.
Key,SourceString,Comment
"HelloWorld", "Hello World!", "Dies ist ein Kommentar zu Hello World"
"GoodbyeWorld", "Goodbye World!", "Dies ist ein Kommentar zu Goodbye World"
Anführungszeichen in CSV-Dateien werden durch zwei Anführungszeichen ("") anstatt durch Escaping im C-Stil (\") maskiert. Andere Steuerzeichen in Ihrem String (einschließlich Tabulatoren und Zeilenumbrüche) sollten jedoch durch das Escaping im C-Stil maskiert werden.
CSV-String-Tabellen, die mit LOCTABLE_FROMFILE_X
-Makros geladen wurden, werden auf Änderungen überwacht und automatisch re-importiert, wenn sie sich auf der Festplatte verändern (dies gilt nur für Editor-Builds).
CSV-String-Tabellen werden nicht automatisch bereitgestellt. Es wird empfohlen, dass Sie Ihre CSV-String-Tabellen in einem bekannten Ordner ablegen und sie dann in den Packaging-Einstellungen Ihres Projekts zu den Additional Non-Asset Directories to Package hinzufügen.
Erstellen eines String-Tabellen-Assets
String-Table-Assets können Sie mit dem Content Browser erstellen (Add > Miscellaneous > String Table) und mit dem String-Tabellen-Editor verwalten. Der String-Tabellen-Editor kann derzeit keine Metadaten bearbeiten, allerdings bleiben alle aus einer CSV-Datei importierten Metadaten erhalten.

String-Tabellen-Assets sind binär, können also im Falle eines Zusammenführungskonflikts nicht aufgelöst werden. Wir empfehlen, die String-Tabellen-Assets granularer zu halten als bei der Verwendung von C++ oder CSV, um Ihren Konfliktbereich zu minimieren.
Referenzieren einer String-Tabelle
Sie können String-Tabellen in C++, in INI-Dateien oder als Asset referenzieren.
Referenzieren einer String-Tabelle in C++
String-Tabellen können in C++ entweder mit dem Makro LOCTABLE
oder der statischen Funktion FText::FromStringTable
referenziert werden. Die zugrundeliegende Logik ist identisch, allerdings ist das Makro einfacher zu schreiben, funktioniert aber nur mit Literal-Werten, während die Funktion mit Literal- als auch mit Variablenargumenten funktioniert.
Referenzieren einer String-Tabelle in der INI-Datei
String-Tabellen können in INI-Dateien mit der LOCTABLE
-Makrosyntax referenziert werden.
Referenzieren eines String-Tabellen-Assets
String-Tabellen können mit FText
-Eigenschaften referenziert werden.
Klicken Sie auf die weiße Flagge neben einer Texteigenschaft, um diese Eigenschaftsinstanz mit einem String-Tabelleneintrag zu verknüpfen, anstatt Ihren lokalisierten Text inline zu definieren.
Umleiten einer String-Tabelle
Es wird empfohlen, das Umbenennen oder Verschieben von String-Tabellen nach Möglichkeit zu vermeiden. Wenn Sie allerdings eine String-Tabelle umbenennen oder verschieben müssen, gibt es eine Möglichkeit, ganze Tabellen oder einzelne Schlüssel umzuleiten. Sie können dies über INI-Dateien erledigen oder durch Umleiten eines String-Tabellen-Assets.
Umleiten einer String-Tabelle in der INI-Datei
String-Tabellen können mithilfe einer INI-Datei umgeleitet werden. Das folgende Beispiel leitet eine komplette String-Tabelle so um, dass sie auf eine andere String-Tabelle verweist:
[Core.StringTable]
+StringTableRedirects=(OldStringTable="Foo",NewStringTable="Bar")
Wenn Sie einen Eintrag in einer String-Tabelle zu einem Eintrag in einer anderen String-Tabelle umleiten möchten, verwenden Sie das folgende Beispiel:
[Core.StringTable]
+StringTableRedirects=(StringTable="Foo",OldKey="Bar",NewKey="Baz")
Umleiten eines String-Tabellen-Assets
Beim Verschieben oder Umbenennen eines String-Tabellen-Assets bleibt ein Asset-Redirector zurück. Er wird wie jeder andere Asset-Redirector verarbeitet und verfolgt.