현재 프로젝트 내에, 일부 사용자가 다른 목적지에 도착할 때와 세계 각국 여행 것 이다, 어떤 기계는 시간에 편리 하 게 사용. 그 게스트 컴퓨터 Windows를 실행 하는 것입니다 및 설치 하 고 로컬 로케일에 대 한 구성. (난 그냥 게스트 컴퓨터 오른쪽 언어 팩 없을 수 있습니다 실현 했습니다.… 아마 되지 않습니다., 사실… 지금 한 주차 오전).
SharePoint에 의하여 사용자 수 있습니다 그들의 선호 하는 언어를 선택 그리고 이끼 어떻게 사용자 액세스 모스에 해당 언어를 명예 메커니즘을 제공 해야. 다른 말로, 어떤 브라우저의 알은 IIS/모스 무시 대신 그 선호 하는 언어를 조회 하 고 그것을 사용 하 여.
우리는 2 개의 접근을 조사 하 려:
- HTTP 처리기: 사용자 지정 HTTP 처리기를 IIS에 설치 되어 사용자의 모스 프로필을 볼 것 이다, 선호 하는 언어를 파악 하 고 이끼에 제어를 전달 하기 전에 필요에 따라 주위 HTTP 헤더를 전환.
- global.asax: 같은 일을 global.asax를 수정. 우리는 다른 것을 수정할 수 있습니다., 하지만 생각은 우리가 우리가 우리의 로캘 스위칭 논리를 삽입할 수 있습니다 일부 장소를 찾을 수.
다른 있느냐는 우리가 해야 지원 60 k 사용자입니다., 에 대 한 1,000 수 수 동시에 액세스 모스 피크에서 로드.
HTTP 처리기는 꽤 과감 한 것 같다, 하지만 이후 IIS 수준 및 모든 것에 코드를 넣어 아마 최고의 장소. 그것은 작품의 좋은 단일 지점.
우리는 global.asax 유형 접근 쪽으로 기울으십시오, 주로 하기 때문에 우리가 믿는 우리가 그 시점에서 데이터를 캐시에 대 한 더 많은 옵션을가지고 거 야.
내가 자세한 내용을이 주제에 대 한 자세한 블로깅 있을 거 야.
만약 당신이 이것에 대해 아무것도 알지, please post a comment 🙂
</끝>
에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin
그래서 작동 하는 경우 확실 하지 나는 이것을 테스트 하지는.
페이지 클래스에는 InitializeCulture() 재정의할 수 있는 메서드. 이 경우 사용자 지정 masterpage의 뒤에 코드에, 라인을 따라 뭔가 할 수 있는:
보호 재정의 무효 InitializeCulture()
{
// 가상 메서드 InitializeCulture를 재정의() 프로필 사용자 언어 설정에 있는지 확인 하려면
string UserCulture = GetCultureFromUserProfile();
만약 ( UserCulture != "")
{
// 프로필에 사용자 언어 설정이입니다.: 그것은로 전환
Thread.CurrentThread.CurrentUICulture 새로운 CultureInfo를 =(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
물론이 방법의 구현으로 캐싱 일부 구축할 수 있습니다..
소스: http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?path=~/aspnet/samples/localization/LocalizePers.src&파일 = LocalizePers_cs\LocalizePers_cs.aspx&lang = C # 소스
HTTP 처리기는 다음과 같은 흐름으로 생각 하 고 있어요:
1. 요청 제공, 언어 기본 설정에 대 한 세션 쿠키에 대 한 쿠키를 확인 (브라우저를 닫을 때 세션 쿠키가 만료)
2. ASPX 페이지에 대 한 요청 인지 확인, 하지 않을 경우, 요청을 생략
3. 쿠키 존재 하는 경우, 지정 된 값으로 언어 헤더 설정. 당신은 행해진다!
4. 아니 쿠키, 인증 자격 증명을 SPS에서 사용자 조회, 언어 기본 설정 찾기
5. 쿠키 헤더와 HTTP 언어 헤더 설정. 완료.
첫 번째 APX 페이지 요청 SPS 조회의 오버 헤드가 있을 것 이다 하지만 모든 요청을 다음에서 기본 속도 일 것 이다 그래서 아무 조회. 세션 캐시 또는 너무 세션 쿠키를 사용 하 여 다른 오버 헤드에 대 한 필요가 없습니다. 브라우저를 닫으면, 세션 쿠키는 멀리 간다. SPS에서 그들의 언어 환경 설정을 변경 하는 경우 그들은 단지 필요 닫고 다시 적용 하려면 브라우저를 열고.
사실 http 처리기는 iis 수준에서 되지 않습니다.…그것은 응용 프로그램 수준 (ISAPI 필터는 IIS 수준)…기원전 SP 자체 처리기가 주의 것…그래서 그것을 밖으로 테스트 해야…내가 전에 그것을 한 적 하지만 SP 처리기와 일부 충돌이 있었다.
HTTPHandler를 사용 하기 위하여 경사 될 것 이다, 유일한 이유는 내가 SharePoint 파일을 만지고 싶지 않은. 게다가 그것은 쉽게는 HttHandler 배포 하려면 SharePoint 솔루션을 만들 수 ( SPWebConfig API를 사용 하 여 web.config를 수정 하 고). 사용자 로드 하는 데 당신은, 상당한 팜에서 상상, 당신은 정말 각 서버에 modifiying 파일을 이동 하 고 싶지.
솔루션을 통해 global.asa 파일을 배포 하는 것이 나쁜 아이디어, 당신은 그것을 철회 하는 경우, 원본 파일은 사라 졌 어 요 …
또한 솔루션을 신속 하 게 철회 하는 데 좋은 생각이 될 수도 있습니다., 경우에 처리기의 성능에 문제가.