- Making Localizer T properties public so the culture aware localizer can be injected.

- Some improvements to the resource manager.

--HG--
branch : dev
This commit is contained in:
Suha Can
2010-06-02 13:54:50 -07:00
parent 42292c8612
commit 3064a5fcb7
23 changed files with 69 additions and 27 deletions

View File

@@ -14,7 +14,7 @@ namespace Orchard.Core.Common.Drivers {
private readonly IOrchardServices _services;
private readonly IRoutableService _routableService;
private Localizer T { get; set; }
public Localizer T { get; set; }
protected override string Prefix {
get { return "Routable"; }

View File

@@ -26,7 +26,7 @@ namespace Orchard.Core.Navigation.Controllers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
public ActionResult Index(NavigationManagementViewModel model) {
if (!_services.Authorizer.Authorize(Permissions.ManageMainMenu, T("Not allowed to manage the main menu")))

View File

@@ -21,7 +21,7 @@ namespace Orchard.Core.Navigation.Drivers {
}
public virtual IUser CurrentUser { get; set; }
private Localizer T { get; set; }
public Localizer T { get; set; }
protected override DriverResult Editor(MenuPart part) {
if (!_authorizationService.TryCheckAccess(Permissions.ManageMainMenu, CurrentUser, part))

View File

@@ -28,7 +28,7 @@ namespace Orchard.Blogs.Controllers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
public IOrchardServices Services { get; set; }

View File

@@ -25,7 +25,7 @@ namespace Orchard.Blogs.Controllers {
}
public IOrchardServices Services { get; set; }
private Localizer T { get; set; }
public Localizer T { get; set; }
public ActionResult Create() {
if (!Services.Authorizer.Authorize(Permissions.EditBlogPost, T("Not allowed to create blog post")))

View File

@@ -29,7 +29,7 @@ namespace Orchard.Blogs.Controllers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
//TODO: (erikpo) Should think about moving the slug parameters and get calls and null checks up into a model binder or action filter
public ActionResult Item(string blogSlug, string postSlug) {

View File

@@ -36,7 +36,7 @@ namespace Orchard.Blogs.Drivers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
protected override ContentType GetContentType() {
return ContentType;

View File

@@ -27,7 +27,7 @@ namespace Orchard.Blogs.Drivers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
protected override ContentType GetContentType() {
return ContentType;

View File

@@ -19,7 +19,7 @@ namespace Orchard.MetaData.Controllers
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
//
// GET: /ContentTypeList/

View File

@@ -18,7 +18,7 @@ namespace Orchard.Modules.Controllers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
public ActionResult Index() {

View File

@@ -24,7 +24,7 @@ namespace Orchard.Modules.Services {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
public IModule GetModuleByName(string moduleName) {

View File

@@ -22,7 +22,7 @@ namespace Orchard.MultiTenancy.Controllers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
public ActionResult Index() {

View File

@@ -28,7 +28,7 @@ namespace Orchard.Pages.Controllers {
protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
public IOrchardServices Services { get; private set; }
private Localizer T { get; set; }
public Localizer T { get; set; }
public ActionResult List(PagesOptions options) {
// Default options

View File

@@ -20,7 +20,7 @@ namespace Orchard.Pages.Controllers {
}
public IOrchardServices Services { get; set; }
private Localizer T { get; set; }
public Localizer T { get; set; }
public ActionResult Item(string slug) {
if (!Services.Authorizer.Authorize(StandardPermissions.AccessFrontEnd, T("Couldn't view page")))

View File

@@ -31,7 +31,7 @@ namespace Orchard.Pages.Drivers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
protected override ContentType GetContentType() {
return ContentType;

View File

@@ -20,7 +20,7 @@ namespace Orchard.Pages.Services {
}
public IOrchardServices Services { get; private set; }
private Localizer T { get; set; }
public Localizer T { get; set; }
public string GetProviderName() {
return "PageHomePageProvider";

View File

@@ -35,7 +35,7 @@ namespace Orchard.Setup.Controllers {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
private ActionResult IndexViewResult(SetupViewModel model) {
string message;

View File

@@ -43,7 +43,7 @@ namespace Orchard.Setup.Services {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
public ShellSettings Prime() {
return _shellSettings;

View File

@@ -7,7 +7,7 @@ namespace Orchard.Themes.Services {
T = NullLocalizer.Instance;
}
private Localizer T { get; set; }
public Localizer T { get; set; }
public void ZoneRendering(ZoneRenderContext context) {
#if DEBUG

View File

@@ -40,7 +40,7 @@ namespace Orchard.Environment.Topology {
}
public ILogger Logger { get; set; }
private Localizer T { get; set; }
public Localizer T { get; set; }
#region Implementation of IShellDescriptorCache

View File

@@ -1,11 +1,53 @@
namespace Orchard.Localization.Services {
using System.Collections.Generic;
using Orchard.FileSystems.WebSite;
namespace Orchard.Localization.Services {
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;
private readonly IWebSiteFolder _webSiteFolder;
private readonly ICultureManager _cultureManager;
private readonly IList<CultureDictionary> _cultures;
const string CoreLocalizationFilePathFormat = "/Core/App_Data/Localization/{0}/orchard.core.po";
public DefaultResourceManager(ICultureManager cultureManager, IWebSiteFolder webSiteFolder) {
_cultureManager = cultureManager;
_webSiteFolder = webSiteFolder;
_cultures = new List<CultureDictionary>();
}
public string GetLocalizedString(string scope, string text, string cultureName) {
if (_cultures.Count == 0) {
LoadCultures();
}
if (cultureName.Equals("en-US")) {
return text;
}
return string.Empty;
}
private void LoadCultures() {
foreach (var culture in _cultureManager.ListCultures()) {
_cultures.Add(new CultureDictionary {
CultureName = culture,
Translations = LoadTranslationsForCulture(culture)
});
}
}
private IDictionary<string, string> LoadTranslationsForCulture(string culture) {
string path = string.Format(CoreLocalizationFilePathFormat, culture);
string text = _webSiteFolder.ReadFile(path);
return ParseLocalizationStream(text);
}
private static IDictionary<string, string> ParseLocalizationStream(string text) {
return new Dictionary<string, string>();
}
}
class CultureDictionary {
public string CultureName { get; set; }
public IDictionary<string, string> Translations { get; set; }
}
}

View File

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

View File

@@ -21,7 +21,7 @@ namespace Orchard.Localization {
Logger.Debug("{0} localizing '{1}'", _scope, textHint);
string currentCulture = _cultureManager.GetCurrentCulture(HttpContext.Current);
var localizedFormat = _resourceManager.GetLocalizedString(textHint, currentCulture);
var localizedFormat = _resourceManager.GetLocalizedString(_scope, textHint, currentCulture);
return args.Length < 1
? new LocalizedString(localizedFormat)