我一直在关注多个教程(例如this one),并且我能够通过资源(.resx)文件构建多语言ASP.NET网站。
问题是,对于单词或短语来说这很好......但是如果你有一个包含数百个单词的多个段落的视图呢?你是如何管理的?我的感觉是,在这种情况下,.resx文件的键值转换看起来效率很低。
我一直在做很多研究试图解决这个问题,到目前为止还没有成功。我最接近的是this post(甚至为.zip提供了所有代码),但遗憾的是它基于MVC4(不是5),我无法将其转换为MVC5。但它使用了一个出色的解决方案来解决这个问题,我希望用这种语言呈现这个视图。问题:添加后缀ViewName.fr.cshtml
,以便视图自动重定向到正确的语言。这就是代码,这就是我陷入MVC5的地方:
public class LocalizedViewEngine : RazorViewEngine
{
public override ViewEngineResult FindPartialView (ControllerContext controllerContext, string partialViewName, bool useCache)
{
List<string> searched = new List<string>();
if (!string.IsNullOrEmpty(partialViewName))
{
ViewEngineResult result;
result = base.FindPartialView(controllerContext, string.Format("{0}.{1}", partialViewName, CultureInfo.CurrentUICulture.Name), useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
result = base.FindPartialView(controllerContext, string.Format("{0}.{1}", partialViewName, CultureInfo.CurrentUICulture.TwoLetterISOLanguageName), useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
}
return new ViewEngineResult(searched.Distinct().ToList());
}
public override ViewEngineResult FindView (ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
List<string> searched = new List<string>();
if (!string.IsNullOrEmpty(viewName))
{
ViewEngineResult result;
result = base.FindView(controllerContext, string.Format("{0}.{1}", viewName, CultureInfo.CurrentUICulture.Name), masterName, useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
result = base.FindView(controllerContext, string.Format("{0}.{1}", viewName, CultureInfo.CurrentUICulture.TwoLetterISOLanguageName), masterName, useCache);
if (result.View != null)
{
return result;
}
searched.AddRange(result.SearchedLocations);
}
return new ViewEngineResult(searched.Distinct().ToList());
}
}
并不是说我想让这个特定的代码工作,但我想找到一个解决方案来显示特定语言的视图&#34;问题