====== 名前の翻訳 ======
//item.tutorial.my_item// のようなアイテムに奇妙な表示名が付いていることに注意してください。これは、アイテムの名前がゲームで選択した言語に翻訳されていないためです。 翻訳は、1 つの文字列に対して複数の異なる言語をサポートするために使用されます。
===== 言語ファイルの作成 =====
言語ファイルを使用して、ゲーム内で翻訳可能な文字列の翻訳を提供できます。お使いの言語に適したファイル名でファイルを作成する必要があります。お使いの言語のコードを見つけるには、 [[https://minecraft.fandom.com/ja/wiki/%E8%A8%80%E8%AA%9E|このリンク]] にアクセスしてください。日本語は ja_jp です。言語コードを取得したら、__resources/assets/modid/lang/__ に JSON ファイルを作成します。例えば日本語の翻訳ファイルは、__resources/assets/tutorial/lang/ja_jp.json__ のようになります。
===== 翻訳の追加 =====
言語ファイルを作成したら、この基本的なテンプレートを使用して翻訳を追加できます:
{
"item.tutorial.my_item": "私のアイテム",
"item.tutorial.my_awesome.item": "私の素晴らしいアイテム",
[...]
}
最初の文字列は、翻訳可能な任意の文字列です(アイテム名や '''' など)。ウィキのチュートリアルに従っている場合は、 modid を `tutorial` または選択した modid に変更することを忘れないでください。
===== カスタム翻訳可能テキストの使用 =====
関数が '''' を受け入れるときは常に、''new ()'' または ''Text.literal()'' (1.19 以降のバージョンの場合) を指定するオプションがあります。
これは、Minecraft がコンストラクタ引数の文字列をそのまま使用することを意味します。ただし、これはお勧めできません。
そのテキストを別の言語に翻訳したい場合、そのテキストを別の言語に翻訳するのが難しくなります。
これが '''' オブジェクトが必要な場合は常に、''new ()'' または ''Text.translatable'' に変換キーを指定する必要がある理由です。
次に、言語ファイル内のキーを翻訳します。
たとえば、ツールチップを追加するときは、次のようにします:
@Override
public void method_9568(class_1799 itemStack, class_1937 world, List tooltip, class_1836 tooltipContext) {
// 1.18.2 以前:
tooltip.add(new class_2588("item.tutorial.fabric_item.tooltip"));
// 1.19 以降:
tooltip.add(Text.translatable("item.tutorial.fabric_item.tooltip"));
}
次に、言語ファイルに追加します:
{
"item.tutorial.fabric_item.tooltip": "私のツールチップ"
}
そしてツールチップは "マイツールチップ" として表示されます!
==== 翻訳可能なテキストに動的な値を追加 ====
現在の日や月などの変数に基づいてテキストを変更したいとします。
動的な数値の場合、言語エントリ値で数値を表示する場所に %d を配置します。たとえば、次のようになります。
{
"item.tutorial.fabric_item.tooltip": "%d 月 %d 日の私のツールチップ"
}
次に、文字列で使用する変数を、テキストに表示される順序で渡します。最初に月、次に日を追加します:
int currentMonth = 7;
int currentDay = 4;
// 1.18.2 以前:
tooltip.add(new class_2588("item.tutorial.fabric_item.tooltip", currentMonth, currentDay));
// 1.19 以降:
tooltip.add(Text.translatable("item.tutorial.fabric_item.tooltip", currentMonth, currentDay));
そしてツールチップは "7 月 4 日の私のツールチップ" として表示されます。
文字列を渡すためには、 ''%d'' の代わりに ''%s'' を使用します。文字どおり ''%'' を表示したい場合は、 ''%%'' を使用してください。
詳細については、 [[https://docs.oracle.com/javase/jp/8/docs/api/java/util/Formatter.html|Java の Formatter]] を参照してください(同じように機能します)。
=== 語順が違う場合 ===
このウィキの英語版にはこの項目はありません。
日本語は英語と基本語順が違うため、翻訳可能なテキストに動的な値を追加するときにつまずくことがあります。
この問題と対処法について見ていきましょう。
たとえば、先程の「翻訳可能なテキストに動的な値を追加」で出てくる例では英語版では次のようになっています:
{
"item.tutorial.fabric_item.tooltip": "My Tooltip in day %d, and month %d"
}
そして、ツールチップの追加では、最初に**日**、次に**月**を追加します:
int currentDay = 4;
int currentMonth = 7;
// 1.18.2 and before:
tooltip.add(new class_2588("item.tutorial.fabric_item.tooltip", currentDay, currentMonth));
// 1.19 and later:
tooltip.add(Text.translatable("item.tutorial.fabric_item.tooltip", currentDay, currentMonth));
そしてツールチップは "My Tooltip in day 4, and month 7" 〔7 月 4 日の私のツールチップ〕として表示されます。
さて、このときに ''ja_jp.json'' を使用すると "4 月 7 日の私のツールチップ" として表示されてしまいます。
引数インデックスを変更する場合は ''$1''、 ''$2'' を追加します
{
"item.tutorial.fabric_item.tooltip": "%2$d 月 %1$d 日の私のツールチップ"
}
これでツールチップは "4 月 7 日の私のツールチップ" として表示されます。
==== 新しい行の追加 ====
''\n'' を機能させるのは Mojang にとって非常に難しかったため、複数行の文字列を作成するには、翻訳キーを複数のキーに分割する必要があります:
{
"item.tutorial.fabric_item.tooltip_1": "私のツールチップの 1 行目",
"item.tutorial.fabric_item.tooltip_2": "私のツールチップの 2 行目"
}
Then add the '''' parts individually:
// 1.18.2 以前:
tooltip.add(new class_2588("item.tutorial.fabric_item.tooltip_1"));
tooltip.add(new class_2588("item.tutorial.fabric_item.tooltip_2"));
// 1.19 以降:
tooltip.add(Text.translatable("item.tutorial.fabric_item.tooltip_1"));
tooltip.add(Text.translatable("item.tutorial.fabric_item.tooltip_2"));
ツールチップは次のように表示されます:
私のツールチップの 1 行目
私のツールチップの 2 行目
====== 翻訳形式 ======
登録したオブジェクトの変換キーは、''..'' (登録された '''' で定義された名前空間とパス)の形式です。
^ オブジェクトの種類 ^ 形式 ^ 例 ^
| | ''block..'' |''"block.tutorial.example_block": "Example Block"'' |
| |''item..'' |''"item.tutorial.my_item": "My Item"'' |
| | ''itemGroup..'' | ''"itemGroup.tutorial.my_group": "My Group"''|
| | ''fluid..''||
| | ''sound_event..''||
| | ''effect..''||
| | ''enchantment..''||
| | ''entity..''||
| | ''biome..''||
| | ''stat..''||
このリストにないタイプについては、 '''' を参照してください。