Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
            }
        }