| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using System.Collections.Generic;
- using System.Globalization;
- using System.Resources;
- using Abp.Configuration.Startup;
- using Abp.Dependency;
- using Castle.Core.Logging;
- using System.Collections;
- using System.Collections.Immutable;
- using System.Linq;
- namespace Abp.Localization.Sources.Resource
- {
- /// <summary>
- /// This class is used to simplify to create a localization source that
- /// uses resource a file.
- /// </summary>
- public class ResourceFileLocalizationSource : ILocalizationSource, ISingletonDependency
- {
- /// <summary>
- /// Unique Name of the source.
- /// </summary>
- public string Name { get; }
- /// <summary>
- /// Reference to the <see cref="ResourceManager"/> object related to this localization source.
- /// </summary>
- public ResourceManager ResourceManager { get; }
- private ILogger _logger;
- private ILocalizationConfiguration _configuration;
- /// <param name="name">Unique Name of the source</param>
- /// <param name="resourceManager">Reference to the <see cref="ResourceManager"/> object related to this localization source</param>
- public ResourceFileLocalizationSource(string name, ResourceManager resourceManager)
- {
- Name = name;
- ResourceManager = resourceManager;
- }
- /// <summary>
- /// This method is called by ABP before first usage.
- /// </summary>
- public virtual void Initialize(ILocalizationConfiguration configuration, IIocResolver iocResolver)
- {
- _configuration = configuration;
- _logger = iocResolver.IsRegistered(typeof(ILoggerFactory))
- ? iocResolver.Resolve<ILoggerFactory>().Create(typeof(ResourceFileLocalizationSource))
- : NullLogger.Instance;
- }
- public virtual string GetString(string name)
- {
- var value = GetStringOrNull(name);
- if (value == null)
- {
- return ReturnGivenNameOrThrowException(name, CultureInfo.CurrentUICulture);
- }
- return value;
- }
- public virtual string GetString(string name, CultureInfo culture)
- {
- var value = GetStringOrNull(name, culture);
- if (value == null)
- {
- return ReturnGivenNameOrThrowException(name, culture);
- }
- return value;
- }
- public string GetStringOrNull(string name, bool tryDefaults = true)
- {
- //WARN: tryDefaults is not implemented!
- return ResourceManager.GetString(name);
- }
- public string GetStringOrNull(string name, CultureInfo culture, bool tryDefaults = true)
- {
- //WARN: tryDefaults is not implemented!
- return ResourceManager.GetString(name, culture);
- }
- /// <summary>
- /// Gets all strings in current language.
- /// </summary>
- public virtual IReadOnlyList<LocalizedString> GetAllStrings(bool includeDefaults = true)
- {
- return GetAllStrings(CultureInfo.CurrentUICulture, includeDefaults);
- }
- /// <summary>
- /// Gets all strings in specified culture.
- /// </summary>
- public virtual IReadOnlyList<LocalizedString> GetAllStrings(CultureInfo culture, bool includeDefaults = true)
- {
- return ResourceManager
- .GetResourceSet(culture, true, includeDefaults)
- .Cast<DictionaryEntry>()
- .Select(entry => new LocalizedString(entry.Key.ToString(), entry.Value.ToString(), culture))
- .ToImmutableList();
- }
- protected virtual string ReturnGivenNameOrThrowException(string name, CultureInfo culture)
- {
- return LocalizationSourceHelper.ReturnGivenNameOrThrowException(
- _configuration,
- Name,
- name,
- culture,
- _logger
- );
- }
- }
- }
|