Alice in Cradle 的 localization 语法归纳

Alice in Cradle 的 localization 语法归纳

人は、国に住むのではない。国語に住むのだ。『国語』こそが、我々の『祖国』だ。
It is no nation we inhabit, but a language. Make no mistake; our native tongue is our true motherland.

Localization,意为「本土化」(不建议叫「本地化」,因为「本地」一词往往与「远程/在线」相对),是面向多国语言用户的软件开发过程中包括但不限于文本翻译(往往还涉及到数字、日期、时间的格式调整,以及民间计量单位的换算等)的一项重要工作。

Alice in Cradle 的 StreamingAssets 文件夹中有一个 localization 子文件夹,里面放置的正是此游戏每种语言的翻译文本(每种语言有一个 icon.png 表示该语言在标题画面右下角的图标,一般为国旗),具体如下。

  1. __AdditionalFonts: 中文和韩文的字体文件,以及标点符号间距的配置文件。
  2. _: 日本语原文,其中 __tx_whole.txt 无视玩家的语言设置被强制使用。换句话说,其他子文件夹下的 XX_tx_whole.txt 修改无效!(XX 为语言代码,下同)
  3. en: 英语,由游戏作者 Hinayua 自行翻译。
  4. ko-kr: 朝鲜(韩国)语。
  5. th: 泰国语,已停止维护,未翻译的部分用英语。
  6. zh-tc: 汉语繁体中文。
  7. zh-cn: 汉语简体中文,由汉化组 b站 AliceInCradle官方翻译。

除此之外社区还出现过粤语补丁包,而不在任何子文件夹下的各个___family_XX.txt则用来引导语言设置的加载。

在 0.24 或更早版本中,由于剧情事件的 cmd 文件被封装了起来,玩家不借助第三方工具无法对其进行修改,因此只能对 localization 文件夹中的 txt 文件进行少量修改。

具体而言,只能修改某个角色的某条发言的页数和每页的内容,同时还不能与当时的立绘差分(PIC 指令)以及表情符号(PIC_MP 指令)相违和。

在 0.25 中,cmd 文件被暴露在了 StreamingAssets 文件夹下的 evt 和 m2d 这两个子文件夹内,因此它们可以和 txt 文件一起被修改来实现更好的二创效果,本帮助文档将详解 txt 文件的写法。

首先是系统需求,Windows 用户最好使用 Windows 10 的最新版本或 Windows 11,并将记事本(notepad)升级到支持标签页/选项卡功能的最新版本,推荐使用微软 Visual Studio Code 等现代文本编辑器(Windows 8.1 以下尤甚)。

这是因为,所有 txt 文件的文本编码必须为不带 BOM 的 UTF-8,必须用 Unix 风格的换行(LF、\n),不能用 Windows 风格的回车换行(CRLF、\r\n),否则会变成双倍行距。
Windows 10 以上的最新版记事本可以正确读取 LF,但新建的文件默认是 CRLF 且无法更改,可通过复制已有文件并重命名来解决。

接着是游戏配置,请确保已在 StreamingAssets 文件夹的 _debug.txt 文件中将「reloadmtr、announce、timestamp」这三项后的数字都改为1。成功的话,游戏运行过程中左下角会显示当前时间和帧率,非标题画面按下 F9 键可以热刷新 localization 文件夹(evt 文件夹的 cmd 文件修改后只需要重新触发对应的事件即可,无需额外操作),非标题画面按下 F7 键可以打开控制台(在事件中按下则会在右侧显示正在执行的事件 id 和内容),笔记本电脑用户请注意 Fn 键的默认行为。

试试看吧:请用记事本或任何文本编辑器打开所用语言文件夹下的 ev_s12_v22.txt 文件,找到*s12_15e n_00所在的段落,将其下方的第一个*n_01改为单个*独占一行。
保存后在游戏中按下 F9 刷新(左下角会有提示并播放存档音效),然后调查「酸液巨树顶部的精灵之村入口」,对比修改前后的差异。
如果你曾按照另一篇文档的指示修改 evt 文件夹下的 s12_15e.cmd 文件达到过类似的效果,请仔细观察诺艾儿第二条发言时的立绘在两种修改方法下的差异。

不管是两类 txt 文件中的哪一类,如果某一行开头是//(两个撇斜杠),则整行会被忽略,视为注释。但/**/之间的内容则不然,见下。

XX_tx*.txt 的语法

在另一篇文档中这部分文件被称为「tx 类 txt 文件」,主要用于 UI,且在同种语言内除了 XX_tx_whole.txt 以外其他的都可以合并内容或调换顺序,但第一行必须为%FAMILY XX

截至 0.25,tx 类 txt 文件的内容分布和顺序已经非常混乱了,也许全部合并以后按标识符的字典顺序排序(可能再按公共前缀拆分)比较好?

每个词条有两种常规写法,其一是单行写法&&标识符 内容,此时内容必须写在同一行内(但仍然可以用\n换行),内容可能含有 &1、&2 等形式参数,例如:

&&Depert_from_noon 从第&1天的早上开始(危险度:&2)
&&Depert_from_evening 从第&1天的黄昏开始(危险度:&2)
&&Depert_from_night 从第&1天的夜晚开始(危险度:&2)

其二是多行写法,模板如下:

/* ___ 标识符 ___ */
第一行
...
最后一行

例如:

/* ___ Summoner__descryption ___ */
危险度:&1
可能出现的的敌人:
&2
污染体: 最多 &3 单位

在上面的最后一个例子(来自 0.09 版)中存在拼写错误,应为 description(所以汉化组也刻意写了两个「的」字来吐槽么)。

XX_tx_item.txt 中还有第三种写法,具体如下:

%ITEM 物品ID 物品名
物品介绍
第二行
...
最后一行
%RECIPE_REPLACE 物品ID 食材简称

例如下面的例子:

%ITEM mtr_curry 小瓶香料
伏沦岭特产的
小瓶香辛料。
气味令人食欲大开。
%RECIPE_REPLACE mtr_curry 咖喱

ev_*.txt 的语法

这类文件的文件名只要求以 ev_ 开头,下划线后的部分并不要求与所属的事件 id 有什么关联。它们的内容基本上都是剧情事件中的对话或独白,不过从 0.24 起还允许书写告示牌/书信的内容。

特别地:
对于 ev_book.txt,请查阅另一篇文档中对MSG BOOK@L_b00指令的介绍。
对于 ev_debug.txt,其内容不属于游戏流程且语言混乱,但有一些控制序列的例子,可以参考。
对于 ev_fatal_snake.txt 和 ev_trm_01.txt,二创基本上无法涉足这些复杂的 spine 骨骼动画演出,否则原作也不会只在 0.21 和 0.23 做这么两个出来了。

和对于 tx 类主张合并不同,AliceInCradle 玩家服务站对于 ev 类的主张是「逐事件拆分」,从而减少二创 mod 的文件冲突。

每条对话的语法形如:

*事件ID x_id
第一行
...
最后一行
*
第二页

(下一条对话)

看上去有些复杂,下面逐步讲解:

  1. 事件 ID: 与 evt 文件夹下的 cmd 文件名一致(但如果不是主线流程,则要写出以__开头且包含/的完整路径),也可在事件运行过程中打开 F7 控制台在右上角看到。
  2. 同一事件中的所有对话只有第一条需要写明事件 ID,后面的每条对话第一行都可以简写为*x_id,总之就是有且只有一个*并且在行首
  3. x_id: 即另一篇文档中介绍的MSG x_id指令的形式参数,或TX_BOARD *xxx n指令的形式参数 xxx。
  4. 换行与换页:由于 Unity 引擎的缺陷,中日韩文无法像英文一样根据对话框宽度自动换行,而是会在任何一行字数过多时将整页字号缩小。

    对于默认大小的对话框(420×240),每行不应超过 16 个全角字符,每页不应超过 5 行,换页请使用*独占一行。

下面是几个例子:

// 美术馆后厅的独白,请注意 n_00 和 board 一词左边有无星号。
*___city_museum/t_kenzen n_00
……呜呜。
也许我还没有准备好去直面这些回忆……
*board_not_kenzen
健全模式已经开启。
如果要查看插画的话
必须关闭健全模式。

// 冒险者公会的告示,请注意和上面例子的区别。
*___city/guild_board_105 board
【紧急特别报道】今日凌晨获悉,森林深处
传说中的巨大树类魔族已被勇者打倒!
我们有志气、亦有能力战胜大自然的挑战!
*n_00
<think>这、这个,
该从哪里开始吐槽比较好呢……

// 诺艾儿刚抵达格拉提亚的事件,请注意 n_02 的换页。
*105/m00_entrance_00 n_00
呼……
*n_01
总算是到格拉提亚了。
和那么大的魔族战斗,
有多少条命都不够用啊……
*n_02
军队的士兵们,
可能正在解除战备吧。
*
伊夏同学被送到哪里去了呢?
要是能在课程开始前
见到她就好了……
*n_03
……有没有知道的人啊,
问一下那边的军人吧。

静态文本中的控制序列

tx 类静态文本以及告示牌/书信中可使用的控制序列并不是很多,不过它们全部可以用于 ev 类台词中。具体而言,其语法有点像是 HTML 标签?

字体属性控制

语法为<font k1="v1" k2="v2" ...>文本</font>,这里的 k1, k2 等可以是以下属性名。

alpha: 不透明度,如<font alpha="0.25">No Use</font>
color: 颜色,如<font color="#E70B0B">只有在长椅或据点处才能够保存。</font><font color="ff:#6D72FF">肚子饿的时候吃饭更美味哦!</font>,因为文字并不像图片一样支持不透明度,所以ff:会被忽略。
letterspacing: 字母间距,只有英文的 txt 文件用到了,如<font letterspacing="0.88">Can't Give Birth</font>
linespacing: 行距,如<font linespacing="1.5">危险</font>
size: 字号,如<font size="12">(Enter键除外)</font><font size="80%">(房间匹配)</font>

此外,也可以写<i>斜体</i>(tx 类和 ev 类通用),但没有粗体/下划线/删除线什么的。

按键提示和其它图标

使用<key 键名/>可以显示一个按键的提示图标,例如同时长按<key z/>+<key x/>:圣光爆发。所有可用的按键键名在 XX_tx_config.txt 中以 &&Keyconfig_name_xxx 的形式列出,具体如下。

submit: 确认(默认为 Z Space,建议只保留 Z,此外回车键被锁定为此功能)
cancel: 取消(默认为 X ESC,建议只保留 ESC)
menu: 菜单(默认为 ESC)
ltab, rtab: 切换 UI 标签页/选项卡(默认为 Q E)
sort: 物品排序,地图界面回到当前位置,与小木偶或酒保交易时查看帮助(默认为 A)
shift: 物品对照(在另一侧显示),地图界面缩放,作为组合键批量增减物品(默认为 LShift)
add: 添加物品,对话记录(默认为 Tab)
rem: 移除物品,隐藏对话框(默认为 LCtrl)
la, ta, ra, ba: 方向键(Left Top Right Bottom Arrow),注意 ta 不一定是跳跃!

run: 长按奔跑(默认为 Space,建议与下面的 check 不同)
check: 调查,搭话,采集(0.25 新增,默认为 Space)
z: 轻攻击,魔法霰弹(默认为 Z)
x: 魔法咏唱(默认为 X)
c: 在美术馆查看 CG 时口头「品鉴」(默认为 C)
a: 打开地图(默认为 A)
s: 其他(未使用,默认为 S)
d: 快捷物品(默认为 D)
jump: 跳跃(默认为上方向键,可以改掉)
lsh: 护盾,闪避(默认为 LShift)
m_neutral, mla, mba, mta, mra: 单键选择魔法(默认为 F1-F5,也许会很有用?)

此外,还可以用<img mesh="图标名"/>来插入其他图标(例如异常状态),具体有哪些请善用 Visual Studio Code 的跨文件搜索功能。

台词中的控制序列

ev 类 txt 文件中的台词(不包括告示牌/书信)在对话框中是以打字机特效逐字显示的,因此可以使用更多的控制序列。

对话框样式调整

语法为<样式>,必须写在一页对话的开头(换言之同一条对话的各页可以用不同样式)。这里的样式不同于另一篇文档中提到的 HKDS 指令设置的样式,所有可用的样式如下:

  1. normal: 默认(当面正常讲话),一般用来从其他样式恢复默认,白底棕边圆角平行四边形。
  2. angry: 愤怒(突然厉声呵斥),圆角矩形且四周冒出剑山污染体一样的尖刺。
  3. think: 心想(其他人听不到),四角变成圆耳朵,指向角色的尖角变成小气泡。
  4. circ: 圆泡(游戏中未使用),与 think 类似但尖角不变,左右边缘会有更多小气泡。
  5. device: 电话(法杖无线通信),灰底蓝边尖角平行四边形。
  6. evil: 魔族(酒保和小木偶),灰底红边圆角平行四边形,打字速度变为六分之一。
  7. noise: 噪音(梅法命令撤离),部分文字被随机涂黑。
    可以使用<noise level=n>指定涂黑概率,n 值默认为 1(即<noise>),最大为 4(几乎全文涂黑)。

在上述样式中,noise 可以和其他一个一起用(比如和 device,注意要分别写在两个<>内),此外 noise 和 device 并不影响台词的嘟嘟音效,音效是由 cmd 文件的 TALKER_REPLACE 指令切换的。

此外,在样式之前可以使用<I>令对话框突然出现,没有动画过程,如上课时老师连续讲授。

字号、颜色和特效

可以使用<big>大文字</big><small>小文字</small>将文字切换为 38 或 12 磅字号,其他字号 n 可使用<font size="n">文字</font>来指定。

可以使用<c 颜色>文字<c><m 特效>文字<m>来变色或添加特效,其中<c><m>也可分别写作<c0><m0>

此法支持的颜色如下(圆括号内的字母可以省略,其他颜色可用<font color=...>文字</font>来指定):
red, ora(nge), yel(low), gre(en), blu(e), pin(k), gra(y), whi(te), bl(ac)k
除黑色外,其余 8 种颜色也可以用<c1><c8>指定。

此法支持的特效如下(部分特效在文字出现后循环播放,可与 ple 或 fadein 一起使用):
normal: 默认,文字匀速地一个个突然出现,游戏中未使用过。
strong: 强壮,但实际效果好像和 normal 一致,游戏中未使用过。
ple(asure): 文字由大变小,常用来配合更大字号表示大喊。
fadein: 淡入,在慢速下比起突然出现的一个个字符要更流畅。
joy: 波浪线(循环),如校门口的占卜双胞胎。
scary: 原地颤抖(循环),如瓦罗斯的口头禅「咔哈哈!」
vib: 整齐地上下弹跳(循环),游戏中未使用过。
cry: 错落有致地上下弹跳(循环),游戏中只有奥斯托利亚用过它来形容蛊惑之沼的魔族。

打字速度调节

使用以下四种语法可以调节打字速度(N为正整数):

  1. <wN>: 暂停打 N 个字的时间。
  2. <WN>: 暂停打 10N 个字的时间,相当于<wN0>
  3. <sN>: 打字速度变为正常速度的 1/N 倍。
  4. <SN>: 打字速度变为正常速度的 N 倍。

上方注音

众所周知,日本语有大量音读/训读汉字以及用片假名写成的英文单词。因此在配音语言和字幕语言不一致时,就可能需要在正文中意译部分词汇并在上方注音。

注音的语法为<rb c="注音">正文</rb>,字号大小为正文的一半,例如:

<rb c="咒文">魔法</rb>
<rb c="犊子">魔族牛</rb>
<rb c="幻影">景象</rb>

然而对于没有台词配音的 Alice in Cradle 来说这种做法的意义存疑,尤其是在中文文本中。事实上由 Hinayua 自己撰写的英文文本中,只有极个别的地方用到了这种语法(石头、剪刀、布、胸罩、可怜、可爱)。

实战

请打开所属语言的 ev_s10.txt 文件,定位到 *s10_4c_srng x_00 一行,在其下尽可能尝试上述所有语法,并在游戏中(魔女杂货店坡顶的霰弹教学 NPC 处)查看效果。

本文档最后更新于 2024 年 6 月 25 日。

Author

e9ae9933 vs. GreyDoge

Posted on

2025-02-08

Updated on

2025-02-08

Licensed under