コンテンツにスキップ
Stellaris v3.1<br> 対応 翻訳

ローカライズのMOD制作

旧バージョンの資料

原文はゲームバージョン3.1向けです。利用可能なコマンドは現行版で増減している可能性があります。

ローカライズとは、イベント、メニュー、兵器、物語など、ゲーム画面でプレイヤーへ示される実際の文章です。ファイルはlocalisationフォルダにYML形式で保存し、UTF-8 BOM付きでエンコードします。ファイル名は<file>_l_<language>.ymlで、<file>はこのローカライズ群の名前、<language>は対象言語です。

対応言語コードはポルトガル語(braz_por)、英語(english)、フランス語(french)、ドイツ語(german)、ポーランド語(polish)、ロシア語(russian)、スペイン語(spanish)、簡体字中国語(simp_chinese)、日本語(japanese)、韓国語(korean)です。

便利なコンソールコマンド:

  • reload text — ローカライズ表を再読込。
  • switchlanguage l_english — 使用言語を切り替えて再読込。
  • toggle_string_id — ローカライズの代わりにStringIDを表示。

ローカライズファイルの作成

  1. MODルート直下(commonではない)に、sで綴るlocalisationフォルダを作ります。他のParadox作品のlocalizationとは異なります。
  2. 必要なら言語別サブフォルダを作れます。整理用で、必須ではありません。
  3. ファイルは必ずUTF-8 BOM付きにします。BOMなしUTF-8は解析されません。既存のStellaris YMLを複製するのが簡単です。
  4. ファイル名を_l_<language>.ymlで終わらせます。例: mod_buildings_l_english.yml。
  5. 先頭行をl_<language>:にします。

バニラと同名のYMLはファイル全体を上書きするため、ほぼ全項目を変更する場合以外は推奨しません。個別キーの上書きは後述するreplaceを使います。

MOD向けの代替言語フォールバックはありません。キーが欠けるとキー自体が表示されるため、実務上は英語ファイルを他言語用に複製し、ヘッダーだけ変更することがあります。

ファイルのエンコード

YMLファイルをテキストエディターで開き、UTF-8 BOM付きへ変換します。Notepad++やVisual Studio Codeが推奨されますが、標準のメモ帳でも構いません。通常のテキストファイルを新しく作り、YMLとしてUTF-8 BOM付きで保存する方法もあります。

Notepad++では「エンコード」、VS Codeでは右下のエンコード表示(既定はUTF-8)から「エンコード付きで保存」、Windowsメモ帳では「名前を付けて保存」のエンコード欄を使います。VS Codeでは、新規作成するYMLを既定でUTF-8 BOM付きにする設定も可能です。「UTF-8」と「UTF-8 BOM付き」が並ぶ場合は後者、「UTF-8 BOMなし」と「UTF-8」が並ぶ場合は後者を選びます。

ローカライズキー

l_<language>:
 localisation_key_1: "Text String 1"
 localisation_key_2: "Text String 2"

コロン左側がコードから参照するキー、右側の引用符内がゲームへ表示する文字列です。

  • バニラでコロン直後にある番号はParadox内部の翻訳追跡用で、省略できます。[1]
  • 全キーより前にl_english:などの言語ヘッダーが必要です。
  • ヘッダー以降の各項目は空白またはタブで字下げします。
  • 表示文字列を引用符で囲み、文字として引用符を出す場合は\"とします。
  • „ “ ‚ ‘ – ” ’ … —は無効で、?として表示されます。

バニラ文章の上書き

localisation内にreplaceフォルダを作ります。ここのファイルは他のローカライズより後に読み込まれ、バニラや他のMODの重複キーだけを最後に読み込まれた値で上書きします。この規則はLIOS(Last in, only served)と呼ばれ、ファイル全体を置き換える必要はありません。replaceなしでも上書きできる場合はありますが、信頼できません。

角括弧コマンド

スコープ付きローカライズ文を[ ]で囲み、主スコープから始め、0個以上の副スコープをピリオドでつなぎ、文章取得コマンドで終えます。取得部にはハードコード済みコマンド、スコープ内の変数、common/scripted_loc/のスクリプトローカライズ(scripted_loc)を使えます。同フォルダのファイルに実例があります。ただしスクリプトローカライズ自身の中で角括弧コマンドを使うと、[Root.GetName]がそのまま文字として出ます。

スクリプト効果・トリガー内でlog = [This.GetName]のように使う場合は、\\[This.GetName]と書かないと、その効果内で遅くとも2回目の利用時に不具合が起きます。3.1以降は多くの場合、[Scope.my_variable]で変数値、[Scope.my_date_flag]で保存日付も取得できます。[[example]は角括弧をエスケープし、ゲーム内で[example]と表示します。

スコープなしコマンドにはGetDate、GetMidGameDate、GetLateGameDate、GetYear、LastKilledCountryNameがあります。以下はハードコードされたスコープ付きローカライズコマンドの一部で、スクリプトローカライズは含みません。より詳しい一覧はStellaris/logs/script_documentation/localizations.logで確認できます。

主スコープ

コマンド 例 説明
Root [Root.GetName] イベントのルートスコープ。
This [This.GetName] 現在のスコープ。
From [From.From.GetName] 呼び出し元イベントのルート。呼出し履歴をさらに戻る場合は副スコープとしても使えます。
Prev [Prev.From.GetName] 直前のスコープ。Prev.Fromの厳密な指示先は不明ですが、一部プロジェクト説明で使用されます。
イベントターゲットタグ [mytarget.GetName] ローカライズ内ではevent_target:を付けません。
Actor [Actor.GetAllianceName] 外交応答でアクションを開始した勢力。
Recipient [Recipient.GetName] 外交応答で対象となった勢力。
Third_party [Third_party.GetName] 外交応答に関係する第三勢力。

副スコープ

原文では、帝国からのスコープ移行としてCapital、Ruler、Heir、Species、Federation、惑星からのスコープ移行としてOwner、System、MoonOf、Sectorを挙げています。戦争からのスコープ移行を含む個別の用例は次のとおりです。

コマンド 例 説明
Capital [Root.Capital.GetName] 帝国またはセクターの首都。
Leader [Root.Leader.GetName] 艦隊、帝国、連邦、派閥、ファーストコンタクト、諜報作戦、諜報網、セクターなど現在スコープのリーダー。
MainAttacker [This.MainAttacker.GetAllianceName] 戦争スコープの主攻撃国。戦争名などに使用。
MainDefender [This.MainDefender.GetSpeciesName] 戦争スコープの主防衛国。戦争名などに使用。
Owner [Root.Owner.GetName] 現在スコープの所有者。
System [Root.System.GetName] 主スコープが存在する星系。
Planet [Root.Planet.GetName] POP、地上軍、考古学地点、鉱床、巨大構造物など主スコープが存在する惑星。

文章取得

以下の「通常帝国/集合意識/機械知性」は、対象帝国の種類に応じて返す語が変わることを示します(権威参照)。英語の返却文字列は大文字・小文字や単複の違いを示すため原文表記を残しています。

コマンド 用例 返す内容
GetAAnPlanetClass [Root.GetAAnPlanetClass] 対象惑星クラスの先頭文字に応じたaまたはan。
GetAAnSpeciesClass [Root.owner_species.GetAAnSpeciesClass] 対象種族クラスの先頭文字に応じたaまたはan。
GetAdj [Root.GetAdj] 現在スコープに対応する形容詞。
GetAdjective [Root.GetAdjective] 現在スコープに対応する形容詞。
GetAllianceName [This.MainAttacker.GetAllianceName] 現在スコープが所属する同盟名。
GetControllerName [Root.GetControllerName] 現在の支配者名。惑星で動作確認済み。
GetClassName [Root.GetClassName] 現在の惑星クラス名。
GetEngineer [Owner.GetEngineer] 通常帝国/集合意識/機械知性に応じたengineer/engineering drone/engineering unit。
GetEngineerPlural [Owner.GetEngineerPlural] 通常帝国/集合意識/機械知性に応じたengineers/engineering drones/engineering units。
GetFleetName [Root.GetFleetName] 現在スコープに関連する艦隊名。
GetHasHave [Root.GetHasHave] 対象リーダーの性別(または性別なし)に応じたhas/have。
GetHeirName [Root.GetHeirName] 現在の後継者の名前。
GetHeirTitle [Root.GetHeirTitle] 現在の後継者の称号。
GetHomeWorldName [Root.GetHomeWorldName] 現在スコープの母星名。
GetLeaderName [Root.GetLeaderName] 現在スコープに関連するリーダー名。
GetLinguists [Owner.GetLinguists] 通常帝国/集合意識/機械知性に応じたlinguists/language drones/linguistic algorithms。
GetName [Root.GetName] 現在スコープに対応する名称。
GetRealName [Root.GetRealName] GetNameと同様ですが、識別状態を無視して実名を取得します(「未確認」でも取得)。
GetFirstName [Root.GetFirstName] 対象リーダー名の第1部分。
GetSecondName [Root.GetSecondName] 対象リーダー名の第2部分。
GetAge [Root.GetAge] 対象リーダーの年齢。
GetNamePlural [Root.GetNamePlural] 現在スコープの複数形名。種族スコープである必要があります。
GetNebula [Root.GetNebula] 原文では不明。
GetOwnerName [Root.GetOwnerName] 現在の所有者名。
GetPersonalityName [Root.GetPersonalityName] 現在のAI性格名。
GetPlanetHabitat [Root.GetPlanetHabitat] 現在スコープが惑星/衛星/軌道上居住地のどれかに応じたplanet/moon/habitat。
GetPlanetMoon [Root.GetPlanetMoon] 現在スコープが惑星/衛星のどちらかに応じたplanet/moon。
GetPlanetMoonCap [Root.GetPlanetMoonCap] 現在スコープが惑星/衛星のどちらかに応じたPlanet/Moon。
GetPopFactionName [Root.GetPopFactionName] 対象POPが属する派閥名。
GetRandomSpeciesSound [Root.GetRandomSpeciesSound] 現在スコープの種族に対応する音声一覧からランダムに選んだ音声。
GetRegnalName [Root.GetRegnalName] 現在スコープの王名。
GetResearchers [Owner.GetResearchers] 通常帝国/集合意識/機械知性に応じたresearchers/research drones/research subroutines。
GetRulerName [Root.GetRulerName] 現在スコープに対応する統治者名。
GetRulerTitle [Root.GetRulerTitle] 現在スコープに対応する統治者の称号。
GetScientist [Owner.GetScientist] 通常帝国/集合意識/機械知性に応じたscientist/science drone/science unit。
GetScientistPlural [Owner.GetScientistPlural] 通常帝国/集合意識/機械知性に応じたscientists/science drones/science units。
GetSpeciesAdj [Root.GetSpeciesAdj] 現在スコープの種族形容詞。
GetSpeciesClass [Root.GetSpeciesClass] 現在スコープの種族が属するクラス。
GetSpeciesClassPlural [Root.GetSpeciesClassPlural] 現在スコープの種族クラスの複数形。
GetSpeciesMouthName [Root.GetSpeciesMouthName] 現在スコープの種族の口を指す語。
GetSpeciesName [Root.GetSpeciesName] 現在スコープの種族名。
GetSpeciesNameCompliment [From.GetSpeciesNameCompliment] 現在スコープの種族を使った賛辞。
GetSpeciesNameInsult [From.From.GetSpeciesNameInsult] 現在スコープの種族を使った侮辱。
GetSpeciesNamePlural [This.GetSpeciesNamePlural] 現在スコープの種族名の複数形。
GetSpeciesNamePluralCompliment [Root.GetSpeciesNamePluralCompliment] 現在スコープの種族名の複数形を使った賛辞。
GetSpeciesNamePluralInsult [From.GetSpeciesNamePluralInsult] 現在スコープの種族名の複数形を使った侮辱。
GetSpeciesHandName [From.GetSpeciesHandName] 現在スコープの種族の手を指す語。
GetSpeciesMouthName [From.GetSpeciesMouthName] 現在スコープの種族の口を指す語。
GetSpeciesOrganName [From.GetSpeciesOrganName] 現在スコープの種族の内臓を指す語。
GetSpeciesSpawnName [Root.GetSpeciesSpawnName] 現在スコープの種族の子を指す語。
GetSpeciesSpawnNamePlural [Root.GetSpeciesSpawnNamePlural] 現在スコープの種族の子を指す語の複数形。
GetStarName [Root.Capital.GetStarName] 現在スコープが所在する恒星名。
GetIsAre [Root.Leader.GetIsAre] 対象リーダーの性別(または性別なし)に応じたis/are。
GetHerHim [admiral.GetHerHim] 対象人物の性別に応じたher/him。
GetSheHe [abducted_leader.GetSheHe] 対象人物の性別に応じたshe/he。
GetSheHeCap [abducted_leader.GetSheHeCap] 対象人物の性別に応じたShe/He。
GetHomeWorldName [Root.GetHomeWorldName] 選択した帝国の母星名。
GetHerHis [admiral.GetHerHis] 対象人物の性別に応じたher/his。
GetHerHisCap [admiral.GetHerHisCap] 対象人物の性別に応じたHer/His。
LastKilledCountryName [LastKilledCountryName] 最後に滅亡した帝国名。スコープなしでも使用可能。
GetTerraformer [Owner.GetTerraformer] 通常帝国/集合意識/機械知性に応じたterraforming specialist/terraforming drone/terraforming unit。
GetTerraformerPlural [Owner.GetTerraformerPlural] 通常帝国/集合意識/機械知性に応じたterraforming specialists/terraforming drones/terraforming units。
GetWasWere [Root.Leader.GetWasWere] 対象リーダーの性別(または性別なし)に応じたwas/were。

原文で閉じ角括弧が欠けているGetSpeciesSpawnNameとGetSpeciesSpawnNamePluralの用例には、上表で]を補っています。

3.1ではGetSpeciesFossilName、GetSpeciesFossilNamePlural、GetSpeciesRemnantName、GetSpeciesRemnantNamePlural、Species、GetFossilName、GetFossilNamePlural、GetRemnantName、GetRemnantNamePluralも追加されました。

色コード

ゲーム内の色コード

色コードは§(WindowsではAlt+0167)と1文字で始まり、次の色コードまたは文字列末尾まで有効です。§!で直前の色へ戻します。$コードによる変数表示では$AGE|Y$のように、閉じる$の前へ|と色文字を置けます。DC1 UTF-8文字を色文字へ加える方法もありますが、末尾で既定色へ戻さないと後続文章まで着色する恐れがあります。

この$内の色指定は、文字列の定義ではなく表示する変数に対する指定です。たとえば§RR§Sa§Hi§Yn§Gb§Bo§Mw§!は、Rainbowと表示されます。

コード 色 バニラでの用途
W ■ 白 外交態度
T ■ 明るい灰 通常文章
g ■ 暗い灰 無効・非アクティブ
L ■ 茶/カーキ 世界設定、背景、ロールプレイ
P ■ 明るいくすみピンク 攻撃的な説明・イベント文章の強調
R ■ 赤 負の補正
S ■ 暗い橙 控えめな強調
H / K ■ マンゴー/橙 強調文章
Y / I ■ 黄 最適でない、または中立の補正
G ■ 緑 正の補正
V ■ 暗緑 イベント文章
E ■ 青緑 長い文章
C ■ シアン 別ツールチップを生成する概念文章
B ■ 青寄りシアン POPへ影響するイベント効果
M ■ 紫 レア技術
_ ■ マゼンタ プレースホルダー
c ■ 青緑 リーダー特性
v ■ 淡緑 ベテラン特性
d ■ 黄褐色 運命特性
r ■ 明紫 高名
l ■ 明緑 伝説
! 既定 直前の色変更前へ戻す

定義場所はinterface/fonts.gfxです。

$コード

$は、別の場所で定義した文字列・変数や、GUIのシステム統計を現在の文字列内へ展開します。

@cyborg_energy_upkeep = 5
"Upkeep by +$@cyborg_energy_upkeep$"

数値書式

|で数値を整形できます。$VALUE|*x$はVALUEを小数x桁で表示します。

# EXAMPLE = 100
"$EXAMPLE|*0$" # 100
"$EXAMPLE|*1$" # 100.0

原文では小数0桁の例に10044とありますが、入力値100および直前の書式説明に合わせ、上では100としています。

£コード

エネルギー、鉱物、影響力、研究分野などシステム統計のアイコンを文章内へ表示します。タグの両側に£(WindowsではAlt+0163)を置きます。£leader_skill|3£のようにフレーム番号を付ければ、複数フレームのスプライトから選べます。ここにないものはゲームファイル内で£を検索してください。

コード 画像
£energy£ エネルギー通貨
£minerals£ 鉱物
£food£ 食料
£influence£ 影響力
£stability£ 安定度
£unity£ 統合力
£alloys£ 合金
£trade_value£ 交易価値
£physics£ 物理学研究
£society£ 社会学研究
£engineering£ 工学研究
£pops£ POP
£happiness£ 幸福度
£opinion£ 外交態度
£empire£ 帝国補正
£military_ship£ 軍艦
£military_power£ 軍事力
£blocker£ 障害物
£time£ 時間
£planetsize£ 惑星規模

£ship_stats_hitpoints\armor\shield£、£fleet_template_size£、£trigger_yes\no£などもあります。

£カスタムアイコン

16×16pxのDDSをMODルートのgfx/interface/icons/text_iconsへ保存し、イベント画像と同様にMODルートのinterface内のGFXファイルへ定義します。カスタム修飾子を定義する例は次のとおりです。

spriteTypes = {
    spriteType = {
        name = "GFX_text_worker_produces_mult"
        texturefile = "gfx/interface/icons/text_icons/mod_planet_jobs_worker_produces_mult.dds"
    }
}

複数アイコンは大きなspriteTypesブロック内へ複数のspriteTypeを置きます。名前にはGFX_text_接頭辞が必須ですが、ローカライズからは接頭辞を除いて£worker_produces_mult£と参照します。

原文の例では末尾の閉じ波括弧が不足していますが、上では外側のspriteTypesブロックを閉じる}を補っています。

バックスラッシュコード

  • \n — 改行。ただし他のコード内では除きます。
  • \t — タブ。
  • \" — 引用符など特殊文字を通常文字として扱います。

スタイルガイド

次はバニラ英語ローカライズへ馴染ませるための代表的な規則です。文字数は厳密な上限ではありませんが、超過すると切断、UI破損、外観不良が起こりえます。

場所 大文字化 句読点 目安 例
イベント名 タイトルケース なし 50 Exotic Woodwind
イベント説明 センテンスケース 通常 2000 Music has taken many forms among the beings we have encountered since leaving [Root.GetHomeWorldName], and the methods and preferences continue to baffle us. Sometimes alien […] Whatever this instrument is, it’s unlike any of our own.(「[Root.GetHomeWorldName]を離れて以来遭遇した生命たちの間で、音楽はさまざまな形を取っており、その手法や好みにはいまだ困惑させられる。時に異星の[…]この楽器が何であれ、我々のどの楽器とも異なる。」)
イベント選択肢 センテンスケース 文末句読点あり 70 An excellent time to learn more about their culture.(彼らの文化をもっと知る絶好の機会だ。)
Let us be careful and study this instrument.(慎重にこの楽器を調べよう。)
The colony is part of our future. It stays.(この植民地は我々の未来の一部だ。存続させる。)
特性・補正・建造物・志向などの名称 タイトルケース なし 30 Building Cost、Massive Crater、Very Strong
特性・補正・建造物・志向などの説明 センテンスケース 通常 200 The impact site of the meteorite which brought Lithoids to this planet.(岩石種族をこの惑星へ運んだ隕石の衝突地点。)
Members of this species possess a strength that almost defies the laws of physics.(この種族の個体は、物理法則にほとんど反するほどの強さを備えている。)
UIボタン センテンス/タイトルケース なし UI依存 Withdraw
UI警告 タイトルケース なし UI依存 Relic Activation Available

参考文献

  1. Martin Anwardによるローカライズの番号の説明(原文が引用している投稿)。

出典: Stellaris Wiki — Localisation modding(原文更新日: 2024年9月23日、版ID 92220)
翻訳日: 2026年9月16日 / 対応バージョン: 3.1
本ページは原文Wiki(CC BY-SA 3.0)の内容を翻訳した非公式ファン翻訳です。