ローカライゼーション
Turian はゲームと Studio 自体に同じローカライズの仕組みを使います。翻訳は文字列テーブルのアセットに置き、コードと UI ドキュメントはキーでテキストを参照します。アクティブなロケールはゲームの実行中でも変えられます。
文字列テーブル
ロケールごとに 1 つの .strings ファイルを Assets/ 内の任意の場所に置きます — 例えば Assets/Localization/ja.strings:
{
"locale": "ja",
"entries": [
{ "key": "menu.play", "source": "Play", "translation": "プレイ", "state": "translated" },
{ "key": "menu.quit", "source": "Quit", "translation": "終了", "state": "translated",
"note": "メインメニューの最後のボタン" },
{ "key": "inventory.items", "source": "{count} items",
"plurals": { "other": "# 個のアイテム" }, "state": "translated" }
]
}
source は原文、translation は訳文、state は翻訳者のための進捗(new、translated など)です。プロジェクト内のすべてのテーブルがゲームの起動時に読み込まれます。
プロジェクト設定
Localization Settings アセット(Assets パネルの New → Settings → Localization Settings)で、ゲームが開始する Default Locale と提供する Available Locales を宣言します。
コードでのテキスト参照
var title = Localization.T("menu.play"); // ja では「プレイ」
var fallback = Localization.T("menu.credits", fallback: "Credits");
var items = Localization.T("inventory.items", count: 3); // 「3 個のアイテム」
var source = Localization.Source("Game over"); // テキスト自体がキー
Localization.SetLocale("ja");
Log.Logger.LogInformation("現在のロケール: {Locale}", Localization.ActiveLocale);
参照は例外を投げません。キーがなければフォールバック(またはキー)を返し、テーブルが読み込まれていなければ入力をそのまま返します。解決は地域から言語へ — pt-BR → pt — さらに既定のロケールへとフォールバックします。
保持しているテキストを更新するには Localization.Service?.LocaleChanged を購読します。
UI ドキュメントでのテキスト参照
.ui ドキュメントのラベルは自動的にローカライズされ、書かれたテキストがそのままキーになります。明示的なキーを使うには要素に text-key を付けます:
<Label text="Play" /> <!-- 原文で参照 -->
<Button text="Quit" text-key="menu.quit" /> <!-- キーで参照 -->
ゲーム UI を参照してください。
メッセージ、複数形、選択
メッセージは ICU MessageFormat の小さなサブセットをサポートします:
| 形式 | 例 |
|---|---|
| 置換 | こんにちは、{name}! |
| 複数形ブロック | {count, plural, one {# apple} other {# apples}} |
| 選択ブロック | {gender, select, female {She} male {He} other {They}} won |
| エントリごとの複数形 | エントリの plurals オブジェクト。キーは zero、one、two、few、many、other |
# は数を表します。複数形のカテゴリは各言語の CLDR ルールに従うので、ポルトガル語、ポーランド語、アラビア語なども正しい形を選びます。
翻訳者との作業
エディターのライブラリは、テーブルを翻訳ツールが使う形式 — XLIFF 1.2 と CSV — との間で変換し、キー、原文、訳文、注記、状態を保持します。翻訳者は自分のツールで作業し、プロジェクトは .strings を正本として保てます。
ロケールを試す
Play Mode と CLI では、セッションごとにロケールを強制できます:
turian-cli playmode MyGame --locale pt-BR --out pt-br.png
turian-cli screenshot MyGame --locale ja --out ja.png
Studio 自体
Studio も同じ仕組みでローカライズされています。Edit → Localization で言語を切り替えられます。1.0 には英語とブラジルポルトガル語が含まれます。