diff --git a/src/Orchard/Localization/Services/DefaultCultureManager.cs b/src/Orchard/Localization/Services/DefaultCultureManager.cs index c1a7e1523..86f4cfcbf 100644 --- a/src/Orchard/Localization/Services/DefaultCultureManager.cs +++ b/src/Orchard/Localization/Services/DefaultCultureManager.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text.RegularExpressions; using System.Web; using JetBrains.Annotations; +using Orchard.Caching; using Orchard.Data; using Orchard.Localization.Records; using Orchard.Settings; @@ -12,10 +13,12 @@ namespace Orchard.Localization.Services { public class DefaultCultureManager : ICultureManager { private readonly IRepository _cultureRepository; private readonly IEnumerable _cultureSelectors; + private readonly ISignals _signals; - public DefaultCultureManager(IRepository cultureRepository, IEnumerable cultureSelectors) { + public DefaultCultureManager(IRepository cultureRepository, IEnumerable cultureSelectors, ISignals signals) { _cultureRepository = cultureRepository; _cultureSelectors = cultureSelectors; + _signals = signals; } protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; } @@ -30,6 +33,7 @@ namespace Orchard.Localization.Services { throw new ArgumentException("cultureName"); } _cultureRepository.Create(new CultureRecord { Culture = cultureName }); + _signals.Trigger("culturesChanged"); } public void DeleteCulture(string cultureName) { @@ -38,8 +42,10 @@ namespace Orchard.Localization.Services { } var culture = _cultureRepository.Get(cr => cr.Culture == cultureName); - if (culture != null) + if (culture != null) { _cultureRepository.Delete(culture); + _signals.Trigger("culturesChanged"); + } } public string GetCurrentCulture(HttpContext requestContext) { diff --git a/src/Orchard/Localization/Services/DefaultResourceManager.cs b/src/Orchard/Localization/Services/DefaultResourceManager.cs index 3f0871041..a51be91e2 100644 --- a/src/Orchard/Localization/Services/DefaultResourceManager.cs +++ b/src/Orchard/Localization/Services/DefaultResourceManager.cs @@ -14,6 +14,7 @@ namespace Orchard.Localization.Services { private readonly IExtensionManager _extensionManager; private readonly ICacheManager _cacheManager; private readonly ShellSettings _shellSettings; + private readonly ISignals _signals; const string CoreLocalizationFilePathFormat = "/Core/App_Data/Localization/{0}/orchard.core.po"; const string ModulesLocalizationFilePathFormat = "/Modules/{0}/App_Data/Localization/{1}/orchard.module.po"; const string RootLocalizationFilePathFormat = "/App_Data/Localization/{0}/orchard.root.po"; @@ -24,12 +25,14 @@ namespace Orchard.Localization.Services { IWebSiteFolder webSiteFolder, IExtensionManager extensionManager, ICacheManager cacheManager, - ShellSettings shellSettings) { + ShellSettings shellSettings, + ISignals signals) { _cultureManager = cultureManager; _webSiteFolder = webSiteFolder; _extensionManager = extensionManager; _cacheManager = cacheManager; _shellSettings = shellSettings; + _signals = signals; } // This will translate a string into a string in the target cultureName. @@ -96,6 +99,7 @@ namespace Orchard.Localization.Services { Translations = LoadTranslationsForCulture(culture, ctx) }); } + ctx.Monitor(_signals.When("culturesChanged")); return cultures; });