Joh*_*zek 17 c# asp.net-mvc localization orchardcms asp.net-mvc-5
目前我正在使用Orchard 1.9
不同Main Menus
的Culture Layers
(en/de).对于常规(翻译)内容,它正在运行.
但对于用户/帐户或MyModule/List等自定义模块/页面,菜单根本不显示.
我该如何解决这个问题?
我不知道有任何过滤器设置该属性,但您绝对可以编写一个操作过滤器来执行相同的操作。
如果通过路由解析区域性,请使用以下代码:
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)
归档时间: |
|
查看次数: |
245 次 |
最近记录: |