Asp.net Core 多語言本地化 一些自己的思路和做法

wangbin5542發表於2021-01-05

多語言,已成為必不可少的需求了,在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 是 Cultureuic 是 UICulture)

可以靈活控制當前顯示

//////////////////////////////////////////////////

參考資料:

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0#additional-resources

相關文章