[Unity] Localization

hyeona·2025년 1월 21일

Unity

목록 보기
1/1

📌 Setting

  1. Window > Package Manager > Localization Package 다운
  2. Project Setting > Localization 들어간 후, Setting 생성
    (Localization Folder 따로 만들고 저장)
  3. Project Setting > Locale Generator > 필요한 Language 선택
    (Language 묶음 하나를 'LOCALE'이라 부름)
  4. Specific Locale Selector / Project Locale Identifier 에 LOCALE 할당
    (할당한 언어 : Defualt Language)




📌 다국어 자료 입력

  1. Window > Asset Management > Localization Table
  2. New table Collection > String Table Collection > Name 작성 및 생성
    (Table : 다국어 자료 입력하는 DB / Tables 파일 만들고 저장해두기!)
  3. Key 만들고 각 언어별 Text 작성




📌 다국어 설정 적용

  1. 원하는 Text에 'Localize String Event' 컴포넌트 추가
  2. String Reference에 생성한 Table 할당


📌 사용 방법

⭐️ 게임설정 UI에서 적용

  • LocalizationSettings.AvailableLocales.Locales[index]
    -> Index 값을 받아 사용자가 지정한 언어로 변경
    -> Index 값의 순서는 Tables 창에서 표시되는 언어의 순서대로 지정하면 되며, 시작은 0번부터
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;

public void UserLocalization(int index) {
	LocalizationSettings.SelectedLocale = 
		LocalizationSettings.AvailableLocales.Locales[index];
}

⭐️ 동적으로 적용

예시 : 상점내 아이템 정보

  1. Localize String Event Component만 추가해 주고 String Reference는 설정하지 않음

아래와 같이 아이템의 데이터가 다음과 같다면 Item 테이블을 만든 다음 Key 값으로 ItemName을 넣어줌

public class Item : ScriptableObject {
    public string itemID;
    public string itemName;
    public Sprite itemImage;
}


이후, 'LocalizeItem' 스크립트 생성후 다음과 같이 코드 작성
-> string tableName : 바로 위에서 만들어 두었던 Item 내용의 번역이 들어가 있는 Table명
-> Item itemValue : Table에서 key 값으로 사용될 itemName을 받음
-> 입력받은 Table 명과 Table의 key 값을 찾아 Localize String Event의 String Reference에 적용시켜 줌

using UnityEngine;
using UnityEngine.Localization.Components;

public class LocalizeItem : MonoBehaviour {
    public void LocalizeTextString(string tableName, Item itemValue) {
        GetComponent<LocalizeStringEvent>().StringReference
        	.SetReference(tableName, itemValue.itemName);
    }
}

Item과 관련된 스크립트에서 위에서 작성한 스크립트의 함수를 가져와 적용시켜줌

public class ItemCard : MonoBehaviour {
	[Header("Localize Text")] 
	public LocalizeItem localizeTitle;

	Item item;

	void Start() {
        localizeTitle.LocalizeTextString("Item", item.itemName);
    }
}

참고 링크 :

0개의 댓글