문제

저는 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 도우미를 사용하고 있으며 지금까지는 매우 잘 작동했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top