login register Sysop! about ME  
qrcode
    최초 작성일 :    2006년 11월 20일
  최종 수정일 :    2006년 11월 22일
  작성자 :    Spacesj
  편집자 :    Taeyo (김 태영)
  읽음수 :    34,029

강좌 목록으로 돌아가기

필자의 잡담~

이번 강좌는 Microsoft MVP인 김 석중씨가 제공하는 ASP.NET 2.0에서 리소스를 제어하는 이야기입니다. 시리즈로 연재될 예정이오니 여러분의 많은 사랑 부탁드립니다.

안녕하세요. ^^ Microsoft MVP (ASP/ASP.NET) 김석중입니다.

항상 많은 분들의 도움을 받아오다가 이번에 강좌를 써보기로 작정(?)을 하고 ASP.NET 2.0 리소스 파일을 이용한 다국어 지원에 관련해서 강좌를 써보려 합니다. 많은 부분에서 부족하지만 부족한 부분, 많은 이해 부탁드립니다. ^^

ASP.NET 1.1에서의 다국어 지원 관련한 강좌를 보신적이 있나요? 없으시다면 바로 여기~~~를 클릭하셔서 확인해 보시기 바랍니다. 또한 Resource 파일을 이용한 공통 데이터 관리를 해보기도 보셨나요? 또 안보셨다면 바로 또 여기~~~를 클릭하시기 바랍니다.

지금부터 시작하는 강좌는 기존의 Taeyo님 강좌를 기본으로 하여 ASP.NET 2.0 에서 변경된 점을 반영하여 진행이 됩니다. 확인하고 오셨죠? -_-+

즐거운 마음으로 시작을 해보도록 하겠습니다. ^^

ASP.NET 2.0으로 변경이 되면서 바뀐점 중에 하나가 WebForm을 추가하면 .resx 파일이 생성되지 않습니다.


그림 1. WebForm 추가

'허억.. 앞에 강좌를 읽어오라고 했으면서 .resx 파일이 생성되지 않으면 어떻게 하겠다는거야~~' 하시면 아니되옵니다. -_-);; 이제 .resx 파일을 생성해 보도록 하겠습니다.

생성된 WebForm에서 디자인뷰 보기로 변경하신후 '도구-로컬 리소스 생성'을 선택해 주십시오.


그림 2. 도구-로컬 리소스 생성

출력에서 meta 속성을 추가 했다는 메세지와 함께 솔루션 탐색기를 보시면 'App_LocalResources' 폴더와 함께 해당 WebForm의 .resx 파일이 추가된 것을 보실 수 있습니다.


그림 3. 출력창


그림 4. 솔루션 탐색기

흠.. 알아보신 분들도 계시겠지만 App_LocalResources폴더는 지역화할 수 있는 텍스트 또는 다른 데이터를 참조하는 리소스 문자열의 리소스 파일들을 모아놓는 폴더인 것입니다.

제가 써놓고도 무슨소리인지 감이 안오는 설명입니다. -_-);
간단하게 설명을 드리면 ASP.NET 1.1에서 페이지 단위로 추가되던 .resx 파일을 해당 폴더의 App_LocalResources에 모아놓는 것입니다. 관리상의 편리함도 있고 불필요한 .resx 파일 생성을 자제 할수도 있겠죠?

리소스 파일은 단순히 문자열만 추가할수 있는것이 아닙니다. 아래 그림 5, 6을 보시면 이미지, 아이콘, 오디오 둥둥~~~ -_- 을 관리할 수 있는 것이죠. 이것 참 편리하지 않습니까?


그림 5. 리소스 확인 메뉴


그림 6. 리소스 추가 메뉴

이제 WebForm에 Label 컨트롤을 추가 / 선택하시고 다시 '도구-로컬 리소스 생성' 선택해 보도록 하겠습니다.


그림 7. 컨트롤 도구-로컬 리소스 생성

출력에 meta 속성 추가 메세지 후 WebForm의 리소스(.resx) 파일을 열어 보겠습니다.


그림 8. App_LocalResources 폴더 - 리소스(.resx) 파일 열기

또한 WebForm 페이지를 소스뷰에서 보시면 아래와 같이 변경 된것을 보실 수 있습니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Document" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>제목 없음</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource1" Text="Label"></asp:Label>
  </div>
  </form>
</body>
</html>

소스 1. Default.aspx 파일 소스 보기

자, 이제 리소스 파일과 WebForm을 비교해 보도록 하겠습니다.

리소스(.resx) 파일의 이름(Key)을 확인해 보시면 'PageResource1' 이름과 값을 확인하실 수 있고, WebForm @Page 지시자의 meta:resourcekey 부분에 리소스 파일 - 이름(Key) 부분이 입력되어 있습니다.
그렇습니다~~ 리소스 파일의 'PageResource1.Title" 은 @Page의 Title 을 지정하고 있다는 것을 추측하실 겁니다. 정말 그렇게 되는지 'PageResource1.Title'의 값(Value)을 'Taeyo.NET' 으로 변경하고 페이지를 실행해 보도록 하겠습니다.


그림 9. Internet Explorer Title 변경 확인

오우.. 정말 'Taeyo.NET'이 나오는거 보이시지요? 감동입니다. -_-);
그렇다면 'Label1Resource1.Text'도 변경하셔서 확인하시기 바랍니다.
(이런것을 숙제~~ 라고 하지요. O.O;;)

.aspx

① <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource1" Text="Label"></asp:Label>

② <asp:Label ID="Label1" runat="server" Text="<%$ Resources:Label1Resource1.Text %>"></asp:Label>

.aspx.cs

③ Label1.Text = this.GetLocalResourceObject("Label1Resource1.Text").ToString();


소스 2. 접근 방법

뜬금없이 소스가 나와 놀라셨나요? meta:resourcekey 형태로 접근이 가능하지만 소스 2의 ②③ 방법으로도 접근이 가능하다는 점, 알아두셨으면 합니다. ^^

자 이제 다국어 지원을 위해 아래의 단계를 하나하나 따라해 보도록 하겠습니다.

1. 'App_LocalResources'에 새 항목 추가로 '리소스 파일'을 추가. WebForm이름.aspx.en-US.resx(예 : Default.aspx.en-US.resx), WebForm이름.aspx.ja-JP.resx(예 : Default.aspx.ja-JP.resx) 두개의 리소스 파일 추가

2. 추가된 2개의 리소스 파일에 이름(Key)과 값(Value)을 WebForm이름.aspx.resx(그림 4의 Default.aspx.resx) 리소스 파일과 동일하게 추가

3. 3개의 리소스 파일의 값을 아래 표에 맞춰서 변경

파일 이름(Key) 값(Value)
WebForm이름.aspx.resx
(예 : Default.aspx.resx)
PageResource1.Title 한국
Label1Resource1.Text 한국:Label
WebForm이름.aspx.en-US.resx
(예 : Default.aspx.en-US.resx)
PageResource1.Title USA
Label1Resource1.Text USA:Label
WebForm이름.aspx.ja-JP.resx
(예 : Default.aspx.ja-JP.resx)
PageResource1.Title 日本
Label1Resource1.Text 日本:Label

자 전부 실행 하셨나요? 그렇다면 이제 결과를 보도록 하겠습니다.

브라우저를 실행... 네? 비하인드 파일(.cs)에서 변경할 건 없냐구요? 강좌 상단의 'ASP.NET 1.1 다국어 지원' 강좌를 보면 (안보셨으면 지금 빨리 보고 오세요. -_-+) Page_Load에 관련된 소스를 넣는걸 볼 수 있습니다.
그러나 ASP.NET 2.0에서는 그 어떤 소스도 더 추가하실 필요가 없습니다.
(물론 다른 사항이 있다면 추가 하겠지만 현재까지의 내용은 그 어떤 소스도 추가하실 필요가 없습니다.)

브라우저를 통해 확인해 보겠습니다.

다국어 지원을 확인 하려면 우선 '메뉴-도구-인터넷 옵션' 언어 부분을 설정해 주셔야 합니다.


그림 10. Internet Explorer 인터넷 옵션 - 언어 기본 설정

(그림 10은 Internet Explorer 7.0 의 인터넷 옵션입니다. ^^; 6.0도 동일합니다.)

언어 부분을 추가 / 변경하는 이유는 브라우저의 Culture(지역 설정)는 이 언어 부분으로 인식하기 때문입니다. 이와 관련 해서도 'ASP.NET 1.1 다국어 지원' 강좌를 참고 하시기 바랍니다. 또한 아래의 링크를 통해서도 Culture 관련 내용을 확인하실 수 있습니다.
(흐윽 모자란 실력을 여기서 보여드리는군요.. ㅠㅠ)

http://msdn2.microsoft.com/ko-kr/library/bz9tc508(VS.80).aspx

언어 부분을 위, 아래로 이동하시면서 해당 페이지를 다시 로드 하시면 아래와 같이 변하는 것을 보실 수 있습니다. 해당 언어를 가장 위로 올리셔야 합니다.


그림 11. Internet Explorer 실행 - 한국어 [ko]


그림 12. Internet Explorer 실행 - 영어 (미국) [en-US]


그림 13. Internet Explorer 실행 - 일본어 [ja-JP]

오~~ 정말 잘 실행이 되고 있습니다. ^^

만약 해당 지역의 리소스 파일이 없다면 어떻게 될까요? 예상하신 바가 있겠죠? WebForm이름.aspx.resx 파일로 실행이 됩니다. ^^ 이거 참 여러모로 편리하게 설정이 되어 있습니다.

지금까지 'App_LocalResources' 폴더의 WebForm이름.aspx.culture이름.resx 리소스 파일을 통해 쉽게 지역화 설정하는 방법을 알아봤습니다. 다음에는 컨트롤 Tree 검색을 통한 컨트롤 ID로 리소스 파일에 접근하는 강좌와 이를 시스템화 시키는 강좌를 진행해 보도록 하겠습니다.

이번 강좌는 아래 링크를 참고하시면 좀 더 알아보실 수 있습니다.

http://www.microsoft.com/korea/msdn/library/ko-kr/dev/aspdotnet/ASP2local.aspx

많은 부분을 보여드리고 싶었지만, 첫 강좌라 영~~~정리가 안되고 있습니다.
차후에 좀 더 좋은 내용으로 잘 정리하여 찾아뵙도록 하겠습니다. 감사합니다. ^^


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})