Mod のテキストを翻訳する
More actions
Mod フォルダー内の同じ locale ファイルを使って、Modloader に表示されるテキストと Lua のテキストを翻訳します。PR #42 で追加された shroudforge.locale() から Modloader の言語を取得します。
Locale ファイル
各言語について locales/<code>.json に 1 つファイルを追加します。Modloader の言語選択にあるコードは現在、de、de-AT、de-CH、en-GB、en-US、es、fr、hi、it、ja、nl、pl、sv、zh です。ファイル名はコードと完全に一致させます。これらのファイルは mod.json および extended.mod.json と同じ場所に置きます。
スキーマは mod-locale.schema.json として公開されています。locale カタログでは mod.name と mod.description、設定や選択肢のラベル、グループ、アクション、変更履歴の項目、Lua の strings を翻訳できます。カタログは一部だけでもかまいません。翻訳がない項目にはソーステキストが表示されます。
{
"$schema": "https://bonsaibauer.github.io/shroudforge/schemas/mod-locale.schema.json",
"settings": {
"severity": {
"label": "Log level",
"options": { "info": "Information", "warn": "Warning" }
}
},
"groups": [
{ "label": "Logging", "actions": { "write": { "label": "Write message" } } }
],
"strings": { "overlay.ready": "Ready" }
}
設定と選択肢のキーは extended.mod.json と同じままです。グループの翻訳はそのファイル内のグループ順に従います。アクションの翻訳では既存のアクション ID を使用します。保存済みの値は変わりません。
Lua でも同じテキストを使う
local locale = shroudforge.locale()
local ready = shroudforge.i18n.get("overlay.ready", locale, "Ready")
shroudforge.i18n.get(key, locale, fallback) は Modloader と同じ読み込み済みカタログを使います。まず de-AT のような地域コードを確認し、次にその言語の de を確認します。文字列がない場合はフォールバックテキストを返し、フォールバックが指定されていなければキーを返します。検索時にファイルを再読み込みすることはありません。PR #42 が言語 API を追加し、この機能が各 Mod のカタログに接続します。
設定を読み取れず shroudforge.locale() が en を返す場合、カタログ検索は最初に en-GB.json、次に en.json を確認します。en-GB は Modloader の既定の英語です。en-US は明示的に選択できるバリエーションとして残ります。
locale ファイルに runtime 機能は必要ありません。ShroudForge のインターフェーステキストは共有 Modloader 翻訳に含まれます。