using System.Collections; using System.Collections.Generic; using System.Collections.Immutable; using System.Globalization; namespace Abp.Localization.Dictionaries { /// /// Represents a simple implementation of interface. /// public class LocalizationDictionary : ILocalizationDictionary, IEnumerable { /// public CultureInfo CultureInfo { get; private set; } /// public virtual string this[string name] { get { var localizedString = GetOrNull(name); return localizedString?.Value; } set => _dictionary[name] = new LocalizedString(name, value, CultureInfo); } private readonly Dictionary _dictionary; /// /// Creates a new object. /// /// Culture of the dictionary public LocalizationDictionary(CultureInfo cultureInfo) { CultureInfo = cultureInfo; _dictionary = new Dictionary(); } /// public virtual LocalizedString GetOrNull(string name) { return _dictionary.TryGetValue(name, out var localizedString) ? localizedString : null; } /// public virtual IReadOnlyList GetAllStrings() { return _dictionary.Values.ToImmutableList(); } /// public virtual IEnumerator GetEnumerator() { return GetAllStrings().GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetAllStrings().GetEnumerator(); } protected bool Contains(string name) { return _dictionary.ContainsKey(name); } } }