Msg.txt乱码转换工具(带原文、韩文、机翻)并可直接将修改的文本存入,附源码解析



  • 看到过妖哥发表的translate-tool和一个朋友发的msg编辑器,t-tool的谷歌翻译挂掉了,跟谷歌收费翻译有关,另一个引擎翻译的又不尽人意,msg工具我也没下载到程序,估计和论坛挂了有关。
    就自己写了个C#.NET的程序,方便大家对msg进行汉化。
    有一些bug还需要时间,发表此贴主要为了抛砖引玉,让大家都来参与试用和改造程序。
    (只做了基本的优化,有很多东西还值得商榷)。
    需要.NET环境,3.5版本,大家注意framework2、3.5、4都是独立的,不代表装新版本之后就包括旧版本,有的framework安装包是整合的,用不了程序的,请研究你的framework。

    代码://首先说编码转换,棒子语用的编码是ks_c_5601-1987,我们文件一般用的是GBK或者UTF-8,至少我的msg用的是GBK。
    string str = Listmsg.SelectedItem.ToString();
    msg m = new msg(str);
    msgno.Text = m.numberout();
    TXTmsgselected.Text = m.message();
    msgcate.Text = m.otherout();
    Encoding GBK = Encoding.GetEncoding("GBK");//定义一个GBK编码的Encoding对象
    Encoding han = Encoding.GetEncoding("ks_c_5601-1987");//定义棒子编码对象
    byte[] gb = GBK.GetBytes(m.message());//用GBK编码读入信息
    TXTbang.Text = han.GetString(gb);//转换到棒子编码
    [float=right]复制内容到剪贴板[/float]代码:private class msg
    {
    string[] r;
    public msg(string s)
    {
    r=s.Split(new char[] {'\t'});
    }

    public string numberout()
    {
    if (r.Length >= 1)
    return r[0];
    return "可能存在错误";
    }

    public string message()
    {
    if (r.Length >= 2)
    return r[1];
    return "可能存在错误";
    }

    public string otherout()
    {
    if (r.Length >= 3)
    return r[2];
    return "可能存在错误";
    }
    }
    //这个用来分离编号、信息和类码,由于有的msg制作不规范,用空格代替tab(/t)所以有分割之后数组不存在的风险,加了个判断就好多了,还能让错误更醒目。
    [float=right]复制内容到剪贴板[/float]代码://写入文件的代码,我没做优化,不知道速度怎么样,抱歉了。
    FileStream wfs = new FileStream(FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
    StreamReader rs = new StreamReader(wfs, Encoding.GetEncoding("GBK"));
    string str = rs.ReadToEnd();
    string[] filewrite = str.Replace("\r\n", "\n").Split(new char[] { '\r','\n' });
    filewrite[start + Listmsg.SelectedIndex] = msgno.Text + "\t" + TXTmsgselected.Text + "\t" + msgcate.Text;
    rs.Close();
    StreamWriter sw = new StreamWriter(FileName, false, Encoding.GetEncoding("GBK"));
    for (int w = 0; w < filewrite.Length; w++)
    {
    sw.Write(filewrite[w]+'\r'+'\n');
    }
    sw.Close();
    TXTmsgselected.Text = "";//简单的让输入框文字消失就代表已经存储完成了

    20130302_fbf4b6778b71cd2bdac4i6p1AhIojyVN.jpg


  • 管理员

    感谢提供工具,如果有汉化较难的部分,可以联系我,我可以协助


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0


  • 谢谢楼上和大家的支持。更新一版,修复了不大常见的条目丢失错误。



  • 回复 xin344 的帖子

    这个可以保存

    原来是韩国版本



  • 這個好!!!!!:D



  • 感谢分享,有这些汉化起来方便多了。



  • 好东西,谢谢分享



  • 谢谢分享~~~



  • 支持~~~~~~~~~~~



  • 感謝分享,剛好需要用到~~~~



  • 感谢分享...



  • 感谢分享
    大家能共享一下汉化的进度就好了



  • 这个也挺好 收了



  • 實際用過之後還不錯~~~



  • 好东西!!



  • 这个真心好用,谢谢



  • 感謝你分享~



  • 好工具阿,该死的10个字节限制。



  • 应该下哪一个呢?



  • 哦~以前下载的不能用,这个居然能可以。
    太好了,顶一个,
    不过太认真的童鞋可别指望这玩意能翻译正确。。。;P



  • 顶顶顶顶顶顶顶顶顶顶顶顶顶


登录后回复