aspnetcore/src/Microsoft.AspNetCore.Mvc.Lo.../Internal/MvcLocalizationServices.cs

48 lines
1.8 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Localization;
namespace Microsoft.AspNetCore.Mvc.Localization.Internal
{
public static class MvcLocalizationServices
{
public static void AddLocalizationServices(
IServiceCollection services,
LanguageViewLocationExpanderFormat format,
Action<LocalizationOptions> setupAction)
{
AddMvcLocalizationServices(services, format, setupAction);
if (setupAction == null)
{
services.AddLocalization();
}
else
{
services.AddLocalization(setupAction);
}
}
// To enable unit testing only 'MVC' specific services
public static void AddMvcLocalizationServices(
IServiceCollection services,
LanguageViewLocationExpanderFormat format,
Action<LocalizationOptions> setupAction)
{
services.Configure<RazorViewEngineOptions>(
options =>
{
options.ViewLocationExpanders.Add(new LanguageViewLocationExpander(format));
});
services.TryAdd(ServiceDescriptor.Singleton<IHtmlLocalizerFactory, HtmlLocalizerFactory>());
services.TryAdd(ServiceDescriptor.Transient(typeof(IHtmlLocalizer<>), typeof(HtmlLocalizer<>)));
services.TryAdd(ServiceDescriptor.Transient<IViewLocalizer, ViewLocalizer>());
}
}
}