avatar

目录
DotnetCore多语言实现

.NetCore 实现多语言

ASP.NET Core中提供了一些本地化服务和中间件,可将网站本地化为不同的语言文化。

ASP.NET Core中我们可以使用Microsoft.AspNetCore.Localization库来实现本地化

创建程序

创建Web应用程序(模型视图控制器)

配置Startup类

在Startup类的 ConfigureServices方法中使用services.AddLocalization添加本地化服务

Code
1
2
3
4
5
6
7
8
9

//添加资源文件夹
services.AddLocalization(o =>
{
o.ResourcesPath = "Resources";
});

//View中使用本地化
services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);

在Startup类的 Configure方法中添加本地化中间件

Code
1
2
3
4
5
6
7
8
9
10
11
12
13

//添加语言包
IList supportedCultures = new List
{
new CultureInfo("en-US"),
new CultureInfo("zh-CN"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
  • app.UseRequestLocalization必须放置app.UseMvc之前
  • DefaultRequestCulture参数指定了默认的语言文化,即用户不指定任何文化时的默认语言文化
  • SupportedCultures和SupportedUICultures是指定当前应用支持的所有语言文化

添加资源文件

控制器注入服务:IStringLocalizer

调用资源:_localizer["Hello"]

默认的语言文化提供器

ASP.NET Core的本地化中间件默认支持3种语言文化提供器

  • URL中的查询字符串
    • ?culture=zh-CN&ui-culture=zh-CN
    • ?culture=zh-CN
    • ?ui-culture=zh-CN
  • Cookie
  • 请求头

代码详见:https://github.com/HJY-dev/LocalizationSample

文章作者: HJY
文章链接: https://hjy-dev.github.io/2020/03/02/DotnetCore%E5%A4%9A%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0/
版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明来自 Kiven Blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论