본문 바로가기
Works/Unity 3D

Localization 에서 CSV 사용 Tip

by Vader87 2023. 8. 9.
반응형

대량의 번역 문서를 import 해야 하는 일이 자주 발생하여 자동화 Tool 을 만들었다.

이 과정에서 Unity 문서에서는 확인하기 힘든 내용들을 정리해 둔다

CSV 에 Custom Column 을 관리하는 코드 추가 방법

공식 문서에 CsvColumns class 를 사용해 Custom Column 을 추가하라고 설명 되어 있지만 이 내용이 전부고, 어떻게 어떤식으로 사용해야 하는지는 알려주지 않는다.

Custom columns
To create custom CSV columns, you can inherit from the CsvColumns class. You can use custom columns to import and export custom data, such as custom metadata.

See the CSV package samples for further details.

https://docs.unity3d.com/Packages/com.unity.localization@0.9/manual/CSV.html

 

Importing and exporting CSV files | Localization | 0.9.0-preview

Importing and exporting CSV files You can use the CSV (Comma Separated Values) format to import and export String Table Collections. This makes it easier to work with translators who use CSV for translation; you can export String Table Collections from Uni

docs.unity3d.com

CsvColumns 을 바로 가져다 사용할 수 는 없고, Assembly Definition 으로 참조를 추가해 주어야 사용 가능하다.

CsvColumns 에 대한 설명은 공식 문서에 있긴 하지만, 제대로 된 설명은 없어 Unity 에서 구현해 둔 LocaleColumns 을 참조해서 유추하는 것이 좋다.

https://docs.unity3d.com/Packages/com.unity.localization@0.9/api/UnityEditor.Localization.Plugins.CSV.Columns.CsvColumns.html

 

Class CsvColumns | Localization | 0.9.0-preview

 

docs.unity3d.com

CsvColumns 의 Method 에 정의해 주어야 하는 내용을 간단히 정리해 둔다.

더보기

ReadBegin

사용할 Table 을 찾아두고 Csv 에서 일치하는 Field 의 Index 를 찾아두는 구현을 해주면 된다

ReadRow

실제 값을 읽어와서 찾아둔 Table 에 값을 쓰는 구현을 하면 된다

WriteBegin

Csv 에 필드 값을 미리 생성해 주는 구현을 하면 된다

WriteRow

사용할 Table 을 찾아두고 Csv 에서 일치하는 Field 의 Index 를 찾아두는 구현을 해주면 된다

CSV 의 Column mapping 에 사용할 LocaleColumnsLocaleIdentifier 값 가져오기

CSV 를 Import 하는 기능을 Custom 으로 구현하려고 하면 Csv class 의 ImportInto 기능을 활용하면 된다.

https://docs.unity3d.com/Packages/com.unity.localization@0.9/api/UnityEditor.Localization.Plugins.CSV.Csv.html?q=ImportInto

 

Class Csv | Localization | 0.9.0-preview

Class Csv Comma Separated Values (CSV) support. Used to transfer localized data and carry it from one step of the localization process to the other, while allowing interoperability between and among tools. Inheritance Csv Assembly : solution.dll Syntax Met

docs.unity3d.com

여기서 CSV Columns 에 Mapping 하는 값을 지정해 주어야 하는데 이 중 언어 관련된 값은 LocaleColumns  값을 설정해 주어야 한다. LocaleCoumns 에서 LocaleIdentifier 값은 지역 값을 의미 하는데 이 값은 Localization Setting 에 정의를 해둔 값이기 때문에 설정해 둔 값을 불러와 사용하는 것이 관리에 좋다.

LocaleIdentifier 값을 불러오는 방법은 여러 가지가 있다.

1. StringTable 의 LocaleIdentifier 를 가져와 활용하는 방법

  • LocalizationEditorSettings class 의 GetStringTableCollections Method 를 활용해 Collection 목록 획득
  • 각 Collection 이 참조하고 있는 StringTable 목록의 각 LocaleIdentifier 값을 조회해 사용

2. LocalizationEditorSettings class 의 GetLocales Method 값을 가져와 활용하는 방법

3. LocalizationEditorSettings class 의 ActiveLocalizationSettings 를 통해 GetAvailableLocales  활용

- Summary 설명은 editor 에서도 작동할 것 같지만 editor 에서는 설정된 값을 전달해 주지 않는다.

/// <summary>
/// The <see cref="LocalizationSettings"/> used for this project and available in the player and editor.
/// </summary>
public static LocalizationSettings ActiveLocalizationSettings
반응형

'Works > Unity 3D' 카테고리의 다른 글

Unity Sentis 설치 방법  (0) 2023.08.18
Unity Muse  (0) 2023.08.16
SerializeField  (0) 2022.11.17
Windows 11 에서 Unity Hub 설치 이슈 해결  (1) 2022.04.14
Unity 프로젝트에 Local Package 추가 방법  (0) 2021.12.23

댓글