翻译层上的菜单在自定义模块站点上消失

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));

}
}