IT教程 ·

ASP.NET Core MVC 中实现中英文切换

【WPF学习】第四十七章 WriteableBitmap类

哈喽..大家好 良久没有更新了,本日就来一篇近来开发用到的功用,那就是中英文切换,这个实际上也不是嵬峨上,先说一下道理,在.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 要雷同哦。

ASP.NET Core MVC 中实现中英文切换 IT教程 第1张

就如今我们在视图中最上面导入包,然后对应字典就能够了。

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

<section class="copyright"> @Localizer["section1"]  <a href="https://github.com/zaranetCore/amusinghoS"> | GitHub</a></section>

你一定晓得该怎样办了,对的你能够去修正Cookies来操纵当前httpContext中的合约,但只管怎样,我们只是重写了cookies的,还没有重写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>

好吧,迎接列位同砚把重写url的要领写写出来,复兴在本篇文章中..我们看一下结果,好的就如许吧..

解释为什么不能依赖fail-fast

参与评论