本地化是指在遊戲內窗口實際呈現給玩家的文本,如事件、菜單、武器、故事等。本地化文件以.yml的格式保存在localisation/folder路徑底下,且以UTF-8-BOM的格式編碼。.yml文件的命名慣例是<文件名>_l_<語言名>.yml,其中<文件名>為這組本地化的名字,而<語言名>為本地化的目標語言。目前支持的語言有葡萄牙語(braz_por),英語(english),法語(french),德語(german),波蘭語(polish),俄語(russian),西班牙語(spanish),以及簡體中文(simp_chinese)。
實用指令:
reload text – 重新加载本地化目录。 switchlanguage l_english – 切换语言并重新加载本地化目录。
創建本地化文件[編輯 | 編輯原始碼]
- 在模組的根文件夾(注意不在common里)創建一個名為「localisation」的文件夾。注意,在某些別的paradox遊戲裡用的可能是美式拼寫、帶有z的「localization」。
- (可選)在「localisation」文件夾中創建對應語言的子文件夾。這有助於管理,但不是必需的。
- 群星的本地化文件是用UTF-8-BOM編碼的。UTF-8-BOM是唯一可用的編碼方式,就算用UTF-8編碼也會導致群星無法解析從而不能使用。
- 正確編碼的最簡單做法是複製一個現成的群星.yml文件,再直接對其進行編輯。
- 作為替代,你也可以創建一個標準的空白文本文檔,再以UTF-8-BOM編碼保存它。類似Notepad++和Visual Studio Code這樣的文本編輯器能讓你手動將文件保存為UTF-8-BOM編碼格式。
- 文件名必須以「_l_<語言名>」結尾,否則無法被讀取。
- 任何本地化文件的第一行都必須是
l_<language>:
,否則無法被讀取。 - 範例文件名:
mod_buildings_l_english.yml
將YML文件命名為與一個原版YML文件相同會導致原版被覆蓋。這麼做並不推薦, 除非你打算改寫文件內(幾乎)所有的條目。本地化條目可以通過保存到「Replace」文件夾以單獨進行覆蓋,詳見覆蓋原版文本。
遺憾的是,遊戲並沒有適配模組的語言回滾功能。這意味着當本地化鍵值缺失時,鍵值會直接以文本形式呈現。因此,對應的做法是先直接把英語文件複製到其他所有語言裡(改成合適的標題)。
文件編碼[編輯 | 編輯原始碼]
- 使用一個文本編輯器打開YML文件。推薦使用類似Notepad++和Visual Studio Code 這樣的編輯器,如果上述軟件不可用的話,普通的記事本也行。
- 將文件轉碼成UTF-8-BOM的格式。
- 使用Notepad++時,前往菜單欄,打開編碼 界面。
- 使用Visual Studio Code時,前往右下角並點擊編碼(默認為
UTF-8
),再點擊保存編碼。作為替代,也可以通過改變設置來讓VSC默認以UTF-8-BOM 格式生成YML文件。 - 使用記事本時,前往另存為...,改變編碼並保存文件。
- 如果列出來的選項中同時有UTF-8 和UTF-8 with BOM(或相似的名稱),選用UTF-8-BOM。
- 如果列出來的選項中同時有UTF-8 和UTF-8 without BOM(或相似的名稱),選用UTF-8。【譯註:即一定要帶BOM】
本地化鍵值[編輯 | 編輯原始碼]
l_<语言名>: localisation_key_1: "文本1" localisation_key_2: "文本2"
每個單獨的本地化條目被稱為「鍵值」,位於冒號的左側,是指向本地化文本的實際代碼。而遊戲內顯示的文本則位於冒號的右側,包夾在雙引號("")里。冒號是分隔符。
- 原版文件中緊接在冒號後面的數字可以被忽略,那是Paradox內部用於跟蹤翻譯用的。[1]
- 在出現任何本地化鍵值之前,文件必須先包含
l_english:
(或其他語言的相等形式)。 l_english:
(或相等)之後的所有條目必須以空格開始(空格或tab都行)。- 所有要在遊戲內顯示的文本都被雙引號所包裹。想在遊戲內顯示雙引號的話,請在雙引號前面加上反斜槓(例如:
text \"name\"
)。 - 注意以下這些unicode字符在本地化文件中是不可用的,會生成一個「?」:
„ “ ‚ ‘ – ” ’ … —
覆蓋原版文本[編輯 | 編輯原始碼]
想要覆蓋原版本地化鍵值(或其他模組的鍵值)時,在你的「localisation」文件夾底下創建一個名為「replace」的文件夾。該文件夾中的本地化文件的讀取比其他所有本地化文件都晚,能覆蓋掉任何重複的鍵值。這樣做可以避免覆蓋所有本地化文件,每個鍵值條目會單獨被最後加載的文件所覆蓋。不通過「replace」文件夾來覆蓋本地化是可行的,但並不可靠。
方括號指令[編輯 | 編輯原始碼]
方括號指令(範圍本地化聲明) 用方括號([ ]
)包裹,以一個主作用域為開頭,一段檢索用文本為結尾。中間可以包含一個或數個次作用域。目標之間用小數點號(.)分隔。文本檢索可以提前定義(參考下方的例子),可以引用作用域中聲明的變量,也可以是段scripted_loc【即帶腳本的語言文件】(參考common/scripted_loc底下的文件)。在寫「scripted_loc」條目時,要注意這些條目本身不能用方括號指令(例如:一段帶有[Root.GetName]
的scripted_loc會直接原封不動地顯示[Root.GetName]
)。
注意:如果你想在腳本效果或觸發器中使用例如 log = [This.GetName]
這樣的本地化指令,你得把它寫成\\[This.GetName]
,不然就會出錯(至少會在效果中第二次使用時出現)。
大多數情況下可以通過'[Scope.my_variable]'
來獲取變量的賦值,以及通過'[Scope.my_date_flag]'
來獲取保存的日期。(從3.1起)
兩個連續的左方括號 '[['
會跳過指令,使一個單獨的方括號呈現在文本里。例如文件中的'[[范例]'
會在遊戲中顯示為'[範例]'。
有幾條指令是無範圍的:GetDate, GetMidGameDate, GetLateGameDate, GetYear, LastKilledCountryName
。
下方表格只記錄了一部分的硬編碼範圍本地化指令(也沒有涉及任何腳本語言文件)。一份更詳盡的代碼名單可以在Stellaris\logs\script_documentation\localizations.log
里找到。
主作用域[編輯 | 編輯原始碼]
指令 | 使用範例 | 注釋 |
---|---|---|
Root | [Root.GetName] | 事件的根作用域 |
This | [This.GetName] | 當前作用域 |
From | [From.From.GetName] | 調用事件的作用域。對於調用棧中更早位置的事件,From也可以充當次作用域 |
Prev | [Prev.From.GetName] | 上一個目標。我不清楚Prev.From指向的是什麼,不過有些項目的描述中有用到。 |
<event target tag> | [mytarget.GetName] | 事件目標(Event target)標籤要在本地化文件中聲明event_target: 後才能使用。
|
外交活動 | ||
Actor | [Actor.GetAllianceName] | 用於外交回應消息,發起行動的一方 |
Recipient | [Recipient.GetName] | 用於外交回應消息,作為行動目標的一方 |
Third_party | [Third_party.GetName] | 用於外交回應消息,行動中牽涉到的第三方 |
次作用域[編輯 | 編輯原始碼]
指令 | 使用範例 | 注釋 |
---|---|---|
國家活動:首都/統治者/繼承人/物種/聯邦 | ||
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] | 當前作用域所處的星球(人口、陸軍、考古遺址、資源點、巨構建築) |
檢索用文本[編輯 | 編輯原始碼]
指令 | 使用範例 | 注釋 |
---|---|---|
GetAdj | [Root.GetAdj] | 當前作用域所關聯的形容詞 |
GetAdjective | [Root.GetAdjective] | 當前作用域所關聯的形容詞 |
GetAllianceName | [This.MainAttacker.GetAllianceName] | 當前作用域所屬的軍事同盟的名稱 |
GetControllerName | [Root.GetControllerName] | 當前控制者的名稱(已知能對星球生效) |
GetClassName | [Root.GetClassName] | 當前星球種類的名稱 |
GetFleetName | [Root.GetFleetName] | 與當前作用域關聯的艦隊名稱 |
GetHeirName | [Root.GetHeirName] | 當前繼承人的名字 |
GetHeirTitle | [Root.GetHeirTitle] | 當前繼承人的頭銜 |
GetHomeWorldName | [Root.GetHomeWorldName] | 當前作用域的母星名稱 |
GetLeaderName | [Root.GetLeaderName] | 與當前作用域關聯的領袖名稱 |
GetName | [Root.GetName] | 與當前作用域關聯的名稱 |
GetFirstName | [Root.GetFirstName] | 與當前作用域領袖關聯的第一個名稱 |
GetSecondName | [Root.GetSecondName] | 與當前作用域領袖關聯的第二個名稱 |
GetAge | [Root.GetAge] | 作用域領袖的年齡 |
GetNamePlural | [Root.GetNamePlural] | 與當前作用域關聯的複數稱謂(必須是一個物種) |
GetNebula | [Root.GetNebula] | (未知) |
GetOwnerName | [Root.GetOwnerName] | 當前所有者的名稱 |
GetPersonalityName | [Root.GetPersonalityName] | 當前AI性格的名稱 |
GetPlanetMoon | [Root.GetPlanetMoon] | 返回「星球」或者「衛星」,取決於當前作用域是哪一種 |
GetPlanetMoonCap | [Root.GetPlanetMoonCap] | 返回「星球」或者「衛星」,取決於當前作用域是哪一種【與上條區別在於英文首字母大寫】 |
GetPopFactionName | [Root.GetPopFactionName] | 當前作用域的人口派系的名稱 |
GetRandomSpeciesSound | [Root.GetRandomSpeciesSound] | 從當前作用域物種相關聯的聲音列表里隨機選一個進行播放 |
GetRegnalName | [Root.GetRegnalName] | 當前作用域的尊稱 |
GetRulerName | [Root.GetRulerName] | 當前作用域關聯的統治者名稱 |
GetRulerTitle | [Root.GetRulerTitle] | 當前作用域關聯的統治者頭銜 |
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.SpeciesNamePluralCompliment] | 用當前作用域物種的複數稱謂發出一條讚美 |
GetSpeciesNamePluralInsult | [From.SpeciesNamePluralInsult] | 用當前作用域物種的複數稱謂發出一條侮辱 |
GetSpeciesHandName | [From.GetSpeciesHandName] | 描述當前作用域物種的手的詞 |
GetSpeciesMouthName | [From.GetSpeciesMouthName] | 描述當前作用域物種的嘴的詞 |
GetSpeciesOrganName | [From.GetSpeciesOrganName] | 描述當前作用域物種的內部器官的詞 |
GetSpeciesSpawnName | [Root.GetSpeciesSpawnName | 描述當前作用域物種的小孩的詞 |
GetSpeciesSpawnNamePlural | [Root.GetSpeciesSpawnNamePlural | 當前作用域物種的小孩的複數稱謂 |
GetStarName | [Root.Capital.GetStarName] | 當前作用域所在的恆星的名字 |
GetHerHim | [admiral.GetHerHim] | 按角色的性別輸出「他」或「她」 |
GetSheHe | [abducted_leader.GetSheHe] | 按角色的性別輸出「他」或「她」 |
GetSheHeCap | [abducted_leader.GetSheHeCap] | 按角色的性別輸出「他」或「她」【與上條區別在於英文首字母大寫】 |
GetHomeWorldName | [Root.GetHomeWorldName] | 選中國家的母星名稱 |
GetHerHis | [admiral.GetHerHis] | 按角色的性別輸出「他的」或「她的」 |
GetHerHisCap | [admiral.GetHerHisCap] | 按角色的性別輸出「他的」或「她的」【與上條區別在於英文首字母大寫】 |
LastKilledCountryName | [LastKilledCountryName] | 輸出上一個所滅亡的國家名稱 |
- 補丁3.1新增的本地化指令
GetSpeciesFossilName GetSpeciesFossilNamePlural GetSpeciesRemnantName GetSpeciesRemnantNamePlural Species GetFossilName GetFossilNamePlural GetRemnantName GetRemnantNamePlural
顏色代碼[編輯 | 編輯原始碼]
顏色代碼以§
作開頭(Windows快捷鍵:ALT+0167),後面跟着一個單一字母來指定所用的顏色,直到檢測到另一個顏色代碼,或以§!
結尾為止。指令$
代表着當前顯示的變量的顏色(不是字符串定義,詳見代碼$ ),也能通過用|
以及顏色代碼字母來隔開一對閉合的$
以指定顏色,如:$AGE|Y$
你也可以通過在顏色代碼字母中加入一個DC1 UTF-8字符來改變遊戲中的文本顏色。請注意這樣做後如果沒有把顏色改回默認,你可能會不小心使所有後續文本着色。
§RR§Sa§Hi§Yn§Gb§Bo§Mw§!
會被顯示成:Rainbow
代碼 | 顏色 | 原版用法 |
---|---|---|
W | 白色 | 外交態度 |
T | 淺灰色 | 所有文本的標準顏色 |
L | 棕色 | 傳說、背景故事、角色扮演元素 |
P | 淡紅色 | 在描述和事件文本中高亮顯示充滿敵意的文本 |
R | 紅色 | 負面修正 |
S | 暗橙色 | 含蓄的高亮文本 |
H | 橙色 | 高亮文本 |
Y | 黃色 | 欠佳或中性的修正 |
G | 綠色 | 正面修正 |
E | 青色 | 大塊文本 |
B | 藍色 | 影響人口的事件效果 |
M | 紫色 | 稀有科技 |
! | 默認 | 回到上一次顏色變化之前的顏色 |
代碼$[編輯 | 編輯原始碼]
$ 用於圈定在別處定義的字符串(或變量),將其拓展到當前字符串中,或GUI元素的系統統計數據里。
數字格式[編輯 | 編輯原始碼]
| 字符也能被用於調整數字的格式。$VALUE|*x$
會將VALUE
的小數點限定到x
位。
# 范例 = 100 "$范例|*0$" # 100 "$范例|*1$" # 100.0
代碼£[編輯 | 編輯原始碼]
代碼£用於各種系統圖標的名稱,包括能量幣、礦物、影響力,和三種研究類型(工程學、物理學、社會學)。還有更多沒有列在此處,比如£ship_stats_hitpoints\armor\shield£
、£fleet_template_size£
以及£trigger_yes\no£
與其他種種。可以用類似於Notepad++的在文件中查找功能來搜索『£』字符,以找到特定的某樣東西。記住代碼£必須包圍着你所感興趣的標籤,例如£energy£
。(沒有英鎊符號的Windows用戶可以在鍵盤上按Alt + 0163
)
其同時也支持多框架(如果子來源有的話),例如:£leader_skill|3£
會渲染一個指定技能等級的圖標。
£自定義圖標[編輯 | 編輯原始碼]
你可以創建在遊戲內與上方圖標表現一樣的文本圖標,通過把圖標保存在<遊戲根目錄>/gfx/interface/icons/text_icons 里。標準的文本圖標是尺寸為16x16像素點大小的.dds文件。為了在文本中引用你的圖標,你需要像定義事件圖片一樣定義它。將以下文本文檔以.gfx的格式保存到<遊戲根目錄>/interface/ 里可以定義如下方所示的任何自定義修正:
spriteTypes = { spriteType = { name = "GFX_text_worker_produces_mult" texturefile = "gfx/interface/icons/text_icons/mod_planet_jobs_worker_produces_mult.dds" }
你可以通過多寫幾個spriteType =
區塊來關聯更多的圖標。這些全部都應該處在spriteTypes =
(多了一個s)的區塊中。
其名稱必須以GFX_text_
為前綴。不過,如果是為了在本地化文件中引用它,用£worker_produces_mult£
(沒有前綴)就行,它會照常在遊戲文本中出現。
基於斜槓的代碼[編輯 | 編輯原始碼]
兩種可用的斜槓代碼分別是\n
和\t
。
\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." |
事件選項 | 句首字母大寫 | 句尾終止式 | 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" |
參考[編輯 | 編輯原始碼]
帝國 | 帝國 • 思潮 • 政府 • 國民理念 • 起源 • 承諾 • 議程 • 傳統 • 飛升天賦 • 法令 • 政策 • 遺珍 • 科技 • 自定義帝國 |
人口 | 崗位 • 派系 |
領袖 | 領袖 • 領袖特質 |
物種 | 物種 • 物種特質 |
行星 | 行星 • 行星特徵 • 軌道礦藏 • 建築 • 區劃 • 行星決議 |
星系 | 星系 • 恆星基地 • 巨型結構 • 蟲洞 • 星門 • 地圖 |
艦隊 | 艦隊 • 艦船 • 部件 |
地面戰 | 陸軍 • 轟炸姿態 |
外交 | 外交 • 聯邦 • 星海共同體 • 評價修正 • 宣戰理由 • 戰爭目標 |
事件 | 事件 • 異常現象 • 特殊項目 • 考古遺址 |
遊玩 | 遊玩 • 定義 • 研究 • 經濟 • 遊戲開局 |
動態修改 | 動態 • 指令效果 • 觸發條件 • 作用域 • 修正 • 變量 • AI |
媒體/本地化 | Maya 導出器 • 圖形 • 肖像 • 旗幟 • 事件圖片 • 界面 • 圖標 • 音樂 • 本地化 |
Other | 控制台命令 • 存檔編輯 • Steam 創意工坊 • 模組製作教程 |