public TranslatedResource getResources(Dictionary <string, string> fnames) { TranslatedResource result = new TranslatedResource(); result.basepath = basepath; foreach (string lang in fnames.Keys) { result.LoadXML(lang, fnames[lang]); } return(result); }
public void LoadXML(string filename) { XmlDocument xml = new XmlDocument(); xml.Load(filename); XmlNode n = xml.SelectSingleNode("/root/basepath"); this.basepath = n.Attributes["name"].Value; basepath = new Regex("[/\\\\]+$").Replace(basepath, ""); XmlNodeList nl = xml.SelectNodes("/root/resource"); foreach (XmlNode r in nl) { TranslatedResource tr = new TranslatedResource(); tr.basepath = basepath; string b = r.Attributes["base"].Value; if (b.IndexOf(basepath) == 0) { b = b.Remove(0, basepath.Length); } XmlNode f = r.SelectSingleNode("files"); foreach (XmlNode l in f.SelectNodes("file")) { string lang = l.Attributes["lang"].Value; tr.files[lang] = l.FirstChild.InnerText; if (tr.files[lang].IndexOf(basepath) == 0) { tr.files[lang] = tr.files[lang].Remove(0, basepath.Length); } } foreach (XmlNode k in r.SelectNodes("key")) { string key = k.Attributes["value"].Value; TranslatedKey tk = new TranslatedKey(); foreach (XmlNode t in k.ChildNodes) { string lang = t.Attributes["lang"].Value; tk.Translations[lang] = t.InnerText; } tr.TranslatedKey[key] = tk; } Resources[b] = tr; } }
private void listViewAdd(string fname, TranslatedResource dict, string filter = ".*") { List <ListViewItem> lvi = new List <ListViewItem>(); try { foreach (KeyValuePair <string, TranslatedKey> pair in dict.TranslatedKey) { RegexOptions options = (searchcaseBox.Checked) ? RegexOptions.None : RegexOptions.IgnoreCase; bool matched = Regex.Match(pair.Key.ToString(), filter, options).Success; foreach (string lang in displayedLanguages) { if (pair.Value.Translations.ContainsKey(lang)) { matched |= Regex.Match(pair.Value.Translations[lang].ToString(), filter, options).Success; } } if (!matched) { continue; } // populate listview ListViewItem item = new ListViewItem(new string[] { fname, pair.Key.ToString() }); foreach (string lang in displayedLanguages) { ListViewItem.ListViewSubItem subitem = item.SubItems.Add(""); subitem.Name = lang; } item.Tag = pair.Value; // speichere Zeiger auf TranslatedKey im Item-Tag item.UseItemStyleForSubItems = false; UpdateItem(item); lvi.Add(item); } listView1.Items.AddRange(lvi.ToArray()); // viel schneller als einzelnes Hinzufügen! } catch (Exception e) { } }