As tabelas de strings fornecem uma maneira de centralizar o texto localizado em um (ou vários) locais conhecidos e, em seguida, referência as entradas em uma tabela de strings de outros ativos ou código de forma robusta que permite a reutilização fácil de tabelas de strings localizadas de texto.
Como criar tabelas de strings
As tabelas de string podem ser definidas em C++, carregadas usando um arquivo CSV ou criadas como um ativo.
Como criar tabelas de strings em C++
É possível criar tabelas de strings em C++ usando a família de macros "LOCtable".
| Macro | Descrição |
|---|---|
| "LOCtable_NEW" | Cria uma instância de tabela de string vazia. |
| "LOCtable_FROMFILE_X" | Cria uma instância de tabela de strings e a preenche a partir do arquivo CSV fornecido. Ao usar a variante "_ENGINE", o arquivo é relativo ao diretório de conteúdo da engine. Ao usar a variante "_GAME", o arquivo é relativo ao diretório de conteúdo do projeto. |
| "LOCtable_setstring" | Define uma entrada em uma tabela de strings. |
| "LOCTABLE_SETMETA" | Define metadados opcionais para uma entrada em uma tabela de strings. |
Exemplo:
// Crie e preencha uma tabela de strings usando apenas C++
LOCTABLE_NEW("CodeStringTable","CodeStringTable");
LOCTABLE_SETSTRING("CodeStringTable","HelloWorld","Olá, mundo!");
LOCTABLE_SETMETA("CodeStringTable","HelloWorld","Comment","Este é um comentário sobre o 'Olá, mundo'");
LOCTABLE_SETSTRING("CodeStringTable","GoodbyeWorld","Tchau, mundo!");
LOCTABLE_SETMETA("CodeStringTable","GoodbyeWorld","Comment","Este é um comentário sobre o 'Tchau, mundo!'");
Como criar tabelas de strings usando CSV
É possível carregar tabelas de string definidas em CSV usando os macros "LOCtable_FROMFILE_X" ou importá-las ou exportá-las de um ativo de tabelas de strings.
Exemplo:
// Crie e preencha uma tabela de strings a partir de um arquivo CSV
LOCTABLE_FROMFILE_GAME("CSVStringTable","CSVStringTable","StringTableCSV/TestStrings.csv");
O formato CSV usado para tabelas de strings tem duas colunas obrigatórias, Key e SourceString. As colunas extras são analisadas como metadados para as entradas da tabela de strings.
Key,SourceString,Comment
"HelloWorld","Olá, mundo!","Este é um comentário sobre o 'Olá, mundo'"
"goodbyeworld","Tchau, mundo!","Este é um comentário sobre o 'Tchau, mundo'"
As aspas em arquivos CSV são ignoradas com dois conjuntos de aspas ("") em vez do estilo C de fuga (\"). No entanto, outros caracteres de controle na string (incluindo abas e novas linhas) devem ter o escape usado usando o estilo C.
As tabelas de strings CSV carregadas usando as macros "LOCtable_FROMFILE_X" têm alterações monitoradas e são reimportadas de forma automática se mudarem no disco (isso é apenas para versões do editor).
As tabelas de strings CSV não são organizadas automaticamente. Recomendamos colocar as tabelas de string CSV em uma pasta conhecida e adicioná-las às Additional Non-Asset Directories to Package nas configurações de Packaging do projeto.
Como criar um ativo de tabela de strings
Ativos de tabelas de strings podem ser criados no Navegador de Conteúdo (Add > Miscellaneous > String Table) e podem ser gerenciados no editor de tabelas de strings. No momento, o editor de tabela de strings não pode editar metadados. No entanto, quaisquer metadados importados de um arquivo CSV serão preservados.
Os ativos de tabela de strings são binários e não podem ser resolvidos em caso de conflito de mesclagem. Recomendamos que você mantenha os ativos de tabela de strings mais granulares do que quando usa C++ ou CSV para minimizar seu domínio de conflito.
Como referenciar uma tabela de strings
Você pode referenciar tabelas de strings em C++, em arquivos .ini ou como um ativo.
Como referenciar uma tabela de strings em C++
É possível referenciar tabelas de strings em C++ usando a macro "LOCtable" ou a função estática ["FText::FromStringTable"] (https://api.unrealengine.com/INT/API/Runtime/Core/Internationalization/FText/FromStringTable/index.html) A lógica subjacente é idêntica, embora a macro seja mais fácil de digitar e só funcione com valores literais, enquanto a função funcionará com argumentos literais e variáveis.
Como referenciar uma tabela de strings no arquivo INI
É possível referenciar tabelas de strings em arquivos .ini usando a sintaxe de macro "LOCtable".
Como referenciar um ativo de tabela de strings
Tabelas de strings podem ser referenciadas usando propriedades "FText".

Clique na bandeira branca ao lado de uma propriedade de texto para vincular a instância da propriedade a uma entrada na tabela de strings, em vez de definir o texto localizado em linha.

Como redirecionar uma tabela de strings
Sempre que possível, evite renomear ou mover tabelas de strings. No entanto, se precisar renomear ou mover uma tabela de strings, há uma maneira de redirecionar tabelas inteiras e chaves individuais. Você pode fazer isso em arquivos .ini ou redirecionando um ativo da tabela de strings.
Como redirecionar uma tabela de strings para o arquivo INI
As tabelas de strings podem ser redirecionadas usando um arquivo INI. O exemplo a seguir redirecionará uma tabela de strings inteira para apontar para outra tabela de strings:
[Core.StringTable]
+StringTableRedirects=(OldStringTable="Foo",NewStringTable="Bar")
Se quiser redirecionar uma entrada em uma tabela de strings para uma entrada em outra tabela de strings, use o seguinte exemplo:
[Core.StringTable]
+StringTableRedirects=(StringTable="Foo",OldKey="Bar",NewKey="Baz")
Como redirecionar um ativo da tabela de strings
Mover ou renomear um ativo de tabela de strings deixará um redirecionador de ativo para trás. Isso é processado e cumprido como qualquer outro redirecionador de ativos.