翻译
翻译是将文本从一个语言转换为另一种语言的过程。 不管是将中文翻译成英文,还是将英文翻译成中文,翻译的目标都是一致的: 给读者带来准确无误的文本,保证绝大多数人都可以理解。
翻译 NewGRF
翻译 NewGRF 的方式取决于 NewGRF 本身是如何编写的。
语言 |
方式 |
|---|---|
NML |
在 Lang 文件夹当中加入对应的语言文件 |
grf-py,使用了 string manager |
在 Lang 文件夹当中加入对应的语言文件 |
grf-py,未使用 string manager |
手动修改代码 |
NFO |
手动编写 Action4 |
YAGL |
手动编写 Action4 |
M4NFO |
手动编写 Action4 |
这里仅介绍前两种情况下编写翻译的方式。
认识 grflangid
## grflangid 0x01
# plural 0
...
上文当中的“grflangid”可以拆分为三个部分:“grf”、“lang”、“id”。其作用是指示语言 ID。 如“英式英语”是 0x01,而“简体中文”就是 0x56。 如果 grflangid 设置错了,玩家就完全无法看到翻译了:翻译跑到其他的语言去了[1]。
复数形式与格形式
一些语言有复数形式,如在英语中,“train”(火车)的复数形式是“trains”,“property”(属性)的复数形式是“properties”。 中文没有名词的复数形式,在大多数情况下翻译可以忽略使用复数。
控制符号
控制符号可以用以控制文本颜色、插入变量、插入另一段文本等。
小心
不正确使用控制符号、盲目使用机翻有很大概率导致输出的文本让人难以理解。 一个反面样例:
原文:
{BLACK}{}Production needs {WHITE}per unit{BLACK} of tobacco:{}* 1 worker{}{}Production {WHITE}per unit{BLACK} of tobacco:{}* 1 unit of cigars
Production needs per unit of tobacco:
* 1 worker
Production per unit of tobacco:
* 1 unit of cigars
==========================================
修正前:
生产需求 {WHITE}每包{BLACK} 烟叶:{}* 1 工人{}{}生产 {WHITE}每包{BLACK} 烟叶:{}* 1 盒雪茄
生产需求 每包 烟叶:
* 1 工人
生产 每包 烟叶:
* 1 盒雪茄
==========================================
修正后:
{WHITE}每单位{BLACK}烟叶生产需求:{}* 1 位工人{}{}{WHITE}每单位{BLACK}烟叶产品:{}* 1 单位雪茄
每单位烟叶生产需求:
* 1 位工人
每单位烟叶产品:
* 1 单位雪茄