From 1801407ae05a8393abd1c926995c7a41cc69422b Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 30 Dec 2019 16:31:30 +0800 Subject: [PATCH] Use CultureHelper instead of extension methods & rename AbpCultureHelper to CultureHelper. --- .../{AbpCultureHelper.cs => CultureHelper.cs} | 2 +- .../Templates/EmailTemplateProvider.cs | 2 +- .../AbpDictionaryBasedStringLocalizer.cs | 4 +- .../Localization/StringLocalizerExtensions.cs | 29 ----------- .../Mvc/Localization/MvcLocalization_Tests.cs | 4 +- .../ValidationTestController_Tests.cs | 2 +- .../System/StringExtensions_Tests.cs | 6 +-- .../Abp/Localization/AbpLocalization_Tests.cs | 50 +++++++++---------- .../Localization/TemplateLocalizer_Tests.cs | 4 +- 9 files changed, 37 insertions(+), 66 deletions(-) rename framework/src/Volo.Abp.Core/Volo/Abp/Localization/{AbpCultureHelper.cs => CultureHelper.cs} (96%) delete mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StringLocalizerExtensions.cs diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Localization/AbpCultureHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs similarity index 96% rename from framework/src/Volo.Abp.Core/Volo/Abp/Localization/AbpCultureHelper.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs index ba75ab66ea..92320f737c 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Localization/AbpCultureHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs @@ -4,7 +4,7 @@ using JetBrains.Annotations; namespace Volo.Abp.Localization { - public static class AbpCultureHelper + public static class CultureHelper { public static IDisposable Use([NotNull] string culture, string uiCulture = null) { diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs index 804cf2176e..29fcf08664 100644 --- a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs +++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs @@ -103,7 +103,7 @@ namespace Volo.Abp.Emailing.Templates var localizer = StringLocalizerFactory.Create(emailTemplateDefinition.LocalizationResource); if (cultureName != null) { - using (localizer.Change(new CultureInfo(cultureName))) + using (CultureHelper.Use(new CultureInfo(cultureName))) { emailTemplate.SetContent(TemplateLocalizer.Localize(localizer, emailTemplate.Content)); } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index 620cbd30f5..79c164eb5f 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -71,7 +71,7 @@ namespace Volo.Abp.Localization { foreach (var baseLocalizer in BaseLocalizers) { - using (baseLocalizer.Change(CultureInfo.GetCultureInfo(cultureName))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo(cultureName))) { var baseLocalizedString = baseLocalizer[name]; if (baseLocalizedString != null && !baseLocalizedString.ResourceNotFound) @@ -138,7 +138,7 @@ namespace Volo.Abp.Localization { foreach (var baseLocalizer in BaseLocalizers.Select(l => l)) { - using (baseLocalizer.Change(CultureInfo.GetCultureInfo(cultureName))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo(cultureName))) { //TODO: Try/catch is a workaround here! try diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StringLocalizerExtensions.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StringLocalizerExtensions.cs deleted file mode 100644 index 079b35e762..0000000000 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StringLocalizerExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Globalization; -using JetBrains.Annotations; -using Microsoft.Extensions.Localization; - -namespace Volo.Abp.Localization -{ - public static class StringLocalizerExtensions - { - /// - /// Change the CurrentCulture and CurrentUICulture of CultureInfo. - /// If uiCulture is null, CultureInfo.CurrentUICulture will use culture. - /// - 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; - }); - } - } -} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs index 16057c3f07..4d9a4f4624 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs @@ -34,13 +34,13 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization [Fact] public async Task Should_Localize_Display_Attribute() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm"); result.ShouldContain(""); } - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm"); result.ShouldContain(""); diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs index 5177868843..361db7845a 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs @@ -26,7 +26,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation [Fact] public async Task Should_Return_Localized_Validation_Errors() { - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { var result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action?value1=a", HttpStatusCode.BadRequest); //value1 has min length of 2 chars. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); diff --git a/framework/test/Volo.Abp.Core.Tests/System/StringExtensions_Tests.cs b/framework/test/Volo.Abp.Core.Tests/System/StringExtensions_Tests.cs index 0720a492aa..23d961dfa7 100644 --- a/framework/test/Volo.Abp.Core.Tests/System/StringExtensions_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/System/StringExtensions_Tests.cs @@ -11,7 +11,7 @@ namespace System public StringExtensions_Tests() { - _cultureScope = AbpCultureHelper.Use("en-US"); + _cultureScope = CultureHelper.Use("en-US"); } [Fact] @@ -31,7 +31,7 @@ namespace System [Fact] public void EnsureEndsWith_CultureSpecific_Test() { - using (AbpCultureHelper.Use("tr-TR")) + using (CultureHelper.Use("tr-TR")) { "Kırmızı".EnsureEndsWith('I', StringComparison.CurrentCultureIgnoreCase).ShouldBe("Kırmızı"); } @@ -59,7 +59,7 @@ namespace System [Fact] public void ToPascalCase_CurrentCulture_Test() { - using (AbpCultureHelper.Use("tr-TR")) + using (CultureHelper.Use("tr-TR")) { "istanbul".ToPascalCase(true).ShouldBe("İstanbul"); } diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs index d0971795a4..5f265f524d 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs @@ -50,24 +50,24 @@ namespace Volo.Abp.Localization [Fact] public void Should_Get_Localized_Text_If_Defined_In_Current_Culture() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { _localizer["Car"].Value.ShouldBe("Car"); _localizer["CarPlural"].Value.ShouldBe("Cars"); } - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { _localizer["Car"].Value.ShouldBe("Araba"); _localizer["CarPlural"].Value.ShouldBe("Araba"); } - using (AbpCultureHelper.Use("it")) + using (CultureHelper.Use("it")) { _localizer["Car"].Value.ShouldBe("Auto"); } - using (AbpCultureHelper.Use("es")) + using (CultureHelper.Use("es")) { _localizer["Car"].Value.ShouldBe("Auto"); } @@ -77,22 +77,22 @@ namespace Volo.Abp.Localization [Fact] public void Should_Get_Extension_Texts() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { _localizer["SeeYou"].Value.ShouldBe("See you"); } - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { _localizer["SeeYou"].Value.ShouldBe("See you"); //Not defined in tr, getting from default lang } - using (AbpCultureHelper.Use("it")) + using (CultureHelper.Use("it")) { _localizer["SeeYou"].Value.ShouldBe("Ci vediamo"); } - using (AbpCultureHelper.Use("es")) + using (CultureHelper.Use("es")) { _localizer["SeeYou"].Value.ShouldBe("Nos vemos"); } @@ -102,7 +102,7 @@ namespace Volo.Abp.Localization [Fact] public void Should_Get_From_Inherited_Texts() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { _localizer["USA"].Value.ShouldBe("United States of America"); //Inherited from CountryNames/en.json _localizer["ThisFieldIsRequired"].Value.ShouldBe("This field is required"); //Inherited from Validation/en.json @@ -110,12 +110,12 @@ namespace Volo.Abp.Localization _localizer.GetAllStrings().ShouldContain(ls => ls.Name == "USA"); } - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { _localizer["USA"].Value.ShouldBe("Amerika Birleşik Devletleri"); //Inherited from CountryNames/tr.json } - using (AbpCultureHelper.Use("es")) + using (CultureHelper.Use("es")) { _localizer["USA"].Value.ShouldBe("Estados unidos de América"); //Inherited from CountryNames/es.json _localizer["ThisFieldIsRequired"].Value.ShouldBe("El campo no puede estar vacío"); //Inherited from Validation/es.json @@ -128,12 +128,12 @@ namespace Volo.Abp.Localization [Fact] public void Should_Override_Inherited_Text() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { _localizer["MaxLenghtErrorMessage", 42].Value.ShouldBe("This field's length can be maximum of '42' chars"); //Overriden in Source/en.json } - using (AbpCultureHelper.Use("es")) + using (CultureHelper.Use("es")) { _localizer["MaxLenghtErrorMessage", 42].Value.ShouldBe("El campo puede tener un máximo de '42' caracteres"); //Overriden in Source/es.json } @@ -144,29 +144,29 @@ namespace Volo.Abp.Localization [Fact] public void Should_Get_Localized_Text_If_Defined_In_Requested_Culture() { - using (_localizer.Change(CultureInfo.GetCultureInfo("en"))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo("en"))) { _localizer["Car"].Value.ShouldBe("Car"); } - using (_localizer.Change(CultureInfo.GetCultureInfo("en"))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo("en"))) { _localizer["CarPlural"].Value.ShouldBe("Cars"); } - using (_localizer.Change(CultureInfo.GetCultureInfo("tr"))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo("tr"))) { _localizer["Car"].Value.ShouldBe("Araba"); } - using (_localizer.Change(CultureInfo.GetCultureInfo("tr"))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo("tr"))) { _localizer["CarPlural"].Value.ShouldBe("Araba"); } - using (_localizer.Change(CultureInfo.GetCultureInfo("es"))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo("es"))) { _localizer["Car"].Value.ShouldBe("Auto"); } - using (_localizer.Change(CultureInfo.GetCultureInfo("es"))) + using (CultureHelper.Use(CultureInfo.GetCultureInfo("es"))) { _localizer["CarPlural"].Value.ShouldBe("Autos"); } @@ -175,7 +175,7 @@ namespace Volo.Abp.Localization [Fact] public void GetAllStrings_With_Parents() { - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { var localizedStrings = _localizer.GetAllStrings(true).ToList(); @@ -192,7 +192,7 @@ namespace Volo.Abp.Localization ); } - using (AbpCultureHelper.Use("es")) + using (CultureHelper.Use("es")) { var localizedStrings = _localizer.GetAllStrings(true).ToList(); @@ -214,7 +214,7 @@ namespace Volo.Abp.Localization [Fact] public void GetAllStrings_Without_Parents() { - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { var localizedStrings = _localizer.GetAllStrings(false).ToList(); @@ -229,7 +229,7 @@ namespace Volo.Abp.Localization ); } - using (AbpCultureHelper.Use("es")) + using (CultureHelper.Use("es")) { var localizedStrings = _localizer.GetAllStrings(false).ToList(); @@ -249,7 +249,7 @@ namespace Volo.Abp.Localization [Fact] public void GetAllStrings_With_Inheritance() { - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { var localizedStrings = _localizer .GetAllStrings(true, includeBaseLocalizers: true) @@ -278,7 +278,7 @@ namespace Volo.Abp.Localization [Fact] public void GetAllStrings_Without_Inheritance() { - using (AbpCultureHelper.Use("tr")) + using (CultureHelper.Use("tr")) { var localizedStrings = _localizer .GetAllStrings(true, includeBaseLocalizers: false) diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TemplateLocalizer_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TemplateLocalizer_Tests.cs index 3ba7a2937b..97776e4543 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TemplateLocalizer_Tests.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TemplateLocalizer_Tests.cs @@ -22,7 +22,7 @@ namespace Volo.Abp.Localization [Fact] public void Should_Localize() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { _templateLocalizer.Localize(_testResource, "

{{#L:CarPlural}} {{#L:Universe}}

") .ShouldBe("

Cars Universe

"); @@ -32,7 +32,7 @@ namespace Volo.Abp.Localization [Fact] public void Should_Work_Even_If_No_Text_To_Localize() { - using (AbpCultureHelper.Use("en")) + using (CultureHelper.Use("en")) { _templateLocalizer.Localize(_testResource, "

test

") .ShouldBe("

test

");