mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
- 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:
@@ -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"; }
|
||||
|
||||
@@ -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")))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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; }
|
||||
|
||||
|
||||
@@ -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")))
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Orchard.MetaData.Controllers
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
private Localizer T { get; set; }
|
||||
public Localizer T { get; set; }
|
||||
//
|
||||
// GET: /ContentTypeList/
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user