본문 바로가기
앱 개발/Unity, C#

[Unity][UI Toolkit] Localization 적용 방법

by 마라턍 2024. 12. 31.

Unity 6부터는 binding을 본격적으로 지원하기 시작하면서 Localization을 쉽게 할 수 있다고 한다.

하지만 나는 지금 2022 버전을 쓰고 있어, Localization하는 방법을 따로 찾아야 했다.

UI Toolkit이 처음 도입되었을 때는 uxml을 검사하면서 text=""나 tooltip="" 등 localization이 필요한 부분을 변환하는 파이썬 코드를 짰었다. 스크립트를 돌리면 자동으로 지원하는 locale 별로 uxml 파일이 생성되도록 했는데, 유지 및 보수 측면에서 아주 BAAAAAD...

 

그래서 이번에 2022 버전에서 UI Toolkit을 다시 이용하게 되었을 때는 다른 방법을 찾아봤는데, 감사하게도 아래의 코드를 발견할 수 있었다.

https://gist.github.com/andrew-raphael-lukasik/72a4d3d14dd547a1d61ae9dc4c4513da

 

Text localization script for UIDocument (UI Toolkit @ Unity)

Text localization script for UIDocument (UI Toolkit @ Unity) - .UIDocumentLocalization.cs.md

gist.github.com

 

여기서 툴팁이나 동적으로 생성하는 툴팁 등의 컴포넌트를 위해 string table을 캐싱하는 코드를 추가했다.

또 위 코드는 dropdown의 내부 option까지 localization이 되고 있진 않아, 해당 코드도 추가했다. 이것과 관련한 코드는 같은 페이지의 코맨트로 달아뒀다.

 

간단하고 사용하기도 쉬워서 처음 테스트할 때 잘 썼다.

다만, 복잡한 앱을 구현하기에는 한계점이 보여서 localization 가능한 custom label을 작성하기는 할 것 같다.

간단한 프로젝트나 앱은 위 스크립트를 이용하면 충분해보임

 

다만 컴포넌트 추가 후 인스펙터에서 보이는 경고사항에서 확인할 수 있듯이, UI와 연결되는 Presenter 등의 컴포넌트를 Initialize하는 타이밍 설정하는 것에 주의가 필요하긴 하다.

 

끗~

반응형