找回密码
 注册
Simdroid-非首页
查看: 234|回复: 14

[其他研讨] Mathematica 汉化经验谈

[复制链接]
发表于 2009-6-23 20:08:58 | 显示全部楼层 |阅读模式 来自 北京
Mathematica受到大家的欢迎,它的优点就不赘述了,白璧微瑕的是,一直到了 6.0版本都没有个汉化版本(官方) ,不免有些遗憾. 我使用Mathematica快一年了,大一一入校就被它的魅力折服,认真钻研了几个月,也算是个中级用户了,偶尔在qq群,百度上回答点朋友们的提问,在解决大家问题的同时自己也进一步巩固了自己的技能. 但有个问题一直很难解决,就是 Mathematica 的汉化问题. 很多朋友都在问那里有Mathematica的汉化,今年6月初有了点空闲,就花了 两三天来专门研究 Mathematica的汉化问题, 也算有点突破,现在把自己的一点心得和经验和大家分享.

   以前闲着无聊,就喜欢研究Mathematica安装目录下的文件结构.我是 7.0.0 版本,不同版本或许有点差别
  7.0文件夹下有 Addons Configuration Documentation Systemfiles 文件夹 还有3个可执行文件,其中 math.exe是 控制台下的 Mathematica版本 , mathkernel.exe 是命令行版本的Mathematica, 另一个就是 notebook版本的Mathematica了.

documentation文件夹就是整个帮助文档,有700多M 所以汉化不是一个人的力量可以完成的 所以我只能 偷偷的调用 Mathematica中文试用版里的东西,牵扯到版权的问题了.不过单纯的把中文版里的同名文件夹完全复制是绝对不可以的. English 文件夹下 有个 System 文件夹, 这里是 Mathematica帮助文档的 80% 部分,并且可以拿中文版中的相同部分完整替换,这是挺省心的(而且一下子解决了 600M 的劳动)
剩下几个文件夹就没这么容易了.  其中 PacletInfor.db ,Index,SpellIndex 是绝对不能动的,估计是和 搜索功能 有关稍微改变 就会引起帮助文档无法搜索的功能
  Package 本来可以完整替代的,但有个问题是,从每个目录向下几层,都会有个English 文件夹,而中文版中却是 Chinese,所以替换后在搜索关于软件包的帮助就会出错,所以要把每个目录里的Chinese 文件夹替换成English,估计有上百个,所以得用专门的软件来完成,至此,我们就完成了 帮助文档的汉化工作.
  所以说,我并不是单纯的把中文版里的帮助文档提取出来再压缩的,而是经过了很复杂的加工,把我处理好的 英文版帮助文档压缩再发布的,所以大家直接解压替换同名文件夹就行了. 简言之,中文版与英文版里的 搜索引擎是不一样的,不能简单替代.

   这是第一部分,下面一帖其实才更有技术含量

评分

2

查看全部评分

 楼主| 发表于 2009-6-23 20:26:37 | 显示全部楼层 来自 北京
Simdroid开发平台
关于 菜单的汉化 方法探讨


接下来我们要看 SystemFiles 这么一个文件夹 , 实际上,这才是 Mathematica系统的核心文件 ,和我们汉化相关的是 FrontEnd文件夹,相信大家都对 FrontEnd 很熟悉了吧

我最早发布过 Mathematica 汉化补丁,就是更改的 FrontEnd\TextResources\Windows 这个路径下的 MenuSetup.tr 文件

其实在各种软件中,都有着很多莫名奇妙的文件扩展名,其中有很多纯粹是吓唬人 或者 隐藏一些"不可告人"  的秘密的,所以 对于任何文件,我都喜欢用记事本打开看看 ,这个 .tr 文件更不是例外

  不看不知道,一看吓一跳,就是个 纯种的 txt 文件
  这是个 节选
     
     Menu["Mathematica",
{
        Menu["&File",
        {
                Menu["&New",
                {
                        MenuItem["&Notebook (.nb)", "New", MenuKey["n", Modifiers->{"Control"}]],
                        MenuItem["&Slide Show", FrontEndExecute[{FrontEnd`NotebookPut[
                                FEPrivate`FrontEndResource["FEExpressions", "SlideshowTemplate"]], FrontEnd`NotebookOpen["SlideShow.nb"]}]],
                        MenuItem["&Demonstration",




    & 符号 估计 有点c++编程知识的都知道,这是 菜单特有的符号,就是加那个下划线用得,说到这,汉化工作已经完成 1/3  你在  &File 那改成 &SimWeFile 保存,重启 Mathematica (不是重启你的电脑!) 哈哈,看看有变化了吧!
另外,在Mathematica启动的0.1s内,你注视那个启动画面左下角 有些变化的文字,好像一上来就有个 ****.tr(****看不清) 转瞬即逝,就是在加载这个文件,估计启动Mathematica 十几次你就能看见了

  于是自然联想的把文字直接换成汉字就行了,没错,我一上来就这么做的,而且Mathematica 也太坑人了!

  我先试探的把 File换成文件,启动,没有任何问题,放心了,就一口气花了10几分钟把整个 File 目录全给汉化了,再次启动,问题出现了,不可预料的问题! 新建居然是乱码! 其他的也都一样! 这个问题足足让我苦恼了半个多小时.到底怎么解决的呢?  请大家期待期待下一贴

    第二部分完
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-23 20:49:46 | 显示全部楼层 来自 北京
关于 菜单的汉化 方法探讨


我们继续

其实用这种方式汉化对很多软件都适用,比如 UltraEditor , 但是Mathematica为什么会出现乱码呢? 乱码的出现一般只有一种情况 , Unicode 被转换成 Ansi

你用 记事本打开一个 exe文件(别太大,不要大于1M,不然会死机) 怎么样,一堆乱码,就是因为里面很多ansi控制字符,不可显示的那种,记事本自作聪明的把一些组合起来显示成Unicode,就表现为乱码了,同理,Unicode格式的汉字转换成 Ansi,也会显示为乱码,难道Mathematica不支持 Unicode?不可能吧,当时我想,毕竟Mathematica里的字符串是支持汉语的

半信半疑,我新建一个 nb文件,随便输入几个汉字保存,再用记事本打开,结果....

你自己试试吧,绝对大吃一惊

不错,文件中没有一个汉字! 很惊奇吧,我也是,那么汉字呢?

还是很难找的,如果对 nb文件的内部组织格式不熟悉的话.
你可以多存一些汉字,就会发现很多这些东西 /:****

****是个4位16进制数字,汉字的Unicode码

可以说,Mathematica系统完全不支持非英语系的任何语言,它要把各种非英语字符转换成Unicode码进行操作,所以汉化菜单时不能出现汉字,汉字地方怎么办?那就用 Unicode 码表示吧!!好,你已经会汉化了

但是我那知道Unicode码呢?还好,有专门软件,能把汉字转换成Unicode码,但是一次只能一个---可是这效率太低了!!

旋即想到一个办法,现在nb中输入菜单文字,保存,用记事本打开,一切OK再复制过去就行了.事实上,整个 FIle菜单的汉化我都是这么做得

不过,这个效率还是太低了吧!有没有更好的方法呢?

请大家期待下一帖

第三部分完
回复 不支持

使用道具 举报

发表于 2009-6-23 20:53:30 | 显示全部楼层 来自 加拿大
本帖最后由 smarten 于 2009-6-23 06:57 编辑

更好的办法是Python里面做,
  1. os.rename(i, unicode(eval("'%s'" %i.replace('@','\\x')),'mbcs'))
复制代码

Python里面有和Regularexpression一样的工具,对文本处理还是比较快的,而且支持这种编码之间的相互转换。

反正我每次用wget下载东西以后,都需要用自己的写的一个python script把中文文件转换一下得到正确的显示。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-23 21:11:50 | 显示全部楼层 来自 北京
本帖最后由 guocong89 于 2009-6-23 21:15 编辑

关于 菜单的汉化 方法探讨


再接再厉!

另一个重大发现是 : Mathematica可以打开 .tr 文件!

太让人兴奋了!

你可以备份一下自己汉化了一部分的文件(一定要备份!),用Mathematica打开(直接拖动它到Mathematica菜单条就行了),打开了吧,而且显示为汉字

哈哈,不错吧!实际上你现在就能直接汉化了,英语改成汉语,就这么简单!不过不行的事情再次降临,当你再次用记事本打开时不幸的发现,汉字出现了!怎么回事?这个原因我也不清楚,结果导致我刚才半个小时的工作又流产了!(所以要你备份一下自己的工作)

不过我还是想到了解决办法,把它另存为nb文件,就没事了!

然而不幸一个接一个!再看看,哎,"家庭的不幸总是各有不同",你发现文件的样式完全变了!前面多了一堆这些东西

(* Content-type: application/mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 7.0' *)

结尾也有很多这些东西. 好,先无情的给删掉!
然后调用记事本强大的替换功能!
第一次替换 所有的 \t 换成 空
第二次替换,所有的 \"换成"
第三次替换 所有的 \\换成\

至此,文件处理结束,强制改变扩展名为 tr 就行了

菜单的汉化就是这么多了
可谓 一波未平,一波又起,跌宕起伏的挫败,柳暗花明的转机,祝大家好运!

请大家期待下一帖

第四部分完
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-23 21:13:34 | 显示全部楼层 来自 北京
4# smarten

呵呵,这个方法太专业了
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-23 21:32:28 | 显示全部楼层 来自 北京
最后致意


实际上,我研究出来的汉化方法也就这些了,后来又把它应用到 ContextMenus.tr上,从而实现了 右键的汉化,也就是后来发布的 汉化补丁2.0版

本来打算暑假里汉化完对话框(实际上已经完成了2/3) 没想到遇上 了 Mathematica7.0汉化试用版,申请之后 第二天就给了回复,花了2个小时下载下来

安装后没法使用,因为它又过了一天才把密码发过来,我当时本来就不打算用它,就直接进它的安装目录,把汉化部分复制出来,连夜做出来了压缩包,只在两个qq群里发了,感觉范围太小,就到论坛里发帖了.

我这里还有Mathematica7.0.1 15天中文试用版安装文件,已经传到qq超大附件中了,我可以发给大家(不过qq超大附件快过期了)

如果大家有更好的汉化方法和心得,欢迎和我联系,谢谢!

email:guocong89@163.com
qq   : 970924723

大家一切为Mathematica的推广与应用努力!

顺便做点广告,我和两个朋友建了一个网站

www.chinamathematica.com

也算是中国第一个民间的Mathematica教程网站了,给大家提供教程资源的下载,主要面对初级用户,希望 Mathematica 在中国有更大的推广,没有任何商业目的,建网站的钱都是自己出的.

最初想找 smarten FreddyMusic 大牛做顾问,但当时还没建起来,就暂时没提,现在已经有了雏形,不知道二位有没有兴趣给予我们指导?

欢迎大家访问一下我们的网站!谢谢!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-23 21:33:58 | 显示全部楼层 来自 北京
教育网用户访问该网站可能会登陆不了,请使用代理或者用搜狗浏览器
回复 不支持

使用道具 举报

发表于 2009-6-23 22:06:38 | 显示全部楼层 来自 江苏无锡
写的不少,我喜欢原创。不对,我只喜欢原创。

你们的网站看了看,那个三维的奥运五环搞得不赖,动了点脑筋。

再接再厉,有好文章,转载到这里来转载一下。
回复 不支持

使用道具 举报

发表于 2009-6-23 22:12:15 | 显示全部楼层 来自 江苏无锡
另外,你的这个问题。
http://www.chinamathematica.com/ ... /200906/12-124.html

可以看 Michael Trott 有个 自行车的 Demonstration,应该是同一类问题。
http://demonstrations.wolfram.com/BicycleRides/
回复 不支持

使用道具 举报

发表于 2009-6-24 07:44:55 | 显示全部楼层 来自 美国
这个题目不错。终于发现一个方法可以调用Google的翻译功能。 如果这样做的话,其实mathematica的汉化和别的化还是很简单的,直接调用然后让别人去proof reading一下就可以了。
回复 不支持

使用道具 举报

发表于 2009-6-29 23:39:44 | 显示全部楼层 来自 北京
高手!用楼主的方法实现了帮助文件汉化,方便不少。以后想看中文看中文,想看英文看英文。
回复 不支持

使用道具 举报

发表于 2009-7-11 21:33:54 | 显示全部楼层 来自 江苏无锡
Mathematica 中文版是有点问题。没法调用 Documentation Center.
回复 不支持

使用道具 举报

发表于 2009-7-11 21:38:17 | 显示全部楼层 来自 加拿大
太跟风了吧,已经开始用中文版了?
回复 不支持

使用道具 举报

发表于 2009-7-11 22:08:55 | 显示全部楼层 来自 江苏无锡
you know I write a book, I use Chinese version to get the short cut of functions defination.

But it seems not good quality, I use English version for more reliable reason.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 19:38 , Processed in 0.043840 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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