Есть ли способ дублировать представления для локализации - PullRequest
0 голосов
/ 26 февраля 2020

Поскольку на моем сайте много контента, есть ли способ дублировать просмотры для каждого языка? Например, у меня будет несколько представлений, таких как About_en.cs html, About_fr.cs html, About_es.cs html

Затем вызовите нужное представление в зависимости от выбранного языка с помощью фильтров. Не знаю, как этого добиться, но вот идея:

var v = ViewEngines.Engines.FindView(
filterContext.Controller.ControllerContext,
viewResult.ViewName + "_" + defaultLang, null
    );
if (v.View != null)
viewResult.ViewName += "_" + defaultLang;

Или, может быть, у вас есть другая идея, чем файлы ресурсов для веб-сайта с большим содержанием. Спасибо.

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете легко сделать это условным в функции. Все, что вам нужно сделать, это просто упомянуть имя этого представления при возврате из функции:

[HttpGet]
public ActionResult Foo(string lang)
{
    string ViewName = "";

    if (lang == "French")
    {
         ViewName = "About_fr";
    }
    else if (lang == "English")
    {
         ViewName = "About_en";
    }
    else
    {
         ViewName = "About_es";
    }

    return View(ViewName);
}

Вышесказанное поможет. Кроме того, если у вас есть модель, привязанная к представлению, вы можете просто передать модель в качестве второго параметра:

return View(ViewName, model);
...