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

Joh*_*zek 17 c# asp.net-mvc localization orchardcms asp.net-mvc-5

目前我正在使用Orchard 1.9不同Main MenusCulture Layers(en/de).对于常规(翻译)内容,它正在运行.

但对于用户/帐户或MyModule/List等自定义模块/页面,菜单根本不显示.

我该如何解决这个问题?

Sha*_*edi 2

我不知道有任何过滤器设置该属性,但您绝对可以编写一个操作过滤器来执行相同的操作。

如果通过路由解析区域性,请使用以下代码:

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

}
}
Run Code Online (Sandbox Code Playgroud)

如果您在会话变量中设置了文化信息,请使用以下代码:

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

}
}
Run Code Online (Sandbox Code Playgroud)