1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
pNetCore.Hosting; //IWebHostBuilder using Microsoft.AspNetCore.Builder; //IApplicationBuilder using Microsoft.AspNetCore.Http; //WriteAsync using Microsoft.AspNetCore; //webHost using Microsoft.Extensions.Logging;//ILoggerFactory using Microsoft.Extensions.DependencyInjection; // IServiceCollection using System.Globalization; using System.Collections.Generic; using Microsoft.AspNetCore.Localization; using Microsoft.Extensions.Localization; using System; namespace WebApplication1 { public class Startup { public Startup(IHostingEnvironment env, ILoggerFactory logger) { //These are two services available at constructor } public void ConfigureServices(IServiceCollection services) { services.AddLocalization(optipns => optipns.ResourcesPath = "resources"); // resources path } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory logger, IStringLocalizerFactory stringLocalizerFactory) { var local = stringLocalizerFactory.Create("Common", typeof(Program).Assembly.FullName); var supportedCultures = new List<CultureInfo> { new CultureInfo("fr-FR"), new CultureInfo("en-US") }; var options = new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("fr-FR"), SupportedCultures = supportedCultures, SupportedUICultures = supportedCultures }; app.UseRequestLocalization(options); app.Run(async context => { var languageSwitch = context.Request.Query["lang"]; try { if (languageSwitch == "fr") { var val = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture("fr-FR")); context.Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, val); context.Response.Redirect("/"); return; } else if (languageSwitch == "en") { var val = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture("en-US")); context.Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, val); context.Response.Redirect("/"); return; } } catch (Exception ex) { await context.Response.WriteAsync($"error {ex.Message}"); } await context.Response.WriteAsync($"<h1>CookieRequestCultureProvider</h1><p>We are using a cookie named \"{CookieRequestCultureProvider.DefaultCookieName}\" to switch the request culture.</p>"); var requestCulture = context.Features.Get<IRequestCultureFeature>().RequestCulture; await context.Response.WriteAsync($@" Click <a href=""/?lang=fr"">here</a> for French cookie and <a href=""/?lang=en"">here</a> for English cookie.<br/><br/> Request Culture: {requestCulture.Culture} <br/> Localized strings: {local["Hello"]} {local["Goodbye"]} {local["Yes"]} {local["No"]} "); }); } } public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseEnvironment("Development"); } } |
결과 :
CookieRequestCultureProvider
We are using a cookie named “.AspNetCore.Culture” to switch the request culture.
Click here for French cookie and here for English cookie.
Request Culture: fr-FR
Localized strings: Bonjour Au Revoir Oui Non