文字列テーブル

テキストを一つのテーブルにまとめて、アプリケーション全体から参照できるようにします

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

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

文字列テーブルは 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")

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

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

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル