[Unity] 로컬라이징 및 언어 테이블 작성법

hipop1109·2025년 5월 20일

로컬라이징이란?

게임에 여러 언어를 지원해주는 기능이다.
보통 게임에 접속해 언어 선택창에 가 버튼을 하나 누르면 모든 언어가 지정한 언어로 바뀌게 된다.
이를 관리하는 것을 로컬라이징이라고 한다.

언어 테이블이란?

로컬라이징을 관리하는 유니티의 고유 기능이다.
유니티에서는 텍스트의 언어 관리를 고유의 테이블을 활용해 관리하는 기능을 지원하며, 이는 간단한 설정들을 통해 활용할 수 있다.


우선 레지스트리에 로컬라이징 기능을 다운받고 시작한다.

그 후 Localization Scene Controls에 들어가 사용할 언어들을 선택해야 한다.

필자는 4가지 언어를 사용해 세팅해놓았고, 이를 적용하려 한다.
위 설정들을 적용해 Create를 눌러주면 지정된 언어 테이블이 만들어진다.

이런 식으로 각 언어를 입력할 수 있는 칸이 생성되며, 각 칸마다 언어를 적용할 수 있게 된다.
그럼 이 언어들을 어떻게 실제 게임에 적용하는가?

2가지 경우를 생각해볼 수 있다.
정적인 문자들, 씬 속에 고정으로 존재하는 문자들과
변화하는 문자들, 예를 들어 아이템을 구매할 때 다른 것을 고르면 글자가 바뀌는 류의 글자들을 만드는 경우이다.

첫 번째 방법은 TMP 내 Localizing string event 기능을 활용하면 적용이 가능하다.

이런식으로 바뀌어야 하는 TMP에 로컬라이징 스트링 이벤트를 적용시켜준다.
이는 지금 필요한 언어 키를 인덱스로 받아 변환해주는 역할을 한다.
그리고 간단한 코드를 적용해 보있다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Localization.Settings;

public class LanguageChange : MonoBehaviour
{
    bool isChanging = false;

    public void ChangeLocale(int index)
    {
        if (isChanging)
            return;

        StartCoroutine(LocaleChange(index));
    }

    IEnumerator LocaleChange(int index)
    {
        isChanging = true;

        yield return LocalizationSettings.InitializationOperation;
        LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[index];

        isChanging = false;
    }
}

이 코드를 활용해 언어에 테이블의 인덱스를 적용해주게 된다면


이런 식으로 언어를 버튼으로 쉽게 교체할 수 있다.

이제 2번째 문제의 해결책인데, 이를 시험해보기 위해 간단한 코드를 짜보있다.

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;

public class LanTest : MonoBehaviour
{
    [SerializeField] TextMeshProUGUI textUI;
 
    public void ShowResult(string resultType)
    {
        var localized = new LocalizedString("Main_UI", $"BPVSlot{resultType}Title");
        localized.StringChanged += (val) => textUI.text = val;
        localized.RefreshString();
    }
}

BPVSlot은 필자의 언어 테이블의 중 한 개의 이름이다, 이를 적용하고, resultType에 따라 바뀌게 적용한다면 마찬가지로 버튼을 눌렀을 때 잘 바뀌는 것을 볼 수 있다.

언어테이블을 하나하나 입력하는 것은 어쩔 수 없는 일이지만, 이를 엑셀 파일로 추출해 작성하는 것도 가능하다고 한다.

profile
쑥쑥 개발자

0개의 댓글