可可肉的奋斗(第二天)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 }}