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); }
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); }
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); }
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); }
private bool TryGetRuleFromDefaultPluralRuleProvider(CultureInfo culture, out PluralizationRuleDelegate rule) { return(((IPluralRuleProvider) new DefaultPluralRuleProvider()).TryGetRule(culture, out rule)); }
/// <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; }