Asp.net 资源文件翻译助手

简介:

     最近项目需要做一个双语的网站,需要将对资源文件进行翻译,在vs里翻译感觉不够方便,参考SimpleResxEditor,自己写了个资源文件编辑助手,自己DIY的才是最好用的,呵呵,软件界面:


使用方法:


实现思路:

1.资源文件对应的实体

namespace ResxEditor
{
    public class ResourceItem
    {
        public ResourceItem()
        { }

        public ResourceItem(int id, string key, string value, string comment)
        {
            this.ID = id;
            this.Key = key;
            this.Value = value;
            this.Comment = comment;
        }
        public int ID { get; set; }
        public string Key { get; set; }
        public string Value { get; set; }
        public string Comment { get; set; }
    }
}

2.读取资源文件的方法

        /// <summary>
        /// 读取资源文件
        /// </summary>
        /// <returns></returns>
        private List<ResourceItem> GetDicList()
        {
            List<ResourceItem> itemList = new List<ResourceItem>();
            ResXResourceReader rsxResource = new ResXResourceReader(resourceFilePath);
            rsxResource.UseResXDataNodes = true;
            AssemblyName[] referencedAssemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
            IDictionaryEnumerator enumerator = rsxResource.GetEnumerator();
            int i = 0;
            while (enumerator.MoveNext())
            {
                DictionaryEntry current = (DictionaryEntry)enumerator.Current;
                ResXDataNode node = (ResXDataNode)current.Value;
                string strKey = node.Name;    //资源项名  
                string strValue = node.GetValue(referencedAssemblies).ToString();//值  
                string strComment = node.Comment;   //注释  
                ResourceItem item = new ResourceItem(i, strKey, strValue, strComment);
                itemList.Add(item);
                i++;
            }
            return itemList;
        }
3.写入资源文件的方法

        private void BtnUpdate_Click(object sender, EventArgs e)
        {
            LblResult.Text = "";
            //写入键值对
            List<ResourceItem> itemList = GetDicList();            
            ResXResourceWriter rswt = new ResXResourceWriter(resourceFilePath);
            foreach (ResourceItem item in itemList)
            {
                if (string.Compare(item.Key, TxtKey.Text, true) == 0)
                {
                    ResXDataNode node = new ResXDataNode(item.Key, TxtTranslate.Text.Trim());//将翻译写入Value
                    node.Comment = TxtValue.Text;//将value写入注释
                    rswt.AddResource(node);
                }
                else
                {
                    ResXDataNode node = new ResXDataNode(item.Key, item.Value);
                    node.Comment = item.Comment;
                    rswt.AddResource(node);
                }
            }
            rswt.Close();
            rswt.Dispose();
            LblResult.Text = "更新成功!";
            LblResult.ForeColor = Color.Green;
        }

软件下载:http://download.csdn.net/detail/a497785609/4040724

源码下载:http://download.csdn.net/detail/a497785609/4040709




目录
相关文章
|
存储 XML .NET
一起谈.NET技术,如何让ASP.NET默认的资源编程方式支持非.ResX资源存储
  之前写了两篇文章《.NET资源并不限于.ResX文件》(上篇、下篇),介绍了如何通过自定义ResourceManager的方式来扩展资源的存储形式。在那篇文章中,我定义了三种基于独立文件的ResourceManager(ResXResourceManager、BinaryResourceManager和XmlResoureManager)分别实现对.ResX,.Resource和.xml三种资源文件的访问。
732 0
|
存储 XML .NET
如何让ASP.NET默认的资源编程“.NET研究”方式支持非.ResX资源存储
  之前写了两篇文章《.NET资源并不限于.ResX文件》(上篇、下篇),介绍了如何通过自定义ResourceManager的方式来扩展资源的存储形式。在那篇文章中,我定义了三种基于独立文件的ResourceManager(ResXResourceManager、BinaryResourceManager和XmlResoureManager)分别实现对.ResX,.Resource和.xml三种资源文件的访问。
748 0
|
存储 数据安全/隐私保护 数据库