从D-Fend Reloaded新版发布说起(下)

近来没什么时间折腾,所以继续闷骚。上回书说到D-Fend Reloaded的作者怎么来安排新版本的翻译的。

开始我在D-Fend Reloaded的程序目录下找到语言翻译文件,动手翻译,我用的是vim编辑器,vim有个很好的功能就是分割窗口显示文件,然后绑定两个窗口同步滚动。再编写一个快捷键,作用跳到下载个等号后,和并清空后面的内容,这样翻译完一条信息按一下快捷键就能开始翻译下一条了,而旁边的英文原文窗口用作对比。翻译起来真是舒服方便。

d-fend_reloaded_thoughts_two

后来又新版本,我发现作者居然添加了一个语言包编辑器。看来作者相当用心啊,不过我还是觉得vim好用,辜负了作者一番好意了哈,还是用vim翻译的。

d-fend_reloaded_thoughts_two_1

D-Fend Reloaded是用delphi编写,目前还是作者一个人,所以翻译组织不像Ubuntu那样,通过网上协作平台如Launchpad来翻译。

  1. 作者把新版本开发完成后,这beta版,这个beta版已经冻结了字符串,他发邮件给翻译者。
  2. 然后我就收到beta版的下载链接,大约有一个星期的时间翻译,每次约二三百条语句,抽点时间1个小时左右就搞定,顺便做做测试。作者依然在会在这段时间修复一下bug。
  3. 当收到全部语言文件后,已知bug也解决后,作者就能新版本了。

这样大家就能用上多语言版的D-Fend Reloaded了。这里有个超长论坛帖子是bug和建议讨论页面,帖子质量可是很高的,很多帖子都有称呼,落款,显的很正式。

作者在发给翻译者的语言包也预先做了工作。

  • 里面有一个简单的README,说一下这次翻译的注意事项。
  • 还有文本文件,里面记录了哪些条目是新增的,哪些是已修改的,方便参考。
  • 翻译文件都是预先合并好,新增的条目都预先插入到语言文件相应的位置,也就是我只需要打中文语言文件,直接修改新添加进去的英文就行了。

要注意的是,语言文件都是ASCII字符编码,也就是简体中文用GBK编码,繁体中文用BIG-5编码。不知到作者有什么好方法来把新增条目插入各种不同编码的文件中。

  1. 其实我先翻译好简体中文,按照繁体中文语系的叫法,转换一下,如把内存替换记忆体,我自己建立了一个不完整的术语转换表,建这个表时特意跑去电脑玩物那里看文章,留意文章里的术语叫法。这个表其实就是vim脚本,运行一下就转换好了。注:如果你是繁体中文用户,觉得个别术语转换不对可以通知一下我。
  2. 接着把所有文字转换成繁体中文,开始用的是Google的翻译,后来用madedit,很方便快捷。
  3. 最后启动虚拟机,把里面的XP语言设置为台湾,测试一下繁体中文显示,没有问题就打包给作者了。

d-fend_reloaded_thoughts_two_2

其间还发生一件令我很汗颜的事,我发现安装程序出现中文乱码了,我还以为作者简繁中文的文件搞错了,或者转换过编码,自以为是发信给他普及一下中文字符编码的知识。作者解决这个问题时,来个二进制文件比较。结果是我犯了个大错误,在转换为繁体中文是漏做了一件事——把语言指示符给改过来,比如繁体中文包的指示字符串要包含“${LANG_TRADCHINESE}”,而我偷懒把简体中文的文件复制一份并转换,所以里面的指示字符串依然是“${LANG_SIMPCHINESE}”,使用时就出问题了。还有是简体中文NSISLanguageID是2052,繁体中文是1028,所以仅仅是转繁体是不够了,还要把这些编码关联的参数给改正好。

通过翻译语言文本就发现D-Fend Reloaded越来越强大,其实我漏说了一个重要的功能,D-Fend Reloaded不仅是DOSBox的前端,它也是另一个怀旧用的模拟器ScummVM的前端,现在也可以用来管理Windows的游戏。

This entry was posted in 流水帐 and tagged . Bookmark the permalink.

One Response to 从D-Fend Reloaded新版发布说起(下)

  1. 想入非非 says:

    非常不错的经验,感谢分享

    回复回复

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">