/// <summary> /// Add the specified language to this object /// </summary> public void AddLanguage(string languageCode) { if (!this.Languages.ContainsKey(languageCode.ToLower())) { this.Dirty = true; var mainfile = new FileInfo(this.Filename); string newFile = mainfile.Name.Substring(0, mainfile.Name.Length - mainfile.Extension.Length) + "." + languageCode + mainfile.Extension; newFile = mainfile.Directory.FullName + "\\" + newFile; mainfile.CopyTo(newFile); var languageHolder = new LanguageHolder(); languageHolder.Filename = newFile; languageHolder.Id = languageCode; this.Languages.Add(languageCode.ToLower(), languageHolder); this._stringsTable.Columns.Add(languageCode.ToLower()); this.ReadResourceFile(languageHolder.Filename, this._stringsTable, languageHolder.Id, true); if (this.Languages.Count > 0) { foreach (DataRow row in this._stringsTable.Rows) { this.EvaluateRow(row); } } this.OnLanguageChange(); } }
private void FindResx(string folder) { string displayFolder = ""; if (folder.StartsWith(this.RootPath, StringComparison.InvariantCultureIgnoreCase)) { displayFolder = folder.Substring(this.RootPath.Length); } if (displayFolder.StartsWith("\\")) { displayFolder = displayFolder.Remove(0, 1); } string[] files = Directory.GetFiles(folder, "*.resx"); foreach (string file in files) { string filenameNoExt = "" + Path.GetFileNameWithoutExtension(file); string[] fileParts = filenameNoExt.Split('.'); if (fileParts.Length == 0) { continue; } string language = ""; if (fileParts[fileParts.Length - 1].Length == 5 && fileParts[fileParts.Length - 1][2] == '-') { language = fileParts[fileParts.Length - 1]; } else if (fileParts[fileParts.Length - 1].Length == 2) { language = fileParts[fileParts.Length - 1]; } if (!string.IsNullOrEmpty(language)) { filenameNoExt = Path.GetFileNameWithoutExtension(filenameNoExt); } ResourceHolder resourceHolder; string key = (displayFolder + "\\" + filenameNoExt).ToLower(); if (!this.Resources.TryGetValue(key, out resourceHolder)) { resourceHolder = new ResourceHolder(); resourceHolder.DisplayFolder = displayFolder; if (string.IsNullOrEmpty(language)) { resourceHolder.Filename = file; } resourceHolder.Id = filenameNoExt; this.Resources.Add(key, resourceHolder); } if (!string.IsNullOrEmpty(language)) { if (!this.LanguagesInUse.ContainsKey(language)) { this.LanguagesInUse[language] = 0; } this.LanguagesInUse[language] += 1; if (!resourceHolder.Languages.ContainsKey(language.ToLower())) { var languageHolder = new LanguageHolder(); languageHolder.Filename = file; languageHolder.Id = language; resourceHolder.Languages.Add(language.ToLower(), languageHolder); } } else { resourceHolder.Filename = file; } } string[] subfolders = Directory.GetDirectories(folder); foreach (string subfolder in subfolders) { this.FindResx(subfolder); } }