可可肉的奋斗(第二天)2012-12-25----------语言包实现实例及LINQ to XML

这个系列的贴子属于日记类型的帖子,现在看可能会比较水,算是我个人的奋斗记录吧,希望将来可以对后来(学习)人有所帮助

个人技术背景:做JAVA开发五年,懂C#基本语法(停留在2.0)工作经验3.5年

 

----------------------------------------------------

2012-12-25

今天是学习WinRT的第二天,早上从朋友那里(鹿泉)爬起来往家赶,之前一直在想做一个什么应用呢?为了简便,找个带源码的移植一下吧!简单的体验技术,同时又有了一个App(盈利不是重点,重点是增加自信)回家了去网上找了一个魔塔的原代,简单的试玩了一下,感觉不错(可惜语言不通= =!)

不过还好吧,我本着“虽然这个语言我不懂,而且还不知道是什么语言,写不出来看总能看懂吧?”的精神,硬着头皮决定我的第一个Surface应用就是它了!

经过简单的看文件结构,我发现他不能直接copy到项目里,决定明天再详细的去看源代码,今天先了解了解周边生态环境。进入微软的应用商店,发现里面游戏类的应用现在并不多。现在是377款游戏应用,其中免费的353个,收费的24个,市场空间还是蛮大的,打算开发个至少可以跨语言的应用。随后进行关于语言包的实现。

 

吼吼,晚上8点多实现了语言包功能,在实现的过程中实践学习了LinQ的功能,感觉收获不小!(LinQ to XML )

 

顺便说下,网上很多帖子把类所在的命名空间都写错了,导致耽误了很久时间,相关类在 System.Xml.Linq;命名空间下。好了,上一下成品吧,部分源代哦~

转载请注明作者:二厶可可肉.cyrusLiu.刘.步云.龙飞...小雪  (好吧有点长)

        出处:http://blog.csdn.net/cyrusliu/article/details/8435219

 

语言包实现源代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Xml.Linq;


namespace cyrus.LanguagePackage
{
    /// <summary>
    /// 语言包相关类
    /// </summary>
    public class LanguagePackage
    {

        private static Dictionary<int, String> DefaultLanguage { get; set; }

        #region 获取语言包
        /// <summary>
        /// 获取语言包
        /// </summary>
        /// <returns></returns>
        public static Dictionary<int, String> getLanguageDictionary()
        {

            if (DefaultLanguage == null)
                CreateDefaultLanguage();
            return DefaultLanguage;
        }
        /// <summary>
        /// 根据语言样式获取语言包
        /// </summary>
        /// <param name="languageStyle">语言样式</param>
        /// <returns>语言包</returns>
        public static Dictionary<int, String> getLanguageDictionary(String languageStyle)
        {
            return CreateLanguage(getLanguage(languageStyle));
        }
        #endregion

        #region 获取语言配置文件xml
        /// <summary>
        /// 获取语言配置文件xml
        /// </summary>
        /// <param name="languageStyle">语言类别</param>
        /// <returns>对应语言xml</returns>
        private static String getLanguage(string languageStyle)
        {

            string result = "Language/zh-CN.xml";
            var query22 = from c22 in XDocument.Load("Language/LanguageConfigure.xml").Elements("Languages") select c22;
            var query = from c in XDocument.Load("Language/LanguageConfigure.xml").Elements("Languages").Elements("LanguageItem") where c.Value == languageStyle select c;

            if (query != null)
                foreach (var languageItem in query)
                {
                    result = languageItem.Attribute("src").Value;
                }
            return result;
        }
        #endregion

        #region 创建语言包
        /// <summary>
        /// 创建语言包
        /// </summary>
        /// <param name="languageURL"></param>
        /// <returns></returns>
        private static Dictionary<int, String> CreateLanguage(String languageURL)
        {

            var query = from c in XDocument.Load(languageURL).Element("Contents").Elements("sentence") select c;
            if (query == null)
                return getLanguageDictionary();
            //语言包
            Dictionary<int, String> languagePackage = new Dictionary<int, string>();
            foreach (var sentence in query)
            {
                int id = Int32.Parse(sentence.Attribute("id").Value);
                string mess = sentence.Value;
                languagePackage.Add(id, mess);
            }
            return languagePackage;
        }
        #endregion
        
        #region 创建默认语言包
        /// <summary>
        /// 使用并创建默认语言包
        /// </summary>
        private static void CreateDefaultLanguage()
        {
            DefaultLanguage = CreateLanguage(getLanguage("zh-CN"));
        }
        #endregion
        
    }
}


 

 

你可能感兴趣的:(可可肉的奋斗(第二天)2012-12-25----------语言包实现实例及LINQ to XML)