CM3D2 汉化杂记

老物难找资源,于是尝试自己汉化,皆源于有一个好的汉化插件。

资源:LMMT
工具:CM3D2.SubtitleDumper.exe,有道翻译(可以翻译文档),Libreoffice(文档、表格)
cmd(资源管理器的结果可以拖进去,例如搜索结果,很方便批整理)
type *.txt >> A.TXT
xcopy /E H:\GAME\script\ .\daily\

原理,汉化插件可以读取对应目录下的所有txt,生成句典,目录无所谓,里面的目录是插件自动生成的,只在于生成,不影响读取

但文字量很大,之前只把主包内的内容机翻了一部分。但一些对话主包里也没有,今天打算按照对话内容分类,刚把daily整理到了一个目录里。

站里有大佬写了个命令行百度翻译的,用的python。

import os
import glob

directory='H:\\0\\as\script'
files = glob.glob(directory + "/*")
while len(files)!=0:
    t = files[-1]
    print(t)
    if os.path.isfile(t):
        if os.path.splitext(t)[-1]=='.ks':
            try:
                if open(t, 'r',encoding='Shift-JIS').read().find('仕事中のメイドとコミュニケーションを行いますか') != -1:
                    input(t)
            except Exception as e:
                input(e)
        files.pop(-1)
    else:
        files.pop(-1)
        files.extend(glob.glob(t + "/*"))

我很好奇这句话到底在哪里,把这个从很多文件中搜索字符串的代码攒出来了,之前英文翻译的文件合并后会有乱码,这段字符在main.14-15.txt里面。

encode哪里能获取什么什么编码,用Notepad++,以前火狐也行现在没这个选项了。

;*********************************************
*top
;*********************************************

; 昼コミュできるメイドがいるかどうか
@if exp="IsCommunicationChara() == true"
	@call file="place" label="*書斎_傍観"
	@CameraControl false
	@MessageWindow on
	@fade in black time=1000 sync

@talk
仕事中のメイドとコミュニケーションを行いますか?
@hitret

	;// 選択肢でヒロインとコミュする
	@ChoicesSet label="*コミュ_オン" text="コミュニケーションを行う"
	@ChoicesSet label="*コミュ_オフ" text="コミュニケーションを行わない"


	@ChoicesShow

@else

	@jump label=*昼リザルト2

@endif

有些文件莫名无法解码,于是跳过,虽然用Notepad++显示没问题,诶呀,不管了,看看CM3D2.SubtitleDumper.exe是不是有遗漏。

未经处理的异常:  System.ArgumentException: 实例方法的委托不能具有空“this”。
   在 System.MulticastDelegate.ThrowNullThisInDelegateToInstance()
   在 CM3D2.SubtitleDumper.Program.Main(String[] args)
import os
import glob

directory='H:\\0\新建文件夹'
files = glob.glob(directory + "/*")
str=""
while len(files)!=0:
    t = files[-1]
    print(t)
    if os.path.isfile(t):
        str=str+'\n'+open(t,'r',encoding='UTF').read()
        files.pop(-1)
    else:
        files.pop(-1)
        files.extend(glob.glob(t + "/*"))
open('H:\\0\新建文件夹\\666.txt','w',encoding='UTF').write(str)

因为提取插件有问题,所以还是从现成的英语文本中获取源文件。文本合并完成了。

发现Libreoffice的快捷选择,通常快捷跳到上下限是Ctrl+方向键,同时按Shift可以快捷选择,这样就避免遇到空格不能快速填充了,毕竟去重顺序会乱,所以要加一个序号。

import re

file=open('H:\\0\\as\daily\daily.txt','r',encoding='UTF').read()
filesnotable=file.replace('\t','')
filenew=open('H:\\0\\as\daily\daily00.txt','w',encoding='UTF')
for line in filesnotable.splitlines():
    try:
        if re.match('[^*@; ]',line[0]):filenew.writelines(line+'\n')
    except Exception as e:
        print(e)

因为太乱太多,所以重新整理了下,参照大佬以前做的整理,仅分为系统、日常、卡拉OK,这次从把AssetStudioGUI提取的文件中的daily目录复制出来,合并,字符串处理,表格整理,字符串处理的结果和手动处理的结果一样,用表格的字符排序,向上对比,保留最前边的,去除后面重复的,再排序回复,之后是对比合并结果,之后有遗漏的再补吧,关键的还是超能力,把英文翻译的字典花钱一次性机翻了就行了。不过哪个文档也挺乱的。
现在去重后,39418句日常。

你可能感兴趣的:(CM3D2)