https://youtu.be/VNhzMEsy7xc?si=OIAkCC3lYkk9HLii&t=1351
- Command Line Locale Selector
- 다국어 언어를 커맨드라인에서 바꿔주는 시스템을 사용시
- System Locale Selector
- 시스템에서 설정된 기본 언어를 가져올 때
- Specific Locale Selector
- 프로젝트에서 임의로 선택한 언어를 가져올 때
- Playground Table
- 생성된 테이블의 Collection
- Playgound Table_xx (en, ja, ko)
- Collection에 포함되는 내용이 관리되는 파일
a. Preload All Tables, Preload Table 을 선택하여 기본적으로 Table 을 로드할지를 선택
b. 각 테이블 또는 항목에 대한 Comment를 추가 가능
c. 플랫폼별 override 기능 제공
(String Reference를 선택할 때 UI가 달라지는 것으로 보임)
- Asset Search Picker
- String Search Picker
- 설정 해제 전
- 설정 해제 후
- Editor And Runtime 설정시 플레이모드와 편집모드 모두에서 이벤트 동작을 확인하고 값을 업데이트 할 수 있음.
- Window > Asset Management > Localization Scene Controls 에서 Active Locale을 변경하여 Editor에서 동작 확인 가
- Entry Name : 키 값
- Key값 설정 후 2D Texture가 아닌 Sprite로 에셋 데이터 추가
- 컴포넌트의 (...) 버튼 클릭후 Localize를 선택하는 방법으로 이벤트 추가 가능 (Localize Sprite Event 컴포넌트가 추가 됨)
- 해당 방식으로 이벤트가 추가된 경우 Update Asset 이벤트가 기본으로 설정 되어 있음
- 추가해준 Asset Table의 Key값으로 설정
- 변경이 발생한 속성은 초록색으로 표시 됨
- 변경이 발생하는 경우 Game Object Localizer 컴포넌트가 게임오브젝트에 자동으로 추가되며, Tacked Objects에서 언어별 설정된 상세 내용 확인 가능
- 마우스 우클릭 > Create > Localization > Variable Group 선택
- 추가할 데이터 형식 선택 후 아래의 값 입력 -- Variable Name : 참조시 사용할 이름 -- String : 실제 데이터
- 출력해줄 Text 컴포넌트가 있는 게임오브젝트에 Localize String Event 추가 > 테이블 선택 > Add Table Entry 선택 > Entry Name 입력
- +버튼을 누른 뒤 Nested Variables Group 선택 -- Variable Name : Variables Group 참조시 사용할 이름 입력 -- Nested Variable Group : 생성해주었던 Variables Group Asset 선택
- 데이터 입력은 중괄호 안에 Variable Group Name.Variable Name 으로 입력 -- 예시: {global.user-name}
- Edit : 데이터를 입력하는 곳
- Debug : 디버깅 가능? (단순히 Variable 데이터가 주황색으로 표시되어지는 것 같음, 틀리게 작성해도 별다른 확인이 되진 암ㅎ음)
- Preview : 실제 플레이 모드에서 보여질 형태로 출력 (Variable 데이터가 잘못 입력된 경우 Preview 출력을 통 확인 가능)
Variable이 제대로 입력되지 않은 경우 출력은 다음과 같음.
using System.Collections;
using UnityEngine;
using UnityEngine.Localization.Settings;
public class LocaleManager : MonoBehaviour
{
private bool isChanging;
public void ChangeLocale(int index)
{
if (isChanging)
{
return;
}
StartCoroutine(DoChangeLocale(index));
}
private IEnumerator DoChangeLocale(int index)
{
isChanging = true;
// Localization 시스템의 초기화, Locales 로드, assets 프리로딩 등이 완료될 때까지 기다리기
// InitializationOperation이 완료되기 전에 LocalizationSettings.SelectedLocale 이 null값을 반환할 수 있음.
yield return LocalizationSettings.InitializationOperation;
// index를 통해 SelectedLocale 설정
LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[index];
isChanging = false;
}
}
/// <summary>
/// Localization 데이터에 직접 접근하여 string을 가져오기
/// </summary>
/// <returns></returns>
public string GetString()
{
string tableName = "Playground Table";
string key = "UI_TITLE";
var selectedLocale = LocalizationSettings.SelectedLocale;
return LocalizationSettings.StringDatabase.GetLocalizedString(tableName, key, selectedLocale);
}
private void Start()
{
// SelectedLocale이 변경되었을 때 호출되는 이벤트 등록
LocalizationSettings.SelectedLocaleChanged += LocalizationSettingsOnSelectedLocaleChanged;
}
private void LocalizationSettingsOnSelectedLocaleChanged(Locale locale)
{
// TODO: Locale이 변경되었을 때 처리가 필요한 내용 작성
}
- CSV와 Google Sheet 내용을 가져오거나 해당 형식으로 내보내기할 수 있는 기능을 제공하고 있음.