骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
查看: 68583|回复: 82

[分享] 汉化辅助工具(2009/9/13 2:32 更新)

[复制链接]
鲜花(1) 鸡蛋(0)
发表于 2008-11-10 03:33:48 | 显示全部楼层 |阅读模式
本帖最后由 Rivendare 于 2009-9-13 18:14 编辑

本来打算汉化Timeless Kingdoms for 1.010,由于不喜欢在editplus里进行大量文本工作,所以写了这个东西
主窗体(也就这一个窗体……):
主窗体


提取语言文件


创建词典


中间部分是打开后的原文-译文对照表
点击其中的一条后,会把译文部分的文本信息放在下面的文本框中,以供修改
当修改完成后,可以直接按下或者上箭头,中间部分会自动选择当前条目下或者上一条目,这样翻译的时候就不需要用鼠标来回点了

软件对每一个翻译过的词条会保存下来,当下一次选中一个已经被翻译过的条目时,会自动把记录的译文放在下面文本框里。比如截图里面的两个“练习剑”,只需要翻译第一个,然后按下箭头第二个就会自己添进去了,因为这两条的英文都是“Practice Sward”

从Mod中提取语言文件:
这个只是为了针对某些Mod没有给默认的语言包(直接存在那些txt文件里面)而提供的。
选择“选项和工具”=>“从Mod中提取语言文件”,然后选择Mod的根目录(比如Modules/Native),和输出后保存的位置,然后点“开始提取”就可以了。

以原有的翻译为基础创建字典:
根据以前的汉化包和源语言文件,创建数据字典。Mod从老版本升级到新版本时,一般语言文件变化都不大,这样就可以利用老版本已经有的汉化成果,稍稍减少新版本汉化时的劳动。
选择“选项和工具”=>“根据已有的翻译生成字典”,然后分别选择已有的翻译和其对应的原文即可。

空格处理:
“选项和工具”中的“空格处理”可以为当前正在编辑的文件中的所有非ASCII字符后面添加/删除一个空格。
而在翻译区里面右键菜单里面,则可以为当前正在翻译的句子添加/删除空格。

下面是一个例子
dlga_lord_suggest_action:lord_suggest_become_marshall|我 任 命 你 为 {playername}王 国 的 元 帅。
dlga_lord_suggest_become_marshall:lord_pretalk|噢!是 真 的 吗?我 真 是 太 荣 幸 了!
dlga_lord_suggest_action:lord_suggest_attack_enemy_castle|去 攻 打 敌 人 的 城 镇 或 城 堡。
dlga_lord_suggest_action:lord_suggest_go_to_friendly_town|回 到 友 军 的 城 镇。
dlga_lord_suggest_action:lord_suggest_attack_enemy_party|进 攻 敌 军 的 战 队。

不晓得{}里面的叫什么,不过程序处理出来的格式是对的。

程序编译环境:
Windows 7 6.1.7600 x64,Visual Studio 2008 TS 英文,.net Framework 3.5

>>>>>>>>>>>>>>下载<<<<<<<<<<<
(点击展开 / 收起)


2009/9/13
源代码:


可执行文件:



必需的程序执行环境:  .net Framework 3.5 下载: http://download.microsoft.com/......

>>>>>>>>>>>>>更新日志:<<<<<<<<<<<<<
(点击展开 / 收起)


2009/9/13
    暂时关闭了相似度比对过程
    修复了打开多行条目时程序出错的问题


如果在使用中还有什么问题或者需求的话,请在这里跟帖~
由于最近很忙,所以只好把那个提供类似翻译的功能取消掉了…… T_T

非常感谢老杨一直以来给我的支持

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册(Register!)

x

评分

参与人数 2荣誉 +7 第纳尔 +90 互助 +15 贡献 +20 收起 理由
alixyang + 7 + 90 + 15 感谢持续更新!
muyiboy + 20

查看全部评分

鲜花鸡蛋

貫一  在2017-8-18 00:37  送朵鲜花  并说:做东西不容易,前辈辛苦了!在此谢过
鲜花(9) 鸡蛋(0)
发表于 2008-11-10 13:40:59 | 显示全部楼层
还没仔细看源码   对于中英文标点的判断和处理是怎样的?

中文站正需要相关的专业或业余程序员来完成汉化及资料整理相关工作  
由程序而转modder也是相当的容易....
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-10 14:03:39 | 显示全部楼层
中文标点似乎有些问题,因为现在在用的那个正则似乎只匹配中文字符
so,可以用这个正则表达式来替换掉程序里面EraseSpace和AddSpace方法里的表达式:

[^a-zA-Z0-9|,|\.|\\|/|;|:|'|"|\[|\]|\{|\}|-|=|_|+|`|~|!|@|$|%|^|&|*|\(|\)|\s|#]
鲜花(9) 鸡蛋(0)
发表于 2008-11-10 17:45:51 | 显示全部楼层
;P    这些是英文标点。 所有ASCII码处理应该相同 ---- 不用加空格

中文标点其实就是字库里用到的  你加我们的QQ群吧
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-10 18:30:43 | 显示全部楼层

回复 #4 alixyang 的帖子

就是把这些排除除外,剩下的都给加个空格……
貌似我把键盘上能看到的都打上去了,因为懒得找对应的编码范围……
:L

群在那里哦,木有看到……

虾米时候Timeless Kingdom才有汉化捏…… >_<
鲜花(9) 鸡蛋(0)
发表于 2008-11-11 11:16:28 | 显示全部楼层
167,183,8211,8212,8216,8217,8220,8221,8230,8242,12289-12291,12296-12305,65281-65283,65287-65289,65292-65295,65306,65307,65311,65339-65344,65374,

! " # ' ( ) , - . / : ; ? [ \ ] ^ _ ` ~ §  · – — ‘ ’ “ ” … ′ ″ 、 。 〃 〈 〉 《 》 「 」 『 』 【 】 〖〗

这是所有的常用汉字标点,简繁体通用    编码为UNICODE

至于群号  你都没看我的介绍吧 :)
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-11 11:49:29 | 显示全部楼层
这些符号能被正常处理了~
所有的英文字母,半角数字、标点和符号都不会被加上空格
鲜花(9) 鸡蛋(0)
发表于 2008-11-14 22:41:59 | 显示全部楼层
更新了哈  想问问汉化文本是你直接从txt提取的  还是从骑砍主程序里生成的   

另外一个实用的功能:  对比新版MOD和native原版 以及同一MOD的新旧版本 自动复制已翻译部分
  这个同样可以节省大量重复劳动   骑砍主程序本身做的不是很好
鲜花(2231) 鸡蛋(8)
发表于 2008-11-15 00:15:26 | 显示全部楼层
原帖由 alixyang 于 2008-11-14 22:41 发表
更新了哈  想问问汉化文本是你直接从txt提取的  还是从骑砍主程序里生成的   

另外一个实用的功能:  对比新版MOD和native原版 以及同一MOD的新旧版本 自动复制已翻译部分
  这个同样可以节省大量重复劳动  ...


我一直都是用游戏自带的抽取文本功能,查漏补缺的. 用旧汉化包,然后进游戏再提取文本,游戏程序就能把旧版汉化在新版里没有用的都去掉,而且会把内容重复的(比如菜单里重复出现的go back)也去掉,只留一个,新增的地方后面自动加{***}. 所以抽取汉化文本一般只需要几分钟.
唯一有问题的是:当分割符左边的内容没有变,而右边的内容变了的时候. 游戏程序是根据分割符左边的内容来判断是否翻译过.这样就导致这个时候,相关条目的汉化还是维持旧版的或者native的, 而且不容易察觉. 比如有的MOD关于兵种的名字就偷懒,分割符左边的还是原版的维吉亚XXX兵,芮尔典XXX兵,罗多克XXX兵…… 只是把显示名给改了. 这样的MOD在汉化的时候,要格外小心,只是简单的抽取文本来查漏,你并不会发现有兵种需要翻译的. 而实际兵种名字可能要全盘重翻,这个又回到老路了. 就是从txt文本里手工把这些东西抽取出来.

[ 本帖最后由 rubik 于 2008-11-15 00:26 编辑 ]
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-17 10:55:56 | 显示全部楼层
注释中提到一个错误,不过已经修复了,但是这条注释忘记删掉了
so,看代码的时候看到的话请无视掉它~

[ 本帖最后由 Rivendare 于 2008-11-17 21:14 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册(Register!)

x
鲜花(9) 鸡蛋(0)
发表于 2008-11-17 18:10:19 | 显示全部楼层
Studio 2008 好大   我都没装过....  

谢谢你的努力,汉化组可以省下大量时间来做真正的工作了。

圆通.......   我替你证明你说得对。  不过你把字改小点免得管理员以为是广告把帖子删了那才叫个可惜......

[ 本帖最后由 alixyang 于 2008-11-17 18:12 编辑 ]
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-17 18:22:24 | 显示全部楼层

回复 #11 alixyang 的帖子

删掉偶再发,嘿嘿~~

上午发布的帖子,下午用这个东西按照你在那个TK帖子里面的回复做了一下测验,发现了几个小不过很严重的逻辑问题,然后更新了一下
现在的应该不会有大问题了,小问题可能还会有,因为基础的结构不好,不过不会影响大的方面了,程序目前还在重构和完善中,谢谢支持哈~~
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-17 22:48:22 | 显示全部楼层

回复 #11 alixyang 的帖子

貌似#Develop是可以打开VS的项目文件的,不过我不喜欢#Develop,因为它装上之后自动强制关联的一些文件类型,很不爽,尽管这是个相当优秀的开源软件

准备把汉化也作为一个项目来对待,而不是像现在那样看成独立的文件来对待,不过不知道什么时候才能做成那样,真主保佑我科目2一次通过,阿弥陀佛(画个十字……)
鲜花(9) 鸡蛋(0)
发表于 2008-11-21 12:46:33 | 显示全部楼层
这么重要的更新,在底楼说明一下嘛   差点错过了...   已加精华,呼唤汉化组的过来测试....
鲜花(12) 鸡蛋(0)
发表于 2008-11-21 19:07:32 | 显示全部楼层
弱弱地问下,这是干嘛用的
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-11-21 19:12:14 | 显示全部楼层

回复 #15 B52B51 的帖子

比如(比如!!不是真的!!!- -b)Bow出新的版本了,制作汉化文件的时候可以用这个东西来提取语言文件(不用启动游戏了),然后根据以前的BOW的中文语言文件,批量替换旧有的词条,酱紫就可以只关注新的版本里添加的就有的版本里没有的心的词条,可以省一些时间
鲜花(1) 鸡蛋(0)
发表于 2008-11-27 18:45:14 | 显示全部楼层
我不懂,不过这个帖子我会收藏下来好好看~
鲜花(1) 鸡蛋(0)
发表于 2008-12-8 21:58:53 | 显示全部楼层
兄弟,你的压缩包有问题啊?!

解压缩后,打不开程序!显示错误!赶紧修复一下。:handshake

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册(Register!)

x
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2008-12-10 21:49:09 | 显示全部楼层
我俩错误提示怎么都不一样……我这里在某些时候提示有异常(数组越界),不过点继续就好了(只有第一次会这样)
你的没见过,是不是没装.net framework 3.5?
鲜花(0) 鸡蛋(0)
发表于 2009-4-12 17:46:16 | 显示全部楼层
:L会出现一些对错号的翻译只能自己改了:L没出正式汉化包的话自己“汉化”一下也不错的
鲜花(0) 鸡蛋(0)
发表于 2009-4-15 21:34:35 | 显示全部楼层
竟然一直没发现,这么好的东西!!!
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2009-5-2 20:30:06 | 显示全部楼层
20# panqueer

说说错在什么地方呗,这样我也好继续修正
另外,有的时候貌似是因为游戏的原因,因为这个东西实际上就是批量的复制、查找和粘贴,那个映射关系是不会出现把该给a的给b的,除非原本的映射关系就是错的……
鲜花(9) 鸡蛋(0)
发表于 2009-5-6 14:59:51 | 显示全部楼层
其实我想要改的问题  就是9楼R大所说的  不能只以分隔符左边的文字来查找对比  而要全文查找对比....

0952CN                 0952EN              0953EN
    A                           B                       C
    a1|a2                    b1|b2                c1|c2

read c1|c2 line
find c2 in B
if  c2 == b2
    find b1  in  A
    if  b1 ==a1
        c2 = a2
        break
next line...
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2009-5-7 11:51:11 | 显示全部楼层
提取字典的时候,只能用分隔符左面的那个ID做匹配,不然没有1 1对应关系的阿?字典生成后,里面的对应关系就跟那个ID无关了,一句英文对应一句中文的
不过多字典倒是很重要的……

哦,我看懂r大的意思了。在自动匹配替换生成汉化文件的时候,那个应该是没有问题的吧,因为我记得我的程序是匹配的是分隔符右面的英文原文,而不是分隔符前面的ID。

ls的伪码米看懂 @_@
鲜花(9) 鸡蛋(0)
发表于 2009-7-1 14:52:07 | 显示全部楼层
本帖最后由 alixyang 于 2009-7-9 14:28 编辑

现在有两个点需要改进   一个就是我们讨论过的相似度判断  程序给出原文和借鉴的相异之处,并提供修改栏

另一个就是由字典自动映射,以及上面的对比修改后,能自动标注/提取未翻译部分  方便将手工汉化部分拿出来做任务。
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2009-7-1 19:20:49 | 显示全部楼层
等我先把机器搞定吧,刚考完试本本就坏了……
鲜花(9) 鸡蛋(0)
发表于 2009-7-26 15:59:21 | 显示全部楼层
唉  更新了也不说一声  现在才看到~~   置顶帖确实很难注意到变化......
头像被屏蔽
鲜花(5) 鸡蛋(0)
发表于 2009-7-26 18:45:11 | 显示全部楼层
是用的edit distance来做的?具体是按字符比较还是按词比较呢?
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2009-7-27 20:33:39 | 显示全部楼层
是按字符比较的,按词貌似也蛮好的……不过考虑到有时候词汇被缩写和变格,所以最后还是直接按照那个算法描述做成按字比较了…… --b
鲜花(9) 鸡蛋(0)
发表于 2009-8-18 00:36:35 | 显示全部楼层
本帖最后由 alixyang 于 2009-8-18 01:00 编辑

我一直没发现问题,只觉得有点慢。直到今天接到一位骑友的文件才发现,辅助工具对非标准的回车换行识别有问题,导致数组越界, 截图如下......



另外空行也会导致出错......

还有一个小问题: 自带的原版字典并非最新的09年2月版 我这里上传一个新的好了....

解决的办法很简单:
一是要升级此程序,另一就是在编辑CSV文件时,存成dos格式(标准回车换行(CR/LF))。再把空行删掉就好。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册(Register!)

x
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站 ( 鄂ICP备07001403号 )

GMT+8, 2018-7-21 06:05 , Processed in 0.272626 second(s), 93 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表