Я старался быть остроумным и использовать VirtualPathProvider для поиска локализованных представлений. Он принимает запрошенный путь просмотра и изменяет его при проверке после файла. Она возвращает локализованную виртуальный файл, если найдено:Локализованные виды с помощью Razor
public pseudoclass MyFileProvider : VirtualPathProvider
{
bool FileExists(string requestedPath)
{
if (IsLocalizedView(requestedPath))
return true;
return base.FileExists(requestedPath);
}
bool IsLocalizedView(string requestedPath)
{
var uri = requestedUri.AddLocaleByMagic("sv");
if (FileExistsInternal(uri))
return true;
}
//some more stuff to return the actual file
}
Проблема заключается в том, что я получаю следующее исключение:
VirtualPathProvider возвращается объект VirtualFile с VirtualPath установлен в «/ Views/Shared/_layout. sv.cshtml 'вместо ожидаемого' /Views/Shared/_Layout.cshtml '.
Несомненно, я мог бы подделывать путь к файлу, но это создавало бы проблемы с кешированием и различными локализациями. Правильно?
У кого-нибудь есть лучший способ создать локализованные виды? Вместо этого я не хочу использовать один и тот же вид, но вместо строк ресурсов. Такие взгляды настолько ужасны, что они почти заставляют меня плакать, потому что их так трудно читать.
Если вы до сих пор не поняли, что я ищу:
/Views/User/Details.sv.cshtml
Hejsan @Model.FirstName
Detta är en lite rolig text på svenska.
/Views/Пользователь/Details.en.cshtml
Hello @Model.FirstName
This is a test on english.
Контроллер
public ActionResult Details()
{
return View(new User()); //should automagically use a swedish or english view
}
Я хочу, чтобы иметь возможность переключения между видами (на локализованное с помощью CurrentCulture) без необходимости делать что-либо вручную при каждом запросе.
почему бы не только реализации глобализации ASP.NET? Я делаю это для всех скандинавских стран и работает как шарм. В конце у меня есть один вид с текстом из папки «App_GlobalResources». – balexandre
Потому что это делает просмотр нечитабельным по сравнению с одним видом на язык. – jgauffin