1.安装扩展ResXManager用于管理本地化资源文件
2.添加资源文件Resource.resx
使用工具ResXManager增加其他资源文件,具体参考ResXManager使用
3.注册本地化
public static class ServiceCollectionExtensions { public static IServiceCollection AddLanguage(this IServiceCollection service) { service.Configure<RequestLocalizationOptions>(options => { var cultures = new List<CultureInfo> { new CultureInfo("zh-Hans"), new CultureInfo("en") }; options.DefaultRequestCulture = new RequestCulture(cultures[0]);//当服务接收到的请求没有指明当前区域文化,就会使用此默认的区域文化 options.SupportedCultures = cultures;//影响日期、时间、数字、货币的展示格式 options.SupportedUICultures = cultures;//影响查找那些区域文化资源(如:.resx、json文件等),也就是说,如果这里没有添加没有区域文化A,即使添加了A区域的资源文件,也无法生效。一般Culture和UICultrue保持一致 }); service.AddLocalization(options => options.ResourcesPath = ""); return service; } }
Program.cs中添加本地化服务
通过AddLocalization注册了IStringLocalizerFactory和IStringLocalizer<>,并指定了资源的根目录为“Resources”
Program.cs中注册请求本地化中间件
注:app.UseRouting() 之后再调用 app.UseRequestLocalization()
本地化使用
使用IStringLocalizer<>方式注入
调用
完整代码
[Authorize] [ApiController] [Route("controller")] //[PermissionAuthorize(Permissions.Users)] public class FileController : ControllerBase { private IStringLocalizer<Resource> _localizer; public FileController(IStringLocalizer<Resource> localizer) { _localizer = localizer; } [HttpGet("GetLocal")] public string GetLocal() { return _localizer["start"];//资源名称区分大小写 } }
请求结果
本次请求没有明确区域文化,又因以上本地化配置中明确请求中未指定区域文化时(或指定不存在的区域文化时)默认的区域文化是“zh-Hans”,结果显示中文
因注册app.UseRequestLocalization(),响应头中会附带语言
注:
标签:Core,ASP,localizer,本地化,public,区域,new,NET,options From: https://www.cnblogs.com/sugarwxx/p/18304692