private static PluralRuleSet[] GetPluralRuleSets(bool ordinals = false) { if (options != null && ((ordinals && !options.IncludeOrdinalRuleSets) || (!ordinals && !options.IncludePluralRuleSets))) { return(null); } string filename = ordinals ? "ordinals" : "plurals"; string ruleSetType = ordinals ? "ordinal" : "plural"; XDocument document = GetXmlDocument(String.Format(@"common\supplemental\{0}.xml", filename)); IEnumerable <XElement> ldmlElements = document.Elements("supplementalData"); List <XElement> pluralRuleSetDatas = (from item in ldmlElements.Elements("plurals") .Elements("pluralRules") select item).ToList(); if (pluralRuleSetDatas != null && pluralRuleSetDatas.Count > 0) { List <PluralRuleSet> pluralRuleSets = new List <PluralRuleSet>(); foreach (XElement data in pluralRuleSetDatas) { string cultureNames = data.Attribute("locales").Value.ToString(); Progress(String.Format("Adding {0} rule set", ruleSetType), cultureNames); PluralRuleSet pluralRuleSet = new PluralRuleSet(); pluralRuleSet.CultureNames = cultureNames.Split(' '); List <XElement> pluralRuleDatas = (from item in data .Elements("pluralRule") select item).ToList(); if (pluralRuleDatas != null) { List <PluralRule> pluralRules = new List <PluralRule>(); foreach (XElement pluralRuleData in pluralRuleDatas) { PluralRule pluralRule = new PluralRule(); pluralRule.Id = GetPluralRuleCount(pluralRuleData.Attribute("count").Value.ToString()); pluralRule.Rule = pluralRuleData.Value; pluralRules.Add(pluralRule); } pluralRuleSet.PluralRules = pluralRules.ToArray(); } pluralRuleSets.Add(pluralRuleSet); Progress(String.Format("Added {0} rule set", ruleSetType), cultureNames, ProgressEventType.Added, pluralRuleSet); } return(pluralRuleSets.ToArray()); } return(null); }
/// <summary> /// GetPluralRules gets the PluralRules that match the language of a culture from an array of sets of PluralRules /// </summary> /// <param name="pluralRuleSets">An array of sets of PluralRules</param> /// <param name="cultureName">The culture name to get the PluralRules for</param> /// <returns>An array of PluralRules that match the language of a culture from an array of sets of PluralRules</returns> private static PluralRule[] GetPluralRules(PluralRuleSet[] pluralRuleSets, string cultureName) { string language = GetLanguage(cultureName); foreach (PluralRuleSet pluralRuleSet in pluralRuleSets) { if (pluralRuleSet.CultureNames.Contains(language)) { return pluralRuleSet.PluralRules; } } return null; }