XML语言包
来源:互联网 发布:最好的监控软件 编辑:程序博客网 时间:2024/06/05 14:06
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.IO;
/***
* 读取XML语言包文件
* @author qjf
* */
namespace BRFID.Common
{
public class Language
{
public static Hashtable LanguageTable = new Hashtable();
public static Hashtable Languages = new Hashtable();
/// <summary>
/// 打开语言包文件
/// </summary>
/// <param name="languageName"></param>
/// <returns></returns>
private static XDocument OpenLanguageFile(string languageName)
{
string path = GetPath(languageName);
return OpenFile(path);
}
/// <summary>
/// 打开XML文件
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
private static XDocument OpenFile(string path)
{
if (File.Exists(path))
{
return XDocument.Load(path);
}
return null;
}
/// <summary>
/// 创建语言包对照集合
/// </summary>
/// <param name="doc"></param>
private static void CreateLanguageTable(XDocument doc)
{
if (doc != null)
{
AddLanguageHeadInfo(doc);
foreach (var Node in doc.Descendants("Moudle"))
{
Hashtable ht = new Hashtable();
foreach (var g in Node.Descendants("Item"))
{
ht.Add(g.Attribute("name").Value, g.Value);
}
LanguageTable.Add(Node.Attribute("name").Value, ht);
}
}
}
/// <summary>
/// 添加语言的头部信息
/// </summary>
/// <param name="doc"></param>
private static void AddLanguageHeadInfo(XDocument doc)
{
Hashtable ht = new Hashtable();
ht.Add("language", doc.Root.Attribute("name").Value);
ht.Add("version", doc.Root.Attribute("version").Value);
ht.Add("displayName", doc.Root.Attribute("displayName").Value);
LanguageTable.Add("LanguageInfo", ht);
}
/// <summary>
/// 获取相应的语言包的路径
/// </summary>
/// <param name="languageName"></param>
/// <returns></returns>
private static string GetPath(string languageName)
{
string XmlPath = GetLanguageBasePath();
Hashtable ht = GetLanguageConfig();
XmlPath += (ht[languageName] as LanguageInfo).path + ".xml";
return XmlPath;
}
/// <summary>
/// 获取语言包基路径
/// </summary>
/// <returns></returns>
private static string GetLanguageBasePath()
{
return System.Windows.Forms.Application.StartupPath + "//Languages//";
}
/// <summary>
/// 获取语言的配置信息
/// </summary>
/// <returns></returns>
private static Hashtable GetLanguageConfig()
{
string XmlPath = GetLanguageBasePath()+"Languages.xml";
XDocument doc = OpenFile(XmlPath);
if (doc != null)
{
LangugesHeadInfo(doc);
foreach (var item in doc.Descendants("Item"))
{
LanguageInfo languageInfo = new LanguageInfo();
languageInfo.name = item.Attribute("name").Value;
languageInfo.path = item.Attribute("path").Value;
languageInfo.value = item.Value;
Languages.Add(languageInfo.name, languageInfo);
}
}
return Languages;
}
/// <summary>
/// 获取语言的头部信息
/// </summary>
/// <param name="doc"></param>
private static void LangugesHeadInfo(XDocument doc)
{
Languages.Add("company", doc.Root.Attribute("company").Value);
Languages.Add("version", doc.Root.Attribute("version").Value);
}
/// <summary>
/// 加载相应的语言包
/// </summary>
/// <param name="languageName">语言名称</param>
/// <returns>语言对照文本的集合</returns>
public static Hashtable LoadLanguage(string languageName)
{
XDocument doc = OpenLanguageFile(languageName);
CreateLanguageTable(doc);
return LanguageTable;
}
/// <summary>
/// 获取模块中的语言文本集合
/// </summary>
/// <param name="moduleName"></param>
/// <returns>语言翻译对照文本的集合</returns>
public static Hashtable GetMessages(string moduleName)
{
return (Hashtable)LanguageTable[moduleName];
}
/// <summary>
/// 获取翻译文本
/// </summary>
/// <param name="moduleName">模块名</param>
/// <param name="messageName">文本名</param>
/// <returns></returns>
public static string GetMessage(string moduleName, string messageName)
{
return ((Hashtable)LanguageTable[moduleName])[messageName].ToString();
}
/// <summary>
/// 获取当前语言的信息
/// </summary>
/// <returns>语言信息的集合(包括名字,版本,显示名字等)</returns>
public static Hashtable GetCurrentLanguageInfo()
{
return (Hashtable)LanguageTable["LanguageInfo"];
}
/// <summary>
/// 获取系统配置的所有语言种类
/// </summary>
/// <returns>返回语言配置实体类的哈希集合</returns>
public static Hashtable GetLanguages()
{
return Languages;
}
/// <summary>
/// 语言配置实体类
/// 包括语言名称,配置路劲,以及显示名称
/// </summary>
public class LanguageInfo
{
public string name { get; set; }
public string path { get; set; }
public string value { get; set; }
}
}
}
XML文件如下:
Languages.xml:
zh-CN.xml
- XML语言包
- discuz插件, xml 语言包 里面的内容调整,修改后没变化的解决方法
- 运用XML去除QT语言包文件中失效项,同时召回已有的翻译
- 多语言包
- 中文语言包
- 安装语言包
- 软件语言包
- eclipse 语言包
- thinkphp 语言包
- R语言包
- 语言包使用
- JDK语言包
- 可可肉的奋斗(第二天)2012-12-25----------语言包实现实例及LINQ to XML
- 安装eclipse及语言包
- 安装eclipse及语言包
- 安装eclipse3.2.1语言包
- 安装eclipse3.2.1语言包
- eclipse3.4语言包解决方法
- printf 格式对齐
- SecureCRT 乱码解决
- 转: 框架
- 查看LINUX 硬件配置信息
- SQL随机查询
- XML语言包
- VC++ MFC DLL动态链接库编写详解
- C# winform 第三方播放器COM组件,可播放任意格式视频....
- 网络重启
- asp.net常用指南
- C++拷贝构造函数(深拷贝,浅拷贝)
- 数据仓库中两种数据模型的分析比较
- 在驱动和应用程序间共享内存
- 为什么要选用开发平台