2009-07-06 3 views
13

자바 스크립트 코드를보기와 분리하고 싶습니다.JavaScript 파일에서 현지화를 처리하는 방법은 무엇입니까?

<img src="..." onclick="..." title="Close" /> 

그것의 제목을 지역화하는 가장 좋은 방법은 무엇입니까 :
나는 자바 스크립트에 의해 생성 된 간단한 이미지 버튼에 대한 현지화를 구현하기위한 요구 사항을 가지고?

추 신 : Ayende에 의해 a solution이 발견되었습니다. 이것이 올바른 방향입니다.

편집 :
Controller.Resource('foo') 확장 방법을 제공하는 지역화 도우미 클래스가 있습니다.

특정 컨트롤러의 모든 JavaScript 리소스 ("ClientSideResources"하위 폴더 App_LocalResources)를 이름으로 반환 할 수 있도록 (도우미) 확장하려고합니다. 그런 다음 BaseController으로 전화를 걸어 ViewData에 추가하고 Layout으로 렌더링합니다.

그게 좋은 생각일까요?

답변

9

편집

은 (해시) 자바 스크립트 객체에 필요한 지역화 된 리소스를 작성하고 다음 동적으로 생성 된 객체에 대한 조회를 위해 그것을 사용하는 것이 좋습니다. 나는 이것이 번역을 위해 서버로 돌아가는 것보다 낫다고 생각한다. 이는 뷰 데이터를 통해 추가하는 것과 비슷하지만 좀 더 유연 할 수 있습니다. FWIW, 컨트롤러의 일부가 아닌 View의 일부로 현지화 리소스를 고려할 수 있습니다. 보기에서

:

<script type="text/javascript" 
     src='<%= Url.Content("~/Resources/Load?translate=Close,Open" %>'></script> 

하는 것 출력 뭔가 같은 : 그것은 출력 전체 번역 해시 것 인수없이

var local = {}; 
local.Close = "Close"; 
local.Open = "Open"; 

. 인수를 사용하면보기마다 사용자 정의 할 수 있습니다.

당신은 다음과 같은 자바 스크립트 파일을 사용합니다 : 사실

$(function(){ 
    $('#button').click(function() { 
     $("<img src=... title='" + local.Close + "' />") 
      .appendTo("#someDiv") 
      .click(function() { ... }); 
    }); 
}); 

, 나는 용기에 한 자바 스크립트 코드가 지역화 나의 견해에서 내 자바 스크립트 코드를 유지 대해 너무 법석을 떨게 아니에요 . 일반적으로 제목, 머리글, 주 및 스크립트 등 4 개의 콘텐츠 영역으로 내 마스터 페이지를 설정합니다. 제목, 헤더 및 메인은 예상되는 곳으로 이동하고 스크립트 영역은 본문 맨 아래로 이동합니다.

viewusercontrols를 포함하여 모든 JavaScript 포함을 스크립트 컨테이너에 넣었습니다. 포함 된 후에 특정보기 전용 JavaScript 코드가 제공됩니다. 필자는 필요에 따라 리팩토링 담당자가 코드를 다시 스크립트에 공유했습니다. 나는 하나의 요청을 사용하여 여러 개의 스크립트를 포함하는 것을 포함하여 스크립트를 대조하는 컨트롤러 메소드를 사용하는 것에 대해 생각해 보았지만, 아직 그것에 대해 알지 못했다.

이는 자바 스크립트 코드를 가독성을 위해 분리하여 유지하는 장점이 있지만 필요에 따라 모델 또는 뷰 데이터를 자바 스크립트 코드에 쉽게 삽입 할 수 있습니다.자바 스크립트를 사용할 수없는 위치를 요소의 텍스트를 초기화하는 자바 스크립트 코드를 사용하는 경우, 귀하의 사이트는 끔찍하게 저하됩니다, ​​

//keep all of your localised vars somewhere 
var title = '{title_from_server}'; 
document.getElementById('someImage').title = title; 

가 기억

+0

을 == "자바 스크립트를 마크 업과 분리하는 것도 좋은 습관입니다." <= 그게 <%= foo %>가 작동하지 않는 이유입니다. –

+0

Btw, JS onload에서 onclick 처리기를 연결하는 것이 바람직한 이유는 무엇입니까? –

+0

질문에서 "JS에서 생성 한"부분을 놓쳤습니다. 바로 스캔했습니다. 이 경우에는 뷰에 지역화 된 데이터를 쓰고 자바 스크립트가 로컬 객체에서로드하는 것을 고려할 것입니다. 윌 재작 성. – tvanfosson

1

당신이 그것을 분리하여 주장하는 경우에, 당신은 뭔가를 할 수 .

+0

젠장 ... 자바 스크립트 지원의 가능한 부족에 대해 다시 깜빡. : ( –

관련 문제