Example #1
0
 public NumberFormatPattern GetDecimalNotationFormat()
 {
     if (decimalNotation == null)
     {
         XElement pattern = elements.FirstOrDefault(v => v.Name.LocalName == "decimalFormats");
         if (pattern == null)
         {
             decimalNotation = this.Parent.GetDecimalNotationFormat();
         }
         else if (CldrUtility.IsAlias(pattern, out string numberSystem))
         {
             decimalNotation = GetFormat(locale, numberSystem).GetDecimalNotationFormat();
         }
         else
         {
             pattern = pattern.XPathSelectElement("decimalFormatLength[not(@type)]/decimalFormat/pattern");
             if (pattern == null)
             {
                 decimalNotation = this.Parent.GetDecimalNotationFormat();
             }
             else
             {
                 decimalNotation = ParseNumberFormatPattern(pattern.Value);
             }
         }
     }
     return(decimalNotation);
 }
Example #2
0
 public NumberFormatPattern GetPercentStyleFormat()
 {
     if (percentFormats == null)
     {
         XElement pattern = elements.FirstOrDefault(v => v.Name.LocalName == "percentFormats");
         if (pattern == null)
         {
             percentFormats = this.Parent.GetPercentStyleFormat();
         }
         else if (CldrUtility.IsAlias(pattern, out string numberSystem))
         {
             percentFormats = GetFormat(locale, numberSystem).GetPercentStyleFormat();
         }
         else
         {
             pattern = pattern.XPathSelectElement("percentFormatLength/percentFormat/pattern");
             if (pattern == null)
             {
                 percentFormats = this.Parent.GetPercentStyleFormat();
             }
             else
             {
                 percentFormats = ParseNumberFormatPattern(pattern.Value);
             }
         }
     }
     return(percentFormats);
 }
Example #3
0
        public ReadOnlyDictionary <PluralCategories, NumberFormatPattern> GetCurrencyStyleFormat(string code, CurrencyDisplayFormat format, CurrencySignFormat sign)
        {
            Dictionary <PluralCategories, NumberFormatPattern> dict = new Dictionary <PluralCategories, NumberFormatPattern>();
            NumberFormatPattern pattern = GetCurrencyStyleFormat(sign);

            FormattedString[] src = new[] { pattern.PositivePattern, pattern.NegativePattern, pattern.ZeroPattern };
            FormattedString[] dst = new FormattedString[3];
            foreach (KeyValuePair <PluralCategories, string> e in GetCurrencyName(code, format))
            {
                Array.Clear(dst, 0, 3);
                for (int i = 0; i < 3; i++)
                {
                    if (src[i] != dst[0])
                    {
                        FormattedPart[] parts = src[i].GetParts();
                        int             index = Array.FindIndex(parts, v => v.Type == FormattedPartType.Currency);
                        parts[index] = new FormattedPart(FormattedPartType.Currency, e.Value);
                        dst[i]       = new FormattedString(parts);
                    }
                }
                dict.Add(e.Key, new NumberFormatPattern(dst[0], dst[1] ?? dst[0], dst[2] ?? dst[0]));
            }
            return(new ReadOnlyDictionary <PluralCategories, NumberFormatPattern>(dict));
        }