다음을 통해 공유


ASP.NET AJAX 지역화 이해

작성 자: Scott Cate

지역화는 특정 언어 및 문화권에 대한 지원을 애플리케이션 또는 애플리케이션 구성 요소에 디자인하고 통합하는 프로세스입니다. Microsoft ASP.NET 플랫폼은 표준 .NET 지역화 모델을 통합하여 표준 ASP.NET 애플리케이션에 대한 지역화를 광범위하게 지원합니다. Microsoft AJAX Framework는 통합 모델을 활용하여 지역화를 수행할 수 있는 다양한 시나리오를 지원합니다.

소개

Microsoft의 ASP.NET 기술은 개체 지향적이고 이벤트 기반 프로그래밍 모델을 제공하며 컴파일된 코드의 이점과 결합합니다. 그러나 서버 쪽 처리 모델에는 기술에 내재된 몇 가지 단점이 있으며, 그 중 상당수는 .NET Framework 3.5의 Microsoft AJAX 서비스를 캡슐화하는 System.Web.Extensions 네임스페이스에 포함된 새로운 기능으로 해결할 수 있습니다. 이러한 확장을 사용하면 이전에 ASP.NET 2.0 AJAX 확장의 일부로 사용할 수 있었지만 이제는 프레임워크 기본 클래스 라이브러리의 일부인 다양한 클라이언트 기능을 사용할 수 있습니다. 이 네임스페이스의 컨트롤 및 기능에는 전체 페이지 새로 고침 없이 페이지의 부분 렌더링, 클라이언트 스크립트를 통해 웹 서비스에 액세스할 수 있는 기능(ASP.NET 프로파일링 API 포함) 및 ASP.NET 서버 쪽 컨트롤 집합에 표시된 많은 컨트롤 체계를 미러 위해 설계된 광범위한 클라이언트 쪽 API가 포함됩니다.

이 백서에서는 지역화 지원에 대한 비즈니스 요구 사항의 컨텍스트에서 Microsoft AJAX Framework 및 Microsoft AJAX 스크립트 라이브러리에 있는 지역화 기능을 검토하고 .NET Framework 제공하는 웹 애플리케이션의 지역화에 대한 이미 통합된 지원을 검토합니다. Microsoft AJAX 스크립트 라이브러리는 통합 IDE 지원 및 공유 가능한 리소스 유형을 제공하는 .NET 애플리케이션에서 이미 사용하는 .resx 파일 형식을 활용합니다.

이 백서는 Microsoft Visual Studio 2008의 베타 2 릴리스를 기반으로 합니다. 또한 이 백서는 Visual Web Developer Express가 아닌 Visual Studio 2008로 작업한다고 가정하고 Visual Studio의 사용자 인터페이스에 따라 연습을 제공합니다. 일부 코드 샘플은 Visual Web Developer Express에서 사용할 수 없는 프로젝트 템플릿을 활용합니다.

지역화의 필요성

특히 엔터프라이즈 애플리케이션 개발자와 구성 요소 개발자의 경우 문화권과 언어의 차이를 인식할 수 있는 도구를 만드는 기능이 점점 더 필요해지고 있습니다. 클라이언트의 로캘에 적응할 수 있는 기능을 사용하여 구성 요소를 디자인하면 개발자 생산성이 향상되고 구성 요소가 전역적으로 작동하는 데 필요한 작업량이 줄어듭니다.

지역화는 특정 언어 및 문화권에 대한 지원을 애플리케이션 또는 애플리케이션 구성 요소에 디자인하고 통합하는 프로세스입니다. Microsoft ASP.NET 플랫폼은 표준 .NET 지역화 모델을 통합하여 표준 ASP.NET 애플리케이션에 대한 지역화를 광범위하게 지원합니다. Microsoft AJAX Framework는 통합 모델을 활용하여 지역화를 수행할 수 있는 다양한 시나리오를 지원합니다. Microsoft AJAX Framework를 사용하면 위성 어셈블리에 배포하거나 정적 파일 시스템 구조를 활용하여 스크립트를 지역화할 수 있습니다.

위성 어셈블리를 사용하여 스크립트 포함

표준 .NET Framework 지역화 전략과 일치하여 위성 어셈블리에 리소스를 포함할 수 있습니다. 위성 어셈블리는 이진 파일에 기존 리소스 포함에 비해 몇 가지 이점을 제공합니다. 지정된 지역화는 더 큰 이미지를 업데이트하지 않고 업데이트할 수 있으며, 프로젝트 폴더에 위성 어셈블리를 설치하여 추가 지역화를 배포할 수 있으며, 위성 어셈블리는 기본 프로젝트 어셈블리를 다시 로드하지 않고 배포할 수 있습니다. 특히 ASP.NET 프로젝트에서는 증분 업데이트에서 사용하는 시스템 리소스의 양을 크게 줄이고 프로덕션 웹 사이트 사용을 최소화할 수 있으므로 유용합니다.

스크립트는 컴파일 시간에 어셈블리에 포함된 관리되는 .resx(또는 컴파일된 .resources) 파일에 포함시켜 어셈블리에 포함됩니다. 그런 다음, 어셈블리 수준 특성을 통해 AJAX 런타임 생성 코드를 통해 스크립트 애플리케이션에서 리소스를 사용할 수 있습니다.

포함된 스크립트 파일에 대한 명명 규칙

Microsoft AJAX Framework 스크립트 관리는 스크립트 배포 및 테스트에 사용할 수 있는 다양한 옵션을 지원하며 이러한 옵션을 용이하게 하기 위한 지침이 제공됩니다.

디버깅을 용이하게 하려면 다음을 수행합니다.

릴리스(프로덕션) 스크립트는 파일 이름에 한정자를 .debug 포함해서는 안 됩니다. 디버깅을 위해 설계된 스크립트는 파일 이름에 포함되어 .debug 야 합니다.

지역화를 용이하게 하려면 다음을 수행합니다.

중립 문화권 스크립트는 파일 이름에 문화권 식별자를 포함해서는 안 됩니다. 지역화된 리소스를 포함하는 스크립트의 경우 파일 이름에 ISO 언어 코드를 지정해야 합니다. 예를 들어 은 es-CO 스페인어, 컬럼비아를 의미합니다.

다음 표에서는 예제와 함께 파일 명명 규칙을 요약합니다.

파일 이름 의미
Script.js 릴리스 버전 문화권 중립적 스크립트입니다.
Script.debug.js 디버그 버전 문화권 중립 스크립트입니다.
Script.en-US.js 릴리스 버전 영어, 미국 스크립트.
Script.debug.es-CO.js 디버그 버전 스페인어, 컬럼비아 스크립트입니다.

연습: 지역화된 포함된 스크립트 만들기

참고: 이 연습에서는 Visual Web Developer Express에 클래스 라이브러리 프로젝트에 대한 프로젝트 템플릿이 포함되지 않으므로 Visual Studio 2008을 사용해야 합니다.

  1. ASP.NET AJAX 확장을 통합하여 새 웹 사이트 프로젝트를 만듭니다. LocalizingResources라는 솔루션 내에서 다른 프로젝트인 클래스 라이브러리 프로젝트를 만듭니다.
  2. localizingResources 프로젝트에 VerifyDeletion.js 라는 Jscript 파일과 DeletionResources.resx 및 DeletionResources.es.resx라는 .resx 리소스 파일을 추가합니다. 전자에는 문화권 중립적 리소스가 포함됩니다. 후자는 스페인어 리소스를 포함합니다.
  3. VerifyDeletion.js 다음 코드를 추가합니다.
function VerifyDeletion(fileName)
{
 if (confirm(Message.VerifyDelete.replace(/FILENAME/, fileName)))
 {
 Delete(fileName);
 return true;
 }
 return false;
}
function Delete(fileName)
{
 alert (Message.Deleted.replace(/FILENAME/, fileName));
}

JavaScript Regex 구문에 익숙하지 않은 경우 단일 슬래시 내의 텍스트(이전 예제에서는 /FILENAME/가 예임)가 RegExp 개체를 나타냅니다. MSDN 라이브러리에는 광범위한 JavaScript 참조가 포함되어 있으며 JavaScript 네이티브 개체의 리소스는 온라인으로 찾을 수 있습니다.

  1. DeletionResources.resx에 다음 리소스 문자열을 추가합니다.

    VerifyDelete: FILENAME을 삭제하시겠습니까?

    삭제됨: FILENAME이 삭제되었습니다.

  2. DeletionResources.es.resx에 다음 리소스 문자열을 추가합니다.

    VerifyDelete: Est seguro que desee quitar FILENAME?

    삭제됨: FILENAME se ha quitado.

  3. AssemblyInfo 파일에 다음 코드 줄을 추가합니다.

[assembly: System.Web.UI.WebResource("LocalizingResources.VerifyDeletion.js",
 "text/javascript")]
[assembly: System.Web.UI.ScriptResource("LocalizingResources.VerifyDeletion.js",
 "LocalizingResources.DeletionResources", "Message")]
  1. LocalizingResources 프로젝트에 System.Web 및 System.Web.Extensions에 대한 참조를 추가합니다.
  2. 웹 사이트 프로젝트에서 LocalizingResources 프로젝트에 대한 참조를 추가합니다.
  3. default.aspx의 웹 사이트 프로젝트에서 ScriptManager 컨트롤을 다음 추가 태그로 업데이트합니다.
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptLocalization="true">
 <Scripts>
 <asp:ScriptReference Assembly="LocalizingResources" Name="LocalizingResources.VerifyDeletion.js"/>
 </Scripts>
</asp:ScriptManager>
  1. default.aspx에서 페이지의 아무 곳이나 다음 태그를 포함합니다.
<asp:Button ID="btnDelete" runat="Server" OnClientClick="VerifyDeletion('a.txt');" Text="Delete" />
  1. F5 키를 누릅니다. 메시지가 표시되면 디버깅을 사용하도록 설정합니다. 페이지가 로드되면 삭제 단추를 누릅니다. 확인을 위해 영어로 메시지가 표시됩니다(컴퓨터가 기본적으로 스페인어 리소스를 선호하도록 설정되어 있지 않은 경우).
  2. 브라우저 창을 닫고 default.aspx로 돌아갑니다. @Page 헤더 지시문에서 Culture 및 UICulture의 auto를 es-ES로 바꿉니다. F5 키를 다시 눌러 브라우저에서 웹 애플리케이션을 다시 시작합니다. 이번에는 스페인어로 파일을 삭제하라는 메시지가 표시됩니다.

O K를 클릭하라는 스페인어 프롬프트가 있는 Windows 인터넷 Explorer 대화 상자를 보여 주는 스크린샷

(전체 크기 이미지를 보려면 클릭)

스페인어로 파일을 삭제하라는 프롬프트를 보여 주는 스크린샷

(전체 크기 이미지를 보려면 클릭)

이 연습에는 몇 가지 변형이 있습니다. instance 경우 스크립트를 페이지 로드 중에 프로그래밍 방식으로 ScriptManager 컨트롤에 등록할 수 있습니다.

정적 스크립트 파일 구조 포함

배포에 정적 스크립트 파일을 사용하는 경우 내재된 .NET 지역화 체계를 사용하면 몇 가지 이점이 손실됩니다. 스크립트 리소스 파일을 포함하여 생성된 자동 형식이 손실된다는 것이 주로 표시됩니다. 위의 연습에서 리소스는 ScriptManager 컨트롤에서 Message라는 자동으로 생성된 형식에 의해 노출되었습니다.

그러나 정적 스크립트 파일 구조를 사용하는 경우 몇 가지 이점이 있습니다. 업데이트 위성 어셈블리를 다시 컴파일하고 다시 배포하지 않고 수행할 수 있으며, 정적 파일 구조를 사용하여 포함된 스크립트를 재정의하여 구성 요소와 함께 제공되지 않았을 수 있는 사소한 기능을 통합할 수도 있습니다.

프로젝트 컴파일 중에 스크립트 리소스를 자동으로 생성하여 버전 제어 문제를 방지하는 것이 좋습니다. 광범위한 스크립트 코드 베이스를 유지 관리하는 경우 코드 변경 내용이 지역화된 각 스크립트에 반영되도록 하는 것이 점점 더 어려워질 수 있습니다. 또는 하나의 논리 스크립트와 여러 지역화 스크립트를 유지 관리하여 프로젝트를 빌드하는 동안 파일을 병합할 수 있습니다.

선언적으로 포함할 리소스가 없으므로 ScriptManager 컨트롤의 태그의 <Scripts> 자식으로 요소를 추가 <asp:ScriptElement> 하거나 런타임에 페이지의 컨트롤 속성 ScriptManager 에 개체를 Scripts 프로그래밍 방식으로 추가하여 ScriptReference 정적 스크립트 파일을 참조해야 합니다.

지역화에서 ScriptManager 및 해당 역할

ScriptManager는 지역화된 애플리케이션에 대해 다음과 같은 몇 가지 자동 동작을 사용하도록 설정합니다.

  • 설정 및 명명 규칙에 따라 스크립트 파일을 자동으로 찾습니다. instance 경우 디버깅 모드에서 디버그 사용 스크립트를 로드하고 브라우저의 사용자 인터페이스 선택에 따라 지역화된 스크립트를 로드합니다.
  • 이를 통해 사용자 지정 문화권을 포함한 문화권을 정의할 수 있습니다.
  • HTTP를 통해 스크립트 파일을 압축할 수 있습니다.
  • 스크립트를 캐시하여 많은 요청을 효율적으로 관리합니다.
  • 암호화된 URL을 통해 파이핑하여 스크립트에 간접 참조 계층을 추가합니다.

스크립트 참조는 프로그래밍 방식으로 또는 선언적 태그를 통해 ScriptManager 컨트롤에 추가할 수 있습니다. 선언적 태그는 수정 버전이 푸시될 때 스크립트 이름이 변경되지 않을 가능성이 높기 때문에 웹 사이트 프로젝트 자체가 아닌 어셈블리에 포함된 스크립트로 작업할 때 특히 유용합니다.

요약

웹 애플리케이션이 더 많은 대상 그룹에 도달하게 됨에 따라 더 광범위한 문화와 커뮤니티에 도달할 수 있어야 하는 필요성이 비즈니스 모델의 핵심이 됩니다. 전자 상거래 웹 애플리케이션은 외화를 처리할 수 있어야 하며, 콘텐츠 관리 시스템은 콘텐츠뿐만 아니라 탐색 힌트 및 양식 필드를 다른 언어로 표시할 수 있어야 하며, 기업은 이러한 필요성에 액세스할 수 있다는 것을 알아야 합니다.

.NET Framework 본질적으로 풍부한 지역화 프레임워크를 지원하며, 위성 어셈블리 및 XML 리소스(.resx) 파일을 활용하여 리소스 문자열 및 이미지를 조회하는 균일한 방법을 제공합니다. Microsoft AJAX Framework 및 Microsoft AJAX 스크립트 라이브러리를 비롯한 ASP.NET AJAX 확장은 이 프로그래밍 모델을 클라이언트 쪽 코드로 지원하여 리소스 문자열 조회를 쉽게 가능하게 합니다. 위성 어셈블리는 파일 이름이 지정된 명명 체계를 따르는 한 ScriptResource.axd를 통해 스크립트 리소스(실제 .js 파일)의 자동 포함을 지원합니다. 이러한 지원을 통해 ASP.NET AJAX 확장은 스크립트의 지역화와 애플리케이션의 세계화를 간소화합니다.

사용자 정보

Scott Cate는 1997년부터 Microsoft 웹 기술과 함께 일해 왔으며 myKB.com(www.myKB.com)의 사장으로 기술 자료 소프트웨어 솔루션에 중점을 둔 ASP.NET 기반 애플리케이션 작성을 전문으로 합니다. Scott은 이메일 scott.cate@myKB.com 또는 ScottCate.com 블로그를 통해 연락할 수 있습니다.