c# - MVC5 website - internationalization of views -
i've been following multiple tutorials (such this one) , able build multilanguage asp.net website through resource (.resx) files.
the thing is, nice words or phrases... if have view multiple paragraphs of hundreds of words? how manage that? feeling key-value translation of .resx file seems rather inefficient in case.
i've been doing lot of research trying solve that, no success far. closest i've gotten has been this post (which provides .zip code), unfortunately based on mvc4 (not 5) , not able translate mvc5. uses brilliant solution solve "i want view rendered in language" problem: add suffix viewname.fr.cshtml view automatically redirected correct language. code that, , got stuck in 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()); } } it not want make particular code work want find solution "show view in particular language" problem.
Comments
Post a Comment