Jump to content
Toggle menu
  • 3 articles
  • 22 files
  • 3 users
  • 2.5K edits
Shroudforge
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Mod のテキストを翻訳する

From Shroudforge
Revision as of 01:35, 7 November 2026 by Bonsaibauer (talk | contribs) (Importing a new version from external source)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Translate mod text



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 翻訳に含まれます。