Exemple #1
0
 private static void AddRule(string[] cultures, PluralizationRuleDelegate rule)
 {
     foreach (var culture in cultures)
     {
         Rules.Add(culture, rule);
     }
 }
        /// <inheritdocs />
        public bool TryGetRule(CultureInfo culture, out PluralizationRuleDelegate rule)
        {
            var cultureForPlural = GetBaseCulture(culture);

            if (Rules.TryGetValue(cultureForPlural.Name, out rule))
            {
                return(true);
            }

            return(false);
        }
        bool IPluralRuleProvider.TryGetRule(CultureInfo culture, out PluralizationRuleDelegate rule)
        {
            rule = null;

            var cultureForPlural = GetBaseCulture(culture);

            if (Rules.TryGetValue(cultureForPlural.Name, out rule))
            {
                return(true);
            }

            return(false);
        }
Exemple #4
0
        bool IPluralRuleProvider.TryGetRule(CultureInfo culture, out PluralizationRuleDelegate rule)
        {
            rule = null;

            if (Rules.TryGetValue(culture.Name, out rule))
            {
                return(true);
            }

            if (culture.Parent != null && Rules.TryGetValue(culture.Parent.Name, out rule))
            {
                return(true);
            }

            return(false);
        }
Exemple #5
0
        public void GetDictionarySelectsPluralRuleFromProviderWithHigherPriority()
        {
            PluralizationRuleDelegate csPluralRuleOverride = n => ((n == 1) ? 0 : (n >= 2 && n <= 4) ? 1 : 0);

            var highPriorityRuleProvider = new Mock <IPluralRuleProvider>();

            highPriorityRuleProvider.SetupGet(o => o.Order).Returns(-1);
            highPriorityRuleProvider.Setup(o => o.TryGetRule(It.Is <CultureInfo>(culture => culture.Name == "cs"), out csPluralRuleOverride)).Returns(true);

            _translationProvider.Setup(o => o.LoadTranslations(
                                           It.Is <string>(culture => culture == "cs"),
                                           It.IsAny <CultureDictionary>())
                                       );
            var manager = new LocalizationManager(new[] { _pluralRuleProvider.Object, highPriorityRuleProvider.Object }, _translationProvider.Object, _memoryCache);

            var dictionary = manager.GetDictionary(new CultureInfo("cs"));

            Assert.Equal(dictionary.PluralRule, csPluralRuleOverride);
        }
Exemple #6
0
        public CultureDictionary GetDictionary(CultureInfo culture)
        {
            var cachedDictionary = _cache.GetOrCreate(CacheKeyPrefix + culture.Name, k => new Lazy <CultureDictionary>(() =>
            {
                PluralizationRuleDelegate rule = DefaultPluralRule;

                foreach (var provider in _pluralRuleProviders)
                {
                    if (provider.TryGetRule(culture, out rule))
                    {
                        break;
                    }
                }

                var dictionary = new CultureDictionary(culture.Name, rule);
                _translationProvider.LoadTranslations(culture.Name, dictionary);

                return(dictionary);
            }, LazyThreadSafetyMode.ExecutionAndPublication));

            return(cachedDictionary.Value);
        }
        private void SetupDictionary(string cultureName, IEnumerable <CultureDictionaryRecord> records, PluralizationRuleDelegate pluralRule)
        {
            var dictionary = new CultureDictionary(cultureName, pluralRule);

            dictionary.MergeTranslations(records);

            _localizationManager.Setup(o => o.GetDictionary(It.Is <CultureInfo>(c => c.Name == cultureName))).Returns(dictionary);
        }
Exemple #8
0
 private bool TryGetRuleFromDefaultPluralRuleProvider(CultureInfo culture, out PluralizationRuleDelegate rule)
 {
     return(((IPluralRuleProvider) new DefaultPluralRuleProvider()).TryGetRule(culture, out rule));
 }
Exemple #9
0
 /// <summary>
 /// Creates a new instance of <see cref="CultureDictionary"/>.
 /// </summary>
 /// <param name="cultureName">The culture name.</param>
 /// <param name="pluralRule">The pluralization rule.</param>
 public CultureDictionary(string cultureName, PluralizationRuleDelegate pluralRule)
 {
     Translations = new Dictionary <string, string[]>();
     CultureName  = cultureName;
     PluralRule   = pluralRule;
 }