using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Resources; using System.Collections; using System.Globalization; using System.IO; using System.Net; using System.Text.RegularExpressions; namespace resedit { public partial class Form1 : Form { public Form1() { InitializeComponent(); List list = new List(); list.Add(""); CultureInfo[] temp = System.Globalization.CultureInfo.GetCultures(CultureTypes.FrameworkCultures); foreach (CultureInfo cul in temp) { list.Add(cul.DisplayName + " " + cul.Name); } list.Sort(); comboBox1.DataSource = list; } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.SelectedPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath); fbd.ShowDialog(); if (fbd.SelectedPath != "") { dataGridView1.Rows.Clear(); string[] files = System.IO.Directory.GetFiles(fbd.SelectedPath, "*.resx", System.IO.SearchOption.AllDirectories); string ci = ""; CultureInfo[] temp = System.Globalization.CultureInfo.GetCultures(CultureTypes.AllCultures); foreach (CultureInfo cul in temp) { if ((cul.DisplayName + " " + cul.Name) == comboBox1.Text) { Console.WriteLine(cul.Name); ci = cul.Name; } } foreach (string file in files) { // load only file of the slected lang if (!file.ToLower().Contains(ci.ToString().ToLower() + ".resx")) continue; // dont load and tralations if no lang selected if (file.ToLower().Contains("translation") && comboBox1.Text == "") continue; // must be a resx if (!file.ToLower().EndsWith(".resx")) continue; ResXResourceReader reader = new ResXResourceReader(file); Console.WriteLine(reader); reader.BasePath = fbd.SelectedPath + System.IO.Path.DirectorySeparatorChar +"Resources"; try { foreach (DictionaryEntry entry in reader) { if (entry.Key.ToString().EndsWith(".ToolTip") || entry.Key.ToString().EndsWith(".Text") || entry.Key.ToString().EndsWith("HeaderText") || entry.Key.ToString().EndsWith("ToolTipText")) { dataGridView1.Rows.Add(); dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[colFile.Index].Value = System.IO.Path.GetFileName(file); dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[colInternal.Index].Value = entry.Key.ToString(); dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[colEnglish.Index].Value = entry.Value.ToString(); dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[colOtherLang.Index].Value = entry.Value.ToString(); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } } private void button2_Click(object sender, EventArgs e) { string ci = ""; CultureInfo[] temp = System.Globalization.CultureInfo.GetCultures(CultureTypes.AllCultures); foreach (CultureInfo cul in temp) { if ((cul.DisplayName + " " + cul.Name) == comboBox1.Text) { Console.WriteLine(cul.Name); ci = cul.Name; } } string fname = ""; ResXResourceWriter writer = null; System.IO.Directory.CreateDirectory("translation"); StreamWriter sw = new StreamWriter("translation/output.html"); sw.Write(""); foreach (DataGridViewRow row in dataGridView1.Rows) { try { if (row.Cells[colFile.Index].Value.ToString() != fname) { if (writer != null) writer.Close(); writer = new ResXResourceWriter("translation/" + row.Cells[colFile.Index].Value.ToString().Replace(".resx", "." + ci + ".resx")); } writer.AddResource(row.Cells[colInternal.Index].Value.ToString(), row.Cells[colOtherLang.Index].Value.ToString()); fname = row.Cells[colFile.Index].Value.ToString(); } catch { } try { sw.Write(""); } catch (Exception ex) { try { MessageBox.Show("Failed to save " + row.Cells[colOtherLang.Index].Value.ToString() + " " + ex.ToString()); } catch { } } } if (writer != null) writer.Close(); sw.Write("
" + row.Cells[colFile.Index].Value.ToString() + "" + row.Cells[colInternal.Index].Value.ToString() + "" + row.Cells[colOtherLang.Index].Value.ToString() + "
"); sw.Close(); } private void button3_Click(object sender, EventArgs e) { StreamReader sr1 = new StreamReader("translation/output.txt"); StreamReader sr2 = new StreamReader("translation/output.ru.txt", Encoding.Unicode); while (!sr1.EndOfStream) { string line1 = sr1.ReadLine(); string line1a = sr2.ReadLine(); int index1 = line1.IndexOf(' ', line1.IndexOf(' ') + 1) + 1; int index1a = line1a.IndexOf(' ',line1a.IndexOf(' ')+1)+1; foreach (DataGridViewRow row in dataGridView1.Rows) { if (line1.Contains(row.Cells[colFile.Index].Value.ToString()) && line1.Contains(row.Cells[colInternal.Index].Value.ToString())) { row.Cells[colOtherLang.Index].Value = line1a.Substring(index1a); } } } sr1.Close(); sr2.Close(); } } }