跳转到内容

本地化(localisation)

本地化(Localisation/Localization)与翻译(Translation)相比,除了要完成基本的翻译以外,还要使翻译后的词语/语句符合当地的语言习惯。不过对于模组作者来说,如果不考虑发布多语言的 Mod,则可以不考虑翻译的问题。

在群星游戏中,本地化是用于将代码中的一些Key转换为对应语言的文件。

对于任意的本地化文件,它必须满足以下几个条件:

  • 文件名以 l_<语言>.yml 结尾,对于简体中文,则是 l_simp_chinese.yml,文件名的前缀不限,可以是任意,当有前缀时,文件名应以 _l_<语言>.yml 结尾,如 my_localisation_l_simp_chinese.yml
  • 文件的开头为 l_<语言>:,对于简体中文,则是 l_simp_chinese:
  • 文件的编码格式为 UTF8 With BOM
  • 文件存放于 localisation/<语言> 目录下,对于简体中文,则是 localisation/simp_chinese

由于本教程面向中文 Modder,因此以下均以简体中文语言为例。

我们打开一个原版的本地化文件 localisation/simp_chinese/technology_l_simp_chinese.yml,这个文件包含了原版部分科技的本地化:

l_simp_chinese:
####################################
#Categories
####################################
materials: "材料科学"
materials_desc: "创造并处理材料,以提高其实用性和耐用性。"
propulsion: "推进力学"
propulsion_desc: "一项关于推进技术和弹道技术的研究"
voidcraft: "宇航技术"
voidcraft_desc: "太空是终极边界,掌握它就掌握了未来。"
robotics: "机器人学"
robotics_desc: "全方位机械化"
industry: "工业技术"
industry_desc: "创造与生产。"
field_manipulation: "力场操控"
field_manipulation_desc: "迫使基本力遵从我们的意志。"

对于每一个本地化文件,其开头必须为 l_simp_chinese:,本地化的格式如下:

<需要本地化的项目>: "本地化文本"
# 这个符号后紧跟着的是注释

一般将 <需要本地化的项目> 称为Key)。

你可能会在原版的本地化文件中看到类似于如下的本地化:

DLC_MEGACORP:0 "寰宇企业"

这个条目在 : 后多了一个数字 0,该数字对本地化无影响,推测是 P 社用于标记该条目被修改次数用的,在 3.9 版本更新后,几乎所有的 :0 均被修改为了 :

  • \t 用于表示四个空格的缩进
  • \n 用于表示换行
  • 如果你需要在本地化中书写英文双引号 ",则需要使用 \" 替代
  • 我们强烈建议将你的本地化文件命名为 <你的Mod名称或缩写>_l_simp_chinese.yml 以得到更清晰的文件结构

通常来说,拥有相同名称的本地化文件会互相覆盖,靠后读取的文件将会覆盖靠前读取的文件,但完全不推荐使用此种方式去覆盖/重写原版的本地化。

推荐的做法为:在 localisation 文件夹中新建 replace 文件夹,并在其中放置本地化文件,这些文件仅包含被覆盖的条目。

例如,将飞升天赋合成进化更改为机械飞升:在 localisation/replace 文件夹下新建 my_replace_l_simp_chinese.yml,在其中输入以下内容

l_simp_chinese:
ap_synthetic_evolution: "机械飞升"

注意:尽管你可以不用通过新建 replace 文件夹并在其中放置本地化的方式来覆盖单个条目,但此种覆盖方式是不稳定的。

在游戏中时常能见到带有颜色的本地化文本,这些文本是用过颜色代码来修改颜色的,具体而言,颜色代码的格式为 §<颜色代码>本地化文本§!

§ 可在 Windows 上使用键盘快捷键 Alt + 小键盘 0167 打出来。

代码颜色原版用法
M品红用于表示稀有科技
L褐色背景/描述文本
G绿色用于正面修正的数字
R红色用于负面修正的数字或警告
B蓝色用于部分特殊文本
Y黄色文本高亮或是次优/中性的文本
H橘色文本高亮
C青色用于概念文本(Concepts)
K橘色概念(Concepts)的标题,目前与H相同
I黄色概念(Concepts)文本的高亮,目前与Y相同
T白色文本的默认颜色
E标准绿色用于大片的文本,例如事件或协助者 (别问为什么是标准绿色,蠢驴这么写的)
S橙色副标题高亮(比上面的橘色稍微深点)
W白色(别问为什么是空的,蠢驴没写)
P粉色在副标题警告中使用此代码,而非R
V暗绿用于事件文本
g灰色(别问为什么是空的,蠢驴没写)
_紫色占位符
c颜色领袖特质稀有度:普通
v颜色领袖特质稀有度:老练
d颜色领袖特质稀有度:命定
r颜色著名英杰
l颜色传奇英杰
!返回上一次颜色改变前的颜色,一般作为颜色代码的结束标记

注意:

  • 文档中所展示颜色的背景色是为了显示清楚颜色,颜色代码并不会改变文本的背景色。

  • 由于文档与游戏对文字的渲染方式不同,颜色的显示可能略有偏差,具体颜色均以游戏内显示效果为准

  • 由于本文档并非实时更新,展示的颜色代码可能过时,具体的颜色代码可参阅interface/fonts.gfx

另外,颜色代码是可嵌套的,这意味着你可以写出类似这样的文本:§RR§Sa§Hi§Yn§Gb§Bo§Mw§!,在游戏内将会被显示为:Rainbow

使用 $本地化键$ 可以引用其他的本地化条目,此方法可以增强复用性,减少多处使用同个文本导致的重复和修改时可能出现的遗漏等。

以泰坦的光环部件为例:

AURA_NANOBOT_CLOUD: "纳米机器云"
SHIP_AURA_NANOBOT_CLOUD: "$AURA_NANOBOT_CLOUD$"

在游戏中,本地化键为 SHIP_AURA_NANOBOT_CLOUD 的地方均会显示为 纳米机器云

除此之外,$ 还可引用定义于 scripted_variables 中的常量值。假设我们在 common/scripted_variables 中定义了常量 @my_variable = 100,则可在本地化中使用 $@my_variable$ 来显示这个常量的值。

当我们在本地化中引用数字时,有时我们希望对数字进行格式化处理,例如控制显示的小数位。

以下示例中,VALUE的值为100

语法说明样例效果
$VALUE|*n$VALUE 显示 n 位小数$VALUE|*1$100.0
$VALUE|%n$VALUE 显示为百分数,保留 n 位小数$VALUE|%1$10000.0%
$VALUE|=$显示 VALUE 的符号,即正数显示+,负数显示-$VALUE|=$+100.00
$VALUE|+$VALUE 的值为正数时将字体颜色改为绿色,为负数时改为红色$VALUE|+$100.00
$VALUE|-$VALUE 的值为正数时将字体颜色改为红色,为负数时改为绿色$VALUE|-$100.00
$VALUE|颜色代码$VALUE 的字体颜色修改为指定的颜色$VALUE|Y$100.00

以上的几种格式化方法可以混合使用,且顺序是无关紧要的,例如:$VALUE|0=-%$,当 VALUE1 时,显示为+100%,当 VALUE-1 时,显示为-100%,当不指定小数位数时,默认显示 2 位小数。

数字格式化方法仅对引用的 scripted_variablecustom_tooltip_with_params 的参数有效,此外,数字格式化有时会莫名抽风,即使格式完全正确也无法在游戏内显示,目前没有好的解决方法。

在本地化中允许显示图标,其语法格式为 £图标ID£

£ 可在 Windows 上使用键盘快捷键 Alt + 小键盘 0163 打出来。

可引用的 图标ID 一般分为两种,一种是需要在 interface 中进行注册的,另一种是无需注册可直接使用的,例如职业图标、修正图标和资源图标。

对于可直接使用的图标,一般 图标ID 即为对应内容的名字,例如 £job_researcher£ 为研究员职业的图标,£alloy£ 为合金的图标。

对于需要注册的图标,原版游戏中已经注册了许多可用的图标,可在 interface 文件夹中搜索 GFX_text_ 来查找所有可用图标,注意,这类图标的具体用法请查看下方内容。

强烈建议在学习了GUI 与视觉效果后再来阅读本节内容。

注册图标的格式如下:

spriteTypes = {
spriteType = {
name = "GFX_text_my_icon"
texturefile = "你的图标路径"
}
}

在本地化中使用 £my_icon£ 来引用这个图标,注意,注册图标时 name 中的 GFX_text_ 是必要的,而引用时则无需添加。

支架命令/方括号命令(下文均称为支架命令)是一种高级用法,它允许文本动态地从游戏中读取某些对象的名字,例如国家名称、领袖名称、星球名称,或是某些对象的复数形式、形容词形式,或是物种的各类器官名称、羞辱词等,或用于提取人称代词,例如男性领袖和女性领袖的他/她。

注意:这部分内容包含进阶知识与技巧,强烈建议在学习完Event Modding 进阶中的内容后再来阅读本节内容。

支架命令可分为硬代码规定的命令和可自定义的 scripted_loc

支架命令的一般格式为 [域.命令],其中可省略,省略时默认为 this(即这条文本被使用时所在的域,如在事件的描述中使用,那么支架命令的 this 就与该事件的 this 相同)。

支架命令中可使用域就意味着它可以像在 event 中一样,通过转域来实现一些较为复杂的功能,例如,在 thisCountry 的地方使用 [Capital.GetName] 即可获取该国家首都星球的名称。

如果需要在文本中书写方括号 [,则需要使用 [[ 来替代,例如:[[example] 将会显示为 [example]

需要注意的是并非所有的文本都可以使用支架命令来动态显示文本,在不支持的地方使用支架命令时,即便不使用 [[ 转义,文本中也会直接将方括号原原本本地显示出来。

由于原版硬代码规定的命令数量庞大,以下仅列出了少部分非常常用的命令:

命令可用域说明样例
GetName任意获取对象的名称[Root.GetName]
GetAdjSpeciesPlanetCountryFleet获取对象的形容词形式[Root.GetAdj]
GetAgeLeader获取对象的年龄[Leader.GetAge]
GetHeSheLeader获取对象的第三人称代词(他/她)[Leader.GetHeShe]

更多可用的命令可参阅 文档/Paradox Interactive/Stellaris/logs/script_documentation/localizations.log,其中 Promotion 指在该域下可转到的域,Properties 指在该域下所有可用的硬编码支架命令。

参阅 Script Loc 章节。

以下列出了一些实用的控制台命令,以帮助各位 Modder 在开发中更方便地调试自己的本地化。

  • reload text:重新加载所有本地化文件(本地化文件较多时会卡顿)
  • switchlanguage <语言>:切换为对应语言,如switchlanguage l_english
  • toggle_string_id:显示本地化键而不是本地化

© 2026 Stellaris Mod Group. Copyright Reserved.

Powered By Astro / StarLight