您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎么在ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
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)的,寫入了一些規(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 提供的,我們繼承它重寫了它的抽象類,在其中獲取了httpContext的Cookies值,然后進(jìn)行判斷,如果沒有咱們就不給它進(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 href="https://github.com/zaranetCore/amusinghoS" rel="external nofollow" > | GitHub</a></section>
你肯定知道該怎么辦了,對(duì)的你可以去修改Cookies來(lái)操作當(dāng)前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>
以上就是怎么在ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。