/// <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;
        }
Пример #3
0
        /// <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));
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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;
        }