/// <summary> /// Setup the asynchronous StringLocalizer. /// </summary> /// <param name="loadingTask">Asynchronous loading task.</param> /// <param name="cultureInfo">The associated culture info.</param> /// <param name="localizerFactory">Localizer Internal Factory.</param> /// <param name="loadingLocalizer">Localizer to use while loading asynchronously.</param> public JsonStringLocalizerAsync(Task <IReadOnlyDictionary <string, string>?> loadingTask, CultureInfo cultureInfo, IJsonStringLocalizerFactoryInternal localizerFactory, IStringLocalizer loadingLocalizer) { this.loadingTask = loadingTask; this.cultureInfo = cultureInfo; this.loaded = false; this.localizerFactory = localizerFactory ?? throw new ArgumentNullException(nameof(localizerFactory)); if (this.loadingTask.Status == TaskStatus.RanToCompletion) { var map = this.loadingTask.Result; if (map != null) { this.stringLocalizer = new JsonStringLocalizer(map, this.cultureInfo, this.localizerFactory); } else { this.stringLocalizer = new NullStringLocalizer(cultureInfo, this.localizerFactory, true); } this.loaded = true; } else { this.stringLocalizer = loadingLocalizer; lock (PendingAsyncLocalizers) { PendingAsyncLocalizers.Add(this.stringLocalizerGuid, this); } } }
/// <summary> /// Setup with target culture. /// </summary> /// <param name="cultureInfo">The target culture.</param> /// <param name="localizerFactory">Localizer Internal Factory.</param> /// <param name="resourceNotFound">Tells if resourceNotFound property must be set.</param> public NullStringLocalizer(CultureInfo cultureInfo, IJsonStringLocalizerFactoryInternal localizerFactory, bool resourceNotFound) { this.localizerFactory = localizerFactory ?? throw new ArgumentNullException(nameof(localizerFactory)); this.cultureInfo = cultureInfo; this.resourceNotFound = resourceNotFound; }
/// <summary> /// Setup with the given string map. /// </summary> /// <param name="stringMap">The string map to use to resolve localization.</param> /// <param name="cultureInfo">The associated culture info.</param> /// <param name="localizerFactory">Localizer Internal Factory.</param> public JsonStringLocalizer(IReadOnlyDictionary <string, string> stringMap, CultureInfo cultureInfo, IJsonStringLocalizerFactoryInternal localizerFactory) { this.stringMap = stringMap; this.cultureInfo = cultureInfo; this.localizerFactory = localizerFactory ?? throw new ArgumentNullException(nameof(localizerFactory)); }
/// <summary> /// Setup the proxy with the factory create handler and the cultureInfoService. /// </summary> /// <param name="cultureInfoService">Culture info service to get current culture.</param> /// <param name="localizerFactory">Localizer Internal Factory.</param> public StringLocalizerProxy(ICultureInfoService cultureInfoService, IJsonStringLocalizerFactoryInternal localizerFactory) { this.localizerFactory = localizerFactory ?? throw new ArgumentNullException(nameof(localizerFactory)); this.cultureInfoService = cultureInfoService; this.cultureInfo = this.cultureInfoService.CurrentUICulture; this.stringLocalizer = localizerFactory.CreateStringLocalizer(this.cultureInfo); }
/// <summary> /// Setup the ConstStringLocalizer with the constant value /// </summary> /// <param name="constValue">Constant value to use.</param> /// <param name="localizerFactory">Localizer Internal Factory.</param> public ConstStringLocalizer(string constValue, IJsonStringLocalizerFactoryInternal localizerFactory) { this.localizerFactory = localizerFactory ?? throw new ArgumentNullException(nameof(localizerFactory)); this.constValue = constValue; }