目前,我在Culture Layers
上使用带有不同Main Menus
的Orchard 1.9
(en/de)。对于常规(翻译的)内容,它是有效的。
但对于自定义模块/页面,如User/Account或MyModule/List,菜单根本不会出现。
如何解决此问题?
发布于 2015-04-23 21:29:12
我不知道有什么过滤器来设置这个属性,但是你绝对可以编写一个动作过滤器来做同样的事情。
如果区域性是通过路由解析的,请使用以下代码:
using System.Globalization;
using System.Threading;
using System.Web.Mvc;
public class CultureAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
string language = (string)filterContext.RouteData.Values["language"] ?? "en";
string culture = (string)filterContext.RouteData.Values["culture"] ?? "US";
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
}
}
如果在会话变量中设置了区域性信息,请使用以下代码:
using System.Globalization;
using System.Threading;
using System.Web.Mvc;
public class CultureAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
string language = (string)filterContext.HttpContext.Session.Contents["language"] ?? "en";
string culture = (string)filterContext.HttpContext.Session.Contents["culture"] ?? "US";
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
}
}
https://stackoverflow.com/questions/29642507
复制相似问题