// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddSingleton(this.Configuration); services.AddMvc(); services.AddMemoryCache(); string database = this.Configuration["database"]; if ("sqlite".Equals(database, StringComparison.CurrentCultureIgnoreCase)) { services.AddEntityFrameworkSqlite() .AddDbContext <Core.Data.BlogContext>(opt => { opt.UseSqlite(this.Configuration["connectionString"], builder => { builder.MigrationsAssembly("DotNetBlog.Web"); }); }); } else if ("sqlserver".Equals(database, StringComparison.CurrentCultureIgnoreCase)) { services.AddEntityFrameworkSqlServer() .AddDbContext <Core.Data.BlogContext>(opt => { opt.UseSqlServer(this.Configuration["connectionString"], builder => { builder.MigrationsAssembly("DotNetBlog.Web"); builder.UseRowNumberForPaging(); }); }); } services.AddBlogService(); AutoMapperConfig.Configure(); }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; }); services.AddSingleton(this.Configuration); services.AddMvc() .AddViewLocalization( LanguageViewLocationExpanderFormat.Suffix, opts => { opts.ResourcesPath = "Resources"; }) .AddDataAnnotationsLocalization(); services.AddMemoryCache(); string database = this.Configuration["database"]; if ("sqlite".Equals(database, StringComparison.CurrentCultureIgnoreCase)) { services.AddEntityFrameworkSqlite() .AddDbContext <Core.Data.BlogContext>(opt => { opt.UseSqlite(this.Configuration["connectionString"], builder => { builder.MigrationsAssembly("DotNetBlog.Web"); }); }); } else if ("sqlserver".Equals(database, StringComparison.CurrentCultureIgnoreCase)) { services.AddEntityFrameworkSqlServer() .AddDbContext <Core.Data.BlogContext>(opt => { opt.UseSqlServer(this.Configuration["connectionString"], builder => { builder.MigrationsAssembly("DotNetBlog.Web"); builder.UseRowNumberForPaging(); }); }); } services.AddBlogService(); AutoMapperConfig.Configure(); services.Configure <RequestLocalizationOptions>( opts => { var supportedCultures = new List <CultureInfo> { new CultureInfo("en-GB"), new CultureInfo("zh-CN") }; opts.DefaultRequestCulture = new RequestCulture("en-GB"); // Formatting numbers, dates, etc. opts.SupportedCultures = supportedCultures; // UI strings that we have localized. opts.SupportedUICultures = supportedCultures; //Uncomment for change language by user //opts.RequestCultureProviders.Add(new CookieRequestCultureProvider()); //opts.RequestCultureProviders.Add(new AcceptLanguageHeaderRequestCultureProvider()); //opts.RequestCultureProviders.Add(new QueryStringRequestCultureProvider() { QueryStringKey = "lang", UIQueryStringKey = "ui-lang" }); opts.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context => { var settingService = context.RequestServices.GetService <Core.Service.SettingService>(); // My custom request culture logic return(Task.Run(() => new ProviderCultureResult(settingService.Get().Language))); })); }); services.Configure <RazorViewEngineOptions>(options => { options.ViewLocationExpanders.Add(new ViewEngines.ThemeViewEngine()); }); }