把原版的3个esm和汉化导出的3个esp文件tes3cn_*.esp放到openmw\scripts目录下,
打开命令行, 进入openmw\scripts目录, 依次运行下面几行命令, 生成出对应的6个txt文件:
luajit tes3dec.lua Morrowind.esm 1252 raw > Morrowind.txt
luajit tes3dec.lua Tribunal.esm 1252 raw > Tribunal.txt
luajit tes3dec.lua Bloodmoon.esm 1252 raw > Bloodmoon.txt
luajit tes3dec.lua tes3cn_Morrowind.esp gbk raw > tes3cn_Morrowind.txt
luajit tes3dec.lua tes3cn_Tribunal.esp gbk raw > tes3cn_Tribunal.txt
luajit tes3dec.lua tes3cn_Bloodmoon.esp gbk raw > tes3cn_Bloodmoon.txt
运行下面一行命令检查以上6个txt文件和topics.txt,检查通过会生成3个tes3cn_*.fix.txt:
luajit check_topic.lua topics.txt > errors.txt
有些错误信息会输出到命令行和errors.txt, 如果命令行显示出ERROR:开头的错误, 需要先修正.
各种错误信息的解释:
invalid topic [xxx] at line ... 原版txt里找不到xxx关键词(txt里有DIAL.NAME "xxx"且紧接着下面那行必须是DIAL.DATA [00]的)
invalid check topic [xxx] at line ... 汉化txt里找不到xxx关键词
duplicated topic [xxx] at line ... topics.txt里原文xxx出现了重复
duplicated checkTopic [xxx] at line ... topics.txt里译文xxx出现了重复
undefined topic [xxx] 原版txt里出现过关键词xxx,但topics.txt里没定义
undefined check topic [xxx], ref [yyy] 汉化txt里出现过关键词xxx,但topics.txt里没定义,可能对应的原版关键词是yyy
luajit tes3enc.lua tes3cn_Morrowind.fix.txt tes3cn_Morrowind.fix.esp
luajit tes3enc.lua tes3cn_Tribunal.fix.txt tes3cn_Tribunal.fix.esp
luajit tes3enc.lua tes3cn_Bloodmoon.fix.txt tes3cn_Bloodmoon.fix.esp
其它说明:
topics.txt要求所有英文字母全部小写.- 如果有额外的
esm/esp文件需要处理, 也需要转换成txt, 再修改check_topic.lua: 在src_filenames补充原版的txt文件,dst_filenames补充汉化版导出的txt和修正后的txt文件名. - 如果mod增加关键词, 需要补充
topics.txt. tes3dec.lua和tes3enc.lua是万能的esm/esp/omwsave处理工具, 转化为纯文本文件, 方便修改, 包括汉化. 目前支持上古卷轴3/4/5,辐射3/nv/4, 但上古卷轴5和辐射4的文字不放到esm/esp里了.
原|译.esp=>原|译.txt: tes3cn_dec.bat原|译.txt=>原|译.txt: tes3cn_trim.bat原.txt + 译.txt + topics.txt=>译.ext.txt: tes3cn_ext.bat译.ext.txt=>译.ext.txt: tes3cn_fix.bat原.txt + 译.ext.txt + topics.txt=>译.txt: tes3cn_mod.bat译.txt + topics.txt=>译.txt: tes3cn_topic.bat原|译.txt=>原|译.esp: tes3cn_enc.bat
- *.txt中字符串:
两端固定加半角双引号, 字符串中每个半角双引号都改为两个, 不可显示的字符编码用
$转义(见下面的转义定义), 连续的\r\n换行不转义 - *.ext.txt中的字符串:
如含有
\r\n换行, 则需要在字符串两端各加三个半角双引号表示多行字符串, 这要求原字符串中不能包含三个半角双引号, 不可显示的字符编码用$转义(见下面的转义定义),\r\n换行可不转义
$0A: (LF换行符)$0D: (CR换行符)$85: … (三点省略号)$92: ’ (右单引号)$93: “ (左双引号)$94: ” (右双引号)$AD: (字母连字符,GBK不支持)$E9: é (e上加第二声调)$EF: ï (i上面有两个点,GBK不支持)$FA: ú (u上加第二声调)$$: $
所有.txt文件和汉化版esp文件中的字符串都使用GBK编码和\r\n换行符, 原版esm/esp文件中的字符串使用Windows-1252编码.