1. 程式人生 > 其它 >ASP.NET Core之多語言配置

ASP.NET Core之多語言配置

介紹

支援多語言使網站可以覆蓋更廣泛的受眾。 ASP.NET Core 提供的服務和中介軟體可將網站本地化為不同的語言。

本次示例環境:vs2019、net5

配置

無需引用Nuget包即可實現以下功能。

注入容器

services.AddLocalization(t=>
{
t.ResourcesPath="Language";
});

啟用配置

varsupportedCultures=newList<CultureInfo>()
{
newCultureInfo("zh-CN"),
newCultureInfo("en-US")
};
app.UseRequestLocalization(newRequestLocalizationOptions
{
//這裡指定預設語言包
DefaultRequestCulture=newRequestCulture("en-US"),//為了測試配置預設語言英文
SupportedCultures=supportedCultures,
SupportedUICultures=supportedCultures
});

語言配置檔案

需要在根目錄新建一個資料夾,資料夾名字就是ResourcesPath的名字。資原始檔(resx結尾)存放路徑需要和使用的地方目錄結構一致。(右鍵資料夾>新增>新建項)

image-20210511223406104

語言包下的目錄結構和MVC對應,控制器對應控制器,檢視對應檢視。資原始檔命名方式為使用檔案的檔名稱加上語言程式碼。

image.png

讀取資原始檔

在控制器中使用,依賴注入資原始檔

[ApiController]
[Route("[controller]")]
publicclassHomeController:ControllerBase
{
privatereadonlyIStringLocalizer<HomeController>_localizer;

publicHomeController(IStringLocalizer<HomeController>localizer)
{
_localizer=localizer;
}

[HttpGet]
publicstringGet()
{
return_localizer["succeed"].Value;//如果找不到succeed的本地化值,那麼就返回字串“succeed”
}
}

測試

有多種方法可以告訴程式需要使用哪一個語言檔案,下面只說常見的使用,還支援自定義 。

預設輸出

HTTP報文

和常見的請求一樣新增Accept-Language請求頭即可

Accept-Language:zh-CN

Cookie

預設使用cookie名稱.AspNetCore.Culture,值是

c=zh-CN|uic=zh-CN
c=zh-CN
uic=zh-CN

c是Culture,uic是UICulture

URL引數

三種寫法,效果一樣

?culture=zh-CN&ui-culture=zh-CN
?culture=zh-CN
?ui-culture=zh-CN

參考文件

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