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);
}
}
}