我正在寻找一种方法来强制Orchard为后端使用固定语言,同时仍然可以使用CulturePicker作为前端。
任何暗示都会受到高度赞赏 - 作为我在Orchard的第一个项目我真的不知道从哪里开始 - 除了丑陋的黑客......
答案 0 :(得分:2)
最简单的方法是实现自己的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;
}
}