多語言,已成為必不可少的需求了,在Asp.net Core中解決起來很方便,實作一個多語言的網站只要幾分鐘,
1.環境:VS2019+Asp.net Core 5(適用于3.1,其實就是追個新)
2.新建專案

因為是一個空專案,所以為了多點內容,就加入了一些基架內容,添加了Identity的自動生成內容
如何生成:https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-5.0&tabs=visual-studio
看這里吧,不多說了,就是添加一些登陸頁面之類的
正好它是英文滴
2.現在我們來添加多語言
打開組態檔appsettings.json,在組態檔中添加如下內容,其實這是把語言寫在了配置中,這樣方便以后操作,可以自己后臺操作,也可以用代碼操作,
"Localization": { "CultureInfo": "en-US,zh-CN", "Default": "en-US"
3.打開startup.cs檔案
在ConfigureServices中添加如下配置
services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization();
在中間件注冊中,添加如下代碼(注意:這個應該在app.UseStaticFiles之前注冊,不然會沒反應),這里正好讀的是組態檔里的支持的語言和默認語言,查了一下資料,這里的默認語言的意思是
當沒有本地檔案時,會以什么語言顯示,也就是如果有本地語言,會加載支持的語言
//Localization var supportedCultures = Configuration["Localization:CultureInfo"].Split(","); var localizationOptions = new RequestLocalizationOptions().SetDefaultCulture(Configuration["Localization:Default"]) .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); app.UseRequestLocalization(localizationOptions);
4.前端操作,打開_ViewImports.cshtml,添加對本地化的參考,共兩行
@using AquaWebCore @using AquaWebCore.Models @using Microsoft.AspNetCore.Mvc.Localization @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @inject IViewLocalizer Localizer
下面我們來修改一下前端頁面,Views目錄中的任意檔案,就先拿Home開刀吧
@{ ViewData["Title"] = @Localizer["Home Page"]; } <div class="text-center"> <h1 class="display-4">@Localizer["Welcome"]</h1> <p>@Localizer["Learn aboutLearn about"]<a href="https://docs.microsoft.com/aspnet/core">@Localizer["building Web apps with ASP.NET Core"]</a>.</p> </div>
其實就是在每一個文本前加上@Localizer
5 .添加資源檔案
在Resources目錄下建立一個和程式目錄相同的資源檔案,在這個檔案命名上有講究,Resources\Views\Home\Index.zh-CN.resx,就是檔案名.地區名.resx

6.編輯資源檔案

7.運行一下,多語言 就顯示了

8.其它配置
瀏覽器選擇:http://localhost:5000/?culture=zh-CN
js cookie操作:c=zh-CN|uic=en-US(其中 c 是 Culture,uic 是 UICulture)
可以靈活控制當前顯示
//////////////////////////////////////////////////
參考資料:
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0#additional-resources
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/245002.html
標籤:.NET技术
