翻译层上的菜单在自定义模块站点上消失
Menu on Translation Layer disappearing on Custom Module Sites
目前我在 Culture Layers
(en/de) 上使用 Orchard 1.9
和不同的 Main Menus
。对于常规(翻译的)内容,它正在工作。
但是对于像 User/Account 或 MyModule/List 这样的自定义 Modules/Pages,菜单根本没有出现。
我该如何解决这个问题?
我不知道有任何设置该属性的过滤器,但您绝对可以编写一个动作过滤器来做同样的事情。
如果通过路由解析区域性,请使用以下代码:
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));
}
}
目前我在 Culture Layers
(en/de) 上使用 Orchard 1.9
和不同的 Main Menus
。对于常规(翻译的)内容,它正在工作。
但是对于像 User/Account 或 MyModule/List 这样的自定义 Modules/Pages,菜单根本没有出现。
我该如何解决这个问题?
我不知道有任何设置该属性的过滤器,但您绝对可以编写一个动作过滤器来做同样的事情。
如果通过路由解析区域性,请使用以下代码:
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));
}
}