ASP.NET Core 6.0 本地化

多語言/國際化/全球化&本地化,這些詞彙表達的是同一個意思,即系統同時支持多種不同國家的語言,我們用本地化這個詞來表達。在ASP.NET Core 6.0中可以很方便的做到,這篇博客也是記錄一下主要的步驟,最後會放出一個demo供參考。注意我們的版本是.net Core 6.0,所以下面的步驟是基於這個版本。

一、添加本地化服務

builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.AddMvc()
     .AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
     .AddDataAnnotationsLocalization();

builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[] { "zh-CN", "en-US" };
    options.SetDefaultCulture(supportedCultures[0])
        .AddSupportedCultures(supportedCultures)
        .AddSupportedUICultures(supportedCultures);
});

支持多語言,我們一般使用資源文件,即resx格式的文件存儲,並統一放置在項目的Resources目錄下。這裏我們使用了zh-CN和en-US兩種語言,可以根據需要自行添加更多的其它語言。

二、處理本地化中間件請求

//處理本地化中間件請求
var supportedCultures = new[] { "zh-CN", "en-US" };
var localizationOptions = new RequestLocalizationOptions().SetDefaultCulture(supportedCultures[0])
    .AddSupportedCultures(supportedCultures)
    .AddSupportedUICultures(supportedCultures);
app.UseRequestLocalization(localizationOptions);

三、準備資源文件

按照如下圖的目錄結構準備相應視圖的資源文件

資源文件的內容示例:

四、視圖使用資源文件

1. 注入視圖本地化中間件

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

2. 使用中間件

@Localizer["title"]

 

如上就實現了本地化的功能,非常簡單。當然控制器部分內容的本地化跟視圖操作一樣的,可通過注入IStringLocalizer實現。在Resources文件夾中創建Controllers文件夾,分目錄存放即可。

 

附後放出一個demo項目,供參考:

鏈接:https://pan.baidu.com/s/1Nym4GQjwFBAHKWt2xZjQuQ 
提取碼:8eb6

 

參考資料:

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-6.0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章