Las tablas de cadenas permiten centralizar el texto localizado en una (o varias) ubicaciones conocidas y, a continuación, hacer referencia a las entradas de una tabla de cadenas desde otros recursos o código de una forma robusta que permita reutilizar fácilmente el texto localizado.
Creación de tablas de cadenas
Las tablas de cadenas pueden definirse en C++, cargarse con un archivo CSV o crearse como recurso.
Creación de tablas de cadenas en C++
Las tablas de cadenas se pueden crear en C++ usando la familia de macros LOCTABLE.
| Macro | Descripción |
|---|---|
LOCTABLE_NEW |
Crea una instancia de tabla de cadenas vacía. |
LOCTABLE_FROMFILE_X |
Crea una instancia de tabla de cadenas y la rellena a partir del archivo CSV indicado. Al usar la variante _ENGINE, el archivo es relativo al directorio de contenido del motor, mientras que al usar la variante _GAME, el archivo es relativo al directorio de contenido del proyecto. |
LOCTABLE_SETSTRING |
Establece una entrada en una tabla de cadenas. |
LOCTABLE_SETMETA |
Establece metadatos opcionales para una entrada en una tabla de cadenas. |
Ejemplo:
// Crear y rellenar una tabla de cadenas usando solo C++
LOCTABLE_NEW("CodeStringTable","CodeStringTable");
LOCTABLE_SETSTRING("CodeStringTable","HelloWorld","Hello World!");
LOCTABLE_SETMETA("CodeStringTable","HelloWorld","Comment","This is a comment about hello world");
LOCTABLE_SETSTRING("CodeStringTable","GoodbyeWorld","Goodbye World!");
LOCTABLE_SETMETA("CodeStringTable","GoodbyeWorld","Comment","This is a comment about goodbye world");
Creación de tablas de cadenas con CSV
Las tablas de cadenas definidas en CSV se pueden cargar usando las macros LOCTABLE_FROMFILE_X o también se pueden importar o exportar desde un recurso de tabla de cadenas.
Ejemplo:
// Crear y rellenar una tabla de cadenas desde un archivo CSV
LOCTABLE_FROMFILE_GAME("CSVStringTable","CSVStringTable","StringTableCSV/TestStrings.csv");
El formato CSV que se usa para las tablas de cadenas tiene dos columnas obligatorias, Key y SourceString. Las columnas adicionales se analizan como metadatos para las entradas de la tabla de cadenas.
Key,SourceString,Comment
"HelloWorld","Hello World!","This is a comment about hello world"
"GoodbyeWorld","Goodbye World!","This is a comment about goodbye world"
En los archivos CSV, las comillas se escapan con dos conjuntos de comillas ("") en lugar de usar el escape típico de C (\"). Sin embargo, otros caracteres de control de la cadena (incluidos los tabuladores y los saltos de línea) deberían usar escapes de estilo C.
Las tablas de cadenas CSV cargadas con las macros LOCTABLE_FROMFILE_X se supervisan en busca de cambios y se reimportan automáticamente si cambian en el disco (esto es solo para compilaciones del editor).
Las tablas de cadenas de CSV no se organizan automáticamente. Se recomienda colocar las tablas de cadenas CSV en una carpeta conocida y añadirlas a Directorios sin recursos adicionales para empaquetar en los ajustes de Empaquetado de tu proyecto.
Creación de un recurso de tabla de cadenas
Los recursos de tablas de cadenas se pueden crear en el explorador de contenido ( Añadir > Varios > Tabla de cadenas) y se pueden gestionar a través del editor de tablas de cadenas. De momento, el editor de tablas de cadenas no puede editar metadatos, pero se conservan los metadatos importados de un archivo CSV.
Los recursos de la tabla de cadenas son binarios, por lo que no se pueden resolver si se produce un conflicto de fusión. Te recomendamos que los recursos de la tabla de cadenas sean más granulares que cuando usas C++ o CSV para minimizar tu dominio de conflictos.
Cómo hacer referencia a una tabla de cadenas
Puedes hacer referencia a tablas de cadenas en C++, en archivos INI o como un recurso.
Cómo hacer referencia a una tabla de cadenas en C++
Es posible hacer referencia a las tablas de cadenas en C++ usando la macro LOCTABLE o la función estática FText::FromStringTable . La lógica subyacente es idéntica, aunque la macro es más fácil de escribir, pero solo funcionará con valores literales, mientras que la función será útil tanto con argumentos literales como variables.
Cómo hacer referencia a una tabla de cadenas en el archivo INI
Es posible hacer referencia a las tablas de cadenas en archivos INI usando la sintaxis de macro LOCTABLE.
Cómo hacer referencia a un recurso de tabla de cadenas
Se puede hacer referencia a las tablas de cadenas mediante las propiedades FText.

Haz clic en el indicador blanco que hay junto a una propiedad de texto para vincular esa instancia de propiedad a una entrada de la tabla de cadenas en lugar de definir el texto localizado en línea.

Redireccionamiento de una tabla de cadenas
Se recomienda evitar cambiar el nombre o mover las tablas de cadenas siempre que sea posible. Sin embargo, si necesitas cambiar el nombre o mover una tabla de cadenas, hay una forma de redirigir tablas enteras y claves individuales. Puedes hacerlo en archivos INI o redireccionando un recurso de tabla de cadenas.
Redireccionamiento de una tabla de cadenas en el archivo INI
Las tablas de cadenas se pueden redirigir mediante un archivo INI. El siguiente ejemplo redirigirá una tabla de cadenas entera para que apunte a otra tabla de cadenas:
[Core.StringTable]
+StringTableRedirects=(OldStringTable="Foo",NewStringTable="Bar")
Si quieres redirigir una entrada de una tabla de cadenas a una entrada de otra tabla de cadenas, usa el siguiente ejemplo:
[Core.StringTable]
+StringTableRedirects=(StringTable="Foo",OldKey="Bar",NewKey="Baz")
Redireccionamiento de un recurso de tabla de cadenas
Mover o renombrar un recurso de tabla de cadenas dejará atrás el redirector de recursos. Esto se procesa y se sigue como cualquier otro redirector de recursos.