gpt4 book ai didi

c# - 根据当前文化调用不同的(本地化的) View

转载 作者:太空狗 更新时间:2023-10-30 00:19:49 24 4
gpt4 key购买 nike

我正在使用实现 ActionFilterAttributeLocalizationAttribute 来本地化 View 。我只是将 [Localize] 放在 Controller 上。我正在使用 LocalizeStrings.resx 文件根据当前线程上的语言进行应用。一切都适用于这个简单的案例(使用本地化字符串)。现在我想本地化完整的页面(不仅仅是字符串)。

要完成此任务,您使用哪种方法?

我是否需要确定哪个线程在 Controller 上是当前线程并根据该值调用 View :

public ActionResult AboutUs()
{
switch (Thread.CurrentThread.CurrentUICulture.Name)
{
case "en-US":
return View("EnglishUSView");
case "de-DE":
return View("GermanView");
default:
return View();
}
return View();
}

或者您有什么推荐的吗?

最佳答案

我建议简单地扩展 RazorViewEngine 并覆盖 FindPartialViewFindView 以通知 ViewEngine 查看是否有当前文化的 View 线。如果找不到该页面,则照常进行。

  1. 扩展RazorViewEngine
  2. 在 View 文件夹中应该有(假设英语是默认语言。)Index.cshtmlIndex.de-DE.cshtml
  3. 修改 Global.asax.cs 文件,在应用程序启动内调用本地化 View 引擎(实现 RazorViewEngine 的引擎)

Controller

no further modification needed

观看次数

/Views/Home/Index.cshtml
/Views/Home/Index.de.DE.cshtml

助手

public class LocalizedRazorViewEngine : RazorViewEngine
{
public override ViewEngineResult FindPartialView ...
public override ViewEngineResult FindView...
}

应用程序启动

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new LocalizedRazorViewEngine());

关于c# - 根据当前文化调用不同的(本地化的) View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com