본문 바로가기
유니티 이야기

[Unity] 현지화를 위한 게임 구동 시 언어를 자동으로 설정하는 방법

by novices 2022. 8. 24.

이번 포스팅에서는 현지화를 위해 유니티 엔진에서 사용자가 실행 중인 운영체제의 설정된 언어를 가져와 초기 언어를 설정하는 방법을 작성해보겠습니다.

 

1. 설정된 시스템 언어 가져오기

설정 된 시스템 언어를 가져오기 위해 해야 할 것은 없고 프로그램이 구동될 때 static 클래스인 Application 클래스의 systemLanguage 변수에 할당된다고 유니티 공식 API문서에 표기되어 있습니다. systemLanguage는 enum의 형태를 가지고 있고 내용은 아래와 같습니다.

 

public enum SystemLanguage
    {
        Afrikaans = 0, Arabic = 1, Basque = 2, Belarusian = 3, Bulgarian = 4, Catalan = 5,
        Chinese = 6, Czech = 7, Danish = 8, Dutch = 9, English = 10, Estonian = 11, Faroese = 12,
        Finnish = 13, French = 14, German = 15, Greek = 16, Hebrew = 17, Hugarian = 18,
        Hungarian = 18, Icelandic = 19, Indonesian = 20, Italian = 21, Japanese = 22, Korean = 23,
        Latvian = 24, Lithuanian = 25, Norwegian = 26, Polish = 27, Portuguese = 28, Romanian = 29,
        Russian = 30, SerboCroatian = 31, Slovak = 32, Slovenian = 33, Spanish = 34, Swedish = 35,
        Thai = 36, Turkish = 37, Ukrainian = 38, Vietnamese = 39, ChineseSimplified = 40,
        ChineseTraditional = 41, Unknown = 42
    }

 

 

2. 스크립트 구성

LanguageManager.cs (시스템 언어 설정을 불러와 초기 언어 값을 설정)

 

LanguageManager.cs

언어 설정에 사용할 enum을 선언하고 프로그램이 구동될 때 Application.systemLanguage를 읽어와 확인하고 매치되는 값을  gameLanguage 값에 할당합니다. 시스템의 언어가 서비스되는 3개의 언어 외로 설정되어있다면 마지막 else구문을 통해 영어로 설정합니다. 테스트를 위해 빈 오브젝트에 해당 스크립트를 추가합니다.

 

using UnityEngine;
public enum GameLanguage { ENGLISH, KOREAN, JAPANESE } // 게임 언어를 설정의 기준이될 enum 선언
public class LanguageManager : MonoBehaviour
{
    GameLanguage gameLanguage; // 이 변수언어를 확인해서 게임컨텐츠를 해당 언어로 변역합니다.

    // 출시 될 3개의 언어만 확인합니다.
    void Awake()
    {
        if(Application.systemLanguage == SystemLanguage.English)
        {
            gameLanguage = GameLanguage.ENGLISH;
        }
        else if(Application.systemLanguage == SystemLanguage.Korean)
        {
            gameLanguage = GameLanguage.KOREAN;
        }
        else if(Application.systemLanguage == SystemLanguage.Japanese)
        {
            gameLanguage = GameLanguage.JAPANESE;
        }
        else
        {
            gameLanguage = GameLanguage.ENGLISH;
        }

        Debug.Log(gameLanguage);
    }
}

 

 

3. 결과

에디터에서 테스트하니 PC의 언어 값을 정상적으로 가져옵니다.

이렇게 가져온 시스템의 언어정보로 게임 내 콘텐츠를 현지화합니다.

 

이 방법 외에도 C#에서 제공하는 Cultureinfo를 통해 시스템 언어를 가져올 수 있습니다.

콘솔-출력-결과
콘솔 출력 결과

 

 

댓글