/// <summary>
        ///  Adds a I18n Text service to the specified Microsoft.Extensions.DependencyInjection.IServiceCollection.
        /// </summary>
        /// <param name="services">The Microsoft.Extensions.DependencyInjection.IServiceCollection to add the service to.</param>
        public static IServiceCollection AddI18nText(this IServiceCollection services, Action <I18nTextOptions> configure = null)
        {
            var options = new I18nTextOptions
            {
                GetInitialLanguageAsync     = HelperScript.DefaultGetInitialLanguageAsync,
                PersistCurrentLanguageAsync = HelperScript.DefaultPersistCurrentLanguageAsync,
                IsWasm = DefaultIsWasm,
                ConfigureHttpClient = DefaultConfigureHttpClient
            };

            configure?.Invoke(options);

            if (options.IsWasm() && options.ConfigureHttpClient != null)
            {
                services.AddHttpClient(options.HttpClientName, (sp, client) =>
                {
                    options.ConfigureHttpClient.Invoke(sp, client);
                });
            }

            services.TryAddSingleton(serviceProvider => new I18nTextRepository(serviceProvider, options));
            services.TryAddScoped <HelperScript>();
            services.TryAddScoped(serviceProvider =>
            {
                var i18ntext = new I18nText.I18nText(serviceProvider, options);
                i18ntext.InitializeCurrentLanguage();
                return(i18ntext);
            });
            return(services);
        }
Esempio n. 2
0
 /// <summary>
 ///  Adds a I18n Text service to the specified Microsoft.Extensions.DependencyInjection.IServiceCollection.
 /// </summary>
 /// <param name="services">The Microsoft.Extensions.DependencyInjection.IServiceCollection to add the service to.</param>
 public static IServiceCollection AddI18nText <TStartup>(this IServiceCollection services, Action <I18nTextOptions> configure = null) where TStartup : class
 {
     services.AddSingleton <BlazorPathInfoService>();
     services.AddScoped(serviceProvider =>
     {
         var options = new I18nTextOptions
         {
             GetInitialLanguageAsync     = I18nText.I18nText.GetInitialLanguageAsync,
             PersistCurrentLanguageAsync = I18nText.I18nText.PersistCurrentLanguageAsync,
         };
         configure?.Invoke(options);
         return(new I18nText.I18nText(typeof(TStartup), serviceProvider, options));
     });
     return(services);
 }
Esempio n. 3
0
        internal static async ValueTask DefaultPersistCurrentLanguageAsync(IServiceProvider serviceProvider, string langCode, I18nTextOptions options)
        {
            var helperScript = serviceProvider.GetRequiredService <HelperScript>();
            var jsRuntime    = await helperScript.GetJSRuntimeAsync();

            await jsRuntime.InvokeVoidAsync(Namespace + ".setCurrentLang", langCode, options.PersistanceLevel);
        }
Esempio n. 4
0
        internal static async ValueTask <string> DefaultGetInitialLanguageAsync(IServiceProvider serviceProvider, I18nTextOptions options)
        {
            var helperScript = serviceProvider.GetRequiredService <HelperScript>();
            var jsRuntime    = await helperScript.GetJSRuntimeAsync();

            return(await jsRuntime.InvokeAsync <string>(Namespace + ".initLang", options.PersistanceLevel));
        }
Esempio n. 5
0
 private void GetConfigure(I18nTextOptions options)
 {
     options.GetInitialLanguageAsync = async(provider, textOptions) => await Task.Run(() => "en-US");
 }
Esempio n. 6
0
        internal static async ValueTask DefaultPersistCurrentLanguageAsync(IServiceProvider serviceProvider, string langCode, I18nTextOptions options)
        {
            var helperScript = serviceProvider.GetRequiredService <HelperScript>();
            var invoker      = await helperScript.EnsureScriptEnabledAsync <object>();

            if (invoker == null)
            {
                return;
            }
            await invoker.Invoke(Namespace + ".setCurrentLang", langCode, options.PersistanceLevel);
        }
Esempio n. 7
0
        internal static async ValueTask <string> DefaultGetInitialLanguageAsync(IServiceProvider serviceProvider, I18nTextOptions options)
        {
            var helperScript = serviceProvider.GetRequiredService <HelperScript>();
            var invoker      = await helperScript.EnsureScriptEnabledAsync <string>();

            if (invoker == null)
            {
                return("en-US");
            }
            return(await invoker.Invoke(Namespace + ".initLang", options.PersistanceLevel));
        }