From ab74af431490f1af32c301bd4d90038940cab50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 17 Oct 2017 15:56:54 +0300 Subject: [PATCH] Remove old/unused methods --- .../AbpDictionaryBasedStringLocalizer.cs | 33 +++--------- .../Localization/AbpStringLocalizerFactory.cs | 4 +- .../JsonFileLocalizationDictionaryProvider.cs | 54 ------------------- .../Abp/Localization/AbpLocalization_Tests.cs | 15 +++++- 4 files changed, 22 insertions(+), 84 deletions(-) delete mode 100644 src/Volo.Abp/Volo/Abp/Localization/Json/JsonFileLocalizationDictionaryProvider.cs diff --git a/src/Volo.Abp/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/src/Volo.Abp/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index 4b848aa832..5ae118a2fc 100644 --- a/src/Volo.Abp/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/src/Volo.Abp/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -6,8 +6,6 @@ using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization { - //TODO: Remove old/unused methods! - public class AbpDictionaryBasedStringLocalizer : IStringLocalizer { public LocalizationResource Resource { get; } @@ -27,29 +25,20 @@ namespace Volo.Abp.Localization throw new NotImplementedException(); } - LocalizedString IStringLocalizer.this[string name] - { - get { return GetString(name); } - } + public LocalizedString this[string name] => GetLocalizedString(name, CultureInfo.CurrentUICulture.Name); - LocalizedString IStringLocalizer.this[string name, params object[] arguments] + public LocalizedString this[string name, params object[] arguments] { get { - var localizedString = GetString(name); + var localizedString = this[name]; return new LocalizedString(name, string.Format(localizedString.Value, arguments, localizedString.ResourceNotFound, localizedString.SearchedLocation)); } } - public LocalizedString GetString(string name) + protected virtual LocalizedString GetLocalizedString(string name, string cultureName) { - return GetString(name, CultureInfo.CurrentUICulture.Name); - } - - /// - public LocalizedString GetString(string name, string cultureName) - { - var value = GetStringOrNull(name, cultureName); + var value = GetLocalizedStringOrNull(name, cultureName); if (value == null) { @@ -59,12 +48,7 @@ namespace Volo.Abp.Localization return value; } - public LocalizedString GetStringOrNull(string name, bool tryDefaults = true) - { - return GetStringOrNull(name, CultureInfo.CurrentUICulture.Name, tryDefaults); - } - - public LocalizedString GetStringOrNull(string name, string cultureName, bool tryDefaults = true) + protected virtual LocalizedString GetLocalizedStringOrNull(string name, string cultureName, bool tryDefaults = true) { var dictionaries = Resource.DictionaryProvider.Dictionaries; @@ -114,8 +98,7 @@ namespace Volo.Abp.Localization return new LocalizedString(name, strDefault.Value); } - /// - public IReadOnlyList GetAllStrings(string cultureName, bool includeDefaults = true) + protected virtual IReadOnlyList GetAllStrings(string cultureName, bool includeDefaults = true) { //TODO: Can be optimized (example: if it's already default dictionary, skip overriding) @@ -163,7 +146,7 @@ namespace Volo.Abp.Localization return allStrings.Values.ToImmutableList(); } - private static string GetBaseCultureName(string cultureName) + protected virtual string GetBaseCultureName(string cultureName) { return cultureName.Contains("-") ? cultureName.Left(cultureName.IndexOf("-", StringComparison.Ordinal)) diff --git a/src/Volo.Abp/Volo/Abp/Localization/AbpStringLocalizerFactory.cs b/src/Volo.Abp/Volo/Abp/Localization/AbpStringLocalizerFactory.cs index 285aa7b6ee..2d838e3b19 100644 --- a/src/Volo.Abp/Volo/Abp/Localization/AbpStringLocalizerFactory.cs +++ b/src/Volo.Abp/Volo/Abp/Localization/AbpStringLocalizerFactory.cs @@ -46,11 +46,9 @@ namespace Volo.Abp.Localization { resource.Initialize(_serviceProvider); - //Use JSON/XML/...etc based provider that reads resource from source and creates a dictionary //Extend dictionary with extensions //Wrap reader by wrappers (like db wrapper which implement multitenancy/regions and so on...) - - + //Notes: Localizer will be cached, so wrappers are responsible to cache/invalidate themselves! var localizer = new AbpDictionaryBasedStringLocalizer(resource); //TODO: !!! diff --git a/src/Volo.Abp/Volo/Abp/Localization/Json/JsonFileLocalizationDictionaryProvider.cs b/src/Volo.Abp/Volo/Abp/Localization/Json/JsonFileLocalizationDictionaryProvider.cs deleted file mode 100644 index 8c56a53ca3..0000000000 --- a/src/Volo.Abp/Volo/Abp/Localization/Json/JsonFileLocalizationDictionaryProvider.cs +++ /dev/null @@ -1,54 +0,0 @@ -//using System.IO; -//using Abp.Localization.Dictionaries.Xml; -//using Abp.Localization.Sources; - -//namespace Abp.Localization.Dictionaries.Json -//{ -// /// -// /// Provides localization dictionaries from json files in a directory. -// /// -// public class JsonFileLocalizationDictionaryProvider : LocalizationDictionaryProviderBase -// { -// private readonly string _directoryPath; - -// /// -// /// Creates a new . -// /// -// /// Path of the dictionary that contains all related XML files -// public JsonFileLocalizationDictionaryProvider(string directoryPath) -// { -// _directoryPath = directoryPath; -// } - -// public override void Initialize(string sourceName) -// { -// var fileNames = Directory.GetFiles(_directoryPath, "*.json", SearchOption.TopDirectoryOnly); - -// foreach (var fileName in fileNames) -// { -// var dictionary = CreateJsonLocalizationDictionary(fileName); -// if (Dictionaries.ContainsKey(dictionary.CultureInfo.Name)) -// { -// throw new AbpInitializationException(sourceName + " source contains more than one dictionary for the culture: " + dictionary.CultureInfo.Name); -// } - -// Dictionaries[dictionary.CultureInfo.Name] = dictionary; - -// if (fileName.EndsWith(sourceName + ".json")) -// { -// if (DefaultDictionary != null) -// { -// throw new AbpInitializationException("Only one default localization dictionary can be for source: " + sourceName); -// } - -// DefaultDictionary = dictionary; -// } -// } -// } - -// protected virtual JsonLocalizationDictionary CreateJsonLocalizationDictionary(string fileName) -// { -// return JsonLocalizationDictionary.BuildFromFile(fileName); -// } -// } -//} \ No newline at end of file diff --git a/test/Volo.Abp.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/test/Volo.Abp.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs index c413bdc9f9..88346e2521 100644 --- a/test/Volo.Abp.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs +++ b/test/Volo.Abp.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using System.Globalization; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Shouldly; using Volo.Abp.Localization.Source; @@ -40,7 +41,17 @@ namespace Volo.Abp.Localization _localizer["CarPlural"].Value.ShouldBe("Araba"); } } - + + [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"))["CarPlural"].Value.ShouldBe("Araba"); + _localizer.WithCulture(CultureInfo.GetCultureInfo("tr"))["CarPlural"].Value.ShouldBe("Araba"); + } + [DependsOn(typeof(AbpTestBaseModule))] public class TestModule : AbpModule {