private void ReadFromExcel(ExcelPackage package, List <LanguageResourceBundle> newLanguageResourceBundles) { foreach (var workSheet in package.Workbook.Worksheets) { var column01 = workSheet.Cells[1, 1].Value; var column02 = workSheet.Cells[1, 2].Value; var column03 = workSheet.Cells[1, 3].Value; var column04 = workSheet.Cells[1, 4].Value; if (!AreColumnsValid(column01, column02, column03, column04)) { throw new Exception(PluginResources.Excel_spreadsheet_not_in_correct_format); } var abbreviations = new Wordlist(); var ordinalFollowers = new Wordlist(); var variables = new Wordlist(); var segmentationRules = new SegmentationRules(); ReadFromExcel(workSheet, abbreviations, ordinalFollowers, variables, segmentationRules); var newLanguageResourceBundle = new LanguageResourceBundle(CultureInfoExtensions.GetCultureInfo(workSheet.Name)) { Abbreviations = abbreviations, OrdinalFollowers = ordinalFollowers, Variables = variables, SegmentationRules = segmentationRules }; newLanguageResourceBundles.Add(newLanguageResourceBundle); } ExcludeWhatIsNotNeeded(newLanguageResourceBundles); AddNewBundles(newLanguageResourceBundles); }
private static void AddSegmentationRulesToBundle(LanguageResourceBundle newBundle, LanguageResourceBundle correspondingBundleInTemplate) { if (newBundle.SegmentationRules == null) { return; } if (correspondingBundleInTemplate.SegmentationRules != null) { var newSegmentationRules = new SegmentationRules(); foreach (var newRule in newBundle.SegmentationRules.Rules) { if (correspondingBundleInTemplate.SegmentationRules.Rules.All(oldRule => !string.Equals(newRule.Description.Text, oldRule.Description.Text, StringComparison.OrdinalIgnoreCase))) { newSegmentationRules.AddRule(newRule); } } correspondingBundleInTemplate.SegmentationRules.Rules.AddRange(newSegmentationRules.Rules); } else { correspondingBundleInTemplate.SegmentationRules = new SegmentationRules(newBundle.SegmentationRules); } }
private void AddLanguageResourceToBundle(LanguageResourceBundle langResBundle, XmlNode resource) { if (resource?.Attributes?["Type"].Value == "Variables") { var vars = Encoding.UTF8.GetString(Convert.FromBase64String(resource.InnerText)); langResBundle.Variables = new Wordlist(); foreach (Match s in Regex.Matches(vars, @"([^\s]+)")) { langResBundle.Variables.Add(s.ToString()); } return; } if (resource?.Attributes?["Type"].Value == "Abbreviations") { var abbrevs = Encoding.UTF8.GetString(Convert.FromBase64String(resource.InnerText)); langResBundle.Abbreviations = new Wordlist(); foreach (Match s in Regex.Matches(abbrevs, @"([^\s]+)")) { langResBundle.Abbreviations.Add(s.ToString()); } return; } if (resource?.Attributes?["Type"].Value == "OrdinalFollowers") { var ordFollowers = Encoding.UTF8.GetString(Convert.FromBase64String(resource.InnerText)); langResBundle.OrdinalFollowers = new Wordlist(); foreach (Match s in Regex.Matches(ordFollowers, @"([^\s]+)")) { langResBundle.OrdinalFollowers.Add(s.ToString()); } return; } if (resource?.Attributes?["Type"].Value == "SegmentationRules") { var segRules = Convert.FromBase64String(resource.InnerText); var stream = new MemoryStream(segRules); var segmentRules = SegmentationRules.Load(stream, CultureInfo.GetCultureInfo(langResBundle.Language.LCID), null); langResBundle.SegmentationRules = segmentRules; } }
private void ReadFromExcel(ExcelWorksheet workSheet, Wordlist abbreviations, Wordlist ordinalFollowers, Wordlist variables, SegmentationRules segmentationRules) { for (var i = 2; i <= workSheet.Dimension.End.Row; i++) { abbreviations.Add(workSheet.Cells[i, 1]?.Value?.ToString()); ordinalFollowers.Add(workSheet.Cells[i, 2]?.Value?.ToString()); variables.Add(workSheet.Cells[i, 3]?.Value?.ToString()); var serializedSegmentationRule = workSheet.Cells[i, 4]?.Value?.ToString(); if (serializedSegmentationRule == null) { continue; } var stringReader = new StringReader(serializedSegmentationRule); var xmlSerializer = new XmlSerializer(typeof(SegmentationRule)); var segmentationRule = (SegmentationRule)xmlSerializer.Deserialize(stringReader); segmentationRules.AddRule(segmentationRule); } }