/// <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); }
/// <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); }
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); }
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)); }
private void GetConfigure(I18nTextOptions options) { options.GetInitialLanguageAsync = async(provider, textOptions) => await Task.Run(() => "en-US"); }
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); }
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)); }