지금까지 프로젝트를 진행하면서
하나의 프로젝트로 한국어 버전, 영문 버전 등 한프로젝트를 만들때 마다
기존 프로젝트를 복제해서 작업을 해주었는데
한국어 프로젝트에서 수정되면 영문버전에서도 수정해주어야하고
어디에는 수정되었는데 어디에는 수정안되있는 아주 곤란한 상황들이 많았다.
결국 다음 프로젝트를 만들때부터는 다국어 지원 기능을 넣기로 하였다.
Unity Localization으로 다국어 지원 기능 넣기
Localization 세팅하기
다국어 지원 기능을 넣기위해서
다음 기능을 PackageManager - Localization 을 넣어주어야한다.
PackageManager에서 Localization이 나오지 않는다면
2021.2 버전 이상의 패키지에서는 Localization이 표시 되나
이하의 버전에서는
com.unity.localization
Add package from git URL 입력해주고
패키지 매니저를 다운 받아준다.
설치를 다했으면 이제
Edit - Project Setting - Localization 창을 열어준다.
그리고 Create 버튼을 누르고 Localization Setting 을 만들어준다.
생성하고 나면 Locale Generator 버튼을 눌러서 현지화 할 언어들을 선택한다.
그리고
Specific Locale Selector 에 기본언어를 선택해서 넣어준다.
나는 한국어를 기본 언어로 선택해주었다.
Project Locla Identifier 에도 프로젝트의 기본값인 한국어를 넣어준다.
텍스트 변경하는 방법
Window -Asset Management - Localization Tables를 열어준다.
그리고 New Table Collection 버튼을 눌러주면 다음과 같이 활성화 된다.
이제 텍스트를 제어하기 위해서 Type을 설정해주어야한다.
String Table Collection을 선택해주고 Create를 해준다.
이제 테이블에 원하는 텍스트를 넣어주어야한다.
Add New Entry를 누르면
Locale Generator 버튼을 눌러서 현지화 할려 선택했던 언어들이 나온다.
그리고 키값을 적어주고 해당하는 키 값에 대한 언어들을 넣어준다.
적용하기
이제 UI를 구성해줄 건데
버튼으로 눌러서 텍스트를 변환 해주려고 한다.
그래서 한글, 영문, 일어 이렇게 3개의 버튼을 만들어주고
현지화 해주려는 텍스트를 하나 만들어준다.
그리고 만들어진 텍스트를 변경할 것이기 때문에 Localize String Event 라는 컴포넌트를 넣어준다.
컴포넌트를 넣는 방법은 2가지 방법이 있다.
Add Component
컴포넌트를 생성하면 Update String 안에다가 변경할 TextMeshPro 오브젝트를 넣어주고
Function을 TextMeshProUGUI - text를 넣어준다.
오른쪽 마우스 클릭 - Localize
아니면 Text Mesh Pro 컴포넌튼에서 오른쪽 마우스를 클릭하면 최하단에 Localize 을 눌러 생성 할 수 있다.
오른쪽 마우스를 이용해서 생성하면 TextMeshPro설정을 해주지 않아도 자동으로 적용되어있다.
Localize String Event 설정하기
String Reference를 더보기 하여 Table Collection 안에 아까 만들어준 String Table을 넣어준다.
Table Collection에서 아까만든 String_Table 을 선택해주고 String Reference 에서 만들어놨던 키값을 적용해주면
아래에 위에 넣었던 값들이 나온다.
진짜 너무 당황스러운게 다른 사람들과 다르게
내 버전에서는 String Reference 를 선택창을 열었을 때 다른 사람들은
이렇게 바로 내가 만들어둔 KEY 값이 나온다고 되어있는데
나는 이렇게 안나와서 엄청 고생했는데
내 버전(2021.3.9)에서는 이렇게 안나와서.. 어떻게 된건가 했는데
이제 검색창에서 KEY를 검색해야지 나오는것임...
진짜 이것 때문에.. 얼마나 시간을 버렸는지...
일반 텍스트에서도 사용가능 한 것으로 확인된다.
버튼을 눌러서 언어 변경하기
이제 위에서 만들었던 버튼을 누르면 언어가 변경되도록
버튼안에 넣어줄 스크립트를 생성해준다.
그리고 다음 코드를 작성해준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Localization.Settings;
public class LocalLanguage : MonoBehaviour
{
private bool active = false;
public void ChangeLocale(int localID)
{
if (active == true) return;
StartCoroutine(SetLocal(localID));
}
IEnumerator SetLocal(int _localID)
{
active = true;
yield return LocalizationSettings.InitializationOperation;
LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[_localID];
active = false;
}
}
코드를 작성했으면
Hierarchy 창에다가 빈 오브젝트를 생성해서
만든 코드를 넣어준다.
그리고 버튼 오브젝트로 가서 다음 컴포넌트를 적용해준다.
int 의 값은 Localization에서 Available Locales의 배열을 순서대로 0,1,2 로 적용해주면 된다.
내 프로젝트 같은 경우, 영문 버전의 경우, localID 가 0 ,일본어가 1, 한국어가 3 이렇게 아이디를 가진다고 생각하면된다.
프로젝트를 실행하면 Game 씬에서 다음과 같은 드롭 박스를 확인 할 수 있는데
이것을 에디터 상에서 만 나오는 것으로 빌드 했을 경우에는 나오지 않는다.
선택하면 원하는 언어로 변경 되는 것을 확인 할 수 있다.
'PROGRAMING📚 > Unity📑' 카테고리의 다른 글
[유니티 Unity] 구글 애드몹 전면(InterstitialAd) 광고 넣는 방법 (0) | 2023.02.03 |
---|---|
[유니티Unity]유니티에서 인앱 업데이트 지원 하기 (1) | 2023.01.27 |
[유니티 Unity]Error : No cloud project ID was found by the Analytics SDK. 해결하기 (2021.3.9f1) (2) | 2023.01.12 |
[유니티 Unity]Error : Screen position out of view frustum 해결 하기 (0) | 2023.01.10 |
[유니티 Unity]국가별 앱 이름 바꾸는 방법 (2) | 2023.01.06 |
댓글