String Table
String Table は、特定のロケールの Key (キー、識別名あるいは一意の ID) を使用してリクエストされた時に、ローカライズ済み文字列を返します。String Table は、Asset Table と似た形で機能しますが、全ての翻訳済み文字列データを含んでおり、追加的な読み込みのステップを要しません。 String Table の各行には特定のロケール用の Key Id と文字列エントリーが含まれています。文字列エントリーは、Smart Strings または String.Format で使用する静的文字列あるいはトークン化された文字列のどちらかです。
String Table Collection
String Table Collection は エディター専用 アセットで、同じ Shared Table Data と Table Collection Name を共有する 1 つまたは複数の String Table にインターフェースを提供します。
新しい String Table Collection を作成すると、Unity によって、String Table Collection アセットとロケール毎の String Table アセットに加え、String Table が参照する単一の Shared Table Data アセットが作成されます。Shared Table Data アセットは、全てのキー名、それに関連付けられた全ての Id 値、および共有の Metadata (全ての String Table がアクセスできるメタデータ) を格納します。
String Table Collection エディターを使用して、エディターとプレイヤーの設定や、コレクションのテーブルの追加と削除を行えます。コレクションからテーブルを削除すると、そのテーブルは Localization システムから削除されますが、データはそのまま残るので後で追加して戻すことができます。このため、選択した String Table の有効化/無効化が可能です。
Extension (拡張機能) はエディター専用データで、String Table に添付できます。Extension は String Table に関連付ける追加的なデータを含むことができるほか、特定のファイル形式あるいはサービスのインポーターやエクスポーターなどの機能を追加することができます。
カスタムの Extension は、CollectionExtension から継承して AssetTableCollectionExtension 属性 を追加することで作成できます。
Preload
Localization システムはデフォルトでは String Table をプリロードしません。つまり、Unity が String Table あるいはその内容を初めてリクエストした時に、Localization Table はまずテーブルを読み込む必要があります。これはバックグラウンドで非同期的に実行されますが、リクエストされた文字列が直ちに使用可能にはならない場合があることを意味します。 String Table がプリロードされ、リクエストに応じて直ちに使用可能になるように、Localization システムを設定することができます。これを行うには、Asset Tables ウィンドウを開き、ロケール名の上にある Table Properties ボタンをクリックして、コレクション内の全てのテーブルをプリロードしたい場合は Preload All Tables を有効にしてください。選択されたテーブルのみをプリロードしたい場合は Preload Table を有効にしてください。
Smart String
Smart フィールドを使用して、テーブルエントリーの Smart Formatting (スマートフォーマッティング) を有効化/無効化できます。スマートフォーマッティングは SmartFormat ライブラリの修正版を使用しています。SmartFormat は文法に重点を置いた軽量なテンプレートライブラリです。これを使用すると、データ駆動型テンプレートに、適切な複数形化、性に基づく活用、リスト、条件に基づく言語理論を簡単に含めることができます。名前付きプレースホルダーによって、より直観的に、よりエラーが発生しにくい形で変数を導入することができます。
Metadata
テーブルとテーブルエントリーの Metadata (メタデータ) を確認できます。
- テーブルのメタデータを確認するには、テーブルの列のヘッダーの上にあるボタンを選択してください。
- テーブルエントリーのメタデータを確認するには、テーブルエントリーのセル内にあるボタンを選択してください。
Localization システムは、Shared Metadata (共有メタデータ) をテーブルコレクションの Shared Table Data 内に格納します。つまり、全てのテーブルがこのデータにアクセスできます。ロケール固有のメタデータ (Shared の下のリスト) はテーブル内に格納され、そのデータを持つテーブルからのみアクセス可能です。
Character Sets
場合によっては、フォントアトラスに特定の言語の特定の文字を入力する必要があります。実用的な方法のひとつは、文字のサブセットからフォントを作成することです。これは非常に大きな文字セット (中国語の場合 50,000 文字超) を持つ言語に特に有用です。ほとんどのゲームが使用する文字は最大で約 1,000 文字です。文字セットがこれほど大規模になる稀なケースは、例えば完全な中国語と日本語をサポートするゲームなどです。 Unity は、各テーブルの内容を調査し、使用されている固有の文字を特定することによって、String Table の Character Set (文字セット) を特定することができます。Smart String の内容も調査されるので、(プレースホルダーは無視されますが) リテラル値も Character Set に含められます。
例えば、You have {count:plural:an Apple|{} apples}!
という Smart String の Character Set は !AYaehlnopsuv
になります。
Character Set ファイルは、String Table ウィンドウ、String Table Collection ウィンドウ、または Localization Tables ウィンドウのコンテキストメニューからエクスポート可能です。Character Set は、スクリプトで GenerateCharacterSet を呼び出して生成することもできます。
エクスポートのタイプは、どこからエクスポートを実行するかによって異なります。
- String Table ウィンドウ: 選択された String Table のみの値がエクスポートされます。
- String Table Collection ウィンドウ: 選択された String Table Collection の全ての値がエクスポートされます。
- Localization ウィンドウ: 選択された String Table Collection の全ての値がエクスポートされます。
Export Character Set ウィンドウ では、Character Set の生成元として複数の String Table を選択できます。
エクスポートされたファイルは、TextMeshPro Font Asset Creator などで、フォントアトラスを生成するために使用できます。