LocalizationApplicationBuilderExtensions.cs
1.25 KB
using NCC.Dependency;
using NCC.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Microsoft.AspNetCore.Builder
{
/// <summary>
/// 多语言中间件拓展
/// </summary>
[SuppressSniffer]
public static class LocalizationApplicationBuilderExtensions
{
/// <summary>
/// 配置多语言中间件拓展
/// </summary>
/// <param name="app"></param>
/// <returns></returns>
public static IApplicationBuilder UseAppLocalization(this IApplicationBuilder app)
{
// 获取多语言配置选项
var localizationSettings = app.ApplicationServices.GetRequiredService<IOptions<LocalizationSettingsOptions>>().Value;
// 如果没有配置多语言选项,则不注册服务
if (localizationSettings.SupportedCultures == null || localizationSettings.SupportedCultures.Length == 0) return app;
var requestLocalization = new RequestLocalizationOptions();
Penetrates.SetRequestLocalization(requestLocalization, localizationSettings);
// 设置多语言请求中间件
app.UseRequestLocalization(requestLocalization);
return app;
}
}
}