LocalizationDictionary.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Collections.Immutable;
  4. using System.Globalization;
  5. namespace Abp.Localization.Dictionaries
  6. {
  7. /// <summary>
  8. /// Represents a simple implementation of <see cref="ILocalizationDictionary"/> interface.
  9. /// </summary>
  10. public class LocalizationDictionary : ILocalizationDictionary, IEnumerable<LocalizedString>
  11. {
  12. /// <inheritdoc/>
  13. public CultureInfo CultureInfo { get; private set; }
  14. /// <inheritdoc/>
  15. public virtual string this[string name]
  16. {
  17. get
  18. {
  19. var localizedString = GetOrNull(name);
  20. return localizedString?.Value;
  21. }
  22. set => _dictionary[name] = new LocalizedString(name, value, CultureInfo);
  23. }
  24. private readonly Dictionary<string, LocalizedString> _dictionary;
  25. /// <summary>
  26. /// Creates a new <see cref="LocalizationDictionary"/> object.
  27. /// </summary>
  28. /// <param name="cultureInfo">Culture of the dictionary</param>
  29. public LocalizationDictionary(CultureInfo cultureInfo)
  30. {
  31. CultureInfo = cultureInfo;
  32. _dictionary = new Dictionary<string, LocalizedString>();
  33. }
  34. /// <inheritdoc/>
  35. public virtual LocalizedString GetOrNull(string name)
  36. {
  37. return _dictionary.TryGetValue(name, out var localizedString) ? localizedString : null;
  38. }
  39. /// <inheritdoc/>
  40. public virtual IReadOnlyList<LocalizedString> GetAllStrings()
  41. {
  42. return _dictionary.Values.ToImmutableList();
  43. }
  44. /// <inheritdoc/>
  45. public virtual IEnumerator<LocalizedString> GetEnumerator()
  46. {
  47. return GetAllStrings().GetEnumerator();
  48. }
  49. IEnumerator IEnumerable.GetEnumerator()
  50. {
  51. return GetAllStrings().GetEnumerator();
  52. }
  53. protected bool Contains(string name)
  54. {
  55. return _dictionary.ContainsKey(name);
  56. }
  57. }
  58. }