Skip to content

Instantly share code, notes, and snippets.

@Marjani
Last active March 16, 2019 16:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Marjani/b22ae29464f9925f7c50ead789d9e2f1 to your computer and use it in GitHub Desktop.
Save Marjani/b22ae29464f9925f7c50ead789d9e2f1 to your computer and use it in GitHub Desktop.
Compare and extract different between tow NopCommerce Language pack
using System;
using System.Collections.Generic;
using System.Xml.Linq;
namespace Nop.CompareLocaleResource
{
class Program
{
static void Main(string[] args)
{
var fullLangXmlPath = @"H:\l\language_pack.xml";
var newLangXmlPath = @"H:\l\language_pack_.xml";
var resultLangXmlPath = @"H:\l\language_pack_diff.xml";
var strXmlTag = "<?xml version=\"1.0\" encoding=\"utf-16\"?>";
var LanguageName = "فارسی";
var SupportedVersion = "4.1";
var reader = new System.IO.StreamReader(fullLangXmlPath).ReadToEnd();
XElement fullXml = XElement.Parse(reader);
reader = new System.IO.StreamReader(newLangXmlPath).ReadToEnd();
XElement newXml = XElement.Parse(reader);
var fullElements = fullXml.Elements(XName.Get("LocaleResource"));
var newElements = newXml.Elements(XName.Get("LocaleResource"));
var fullDictionary = new Dictionary<string, string>();
foreach (var fItem in fullElements)
{
fullDictionary.Add(fItem.Attribute(XName.Get("Name")).Value, fItem.Value);
}
var newDictionary = new Dictionary<string, string>();
foreach (var fItem in newElements)
{
newDictionary.Add(fItem.Attribute(XName.Get("Name")).Value, fItem.Value);
}
var extractXml = new Dictionary<string, string>();
foreach (var item in fullDictionary)
{
if (!newDictionary.ContainsKey(item.Key))
{
extractXml.Add(item.Key, item.Value);
}
}
var writer = new System.IO.StreamWriter(resultLangXmlPath);
writer.Write("<?xml version=\"1.0\" encoding=\"utf-16\"?><Language Name=\"" + LanguageName + "\" SupportedVersion=\"" + SupportedVersion + "\">");
foreach (var item in extractXml)
{
writer.WriteLine("<LocaleResource Name=\""+item.Key+"\"><Value>"+item.Value+"</Value></LocaleResource>");
}
writer.Write("</Language>");
writer.Close();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment