Browse Source

Removed obsolete WithCulture method.

Resolve #2491
pull/2502/head
maliming 7 years ago
parent
commit
bed26a0a62
  1. 8
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs
  2. 32
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs
  3. 29
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StringLocalizerExtensions.cs
  4. 31
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

8
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs

@ -103,10 +103,10 @@ namespace Volo.Abp.Emailing.Templates
var localizer = StringLocalizerFactory.Create(emailTemplateDefinition.LocalizationResource);
if (cultureName != null)
{
emailTemplate.SetContent(
TemplateLocalizer.Localize(localizer.WithCulture(new CultureInfo(cultureName)),
emailTemplate.Content)
);
using (localizer.Change(new CultureInfo(cultureName)))
{
emailTemplate.SetContent(TemplateLocalizer.Localize(localizer, emailTemplate.Content));
}
}
else
{

32
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs

@ -41,6 +41,7 @@ namespace Volo.Abp.Localization
);
}
[Obsolete("This method is obsolete. Use `CurrentCulture` and `CurrentUICulture` instead.")]
public IStringLocalizer WithCulture(CultureInfo culture)
{
return new CultureWrapperStringLocalizer(culture.Name, this);
@ -70,10 +71,13 @@ namespace Volo.Abp.Localization
{
foreach (var baseLocalizer in BaseLocalizers)
{
var baseLocalizedString = baseLocalizer.WithCulture(CultureInfo.GetCultureInfo(cultureName))[name];
if (baseLocalizedString != null && !baseLocalizedString.ResourceNotFound)
using (baseLocalizer.Change(CultureInfo.GetCultureInfo(cultureName)))
{
return baseLocalizedString;
var baseLocalizedString = baseLocalizer[name];
if (baseLocalizedString != null && !baseLocalizedString.ResourceNotFound)
{
return baseLocalizedString;
}
}
}
@ -132,20 +136,23 @@ namespace Volo.Abp.Localization
if (includeBaseLocalizers)
{
foreach (var baseLocalizer in BaseLocalizers.Select(l => l.WithCulture(CultureInfo.GetCultureInfo(cultureName))))
foreach (var baseLocalizer in BaseLocalizers.Select(l => l))
{
//TODO: Try/catch is a workaround here!
try
using (baseLocalizer.Change(CultureInfo.GetCultureInfo(cultureName)))
{
var baseLocalizedString = baseLocalizer.GetAllStrings(includeParentCultures);
foreach (var localizedString in baseLocalizedString)
//TODO: Try/catch is a workaround here!
try
{
allStrings[localizedString.Name] = localizedString;
var baseLocalizedString = baseLocalizer.GetAllStrings(includeParentCultures);
foreach (var localizedString in baseLocalizedString)
{
allStrings[localizedString.Name] = localizedString;
}
}
}
catch (MissingManifestResourceException)
{
catch (MissingManifestResourceException)
{
}
}
}
}
@ -198,6 +205,7 @@ namespace Volo.Abp.Localization
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures);
}
[Obsolete("This method is obsolete. Use `CurrentCulture` and `CurrentUICulture` instead.")]
public IStringLocalizer WithCulture(CultureInfo culture)
{
return new CultureWrapperStringLocalizer(culture.Name, _innerLocalizer);

29
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StringLocalizerExtensions.cs

@ -0,0 +1,29 @@
using System;
using System.Globalization;
using JetBrains.Annotations;
using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization
{
public static class StringLocalizerExtensions
{
/// <summary>
/// Change the CurrentCulture and CurrentUICulture of CultureInfo.
/// If uiCulture is null, CultureInfo.CurrentUICulture will use culture.
/// </summary>
public static IDisposable Change(this IStringLocalizer localizer, CultureInfo culture, [CanBeNull]CultureInfo uiCulture = null)
{
var originalCulture = CultureInfo.CurrentCulture;
var originalUICulture = CultureInfo.CurrentUICulture;
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = uiCulture ?? culture;
return new DisposeAction(() =>
{
CultureInfo.CurrentCulture = originalCulture;
CultureInfo.CurrentUICulture = originalUICulture;
});
}
}
}

31
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

@ -144,15 +144,32 @@ namespace Volo.Abp.Localization
[Fact]
public void Should_Get_Localized_Text_If_Defined_In_Requested_Culture()
{
_localizer.WithCulture(CultureInfo.GetCultureInfo("en"))["Car"].Value.ShouldBe("Car");
_localizer.WithCulture(CultureInfo.GetCultureInfo("en"))["CarPlural"].Value.ShouldBe("Cars");
_localizer.WithCulture(CultureInfo.GetCultureInfo("tr"))["Car"].Value.ShouldBe("Araba");
_localizer.WithCulture(CultureInfo.GetCultureInfo("tr"))["CarPlural"].Value.ShouldBe("Araba");
using (_localizer.Change(CultureInfo.GetCultureInfo("en")))
{
_localizer["Car"].Value.ShouldBe("Car");
}
using (_localizer.Change(CultureInfo.GetCultureInfo("en")))
{
_localizer["CarPlural"].Value.ShouldBe("Cars");
}
_localizer.WithCulture(CultureInfo.GetCultureInfo("es"))["Car"].Value.ShouldBe("Auto");
_localizer.WithCulture(CultureInfo.GetCultureInfo("es"))["CarPlural"].Value.ShouldBe("Autos");
using (_localizer.Change(CultureInfo.GetCultureInfo("tr")))
{
_localizer["Car"].Value.ShouldBe("Araba");
}
using (_localizer.Change(CultureInfo.GetCultureInfo("tr")))
{
_localizer["CarPlural"].Value.ShouldBe("Araba");
}
using (_localizer.Change(CultureInfo.GetCultureInfo("es")))
{
_localizer["Car"].Value.ShouldBe("Auto");
}
using (_localizer.Change(CultureInfo.GetCultureInfo("es")))
{
_localizer["CarPlural"].Value.ShouldBe("Autos");
}
}
[Fact]

Loading…
Cancel
Save