体验 ASP.NET Core 中的多语言支持(Localization)
2017-08-29 22:39
651 查看
首先在 Startup 的 ConfigureServices 中添加 AddLocalization 与 AddViewLocalization 以及配置 RequestLocalizationOptions (这里假设使用英文与中文):
在 Startup 的 Configure() 方法中应用 RequestLocalizationOptions :
然后在 _Layout.cshtml 视图中通过 IViewLocalizer 接口以多语言的方式显示页面标题的后缀:
接着在 ASP.NET Core Web 项目中创建 Resources 文件夹,在其中分别添加 Views.Shared._Layout.en-Us.resx 与 Views.Shared._Layout.zh-CN.resx 文件, Views.Shared._Layout.resx 文件,并添加 "SiteTitle" 所对应的语句文字:
1)Views.Shared._Layout.en-Us.resx
2)Views.Shared._Layout.zh-CN.resx
这时运行 ASP.NET Core 站点,就会根据浏览器的语言设置(Accept-Language header)、或者 culture 查询参数、或者 .AspNetCore.Culture Cookie 值显示对应语言的文字:
需要注意的地方:千万不要添加不带语言名称的 Views.Shared._Layout.en-Us.resx ,不然添加代码语言名称的 .resx 文件时会遇到 "Custom tool ResXFileCodeGenerator failed to produce an output for input file ... but did not log a specific error." 问。
一定要看的参考文档:Globalization and localization
public void ConfigureServices(IServiceCollection services) { services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix); services.Configure<RequestLocalizationOptions>( opts => { var supportedCultures = new List<CultureInfo> { new CultureInfo("en-US"), new CultureInfo("zh-CN") }; opts.SupportedCultures = supportedCultures; opts.SupportedUICultures = supportedCultures; }); }
在 Startup 的 Configure() 方法中应用 RequestLocalizationOptions :
var requestLocalizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value; app.UseRequestLocalization(requestLocalizationOptions);
然后在 _Layout.cshtml 视图中通过 IViewLocalizer 接口以多语言的方式显示页面标题的后缀:
@using Microsoft.AspNetCore.Mvc.Localization @inject IViewLocalizer Localizer <!DOCTYPE html> <html> <head> <title>@ViewData["Title"] - @Localizer["SiteTitle"]</title> </head> <body> </body> </html>
接着在 ASP.NET Core Web 项目中创建 Resources 文件夹,在其中分别添加 Views.Shared._Layout.en-Us.resx 与 Views.Shared._Layout.zh-CN.resx 文件, Views.Shared._Layout.resx 文件,并添加 "SiteTitle" 所对应的语句文字:
1)Views.Shared._Layout.en-Us.resx
2)Views.Shared._Layout.zh-CN.resx
这时运行 ASP.NET Core 站点,就会根据浏览器的语言设置(Accept-Language header)、或者 culture 查询参数、或者 .AspNetCore.Culture Cookie 值显示对应语言的文字:
需要注意的地方:千万不要添加不带语言名称的 Views.Shared._Layout.en-Us.resx ,不然添加代码语言名称的 .resx 文件时会遇到 "Custom tool ResXFileCodeGenerator failed to produce an output for input file ... but did not log a specific error." 问。
一定要看的参考文档:Globalization and localization
相关文章推荐
- 体验 ASP.NET Core 中的多语言支持(Localization)
- 详解ASP.NET Core 中的多语言支持(Localization)
- ASP.NET MVC的Localization本地化多语言支持
- ASP.NET MVC的Localization本地化多语言支持
- 晚上无聊象征性收取了网友100元辛苦费,实现支持多语言功能的XML语言包版的C#的ASP.NET多语言支持例子程序
- ASP.NET WEB页面多语言支持解决方案
- 艾伟_转载:超级简单:ASP.NET Localization (本地化,多语言)
- ASP.NET WEB页面多语言支持解决方案(转)
- ASP .NET CORE 根据环境变量支持多个 appsettings.json
- 备忘录:asp.net 用户控件 多语言支持 多工程 i18n
- Asp.net Core WebApi 支持json/xml格式的数据返回
- 重新过一遍ASP.NET 2.0(C#)(5) - Localization(本地化,多语言)
- 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图
- ASP.NET全球化与本地化 c#多国语言的支持 (项目支持多国语言的开发)
- Taurus.MVC 支持Asp.Net Core 的过程
- asp.net 支持多语言站点的实现方法
- asp.net 支持多语言站点
- 晚上无聊象征性收取了网友100元辛苦费,实现支持多语言功能的XML语言包版的C#的ASP.NET多语言支持例子程序
- 微软推出ASP.NET Core 2.0,并支持更新Visual Studio 2017
- 关于ASP.NET全球化/本地化(多语言)的一些资源( resource about ASP.NET Localization )