오늘의 목표: 언리얼 엔진 프로젝트에 다국어(영어/한국어) 지원 시스템을 구축하고, 인게임에서 버튼 클릭 한 번으로 언어가 실시간으로 교체되도록 구현한다. 먼저 게임 개발에 사용되는 언어를 모두 번역한다면 굉장히 귀찮겠지만. 언리얼에서는 Localization이라는 기능을 제공한다. 이 기능은 텍스트를 수집해 원하는 언어로 바꿀 수 있는 기능이다. 물론 자동번역은 아니고 번역 전용 에디터를 사용해 번역하고 다시 Import 해야 적용된다.
1. 텍스트 수집 (Gather Text)
게임 내에 흩어져 있는 모든 텍스트(UI, 블루프린트 등)를 한곳으로 모으는 작업부터 시작했다.
- 상단 메뉴 바에서 Tools ➔ Localization Dashboard를 실행한다.
- Gather Text 항목에서 Gather from Packages를 체크하고, 텍스트가 포함된 폴더(예: Content/Blueprints/*)를 지정해 준다.
- 설정을 마친 후 대시보드의 Gather Text 버튼을 누르면 엔진이 프로젝트를 싹 훑으면서 번역이 필요한 단어 수(Word Count)를 계산해서 목록을 만들어 준다.



2. 외부 툴(POEdit)을 이용한 번역
수집된 텍스트 데이터를 번역하기 위해 .po 확장자 파일로 추출(Export)한다.
- Languages 목록에 Korean을 추가하고 Export Text 아이콘을 눌러 파일(.po)을 뽑아낸다.
- POEdit라는 번역 전용 프로그램을 사용해 영어 원문 텍스트에 대응하는 한국어 번역(예: "NO BATTERY" ➔ "배터리 없음")을 꼼꼼하게 입력해 준다.
- 번역을 마친 뒤 저장하고, 언리얼 대시보드에서 Import Text를 눌러 번역본을 다시 엔진으로 가져온다.
- [핵심 포인트] 임포트가 끝난 뒤 반드시 톱니바퀴 모양의 Compile Text 버튼을 눌러야 엔진이 읽을 수 있는 데이터로 변환되어 게임에 적용된다.

3. 한글 깨짐(두부 현상) 해결: 폰트 폴백(Fallback) 설정
번역을 적용하고 실행해 보니 한글이 네모 박스 모양(일일명 '두부 현상')으로 깨져서 나오는 문제가 발생했다. 원인은 기존에 사용 중인 영문 폰트(CormorantSC-Light)에 한글 데이터가 없기 때문이었다. 이를 해결하기 위해 폰트를 일일이 바꾸는 대신 Composite Font (컴포지트 폰트) 기능을 활용했다.
- 무료 한글 폰트(Noto Sans KR, 나눔명조 등)를 다운로드해 엔진에 임포트 한다.
- 사용 중인 메인 영문 폰트 에셋을 열고, Fallback Font Family 항목을 찾는다.
- 여기에 임포트 한 한글 폰트(NotoSansKR-Light)를 추가해 준다.
- 원리: 엔진이 글자를 출력할 때 기본 영문 폰트를 쓰다가, '한글'을 만나면 자동으로 대체 폰트(Fallback)인 Noto Sans를 꺼내서 출력해 주므로 UI 위젯을 하나하나 수정할 필요가 없다!


4. 인게임 언어 변경 버튼(Toggle) 구현
플레이어가 직접 언어를 바꿀 수 있도록 블루프린트 로직을 추가했다.
- UI 위젯에 Translation 버튼을 만들고 On Clicked 이벤트를 생성했다.
- Flip Flop 노드를 사용해 토글 기능을 구현했다.
- Flip Flop의 A 핀에는 Set Current Culture 노드를 연결해 en(영어)을 설정하고, B 핀에는 ko(한국어)를 설정했다.
- 결과적으로 버튼을 누를 때마다 영어와 한국어가 번갈아가며 실시간으로 완벽하게 전환되는 것을 확인했다.
💡 추가 팁: 에디터 내부 뷰포트에서 테스트하면 엔진 전체 언어가 바뀔 수 있으므로, 제대로 된 테스트를 위해서는 Standalone Game(독립형 게임) 모드로 실행해야 한다!