2010-03-30 2 views
0

현지화 된 ASP.NET MVC 사이트가 있습니다. 현지화 기능은 2 자리 언어 ID를 URL에 추가합니다 (예 :/es/Page. URL에 언어 ID가 없으면 사이트는 사용자 브라우저 문화로 전환됩니다. 모두 좋다. 그러나 사이트의 하이퍼 링크 (하드 코딩 된 href 태그, 액션 링크 등)에는 기본 언어 ID가 포함되어 있지 않으므로 사이트를 클릭하면 설정된 문화권이 손실되고 사이트가 사용자의 브라우저 문화로 되돌아갑니다 .사용자 정의 뷰 엔진을 사용하여 asp.net mvc의 문자열 패턴을 대체해야합니까?

외부 사이트를 가리 키지 않는 모든 href 값을 현지화 된 URL (예 :/es /를 포함)로 바꾸는 것이 내 생각과 같습니다. 그렇지 않으면 문화 코드를 포함하도록 모든 사이트 링크를 업데이트해야합니다.

평범한가? 아니면, 합리적인, 그리고 사용자 정의보기 엔진이나 다른 접근 방식을 사용하여 수행해야합니까?

+0

또 다른 고려 사항은, 예를 새 사용자 지정 도우미를 작성하는 것입니다 LocalizedActionLink는 현재 문화권 설정을 고려하지만 앱 수준 링크에서만 작동하며 CMS 기능을 사용하여 포함 된 링크에서는 작동하지 않습니다. –

답변

0

내 대답은 (현재)이다 :이 앱은 기본 컨트롤러가

, 거기에 내가 추가 한 :

if (PathLanguageCode == "" && requestContext.HttpContext.Session["LanguageCode"] != null && requestContext.HttpContext.Request.RequestType == "GET") 
{ 
    requestContext.HttpContext.Response.Redirect("/" + requestContext.HttpContext.Session["LanguageCode"] + requestContext.HttpContext.Request.RawUrl); 
} 

이 예는 PathLanguageCode 변수가 정의하는 방법을 보여 주지만, 그것을하지 않습니다 적어도 문자열 값을 대체하지 않고 이것이 어떻게 중앙에서 처리 될 수 있는지 보여주기에 충분해야합니다.

이 접근법의 단점은 내가 볼 수 있듯이 많은 리다이렉션을 수행하기 때문에 검색 엔진 등에서 사이트가 실제로 우호적이지 않다는 것입니다.

0

당신이 원한다면 우리가 취한 나의 접근 방식을 볼 수 있습니다. URL에 문화를 넣는 것에 대해 이야기합니다. 희망이 도움이됩니다!

Cultured View Engine for MVC

관련 문제