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 |
using Microsoft.AspNetCore.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; 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 => { await context.Response.WriteAsync("<h1>QueryStringRequestCultureProvider</h1><p>We are using query string to switch the request culture.</p>"); var requestCulture = context.Features.Get<IRequestCultureFeature>().RequestCulture; //if (requestCulture.Culture.TwoLetterISOLanguageName != "fr") // await context.Response.WriteAsync($"<a href=\"/?culture=fr-FR&ui-culture=fr-FR\">Switch to French</a><br/>"); //else if (requestCulture.Culture.TwoLetterISOLanguageName != "en") // await context.Response.WriteAsync($"<a href=\"/?culture=en-US&ui-culture=en-US\">Switch to English</a><br/>"); //await context.Response.WriteAsync($@" // Request Culture: {requestCulture.Culture} <br/> // Localized strings: {local["Hello"]} {local["Goodbye"]} {local["Yes"]} {local["No"]} // "); await context.Response.WriteAsync($@" <a href=""/?culture=fr-FR&ui-culture=fr-FR"">Culture FR - UI Culture GB</a><br/> <a href=""/?culture=en-US&ui-culture=en-US"">Culture US - UI Culture US</a><br/> <br/> Request Culture: {requestCulture.Culture} <br/> Today's Date (Culture): {DateTime.Now.ToString()}<br/><br/> Request UI Culture: {requestCulture.UICulture}<br/> Localized strings (UI Culture): {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"); } } |
:: resources :: Common.fr-FR.resx
Goodbye Au Revoir
Hello Bonjour
No Non
Yes Oui
:: Goodbye Howdy :: Common.en-US.resx
Hello So long
No Yah
Yes Nope
결과 :
QueryStringRequestCultureProvider
We are using query string to switch the request culture.
Culture FR – UI Culture GB
Culture US – UI Culture US
Request Culture: fr-FR
Today’s Date (Culture): 25/09/2019 15:19:06
Request UI Culture: fr-FR
Localized strings (UI Culture): Bonjour Au Revoir Oui Non
주석 결과 :
QueryStringRequestCultureProvider
We are using query string to switch the request culture.
Switch to English
Request Culture: fr-FR
Localized strings: Bonjour Au Revoir Oui Non
QueryStringRequestCultureProvider
We are using query string to switch the request culture.
Switch to French
Request Culture: en-US
Localized strings: Howdy So long Yah Nope