mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.Routing;
|
|
using Orchard.Environment.Extensions;
|
|
using Orchard.Localization.Providers;
|
|
using Orchard.Localization.Services;
|
|
using Orchard.UI.Admin;
|
|
|
|
namespace Orchard.Localization.Selectors {
|
|
[OrchardFeature("Orchard.Localization.CutlureSelector")]
|
|
public class DefaultAdminCultureSelectorSelector : ICultureSelector {
|
|
private readonly IEnumerable<ICultureProvider> _providers;
|
|
|
|
public DefaultAdminCultureSelectorSelector(IEnumerable<ICultureProvider> providers) {
|
|
_providers = providers;
|
|
}
|
|
|
|
private bool IsActivable(HttpContextBase context) {
|
|
// activate on admin screen only
|
|
if (AdminFilter.IsApplied(new RequestContext(context, new RouteData())))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
public CultureSelectorResult GetCulture(HttpContextBase context) {
|
|
if (!IsActivable(context))
|
|
return null;
|
|
|
|
var cultureName = _providers
|
|
.OrderByDescending(x => x.Priority)
|
|
.Select(x => x.GetCulture())
|
|
.FirstOrDefault();
|
|
|
|
if (string.IsNullOrWhiteSpace(cultureName)) return null;
|
|
|
|
return new CultureSelectorResult { Priority = -4, CultureName = cultureName };
|
|
}
|
|
}
|
|
} |