J'essayais d'être plein d'esprit et j'utilisais un VirtualPathProvider pour trouver des vues localisées. Il prend le chemin d'accès demandé et le modifie lors de la vérification après le fichier. Il retourne un fichier virtuel localisé si trouvé:Vues localisées avec 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
}
Le problème est que je reçois l'exception suivante:
Le VirtualPathProvider retourné un objet VirtualFile avec VirtualPath réglé sur «/vues/Shared/_Layout. sv.cshtml 'au lieu de' /Views/Shared/_Layout.cshtml 'attendu.
Bien sûr, je pourrais simuler le chemin du fichier, mais cela causerait des problèmes avec la mise en cache et différentes localisations. Droite?
Quelqu'un at-il une meilleure façon de créer des vues localisées? Je ne veux pas utiliser la même vue mais avec des chaînes de ressources à la place. De telles vues sont si horribles qu'elles me font presque pleurer parce qu'elles sont si difficiles à lire.
Si vous avez toujours pas compris ce que je cherche:
/Views/User/Details.sv.cshtml
Hejsan @Model.FirstName
Detta är en lite rolig text på svenska.
/Vues/utilisateur/Details.en.cshtml
Hello @Model.FirstName
This is a test on english.
Contrôleur
public ActionResult Details()
{
return View(new User()); //should automagically use a swedish or english view
}
Je veux être en mesure de changer de vue (à une localisée à l'aide CurrentCulture) sans avoir à faire quoi que ce soit manuellement à chaque demande.
pourquoi ne pas simplement la mise en œuvre ASP.NET mondialisation? Je le fais pour tous les pays scandinaves et fonctionne comme un charme. La fin, j'ai une vue avec le texte du dossier 'App_GlobalResources'. – balexandre
Parce qu'il rend les vues illisibles par rapport à une vue par langue. – jgauffin