zoukankan      html  css  js  c++  java
  • mathematica汉化经验

    很早期的一个帖子,复制过来备份

    Mathematica 汉化经验谈

    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,估计有上百个,所以得用专门的软件来完成,至此,我们就完成了 帮助文档的汉化工作.
      所以说,我并不是单纯的把中文版里的帮助文档提取出来再压缩的,而是经过了很复杂的加工,把我处理好的 英文版帮助文档压缩再发布的,所以大家直接解压替换同名文件夹就行了. 简言之,中文版与英文版里的 搜索引擎是不一样的,不能简单替代.

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

    关于 菜单的汉化 方法探讨


    接下来我们要看 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 目录全给汉化了,再次启动,问题出现了,不可预料的问题! 新建居然是乱码! 其他的也都一样! 这个问题足足让我苦恼了半个多小时.到底怎么解决的呢?  请大家期待期待下一贴

        第二部分完

    关于 菜单的汉化 方法探讨


    我们继续

    其实用这种方式汉化对很多软件都适用,比如 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菜单的汉化我都是这么做得

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

    请大家期待下一帖

    第三部分完

    关于 菜单的汉化 方法探讨


    再接再厉!

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

    太让人兴奋了!

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

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

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

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

    (* Content-type: application/mathematica *)

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

    (* CreatedBy='Mathematica 7.0' *)

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

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

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

    请大家期待下一帖

    第四部分完

    最后致意


    实际上,我研究出来的汉化方法也就这些了,后来又把它应用到 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 大牛做顾问,但当时还没建起来,就暂时没提,现在已经有了雏形,不知道二位有没有兴趣给予我们指导?

    欢迎大家访问一下我们的网站!谢谢!
  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/dabaopku/p/1930863.html
Copyright © 2011-2022 走看看