国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET Core MVC 中實現中英文切換的示例代碼

2024-07-10 12:49:44
字體:
來源:轉載
供稿:網友

  哈嘍..大家好 很久沒有更新了,今天就來一篇最近開發用到的功能,那就是中英文切換,這個實際上也不是高大上,先說一下原理,在.NET Core框架中給我們提供了全球化的類,叫做Localization,其官方的文檔地址傳送門。

  在我的項目中,我是這樣操作的,你想用別的方式,也可以看文檔自己去搞。這個已經不是什么新鮮的東西了,只是網上的實現有些問題,不容易明白。

  我們無需任何Nuget包,因為它是在Microsoft.AspNetCore.Mvc.Localization中,那么我們直接在.NET Core 框架中添加 Localization 服務。

public void ConfigureServices(IServiceCollection services)    {      services.AddLocalization(options => options.ResourcesPath = "Resources");      services.AddMvc()        .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);      services.Configure<RequestLocalizationOptions>(opts =>        {          var supportedCultures = new List<CultureInfo>{            new CultureInfo("en-US"),            new CultureInfo("zh-CN")};            opts.SupportedCultures = supportedCultures;            opts.SupportedUICultures = supportedCultures;             opts.RequestCultureProviders = new List<IRequestCultureProvider>{              new X_DOVERequestCultureProvider()            };        });      services.AddControllersWithViews();    }

  嗯,這個代碼是.NET Core 3.1 的 應該不會有太大區別吧?那個X_DOVERequestCultureProvider是我們自定義實現的,寫入了一些規則,我們看一下。

public class X_DOVERequestCultureProvider : RequestCultureProvider  {    public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)    {      var CULTURE_String = "CULTURE";      var CultureCookie = httpContext.Request.Cookies[CULTURE_String]?.ToString() ?? "";      if (string.IsNullOrWhiteSpace(CultureCookie))      {        CultureCookie = "zh-CN";        httpContext.Response.Cookies.Append(key: CULTURE_String, value: CultureCookie, options: new CookieOptions() { Expires = DateTime.Now.AddYears(1) });      }      return Task.FromResult(new ProviderCultureResult(CultureCookie));    }  }

  首先我們應該知道RequestCultureProvider,它是一個在框架自身包括的 .net core 提供的,我們繼承它重寫了它的抽象類,在其中獲取了httpContext的Cookies值,然后進行判斷,如果沒有咱們就不給它進行一個輸出了,否則它還是我們的zh-CN 就是中文。

  對,別忘記了要在Configure中使用中間價

 app.UseRequestLocalization(        options:app.ApplicationServices        .GetService<IOptions<RequestLocalizationOptions>>().Value);

  隨后我們應該定義我們的配置文件,創建一個文件夾,放進去,它應當和上面Startup中的文件夾相同,隨后創建對應的視圖位置,一個英文一個中文,一定要注意后面對應的en-Us 和 zh-CN 要相同哦。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 格尔木市| 靖远县| 葫芦岛市| 南召县| 吕梁市| 沂南县| 岳普湖县| 保康县| 密云县| 顺平县| 东海县| 聂拉木县| 铜川市| 兴隆县| 娄烦县| 洛阳市| 锡林郭勒盟| 德昌县| 溆浦县| 屏边| 肃宁县| 崇州市| 长葛市| 永新县| 麟游县| 滁州市| 女性| 洛隆县| 惠来县| 金华市| 唐海县| 宁国市| 永德县| 淳安县| 万宁市| 宜都市| 扎兰屯市| 吉水县| 巴林右旗| 皋兰县| 大渡口区|