From 6a782a6668644bf7e52243aa3b2c4d26c98c6e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 May 2018 09:13:26 +0300 Subject: [PATCH] AbpDictionaryBasedStringLocalizer should use base cultures for getting all strings too. --- .../Localization/AbpDictionaryBasedStringLocalizer.cs | 10 +++++++++- .../Volo/Abp/Localization/AbpLocalization_Tests.cs | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index 46a626b036..a7a80a10b9 100644 --- a/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Globalization; +using System.Linq; using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization @@ -125,9 +126,16 @@ namespace Volo.Abp.Localization var dictionaries = Resource.DictionaryProvider.Dictionaries; - //Create a temp dictionary to build var allStrings = new Dictionary(); + foreach (var baseLocalizer in BaseLocalizers.Select(l => l.WithCulture(CultureInfo.GetCultureInfo(cultureName)))) + { + foreach (var localizedString in baseLocalizer.GetAllStrings(includeParentCultures)) + { + allStrings[localizedString.Name] = localizedString; + } + } + if (includeParentCultures) { //Fill all strings from default dictionary diff --git a/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs index f9496a0d91..e8ce00dd4b 100644 --- a/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs +++ b/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs @@ -75,6 +75,8 @@ namespace Volo.Abp.Localization { _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.GetAllStrings().ShouldContain(ls => ls.Name == "USA"); } using (AbpCultureHelper.Use("tr"))