Les tables de chaînes permettent de centraliser le texte localisé dans un (ou plusieurs) emplacement connu, puis de référencer les entrées d'une table de chaînes à partir d'autres ressources ou codes d'une manière rigoureuse qui permet une réutilisation facile du texte localisé.
Créer des tables de chaînes
Les tables de chaînes peuvent être définies en C++, chargées à l'aide d'un fichier CSV ou créées en tant que ressource.
Créer des tables de chaînes en C++
Les tables de chaînes peuvent être créées en C++ à l'aide de la famille de macros LOCTABLE.
| Macro | Description |
|---|---|
LOCTABLE_NEW |
Créer une instance de table de chaînes vide. |
LOCTABLE_FROMFILE_X |
Créer une instance de table de chaînes et la remplir à partir du fichier CSV donné. Lorsque vous utilisez la variante _ENGINE, le fichier est relatif au répertoire de contenu de l'Engine, et lorsque vous utilisez la variante _GAME, le fichier est relatif au répertoire de contenu du projet. |
LOCTABLE_SETSTRING |
Définir une entrée d'une table de chaînes. |
LOCTABLE_SETMETA |
Définir des métadonnées facultatives pour une entrée d'une table de chaînes. |
Exemple :
// Créer et remplir une table de chaînes en utilisant C++ uniquement
LOCTABLE_NEW("CodeStringTable","CodeStringTable »);
LOCTABLE_SETSTRING("CodeStringTable", »BonjourLeMonde","Bonjour le monde !");
LOCTABLE_SETMETA("CodeStringTable","BonjourLeMonde", "Commentaire","Ceci est un commentaire sur le message Bonjour le monde");
LOCTABLE_SETSTRING("CodeStringTable","AuRevoirLeMonde","Au revoir le monde !");
LOCTABLE_SETMETA("CodeStringTable","AuRevoirLeMonde","Commentaire","Ceci est un commentaire sur le message Au revoir le monde");
Créer des tables de chaînes à l'aide de fichiers CSV
Les tables de chaînes définies dans un fichier CSV peuvent être chargées à l'aide des macros LOCTABLE_FROMFILE_X, ou peuvent également être importées/exportées à partir d'une ressource de table de chaînes.
Exemple :
// Créer et remplir une table de chaînes à partir d'un fichier CSV
LOCTABLE_FROMFILE_GAME("CSVStringTable","CSVStringTable","StringTableCSV/TestStrings.csv");
Le format CSV utilisé pour les tables de chaînes comporte deux colonnes obligatoires, à savoir Key et SourceString, toutes les colonnes supplémentaires étant analysées comme des métadonnées pour vos entrées de table de chaînes.
Key,SourceString,Comment
"BonjourLeMonde", "Bonjour le monde !", "Ceci est un commentaire sur le message Bonjour le monde"
"AuRevoirLeMonde", "Au revoir le monde !", "Ceci est un commentaire sur le message Au revoir le monde"
Les guillemets dans les fichiers CSV sont contournés en utilisant deux ensembles de guillemets anglais ("") plutôt que l'échappement de style C (\ »). Cependant, les autres caractères de contrôle dans votre chaîne (y compris les tabulations et les nouvelles lignes) doivent être contournés à l'aide de l'échappement de style C.
Les tables de chaînes CSV chargées à l'aide des macros LOCTABLE_FROMFILE_X sont surveillées pour détecter les modifications et sont automatiquement réimportées si elles changent sur le disque (cela s'applique uniquement aux versions de l'éditeur).
Les tables de chaînes CSV ne sont pas préparées automatiquement. Nous vous recommandons de placer vos tables de chaînes CSV dans un dossier connu, puis de les ajouter aux Additional Non-Asset Directories to Package (Répertoires supplémentaires non liés aux ressources à empaqueter) dans les paramètres Packaging (Empaquetage) de votre projet.
Créer une ressource de table de chaînes
Les ressources de table de chaînes peuvent être créées à l'aide du navigateur de contenu [Add > Miscellaneous > String Table (Ajouter > Divers > Table de chaînes)] et peuvent être gérées via l'éditeur de table de chaînes. L'éditeur de table de chaînes ne peut actuellement pas modifier les métadonnées, mais toutes les métadonnées importées à partir d'un fichier CSV sont conservées.
Les ressources de table de chaînes sont binaires ; elles ne peuvent donc pas être résolues en cas de conflit de fusion. Nous vous recommandons de conserver les ressources de table de chaînes à un niveau de granularité plus élevé que lorsque vous utilisez C++ ou un fichier CSV afin de minimiser votre domaine de conflit.
Référencer une table de chaînes
Vous pouvez référencer des tables de chaînes en C++, dans des fichiers INI ou en tant que ressource.
Référencer une table de chaînes en C++
Les tables de chaînes peuvent être référencées en C++ à l'aide de la macro LOCTABLE ou de la fonction statique FText::FromStringTable . La logique sous-jacente est identique, bien que la macro soit plus facile à taper, mais elle ne fonctionne qu'avec des valeurs littérales, tandis que la fonction fonctionne avec des arguments littéraux et variables.
Référencer une table de chaînes dans le fichier INI
Les tables de chaînes peuvent être référencées dans les fichiers INI à l'aide de la syntaxe de macro LOCTABLE.
Référencer une ressource de table de chaînes
Les tables de chaînes peuvent être référencées à l'aide des propriétés FText.

Cliquez sur l'indicateur blanc à côté d'une propriété de texte pour lier cette instance de propriété à une entrée de table de chaînes, au lieu de définir votre texte localisé en ligne.

Rediriger une table de chaînes
Il est recommandé d'éviter de renommer ou de déplacer des tables de chaînes lorsque cela est possible. Cependant, si vous devez renommer ou déplacer une table de chaînes, il existe un moyen de rediriger des tables entières et de rediriger des clés individuelles. Vous pouvez le faire dans des fichiers INI ou en redirigeant une ressource de table de chaînes.
Rediriger une table de chaînes dans le fichier INI
Les tables de chaînes peuvent être redirigées à l'aide d'un fichier INI. L'exemple suivant redirige une table de chaînes entière pointant vers une autre table de chaînes :
[Core.StringTable]
+StringTableRedirects=(OldStringTable="Foo",NewStringTable="Bar")
Si vous souhaitez rediriger une entrée d'une table de chaînes vers une entrée d'une autre table de chaînes, utilisez l'exemple suivant :
[Core.StringTable]
+StringTableRedirects=(StringTable="Foo",OldKey="Bar",NewKey="Baz")
Rediriger une ressource de table de chaînes
L'opération de déplacement ou de changement de nom d'une ressource de table de chaînes laisse un redirecteur de ressources derrière elle. Celui-ci est traité et suivi comme tout autre redirecteur de ressources.