Blogs
📆 2025-12-19 00:45

多语言支持

多语言支持是框架的默认实现,你可以在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会捕获该异常,并将多语言内容返回给客户端。

内容大纲