게임을 출시할 때, 하나의 언어만 지원하지 않고 현지화 전략으로 해당 지역에 맞게 언어를 지원하는 시스템이 있습니다.
영미권 국가에서는 영어로, 한국에서는 한국어로, 일본에서는 일본어로 언어를 지원하는 기능을 유니티에서 구현합니다.
유니티는 현지화 기능을 Localization 플러그인을 통해 지원하고 있습니다.
1. 메뉴 Window - PakageManagement - Unity Registry에서 Localization 검색 후 설치

다운로드가 끝났으면
2. 메뉴 Window - Asset Management - Localization Tables 클릭

유니티의 다국어 지원은 key 값에다 해당 언어를 매핑하는 방식입니다.
그래서 표를 이용합니다. 당연히 표는 csv 파일로 작성할 수 있습니다.
3. Create 클릭

클릭하면 저장 위치를 선택하라고 뜨는데, Asset 폴더 하위에 Localization 폴더를 만들어서 관리하는 것을 추천합니다.

4. 생성한 Table 이름 입력
해당 테이블 이름은 앞으로 자주 사용할 것이므로 잘 기억해둡니다.

5. 지원할 지역 설정

지역을 선택하고 나면 아래처럼 표기가 됩니다.

Create 선택
마찬가지로 Localization 폴더에 저장합니다.

그러면 아래와 같이 표를 작성할 수 있게 됩니다.

이러한 방식으로 현지화 작업을 해줘도 상관 없지만, 역시 데이터를 표로 관리할 때는 엑셀과 같은 csv 파일로 관리하는 것이 편리합니다.
이제 csv 파일로 관리할 수 있도록 설정하겠습니다.
8. 프로젝트 폴더에서 Localization 폴더로 가서 방금 생성한 Localization Table 인스펙터 창을 엽니다.
아까 생성했던 Localization Table 이름을 기억해야 하는 이유입니다.
이 이름은 코드에서도 계속 사용합니다.

.
8. Localization Table에서 csv Extention을 추가합니다.

그러면 아래와 같이 나오는데 Save를 클릭합니다.

csv 파일 이름도 동일하게 맞춰주겠습니다.

그러면 폴더에서 csv 파일이 생성된 것을 확인할 수 있는데 파일을 열어서 작업을 해주겠습니다.

작업할 내용은 아래의 UI를 한국어/영어로 나누는 것입니다.

csv 파일을 열어보면 저처럼 UTF-8이 아니여서 한국어가 깨져서 나오는 경우가 있습니다.

vs code에서 UTF-8로 변환하는 작업을 통해서 해결해보려고 했는데, 번거롭기 때문에 그냥 수기로 다시 작성해주겠습니다.

최종적으로 아래와 같이 작업을 수행했습니다.
ID는 직접 입력하지 않습니다.
Key에 매칭되는 영어와 한국어를 입력해줬습니다.

작업을 마쳤으므로 저장해줍니다.
에디터로 돌아갑니다.
9. Localization Table 인스펙터 창에서 csv 파일을 임포트합니다.

임포트하고 나면 아래와 같이 Open in Table Editor 버튼을 클릭합니다.

이렇게하면 에디터에서 csv 파일을 불러와 작업한 내용을 확인할 수 있습니다.

이제 현지화에 필요한 사전 작업이 모두 끝났고, 적용만 하면 됩니다.
적용하기 위해서는 두 가지 작업이 필요합니다.
1.UI에서 TextMeshPro를 Localize 합니다.
2. 스크립트에서 LocalizationSettings.SelectedLocale 에 현지 코드를 설정합니다.
먼저 TextMeshPro에서 Localize를 설정하는 방법입니다.
11. TextMeshPro에서 설정 - Localize 클릭

그러면 하단에 Localize String Event 항목이 생성됩니다.
여기서 csv 파일에서 작성한 Key 값을 찾아서 넣어줍니다.

그러면 하단에 현지 언어로 어떻게 표기되는지 함께 보여집니다.
이 작업을 현지화를 할 모든 파트에서 수행합니다.
만약 코드로 텍스트를 입력해주고 있다면 아래와 같은 방법을 사용합니다.
12. 스크립트에서 Localize 하는 방법
LocalizeSettings.StringDatabase.GetLocalizedString(테이블 이름, Key)

저 같은 경우에는 GetLocalizedString("LocalizationDataTable", "Settings"); 와 같은 형식입니다.
결국 Localization Table 이름을 모든 코드에 반복해서 사용해야 하므로 const string으로 설정하는 것이 편합니다.
이제 언어를 설정하는 로직을 작성합니다.
13. 로컬 디바이스의 운영체제에서 사용자가 쓰고 있는 언어를 가져옵니다.
여기서 language는 enum SystemLanguage 타입입니다.

언어를 변환하기 위해서는 현지 코드가 필요한데, 이걸 SystemLanguage와 매핑시켜주기 위해 Dictionary를 사용합니다.
ChangeLanguage 함수는 SystemLanguage를 매개변수로 넣어주면, 매핑된 현지 코드를 LocalizationSettings.SelectedLocale에 대입합니다.

이렇게 하면 현지 언어로 변환되는 작업이 끝납니다.




'Unity > 프레임워크' 카테고리의 다른 글
| [Unity] 최적화 : 플랫폼별 오디오 및 이미지(Atlas) 파일 설정 (0) | 2026.01.01 |
|---|---|
| [Unity] Localization Remote load (0) | 2026.01.01 |
| [Unity] Google AdMob 연동 (0) | 2025.12.29 |
| [Unity] csv 파일 관리 : DataTable Manager (0) | 2025.12.04 |
| [Unity] 관리자 클래스 : Singleton Pattern (0) | 2025.12.04 |
