/// <summary> /// Загрузить ресурсы. /// </summary> public static RootCategory Load(string file, out CultureInfo[] loadedCultures, out DateTime lastModifiedTime) { // Fill cultures hash foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.AllCultures)) _cultures[ci.Name] = ci; string fnwe = Path.GetFileNameWithoutExtension(file); string locExt = Path.GetExtension(fnwe); string sn = !string.IsNullOrEmpty(locExt) && _cultures.ContainsKey(locExt.Substring(1)) ? fnwe.Substring(0, fnwe.Length - locExt.Length) : fnwe; RootCategory root = new RootCategory(sn); List<CultureInfo> loaded = new List<CultureInfo>(); lastModifiedTime = File.GetLastWriteTime(file); foreach (string fn in Directory.GetFiles(Path.GetDirectoryName(file), _resxFileExtension)) if (Path.GetFileName(fn).IndexOf(sn) == 0) { loaded.Add(AppendResX(root, fn)); DateTime lmt = File.GetLastWriteTime(fn); if (lmt > lastModifiedTime) lastModifiedTime = lmt; } loadedCultures = loaded.ToArray(); return root; }
/// <summary> /// Генерировать хелпер. /// </summary> public static CodeCompileUnit Generate(RootCategory cat, string ns, bool isInternal) { var ccu = new CodeCompileUnit(); var cn = new CodeNamespace(ns); ccu.Namespaces.Add(cn); GenerateCategory(cn.Types, cat, null, isInternal); return ccu; }
private static CultureInfo AppendResX(RootCategory root, string file) { CultureInfo locale = GetLocale(file); ResXResourceReader rxrr = new ResXResourceReader(file); foreach (DictionaryEntry de in rxrr) { ResourceItem item = root.GetItem((string)de.Key); item.ValueCollection[locale] = de.Value.ToString(); } return locale; }
private void OpenFile() { if (_openFileDialog.ShowDialog() == DialogResult.OK) { CultureInfo[] loadedCultures; DateTime lwt; _rootCategory = Loader.Load(_openFileDialog.FileName, out loadedCultures, out lwt); IEditContext ec = (IEditContext)Site.GetService(typeof(IEditContext)); ec.AvailableCultures = loadedCultures; _directory = Path.GetDirectoryName(_openFileDialog.FileName); FakeNodeCollection fnc = new FakeNodeCollection(); fnc.Add(_rootCategory); _rootCategory.TreeParent = fnc; ClearSelection(); _categoryTree.Nodes = fnc; EnableCommandItems(); } }