애플리케이션 하나. 언어 다섯 개.
실행 중에 전환합니다.
sgcLocalization은 여러분의 Delphi, C++Builder, Lazarus 애플리케이션을 번역합니다. 모든 폼, 모든 메시지, 모든 복수형을 에디터 하나로 처리하고, 코드 한 줄로 언어를 바꿉니다.
- English
- Deutsch
- Español
- Français
- Italiano
위 그림은 실행 파일 하나입니다. 같은 대시보드, 같은 데이터를 영어, 독일어, 스페인어, 프랑스어, 이탈리아어로 보여 주며, 사용자는 애플리케이션이 실행되는 동안 콤보 상자에서 언어를 바꿉니다. 다시 시작할 필요도, 빌드를 따로 할 필요도 없습니다.
이 애플리케이션은 sgcLocalization으로 번역했습니다. sgcUI 제품군의 새 제품이며, VCL, FireMonkey, LCL에서 동작하고, Delphi 7부터 Delphi 13까지, C++Builder와 Lazarus에서 사용할 수 있으며, 모든 sgcUI 에디션과 모든 단일 제품에 포함됩니다.
1분으로 보는 sgcLocalization: 실제 애플리케이션을 스캔하고, 번역하고, 전환합니다. YouTube에서도 볼 수 있습니다.
코드 한 줄로 언어 전환
언어를 바꾸는 데 필요한 코드는 이것이 전부입니다.
uses
sgcLocalization_Engine;
procedure TfrmMain.btnGermanClick(Sender: TObject);
begin
sgcSetLanguage('de');
end;
코드를 전혀 쓰고 싶지 않다면, 바로 사용할 수 있는 언어 콤보(TsgcVCLLanguageCombo 또는 TsgcFMXLanguageCombo)를 폼에 놓으세요. 프로젝트의 언어를 나열하고, 사용자가 하나를 고르면 전환합니다.
전환은 캡션을 바꾸는 데서 끝나지 않습니다.
- 나중에 만들어지는 폼도 자동으로 번역됩니다. 전환하고 10분 뒤에 연 대화 상자도 올바른 언어로 나타납니다.
- 코드로 바꾼 값은 유지됩니다. 코드가 고객 이름으로 채운 레이블을 번역이 덮어쓰지 않습니다.
- 선택 항목이 유지됩니다. 콤보 상자와 목록은 항목의 언어가 바뀌어도 선택한 항목을 그대로 유지합니다.
- 오른쪽에서 왼쪽으로 쓰는 언어는 레이아웃이 뒤집힙니다. 아랍어나 히브리어 사용자는 좌우가 반전된 폼을 보게 됩니다.
사용자 시스템의 언어로 시작하려면 속성 하나만 설정하세요.
sgcVCLLocalizer1.Language := 'auto';
작업이 얼마나 적은지 보세요
로컬라이저(VCL용 TsgcVCLLocalizer, FireMonkey용 TsgcFMXLocalizer)는 RTTI로 모든 텍스트 속성을 찾아 냅니다. 속성에 표시를 하거나, 컴포넌트 이름을 바꾸거나, 폼을 수정할 필요가 없습니다.
기본 무시 규칙은 텍스트가 아닌 항목을 건너뜁니다. 컴포넌트 이름, 필드 이름, SQL, 파일 이름, 서식 문자열, 그리고 sgcUI 컨트롤 자체의 비텍스트 속성이 여기에 해당합니다. 규칙을 직접 추가할 수도 있습니다. 표준 컨트롤과 sgcUI 컨트롤이 섞인 폼도 깔끔하게 스캔되므로, 번역할 목록에는 텍스트만 들어 있습니다.
코드 안의 텍스트: 스니펫
모든 텍스트가 폼에 있는 것은 아닙니다. 코드에서 만드는 메시지, 상태 표시줄, 캡션은 스니펫입니다. 텍스트를 sgcT로 감싸면 번역할 수 있게 됩니다.
if MessageDlg(sgcT('Save changes?'), mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
SaveOrder;
같은 단어에 번역이 두 가지 필요할 수 있습니다. 영어의 "Open"은 명령이기도 하고 주문의 상태이기도 합니다. sgcTC는 컨텍스트를 추가하므로 각 의미가 자기 번역을 갖습니다.
btnOpen.Caption := sgcTC('command', 'Open');
lblState.Caption := sgcTC('order status', 'Open');
복수형에는 sgcTN을 사용합니다. 원본 언어의 단수형과 복수형을 쓰면, 번역이 대상 언어에 필요한 만큼의 형태를 제공합니다.
lblSelected.Caption := sgcTN('%d order selected', '%d orders selected',
Count, [Count]);
복수형 규칙은 CLDR에서 가져오므로 모든 언어에 맞습니다. 예를 들어 폴란드어는 형태가 네 개이며, 에디터는 번역가에게 그 각각을 요청합니다.
번역 에디터 하나
모든 번역을 한 곳에서 편집합니다. 디자인 타임에 로컬라이저를 마우스 오른쪽 버튼으로 클릭하면 IDE 안에서 에디터가 열리고, IDE 밖에서는 독립 실행 도구를 사용할 수 있습니다.
- 항목 상태. 모든 텍스트는 신규, 변경됨, 제안, 번역됨, 검토됨, 사용되지 않음 중 하나이며, 상태별로 필터링할 수 있습니다.
- 필터와 다중 선택. 언어, 폼, 검색 텍스트로 필터링하고, 여러 행을 선택해 한꺼번에 변경합니다.
- 버전 표시. 릴리스에 표시를 해 두면 "다음 버전 이후 신규 또는 변경됨" 필터가 다음 릴리스에서 번역해야 할 항목을 정확히 보여 줍니다. 빠지는 것이 없습니다.
- 번역가의 언어. 에디터 자체가 12개 언어와 라이트 및 다크 테마로 제공됩니다.
흔한 실수를 잡아내는 검증
%d나 액셀러레이터 키가 빠진 번역은 쓰기 쉽고 발견하기는 어렵습니다. sgcLocalization은 직접 입력했든, 가져왔든, AI가 제안했든 모든 번역을 검사합니다.
- 서식 지정자와 자리 표시자,
- 액셀러레이터 키,
- 줄 바꿈, 앞뒤 공백,
- 비어 있는 번역과 복수형.
오류가 있는 항목은 검토됨으로 설정할 수 없으므로, 깨진 텍스트가 완성된 작업처럼 릴리스에 섞여 들어가지 않습니다.
제안으로 받는 AI 번역
에디터는 ChatGPT, Claude, Gemini, Ollama 같은 AI 서비스로 번역할 수 있습니다. 대상 언어를 고르고, 용어집과 어조에 대한 지침을 주고, 시작하면 됩니다.
결과는 제안으로 도착합니다. 각 제안을 수락하거나 거부할 수 있으며, 제안이 이미 번역된 텍스트를 덮어쓰는 일은 없습니다. 같은 검증이 제안에도 실행됩니다.
전문 번역가를 위한 XLIFF
번역 대행사는 XLIFF로 작업합니다. sgcLocalization은 언어별로 XLIFF 1.2를 내보내고, 파일이 돌아오면 가져옵니다.
가져오기는 프로젝트에 곧바로 기록하지 않습니다. 모든 변경을 담은 검토 목록을 엽니다. 이전 텍스트, 새 텍스트, 변경의 종류, 발견된 문제가 표시되며, 체크한 행만 적용됩니다.
프로젝트 파일 하나
애플리케이션의 번역은 확장명이 .sgcloc인 프로젝트 파일 하나에 들어 있습니다. JSON이므로 버전 관리와 잘 맞습니다. 번역이 바뀌면 코드 리뷰에서 읽을 수 있는 작은 diff가 됩니다. 옆에 다른 파일 없이 실행 파일 하나를 원한다면, 프로젝트를 폼 파일에 포함할 수도 있습니다.
실제 애플리케이션에서 확인하세요
대표 데모는 Order Desk이며, 대시보드, 주문, 고객, 플래너, 피벗 분석, 마법사, 인쇄 미리 보기를 갖춘 완전한 업무용 애플리케이션입니다. 영어, 독일어, 스페인어, 프랑스어, 이탈리아어로 번역되어 있으며 VCL, FireMonkey, Lazarus 버전이 있습니다.
데모 폴더에는 빠른 시작 세 개, 독립 실행 번역 에디터 도구, 빈 폼에서 번역된 애플리케이션까지 안내하는 시작 가이드도 들어 있습니다.
sgcUI에 포함
sgcLocalization은 sgcUI 2026.12.0과 함께 제공됩니다. 따로 판매하지 않으며, 모든 sgcUI 에디션과 모든 단일 제품에 포함되고, 설치 프로그램에서 기본으로 선택되어 있습니다.
여러분의 애플리케이션을 고객의 언어로
sgcUI를 다운로드하고 Order Desk 데모를 열어 실행 중에 언어를 바꿔 보세요. 그런 다음 여러분의 메인 폼에 로컬라이저를 놓으세요.
질문이나 의견이 있으신가요? 문의해 주세요. 코드를 직접 작성한 사람들이 답변해 드립니다.
