델파이로 제작된 VCL 애플리케이션에서 다국어(국제화, 지역화) 지원하는 방법을 안내합니다.

파이어몽키(멀티-디바이스 애플리케이션)에서는 TLang 컴포넌트를 이용해 다국어 지원할 수 있습니다.

(동영상보기: http://tech.devgear.co.kr/delphi_news/13638)


델파이에서는 화면과 코드상의 문자를 다국어로 표현할 수 있는 기능을 제공합니다.


다국어 지원을 위해서는 총 3가지 작업을 해야 합니다.

  • 다국어 지원할 언어 추가
  • 화면의 문자열 다국어 처리
  • 코드의 문자열 다국어 처리

다국어 지원할 언어 추가

델파이에서 여러분의 VCL 프로젝트를 엽니다. 저는 샘플 형태로 아래와 같은 프로젝트를 만들었습니다.

Project > Languages > Add 메뉴를 클릭하고, 여러분의 어플리케이션에서 제공할 언어를 추가합니다.

프로젝트 매니저에 해당 언어 프로젝트가 추가됩니다.(저는 영어와 일본어를 추가했습니다.), 앞으로 관리해야 할 프로젝트(언어)이므로 프로젝트 그룹으로 저장합니다.


화면 문자열 다국어 처리

화면 문자열 다국어 처리하기 위해서는 프로젝트 매니저에서 언어별 유닛(Unit1.dfm)을 더블클릭하면 아래의 화면이 표시됩니다.

3번째 컬럼은 기본언어인 한국어 그옆으로 번역상태와 번역할 언어인 영어항목을 번역할 언어로 수정합니다.(변경한 내용은 상태에  Translated로 변경)

이 과정을 지원할 언어별로 반복해 진행합니다.

만약, 화면요소가 변경된다면 Project > Languages > Update Localized Projects 메뉴를 클릭해 항목을 동기화 할 수 있습니다. 이때 기존 작업한 내용은 유지되므로 중간중간 동기화 해서 작업하기 바랍니다.


코드의 문자열 다국어 처리

문자열의 다국어 처리는 ResourceString기반으로 진행됩니다.

제가 구현한 코드는 아래와 같습니다. 버튼을 누르면 Edit1의 내용으로 이름을 표현합니다.

1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format('당신의 이름은 ''%s'' 입니다.', [Edit1.Text]));
end;

위 코드를 ResourceString기반으로 변경하려면 아래와 같이 ResourceString에 문자열을 상수와 같이 선언하고 구현시 사용하도록 변경해야 합니다.

1
2
3
4
5
6
7
ResourceString
  ResYourName = '당신의 이름은 ''%s'' 입니다.';
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format(ResYourName, [Edit1.Text]));
end;

위와 같이 ResourceString으로 선언된 문자열은 프로젝트 매니저의 언어 프로젝트의 DRC.rs 파일을 이용해 번역할 수 있습니다.

리소스파일을 열면 델파이에서 출력하는 오류메시지들이 이미 등록되어 있습니다. 해당 문자열들도 원하신다면 번역할 수 있습니다. 그리고 제일 아래로 내려가면 여러분이 추가한 문자열을 번역할 수 있습니다.

[팁] 언어마다 다른 어순의 문자열 표현하기

Format을 이용하면 원하는 곳에 문자열을 포함해 사용할 수 있습니다.

하지만 어순이 달라진 경우 예를 억지로 들면 아래의 문자열의 '이름'과 '김현수' 두개의 항목을 Format으로 처리하려 하는데 번역자가 순서를 다르게 번역을 해버렸습니다.

  • 한국어 : 당신의 '이름'은 '김현수'입니다. - name_key > name_value 순으로 표시

  • 영어 : 'Humphery' is your 'name'. - name_value > name_key 순으로 표시

이 때 당황스러워 하지 마시구요. 아래와 같이 Format을 사용하면 입력할 내용의 순서를 지정할 수 있습니다. 좋은 팁이었습니다.^^

Format('당신의 ''%0:s''은 ''%1:s''입니다.', [name_key, name_value]);

Format('''%1:s'' is your ''%0:s''.', [name_key, name_value]);


다국어 지원 테스트 하기

화면과 코드의 문자열을 다국어 처리한 후 테스트하려면 Project > Languages > SetActive 메뉴를 클릭해 언어를 선택 후 해당 언어로 테스트할 수 있습니다. 

테스트 완료 후 프로젝트와 언어 프로젝트를 각각 빌드하면 아래와 같이 실행파일과 국가별 번역 리소스 파일(리소스 DLL)이 생성됩니다.(프로젝트이름 뒤의 3자는 ISO 639x 국가별 코드입니다.)

다국어로의 번역은 실행파일 실행 시 언어 리소스 DLL 선택 순서에 의해 선택된 리소스 DLL의 문자열로 화면과 코드의 문자열이 치환되어 다국어 지원됩니다.


배포를 위해 다른언어로 테스트하기 위해서는 실행파일과 언어 리소스 DLL을 별도 경로로 복사 하고,  윈도우 언어를 변경(윈도우8 언어변경: 외부글)해 테스트할 수 있습니다.


참고> 실행파일과 언어 리소스 DLL이 컴파일 경로에 있는 경우 시스템 로캐일이 적용되지 않습니다.

배포파일(실행파일, 언어 리소스 DLL)을 다른 경로로 옮겨서 테스트 해보기 바랍니다.

관련 글


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
1398 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152319
1397 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 106648
1396 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 82860
1395 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71931
1394 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 54111
1393 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 50343
1392 Find the O/S Language Type c2design 2014.07.30 47676
1391 RAD Studio Resource Center 박병일 2012.01.26 46441
1390 CD-ROM 열고 닫기 박병일 2011.12.22 44760
1389 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 38518
1388 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32446
1387 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29459
1386 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23241
1385 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 22880
1384 SendMessage 함수를 이용한 메세지 전송 관리자 2012.01.05 18247