Company
교육 철학

Localization(언어)

Localization 시스템 개요

Game Framework의 Localization(다국어 지원) 시스템은 게임 내 텍스트를 다국어로 관리하기 위한 견고한 구조를 제공합니다.
이 시스템은 문자열을 딕셔너리(Dictionary) 형태로 저장하고, 고유 키(Key) 를 통해 조회하며, 문자열 포맷팅과 파라미터 지원이 가능합니다.
또한 Resource Management 시스템과 통합되어 언어 데이터(사전 파일) 를 로드하고, 런타임 중에도 언어를 자유롭게 변경할 수 있습니다.

시스템 구조

1. Dictionary 기반 구조

각 문자열은 고유 키(Key) 와 연결되어 저장됩니다.
현재 선택된 언어에 따라 해당 키에 맞는 문자열을 반환합니다.

핵심 구성 요소

LocalizationManager

ILocalizationManager 인터페이스를 구현하고 GameFrameworkModule을 상속하는 핵심 클래스
로컬라이즈된 문자열 딕셔너리를 유지·관리
문자열 접근, 추가, 삭제 등의 기능 제공

언어(Language) 관리

속성/메서드
설명
Language
현재 게임에서 사용할 언어 설정/조회
SystemLanguage
시스템 언어를 ILocalizationHelper로부터 가져옴
SetLocalizationHelper(ILocalizationHelper)
플랫폼별 언어 기능 지원 헬퍼 설정
ILocalizationHelper는 플랫폼별로 시스템 언어 감지, 로컬라이제이션 데이터 로드 로직 등을 구현하는 역할

로컬라이즈 문자열 조회

1. 기본 조회

string text = localizationManager.GetString("ui.start_button");
C#
복사

2. 포맷팅 지원

string text = localizationManager.GetString("ui.score", 100); // ui.score = "점수: {0}" → "점수: 100"
C#
복사

딕셔너리 관리 기능

메서드
설명
HasRawString(string key)
특정 키 존재 여부 확인
GetRawString(string key)
포맷팅 전 원본 문자열 조회
AddRawString(string key, string value)
새로운 문자열 추가
RemoveRawString(string key)
특정 문자열 삭제
RemoveAllRawStrings()
모든 문자열 초기화

데이터 로딩

LocalizationManager는 Data Provider를 사용해 사전 파일을 로드·파싱합니다.
메서드
설명
ReadData(string dictionaryAssetName)
리소스 시스템에서 언어 사전 파일 로드
ParseData(string/byte[])
문자열 또는 바이트 배열로 된 사전 데이터 파싱

플로우 차트

다른 시스템과 연동

Resource Manager
→ 로컬라이제이션 사전 파일을 리소스로 로드
SetResourceManager(IResourceManager) 로 연결
Data Provider System
→ 사전 데이터 파싱
SetDataProviderHelper(IDataProviderHelper<ILocalizationManager>) 로 설정

일반적인 사용 흐름

1.
게임 시작 시 LocalizationManager 초기화
2.
SetLocalizationHelper()로 헬퍼 등록
3.
SetResourceManager()로 리소스 매니저 연결
4.
언어 선택 (예: localizationManager.Language = "Korean")
5.
ReadData()로 해당 언어 사전 로드
6.
GetString()으로 UI나 게임 내 텍스트 출력

다른 데이터 시스템과 비교

시스템
목적
주요 기능
Localization
다국어 문자열 관리
키 기반 조회 + 포맷팅 지원
Config
전역 설정 관리
타입별 Getter(GetBool, GetInt 등)
DataTable
구조화된 게임 데이터 관리
강타입 데이터 행(Row) 관리

에러 처리

존재하지 않는 키 → <NoKey>{key} 반환
문자열 포맷 실패 → 예외 내용을 포함한 에러 문자열 반환

Best Practices

게임 초기 단계에서 Localization 시스템 초기화
문자열 사용 전에 반드시 언어 설정
키는 의미 있고 계층적 구조로 작성 ("ui.main_menu.start_button")
UI 컴포넌트에서 누락된 키 처리 로직 구현
확장 메서드로 GetString() 호출을 간단히 만드는 것도 추천
결론
이 Localization 시스템을 사용하면 다국어 지원이 필요한 게임에서 언어별 문자열 관리, 런타임 언어 변경, 리소스 기반 로드까지 쉽게 구현할 수 있습니다.
특히 UI나 대사량이 많은 게임(스토리형, RPG, 글로벌 출시 예정작)에 매우 유용합니다.