Я пытаюсь сделать функцию локализации в своем проекте
У меня есть <li>@Html.ActionLink(Resources.HomeTexts.Home, "Index", "Home")</li>
для меню.Также у меня есть переключатель языка
<li>@Html.ActionLink("French", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { lang = "fr" }, null)</li>
У меня есть файл файла ресурсов GomeTexts.fr.resx, где я устанавливаю для настраиваемого инструмента значение PublicResXFileCodeGenerator и ресурсы пространства имен настраиваемого инструмента.
У меня есть настройка конфигурации
routes.MapRoute(
name: "DefaultLocalized",
url: "{lang}/{controller}/{action}/{id}",
constraints: new { lang = @"(\w{2})|(\w{2}-\w{2})" }, // en or en-US
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, lang="en" }
);
У меня есть Global.asax
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies["lang"];
if(cookie!=null && cookie.Value != null)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
}
else
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr");
}
}
У меня есть контроллер
public ActionResult Index(string lang)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
return View();
}
Но ничего не помогает, да, когда я нажимаю по-французски в адресной строке, я вижу fr, ноязык по-прежнему берется из панели ресурсов по умолчанию.Я даже установил «fr» вручную, но все равно ничего.Что я делаю, возможно, не так?