ASP.NET MVC:Thread.CurrentThread.CurrentUICulture를 언제 설정합니까?
-
06-07-2019 - |
문제
저는 ASP.NET MVC 응용 프로그램을 지역화하기 시작했습니다.대부분의 문자열은 리소스 파일에 정의되고 다음을 통해 검색됩니다. Matt의 현지화 도우미.다른 문자열은 데이터베이스에 저장해야 합니다.
내 질문: 설정해야 할까요? CurrentUICulture
요청 파이프라인 초기에 이를 애플리케이션 전체에서 사용하거나 직접 사용합니다. Request.UserLanguages[0]
필요할 때마다?
지금 바로 설정해야 겠다는 생각이 드네요 CurrentUICulture
Application_BeginRequest에서.구현은 다음과 같습니다.
protected void Application_BeginRequest(object sender, EventArgs e)
{
var cultureName = HttpContext.Current.Request.UserLanguages[0];
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}
여기가 설정하기 가장 좋은 곳인가요? CurrentUICulture
그리고는 Request.UserLanguages[0]
그 정보를 얻을 수 있는 가장 좋은 곳은?
업데이트:
아리엘의 게시물에서는 다음을 사용하여 코드 없이 정의할 수 있음을 보여줍니다. web.config
<system.web>
<!--If enableClientBasedCulture is true, ASP.NET can set the UI culture and culture for a Web page automatically, based on the values that are sent by a browser.-->
<globalization enableClientBasedCulture="true" culture="auto:en-US" uiCulture="auto:en"/>
해결책
다음은 httpmodule을 사용하는 샘플입니다.
http://weblogs.manas.com.ar/smedina/2008/12/17/internationalization-in-aspnet-mvc/
다른 옵션, 기본 컨트롤러 클래스를 생성하고 현지화 로직을 구현하십시오. 또는 액션 필터 속성을 사용하지만 모든 컨트롤러에 추가 하거나이 접근법을 기본 컨트롤러 클래스와 결합해야합니다.
다른 팁
Request.UserLanguages[0]는 사용자가 보고 싶어하는 언어에 대한 힌트일 뿐입니다.대부분의 사용자는 브라우저 언어를 어디에서 변경해야 하는지 모릅니다.
또 다른 요점:Request.UserLanguages[0]가 유효한 언어인지 확인하지 마세요.null일 수도 있습니다.(어떤 봇이 있는지는 잘 모르겠습니다)
일반적으로 페이지에 언어 선택기가 있습니다.사용자가 언어를 선택하면 해당 언어는 쿠키, 세션 또는 URL에 저장됩니다.나는 URL이 예쁘다고 생각하기 때문에 URL을 사용하는 것을 좋아합니다.
사용자가 페이지에 언어를 설정하지 않은 채 페이지를 보는 경우 Request.UserLanguages[0]가 지원하는 언어인지 확인하고 Thread.CurrentThread.CurrentUICulture를 설정해야 합니다.
Thread.CurrentThread.CurrentUICulture를 설정하기 위해 필터를 사용합니다.다른 필터가 Thread.CurrentThread.CurrentUICulture를 사용하지 않는 한 괜찮습니다.그렇지 않으면 필터에 대한 올바른 실행 순서를 설정해야 합니다.
나는 또한 Matts 도우미를 사용하고 있으며 지금까지는 매우 잘 작동했습니다.