多语言支持是框架的默认实现,你可以在WebExtensions.cs中的AddLocalizer找到相关的服务配置。
Note
多语言的支持基于ASP.NET Core的全球化与本地化功能,具体的使用可以参考ASP.NET Core 全球化与本地化。
在Definition/Share项目中,你能看到多语言相关的资源文件,在VS中通常会被折叠到Localizer.cs文件下。
打开任意的资源文件,添加或修改对应的键值对即可。
添加完成后,Perigon.AspNetCore.SourceGeneration源代码生成器会自动在Localizer中生成对应的常量(partial class)。
你可以在任何需要使用多语言的地方,注入Localizer localizer,它是对IStringLocalizer<Localizer>的封装:
public partial class Localizer(IStringLocalizer<Localizer> localizer) { public string Get(string key, params object[] arguments) { try { return localizer[key, arguments]; } catch (Exception) { return key; } } }
默认控制器都会继承自RestControllerBase,需要注入了Localizer,基类对常见的MVC方法,如BadRequest,NotFound等进行了重写,以支持多语言,你可以非常方便的调用:
return BadRequest(Localizer.UserNotFound);
而在Manager业务实现类中,内容可以通过抛出BusinessException来实现多语言支持,如.
throw new BusinessException(Localizer.UserNotFound);
GlobalExceptionMiddleware会捕获该异常,并将多语言内容返回给客户端。
内容大纲