MVC 3에서 PL과 EN의 두 언어 사이에서 내보기를 전환하고 싶습니다. Views-EN 및 PL에 두 개의 폴더를 만들었습니다. 이 모든 스레드에 지속적 CultureInfo를 변경 내가 적절한 링크 (언어 스위처)를 클릭경로를 전체적으로 변경하는 방법은 무엇입니까?
routes.MapRoute(
"en", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "EN", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
:
routes.MapRoute(
"pl", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "PL", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
에 : 그래서 어떤 사이트에서 해당 언어 링크를 클릭 한 후 나는에서 내 경로 변경을 원하는 . 스위처 _Layout 전망 :
<ul>
<li>@Html.ActionLink("En", "ChangeCulture", null, new { lang = "en"}, null)</li>
<li>@Html.ActionLink("Pl", "ChangeCulture", null, new { lang = "pl"}, null)</li>
</ul>
및 (또는 각 제어기의 방법에서 본와 요청 사이 영속 될 수있는 정적 변수 LANG 세트) 컨트롤러 :
public ActionResult ChangeCulture(string lang)
{
PLController.lang = lang;
CultureSettings setCulture = new CultureSettings();
setCulture.InitializeCulture(lang);
cookie.Value = CultureInfo.CurrentCulture.Name;
this.ControllerContext.HttpContext.Response.Cookies.Add(cookie);
return View("Index");
}
InitializeCulture 방법 페이지 오버라이드
public class CultureSettings : Page{
public void InitializeCulture(string culture)
{
String selectedLanguage;
if(culture == null)
{
selectedLanguage = "pl";
}
else
{
selectedLanguage = culture;
}
UICulture = selectedLanguage;
Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);
base.InitializeCulture();
}
}
CultureInfo를 올바르게 설정합니다. 이제는 (현재 CultureInfo에 따라) 모든 탐색 링크의 경로를 전환하고 mysite.com/PL/{controller}/{action}에서 mysite.com/EN/{controller}/{action}로 경로 패턴을 변경하고 싶습니다.
누구든지이 문제에 대한 아이디어 나 더 나은 접근 방법이 있습니까? 그러나 주소는 mysite.com/EN 또는 mysite.com/PL과 같아야합니다 - 차이가 없습니다 (예 : en.mysite.com)
대단히 감사합니다! 나는이 접근법을 시도 할 것이다! – lukaleli
그리고 작동하지 않기 때문에 또 다른 질문이 있습니다./ 이유는 모르겠지만 애플리케이션이 시작된 후 라우트가 설정되지 않았다고 생각합니다. 오류가 있습니다 : '/'응용 프로그램의 서버 오류입니다. 리소스를 찾을 수 없습니다. 설명 : HTTP 404. 찾고있는 리소스 (또는 해당 종속성 중 하나)가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수없는 리소스 일 수 있습니다. 다음 URL을 검토하고 철자가 올바른지 확인하십시오. 요청 된 URL :/ 아이디어가 있으십니까? 나는 ASP.NET과 MVC에서 완전히 초보자입니다. – lukaleli
좋습니다, 지금 작동 중입니다. 컨트롤러의 이름을 변경하는 것을 잊었습니다.) – lukaleli