欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼

 更新時(shí)間:2020年02月23日 10:32:05   作者:張子浩  
這篇文章主要介紹了ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

  在我的項(xiàng)目中,我是這樣操作的,你想用別的方式,也可以看文檔自己去搞。這個(gè)已經(jīng)不是什么新鮮的東西了,只是網(wǎng)上的實(shí)現(xiàn)有些問(wèn)題,不容易明白。

  我們無(wú)需任何Nuget包,因?yàn)樗窃贛icrosoft.AspNetCore.Mvc.Localization中,那么我們直接在.NET Core 框架中添加 Localization 服務(wù)。

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();
    }

  嗯,這個(gè)代碼是.NET Core 3.1 的 應(yīng)該不會(huì)有太大區(qū)別吧?那個(gè)X_DOVERequestCultureProvider是我們自定義實(shí)現(xiàn)的,寫(xiě)入了一些規(guī)則,我們看一下。

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));
    }
  }

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

  對(duì),別忘記了要在Configure中使用中間價(jià)

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

  隨后我們應(yīng)該定義我們的配置文件,創(chuàng)建一個(gè)文件夾,放進(jìn)去,它應(yīng)當(dāng)和上面Startup中的文件夾相同,隨后創(chuàng)建對(duì)應(yīng)的視圖位置,一個(gè)英文一個(gè)中文,一定要注意后面對(duì)應(yīng)的en-Us 和 zh-CN 要相同哦。

  就現(xiàn)在我們?cè)谝晥D中最上面導(dǎo)入包,然后對(duì)應(yīng)字典就可以了。

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer

<section class="copyright"> @Localizer["section1"] <a  rel="external nofollow" > | GitHub</a></section>

  你肯定知道該怎么辦了,對(duì)的你可以去修改Cookies來(lái)操作當(dāng)前httpContext中的合約,但盡管如何,我們只是重寫(xiě)了cookies的,還沒(méi)有重寫(xiě)url的,

<script>
  $(function () {
    $("#language").change(function (e) {
      var opt = $("#language").val();
      if (opt == 1) {
        document.cookie = 'CULTURE=zh-CN';
        location.reload();
      } else if(opt == 2) {
        document.cookie = 'CULTURE=en-US';
        location.reload();
      }
    });
  });
</script>

  好吧,歡迎各位同學(xué)把重寫(xiě)url的方法寫(xiě)寫(xiě)出來(lái),回復(fù)在本篇文章中..我們看一下效果,好的就這樣吧..

到此這篇關(guān)于ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼的文章就介紹到這了,更多相關(guān)ASP.NET Core MVC 中英文切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論