From 413a943194d5733e63eba4005bc4bf14807a5de3 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Tue, 1 Jun 2010 16:25:29 -0700 Subject: [PATCH] - Localizer to use CultureManager, ResourceManager to translate strings. - Stub ResourceManager implementation. - Some test updates. --HG-- branch : dev --- src/Orchard.Tests/Localization/CultureManagerTests.cs | 2 +- src/Orchard/Localization/DefaultCultureManager.cs | 3 ++- src/Orchard/Localization/DefaultResourceManager.cs | 11 +++++++++++ src/Orchard/Localization/ICultureManager.cs | 4 ++-- src/Orchard/Localization/ICultureSelector.cs | 4 ++-- src/Orchard/Localization/IResourceManager.cs | 5 +++++ src/Orchard/Localization/SiteCultureSelector.cs | 4 ++-- src/Orchard/Localization/Text.cs | 11 ++++++++--- src/Orchard/Orchard.Framework.csproj | 2 ++ 9 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 src/Orchard/Localization/DefaultResourceManager.cs create mode 100644 src/Orchard/Localization/IResourceManager.cs diff --git a/src/Orchard.Tests/Localization/CultureManagerTests.cs b/src/Orchard.Tests/Localization/CultureManagerTests.cs index ac4208767..3c734b143 100644 --- a/src/Orchard.Tests/Localization/CultureManagerTests.cs +++ b/src/Orchard.Tests/Localization/CultureManagerTests.cs @@ -87,7 +87,7 @@ namespace Orchard.Tests.Localization { } public class TestCultureSelector : ICultureSelector { - public CultureSelectorResult GetCulture(RequestContext context) { + public CultureSelectorResult GetCulture(HttpContext context) { return new CultureSelectorResult { Priority = 1, CultureName = "en-US" }; } } diff --git a/src/Orchard/Localization/DefaultCultureManager.cs b/src/Orchard/Localization/DefaultCultureManager.cs index a2b8e409a..a7dce546e 100644 --- a/src/Orchard/Localization/DefaultCultureManager.cs +++ b/src/Orchard/Localization/DefaultCultureManager.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using System.Web; using System.Web.Routing; using Orchard.Data; using Orchard.Localization.Records; @@ -28,7 +29,7 @@ namespace Orchard.Localization { _cultureRepository.Create(new CultureRecord { Culture = cultureName }); } - public string GetCurrentCulture(RequestContext requestContext) { + public string GetCurrentCulture(HttpContext requestContext) { var requestCulture = _cultureSelectors .Select(x => x.GetCulture(requestContext)) .Where(x => x != null) diff --git a/src/Orchard/Localization/DefaultResourceManager.cs b/src/Orchard/Localization/DefaultResourceManager.cs new file mode 100644 index 000000000..29d6afe9e --- /dev/null +++ b/src/Orchard/Localization/DefaultResourceManager.cs @@ -0,0 +1,11 @@ +namespace Orchard.Localization { + public class DefaultResourceManager : IResourceManager { + // This will use the .po files shortly. + public string GetLocalizedString(string key, string cultureName) { + if (cultureName.Equals("en-US")) { + return key; + } + return string.Empty; + } + } +} diff --git a/src/Orchard/Localization/ICultureManager.cs b/src/Orchard/Localization/ICultureManager.cs index f0f3c4fb5..cbdb305c8 100644 --- a/src/Orchard/Localization/ICultureManager.cs +++ b/src/Orchard/Localization/ICultureManager.cs @@ -1,10 +1,10 @@ using System.Collections.Generic; -using System.Web.Routing; +using System.Web; namespace Orchard.Localization { public interface ICultureManager : IDependency { IEnumerable ListCultures(); void AddCulture(string cultureName); - string GetCurrentCulture(RequestContext requestContext); + string GetCurrentCulture(HttpContext requestContext); } } diff --git a/src/Orchard/Localization/ICultureSelector.cs b/src/Orchard/Localization/ICultureSelector.cs index e35b3c20c..4d0c48307 100644 --- a/src/Orchard/Localization/ICultureSelector.cs +++ b/src/Orchard/Localization/ICultureSelector.cs @@ -1,4 +1,4 @@ -using System.Web.Routing; +using System.Web; namespace Orchard.Localization { public class CultureSelectorResult { @@ -7,6 +7,6 @@ namespace Orchard.Localization { } public interface ICultureSelector : IDependency { - CultureSelectorResult GetCulture(RequestContext context); + CultureSelectorResult GetCulture(HttpContext context); } } diff --git a/src/Orchard/Localization/IResourceManager.cs b/src/Orchard/Localization/IResourceManager.cs new file mode 100644 index 000000000..ef4263e15 --- /dev/null +++ b/src/Orchard/Localization/IResourceManager.cs @@ -0,0 +1,5 @@ +namespace Orchard.Localization { + public interface IResourceManager : IDependency { + string GetLocalizedString(string key, string cultureName); + } +} diff --git a/src/Orchard/Localization/SiteCultureSelector.cs b/src/Orchard/Localization/SiteCultureSelector.cs index a836b0181..7ce1e044b 100644 --- a/src/Orchard/Localization/SiteCultureSelector.cs +++ b/src/Orchard/Localization/SiteCultureSelector.cs @@ -1,5 +1,5 @@ using System; -using System.Web.Routing; +using System.Web; using JetBrains.Annotations; using Orchard.Settings; @@ -7,7 +7,7 @@ namespace Orchard.Localization { public class SiteCultureSelector : ICultureSelector { protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; } - public CultureSelectorResult GetCulture(RequestContext context) { + public CultureSelectorResult GetCulture(HttpContext context) { string currentCultureName = CurrentSite.SiteCulture; if (String.IsNullOrEmpty(currentCultureName)) { diff --git a/src/Orchard/Localization/Text.cs b/src/Orchard/Localization/Text.cs index 1df0c2b07..da94640ad 100644 --- a/src/Orchard/Localization/Text.cs +++ b/src/Orchard/Localization/Text.cs @@ -1,11 +1,16 @@ +using System.Web; using Orchard.Logging; namespace Orchard.Localization { public class Text : IText { private readonly string _scope; + private readonly ICultureManager _cultureManager; + private readonly IResourceManager _resourceManager; - public Text(string scope) { + public Text(string scope, ICultureManager cultureManager, IResourceManager resourceManager) { _scope = scope; + _cultureManager = cultureManager; + _resourceManager = resourceManager; Logger = NullLogger.Instance; } @@ -14,8 +19,8 @@ namespace Orchard.Localization { public LocalizedString Get(string textHint, params object[] args) { Logger.Debug("{0} localizing '{1}'", _scope, textHint); - //todo: actually localize the textHint - var localizedFormat = textHint; + string currentCulture = _cultureManager.GetCurrentCulture(HttpContext.Current); + var localizedFormat = _resourceManager.GetLocalizedString(textHint, currentCulture); return args.Length < 1 ? new LocalizedString(localizedFormat) diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index f5bf61389..92e21efd7 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -144,8 +144,10 @@ + +