5.全球化本地化
全球化:为了应用程序支持不同文化而设计的
本地化:本地化是针对一个特定的文化/区域
Microsoft.AspNetCore.Mvc.Localizaion
Microsoft.Extensions.Localizaion
网站要走上世界,每个国家有自己的语言文化,比如币种、日期时间格式和数字表示
等。
- 让应用程序内容本地化
- 为不同的文化和语言提供本地化资源包
- 在每个请求中实现语言/文化切换策略
内容本地化 IstringLocalizer ,IHtmlLocalizer
{Microsoft.AspNetCore.Localization.QueryStringRequestCultureProvider}
{Microsoft.AspNetCore.Localization.CookieRequestCultureProvider}
{Microsoft.AspNetCore.Localization.AcceptLanguageHeaderRequestCultureProvider} 优先级最高
任何地方通过一下方法获取语言文化
System.Threading.Thread.CurrentThread.CurrentCulture 语言文化
System.Threading.Thread.CurrentThread.CurrentUICulture UI语言文化
【CultureInfo】提供有关特定区域性(对于非托管代码开发,则称为“区域设置”)的信息。 这些信息包括区域性的名称、书写系统、使用的日历、字符串的排序顺序以及对日期和数字的格式化设置
通过MVCFilter来实现多语言
创建一个Filter
public class LocalizationPipeline
{
public void Configure(IApplicationBuilder applicationBuilder)
{
var supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("zh-CN") };
var localizationOptions = new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures,
DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("zh-CN") //默认使用
};
//清空请求头中的语言
localizationOptions.RequestCultureProviders.Clear();
//使用MVC路由 www.moneydream.club/zh-CN/Home/index
localizationOptions.RequestCultureProviders.Add(new RouteDataRequestCultureProvider());
applicationBuilder.UseRequestLocalization(localizationOptions);
}
}
配置MVC路由
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{culture=zh-CN}/{controller=Home}/{action=Index}/{id?}");
});
依赖注入
public void ConfigureServices(IServiceCollection services)
{
//services.AddLocalization(options=> options.ResourcesPath= "Resources"); //本地化
//使用PO 文件实现多语言
services.AddPortableObjectLocalization(options => options.ResourcesPath = "Localization");
//通过Filter 中间件来实现 多语言
services.AddControllersWithViews(options=>options.Filters.Add(new MiddlewareFilterAttribute(typeof( LocalizationPipeline))))
.AddViewLocalization();
}
结果呈显
区域性回退行为
用户提供语言文化是:zh-CN 但我们系统没有提供zh-CN的语言文化 我们只有zh文化 回退的话就会使用这个文化
OrchardCore.Localization.Core.DLL 通过解读PO文件实现多语言
写Po文件
创建控制器 PoLocalizerController 并添加视图

安装Nuget包
Install-Package OrchardCore.Localization.Core -Version 1.0.0-rc2-13450
依赖注入
需要注意 .AddViewLocalization 必须 因为使用的是 视图多语言
结果呈现

浙公网安备 33010602011771号