- Localizer to use CultureManager, ResourceManager to translate strings.

- Stub ResourceManager implementation.
- Some test updates.

--HG--
branch : dev
This commit is contained in:
Suha Can
2010-06-01 16:25:29 -07:00
parent a034d9ce49
commit 413a943194
9 changed files with 35 additions and 11 deletions

View File

@@ -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" };
}
}

View File

@@ -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)

View File

@@ -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;
}
}
}

View File

@@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Web.Routing;
using System.Web;
namespace Orchard.Localization {
public interface ICultureManager : IDependency {
IEnumerable<string> ListCultures();
void AddCulture(string cultureName);
string GetCurrentCulture(RequestContext requestContext);
string GetCurrentCulture(HttpContext requestContext);
}
}

View File

@@ -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);
}
}

View File

@@ -0,0 +1,5 @@
namespace Orchard.Localization {
public interface IResourceManager : IDependency {
string GetLocalizedString(string key, string cultureName);
}
}

View File

@@ -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)) {

View File

@@ -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)

View File

@@ -144,8 +144,10 @@
<Compile Include="Environment\State\ShellStateCoordinator.cs" />
<Compile Include="IDependency.cs" />
<Compile Include="Localization\DefaultCultureManager.cs" />
<Compile Include="Localization\DefaultResourceManager.cs" />
<Compile Include="Localization\ICultureManager.cs" />
<Compile Include="Localization\ICultureSelector.cs" />
<Compile Include="Localization\IResourceManager.cs" />
<Compile Include="Localization\Records\CultureRecord.cs" />
<Compile Include="Localization\SiteCultureSelector.cs" />
<Compile Include="Mvc\Html\ThemeExtensions.cs" />