Skip to content

gimjeonghyeon/unity_playground_localization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Localization

학습자료

https://youtu.be/VNhzMEsy7xc?si=OIAkCC3lYkk9HLii&t=1351

Localization Settings

Locale Selectors

  • Command Line Locale Selector
    • 다국어 언어를 커맨드라인에서 바꿔주는 시스템을 사용시
  • System Locale Selector
    • 시스템에서 설정된 기본 언어를 가져올 때
  • Specific Locale Selector
    • 프로젝트에서 임의로 선택한 언어를 가져올 때

사용 언어 설정

1. Locale Generator 선택

Untitled

1. 원하는 언어를 선택 후 Generate Locales 선택

Untitled 1

2. 생성된 Locale 파일들 확인

Untitled 2

3. Locale Selectors에서 Specific Locale Seletor 추가 후 생성된 Locale 연결

Untitled 3

4. Project Locale Identifier 에서 프로젝트에서 사용할 기본 언어 선택

Untitled 4

테이블 추가

1. Window > Asset Management > Localization Tables 실행

2. New Table Collection 탭에서 테이블 Type 및 Name 설정 후 Create

ddd

3. 생성된 테이블 확인

Untitled 7 Untitled 6

  • Playground Table
    • 생성된 테이블의 Collection
  • Playgound Table_xx (en, ja, ko)
    • Collection에 포함되는 내용이 관리되는 파일

스트링 데이터 추가

1. Edit Table Collection에서 데이터를 추가할 테이블 선택

2. Add New Entry를 선택하여 데이터 추가

3. 추가된 데이터의 key와 언어에 맞는 값 입력

Untitled 8

4. Metadata

a. Preload All Tables, Preload Table 을 선택하여 기본적으로 Table 을 로드할지를 선택
b. 각 테이블 또는 항목에 대한 Comment를 추가 가능
c. 플랫폼별 override 기능 제공

Untitled 9

이벤트를 통한 String 적용

1. Text 컴포넌트가 있는 게임오브젝트에 Localize String Event 컴포넌트 추가

image

2. Edit > Preferences > Localization 의 아래 설정 해제

(String Reference를 선택할 때 UI가 달라지는 것으로 보임)

  • Asset Search Picker
  • String Search Picker

image

  • 설정 해제 전

image

  • 설정 해제 후

image

3. Update String 설정

image

4. 이벤트 설정을 Editor And Runtime 으로 변경

  • Editor And Runtime 설정시 플레이모드와 편집모드 모두에서 이벤트 동작을 확인하고 값을 업데이트 할 수 있음.

image

  • Window > Asset Management > Localization Scene Controls 에서 Active Locale을 변경하여 Editor에서 동작 확인 가

image

5. 플레이 모드에서 언어를 변경하여 Update String이 정상적으로 동작하는지 확인 가능

image

Localize String Event 컴포넌트에서 테이블에 스트링 데이터 추가

1. 테이블을 선택후 Add Table Entry 를 선택

  • Entry Name : 키 값

image

이벤트를 통한 Asset 적용

1. Asset Table 생성

image

2. 데이터 추가

  • Key값 설정 후 2D Texture가 아닌 Sprite로 에셋 데이터 추가

image

3. 이벤트 추가

  • 컴포넌트의 (...) 버튼 클릭후 Localize를 선택하는 방법으로 이벤트 추가 가능 (Localize Sprite Event 컴포넌트가 추가 됨)

image

  • 해당 방식으로 이벤트가 추가된 경우 Update Asset 이벤트가 기본으로 설정 되어 있음

image

4. Localized Asset Reference 설정

  • 추가해준 Asset Table의 Key값으로 설정

image

5. 플레이 모드로 진입하여 언어 선택에 따라 Sprite가 변경되는 것 확인

image

선택된 언어에 따라 레이아웃 변경

1. Localization Scene Controls 의 Track Changes 화성화

image

2. 레이아웃 변경이 필요한 게임오브젝트 위치 변경

image

3. 변경이 발생한 내용 확인

  • 변경이 발생한 속성은 초록색으로 표시 됨

image

  • 변경이 발생하는 경우 Game Object Localizer 컴포넌트가 게임오브젝트에 자동으로 추가되며, Tacked Objects에서 언어별 설정된 상세 내용 확인 가능

image

4. 작업이 완료된 이후 Track Changes 비활성화

image

Smart 기능을 활용하여 별도의 데이터 처리

1. Variables Group Asset 생성

  • 마우스 우클릭 > Create > Localization > Variable Group 선택

image

2. Variables에 필요한 데이터 추가

  • 추가할 데이터 형식 선택 후 아래의 값 입력 -- Variable Name : 참조시 사용할 이름 -- String : 실제 데이터

image

3. String Table에 Smart 기능을 사용할 Entry 추가

  • 출력해줄 Text 컴포넌트가 있는 게임오브젝트에 Localize String Event 추가 > 테이블 선택 > Add Table Entry 선택 > Entry Name 입력

image

4. Local Variables 를 추가

  • +버튼을 누른 뒤 Nested Variables Group 선택 -- Variable Name : Variables Group 참조시 사용할 이름 입력 -- Nested Variable Group : 생성해주었던 Variables Group Asset 선택

image

4. Smart 기능 활성화 후 데이터 입력

image

  • 데이터 입력은 중괄호 안에 Variable Group Name.Variable Name 으로 입력 -- 예시: {global.user-name}
  • Edit : 데이터를 입력하는 곳
  • Debug : 디버깅 가능? (단순히 Variable 데이터가 주황색으로 표시되어지는 것 같음, 틀리게 작성해도 별다른 확인이 되진 암ㅎ음)
  • Preview : 실제 플레이 모드에서 보여질 형태로 출력 (Variable 데이터가 잘못 입력된 경우 Preview 출력을 통 확인 가능)

Variable이 제대로 입력되지 않은 경우 출력은 다음과 같음.

image

5. 언어가 변경되어도 동일하게 출력되는 Variable 데이터 확인

image

플레이 상태에서 언어 변경

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;
    }
}

데이터를 직접 접근하여 string 가져오기

    /// <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);
    }

Locale이 변경될 때 처리할 이벤트 등록

    private void Start()
    {
        // SelectedLocale이 변경되었을 때 호출되는 이벤트 등록
        LocalizationSettings.SelectedLocaleChanged += LocalizationSettingsOnSelectedLocaleChanged;
    }

    private void LocalizationSettingsOnSelectedLocaleChanged(Locale locale)
    {
        // TODO: Locale이 변경되었을 때 처리가 필요한 내용 작성
    }

CSV, Google Sheet와 호환성

  • CSV와 Google Sheet 내용을 가져오거나 해당 형식으로 내보내기할 수 있는 기능을 제공하고 있음.

image

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages