galgame汉化吧 关注:210,584贴子:5,805
  • 3回复贴,共1

ONS 汉化文本 移植步骤

只看楼主收藏回复

(ONS汉化脚本转KRKR汉化脚本步骤)
1.用nscript.dat-tool(github里找)将nscript.dat(汉化文本)转化为txt格式。
2.通过正则表达式[a-z],搜索里面的英文脚本,并用正则表达式将相应的英文进行删除。
3.确保除了文本和选项脚本(SEL)以外的全部英文行(注意是一整行,不是仅仅删除英文)全部处理后,写代码(附录附上了代码)把文本转化为json形式。
如,我用的是GalTransl_DumpInjector(json提取器),那就写代码,让文本
”蔚蓝的天空让人觉得异常的清澈。不同于城市的天空,纯粹的蓝。“
变成这样的形式。
{
"name": "心の声",
"message":"蔚蓝的天空让人觉得异常的清澈。不同于城市的天空,纯粹的蓝。"
}
4.转化完之后,用GalTransl_DumpInjector提取日文json ,并复制一份用来替换成汉化组文本。
5.将汉化组的一整个大json文件切割成每个章节各一份(后续要不断剪切走文本,这样的大小更方便),
备份好剪切后的json后,不断剪切粘贴到日文json里就行(学会用快捷键可以让剪切粘贴事半功倍,特别是ctrl+shift),
但游戏肯定有选项,提取json时会在这个地方有所不同,所以在共通线要先搜索SEL,找到对应部分,修改译文json直到格式和日文json选项格式一致。
但除了这些地方,也要时刻注意行数,确保每个json文件的开头和结尾的文本相应行数对应的上才行。
6.json处理好后,用GalTransl_DumpInjector注入回去,然后就能得到汉化后的ks脚本(注意报错)
7.寻找汉化的TFT字体。(字体大小没问题则不修改)
8.在相应脚本位置修改文本显示区大小。(字体换行没问题则不修改)
9.将ks脚本,TFT字体,字体显示区的脚本打包为patch.xp3,移植结束。
PS:事实证明,这种方法有极强的优越性,只需要不断剪切粘贴就可以,不需要一句句复制粘贴,只需要一个文件一个文件地将文本剪切粘贴即可。
PS:至于为什么是剪切不是复制,是因为你需要对行数,如果复制粘贴你就不好直接在对应行数进行替换,这也是我方法的优越性。
附录:转json代码(python代码,需要安装python,然后创建文本文件将一下代码放入,改后缀为py,把nscript.txt文件放在旁边,双击py代码即可转换):
import json
# 读取文件内容
def read_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
# 写入文件内容
def write_file(file_path, content):
with open(file_path, 'w', encoding='utf-8') as file:
file.write(content)
# 处理文本内容
def process_text(text):
lines = text.strip().split('\n')
result = []
current_person = None
for line in lines:
line = line.strip()
if line.startswith('【') and line.endswith('】'):
current_person = line[1:-1]
continue
if line:
if current_person:
result.append({
"name": current_person,
"message": line
})
current_person = None
else:
result.append({
"name": "心の声",
"message": line
})
return result
# 将结果转换为字符串
def format_result(result):
formatted_result = []
for item in result:
formatted_result.append(f' {{\n "name": "{item["name"]}", \n "message":"{item["message"]}"\n }},\n')
return ''.join(formatted_result)
# 主函数
def main():
input_file_path = 'nscript.txt' # 假设输入文件名为 nscript.txt
output_file_path = 'output.txt' # 假设输出文件名为 output.txt
# 读取文件内容
text = read_file(input_file_path)
# 处理文本内容
result = process_text(text)
# 将结果转换为字符串
result_str = format_result(result)
# 写入文件内容
write_file(output_file_path, result_str)
if __name__ == "__main__":
main()


IP属地:浙江1楼2024-07-31 16:50回复
    打错了,不是ctrl+shift,就是单纯的shift


    IP属地:浙江2楼2024-07-31 16:55
    回复
      想问问大佬imagetuner怎么用啊,想把高清版的cg拉回4:3,16:9太难受了,是一张一张拉吗,能不能批量操作?


      IP属地:内蒙古来自Android客户端3楼2024-09-10 21:11
      收起回复