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

时间:2022-09-19 20:51:56

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

个人技术背景:做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

}
}