델파이로 제작된 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 14390
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21065
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
574 [REST API][실습] 데이터셋 기반 REST API 개발하기 험프리 2017.06.13 2162
573 RAD Studio 사물인터넷 참고자료와 샘플 모음 file Humphery 2015.06.23 2152
572 [따라하기] Advanced 델파이 UI 작성하기 file 험프리 2019.09.11 2124
571 [베를린] ListView 레이아웃을 입맛에 맞게 변경할 수 있습니다. file 험프리 2016.04.22 2119
570 [FireDAC Skill Sprints] 7. FireDAC ETL: 데이터 내보내기, 가져오기 기능 구현하기 Humphery 2015.04.01 2115
569 [XE7] 다양한 형태로 표시되는 적응형 컴포넌트 TMultiView 소개 Humphery 2014.09.18 2089
568 웹사이트의 인증서 오류를 무시하고 http 결과 조회하기(WinInet 이용) Humphery 2015.03.06 2084
567 리눅스 서버용 GUI 응용프로그램 만들기(10.2 도쿄 & FMXLINUX 이용) [1] 관리자 2017.04.25 2064
566 RAD Studio XE7에서 추가된 안드로이드 기능 익히기(동영상) Humphery 2014.11.05 2057
565 RAD 스튜디오로 유스케이스 다이어그램 작성방법 file 험프리 2019.06.20 2055
564 [업데이트] RAD Studio XE7 Update 1 개선된 내용 Humphery 2014.11.27 2041
563 [업데이트][Hotfix] iOS 배포와 요세미티, VCL Bitmap 파일 보안취약점 패치 Humphery 2014.10.22 2038
562 이 달의 기술자료 - 2016년 07월 file 험프리 2016.06.30 2034
561 QueryPerformanceCounter 사용 시 주의사항(x86, 64bit) Humphery 2014.05.07 2027
560 이 달의 기술자료 - 2014년 5월 file 험프리 2014.05.19 1997
559 부산가톨릭대학교 특강 발표자료 Humphery 2014.03.13 1981
558 [로드맵] RAD 스튜디오 로드맵(2016년 8월) file 험프리 2016.08.12 1979
557 [오픈소스] Python for Delphi(P4D) [5] file 험프리 2017.09.01 1975
556 Quality central Windows Client 이용방법 file Humphery 2014.04.30 1963
» 델파이로 국제화된 다국어 애플리케이션 만들기 Humphery 2014.12.10 1946