本教程原帖为Forum-050644zf,作者保留所有权利。
·前言·
Squad在KSP1.3版本推出了本地化API,允许modder使用更加方便的方式来本地化mod。为了配合坎巴拉太空计划吧MOD发布条例,规范坎巴拉太空计划吧mod发布,故编写此简易教程。这是此教程的forum版本。
·常用链接·
———————————正文———————————
1.本地化标识符(Localization Identifier)
在1.3的KSP中,Squad给了我们一种方式来实现本地化——本地化标识符。
·实现
通过本地化标识符来实现本地化的方式如下:
- 在.cfg中用本地化标识符替换原文本/在plugin代码中用Localizer.Format函数替换原文本。
- 运行mod时,KSP会从各mod目录下的Localization文件夹下的dictionary.cfg文件中读取指定语言的Localization部分。
- KSP会将本地化标识符所对应的文本输出。
·本地化标识符的格式
本地化标识符唯一的格式要求是必须以”#”字符开头,其后的字符只要是字母数字下划线均可。
例:
#autoLOC_700000 #CAL_AmmoBox_title
·本地化标识符的规范写法
为了更加简单易懂地明白每个本地化标识符的含义及其对应文本,我们推荐按以下命名规则命名每一个本地化标识符。
#MOD名称_部件名_属性
例1:一个叫A的mod的一个叫Engine的部件的标题
#A_Engine_title
例2:一个叫B的mod的一个叫LiquidFuel的资源
#B_Resource_liquidFuel
2. 指定语言
KSP使用国际通用的语言代码来标记语言,现用的5种语言及代码如下
语言代码 | 对应语言 |
en-us | 英语(美国) |
zh-cn | 中文(中国) |
es-es | 西班牙语(西班牙) |
jp | 日语 |
ru | 俄语 |
可以添加其他语言的代码实现对其他语言的本地化。
3. 本地化文件的编写格式
本地化文件存储在mod根目录下的Localization/dictionary.cfg配置文件中,每一个配置文件都遵循KSP标准配置结构。
本地化文件的标准格式如下:
Localization { 语言代码 { 本地化标识符1 = 对应文本1 本地化标识符2 = 对应文本2 本地化标识符3 = 对应文本3 …… } }
例如:
Localization { en-us { #autoLOC_7001100 = Loading... #autoLOC_7001101 = Adding K to Every Word... #autoLOC_7001102 = Adding More Boosters... } } Localization { zh-cn { #autoLOC_7001100 = 加载中… #autoLOC_7001101 = 正在给每个词加上K…. #autoLOC_7001102 = 正在添加更多助推器… } }
4. 对.cfg文件的本地化
#1
对.cfg文件的本地化非常简单,你只需要将cfg中需要本地化的文本用本地化标识符替换,并在本地化文件中按格式添加对应语言中的对应的本地化标识符的文本。
如将某部件的parts.cfg文件本地化时,在dictionary.cfg中添加如下内容:(见图一)
对于除部件外例如resource等.cfg文件都适用于此方式。
在这里我建议在本地化时以注释的形式将原文本附在本地化文件中,以方便翻译及校对。
5. 对plugin的本地化
在代码中使用本地化时,你需要声明使用KSP.Localization类才能调用Localizer函数
方法为在代码开头添加 : using KSP.Localization;
最基本的Localizer 函数为Format函数,它接受一个本地化标识符,并返回这个标识符对应的字符串,例如:
using KSP.Localization; string text = Localizer.Format(“#autoLOC_500605”);
此时字符串text会被赋值,值的内容为在本地化文件中#autoLOC_500605所对应的文本。
通过此方式,可以将代码中需要翻译的内容使用Localizer.Format函数替换。
更多的Localizer函数可以在常用链接3中找到。
__________________________________
·后言·
想要寻找需要本地化的mod,可以到常用链接1或2中寻找需要本地化的mod。
想要深入探究mod的本地化可以在常用链接1中与modder进行讨论。