现在的位置: 首页 > 综合 > 正文

自己汉化qq2013国际版的C#代码。代码种没有错误检测,只是为了留个纪念(太烂的代码,bug很多。。。)。

2013年12月04日 ⁄ 综合 ⁄ 共 1301字 ⁄ 字号 评论关闭
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Collections;

namespace TraslateXml
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 2)
                Console.WriteLine("请输入正确的格式:\nTranslateXml <FullPath\\>en.xml <FullPath\\>zh.xml.");
            else
            {
                Program ts = new Program();
                ts.Traslate(args[0], args[1]);
            }
        }
        private void Traslate(string en, string zh)
        {
            SortedList zhlist = new SortedList();
            XmlDocument zhxml = new XmlDocument();
            zhxml.Load(zh);
            XmlNodeList zhNodeList = zhxml.SelectSingleNode("StringBundle").ChildNodes;
            foreach (XmlNode xn in zhNodeList)
            {
                if (xn.Attributes != null && xn.Attributes["id"] != null && xn.Attributes["id"].Value != null)
                    zhlist.Add(xn.Attributes["id"].Value, xn.InnerText);
            }
            XmlDocument enxml = new XmlDocument();
            enxml.Load(en);
            XmlNodeList enNodeList = enxml.SelectSingleNode("StringBundle").ChildNodes;
            foreach (XmlNode xn in enNodeList)
            {
                if (xn.Attributes != null && xn.Attributes["id"] != null && xn.Attributes["id"].Value != null)
                {
                    if (zhlist.GetKeyList().Contains(xn.Attributes["id"].Value.ToString()))
                        xn.InnerText = zhlist[xn.Attributes["id"].Value.ToString()].ToString();
                }
            }
            enxml.Save(en);
        }
    }
}

原理很简单,找到qq新版本中语言包文件就是那个1033和2052之类的文件夹,里面xml文件就是对应的界面中文字文件,利用代码将对应2052(中文)文件中的节中的数值复制到1033(英文)中同名文件中的相同节点数值。

没有对错误进行检测,只是作为笔记使用。这样可以使用QQ汉化的国际版.

其中2052文件夹去最新的QQ2013中找。。。。。。。。。。。。。。。。。。

具体方法:见留言。。。。。。

代码太烂,勿转载。。。。

 

抱歉!评论已关闭.