文字列テーブル

Windows
MacOS
Linux

文字列テーブル は、ローカライズしたテキストをひとつ (または複数) の決まった場所にまとめます。次に他のアセットまたはコードから文字列テーブル内のエントリを参照し、ローカライズしたテキストを簡単に再利用できるようにします。

文字列テーブルを作成する

文字列テーブルは C++ で定義し、CSV ファイルで読み込むか、アセットとして作成します。

C++ で文字列テーブルを作成する

LOCTABLE ファミリーのマクロを使用すると、 C++ で文字列テーブルを作成できます。

マクロ

説明

LOCTABLE_NEW

空の文字列テーブルのインスタンスを作成します。

LOCTABLE_FROMFILE_X

文字列テーブルのインスタンスを作成し、指定された CSV ファイルに格納します。 _ENGINE バリアントを使用した場合、ファイルは Engine のコンテンツ ディレクトリを基準とし、_GAME バリアントを使用した場合、ファイルはプロジェクト コンテンツ ディレクトリを基準とします。

LOCTABLE_SETSTRING

文字列テーブルにエントリを設定します。

LOCTABLE_SETMETA

文字列テーブル内のエントリにオプションのメタデータを設定します。

例:

// 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");

CSV を使って文字列テーブルを作成する

CSV で定義された文字列テーブルは、LOCTABLE_FROMFILE_X マクロを使用してロードしたり、文字列テーブル アセットにインポート / エクスポートすることもできます。

:

// CSV から文字列テーブルを作成し、設定します
LOCTABLE_FROMFILE_GAME("CSVStringTable","CSVStringTable","StringTableCSV/TestStrings.csv");

文字列テーブルに使用される CSV 形式には、「Key」と「SourceString」という必須の列があり、余分な列はすべて、文字列テーブル エントリのメタデータとして解析されます。

Key,SourceString,Comment
"HelloWorld","Hello World!","This is a comment about hello world"
"GoodbyeWorld","Goodbye World!","This is a comment about goodbye world"

CSV ファイルの引用符は、C スタイルのエスケープ (\") ではなく、二重引用符 (「」) を使用してエスケープされますが、文字列内の他の制御文字 (タブと改行を含む) は、C スタイルのエスケープを使用してエスケープする必要があります。

LOCTABLE_FROMFILE_X マクロを使用してロードされた CSV 文字列テーブルは、変更が監視されているので、ディスク上で変更されると (これは、Editor ビルド専用です) 自動的に再インポートされます。

CSV 文字列テーブルは自動的にステージングされません。 CSV 文字列テーブルを決まった場所のフォルダに配置してから、それらをプロジェクトの [Packaging] 設定の [Additional Non-Asset Directories to Package] に追加することをお勧めします。

文字列テーブル アセットを作成する

文字列テーブル アセットは、コンテンツ ブラウザ ([Add]>[Miscellaneous]>[String Table]) を使用して作成し、文字列テーブル エディタで管理できます。 現在、文字列テーブル エディタではメタデータを編集できませんが、CSV ファイルからインポートされたメタデータは保持されます。

StringTables-01.png

文字列テーブル アセットはバイナリであるため、マージの競合が発生した場合に解決できません。 C++ や CSV よりも文字列テーブルのアセットを細分化して保存し、競合ドメインを最小限に抑えることを推奨しています。

文字列テーブルを参照する

文字列テーブルは、C++、INI ファイル、またはアセット内で参照することができます。

C++ で文字列テーブルを参照する

C++ では、LOCTABLE マクロまたは static FText::FromStringTable 関数を使用して文字列テーブルを参照できます。 基本となるロジックは同じですが、マクロは入力しやすく、リテラル値のみを処理し、関数はリテラル引数と変数引数の両方を処理します。

INI ファイルで文字列テーブルを参照する

LOCTABLE マクロ構文を使用して、INI ファイルの文字列テーブルを参照できます。

文字列テーブル アセットを参照する

文字列テーブルは、FText プロパティを使用して参照できます。
StringTables-02.png

ローカライズされたテキストをインラインで定義する代わりに、テキスト プロパティの横にある白い矢印をクリックして、そのプロパティ インスタンスを文字列テーブル エントリにリンクします。
StringTables-03.png

文字列テーブルをリダイレクトする

可能な限り、文字列テーブルの名前変更や移動は避けてください。 ただし、文字列テーブルの名前を変更したり移動したりする必要がある場合は、テーブル全体をリダイレクトしたり、個々のキーをリダイレクトする方法があります。 これは、INI ファイルで行うか、文字列テーブル アセットをリダイレクトすることで実行できます。

INI ファイル内の文字列テーブルをリダイレクトする

INI ファイルを使用して、文字列テーブルをリダイレクトすることができます。 次の例では、文字列テーブル全体を別の文字列テーブルにリダイレクトします。

[Core.StringTable]
+StringTableRedirects=(OldStringTable="Foo",NewStringTable="Bar")

ある文字列テーブルのエントリを別の文字列テーブルのエントリにリダイレクトしたい場合は、次の例を使用してください。

[Core.StringTable]
+StringTableRedirects=(StringTable="Foo",OldKey="Bar",NewKey="Baz")

文字列テーブル アセットをリダイレクトする

文字列テーブルアセットを移動または名前変更すると、アセット リダイレクタが残ります。 これは、他のアセット リダイレクタと同様に処理され、実行されます。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback