Browse Source

Merge pull request #2502 from abpframework/maliming/WithCulture

Removed obsolete WithCulture method.
pull/2521/head
Halil İbrahim Kalkan 7 years ago
committed by GitHub
parent
commit
76d742683a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs
  2. 8
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Templates/EmailTemplateProvider.cs
  3. 32
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs
  4. 4
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs
  5. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs
  6. 6
      framework/test/Volo.Abp.Core.Tests/System/StringExtensions_Tests.cs
  7. 69
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
  8. 4
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TemplateLocalizer_Tests.cs

2
framework/src/Volo.Abp.Core/Volo/Abp/Localization/AbpCultureHelper.cs → framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs

@ -4,7 +4,7 @@ using JetBrains.Annotations;
namespace Volo.Abp.Localization namespace Volo.Abp.Localization
{ {
public static class AbpCultureHelper public static class CultureHelper
{ {
public static IDisposable Use([NotNull] string culture, string uiCulture = null) public static IDisposable Use([NotNull] string culture, string uiCulture = null)
{ {

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); var localizer = StringLocalizerFactory.Create(emailTemplateDefinition.LocalizationResource);
if (cultureName != null) if (cultureName != null)
{ {
emailTemplate.SetContent( using (CultureHelper.Use(new CultureInfo(cultureName)))
TemplateLocalizer.Localize(localizer.WithCulture(new CultureInfo(cultureName)), {
emailTemplate.Content) emailTemplate.SetContent(TemplateLocalizer.Localize(localizer, emailTemplate.Content));
); }
} }
else 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) public IStringLocalizer WithCulture(CultureInfo culture)
{ {
return new CultureWrapperStringLocalizer(culture.Name, this); return new CultureWrapperStringLocalizer(culture.Name, this);
@ -70,10 +71,13 @@ namespace Volo.Abp.Localization
{ {
foreach (var baseLocalizer in BaseLocalizers) foreach (var baseLocalizer in BaseLocalizers)
{ {
var baseLocalizedString = baseLocalizer.WithCulture(CultureInfo.GetCultureInfo(cultureName))[name]; using (CultureHelper.Use(CultureInfo.GetCultureInfo(cultureName)))
if (baseLocalizedString != null && !baseLocalizedString.ResourceNotFound)
{ {
return baseLocalizedString; var baseLocalizedString = baseLocalizer[name];
if (baseLocalizedString != null && !baseLocalizedString.ResourceNotFound)
{
return baseLocalizedString;
}
} }
} }
@ -132,20 +136,23 @@ namespace Volo.Abp.Localization
if (includeBaseLocalizers) 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! using (CultureHelper.Use(CultureInfo.GetCultureInfo(cultureName)))
try
{ {
var baseLocalizedString = baseLocalizer.GetAllStrings(includeParentCultures); //TODO: Try/catch is a workaround here!
foreach (var localizedString in baseLocalizedString) 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); return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures);
} }
[Obsolete("This method is obsolete. Use `CurrentCulture` and `CurrentUICulture` instead.")]
public IStringLocalizer WithCulture(CultureInfo culture) public IStringLocalizer WithCulture(CultureInfo culture)
{ {
return new CultureWrapperStringLocalizer(culture.Name, _innerLocalizer); return new CultureWrapperStringLocalizer(culture.Name, _innerLocalizer);

4
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] [Fact]
public async Task Should_Localize_Display_Attribute() public async Task Should_Localize_Display_Attribute()
{ {
using (AbpCultureHelper.Use("en")) using (CultureHelper.Use("en"))
{ {
var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm").ConfigureAwait(false); var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm").ConfigureAwait(false);
result.ShouldContain("<label for=\"BirthDate\">Birth date</label>"); result.ShouldContain("<label for=\"BirthDate\">Birth date</label>");
} }
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm").ConfigureAwait(false); var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm").ConfigureAwait(false);
result.ShouldContain("<label for=\"BirthDate\">Dogum gunu</label>"); result.ShouldContain("<label for=\"BirthDate\">Dogum gunu</label>");

2
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] [Fact]
public async Task Should_Return_Localized_Validation_Errors() public async Task Should_Return_Localized_Validation_Errors()
{ {
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var result = await GetResponseAsObjectAsync<RemoteServiceErrorResponse>("/api/validation-test/object-result-action?value1=a", HttpStatusCode.BadRequest).ConfigureAwait(false); //value1 has min length of 2 chars. var result = await GetResponseAsObjectAsync<RemoteServiceErrorResponse>("/api/validation-test/object-result-action?value1=a", HttpStatusCode.BadRequest).ConfigureAwait(false); //value1 has min length of 2 chars.
result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0);

6
framework/test/Volo.Abp.Core.Tests/System/StringExtensions_Tests.cs

@ -11,7 +11,7 @@ namespace System
public StringExtensions_Tests() public StringExtensions_Tests()
{ {
_cultureScope = AbpCultureHelper.Use("en-US"); _cultureScope = CultureHelper.Use("en-US");
} }
[Fact] [Fact]
@ -31,7 +31,7 @@ namespace System
[Fact] [Fact]
public void EnsureEndsWith_CultureSpecific_Test() 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ı"); "Kırmızı".EnsureEndsWith('I', StringComparison.CurrentCultureIgnoreCase).ShouldBe("Kırmızı");
} }
@ -59,7 +59,7 @@ namespace System
[Fact] [Fact]
public void ToPascalCase_CurrentCulture_Test() public void ToPascalCase_CurrentCulture_Test()
{ {
using (AbpCultureHelper.Use("tr-TR")) using (CultureHelper.Use("tr-TR"))
{ {
"istanbul".ToPascalCase(true).ShouldBe("İstanbul"); "istanbul".ToPascalCase(true).ShouldBe("İstanbul");
} }

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

@ -50,24 +50,24 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void Should_Get_Localized_Text_If_Defined_In_Current_Culture() 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["Car"].Value.ShouldBe("Car");
_localizer["CarPlural"].Value.ShouldBe("Cars"); _localizer["CarPlural"].Value.ShouldBe("Cars");
} }
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
_localizer["Car"].Value.ShouldBe("Araba"); _localizer["Car"].Value.ShouldBe("Araba");
_localizer["CarPlural"].Value.ShouldBe("Araba"); _localizer["CarPlural"].Value.ShouldBe("Araba");
} }
using (AbpCultureHelper.Use("it")) using (CultureHelper.Use("it"))
{ {
_localizer["Car"].Value.ShouldBe("Auto"); _localizer["Car"].Value.ShouldBe("Auto");
} }
using (AbpCultureHelper.Use("es")) using (CultureHelper.Use("es"))
{ {
_localizer["Car"].Value.ShouldBe("Auto"); _localizer["Car"].Value.ShouldBe("Auto");
} }
@ -77,22 +77,22 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void Should_Get_Extension_Texts() public void Should_Get_Extension_Texts()
{ {
using (AbpCultureHelper.Use("en")) using (CultureHelper.Use("en"))
{ {
_localizer["SeeYou"].Value.ShouldBe("See you"); _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 _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"); _localizer["SeeYou"].Value.ShouldBe("Ci vediamo");
} }
using (AbpCultureHelper.Use("es")) using (CultureHelper.Use("es"))
{ {
_localizer["SeeYou"].Value.ShouldBe("Nos vemos"); _localizer["SeeYou"].Value.ShouldBe("Nos vemos");
} }
@ -102,7 +102,7 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void Should_Get_From_Inherited_Texts() 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["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 _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"); _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 _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["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 _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] [Fact]
public void Should_Override_Inherited_Text() 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 _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 _localizer["MaxLenghtErrorMessage", 42].Value.ShouldBe("El campo puede tener un máximo de '42' caracteres"); //Overriden in Source/es.json
} }
@ -144,21 +144,38 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void Should_Get_Localized_Text_If_Defined_In_Requested_Culture() public void Should_Get_Localized_Text_If_Defined_In_Requested_Culture()
{ {
_localizer.WithCulture(CultureInfo.GetCultureInfo("en"))["Car"].Value.ShouldBe("Car"); using (CultureHelper.Use(CultureInfo.GetCultureInfo("en")))
_localizer.WithCulture(CultureInfo.GetCultureInfo("en"))["CarPlural"].Value.ShouldBe("Cars"); {
_localizer["Car"].Value.ShouldBe("Car");
_localizer.WithCulture(CultureInfo.GetCultureInfo("tr"))["Car"].Value.ShouldBe("Araba"); }
_localizer.WithCulture(CultureInfo.GetCultureInfo("tr"))["CarPlural"].Value.ShouldBe("Araba"); using (CultureHelper.Use(CultureInfo.GetCultureInfo("en")))
{
_localizer["CarPlural"].Value.ShouldBe("Cars");
}
_localizer.WithCulture(CultureInfo.GetCultureInfo("es"))["Car"].Value.ShouldBe("Auto"); using (CultureHelper.Use(CultureInfo.GetCultureInfo("tr")))
_localizer.WithCulture(CultureInfo.GetCultureInfo("es"))["CarPlural"].Value.ShouldBe("Autos"); {
_localizer["Car"].Value.ShouldBe("Araba");
}
using (CultureHelper.Use(CultureInfo.GetCultureInfo("tr")))
{
_localizer["CarPlural"].Value.ShouldBe("Araba");
}
using (CultureHelper.Use(CultureInfo.GetCultureInfo("es")))
{
_localizer["Car"].Value.ShouldBe("Auto");
}
using (CultureHelper.Use(CultureInfo.GetCultureInfo("es")))
{
_localizer["CarPlural"].Value.ShouldBe("Autos");
}
} }
[Fact] [Fact]
public void GetAllStrings_With_Parents() public void GetAllStrings_With_Parents()
{ {
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var localizedStrings = _localizer.GetAllStrings(true).ToList(); var localizedStrings = _localizer.GetAllStrings(true).ToList();
@ -175,7 +192,7 @@ namespace Volo.Abp.Localization
); );
} }
using (AbpCultureHelper.Use("es")) using (CultureHelper.Use("es"))
{ {
var localizedStrings = _localizer.GetAllStrings(true).ToList(); var localizedStrings = _localizer.GetAllStrings(true).ToList();
@ -197,7 +214,7 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void GetAllStrings_Without_Parents() public void GetAllStrings_Without_Parents()
{ {
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var localizedStrings = _localizer.GetAllStrings(false).ToList(); var localizedStrings = _localizer.GetAllStrings(false).ToList();
@ -212,7 +229,7 @@ namespace Volo.Abp.Localization
); );
} }
using (AbpCultureHelper.Use("es")) using (CultureHelper.Use("es"))
{ {
var localizedStrings = _localizer.GetAllStrings(false).ToList(); var localizedStrings = _localizer.GetAllStrings(false).ToList();
@ -232,7 +249,7 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void GetAllStrings_With_Inheritance() public void GetAllStrings_With_Inheritance()
{ {
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var localizedStrings = _localizer var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: true) .GetAllStrings(true, includeBaseLocalizers: true)
@ -261,7 +278,7 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void GetAllStrings_Without_Inheritance() public void GetAllStrings_Without_Inheritance()
{ {
using (AbpCultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var localizedStrings = _localizer var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: false) .GetAllStrings(true, includeBaseLocalizers: false)

4
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TemplateLocalizer_Tests.cs

@ -22,7 +22,7 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void Should_Localize() public void Should_Localize()
{ {
using (AbpCultureHelper.Use("en")) using (CultureHelper.Use("en"))
{ {
_templateLocalizer.Localize(_testResource, "<p>{{#L:CarPlural}} <b>{{#L:Universe}}</b></p>") _templateLocalizer.Localize(_testResource, "<p>{{#L:CarPlural}} <b>{{#L:Universe}}</b></p>")
.ShouldBe("<p>Cars <b>Universe</b></p>"); .ShouldBe("<p>Cars <b>Universe</b></p>");
@ -32,7 +32,7 @@ namespace Volo.Abp.Localization
[Fact] [Fact]
public void Should_Work_Even_If_No_Text_To_Localize() public void Should_Work_Even_If_No_Text_To_Localize()
{ {
using (AbpCultureHelper.Use("en")) using (CultureHelper.Use("en"))
{ {
_templateLocalizer.Localize(_testResource, "<p>test</p>") _templateLocalizer.Localize(_testResource, "<p>test</p>")
.ShouldBe("<p>test</p>"); .ShouldBe("<p>test</p>");

Loading…
Cancel
Save