国产探花免费观看_亚洲丰满少妇自慰呻吟_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 要相同哦。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永城市| 屏南县| 威远县| 斗六市| 桐城市| 嘉祥县| 简阳市| 阿拉善盟| 永宁县| 威远县| 那坡县| 南涧| 岳普湖县| 高清| 中阳县| 临汾市| 梁河县| 临沭县| 海城市| 乌拉特前旗| 洱源县| 新巴尔虎左旗| 宕昌县| 千阳县| 建平县| 长春市| 闽清县| 永城市| 瓦房店市| 连云港市| 肇庆市| 沂南县| 安义县| 山西省| 刚察县| 民丰县| 田林县| 尖扎县| 安国市| 阜宁县| 南康市|