Подтвердить что ты не робот

Меню на уровне перевода исчезает на сайтах пользовательского модуля

В настоящее время я использую Orchard 1.9 с разными Main Menus на Culture Layers (ru/de). Для обычного (переведенного) контента он работает.

Но для пользовательских модулей/страниц, таких как User/Account или MyModule/List, меню не отображается вообще.

Как я могу исправить эту проблему?

4b9b3361

Ответ 1

Я не знаю ни одного фильтра, который устанавливает атрибут, но вы можете определенно написать фильтр действий, чтобы сделать то же самое.

Если культура разрешается посредством маршрутизации, используйте следующий код:

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

}
}