.net core Razor 全球化和本地化 多语言

发布时间 2023-03-29 15:10:34作者: 邢帅杰
1.根目录建文件夹:Resource(存放资源文件) 和 ResourceClass(存放对应的空白类文件)
2.添加资源文件到Resource文件夹中:Language.en-US.resx 和 Language.zh-CN.resx
打开资源文件,添加配置项,例如 中文资源文件  名称:Welcome,值:欢迎来中国。英文资源文件  名称:Welcome,值:Welcome to China。
并设置资源文件的 访问修饰符 为 public,这样可以跨项目访问资源文件。
3.添加空白类文件到ResourceClass文件夹中:Language.cs,这个空白类文件需要单独放到另外的地方,不能跟资源文件放一起,否则会默认是一个资源文件。
4.打开根目录下的 program.cs 文件,进行配置
// 指定资源文件夹 Resources
builder.Services.AddLocalization(x => { x.ResourcesPath = "Resources"; });
// 让页面 xxx.cshtml 也能使用资源文件
builder.Services.AddRazorPages().AddViewLocalization(); 
5.app use一下
#region 多语言
IList<CultureInfo> supportedCultures = new List<CultureInfo>{
    new CultureInfo("zh-CN"),
    new CultureInfo("en-US")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
    //这里指定默认语言包
    DefaultRequestCulture = new RequestCulture("zh-CN"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
});
#endregion

6.xxx.cshtml页面中使用
@using WebAppTest//这是自己项目的命名空间
@using Microsoft.AspNetCore.Mvc.Localization
@inject IHtmlLocalizer<Language> Localizer
然后在页面中:@Localizer["Welcome"]  这样就显示中文了。
要想显示英文,需要修改语言:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

 参考:https://www.cnblogs.com/pfm33/p/14800372.html