"[en]"또는 "it"인 세션 [ "lang"]에 내 대상 언어가 있습니다. 나는 Site.master이 추가되었습니다 :asp.net MVC : 현지화
<script runat="server">
void Page_Load(object sender, EventArgs e) {
string lang = Session["lang"].ToString();
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
}
</script>
그런 다음 나는이 같은 리소스 문자열 호출하고 싶습니다 :
<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Global, test %>"></asp:Label>
내가 가진를 Global.resx라는 App_GlobalResources에 두 개의 파일, Global.en.resx.
문제는 LANG 변수에 상관없이, 나는 항상 주 Global.resx에서 결과를 얻을, 나는 결코 내가이 일을하고
Global.en.resx
에서 영어 버전을 얻을 수 없다는 것입니다 틀린 전체?Global.asax.cs의 Application_PreRequestHandlerExecute 메서드에 System.Threading ... 부분을 넣으려고했으나 결과는 동일했습니다.
감사
PS : 나는 간단한 방법으로이 일을 할 수있는 방법에 대한 질문입니다. 만약 내가 복잡한 방법을 사용했다면, 나는 이것과 함께 갈 것이라고 : http://helios.ca/2009/05/27/aspnet-mvc-and-localization/
도움이되지 않습니다. 죄송합니다 : "문화를 설정해야하는 경우 사용자의 기본 설정이나 URL 매개 변수에 따라 위로 설정하면 가장 적합한 방법은 사용자 지정 HTTP 모듈 또는 작업 필터를 작성하는 것입니다. " 아마 이런 식으로 할 방법이 없을까요? – Palantir
물론 문화를 설정하는 방법이 있습니다. 사용자 사이트의 사용자 환경 설정에 쿠키를 저장하면 인스턴스 생성자 (생성자)에서 쿠키를 읽고 CultureUI/Culture를 설정하는 컨트롤러를 만듭니다. 그런 다음 모든 컨트롤러가 해당 컨트롤러로부터 inhereit해야합니다. – Konstantinos
로캘을 읽고 원하는대로 설정하려고 할 때까지 : System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US"); System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo ("en-US"); – Konstantinos