1

我正在寻找一种方法来强制 Orchard 在后端使用固定语言,同时仍然能够将 CulturePicker 用于前端。

任何提示都将受到高度赞赏 - 作为我在 Orchard 的第一个项目,我真的不知道从哪里开始 - 除了丑陋的黑客......

4

1 回答 1

3

最简单的方法是实现自己的ICultureSelector.

您需要先检查用户是否在管理屏幕上。如果是这样,则返回默认站点文化,否则返回 null(这样下一个文化选择器,在您的情况下是来自 CulturePicker 的选择器)。

例子:

    public class AdminCultureSelector : ICultureSelector {
    private readonly IWorkContextAccessor _workContextAccessor;

    public AdminCultureSelector(IWorkContextAccessor workContextAccessor) {
        _workContextAccessor = workContextAccessor;
    }

    public CultureSelectorResult GetCulture(HttpContextBase context)
    {
        string currentCultureName = _workContextAccessor.GetContext().CurrentSite.SiteCulture;

        if (!String.IsNullOrEmpty(currentCultureName) && AdminFilter.IsApplied(context.Request.RequestContext)) {
            return new CultureSelectorResult { Priority = 1000, CultureName = currentCultureName };
        }

        return null;
    }
}
于 2012-11-09T16:10:39.230 回答